Skip to content

fix(planning): reword shared interview phrases, read back departing answers, restate only changes - #11588

Merged
kyle-sexton merged 4 commits into
mainfrom
docs/9790-reword-interview-phrases
Oct 31, 2026
Merged

kyle-sexton merged 4 commits into
mainfrom
docs/9790-reword-interview-phrases

Conversation

@kyle-sexton

Copy link
Copy Markdown
Member

Closes #9790
Closes #11187
Closes #11189
Closes #11191

Summary

Four /planning:interview changes that each stopped host-only in the issue lane only because the lane cannot re-pin the interview digests. They share the same pins, so one PR re-pins them once instead of four PRs conflicting on them. The lane wrote the rule text for each; this host run resolved conflicts with main, re-pinned and verified.

Fix

Verification

Related

🤖 Generated with Claude Code

https://claude.ai/code/session_01VcupokZY9nMi5ZG7UdzT4q

kyle-sexton and others added 3 commits October 31, 2026 11:01
…g skills

Reword the interview lines that shared short phrases with
mattpocock/skills grilling, grill-me and grill-with-docs (at 24fe0ef):
the Stance wayfind trigger, "the frontier is empty" across the skill
bodies, sweep, checklist, evals and wayfind, the coverage-prompt
exemption line, and the confirmation gate's opening clause. No rule or
halt changed. Re-pin the four digest pins that guard the reworded text.

Builds on the work-resolve-issue lane's partial branch for #9790.

Closes #9790

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VcupokZY9nMi5ZG7UdzT4q
… "something else"

Three interview rules the work-resolve-issue lane wrote but could not
re-pin (its Bash cannot run repin.sh):

- #11187: loop.md's drift check reads back an answer that departs from
  the recommendation, or arrives dictated or unclear, and keeps its row
  open until the user confirms the read-back.
- #11189: SKILL.md Step 3's restatement gives only changed answers,
  hedged rows and unseen assumptions when each answer was read back.
- #11191: the round's closing probe is worded "something else".

Re-pin the Stance, Step 3 and loop.md register digests they change.

Closes #11187
Closes #11189
Closes #11191

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VcupokZY9nMi5ZG7UdzT4q
@kyle-sexton
kyle-sexton marked this pull request as ready for review October 31, 2026 15:12
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T15:14:23.696847Z 8bd94d5 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

claude-security-review reviewed d26e74270e07f8fc3435e055a1e37122e7d20aa4: 0 finding(s), 0 as inline comments.

No security issues found in the incremental change (d26e742 over 8bd94d5). It touches a changelog fragment, the /planning:interview SKILL.md, and its defenses test.

Instruction-surface lens. The one SKILL.md edit rewrites the recap rule in the "Recap and procedure check" paragraph. The rule now applies "when every answer was accepted as recommended or confirmed after its read-back" instead of "when each answer was read back as it arrived". It tells the model to save a recap (export-ledger --recap) once each round's read-backs are confirmed, so the first confirmation can paste the --changed recap instead of the full one. The changed lines do not touch the checks that stop the model acting on unconfirmed or unresolved answers:

  • The explicit-confirmation requirement and the "do not act on the interview's output until they confirm" line are untouched.
  • The procedure check (check-open-questions.sh, with its exit code and procedure= field cited as evidence) is untouched.
  • The register gate is untouched.
  • The recap is still generated from the on-disk ledger.

The edit changes only how much is restated, so no protected-class action loses its check. I did not read docs/contracts/instruction-exception-register/README.md, so I judged this by consequence rather than against the register's class list.

Test file. plugins/planning/tests/interview-defenses.test.sh has a re-pinned digest for the "Step 3" section. This is the expected update after the section text changed. It also rewords some pin comments. No pin was removed and no defense was weakened.

Changelog fragment. It is prose only.

Pin-ceremony and friction-hold changes are not a finding in this phase. No manifests, token scopes, trusted-actor lists or merge holds changed.

critical-findings: 0

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

claude-review: 2 inline finding(s) on 8bd94d56de5d8ae7f69a7194eb54cc24948e6930; the summary is in this lane's pull request comment.

claude-lane: claude-review

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

claude-review reviewed d26e74270e07f8fc3435e055a1e37122e7d20aa4: 0 finding(s), 0 as inline comments.

Incremental review of d26e742 (since 8bd94d5): no findings.

What changed

  • The Step 3 "Recap and procedure check" paragraph in plugins/planning/skills/interview/SKILL.md. It no longer says to replace the recap with one line naming the Q<N> ids that stand as read back. Instead, when every answer was accepted or confirmed after its read-back, the skill saves a recap after each round's read-backs are confirmed and does not paste it. The first confirmation then pastes the --changed recap, which lists only the answers changed since, plus one counting line. The restatement adds the intent, the hedged rows and the unseen assumptions.
  • The .changes/planning/…11189….md fragment, reworded to match. It is still bump: patch, which fits a wording fix to a skill.
  • interview-defenses.test.sh: the Step 3 pin digest and its justification comment were updated. The stale combined "Adds three rules" comments were replaced with comments for the rules each pin actually covers.

Checked

  • The new instruction matches plugins/planning/surface/round.py (cmd_export_ledger, read_last_recap, around lines 2647–2700). A recap without --changed writes <ledger stem>.last-recap.json. A later --recap --changed run diffs against that file. If the file is missing or unreadable, the recap lists every row, so nothing is silently dropped.
  • The context/loop.md "Drift check" section the new text links to exists (line 362).
  • No other file in the repository uses the removed "read back as it arrived" or "one line names the register" phrasing, so no stale reference is left.
  • The change adds no new row resolution. The register gate and procedure check still run unchanged, so the no-silent-resolve and confirmation-gate defenses are untouched.
  • The fix(planning): restate only changed answers and unseen assumptions at final confirmation #11189 acceptance criteria are met in SKILL.md: the rule is stated once, names the interview-final-brief-changes-only eval as evidence, and points to the --changed recap. I did not run the test, and I did not recompute the new Step 3 digest (ed720477…). The PR's author-claimed check-affected.sh --tests result is unverified by this lane. The eval rerun is stated in the PR body as deferred to the host lane.

Not a hold: the change spends no billed resource. Eval reruns draw only on prepaid credit and are not a finding.

Review on #11588: the #11189 rule's condition ("each answer was read
back") rarely held, since accepted answers get no read-back, and it
replaced the verbatim recap with a hand-written line the procedure check
cannot see. The rule now applies when every answer was accepted or
confirmed after its read-back, saves a recap once each round's read-backs
are confirmed, and pastes the generated --changed recap at the first
confirmation. Each re-pin comment now names only the change inside its
own range. Step 3 re-pinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VcupokZY9nMi5ZG7UdzT4q
@kyle-sexton

Copy link
Copy Markdown
Member Author

Host eval reruns for #11187, #11189 and #11191, on this PR's head d26e742 (which includes the review fix to the #11189 rule).

How they ran: claude plugin eval <out-of-repo copy of plugins/planning> --case <case> --runs 3 -j 2 --scaffold --trust-plugin --keep-temp --no-publish --allow-tools Bash Write Edit --judge-model opus, one case at a time, empty HOME and a short TMPDIR. Every run is VALID under run-validity.py --runs 3 --scaffolded. The only warning is "skill fired": the slash command loads the hub without a Skill call.

Case Issue With Without Bar (0.8)
interview-readback-dictated-answer #11187 1.00 0.67 met
interview-closing-probe-something-else #11191 1.00 0.50 met
interview-final-brief-changes-only #11189 0.67 0.50 not met

On #11189's case, the llm grader changes-only-restatement passed 2 of 3 with-arm runs and 0 of 3 without. The regex grader omits-unchanged-items failed all 6 runs.

  • In with-arm runs 1 and 3 it is a false fail. Those runs left the unchanged answers out and mentioned UTC or the 50,000 cap only while reasoning about Q5 and Q9.
  • Run 2 re-listed them, a correct fail.

Filed as #11591. #11189's done-when makes the 0.8 bar the rerun's check, not this PR's gate.

This was generated by AI.

@kyle-sexton
kyle-sexton added this pull request to the merge queue Oct 31, 2026
Merged via the queue into main with commit 2949067 Oct 31, 2026
62 of 63 checks passed
@kyle-sexton
kyle-sexton deleted the docs/9790-reword-interview-phrases branch October 31, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant