Uh oh!
There was an error while loading. Please reload this page.
docs(pm-dispatch): downgrade fuse reads the get_session machine reading, not self-belief; extend the fuse to auto-adjudication - #10363
Merged
Conversation
…ng, not self-belief; extend the fuse to auto-adjudication The contract-review sub-round's opening self-check becomes a mandatory get_session call reading external_metadata.last_served_model (self-asserted tier is named as forbidden input); the auto-adjudication confidence gate gains the same fuse with the same skip-and-park outcome. One measured row lands in platform-readings.md (net-0): sessions cannot detect their own silent downgrade from context; session_context.model is the CONFIGURED model and must not be the fuse input. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019T1sSZbQTnLhrK9HhNdNiB
This was referenced Aug 20, 2026
qq9340100
marked this pull request as ready for review
August 20, 2026 17:16
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#10300
Card-scope ruling (maintainer-surfaced live incident, 2026-08-20), implemented verbatim — three deltas, two files, net-0 lines on both:
1. Contract-review sub-round fuse becomes a machine reading (SKILL.md, review-chain clause)
The sub-round's opening self-check is now a mandatory
get_sessioncall (claude-code-remote MCP, no args) readingexternal_metadata.last_served_model; a reading unequal toCONTRACT_REVIEW_TIERskips the sub-round whole, labels stay. Safe-park semantics unchanged — only the reading source changes. The forbidden input is named in the clause: 「⛔ 自述档位不是读数」. Tier single-source is preserved: the clause compares against theCONTRACT_REVIEW_TIERconstant, no model name added.2. Same fuse for auto-adjudication (SKILL.md, confidence-gate item 5)
The 置信门 previously had no fuse at all — a silently downgraded fire would adjudicate below the ruled tier. It now takes the same machine reading before adjudicating; on mismatch the fire's adjudication is skipped whole and the card stays in the decision inbox on the maintainer path, which is always safe.
3. One measured row in platform-readings.md (exactly 134/134)
Sessions cannot detect their own downgrade from context: fallback banners render UI-side only (measured 2026-08-20 — a triage fire fell Fable to Opus 5 to Opus 4.8 silently and still self-asserted the review tier at the fuse).
get_session.external_metadata.last_served_modelis the authoritative serving-model reading;session_context.modelis the CONFIGURED model and must not be the fuse input. Paid net-0 by a real dedup: the quota-wall bullet's "the wall signal is the failure itself / note the reset time" sentence duplicated the main file's standing principle (「权威的墙信号是失败本身……把它记下来」) and was compressed to the fact-supplement that is unique to the table (the measured message shape).Premise independently re-verified this session: the claude-code-remote
get_sessiontool contract statessession_context.modelis the selected model andexternal_metadata.last_served_modelis the model that served the latest turn.Composes with the clause-① narrowing landed in PR 10311 (adjacent subject, untouched) and with the mutex third reading landed in PR 10208.
Verification (all at head
c83ae97, clean tree)Gate list re-derived from the actual diff via
node scripts/pm/dispatch-gates.mjs(no paths — merge-base derivation, 2 paths vs merge base 9a1ed7a): exactly the 7 dispatched families, no additions. All run locally, each verdict from the gate's own printed line, exit codes captured before any pipe:check:pm-skill-ratchet— SKILL.md 681 lines (ceiling 682, headroom 1 untouched); platform-readings.md 134 lines (ceiling 134, headroom 0, exact net-0)check:pm-skill-id-lint— 16 file(s) cleancheck:pm-governed-prose— 2 instruction surface(s) name all 5 registered governed surfacescheck:pm-governed-merges— self-test, 81 assertionscheck:skill-frame-sync— 4 copies structurally isomorphic across 3 files (frame untouched)check:doc-authoring— 380 files cleancheck:doc-formula-expressions— 22 record-scoped formula examples judged clean (deps built first:pnpm --filterclosure build under the shared verify lock)scripts/check-nul-bytes.mjs— OK, 6102 text files, no raw control bytesReverse verification on the ratchet gate, from the committed state: appended one probe line to platform-readings.md (mutation confirmed on disk — marker grep count 1, wc 135), gate went red with its own verdict line "135 lines; the ratchet ceiling is 134"; restored via
git checkoutfrom the branch (marker count 0, wc 134), gate green again. Expected direction observed: red on mutation.Governed surface (
.claude/**): draft, human merge only — never ready, never queued, never auto-merge. Review requested from os-zhuang. Tests-and-instructions-only change, publishes nothing:skip-changesetapplied.Generated by Claude Code