Skip to content

downgrade fuse reads self-belief and self-belief is exactly what a silent fallback corrupts — switch to the get_session machine reading, and extend the fuse to 代裁 (measured live 2026-08-20) #10300

Description

@qq9340100

Filed by the skills seat (session session_019T1sSZbQTnLhrK9HhNdNiB) from a live measurement the maintainer surfaced 2026-08-20 ~15:2xZ.

The measured failure

A triage-Routine fire was silently downgraded twice mid-run (transcript shows the harness banners: "Fable 5 is not available → This reply used Opus 5 1M" → "Opus 5 1M is not available → This reply used Opus 4.8 1M"). The session then reached the needs:contract-review sub-round and asserted, in its own words: "I'm running at claude-fable-5 (= CONTRACT_REVIEW_TIER, fuse passes)" — and proceeded toward reviewing contract cards at Opus 4.8. The maintainer interrupted it before any label was cleared.

Root cause: the 降档保险丝 (SKILL.md, needs:contract-review 复审链) says 「子轮开场自检当前模型」— but the self-check is an introspective reading, and introspection is precisely what a silent fallback corrupts: the fallback banners are rendered UI-side, the session's own context carries no authoritative signal, and the model "knows" only its configured identity, not its serving identity. A fuse that reads self-belief passes exactly when it must trip.

The authoritative reading exists — verified this session

get_session (claude-code-remote MCP, no args) returns external_metadata.last_served_model — the platform's own record of the model that served the latest turn. Verified live: this seat called it during the same incident window and got claude-fable-5 (matching reality); the reading is per-turn and survives mid-session fallback chains.

Scope — .claude/skills/pm-dispatch/SKILL.md (+ one platform-readings row)

  1. Rewrite the fuse's self-check as a machine reading: the contract-review sub-round opens with a get_session call; external_metadata.last_served_model ≠ CONTRACT_REVIEW_TIER ⇒ the sub-round is skipped whole, labels stay — same safe-park semantics as today, only the reading changes. Self-belief is named as forbidden input (「⛔ 自述档位不是读数」).
  2. Extend the same fuse to 代裁: the auto-adjudication confidence gate (置信门 ⑤ 「代裁分析跑在 claude-fable-5」) currently has NO fuse at all — a downgraded fire would silently adjudicate below the ruled tier. Same machine reading, same skip-and-park outcome (the card falls through to the maintainer path, which is always safe).
  3. references/platform-readings.md row (134/134, net-0 dedup): sessions cannot detect their own downgrade from context; fallback chains can drop two tiers silently; get_session.external_metadata.last_served_model is the authoritative serving-model reading (also the undercover-mode identity path); the session_context.model field is the CONFIGURED model and must not be used as the fuse input.

Constraints

  • Hard serial: SKILL.md is occupied by the in-flight tiering-revision PR (clause-① narrowing) — dispatch after it MERGES and write against the landed 模型分档/复审链 text; the two changes are adjacent in subject and must compose, not conflict.
  • platform-readings.md is free (its sanitizer-row PR merged). Ratchet ceilings: both files headroom 0 — equal dedup, no raises.
  • Governed: draft PR, review request os-zhuang, human merge. Protocol semantics ⇒ fable at dispatch (and if fable is itself unavailable at dispatch time, the quota exemption applies to the DEV run — the irony is noted — while the landed text will keep the REVIEW side machine-gated).

Interim caution (until this lands)

During fable-exhaustion windows, needs:contract-review clearances and 代裁 verdicts produced by Routine fires are suspect readings: verify the acting session's last_served_model (or its fire-time downgrade banners) before trusting them. Today's incident session cleared no label before interruption — nothing to re-review from it.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions