Skip to content

feat(evals): compress plugin-eval/SKILL.md (v2) with a same-day confirm run #5956

Open

Description

@kyle-sexton

Why

plugins/evals/skills/plugin-eval/SKILL.md is about 6,000 words and sits at 499 lines, one under the skill line cap. Inside an eval run only the hub SKILL.md is readable (reference/ reads are denied), so the hub carries everything, and every request that loads the skill pays for its size. PR #5895 measured a compression (R4 Run B, about 6,080 to 4,080 words) that cut with-arm agent cost per request by about 11% and passed the cost gate. It was reverted because two dropped clauses regressed two cases:

  • noise-before-gain fell from 0.83 to 0.50 after the near ceiling line lost "so the suite has almost no room to show a gain".
  • interval-setting-scope fell from 1.00 to 0.67 after the interval-method gotcha lost "and nothing needs checking".

What to do

  1. Take the R4 Run B patch and restore those two clauses word for word. The patch lives only on the machine that ran it (r4/B/change.patch in the R4 runner scratchpad), so re-derive it if that copy is gone.
  2. Register the gates before the run, as R3/R4 did: quality, cost and mechanism.
  3. Run one confirm of the patched skill against a same-day no-change control, both through run-validity.py. Report numbers only from a VALID run.
  4. Keep or revert on the registered gates.

Lesson for the editor brief

"Keep every directive" does not protect an explanatory clause that a grader depends on, and no mechanical token check catches its loss. Tell the editor to keep the reason clauses, or check each removed clause against the case graders that cite it.

Related

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 2, 2026
  2. kyle-sexton commented on Oct 4, 2026

    @kyle-sexton
    ContributorAuthor

    This was generated by AI during triage.

    Triage

    Outcome: human-gated (capability blocker, not an open decision). Priority medium. Work class: scoped (C3, feature).

    Why a human: the work is fully specified, but no autonomous lane can finish it:

    1. Its acceptance rests on a paid claude plugin eval confirm run plus a same-day control, each checked by run-validity.py. Lanes run in worktree-isolated sessions, where the Bash guard refuses any command containing eval.
    2. Cases that grant Bash need an OS sandbox backend (Linux or WSL2 with bubblewrap and socat, or macOS). Native Windows has none.
    3. The starting patch (R4 Run B) lives only in the R4 runner's scratchpad on the host that ran it.

    Whoever has a WSL2 or macOS host outside worktree isolation, with the cost ceiling set, can run it as written.

    Verified on current main: the plugin-eval hub is still 499 lines and about 6,090 words, unchanged since PR #5895.
    Basis: verified, git show origin/main:plugins/evals/skills/plugin-eval/SKILL.md | wc -lw = 499 lines, 6089 words; worktree eval refusal and sandbox backend rule in that hub's "Worktree isolation" and "Sandbox backend" sections.

    Agent Brief

    Type: Feature
    Summary: Re-apply the plugin-eval hub compression measured in PR #5895 with the two grader-relevant clauses restored, then keep or revert it on gates registered before the run.

    Current behavior:
    The /evals:plugin-eval hub sits one line under the skill line cap at about 6,000 words. Inside an eval run only the hub is readable, so every request that loads the skill pays for its full size. The earlier compression (about 6,080 to 4,080 words, about 11% lower with-arm cost) was reverted because two dropped explanatory clauses regressed two cases: noise-before-gain (0.83 to 0.50) and interval-setting-scope (1.00 to 0.67).

    Desired behavior:
    The hub carries the compressed text with both clauses restored word for word: "so the suite has almost no room to show a gain" on the near-ceiling line, and "and nothing needs checking" on the interval-method gotcha. Re-derive the compression if the R4 patch is gone.

    Acceptance criteria:

    • Quality, cost and mechanism gates are written down before any run, in the same shape the R3/R4 records used.
    • One confirm run of the patched skill and one same-day no-change control both pass run-validity.py as VALID; only numbers from VALID runs are reported.
    • The change is kept or reverted strictly on the registered gates, and the PR records the numbers and the verdict.
    • If kept, the editor brief used for compressions gains the lesson: keep reason clauses, or check each removed clause against the case graders that cite it.

    Out of scope:

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions