Skip to content

test(evals): add eval cases for pointer-swept skills that have none - part 8 of 9 #13310

Description

@melodic-automation-lanes

Part 8 of 9 of #13300, split at intake (owner Q93). The done-when below is copied from #13300 as written.

Done when

  • playwright demo-video
  • playbooks boris, repo-sweep, update

Activity

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

    @github-actions
    Contributor

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

    Size: Medium
    Complexity: Low
    Uncertainty: Known
    Flags: none
    Blocked by: none

    Decision recorded. The playwright demo-video row is delivered by #13336; the playbooks boris, repo-sweep and update row is still open: none of the three skills has a plugin eval case on main.
    Agent choice, not an owner answer.
    [quote truncated; the full decision is at the link]

    #13310 (comment)

    The decision settles the open questions. The playwright demo-video row is done via #13336. What remains is adding eval cases under plugins/playbooks/evals/ for playbooks:boris, playbooks:repo-sweep and playbooks:update. Each needs a skill-fired grader, deterministic graders where the answer allows, pass and fail samples, and 0 FAIL from validate-cases.py. That is bounded, test-only work with a clear approach.

    Automated triage, applied by the lanes App.

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 4, 2026
  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.
    on Nov 4, 2026
  5. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    admission-deferredAdmitted but waiting for WIP room; the hourly work-unblock sweep labels it agent-ready.
    on Nov 4, 2026
  6. 18 remaining items

  7. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    and removed
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 4, 2026
  8. added
    admission-deferredAdmitted but waiting for WIP room; the hourly work-unblock sweep labels it agent-ready.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    admission-deferredAdmitted but waiting for WIP room; the hourly work-unblock sweep labels it agent-ready.
    on Nov 4, 2026
  9. github-actions commented on Nov 4, 2026

    @github-actions
    Contributor
    No description provided.
  10. github-actions commented on Nov 4, 2026

    @github-actions
    Contributor
    No description provided.
  11. kyle-sexton commented on Nov 5, 2026

    @kyle-sexton
    Member

    Decision recorded. The update item of this issue's 21:55Z record is narrowed: its case needs no skill-fired grader, because playbooks:update is not model-invocable on its own, so a slash-invoked case makes no Skill call.
    Agent choice, not an owner answer.

    Why a skill-fired grader is not the right test for this skill:

    • plugins/playbooks/skills/update/SKILL.md:5 sets disable-model-invocation: true. The Claude Code skills docs say "Claude can't invoke the skill on its own" with that setting (https://code.claude.com/docs/en/skills#control-who-invokes-a-skill), so the case invokes it by slash command.
    • plugins/evals/skills/plugin-eval/reference/case-authoring.md:100-106: a prompt that starts with the skill's slash command loads the skill without a Skill tool call, so a tool_used: Skill grader fails and the validity gate marks the run INVALID (seen at Claude Code 2.1.289, 2026-10-04, with a recheck trigger in that file).
    • The skill-fired wording came from this lane's own record of 2026-11-04T21:55Z, not from the issue body, whose row reads only "playbooks boris, repo-sweep, update".

    Replaces the record's update item:

    • playbooks update: at least one plugin eval case under plugins/playbooks/evals/ that invokes /playbooks:update by slash command, with deterministic graders on what the skill does (no skill-fired grader), pass and fail samples per deterministic grader, and 0 FAIL from validate-cases.py.

    The boris and repo-sweep items stand unchanged, skill-fired grader included. The VALID both-arm verdict stays with #13311.

    Checked on #13388's head 24c1d69d3c: python3 -I plugins/evals/skills/validate/scripts/validate-cases.py plugins/playbooks/evals exits 0 with 0 FAIL; none of its WARNs is on the three new cases (boris-parallel-sessions-from-reference, repo-sweep-next-stops-on-conflicting-pr, update-check-runs-pack-scripts). PR CI does not run this validator on eval-case changes (it runs only in the eval dispatch workflows), so this run is the evidence for that clause.

  12. removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 5, 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

    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

    Fields

    Work status

    agent-ready

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions