Skip to content

harness-config: concise rewrite of audit, audit-pass, audit-instructions (rollout slice A) #11564

Closed

Description

@kyle-sexton

Parent

Refs #6555 (split per #10221)

Depends on

Outcome

audit, audit-pass, audit-instructions meet the skill criteria, with every shipped description and body change backed by a valid measured pass against the frozen cases from #11560.

Demo: the PR body's per-skill decision table, with the before/after numbers behind each row.

Decisions

  • Q93/Q94: the harness-config rollout (Concise skills rollout: harness-config (10 skills, 9 model-invoked) #6555) is split into sub-issues with blocked-by edges before any run: outcome eval cases first, then rewrite slices of a few skills each.
  • Eval passes run on the Claude subscription; that usage is a capacity limit, not owner cost, so no spend approval gates them.

Key interfaces

Steps 4-8 of the per-plugin runbook; the skill criteria and its measurement protocol decide what ships. The rewriter's brief forbids reading any probe file.

Done when

  • Before and after versions are measured together on each target model, with and without the plugin, same --runs, judge and threshold, --keep-temp; held-out triggering probes run via measure-invocation emit-plugin-eval with --ablation none.
  • /evals:plugin-eval judges each result VALID, and any case drop is restored or the before text ships.
  • /docs-hygiene:compress compare ran with two independent labelers; the union of losses is resolved.
  • The PR body carries a per-skill decision table (description and body decided separately) with its numbers; any skill left unmeasured is named with the reason.
  • /skill-quality:check on the plugin root is no worse than the before-state from harness-config: outcome eval cases and probes for audit, audit-pass, audit-instructions (rollout slice A) #11560, and the plugin's changelog fragment is added.

Out of scope

Activity

  1. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    on Oct 31, 2026
  2. added theissue type on Oct 31, 2026
  3. github-actions commented on Oct 31, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Medium
    Complexity: Medium
    Uncertainty: Knowable
    Flags: none
    Blocked by: #11560

    Understood: rewrite the audit, audit-pass and audit-instructions skills in harness-config more concisely (rollout slice A). Each shipped change must be backed by a valid measured eval pass against the frozen cases from #11560. The PR body should carry a per-skill decision table. The issue names #11560 as its dependency, and that issue is still open. Some done-when items (measured eval passes, /evals:plugin-eval judging) may need a host-run. Admission routes those. No duplicates found.

    Automated triage, applied by the lanes App.

  4. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    on Oct 31, 2026
  5. melodic-automation-lanes commented on Oct 31, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: it carries host-run. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  6. melodic-automation-lanes commented on Oct 31, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: admission moved the issue to status: confirmed; its comment says why.

  7. self-assigned this
    on Nov 1, 2026
  8. kyle-sexton commented on Nov 1, 2026

    @kyle-sexton
    MemberAuthor
    No description provided.
  9. kyle-sexton commented on Nov 1, 2026

    @kyle-sexton
    MemberAuthor

    Lane 1 progress: the audit rewrite merged in #12105. All 4 of its cases are VALID before and after, and it is non-inferior.

    audit-pass and audit-instructions keep main's text for now. Both save state, and their state-saving cases (ap-config-lane-run-state, ai-skills-scope-report-only) had no VALID number in either version. The cause is plugin-data writes through a shell variable, which the validity gate can't set aside. Lane rule R16 lets a state-mutating skill ship a rewrite only on full before/after evidence.

    Remaining: re-run both skills once #12078 makes those paths measurable. The rewrite and its meaning diff are done, kept on branch feat/11564-harness-config-concise-a at commit aa06d4c, which still holds both rewrites.

  10. kyle-sexton commented on Nov 1, 2026

    @kyle-sexton
    MemberAuthor

    Lane 1: re-measured on main after #12090. Both state-saving cases are still INVALID before the rewrite. 4 of the 5 counted denials reach plugin data through a shell variable assigned in the same command, which run-validity.py can't resolve. So audit-pass and audit-instructions keep main's text, and this issue is blocked on #12156.

    The finished rewrite is kept: commit 53d326f on branch feat/11564-concise-audit-pass-instructions, local and unpushed, composed with #12090 and passing the meaning diff. The next attempt should also write audit-pass/SKILL.md:122-125 as one literal call.

  11. kyle-sexton commented on Nov 2, 2026

    @kyle-sexton
    MemberAuthor

    Lane 1: closing with both remaining skills kept at main's text, as the Done-when allows ("any skill left unmeasured is named with the reason"; "the before text ships").

    Re-measured 2026-11-02, before = main at 444ef9e and after = branch feat/11564-concise-audit-pass-instructions at dd88c72. The after version has main merged in, and its prescribed script calls are written as literal commands. Setup: Claude Code 2.1.316, claude-opus-5-5, judge opus, --runs 3, --keep-temp, with and without the plugin. The meaning diff was PASS/PASS for both skills. No drift: the without-arm change was +0.00.

    Skill State-saving case Before (main / #12225 script) After (main / #12225 script) Verdict
    audit-pass ap-config-lane-run-state INVALID 5 / 5 denials INVALID 8 / 8 keeps main's text
    audit-instructions ai-skills-scope-report-only INVALID 2 / 2 INVALID 2 / 1 keeps main's text

    Only 2 cases are VALID in both versions, so the pooled compare is n too small to call.

    The run-validity fix in #12225 (#12156) changes no verdict here, so this decision doesn't wait for it to merge. The denials that remain are compound commands the model composes around the prescribed run-state.sh calls. When the plugin call was retried alone, it was allowed. Whether such a denial should count is now #12256. The rewrite stays parked on the branch above; it can be re-measured if #12256 changes the rule.

    audit shipped in #12105.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.priority: mediumReal value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

Type

Fields

No fields configured for Task.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions