fix(planning,playbooks,session-flow): bound /interview to decisions and scope verification to what ships - #1899
Conversation
/interview had no boundary against being used as the execution container
for bulk application work. A corpus task ("apply the docs across every
document") could enter the interview and come out as a 90-row decision
ledger, because each per-document application step was admissible as a
decision row and every row then earned its own adoption ceremony. The
skill's only anti-marathon signal was the ballooning frontier, whose
remedy — route to /planning:wayfind — is wrong here: the decisions were
not foggy, they were settled and merely numerous.
SKILL.md now states the boundary as a sibling to that paragraph, so the
discrimination between the two signals is visible at the point of use:
for a corpus application the output is the small contested-decision set
plus an execution contract — one Brief `### Acceptance criteria` line
naming the per-unit close-out loop — and never one decision row per
source unit. Naming the destination section is load-bearing: the loop
having nowhere to live is why the decision ledger absorbed it. The
tripwire is a runnable count: candidate questions scaling with source
units rather than genuine forks is execution masquerading as decisions.
context/gotchas.md records the pattern and points at the SKILL.md
section rather than restating the rule.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
The fresh-context verification trigger — "after any multi-file edit batch, and before declaring any multi-part task complete" — had no scope, so a batch of ledger, checklist, and status-row edits satisfied it as fully as a batch of source files. Applied that way it spawns verifiers on the bookkeeping about the work, and then on the records those verifications produce, so the process feeds itself and the ceremony outgrows the work. fable-5's orchestration chapter is the authoritative home, because it owns the trigger that misfires; the rule lands as a scope qualifier on that trigger rather than a new section. Ceremony scales with blast radius: what a consumer receives takes the full independent-verifier gate, memory-tier bookkeeping takes the in-context floor and stops there however many files a batch touched, and a verifier is never spawned to verify a record OF a verification. context/verification.md is untouched — its adversarial-self-review section already scales with blast radius and already points here as the owner of the gate. The orchestrate skill's imperative 3 carries a terse self-contained clause saying the same thing, because that skill also exports its imperatives as a paste-ready brief that is model- and tool-agnostic by construction — nothing in it may depend on a repo file, so a pointer is not an expressible form there. It sits in the sub-clause body, leaving the compact headline-only export unchanged. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
The tripwire led its own bolded paragraph, and in this skill body every bolded lead-in is a distinct standing rule — so the discriminator read as a second rule with its own scope rather than as the test for the one above it. It now sits inline at the tail of that rule, one bolded lead per rule as the surrounding paragraphs are shaped. Wording and force are unchanged, so the 0.27.2 changelog entry still describes it and no further version bump is due. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Claude finished @kyle-sexton's task in 2m 57s —— View job Review complete
This is a docs-only change (skill prose + changelogs + version bumps), scoped to three plugins. Verified: all three version bumps match their changelog entries (planning Finding (Suggestion — test coverage):
No correctness, architecture, or error-handling issues found in the reviewed diff. |
|
Claude finished @kyle-sexton's task in 45s —— View job Security review complete
Scope reviewed: all 10 files changed in this PR ( Findings: none. This PR is exactly what it claims to be — a docs/prose-only change:
No CRITICAL, IMPORTANT, or SUGGESTION findings to report. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 51735bd987
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Claude has reviewed this PR 2 times. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
…dd evals Review findings on #1899, both verified against the skill body: - Codex P2 (confirmed): the bulk-application rule demanded a Brief "### Acceptance criteria" line unconditionally, but the skill's domain routing bars general sessions from ever creating a Brief — incompatible instructions for a non-engineering corpus task. The execution contract now lands as one line in the session's output artifact routed by domain: the Brief's acceptance-criteria line in an engineering session, the shared-understanding summary in a general one. Changelog wording updated to match. - claude[bot] suggestion (confirmed against repo convention of one eval per behavioral rule): both new rules gain evals — interview id 11 exercises the corpus-collapse (two outputs, tripwire, no wayfind routing), orchestrate id 8 exercises imperative 3's shipped-vs-process scope and the never-verify-a-verification-record loop guard. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 10s —— View job Code review complete
This PR has moved since the last automated review: commit Codex's P2 finding is resolved. The earlier wording unconditionally demanded a Brief The prior test-coverage suggestion is also addressed. Both Other things verified in this pass:
No correctness, architecture, or maintainability issues found in the current diff. Security review is out of scope for this lane per |
|
Claude finished @kyle-sexton's task in 55s —— View job Security review complete
Scope reviewed: all 12 files changed in this PR (confirmed via Findings: none. This PR remains exactly what it claims — a docs/prose-only change, and the latest commit (
No CRITICAL, IMPORTANT, or SUGGESTION findings to report. |
|
Review findings addressed in b2ab92b:
Both verified against the skill bodies before fixing; independent adjudication pass runs before thread resolution. |
…chain (#1906) ## Summary Fixes the remaining two root causes behind the doc-corpus campaign drift (owner diagnosis, 2026-08-03): handoff chains preserved state perfectly and intent not at all, and no resume path re-anchored on the goal. - **Handoff document schema** (`reference/structure.md`) — new mandatory section 1, **Original goal**: the user's goal quoted verbatim with its date (never paraphrased; `RECONSTRUCTED` marker when the user never wrote one sentence), an **Amended** field that changes only on the goal-setter's explicit statement with prior goals retained, and a one-sentence tie from the first remaining action to the goal. Body renumbered to 14 sections; every numeric reference swept. - **Immutability across the chain** (`skills/handoff/SKILL.md`) — successor handoffs copy the goal from the prior file on disk, unchanged, never rebuilt from conversation; the post-write checklist enforces it, and the prompt-only path carries the verbatim goal line between the rails. - **Goal-alignment on resume, three complementary homes** — the resume-prompt directive (`reference/save-point.md`) checks it on every resume; `keep-going` makes it the FIRST reconciliation check on the interrupted path; `reanchor` treats it as a premise, performing the cross-link quote comparison only it can do (a re-derived quote reports as drift — the paraphrase IS the drift), disclaims sole ownership, and hands misalignment to keep-going. None of the three licenses amending the goal on the session's own authority. - Gotchas entry records the mechanism; six new evals across the three skills exercise the rules; session-flow `0.17.23`. ## Test plan - Docs-only change (skill prose + evals JSON + changelog + version bump); no executable surface touched. - Independently verified by a fresh-context Fable verifier with rationale withheld against 10 binary criteria (schema completeness, renumbering sweep via bash grep, immutability instructions, all three homes' consistency, eval shape/accuracy, changelog/version accuracy, scope) — 10/10 PASS; its one wording defect (stale pre-fix rationale in reanchor's check 5) is fixed in `24c4db56`. - CI markdown lint + skill-quality gates. ## Related - No linked issue. - Companion to #1899 (merged): together they close all four owner-diagnosed drift root causes — #1899 bounded `/interview` to decisions and scoped verification ceremony; this PR makes the goal durable across handoff chains and re-anchored on every resume. session-flow `0.17.23` is serialized directly atop #1899's `0.17.22`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…tion audit with the live prompting guide (#1908) ## Summary Doc-alignment roster row 1: align repo doctrine and the instruction audit with the live **Prompting Claude Fable 5** page (platform.claude.com). The live page was re-fetched and is byte-identical to the repo's 2026-07-29 capture, so this ships what the page implies and the repo lacked — nothing in the repo misstated it. **playbooks 0.6.9** (fable-5 doctrine): - `context-economy.md` — the late-session decay ladder gains a fourth bullet naming a remaining-context number as a NON-signal (the page's "Rare cases of context-budget concern"). Scoped to the model's own initiative; an instructed stop outranks it under meta-rule 1, so sibling plugins that deliberately gate on the window keep working. - `communication.md` — new assessment-versus-change gate ("Assessment is a deliverable; a fix is a different one"): report-and-stop on problem/question framings, evidence bar before state-changing actions. Repairs `opus-4-8.md`'s pre-existing pointer to a section that did not exist. - `orchestration.md` — non-blocking dispatch: keep working while independent workers run; continue an oriented worker rather than respawn. - `execution.md` — bound on defensive over-building: boundary-only validation, no cleanup around a bug fix, no abstraction before the second real caller, no shim where changing the code is available. - `SKILL.md` — core-doctrine lines for all four (they fire before their chapters' load triggers plausibly would). **claude-config 0.21.1** (criteria 1.9.0, IA-2 model-delta cluster): - New row **I8-d** (short-turn assumptions, Model scope fable-5) with three fences keeping it off output-length instructions, surface-owned latency requirements, and documents about the pattern. - I8 base row gains the delegation throttle as a named worked instance, fenced for caps with non-model rationale. - SKILL.md discloses both as lane-only (not scanner-seeded). Deliberately NOT shipped, with verified reasoning: the IA-2(d) context-budget audit row — it fires on nine deliberate in-repo context-gating surfaces (context-guard exists on purpose), and its config half (`totalTokensReminder` / `CLAUDE_CODE_TOTAL_TOKENS_REMINDER`) appears on no official settings/env-var/model-config/context-window page. The finding shipped as the context-economy doctrine bullet instead. ## Test plan - Docs-only (skill prose, criteria, changelogs, version bumps). - Producer verification: both audit-instructions test suites pass (46 + 41 checks), skill-quality gate zero errors with warning counts identical to base, markdownlint clean, zero new I6 bare-prohibition candidates, all cross-references resolve. - Independent fresh-context Fable verifier, rationale withheld, 7 binary criteria — including its own live-page fetch and byte-diff, verbatim-quote checks on criteria sources, independent reproduction of every producer verification claim, both IA-2(d) non-ship legs verified (in-repo deliberate instances enumerated; env vars absent from live official docs), eval-convention check (does not extend to these surfaces — verified against the last five doctrine commits and #1881/#1882/#1884), and merge-readiness vs current main — **7/7 PASS, empty defect list**. ## Related - No linked issue. - Doc-alignment per-document loop, roster row 1 (memory-tier roster; rows 2+ follow). Companion context: #1899, #1906 (drift root-cause fixes that preceded the loop). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ims (#1909) ## Summary Doc-alignment roster row 2: **Introducing Claude Fable 5 and Claude Mythos 5** (the canonical platform page; the anthropic.com launch post is a separate roster row, read as corroborating voice only). **playbooks 0.6.10** — the fable-5 calibration chapter's Mythos 5 worked instance gains its custody record. It carried two true observations (Mythos row in the thinking per-model matrix; known-but-unselectable registry entry in Claude Code) with no account of why they differ. The introducing page states the reason — "Claude Mythos 5 is not generally available: it is offered in limited availability to approved customers in Project Glasswing" (fetched 2026-08-03) — added as one pointer + one quoted sentence + one date, per the section's own no-pasted-matrix rule. The negative the instance rests on was verified rather than assumed: the matrix page carries the row and no access-availability signal (its only availability language, a zero-data-retention note, covers both models identically). **claude-config 0.21.2 / criteria 1.10.0** — audit-instructions row I10's Model-scope ground moves from an omission reading to the introducing page's positive statement ("Claude Mythos 5 does not include these classifiers"), cited as a deliberate two-step chain — the introducing page owns the classifier-set exclusion for Mythos 5; the refusals-and-fallback page owns `reasoning_extraction`'s membership in that set — because collapsing them would rebuild the near-miss scope inheritance the catalog's own model-scoping block forbids. Scope conclusion unchanged (`fable-5`). Deliberately not done: no docpage-digest slice produced (queue entry retained); no duplicate Fable/Mythos criterion (the worked instance is that rule); boris vendor surfaces untouched; row 11's IA-4 evidence left to its own row. ## Test plan - Docs-only (skill prose, criteria, changelogs, version bumps); markdownlint clean; both plugin.json parse. - Producer ran a fresh-context reviewer (rationale withheld) that fact-checked both quotes against live pages and audited against criteria.md's own binds-on-touch rules. - Independent fresh-context Fable verifier, 7 binary criteria — its own live fetches of all three pages, verbatim-quote checks (both quotes character-exact), verified-negative adjudication, two-step chain integrity, version/changelog accuracy, hygiene — **7/7 PASS**; its one minor wording defect ("no availability signal of any kind" overclaimed vs the page's ZDR note) fixed in `e6ffa40fb2`. - Rebased onto main after #1908; version stack asserted: playbooks 0.6.10 > 0.6.9, claude-config 0.21.2 > 0.21.1, criteria 1.10.0 > 1.9.0. ## Related - No linked issue. - Doc-alignment per-document loop, roster row 2. Predecessors: #1908 (row 1), #1899/#1906 (drift root-cause fixes). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
Fixes two of the root causes behind the doc-corpus campaign drift (owner diagnosis, 2026-08-03), in the plugins that caused them:
0.27.2) — bulk corpus-application work is no longer expressible as a decision set. The interview now yields exactly two outputs for such work: the small contested-decision set plus an execution contract naming the per-unit close-out loop. A tripwire catches the failure signature — candidate question count scaling with source units instead of genuine forks — and states its remedy as distinct from the pre-existing ballooning-frontier signal (ballooning routes to/planning:wayfind; unit-scaling collapses into the execution contract). Gotchas entry added.0.6.8) — the fresh-context verification trigger gains the scope it lacked: the independent-verifier gate ranges over shipped artifacts (what a consumer receives); memory-tier process records take the in-context floor; a verifier is never spawned to verify a record OF a verification.0.17.22) — imperative 3 carries the same scope rule as a terse self-contained clause, because the imperatives also export as a model- and tool-agnostic paste-ready brief where a pointer is not expressible.Test plan
Related
fix/handoff-goal-preservation(handoff goal-preservation — mandatory immutable Original-goal section + resume goal-check) addresses the remaining two root causes and lands after this PR (session-flow0.17.23serialized behind this PR's0.17.22).🤖 Generated with Claude Code
https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X