Skip to content

feat(playbooks,claude-config): align Fable 5 doctrine and the instruction audit with the live prompting guide - #1908

Merged
kyle-sexton merged 2 commits into
mainfrom
docs/roster-r1-fable5-prompting
Aug 4, 2026
Merged

feat(playbooks,claude-config): align Fable 5 doctrine and the instruction audit with the live prompting guide#1908
kyle-sexton merged 2 commits into
mainfrom
docs/roster-r1-fable5-prompting

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

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

Related

🤖 Generated with Claude Code

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

…tion audit with the live prompting guide

Roster row 1 close-out. The live "Prompting Claude Fable 5" page was re-fetched
2026-08-03 (HTTP 200) and is byte-identical to this repository's 2026-07-29
capture, so nothing in the repo misstates it and the work is entirely what the
page implies and the repo lacked.

playbooks (0.6.8 -> 0.6.9)

- context-economy: the late-session decay ladder could be entered on a
  remaining-context number, which is the behavior the guide's "Rare cases of
  context-budget concern" section exists to suppress. A fourth bullet names the
  number as a NON-signal. It governs your own initiative and nothing else: an
  instructed stop outranks it under meta-rule 1, so the sibling plugins that
  deliberately gate on the window - a context-zone hook, a retro that shortens
  past a threshold, a workflow handoff step - keep doing what they were built to
  do. An absolute rule here would have contradicted every one of them for any
  consumer installing both, which is the cross-surface conflict I15 reports.
- communication: adds the assessment-versus-change gate. opus-4-8.md already
  named "Assessment vs change" and routed readers to "(Communication chapter.)",
  which held no such section - the pointer promised doctrine that did not exist.
- orchestration: adds non-blocking dispatch. Every path through the chapter read
  dispatch-then-wait; the guide's "Parallel subagents" posture is to keep working
  and to continue an already-oriented worker rather than respawn one.
- execution: adds a 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 carries all four, because chapters load at triggers and
  three of these fire before their chapter's trigger plausibly would.
- opus-4-8.md Sources gains a re-verification line stating its own limits.

claude-config (0.21.0 -> 0.21.1; criteria 1.8.0 -> 1.9.0)

- New row I8-d, short-turn assumptions, Model scope: fable-5 (promotion gate
  unmet - one model guide, no model-agnostic page). Three fences keep it off
  output-length instructions, surface-owned latency requirements, and documents
  about the pattern. Lane-only, not seeded: a scanner family was declined
  because the repository's one candidate string is the exempt meta case.
- I8's base row gains the delegation throttle as a named worked instance, fenced
  so a cap with its own non-model rationale is not caught.

Verified: both audit-instructions test suites pass (46 + 41 checks);
skill-quality gate PASS with 0 errors on both touched skills, warning counts
identical to base; markdownlint clean over 57 files; the new doctrine text adds
zero new I6 bare-prohibition candidates under the repo's own scanner; every new
cross-reference resolves to a real section; docs/CATALOG.md carries no plugin
versions so the bumps owe it nothing.

Not done, deliberately: the IA-2(d) context-budget audit row does not ship - run
against this repository it fires on nine deliberate instances including the
context-guard plugin, no fence separates designed context management from the
accidental self-winding-down the guide describes, and the guide's own remedy is
harness configuration rather than instruction editing. The config half is
unauthorable besides: totalTokensReminder and CLAUDE_CODE_TOTAL_TOKENS_REMINDER
appear on no official settings, env-vars, model-config, or context-window page.
The doctrine fix above is what that finding turned into instead.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@cursor

cursor Bot commented Aug 4, 2026

Copy link
Copy Markdown

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

claude Bot commented Aug 4, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 28s —— View job


Code review — PR #1908

Scope note: All 12 changed files are documentation/doctrine prose (skill bodies, criteria catalog, changelogs, plugin.json version bumps) — no application code, no state-writing paths, no auth/tenancy surfaces. REVIEW.md's code-review-lane "always check" items (audit-log correlation, multi-write atomicity) don't apply to this diff, and the security lane has nothing to review here either.

Findings: none. I verified the specific claims this PR's own verification section makes, rather than taking them on faith:

  • Scanner-seeding claim checked against the actual script. SKILL.md (L259) and the CHANGELOG say I8's base row and I8-d are lane-only, not seeded by instruction-scan.sh. Read the script directly — instruction-scan.sh#L104-L139: it defines I8_A_ERE/I8_B_ERE/I8_C_ERE and emits only I8-a/I8-b/I8-c. No base-row or I8-d pattern exists in the script — the doc claim is accurate.
  • Version/changelog consistency. claude-config 0.21.0→0.21.1 and playbooks 0.6.8→0.6.9 in plugin.json each match a same-version CHANGELOG entry; criteria.md's frontmatter version: 1.9.0 matches the changelog's "1.8.0 → 1.9.0" line, and a repo-wide grep found no stale 1.8.0 references left behind.
  • Cross-reference integrity. Every new pointer resolves: communication.md's new "Assessment is a deliverable" section correctly fills the gap opus-4-8.md already pointed at ("(Communication chapter.)" previously had no target), and its citations into trust-and-authority.md ("Consent gates on outward-visible actions"), debugging.md ("Generate competing hypotheses, then rank"), and execution.md ("Scope fencing") all exist at those headings.
  • Scope discipline on the new context-economy bullet. The new "not a signal — a number" bullet (context-economy.md#L83) explicitly scopes itself to the model's own initiative and subordinates to an instructed stop under meta-rule 1 — this is the right call given other plugins in the marketplace (context-zone hooks, retro thresholds) deliberately gate on the context window, and an unscoped rule here would have created exactly the cross-surface conflict audit-instructions I15 is built to catch.
  • Fresh-docs mandate: this PR's surface is prose bodies of skills and a criteria catalog, not frontmatter/contract fields, so CLAUDE.md's fresh-docs mandate doesn't strictly gate it — but the PR cites and re-verifies its source (opus-4-8.md's Sources block now states the Fable 5 guide was re-fetched 2026-08-03 and is byte-identical to the 2026-07-29 capture) anyway, which is good practice for an ANTHROPIC-DOCS-authority catalog.

Not independently re-run: the PR's test-plan claims ("46 + 41 checks," skill-quality gate, markdownlint) — this sandbox blocks executing instruction-scan.test.sh/conflict-scan.test.sh directly (script execution requires interactive approval unavailable in this lane). I instead statically verified the specific behavioral claim those tests would cover (the seeding boundary above) by reading the script's regex definitions and emit logic directly.

@claude

claude Bot commented Aug 4, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 0s —— View job


Security review complete

  • Gather context (PR diff, changed files)
  • Review changed files for security issues
  • Post findings

Scope reviewed (via git show HEAD, full diff of the PR's single commit):

File Nature of change
plugins/claude-config/.claude-plugin/plugin.json Version bump only (0.21.00.21.1)
plugins/playbooks/.claude-plugin/plugin.json Version bump only (0.6.80.6.9)
plugins/claude-config/CHANGELOG.md Changelog prose
plugins/playbooks/CHANGELOG.md Changelog prose
plugins/claude-config/skills/audit-instructions/SKILL.md Doc-only disclosure text
plugins/claude-config/skills/audit-instructions/reference/criteria.md New audit-criteria row (I8-d) + I8 base-row addition, all markdown prose describing detection heuristics
plugins/playbooks/reference/model-adaptation/opus-4-8.md Added a re-verification note (prose)
plugins/playbooks/skills/fable-5/SKILL.md New doctrine bullets (prose)
plugins/playbooks/skills/fable-5/context/{communication,context-economy,execution,orchestration}.md New doctrine sections (prose)

Findings: none.

This PR is entirely documentation/prose content: markdown instruction text for the fable-5 and audit-instructions skills, changelog entries, and two plugin.json semver bumps. There are:

  • No changes to GitHub Actions workflows, no pull_request_target/workflow_run usage, no run: blocks touched.
  • No code, scripts, hooks, or .mcp.json entries changed — no new execution surface.
  • No handling of tokens, secrets, or credentials anywhere in the diff.
  • No permission, settings, or access-control changes — the plugin.json diffs are single-line version bumps.
  • No dependency or action pins touched — nothing supply-chain relevant.
  • The new criteria/doctrine text is advisory prose consumed by a model, not executable pattern-matching code (the diff itself even notes the corresponding scanner patterns were declined as too failure-prone and left "lane-only, not seeded").

No further action needed from a security standpoint.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

Claude has reviewed this PR 2 times. The lane skips further automatic reviews after 5; deleting this comment resets the count.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 51be17a500

ℹ️ 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".

Comment thread plugins/playbooks/skills/fable-5/SKILL.md Outdated
…e-alignment additions

Finding 1: the new core-doctrine line "No cleanup around a bug fix" (SKILL.md)
and the new "Build for what can happen" section (context/execution.md)
contradicted the pre-existing Scope fencing rule, which REQUIRES absorbing a
behavior-preserving cleanup in an already-touched file costing under ~2
minutes. Both statements now defer explicitly to the scope fence's absorb bar,
so the exception stays actionable.

Finding 2: audit-instructions row I8-d flagged deliberately-designed progress
cadences whose stated rationale is observability or interruptibility of long
autonomous runs — the very guarantees its own Remediate line names as
legitimate. A fourth fence exempts a cadence carrying an explicit
observability/interruptibility rationale unless evidence shows it was
calibrated to an obsolete turn length. criteria.md stays at 1.9.0: that
version was minted in this branch's unreleased commit, matching the in-place
extension of the unreleased [0.21.1] and [0.6.9] changelog entries.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@claude

claude Bot commented Aug 4, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 13s —— View job


Code review — PR #1908 (re-review after push)

Findings: none. This push (51be17a9424059) is a targeted fix commit addressing both open review threads; I read the diff directly rather than taking the "fixed" claims on faith.

Codex finding 1 (scope-fence contradiction) — verified fixed. The unconditional core-doctrine line "No cleanup around a bug fix..." now reads "beyond what the scope fence absorbs", and its chapter twin in execution.md now defers to "Scope fencing" below. Both edits sit before their respective "Scope fence" / "Scope fencing" definitions in reading order (SKILL.md L83 before L86; execution.md L81 before the L116 heading), so the cross-reference resolves forward correctly rather than pointing at nothing. The underlying "Scope fencing" rule itself is untouched — only the two overlapping statements were qualified.

Codex finding 2 (I8-d swallowing observability cadences) — verified fixed. criteria.md#L355-L359 adds a fourth "Must NOT flag" fence for a cadence carrying its own explicit observability/interruptibility rationale, unless evidence shows it was calibrated to an obsolete turn length. This is scoped correctly — it requires the surface to state the rationale, so a bare "check in after each file" with no stated reason still flags; only a cadence that names the observability/interruptibility guarantee is exempted. That matches the row's own Remediate line, which names exactly those two guarantees as legitimate outcomes. The changelog's "Three fences" → "Four fences" edit in CHANGELOG.md matches the actual count in criteria.md.

Consistency check on the fix commit itself:

  • criteria.md frontmatter stays at version: 1.9.0 — correct, since 1.9.0 was minted in this same unreleased branch (51be17a) and the fix extends that unreleased entry rather than shipping a second bump.
  • Both CHANGELOG.md edits are in-place extensions of the still-unreleased [0.21.1] / [0.6.9] entries, not new entries — consistent with neither plugin having shipped between the two commits.
  • No other files in the fix commit touch unrelated content; the diff is scoped exactly to the two findings.

I re-checked the rest of the original diff (communication.md's new "Assessment is a deliverable" section, orchestration.md's non-blocking dispatch, context-economy.md's non-signal bullet, and the I8 base-row delegation-throttle addition) for any second-order contradiction introduced by this fix — found none; the new scope-fence qualifier doesn't loosen anything else in those sections.

Not independently re-run: instruction-scan.test.sh / conflict-scan.test.sh and markdownlint — script execution in this sandbox requires interactive approval unavailable in this lane (same limitation as the initial review pass). I verified the specific claims (fence count, cross-reference resolution, version consistency) by reading the files directly instead.

@claude

claude Bot commented Aug 4, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 51s —— View job


Security review — PR #1908

  • Gather context (git diff against merge-base 07d176c, confirms all 12 files match the PR's declared change set)
  • Review changed files for security issues (injection, auth, secrets, workflow permissions, supply chain)
  • Post findings

Scope reviewed: full diff 07d176c..9424059 (the PR's two commits), 12 files, 223/−6 lines — matches the PR's declared file list exactly.

File Nature of change
plugins/claude-config/.claude-plugin/plugin.json Version bump only (0.21.00.21.1)
plugins/playbooks/.claude-plugin/plugin.json Version bump only (0.6.80.6.9)
plugins/claude-config/CHANGELOG.md, plugins/playbooks/CHANGELOG.md Changelog prose
plugins/claude-config/skills/audit-instructions/SKILL.md Doc-only disclosure text (I8-d lane-only note)
plugins/claude-config/skills/audit-instructions/reference/criteria.md New audit-criteria row (I8-d) + I8 base-row addition — markdown prose describing detection heuristics for other instruction files, not executable code
plugins/playbooks/reference/model-adaptation/opus-4-8.md Added a re-verification note (prose)
plugins/playbooks/skills/fable-5/SKILL.md New core-doctrine bullets (prose)
plugins/playbooks/skills/fable-5/context/{communication,context-economy,execution,orchestration}.md New doctrine sections (prose)

Findings: none.

  • No workflow, script, hook, or .mcp.json changes — no new or altered execution surface. git diff --stat confirms only .md/.json (version field) files touched.
  • No secrets, tokens, or credential handling anywhere in the diff.
  • No permission/settings/access-control changes — both plugin.json diffs are single-line semver bumps, nothing else in those files changed.
  • No dependency or action pins touched — nothing supply-chain relevant for zizmor's lane to flag or for me to re-flag.
  • I specifically read the new execution.md §"Build for what can happen, not what cannot" for security-relevant guidance, since it discusses validation: it tells the model to validate at trust boundaries (user input, external APIs, deserialized data) and not to add guards on internal callers/framework guarantees — this is standard boundary-validation practice, not a weakening of it, and doesn't touch this repo's own trust boundaries.
  • The new communication.md §"Assessment is a deliverable; a fix is a different one" narrows when the model may apply unrequested changes and explicitly defers to the existing "Consent gates on outward-visible actions" section for state-changing/outward-visible actions — this tightens rather than loosens the consent posture.
  • The new context-economy.md bullet and criteria.md I8-d row are advisory doctrine/audit-heuristic prose consumed by a model when reasoning about other files; they don't execute, and the PR's own text confirms the corresponding scanner pattern was declined and left "lane-only, not seeded" (verified independently in the prior review pass against instruction-scan.sh).

This PR has no security-relevant surface to review beyond what the prior automated pass already covered on commit 51be17a; the follow-up commit 9424059 only qualifies two doctrine/criteria sentences (fixing an internal contradiction flagged by Codex) and makes no security-relevant change.

@kyle-sexton
kyle-sexton merged commit fcf2114 into main Aug 4, 2026
32 checks passed
@kyle-sexton
kyle-sexton deleted the docs/roster-r1-fable5-prompting branch August 4, 2026 03:33
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…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>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…and re-verify its sources (#1910)

## Summary

Doc-alignment roster row 3: re-check of **Prompting Claude Opus 5**
(platform.claude.com) against the shipped chapter
`plugins/playbooks/reference/model-adaptation/opus-5.md`.

Re-check result: the live page is byte-identical to the repo's
2026-07-25 capture (11,225 bytes, MD5 `8579d63f…` — confirmed
independently by producer and verifier), and every existing chapter
claim re-verified against it holds, including four precise source-line
citations and the truncated-effort-ladder claim. The Fable 5 launch
moved nothing on this page.

The re-check surfaced one gap byte-identity hid — **playbooks 0.6.11**:

- The guide's "Self-correction" section has two halves; the chapter
carried only the first (self-verify default → remove instructed
re-checks). The second — Opus 5 **narrates corrections to earlier
statements** more than prior models, undesirable in user-facing products
— was absent from the whole plugin. Shipped as `opus-5.md` §"Correction
narration: fix the slip, announce only what changes a decision", tagged
`[CC: direct]` (verified empirically: Claude Code's own rules state
update cadence, outcome-first ordering, and faithful outcome reporting,
but no correction-narration rule). Hard-fenced: suppression licensed
only where the correction changes nothing for the user; faithful
reporting explicitly outranks it — failed tests, skipped steps, results
already acted on, and false claims always get said.
- Sources block gains a scoped re-verification line (mirrors #1908's
`opus-4-8.md` treatment), stating its own limits.

Deliberately not shipped: an audit-instructions criteria row — zero
in-repo instructions request correction narration, and the audit lane
targets instructions to remove, not guidance to add in user-facing
products.

Positive finding kept visible: the chapter's recorded "Residual tension"
(upstream endorses writer-verifier patterns while advising removal of
verification instructions) remains unresolved upstream — byte-identity
means no reconciliation shipped, so that section and the audit rows
built on it correctly stay put.

## Test plan

- Docs-only (chapter prose, changelog, version bump); markdownlint
clean; skill-quality gate on fable-5 PASS 0 errors, warnings identical
to base.
- Producer-side fresh-context Fable verifier (rationale withheld, 8
binary criteria): 8/8 PASS.
- Second, orchestrator-commissioned Fable verifier post-rebase (6
criteria incl. its own live fetch + MD5, traceability to the page's
Self-correction text, adversarial fence-reading, `[CC: direct]`
empirical check, rebase content-loss diff via reflog): content 6/6 PASS;
its one defect (stale version-chain paragraph in the commit message)
fixed by message-only amend before push (tree hash unchanged:
`0e37455e…`).
- Rebased onto main after #1909; changelog stack asserted 0.6.11 >
0.6.10 > 0.6.9.

## Related

- No linked issue.
- Doc-alignment per-document loop, roster row 3. Predecessors: #1908
(row 1), #1909 (row 2).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…ard and withdraw an unresolvable citation (#1913)

## Summary

Doc-alignment roster row 4: **Claude Opus 5 System Card** (194-page PDF;
live CDN copy byte-identical to the archived capture, SHA-256
re-verified by producer and verifier independently).

**context-guard 0.4.5** — withdraws an unresolvable citation from the
reader contract: the token-shape rationale co-cited "Anthropic
system-card fixed-point evals" for degradation-tracks-absolute-tokens.
The card names no such eval and contains no long-context degradation
benchmark (normalized sweeps: fixed-point, MRCR, RULER, needle,
LongBench all zero; §8.9 ProgramBench is fresh-budget episodes with a
*rising* 83%→93% curve). Nuance preserved: the proposition is
unsupported from an unnamed card, not asserted false — other Anthropic
cards do publish long-context evals. No behavior change (the shape's
other rationales are independent; band values were always declared
judgment defaults). The contract keeps one standing line: cite a system
card by name and section or not at all.

**playbooks 0.6.12** — four card-grounded additions to `opus-5.md`, each
fenced:

- **Stated facts** (p.3, §6.5.1): more accurate than Opus 4.8 AND
hallucinating slightly more, with confident-unsure cases — a factual
specific with no tool call behind it is a recall claim. Fences the
Verification delta against the broad reading that would strip needed
lookups.
- **Destructive actions** (§6.6.1, worked case p.115, transcript 6.4.2.A
p.93): "Fabricated user consent" is a recurring category, and the
transcript shows a written scoping rule defeated in-text — so for
destructive/irreversible operations the remediation is a mechanism
(PreToolUse hook, `permissions.deny`), not a written rule; a subagent
return asserting approval is content, not authorization. Three fences:
similar-to-Opus-4.8, reckless-use-significantly-down,
pre-flagged-transcripts/earlier-snapshot (occurrence, not base rate).
- **Effort**: two pilot cohorts *reported* quality falling at the top of
the ladder (p.81–82) — kept explicitly report-not-finding with
Anthropic's own disclaimer inline.
- **Injection robustness**: quote boundary corrected ("…and browser
use"); auto-mode 0%-of-129 reframed as evidence about a configuration,
not the model, with the nonzero unsafeguarded rates (3.70%/4.30%
browser; 0.56%/0.41% coding; 0.54%/0.39% computer use) and the operator
action stated.
- Sources: re-read + hash line replaces "the system card has not been
re-read"; the deferred routing-lane trigger confirmed still unfired.

Deliberately not shipped, with reasons in the commit: condescension note
(too weak, conflicts with instruction-audit posture),
vulnerability-discovery scaffolding sweep (no stale refusal workarounds
found), per-worker-checkout orchestration seam (card-harness property,
and a card citation in a model-agnostic chapter violates the scoping
rule).

## Test plan

- Docs-only; markdownlint clean; changelog-parity `--check` /
`--check-bump` / `--check-order` all pass; zero lines over 100 chars.
- Producer fanned the card to 4 section subagents, then re-grepped every
shipped quote against the normalized PDF text itself.
- Orchestrator-commissioned fresh-context Fable verifier: scripted
quote-matcher over 29 fragments with a corrupted-quote control probe,
its own normalized sweeps for the withdrawal, framing-honesty and
fence-interaction checks — substance passed fully; its four defects (a
heading accidentally consumed by the diff, a reviewer misattribution, a
direction word, an example nit) fixed in the amended commit and ALL
re-verified PASS, including an independent PDF check that the retained
§6.2 pilot citation was genuinely correct.

## Related

- No linked issue.
- Doc-alignment loop, roster row 4. Predecessors: #1908 (row 1), #1909
(row 2), #1910 (row 3), #1911/#1912 (row-5 follow-ups).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…nd ship the IA-3 audit rows (#1914)

## Summary

Doc-alignment roster row 6: **Prompting Claude Sonnet 5** (live page
byte-identical to the archived capture, MD5 confirmed independently by
producer and verifier — this ships unshipped deltas, not drift
reaction).

**playbooks 0.6.13** — new model-adaptation chapter `sonnet-5.md` (233
lines, opus-5/opus-4-8 pattern: version-scoped counter-steers, `[CC:]`
tags, Sources block with capture provenance). Rationale for minting
where RA-3 once said don't: ADR-0007 has since settled where per-model
doctrine lives (closing RA-3's blocking premise), and the reader
guaranteed to get no chapter — a Sonnet worker dispatched at low effort
for mechanical prep, exactly where the guide places the under-thinking
risk — was the one most likely to need it. Cross-references updated both
halves (fable-5 meta-rule 3 gains the chapter; its no-chapter example
narrows to Haiku; opus-4-8's preamble decoupled to generic routing so
new chapters stop editing their predecessors).

**claude-config 0.21.3 / criteria 1.11.0** — the IA-3 cluster
dispositioned, all 11 candidates:

- Shipped: **I8-e** (forced status cadence, `Model scope: sonnet-5` —
deliberately scoped, not an unscoped I8-d promotion: the promotion gate
needs two model guides *stating* the claim, and the Fable 5 guide's
"Longer turns by default" prescribes timeout/streaming adjustments,
never cadence removal — verified negative stamped on the row; the two
rows state their no-co-fire relationship in their own words). **I17-c**
(a fixed thinking budget prescribed where adaptive reasoning silently
ignores or hard-rejects it — the finding is the missing
model-AND-release gate, never the mention; fenced off I17-a's `=0`
claim).
- Already shipped, no work: qualitative severity bars (I8-b already
cites this guide; `review`'s severity.md already carries decidable
per-tier tests citing it — closing RA-2 / IA-1(1b) / IA-3's severity row
as three IDs, one fix).
- Dropped with evidence (6): verbosity suppression (page says *tune*,
and designed succinctness surfaces exist), weak-tool-reach +
thinking-off nudges (0 instances; fires on designed surfaces),
unscoped-"apply" (not mechanically separable — the IA-2(d) failure mode
again), sampling parameters (a source-code lint neither audit skill
owns; zero instruction surfaces in-repo; deferred with trigger: first
consumer repo with a direct Messages API / Agent SDK call site),
coding-product addendum (guidance → chapter section), computer-use knob
(no surfaces).

## Test plan

- Docs-only; markdownlint (1,023 files) 0 errors; changelog parity
`--check`/`--check-bump`/`--check-order` pass;
`instruction-scan.test.sh` 46/46; `validate-plugins.sh` pass.
- Producer-side: independent fresh-context reviewer (rationale withheld)
— 19 findings all resolved, including defeating an unscoped I8-e
promotion and an overclaim on `MAX_THINKING_TOKENS` (now carries the
API-vs-third-party nuance, which model-config states verbatim).
Producer's first quote-checker was itself found broken and rebuilt;
final run 20/20.
- Orchestrator-commissioned Fable verifier: its own 30-span quote
extraction from the committed diff against five live pages (30/30), I8-e
gate check against the live Fable guide, I17-c grounded against live
env-vars, drop spot-checks, RA-2 closure confirmation, loss-free rebase
proof — 7/8 clean; its three changelog-granularity defects fixed and
re-verified PASS.
- Rebased onto main after #1913; version stacks asserted: playbooks
0.6.13 > 0.6.12 > 0.6.11; claude-config 0.21.3 > 0.21.2; criteria
1.11.0.

## Related

- No linked issue.
- Doc-alignment loop, roster row 6 — last model-page row of the priority
head. Predecessors: #1908 (row 1), #1909 (row 2), #1910 (row 3), #1913
(row 4), #1911/#1912 (row-5 follow-ups).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…odel facts (#1915)

## Summary

Doc-alignment roster row 8: **Models overview** — the docpage-digest
profile's canonical model-fact freshness source. First repo capture of
the page (29,119 bytes, MD5 recorded); systematic ten-dimension sweep of
every repo surface stating a fact this page owns.

Sweep verdict: the repo is clean — pointer-not-copy holds everywhere
except one surface. The single fix: `prompts/loops/loop-lane-prompts.md`
justified two lane assignments with bare, undated page-owned facts
(`opus` freshest-cutoff; `haiku` 200k/oldest-cutoff). Both were *true*;
the defect was discipline. The rationales now carry the sanctioned
dated-matrix shape already used by `docs/PLUGIN-PHILOSOPHY.md`'s tier
table: figures upstream-owned and not restated, a dated resolution
(2026-08-04), and a recheck trigger naming the derived-ordering failure
mode (either comparison can flip while every underlying figure stays
correct). Operational instructions unchanged.

Also verified in passing: the profile's canonical-freshness claim is
structurally true (current matrix + legacy accordion in one fetch);
#1911's three enqueue negatives re-confirmed against the live page; all
agent `model:` frontmatter still aliases; legacy placements and tier
orderings consistent repo-wide. Component opportunity (a stored
capture-and-diff freshness probe) declined: no upstream sync path for a
hand-copied materialization, a one-consumer count, and the lightweight
trigger shape already proved itself by producing #1912 — deferred with a
trigger recorded on the roster row.

## Test plan

- Single file, +11/−2, no plugin/changelog touched (parity script is
plugin-scoped — confirmed by reading it); markdownlint clean.
- Independent fresh-context Fable verifier: its own live fetch and
scripted ordering checks (both derived orderings true), three sweep
spot-checks (all holds), positional-wording check, `git merge-tree`
conflict-free against current main, decline-soundness and scope-call
review — **all PASS, empty defect list**.

## Related

- No linked issue.
- Doc-alignment loop, roster row 8. Predecessors: #1908#1914 (rows 1–6
+ row-5 follow-ups).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
… the tier ladder lacked (#1916)

## Summary

Doc-alignment roster row 9: **Choosing the right model** (live page
byte-identical to the archived slice — MD5 confirmed by producer and
verifier independently against both the capture and today's live page).

Row dispositions:

- **IA-6 (vet-delta triggers): closed, nothing owed here.** Its
mechanism half already shipped as criteria I21/I22 via the Q8 ownership
carve-out (I22 carries all four trigger shapes, the delta-not-re-run
discipline, and consumer-supplies-baseline); the instance half is
dotfiles-owned. The targeted delta check was run anyway against the
executed 2026-07-29 vet (issue #1697): no trigger fired.
- **DOC-40 (four-question second lens): not shipped, correctly still
routed to the dotfiles routing-doctrine seam** per its recorded
disposition.
- **OQ-6 (fast mode): deferral holds** — zero latency-first lanes exist,
and model-config now documents `/fast` refusing to toggle under an
allowlist that excludes the target, one more availability constraint on
a research preview.

**What ships (+15 lines, `docs/PLUGIN-PHILOSOPHY.md` only, no version
bump per this file's precedent):** an enterprise `availableModels`
dispatch-seam consequence the Model-tiers section lacked. Upstream
(model-config, quoted character-exact): the allowlist reaches
subagent/skill/command `model` frontmatter; a pin naming an excluded
model "falls back to the inherited or default model rather than failing
the request"; under `enforceAvailableModels` the Default remaps to the
first *allowed, available* allowlist entry, and that remap reaches "the
fallback used when an excluded selection is dropped". Consequence: a
blocked pin can silently land **below** the session tier — the section's
own invariant (consequential verdict at session tier or above) is not
self-enforcing under an allowlist, and no error is raised. The paragraph
states the failure mode, the operator action, and a non-vacuous recheck
trigger. This is a dispatch-seam consequence, not a second selection
checklist — DOC-40's declined shape.

## Test plan

- Single file, +15/−0; markdownlint clean; parity scripts green;
merge-tree clean vs current main.
- Producer ran a two-round adversarial loop before handoff: a fresh
Fable verifier falsified an advisor-recall claim (the paragraph's first
draft asserted the *opposite* direction) against the primary source, and
caught a vacuous recheck trigger; both fixed, then a second adversarial
pass returned SHIP with one precision fix (the "allowed, available"
qualifiers restored).
- Orchestrator-commissioned Fable verifier: live-page sentence fidelity
(three quotes character-exact, qualifiers present, anchor resolves),
step-by-step reconstruction of the invariant-breakage scenario including
the alias-resolution subtlety, IA-6 closure evidence (I21/I22 on main;
carve-out record; delta-check spot-checks), contested-call boundary (no
factor checklist restated), OQ-6 spot-checks, hygiene — **6/6 PASS,
empty defect list**.

## Related

- No linked issue.
- Doc-alignment loop, roster row 9. Predecessors: #1908#1915. Recorded
for later: playbooks:boris transcribes "fast mode 3× cheaper" (Opus
4.8-era third-party claim) while this page's era has it premium-priced —
third-party transcription, exempt from first-party staleness detection
by I22's own fence; noted on the roster row, not patched inside a vendor
mirror.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…orbids it (#1917)

## Summary

Doc-alignment roster row 11: **Thinking** (live page byte-identical to
the archived 917-line slice — MD5 confirmed by producer and verifier
independently).

Headline: the roster recorded IA-4's three harness rules as *unshipped*;
they were in fact already covered by the I17 family — and that stale
status was hiding a live defect inside the coverage. **criteria 1.12.0 /
claude-config 0.21.4**:

- **I17 base row amended** (the defect): the live thinking page states,
with no effort qualifier, that Fable 5 / Mythos 5 / Mythos Preview
reject `thinking: {type: "disabled"}` outright. The old row's
remediation offered "lower the effort to `high` or below" — a branch
that still 400s on that family — and its unscoped fence *excused* the
unconditional-reject case. Now two Detect arms with per-arm fences and
remediations; heading retitled to "…where the model forbids it"; the
second arm is API-form-only (on Fable 5 the harness surfaces are
documented silent no-ops and stay I17-a's; for the Mythos models the
harness pages state nothing, recorded as silence — no claim either
direction).
- **I17-b extended** to the thinking half of mid-session churn (the page
renders both dials into the prompt; switching modes or budgets starts a
new cache prefix), with a deliberate, honest carve-out: a Claude Code
surface prescribing a mid-session thinking toggle is *out of reach* —
neither excused nor flagged — because harness prompt-caching docs name
only model and effort as out-of-prompt cache-key settings and document a
confirm dialog for effort alone; a non-vacuous re-scope trigger is
recorded. Plus an I17-b/I17-c co-firing note in the house pattern.
- IA-4 rule 2 already fully covered by I17-a (untouched); IA-5's gate
(PA-AE) was answered 2026-08-02 — rules 1–3 shipped long since as I18,
rules 4–8 stay deferred on recorded grounds (no instruction surface to
run on; rule 8 is the same deferral row 6 recorded), nothing
zero-instance shipped.

## Test plan

- Docs-only; markdownlint 0 errors; changelog parity all three modes;
`instruction-scan.test.sh` 46/46; `conflict-scan.test.sh` 41/41;
manifest validation pass.
- Producer: scripted quote fidelity (9 quotes vs seven live sources,
plus a negative assertion that the over-broad phrasing is gone); its own
independent reviewer caught two gaps pre-handoff (I17-b/I17-c overlap
note; a reach ambiguity), both fixed.
- Orchestrator-commissioned Fable verifier: live fetches of the thinking
and harness prompt-caching pages, confirmation of the old row's double
defect (both readings wrong), per-arm scenario construction (including
the case the old row passed as compliant), carve-out honesty, coverage
spot-checks — **6/6 PASS**; its two minor defects (stale instance count;
Mythos over-generalization) fixed and re-checked, with the final
one-line residual (a changelog echo) fixed before push.

## Related

- No linked issue.
- Doc-alignment loop, roster row 11. Predecessors: #1908#1916.
Follow-up candidate recorded on the roster: opus-5.md's RA-8 clause is
silent on the API-form unconditional reject for the Fable family —
natural doctrine-side home for the second arm.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…d where none is (#1918)

## Summary

Doc-alignment roster row 12: **Steering thinking** (live page
byte-identical to the archived 947-line slice — MD5 confirmed by
producer and verifier independently).

**criteria 1.13.0 / claude-config 0.21.5** — new sub-row **I18-a**: *a
leading thinking block treated as required where the model does not
require one*. I18 covered only what a surface does to blocks it has; the
inverse belief — that a block must be there — had no row, and its
natural remediation (fabricate one) produces exactly I18's shape 1 (a
hand-built block has no valid signature), making I18-a the upstream
cause of an I18 violation. Three detect shapes, one per consequence the
page states: reinsertion when assembling history from mixed sources;
history rewriting on resume under a different thinking configuration;
logic reading an assistant turn's first block as a thinking block.

- Honest carve-out from upstream's own text: legacy manual-budget models
*do* enforce the leading block — the finding is the missing gate, never
the mention.
- Fence: the relaxation "is about validation, not about what you should
send" — never license to drop blocks.
- Reach held to I18's line: presence-assuming read-only logic is out of
reach (neither excused nor flagged), keyed to the still-unresolved
question of what Claude Code transcripts carry, with a re-scope trigger.
- Sourcing: the Steering page is decisive (states the relaxation
operatively with its three consequences); the Thinking page carries the
pair in compressed form in its tool-use section and is cited as
corroboration — with its server-side strip claim explicitly held apart
as a different claim.
- I18 base gains only a two-sentence lead-in and a "Base row:" label;
its detect, fences, source, and stamp are untouched.

Also verified in passing (roster corrections, not in this diff): the
row's "shipped only as far as context-economy" note was stale —
PLUGIN-PHILOSOPHY's Effort tiers already carries five of the slice's
candidates citing this page; and the repo's one transcript consumer
already selects blocks by their own `type`, correct by construction.

## Test plan

- Docs-only; markdownlint 0 errors; changelog parity all three modes;
`instruction-scan.test.sh` 46/46; scripted quote fidelity 14/14 against
both live pages with control probes.
- Producer's advisor overturned an over-reach in its first draft
(extending shape 3 to read-only surfaces — unsupported); the producer
also self-diagnosed the root cause of its one false claim (a `begin
with` grep that could never match `begins with` — the
absence-through-a-blind-channel trap).
- Orchestrator-commissioned Fable verifier: 5/6 first pass — caught the
false "only source" custody claim against its own live fetch of the
sibling page — plus an ambiguous antecedent; both fixed, rebase compose
verified to preserve #1917's Sources expansion, re-check ALL PASS.
- Rebased onto post-#1917 main; stacks asserted: [0.21.5] > [0.21.4] >
[0.21.3]; criteria 1.13.0.

## Related

- No linked issue.
- Doc-alignment loop, roster row 12. Predecessors: #1908#1917.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…e and I8-c its second source (#1919)

## Summary

Doc-alignment roster row 13: **Troubleshooting thinking** — the
per-model matrix page the calibration rule and the I17 family cite as
authority, previously cited-but-not-digested (no hash, no capture).
First byte-level baseline taken: 12,544 B, MD5 `dc994aa9…`, confirmed by
producer and verifier on independent fetches.

**playbooks 0.6.14** — `calibration.md`'s matrix citation gains the
custody its own re-check mandate requires: a capture stamp framed
forward-only (the prior citation had no hash, so no unchanged-since
claim is possible and none is made); the worked instance's two halves
now date separately (matrix re-read 2026-08-04 and unmoved;
introducing-page quote + registry reading remain 2026-08-03 snapshots);
the verified negative tightened to name the page's only other
availability sentence (the Claude 4 deprecations pointer) so it is
falsifiable on its own terms.

**claude-config 0.21.6 / criteria 1.14.0** — I8-c (don't-think
directives increase tag leakage) gains its second source: this
model-agnostic troubleshooting page states the same claim from the
symptom side and *still names only Claude Opus 5* — so the row's scope
is now positively confirmed narrow on the declined-widening reasoning
the catalog already uses (promotion gate deliberately unmet: the claim
is not stated unqualified). The row also gains the consequence it lacked
("A leaked tool call never runs, and in agentic loops the leaked text
stays in the conversation history…"), the condition ("most commonly on
tool-heavy workloads such as search"), one catalog-extension sentence
explicitly marked as the catalog's own, and a recheck trigger naming the
two stating sections (an absence has no page to watch). Sources
parenthetical updated.

All four pre-existing citations that rest on this page spot-verified
against the live table (Mythos row, adaptive-only models, reject values,
footnote 2's per-request enforcement) — nothing misstated. Deliberate
non-actions with evidence: no reverse-direction-400 row (no
instruction-text shape prescribes adaptive — it is the unspecified
default), max_tokens truncation owned by the errors pages,
display-defaults covered by I10 + context-economy. The page's
docpage-digest queue position stands (queue rationale re-verified,
strengthened by the page's own Next-steps transfer declaration).

## Test plan

- Docs-only; markdownlint 0 errors; changelog parity all three modes;
`instruction-scan.test.sh` 46/46; `conflict-scan.test.sh` 41/41;
scripted quote fidelity with control probes.
- Orchestrator-commissioned Fable verifier: independent fetches of the
troubleshooting page, the Opus 5 guide, and both errors pages (all
byte-identical to producer captures); promotion-gate reading verified
against the gate's own "stated unqualified" precedents; all three
contested calls adjudicated sound; custody framing checked forward-only
— **6/6 PASS, empty defect list**.
- Rebased onto post-#1918 main with a composed Sources block (both
#1918's Steering entry and this row's expanded Troubleshooting entry
preserved); stacks asserted: [0.21.6] > [0.21.5] > [0.21.4]; criteria
1.14.0.

## Related

- No linked issue.
- Doc-alignment loop, roster row 13. Predecessors: #1908#1918. Roster
observation recorded: row 99's errors-page mapping is incomplete — the
transfer target is two distinct pages (platform `api/errors`, 22,669 B;
harness `errors`, 152,674 B), both now captured.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…ive pages (#1920)

## Summary

Doc-alignment roster row 16: **Prompt caching (API)** — first captures
of both the API page (152,223 B) and its harness sibling (29,721 B),
with a hard surface-scoping discipline (API vs harness caching semantics
are different products' claims). Seven repo surfaces stating caching
facts swept; five verified clean and left alone (including boris's
$12.50/$1 figures — confirmed contextually right for subagent
orchestration, where the five-minute TTL governs); two carried real
defects:

**playbooks 0.6.15** — `orchestration.md`'s continue-an-oriented-worker
rationale claimed "accumulated context is a cache read". Wrong in the
chapter's own modal case: the harness page states subagents build their
own cache *and* use the five-minute TTL even on subscription, so a
worker resumed after a longer fan-out wave re-writes its whole context
at the five-minute cache-write rate ("1.25 times the base input tokens
price"), not a cache-read rate. The recommendation stands; the reason is
now the re-derivation saved (a replacement pays the same tokens plus the
rediscovery tool turns), with the TTL and pricing anchors cited.

**docs-hygiene 0.9.5** — `extract-ssot`'s anti-pattern #9 ("Cache
invalidation cascade") rested on a mechanism that is dead on the skill's
own declared surface: the harness page states mid-session edits of
always-loaded files keep the cache (the edit just doesn't apply), and
cross-session sharing keys on the git-status snapshot, which any commit
breaks. Rewritten in place as **"Always-loaded SSOT propagation lag"** —
corrections ship that live sessions don't see until
`/clear`/`/compact`/restart — with a scope fence for the API surface
(where prefix volatility genuinely costs an Agent SDK fleet), scoped to
*unscoped* rules files (path-scoped rules load lazily; pre-load edits
apply), and slot 9 preserved because #10#13 are cited by number in
eight places. The dead vocabulary survives only in the changelog, quoted
as removed.

Routed, not acted on: the owner's dotfiles CLAUDE.md caching claim
verified correct with one additive omission (fast mode is a third
cache-key element) — recorded for dotfiles routing; the API page's
explicit-default-effort no-invalidate row flagged as a future I17-b
enrichment parallel.

## Test plan

- Docs-only; markdownlint 0 errors; version/changelog parity both
plugins; scripted quote fidelity 11/11 against the captured pages.
- Orchestrator-commissioned Fable verifier: both live fetches (MD5s
exact), both correction logics reconstructed, the slot-9 citation count
independently verified, both contested calls upheld — substance PASS
with 1 real defect (a surviving dead-mechanism table row in the same
file) + 2 precision nits (cache-write rate; unscoped-rules scoping), all
three fixed and re-checked **ALL PASS** including an independent
dead-vocabulary sweep.

## Related

- No linked issue.
- Doc-alignment loop, roster row 16. Predecessors: #1908#1919.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…fleet acts on (#1922)

## Summary

Doc-alignment roster row 17: **How Claude Code uses prompt caching**
(the harness half of the caching pair; page unmoved vs row 16's capture
— MD5 re-confirmed three times). Most of the page was already
verified-in-use this session (I17-b's authority chain, row 16's sweep);
this row closed the residue.

**claude-ops 0.27.0** — the observability skill stored the cache half of
the cost signal but never surfaced it: `cc_metrics` has always split
token usage into input/output/cacheRead/cacheCreation, yet no report
section rendered it. Now shipped:

- A **Cache health** report section — deliberately its own OTEL-sourced
section rather than new columns on the ccusage-sourced Token/cost table,
fixing a grain mismatch *and* a provenance mismatch in one move
(per-model windowed data vs a session-scoped query; OTEL tokens vs
ccusage billing).
- A new per-model windowed query in `otel-queries.md`, **verified by
execution** against a live store (returns real per-model rows; the live
data even demonstrates the diagnostic — an inverted read/creation ratio
on short-session Haiku subagents). Deliberately hot-tier-only: the
cold-tier union was built, tested, and **fails** with an IO error on any
fresh install lacking cold parquet — the constraint is documented at the
point of use rather than shipping a query that breaks for most
consumers.
- The upstream reading ("a high read-to-creation ratio means caching is
working well…") in-fence as report copy; the **reported-never-graded**
rule outside the skeleton fence with only the non-derivable rationale
(upstream publishes direction, no threshold — a severity band here would
be an invented number cited as sourced).
- A Cache-health routing row distinguishable from the existing
historical-token row.

**`docs/PLUGIN-PHILOSOPHY.md`** (one line, no bump per precedent) — the
component-stances MCP-servers row gains its second adoption cost,
previously omitted: the only component type that can cost a consumer
their prompt cache — with the load-bearing deferred-tools qualifier (the
cache survives when the server's tools are deferred, the default on
supported models), conclusion-plus-pointer, no enumeration. The row's
Verified column deliberately not advanced (it dates the MCP link, which
was not re-verified; the new claim carries its own inline stamp).

Residue dispositions with evidence: 7 sections verified-this-session, 3
already satisfied in-repo, the rest declined on the
no-decision-turns-on-it test (provider table, TTL env-var enumeration,
worktree cache scope, tool-deny mid-session cost, compaction mechanics).
Recorded for the roster: the session-flow handoff "fork" naming
collision with the harness feature of the same name (skill defines its
term inline; nothing false).

## Test plan

- markdownlint 0 errors; changelog parity all three modes; manifest
presence; skill portability; check-changed-skills PASS.
- Producer-side independent reviewer (rationale withheld) found 2
blockers + 1 major on the first commit — a rendering directive inside
the report skeleton's fence, an unfillable-at-grain data path, an
overstated routing-gap claim — all fixed, with the fill-path fix going
beyond the reviewer's options after the producer found the underlying
provenance mismatch.
- Orchestrator-commissioned Fable verifier over the final state (which
no prior review had covered end-to-end): live page fetch, fence-boundary
check, **query extracted verbatim and executed read-only against the
live OTEL store**, cold-union failure reproduced first-hand, provenance
separation judged, philosophy-row accuracy and table integrity, claim
accuracy against origin/main — **7/7 PASS, empty defect list**.

## Related

- No linked issue.
- Doc-alignment loop, roster row 17. Predecessors: #1908#1920.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…ss accepts but declines to honor (#1923)

## Summary

Doc-alignment roster row 18 — the priority head's final row: **Model
configuration** (code.claude.com/docs/en/model-config), the corpus's
most-cited harness page, first formally captured here (82,975 B, MD5
`5c9e06c5…`) with a **semantic-stability proof**: normalized token
streams of the live page and the frozen 2026-07-31 snapshot are
identical (10,222 tokens each, control-probed) — retroactively
confirming seven earlier rows' model-config-dependent work ran against
an unchanged page.

**claude-config 0.21.7 / criteria 1.15.0**:

- The audit skill advertised settings auditing yet had zero coverage of
the model-configuration keys. New **category H (Model and effort
settings)** — four rows, each a value the harness accepts into a
settings file and then declines to honor: `effortLevel: max/ultracode`
(not accepted there), `fallbackModel` beyond three after dedup (with the
raw-`maxItems:3` schema test reported separately — the two tests
genuinely diverge, verified empirically), a specific entry disabling its
family wildcard (including the Mantle-ID and custom-model-option arms),
and `enforceAvailableModels` against an unset/empty list (rated
**error** per the skill's own enforcement-bypass rubric). Visibility
stated per row from the page's own text (row 3's substitution notice;
row 2's documented silence). Category H is wired into the skill's phase
flow: "Eight categories", a Category H section, and a MANDATORY Phase
3.3 live model-config fetch gating every H finding.
`settings.local.json` routed through the safe-read path.
- **criteria I17's carve-out justification corrected** (1.15.0): it
claimed the schema makes `effortLevel: max` "unreachable" in settings —
false (JSON Schema is advisory; the harness reads a violating file). The
directive is unchanged; the justification now states the true reason and
points at the sibling that owns the file-level check, making the two
halves of one plugin cohere.
- Loop-lane alias stamp refreshed in place (prescribed by that
convention's own no-drift rule; claim re-verified against today's
bytes). CLOSE-2 re-confirmed discharged. The roster's named component
(dotfiles pin audit) declined — machine-scope, not this repo's to own.

Recorded upstream: schemastore's `effortLevel` description omits Opus
5/Sonnet 5 from its effort-support list — stale against the live page;
their fix, flagged because this PR now cites that schema.

## Test plan

- markdownlint 0 errors; changelog parity all modes;
`instruction-scan.test.sh` 46/46; `conflict-scan.test.sh` 41/41;
scripted quote fidelity (6 literals exact, 3 near-miss control probes
absent); schema constraints script-verified including the
no-`uniqueItems` fact the divergence rests on.
- Two full independent passes converged: the producer's reviewer (found
the blocking category-letter collision that made the section
unreachable, plus 8 accuracy/coherence defects — all fixed) and an
orchestrator-commissioned Fable verifier (upstream fidelity, the
stability-proof reproduction, IA-10-boundary and quote-vs-cite
adjudications, then a delta re-verify of the fix round: **every item
PASS, empty defect list**, both its residual observations non-blocking).
- Producer self-caught one defect pre-review (a sorted dedup
misidentifying dead chain entries) and corrected one of its own premises
when tested (A–F never quote upstream; the quote call stands on the
consumer-repo ground instead, disclosed as a deliberate departure).

## Related

- No linked issue.
- Doc-alignment loop, roster row 18 — completes the 18-row priority
head. Predecessors: #1908#1920, #1922.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…and its fences (#1924)

## Summary

Doc-alignment roster row 241: **Choosing a Claude model and effort level
in Claude Code** (claude.com blog) — the post the owner's model-routing
lane and two main-tree surfaces cite for the model-vs-effort dial
discrimination. First custody baseline taken (article-body-only hash, so
site chrome can't fake drift). The roster's premise was corrected en
route: the post was *not* "digested nowhere" — planning's session-config
already carried a faithful two-knob digest; what it lacked was custody
and the post's own qualifiers.

**planning 0.27.3** — the "Two orthogonal knobs" section gains:

- Its citation, led by the strongest ground available: model-config's
own delegation sentence ("For guidance on which model and effort level
fit different kinds of work, see [the post] on the blog") — the
reference page points *at* the post; the narrowed negative is the
supporting ground: no reference page states the try-versus-know
**diagnostic** (choosing-a-model *orders* the levers — "Tuning effort is
often a better lever than switching models" — and the effort page pairs
effort against prompting; ordering a lever is not diagnosing which
failure you have).
- The post's **context-first prior step** neither knob had: on a wrong
answer, examine the provided context before touching a dial — sharpened
here because the step is this skill's own product (the Brief *is* the
context fix).
- Two missing fences: the discriminator is "a starting point, not a hard
rule" (the post's figure caption, disclosed as such), and raising effort
is sharpest below the model's default.
- The ambiguity signal: ambiguity the rounds could not retire argues up;
a Brief precise enough to execute from argues down.

Both pre-existing main-tree citations verified holding against the live
post. Owner-facing findings routed to the dotfiles ledger (not this
repo's to edit): the CLAUDE.md lane's dropped "clearly tried" (making
the two branches overlap), the Fable-reservation grounds contradiction,
the missing context-first step — with one earlier finding partially
withdrawn after the verifier surfaced the choosing-a-model source.

## Test plan

- Docs-only; markdownlint 0 errors; check-skill PASS identical to base;
scripted quote fidelity across four live sources (post, effort,
model-config, choosing-a-model) — after the producer caught and fixed
its own circular self-match, all spans verbatim with one disclosed
editorial elision.
- Independent fresh-context Fable verifier (rationale withheld, 8 binary
criteria incl. an adversarial test of the load-bearing negative): 7/8
PASS; its one FAIL (the negative stated too broadly) fixed with its
prescribed wording, the fix cross-verified verbatim against both live
pages before amending.

## Related

- No linked issue.
- Doc-alignment loop, roster row 241. Predecessors: #1908#1920, #1922,
#1923.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 4, 2026
…ance and the C9 presence check (#1925)

## Summary

Doc-alignment roster row 236 — **Building verification loops in Claude
Code with skills** (the DOC-37 row: the roster's densest
component-opportunity row, named in the campaign's completion criteria).
Live post verified unmoved on every load-bearing point (three converging
checks + a firecrawl body diff; minor additive drift only).

**Zero new skills were minted — deliberately.** The slice's own Target
typing makes two of the seven "skill candidates" rule rows and one a
doctrine chapter; three shipped as content on surfaces that already own
the shape, four deferred with a build-on-demand trigger (all four
zero-instance by grep; one already correctly served by the shipped
verification-surfaces table).

**playbooks 0.6.16** — new skill-authoring spoke
`reference/verification-loops-in-skills.md`:

- Three skill-creation routes ranked with the documented dependency-free
direct-ask first (the platform page's own "you don't need a 'writing
skills' skill" disclaimer), the skill-creator plugin second on
needs-no-install grounds — with creation *including its interview flow*
correctly credited as first-party documented (README + the plugin's own
SKILL.md "Interview and Research" phase).
- The **conditional bare-resolution rule**, stated accurately: a plugin
skill's bare name also resolves *unless another command claims it*
(skills.md's own sentence, v2.1.216+ noted); write the namespaced form
because it is unconditional — not because bare fails. This corrects an
inference the campaign's frozen EC-4 record had closed wrongly (its
cited evidence was about collision, not resolution; its live test was
never run) — **EC-4 should be treated as superseded**, and rows that
consumed its answer re-checked.
- The embed-debugging checklist leading with the documented diagnosis
(prominence/wording, then unfollowed references, tested on real work not
test scenarios), the blog's description-diagnosis as a clearly-marked
second hypothesis; the shadowing note with its true replace-not-extend
semantics (the blog omits shadowing entirely); the three senses of
"chaining" disambiguated.

**claude-memory 0.5.3 / criteria 1.4.0** — new criterion **C9**: project
CLAUDE.md build/test-command presence, FAIL-headed with branches per the
file's own convention, an explicit C7 boundary (C7 owns references; C9
owns commands; never double-report), sourced quotes added to
official-guidance.md so the update action can't orphan it — and a
**step-0 false-positive guard** the producer added against its own
citation: memory.md's table puts "Build commands" in the *auto-memory*
column, so commands reachable on any loaded surface route to C3
placement, not a C9 WARN, with the counter-evidence disclosed in the
Why. Eval 8 exercises all three regression-prone behaviors.

## Test plan

- check-changed-skills 2 skills 0 failed; markdownlint 0 errors;
changelog parity + order; manifests/catalog/contracts/portability all
pass; eval 8 schema-validated.
- Two full independent passes ran to convergence. The producer's
reviewer falsified **three successive coverage-negatives** ("bare
doesn't resolve", "blog alone", "stated by neither") — each corrected
against a wider primary-source fetch, and the lesson (phrase coverage
claims positively) applied across the artifact. The
orchestrator-commissioned Fable verifier independently fetched every
load-bearing source (including the upstream skill-creator SKILL.md to
adjudicate the final conflict), validated the no-skills-minted call
against the slice's own typing, and pinned the final SHA: **verified end
to end, no content defects**.

## Related

- No linked issue.
- Doc-alignment loop, roster row 236 (DOC-37). Predecessors:
#1908#1920, #1922#1924. Campaign record note: EC-4
(EMPIRICAL-CHECKS-RESULTS-2026-08-02) is superseded by this PR's
documented conditional-resolution rule; the frozen record stays frozen,
the supersession is recorded on the roster.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant