docs(philosophy): state the availableModels dispatch-seam consequence the tier ladder lacked - #1916
Conversation
…er cannot see
The Model tiers section states that agent frontmatter "binds a floor". An
enterprise `availableModels` allowlist is the case where that floor is not the
consuming fleet's to hold: the allowlist applies "everywhere a user can specify
a model", frontmatter pins included, and a pin naming an excluded family "falls
back to the inherited or default model rather than failing the request".
Which of those two branches applies is unresolved upstream, and the paragraph
says so rather than picking one. What is documented is enough to settle the
consequence: `enforceAvailableModels` resolves a Default falling outside the
list to the FIRST allowed, available allowlist entry, and that resolution
reaches "the fallback used when an excluded selection is dropped" — an ordering nothing ties to this ladder. A session explicitly on a
permitted `opus` with a lane pinned to an excluded family can therefore land on
whatever heads the allowlist, which may be Haiku.
So the section's own core invariant — a consequential verdict runs at the
session-model tier or above, never below — is not self-enforcing under an
allowlist, and neither is the cost ordering beneath it. The authoring
consequence is the sentence that earns the paragraph: a lane may not depend on
its pin in either direction, and a design whose correctness needs a tier needs a
mechanism that is not a frontmatter pin.
PROVENANCE, recorded because it is worth more to the next reader than a clean
body: this paragraph first asserted the opposite directional claim — that the
upward invariant was robust and only the downward economy broke. A fresh-context
verifier falsified it against the `enforceAvailableModels` enforced-Default path,
which was confirmed verbatim upstream before the correction was made. The
recheck trigger was rewritten in the same pass: its first form ("the allowlist's
reach extending past those surfaces") was already satisfied on the live page and
so fired vacuously, failing the observability bar in
docs/conventions/upstream-drift/README.md.
`availableModels` had zero occurrences repo-wide before this commit, against a
standing posture that treats team and enterprise scenarios as in scope by
default. Mechanics are not restated: borrowed sentences are quoted rather than
carried as this document's own prose, the allowlist's reach is cited by
upstream's own pointer-shaped summary rather than an enumeration that would
drift, and the paragraph carries the verification stamp plus observable recheck
trigger the upstream-drift convention requires.
Roster row 9 (Choosing the right model) dispositions, recorded here because
no other tracked file carries them:
- IA-6 (model-delta vet-delta triggers) is CLOSED with nothing owed in this
repository. Its mechanism half shipped as criteria I21/I22; its instance half
is explicitly dotfiles-owned. The targeted delta check it calls for was run
rather than skipped, and no trigger fired: choosing-a-model is byte-identical
to the 2026-07-29 capture (MD5 ec643f10c70fb551f3ed5097aaa70769, 7,568 B), and
every volatile figure re-verified live against the models overview.
- DOC-40 is NOT shipped and remains owed to the dotfiles routing seam, where its
recorded disposition routes it. This paragraph is a separate finding that
DOC-40's access-constraints member pointed at, shipped on its own merits. It
is a dispatch-seam failure mode, not a model-selection factor, and so is not
the second factor checklist that disposition declined.
Deliberately no criteria row: a check for undocumented allowlist behavior would
fire on every correctly authored repository, failing the same
fire-on-designed-surfaces test that stopped IA-2(d).
Co-authored-by: Claude Fable 5 <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 48s —— View job Reviewing PR #1916
SummarySingle-file, +15/−0 addition to the Fact-check against the live pageAll quoted fragments are character-exact against the current live page:
Correctness of the inferenceThe paragraph's central claim — a blocked frontmatter pin can resolve below the session tier with no error raised — is a sound inference from the source, not an overreach: the source itself leaves "inherited or default" unresolved for the override-fallback branch, and the PR text correctly flags that ambiguity ("unresolved upstream, and stated here as such") rather than picking a side unsupported by the primary source. Given that the The framing versus the declined DOC-40 shape (dispatch-seam consequence vs. a restated selection checklist) is honest — this paragraph states a failure mode and a recheck trigger, it doesn't reintroduce a factor list. Nits (non-blocking)
VerdictNo correctness, architecture, or maintainability issues found. Quotes verified character-exact against the live source, the inference is appropriately hedged where the upstream doc is itself ambiguous, and the recheck trigger is concrete (names the specific sentences to watch) rather than vacuous. No changes requested. |
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
…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>
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:
/fastrefusing to toggle under an allowlist that excludes the target, one more availability constraint on a research preview.What ships (+15 lines,
docs/PLUGIN-PHILOSOPHY.mdonly, no version bump per this file's precedent): an enterpriseavailableModelsdispatch-seam consequence the Model-tiers section lacked. Upstream (model-config, quoted character-exact): the allowlist reaches subagent/skill/commandmodelfrontmatter; a pin naming an excluded model "falls back to the inherited or default model rather than failing the request"; underenforceAvailableModelsthe 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
Related
🤖 Generated with Claude Code
https://claude.ai/code/session_019gaVX25Txd6GXdiu9HEH3X