Skip to content

test(planning): one-command attended re-pin for interview-defenses digest pins #6334

Closed

Description

@kyle-sexton

Problem

plugins/planning/tests/interview-defenses.test.sh pins sha256 digests of guarded sections of the interview skill and says only an attended run may recompute a pin. That holds: on 2026-10-04 the auto-mode classifier denied an agent's re-pin edit ("Security Test Removal") even after the user had approved the new text, and it also denied an agent's plain run of reattach-slice.test.sh. The user then had to run three hand-built sed lines, one at a time, because the session's worktree isolation refuses chained commands that also touch git. That cost several round trips for a two-line change.

Proposal

Add --repin <section-label> to the test (or a sibling repin.sh). It recomputes that one section's digest, rewrites only that pin constant, takes the justification sentence as an argument and inserts it beside the existing ones, then reruns the test and prints PASS/FAIL. The attended step then becomes one ! line the user runs after reading the diff. The pin stays human-gated; only the mechanics shrink.

Acceptance

  • One command re-pins one section and adds its justification comment; every other pin is left byte-identical.
  • The command refuses a section label that does not exist, and changes nothing when the digest already matches.

Activity

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

    @github-actions
    Contributor

    Thanks for the report. Automated triage handed this issue to a maintainer.

    Automated triage. A maintainer reviews it.

  3. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 4, 2026
  4. removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 12, 2026
  5. added theissue type on Oct 12, 2026
  6. kyle-sexton commented on Oct 13, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. The owner approved applying independently verified recommendations on 2026-10-12.

    • Add the re-pin as a --repin <label> flag on interview-defenses.test.sh or as a sibling repin.sh? → sibling repin.sh
      Basis: plugins/planning/tests/interview-defenses.test.sh:103 (ATTENDED_ONLY text), :226 (pin_section signature), :252 (digest failure text); issue body (classifier denial 2026-10-04); judgment on placement

    Asks for a one-command attended re-pin (flag or sibling script) for the sha256 section pins in the planning interview-defenses test, so a re-pin is one ! line instead of hand-built sed. Nothing on main implements it; the test still only prints the attended-only instruction.

    Verification notes:

    • Line drift: interview-defenses.test.sh:226 is the pin_section usage comment; the function is defined at :238 and the failure text is at :252. Substance holds.

    Verified by an independent fresh-context check (confirmed, risk low): gh issue view 6334 (open, no owner decision); origin/main plugins/planning/tests/interview-defenses.test.sh:103 ATTENDED_ONLY, :224-228, :238 pin_section(), :248-254 failure text, :458-462 call shape (label, file, open, close, sha literal on its own line); git ls-tree plugins/planning/tests: no repin tooling; git log -5 on the test: #7302 records a re-pin justification, no repin script; gh pr list search repin interview-defenses: #5426, #6541, #7302 (none add tooling)

    Admission to an agent lane stays with the work-class rules and owner ratification.

  7. kyle-sexton commented on Oct 13, 2026

    @kyle-sexton
    MemberAuthor

    Owner batch-ratified this admission in an attended session on 2026-10-12: work-class: scoped. Rule: class C1-C3, no trust surface, the independent check confirmed the recorded decision, and no owner step remains.

  8. added
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    and removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 13, 2026
  9. kyle-sexton commented on Oct 18, 2026

    @kyle-sexton
    MemberAuthor

    Agent Brief

    Type: Feature
    Summary: Add a sibling repin script that re-pins one interview-defenses section digest in one command.

    Current behavior:
    The interview-defenses test pins sha256 digests of guarded interview sections and says only an attended run may recompute one. Re-pinning means hand-built edits to the pin constant and a justification comment.

    Desired behavior:

    • A repin.sh beside the test takes a section label and a justification sentence. It recomputes that section's digest, rewrites only that section's pin constant, inserts the justification beside the existing ones, reruns the test and prints PASS or FAIL.
    • It refuses an unknown label, and changes nothing when the digest already matches.
    • The test's attended-only message names the script as the one-line command a person runs after reading the diff.

    Key interfaces:

    • repin.sh <section-label> <justification>: exit codes for success, unknown label and no-op.

    Acceptance criteria:

    • A test of the script on a copy of the test file shows one pin changes and every other pin is byte-identical.
    • The same test shows an unknown label is refused and a matching digest is a no-op.
    • scripts/run-test-file.sh on the new script's test passes.
    • A changelog entry or fragment for planning passes scripts/check-changelog-fragments.sh.

    Out of scope:

    • Running the script against the real pins, and any change to the interview skill's text.
    • Changing which sections are pinned.

    This was generated by AI during backlog shaping. The owner approved this in an attended backlog-shaping session on 2026-10-17.

  10. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 18, 2026
  11. melodic-automation-lanes commented on Oct 18, 2026

    @melodic-automation-lanes
    Contributor

    The work-resolve-issue run that agent-ready started failed before it reported, or the token broker refused it because its workflow files differ from main's. work-unblock removed and added agent-ready back to start a fresh run on main's workflow files. It does this once per version of those files, so if this run fails the same way, a person looks at it.

  12. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 18, 2026
  13. melodic-automation-lanes commented on Oct 18, 2026

    @melodic-automation-lanes
    Contributor

    The work-resolve-issue lane stopped partway through this issue and needs a person.

    Why, in the run's own words:

    The run wrote no readable outcome file, so it stopped before it finished.

    Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/39095229195

    To retry, remove needs-human and add agent-ready again.

  14. removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 18, 2026
  15. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 18, 2026
  16. melodic-automation-lanes commented on Oct 18, 2026

    @melodic-automation-lanes
    Contributor

    The work-resolve-issue run that agent-ready started failed before it reported, or the token broker refused it because its workflow files differ from main's. work-unblock removed and added agent-ready back to start a fresh run on main's workflow files. It does this once per version of those files, so if this run fails the same way, a person looks at it.

  17. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 18, 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

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.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