Repository navigation
Model currency 2026-09-27: per-lane decision record, model-fallback guards, advisor template - #434
Closed
seathatflowsinourveins wants to merge 9 commits into
Closed
seathatflowsinourveins wants to merge 9 commits into
seathatflowsinourveins wants to merge 9 commits into
Conversation
seathatflowsinourveins
force-pushed
the
claude/w5-model-currency-20260927
branch
from
September 27, 2026 21:26
a127cc2 to
d5a6a7b
Compare
Collaborator
Author
|
Cross-family review (GPT-6 Astra, Of its seven checks, these passed:
The coordinator verified every finding against its primary source, and the single repair round (
Details are in the PR body under "Independent review". There is no second round, per the bounded review loop. |
seathatflowsinourveins
force-pushed
the
claude/w5-model-currency-20260927
branch
from
September 27, 2026 21:54
d5a6a7b to
89c6d9b
Compare
…he routes to an older model
Record the 2026-09-27 model-currency check the user asked for ("only the latest
SOTA models, even the latest ones released in the past weeks"): three Opus
research units (Claude, OpenAI/Codex with OmniRoute, open-weight workstation
models), one adversarial refuter each and one synthesis.
- Decision table per lane and role: current, latest available with release
date, action. No row switches; four hold behind upstream gates:
jina-reranker-v3.5 for qmd (stock llama.cpp rank-pooling, #26286 open),
Nemotron-3-Embed-1B for ai-memory (2.5.0 with #859), Sonnet 5.5 and Haiku
5.5 (announced, no model ID), and Opus 5.5 on OmniRoute (the gateway lists
no claude-opus-5-5, so Opus-role stages stay on native Claude Code).
- The committed-settings fallback guards, the template advisor and the
isolated-builder label are recorded with their evidence classes.
- llama.cpp: v0.5.0 is b11146 (commit 7fe450e1); the 2026-09-25 re-pin gate
(paired acceptance against a fresh b11057 baseline) has not run, so the
b11057 pin stays and the divergence and the qualification are recorded.
Sources (re-fetched 2026-09-27): platform.claude.com release notes, models
overview and model deprecations; anthropic.com/claude-opus-5-5;
code.claude.com settings-reference, model-config, advisor, env-vars and
settings; anthropics/claude-code CHANGELOG at 7779afb1 (tag v2.1.283);
developers.openai.com API changelog; registry.npmjs.org
@anthropic-ai/claude-code (latest 2.1.283); gh api for ggml-org/llama.cpp
tags b11057, b11146, v0.5.0 and releases/latest, akitaonrails/ai-memory
releases and #859, vllm-project/vllm and tobi/qmd releases; a read-only
GET /v1/models on the loopback gateway (582 IDs, 55 Claude, no opus-5-5).
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… settings .claude/settings.json and examples/claude-native/ultracode.settings.json now carry the template's two guards in the template's form: "switchModelsOnFlag": false and env CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK="1". The recipe's embedded copy of the portable file matches it. Before this, a session that loaded only this repository's files, or an adopter running claude --settings with the portable file, could re-run a flagged Opus 5.5 or Fable request on Opus 4.8 (cybersecurity) or Opus 5 (biology). This closes the "ultracode recipe alone" gap of docs/decisions/2026-09-25-model-fallback-guard.md. Sources (fetched 2026-09-27): - code.claude.com/docs/en/settings-reference#switchmodelsonflag: "Scope: Any file"; false pauses an interactive session and ends a -p request as an error. The env entry: "Scope: Any file"; project values apply after workspace trust or at -p startup; the documented project ignore list does not name either key. - code.claude.com/docs/en/model-config#automatic-model-fallback: the targets. - CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK is not found in env-vars, model-config, settings-reference or the CHANGELOG at anthropics/claude-code 7779afb1 (tag v2.1.283). Source review of the installed 2.1.283 client: jD() is !a.CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK&&!Ote(); the fallback handler runs only on jD() or a server-armed same-model silent retry (IAr returns the refusing model); orn() returns "subagent" before it reads switchModelsOnFlag; a's getters (Rhn) read process.env live; the project ignore set Qzn does not contain the variable. Not probed. Evidence: CommittedSettingsFallbackGuardTests failed at ec8a489 for both files (None != '1'); after the settings edit the recipe-copy test failed until the recipe matched; both pass now. node test-envelope.mjs 254/254 and node test-contract-mutations.mjs 74/74 before and after. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…assigned advisor The user's rule pairs the Opus 5.5 main model with Fable 5.1 as the native advisor for truly complex calls, and this host carries advisorModel "fable" in its user settings, but the adoption template had no advisorModel key, so a new host that applied it got no advisor. Sources (fetched 2026-09-27): - code.claude.com/docs/en/settings-reference#advisormodel: "Scope: Any file"; "fable", "opus", "sonnet" or a full model ID; unset leaves the advisor off; /advisor saves the pick to ~/.claude/settings.json, the file the template renders into. - code.claude.com/docs/en/advisor, "Choose an advisor model": an Opus 5.5 main model accepts "Fable, and Opus 5 or later" (the template's model is opus[1m]); Sonnet 5 accepts Fable; subagents inherit the advisor under the same pairing check (documented, not observed). Without Fable access or the usage-credits consent, requests go without the advisor and an interactive session shows a notification pointing to /model fable. - code.claude.com/docs/en/env-vars, "Features that need feature-flag fetching": the template sets none of the variables that turn fetching, and so the advisor, off, nor CLAUDE_CODE_DISABLE_ADVISOR_TOOL. apply_claude_settings.py merges scalars with the template winning, so a re-apply resets a host that chose opus or no advisor; the record says how such a host keeps its choice. Evidence: test_the_advisor_is_fable_and_accepted_for_the_main_model failed at ec8a489 (None != 'fable') and passes now. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ld-routing The lean-workflow-child-routing activation in catalogs/foundation/decisions.json still described isolated-builder as "Sonnet/max". All three copies of its definition (.claude/agents, adoption/agents/claude, examples/claude-native/agents) declare model: opus and effort: max since the 2026-09-27 harness-settings change (docs/decisions/2026-09-27-claude-harness-settings.md, item 1), and the token-e2e runner binds it to opus (Amendment 2, #413). This closes follow-up 5 of that record's independent verification. A new test, CheckedInAgentLabelTests, compares every "`agent` (Model/effort)" label in the foundation decisions with the agent's frontmatter, read with a regex so it needs no PyYAML. Evidence: the test failed at ec8a489 (('sonnet', 'max') != ('opus', 'max')) and passes now; tests.test_foundation_catalog and scripts/validate_foundation.py through test_checked_in_catalog_passes stay green. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… files Hot-file commit for the model-currency unit. manifests/evidence.json files[] now carries the current sha256 and byte count of each file this branch changes against origin/main (ec8a489), registered one by one with scripts/host_receipts.register_file: - .claude/settings.json - adoption/templates/claude.settings.template.json - catalogs/foundation/decisions.json - docs/decisions/2026-09-27-model-currency.md (new entry, sorted insert) - examples/claude-native/ultracode.settings.json - recipes/claude-native-ultracode.md - tests/test_foundation_catalog.py - tests/test_install_claude_profile.py No other entry changes (19 insertions, 14 deletions: two fields for each of seven updated files, five lines for the new one). manifests/stack.json is unchanged: the llama.cpp pin stays b11057, as the model-currency record explains. scripts/component_matrix.py --write (32 rows, 0 flip-rule violations) and scripts/new_host_grand_list.py --write (32 layers, 66 winners) regenerated their reports with no content change. Evidence: python3 scripts/validate.py exit 0 ({"components": 69, "hashed_files": 7347, "profiles": 4, "receipts": 159, "status": "passed"}; integrity and scope checks only). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…e, bin/vllm follow-up closed Review repair (one round): - The three 2026-09-26 llama.cpp host receipts carry independent_session reviews: agree for install-2 and use, needs_changes for the superseded first install receipt. The serving-switch receipt has no reviews field, and its limitations[4] "only self reviews" sentence predates them. The b11057 pin stands: the paired acceptance against a fresh b11057 baseline is the remaining gate (eval_arm.py pins every li26 arm to b11146). - Alternative 4: the Claude Code 2.1.283 deniedModels setting, not adopted because it is managed-only; the guards' Overturn now names it. - The workstation refresh record's bin/vllm follow-up is closed on this host, from the coordinator's host observation (one dated line). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…the repository The coordinator's host observation has no receipt in this repository (no evidence file changed between ec8a489 and origin/main); the row no longer implies that none exists anywhere. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ander, li26 scope, coordinator effort) The cross-family review found five defects, each verified against source: - qmd 2.8.3 formats Qwen3-Embedding as well as EmbeddingGemma (src/llm.ts L86-119) and takes other models through QMD_EMBED_MODEL (L281-282, L303-304); the embedding row no longer says a 2026 embedder needs a qmd change, and cites the Gemma releases page for the 2025-09-04 date. - tobil/qmd-query-expansion-0.6B-gguf (2026-04-24, edddacb0) is newer than the 1.7B default (L285) and loadable through QMD_GENERATE_MODEL (L307-308); it is listed as an evaluation candidate, not a switch. - The llama.cpp row limits its claim to li26's arms and proxy workload. - The main-session row gives the coordinator's xhigh (template effortLevel and modelSettings) and max for agents and workflow children. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
force-pushed
the
claude/w5-model-currency-20260927
branch
from
September 27, 2026 22:17
89c6d9b to
17d3d8f
Compare
This was referenced Sep 28, 2026
Collaborator
Author
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 29, 2026
…addendum (fallback guards, template advisor, catalog label) (#470) * Model currency record: every routed model current; holds, gates and the routes to an older model Record the 2026-09-27 model-currency check the user asked for ("only the latest SOTA models, even the latest ones released in the past weeks"): three Opus research units (Claude, OpenAI/Codex with OmniRoute, open-weight workstation models), one adversarial refuter each and one synthesis. - Decision table per lane and role: current, latest available with release date, action. No row switches; four hold behind upstream gates: jina-reranker-v3.5 for qmd (stock llama.cpp rank-pooling, #26286 open), Nemotron-3-Embed-1B for ai-memory (2.5.0 with #859), Sonnet 5.5 and Haiku 5.5 (announced, no model ID), and Opus 5.5 on OmniRoute (the gateway lists no claude-opus-5-5, so Opus-role stages stay on native Claude Code). - The committed-settings fallback guards, the template advisor and the isolated-builder label are recorded with their evidence classes. - llama.cpp: v0.5.0 is b11146 (commit 7fe450e1); the 2026-09-25 re-pin gate (paired acceptance against a fresh b11057 baseline) has not run, so the b11057 pin stays and the divergence and the qualification are recorded. Sources (re-fetched 2026-09-27): platform.claude.com release notes, models overview and model deprecations; anthropic.com/claude-opus-5-5; code.claude.com settings-reference, model-config, advisor, env-vars and settings; anthropics/claude-code CHANGELOG at 7779afb1 (tag v2.1.283); developers.openai.com API changelog; registry.npmjs.org @anthropic-ai/claude-code (latest 2.1.283); gh api for ggml-org/llama.cpp tags b11057, b11146, v0.5.0 and releases/latest, akitaonrails/ai-memory releases and #859, vllm-project/vllm and tobi/qmd releases; a read-only GET /v1/models on the loopback gateway (582 IDs, 55 Claude, no opus-5-5). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Model-fallback guards in the committed project and portable Ultracode settings .claude/settings.json and examples/claude-native/ultracode.settings.json now carry the template's two guards in the template's form: "switchModelsOnFlag": false and env CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK="1". The recipe's embedded copy of the portable file matches it. Before this, a session that loaded only this repository's files, or an adopter running claude --settings with the portable file, could re-run a flagged Opus 5.5 or Fable request on Opus 4.8 (cybersecurity) or Opus 5 (biology). This closes the "ultracode recipe alone" gap of docs/decisions/2026-09-25-model-fallback-guard.md. Sources (fetched 2026-09-27): - code.claude.com/docs/en/settings-reference#switchmodelsonflag: "Scope: Any file"; false pauses an interactive session and ends a -p request as an error. The env entry: "Scope: Any file"; project values apply after workspace trust or at -p startup; the documented project ignore list does not name either key. - code.claude.com/docs/en/model-config#automatic-model-fallback: the targets. - CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK is not found in env-vars, model-config, settings-reference or the CHANGELOG at anthropics/claude-code 7779afb1 (tag v2.1.283). Source review of the installed 2.1.283 client: jD() is !a.CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK&&!Ote(); the fallback handler runs only on jD() or a server-armed same-model silent retry (IAr returns the refusing model); orn() returns "subagent" before it reads switchModelsOnFlag; a's getters (Rhn) read process.env live; the project ignore set Qzn does not contain the variable. Not probed. Evidence: CommittedSettingsFallbackGuardTests failed at ec8a489 for both files (None != '1'); after the settings edit the recipe-copy test failed until the recipe matched; both pass now. node test-envelope.mjs 254/254 and node test-contract-mutations.mjs 74/74 before and after. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Claude profile template: advisorModel "fable" so a new host gets the assigned advisor The user's rule pairs the Opus 5.5 main model with Fable 5.1 as the native advisor for truly complex calls, and this host carries advisorModel "fable" in its user settings, but the adoption template had no advisorModel key, so a new host that applied it got no advisor. Sources (fetched 2026-09-27): - code.claude.com/docs/en/settings-reference#advisormodel: "Scope: Any file"; "fable", "opus", "sonnet" or a full model ID; unset leaves the advisor off; /advisor saves the pick to ~/.claude/settings.json, the file the template renders into. - code.claude.com/docs/en/advisor, "Choose an advisor model": an Opus 5.5 main model accepts "Fable, and Opus 5 or later" (the template's model is opus[1m]); Sonnet 5 accepts Fable; subagents inherit the advisor under the same pairing check (documented, not observed). Without Fable access or the usage-credits consent, requests go without the advisor and an interactive session shows a notification pointing to /model fable. - code.claude.com/docs/en/env-vars, "Features that need feature-flag fetching": the template sets none of the variables that turn fetching, and so the advisor, off, nor CLAUDE_CODE_DISABLE_ADVISOR_TOOL. apply_claude_settings.py merges scalars with the template winning, so a re-apply resets a host that chose opus or no advisor; the record says how such a host keeps its choice. Evidence: test_the_advisor_is_fable_and_accepted_for_the_main_model failed at ec8a489 (None != 'fable') and passes now. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Foundation catalog: isolated-builder is Opus/max in lean-workflow-child-routing The lean-workflow-child-routing activation in catalogs/foundation/decisions.json still described isolated-builder as "Sonnet/max". All three copies of its definition (.claude/agents, adoption/agents/claude, examples/claude-native/agents) declare model: opus and effort: max since the 2026-09-27 harness-settings change (docs/decisions/2026-09-27-claude-harness-settings.md, item 1), and the token-e2e runner binds it to opus (Amendment 2, #413). This closes follow-up 5 of that record's independent verification. A new test, CheckedInAgentLabelTests, compares every "`agent` (Model/effort)" label in the foundation decisions with the agent's frontmatter, read with a regex so it needs no PyYAML. Evidence: the test failed at ec8a489 (('sonnet', 'max') != ('opus', 'max')) and passes now; tests.test_foundation_catalog and scripts/validate_foundation.py through test_checked_in_catalog_passes stay green. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Model currency record: receipt review status, deniedModels alternative, bin/vllm follow-up closed Review repair (one round): - The three 2026-09-26 llama.cpp host receipts carry independent_session reviews: agree for install-2 and use, needs_changes for the superseded first install receipt. The serving-switch receipt has no reviews field, and its limitations[4] "only self reviews" sentence predates them. The b11057 pin stands: the paired acceptance against a fresh b11057 baseline is the remaining gate (eval_arm.py pins every li26 arm to b11146). - Alternative 4: the Claude Code 2.1.283 deniedModels setting, not adopted because it is managed-only; the guards' Overturn now names it. - The workstation refresh record's bin/vllm follow-up is closed on this host, from the coordinator's host observation (one dated line). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Model currency record: the bin/vllm evidence row names no receipt in the repository The coordinator's host observation has no receipt in this repository (no evidence file changed between ec8a489 and origin/main); the row no longer implies that none exists anywhere. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Model currency record: GPT-6 review repairs (qmd formats and 0.6B expander, li26 scope, coordinator effort) The cross-family review found five defects, each verified against source: - qmd 2.8.3 formats Qwen3-Embedding as well as EmbeddingGemma (src/llm.ts L86-119) and takes other models through QMD_EMBED_MODEL (L281-282, L303-304); the embedding row no longer says a 2026 embedder needs a qmd change, and cites the Gemma releases page for the 2025-09-04 date. - tobil/qmd-query-expansion-0.6B-gguf (2026-04-24, edddacb0) is newer than the 1.7B default (L285) and loadable through QMD_GENERATE_MODEL (L307-308); it is listed as an evaluation candidate, not a switch. - The llama.cpp row limits its claim to li26's arms and proxy workload. - The main-session row gives the coordinator's xhigh (template effortLevel and modelSettings) and max for agents and workflow children. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Model currency record: 2026-09-28 addendum (Sonnet 5.5 launch, alias measured, fallback map) Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Model currency record: repair round for the 2026-09-28 cross-family review (guard scope, Vals fallback counts, alias observation scope, lifecycle scope, advisor test) Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Model currency record: apply the re-check findings (workflow-stage observation dropped, project-file reach, Vals page dates) Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Hot files: evidence registration for the model-currency branch Co-Authored-By: Claude Sonnet 5.5 <[email protected]> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Collaborator
Author
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 free
to 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.
Summary
Records the 2026-09-27 model-currency check the user asked for ("only the latest SOTA models, even the latest ones
released in the past weeks") and closes three routes by which work could run on an older model or lose its advisor.
docs/decisions/2026-09-27-model-currency.md: one decision table per lane and role. Every routed model is thenewest in its family on 2026-09-27, so no row switches. Four rows hold a newer model behind an upstream gate:
jina-reranker-v3.5 for qmd, Nemotron-3-Embed-1B for ai-memory, Claude Sonnet 5.5 and Haiku 5.5 (announced, no model
ID), and Opus 5.5 on OmniRoute (the gateway lists no
claude-opus-5-5, so Opus-role stages stay on native ClaudeCode).
.claude/settings.jsonandexamples/claude-native/ultracode.settings.json, plus the recipe'sembedded copy, now carry
"switchModelsOnFlag": falseandenv.CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK = "1", thetemplate's two guards. Before this, a session that loaded only this repository's files, or an adopter who ran
claude --settingswith the portable file, could re-run a flagged Opus 5.5 or Fable request on Opus 4.8 or Opus 5.adoption/templates/claude.settings.template.jsonsets"advisorModel": "fable", so a new host thatapplies the template gets the Fable 5.1 advisor the user's rule assigns.
isolated-builderlabel inlean-workflow-child-routingchanges from "Sonnet/max" to "Opus/max",matching all three agent definitions.
v0.5.0is b11146 (commit7fe450e1), but the paired acceptance of the2026-09-25 re-pin gate has not run. The record notes the divergence, the review status of the 2026-09-26 receipts
and that acceptance as the one gate still open.
bin/vllmfollow-up on this host, from the coordinator'shost observation.
Scope
bfdc99cb(origin/mainat the last replay, after #381 PR-A: token-adoption measurement kernel (M3/M4/M5, RTK eligibility, MCP attempt states) #432). The branch was cut fromec8a48927c5d2536a57884f7f163c2d13770e7e2, the commit that the failing-first runs below name.lane:foundation. Every changed path is foundation-owned (docs/lanes.md). The only shared hot file,manifests/evidence.json, changes by hash registration alone, which "does not by itself make a PR shared"..claude/settings.json,adoption/templates/claude.settings.template.json,catalogs/foundation/decisions.json,docs/decisions/2026-09-25-workstation-sota-refresh.md(one dated line),docs/decisions/2026-09-27-model-currency.md(new),examples/claude-native/ultracode.settings.json,recipes/claude-native-ultracode.md,tests/test_foundation_catalog.py,tests/test_install_claude_profile.py,and
manifests/evidence.json(hot-file commit only).Changes
Current shas, after the replay onto
bfdc99cb, oldest first:f21012c2Model currency record: the method (three Opus research units, one adversarial refuter each and onesynthesis), the decision table, the holds and their gates, the fallback guards, the advisor, the
isolated-builderlabel, the llama.cpp divergence, evidence classes, alternatives, overturn conditions, unresolved items and
limitations.
94d5c607Fallback guards in the committed project and portable Ultracode settings, and in the recipe's embeddedcopy and prose. New
CommittedSettingsFallbackGuardTests: both files carry the template's value and form, and therecipe embeds the portable file without
$schema.0f219fc5"advisorModel": "fable"in the Claude profile template. Newtest_the_advisor_is_fable_and_accepted_for_the_main_model: the value isfable, the main model is Opus (thepairing table accepts Fable for it), and the template sets none of the variables that turn off feature-flag fetching
or the advisor.
cda311e5Foundation catalog labelisolated-builder(Opus/max). NewCheckedInAgentLabelTests: every"
agent(Model/effort)" label in the foundation decisions must match that agent's frontmatter. The test reads thefrontmatter with a regex, so it does not need PyYAML.
c5af2cc8Hot-file commit:scripts/host_receipts.register_filefor the eight changed files only (19 insertionsand 14 deletions: two fields for each of seven updated entries and five lines for the new one).
component_matrix.py --writeandnew_host_grand_list.py --writeproduced no content change.manifests/stack.jsonis unchanged.28a4b0b9and302fe71dReview repair (one round). The record states the review status of the 2026-09-26 llama.cpp receipts:independent
agreefor the current install and use receipts,needs_changesfor the superseded first installreceipt, and a stale "only self reviews" sentence in the serving-switch receipt. It keeps the paired acceptance as
the one re-pin gate. It adds
deniedModelsas alternative 4, names it in the guards' Overturn, and closes thebin/vllmfollow-up, in the record and with one dated line in the workstation refresh record.302fe71dnarrowsthe record's
bin/vllmevidence row to "no receipt in the repository". Neither commit touchesmanifests/evidence.json; the two edited records need re-registration.152548f6GPT-6 review repair (one round; see Independent review). The embedding row now says qmd 2.8.3formats Qwen3-Embedding as well as EmbeddingGemma and loads other models through
QMD_EMBED_MODEL, and itcites the Gemma releases page for the 2025-09-04 date. The query-expansion row lists
tobil/qmd-query-expansion-0.6B-gguf(2026-04-24) as a candidate for evaluation, not a switch. The llama.cpp rowlimits its claim to li26's arms and proxy workload. The main-session row gives the coordinator's
xhigh.17d3d8fcre-registers the record in the hot-file commit, which stays last.Evidence
source_reviewsource_review(platform record)dist-tags.latest= 2.1.283 (published 2026-09-25T18:46:11Z); the newest CHANGELOG heading at7779afb1local_integration(read-only native call)GET /v1/modelson the loopback gateway, 2026-09-27: 582 IDs, 55 of them Claude, none withopus-5-5source_reviewjD,orn,IAr,Rhn,Qzn); not probedsynthetic(structural test, failing first)CommittedSettingsFallbackGuardTestssynthetic(structural test, failing first)test_the_advisor_is_fable_and_accepted_for_the_main_modelsynthetic(structural test, failing first)CheckedInAgentLabelTestssource_review(platform record)gh apigit/ref/tags/b11057,b11146,v0.5.0,git/tags/c13fcbf6andreleases/latest, 2026-09-27source_review(repository records)reviewsandlimitationsfields of the three host receipts underevidence/hosts/nativestack-5975wx-20260925/and ofevidence/receipts/local-inference-c2-serving-switch-20260926.json; theorigin/maintree andmanifests/stack.json, read 2026-09-27 (the record names the commit)deniedModels(2.1.283) is managed-only; that denying the older Opus IDs would stop the fallback to them without disabling theopuswildcard is an inferencesource_review(not probed)7779afb1, lines 6-7; settings reference,deniedModels; model-config lines 350, 353, 364 and 517 (Markdown source, fetched 2026-09-27)bin/vllmlink points at the 0.30.0 prefixlocal_integration(the coordinator's host observation; no receipt in the repository)No native run backs the guard or advisor changes. No request was flagged on purpose, because deliberately tripping a
safety classifier is not an acceptable test, and no session was started with the changed files.
The table uses this template's four classes. The committed record names the same evidence in its own terms: its
structural_validationrows are thesyntheticrows here, its "independent observation (platform record)" rows arethe
source_review(platform record) rows, its "native operation (read-only)" gateway call is the firstlocal_integrationrow, and its "the coordinator's host observation (no receipt in the repository)" row is thebin/vllmrow. Both describe the same claims.Local commands run (unit outputs are kept in the unit's notes). The four new tests are
tests.test_install_claude_profile.CommittedSettingsFallbackGuardTests,tests.test_install_claude_profile.ProfileTemplateSettingsTests.test_the_advisor_is_fable_and_accepted_for_the_main_modeland
tests.test_foundation_catalog.CheckedInAgentLabelTests.Both full-suite failures come from the worktree's location under
/tmp: the unit's worktree sits there. Neithertouches a changed path, and both fail the same way at the base commit, so they are not regressions.
Repair round, at
b7dfe498(the same results at56426d69), withTMPDIR=/var/tmp/claude-models-repair:Replay onto
e82e6be7, ata127cc2c(hot-file protocol,docs/lanes.md):After the GPT-6 repair, at
d5a6a7b2(still one82e6be7; the diff from the reviewed heada127cc2cis therecord and its
manifests/evidence.jsonentry):Replayed again onto
55fc8d17(#433 merged) as89c6d9b3(d5a6a7b2and80694cf4before the replay): contentlines identical, 9 files re-registered,
scripts/validate.pyFAILS=0. Replayed ontobfdc99cb(#432 merged) as17d3d8fc: content lines identical, 9 files re-registered, FAILS=0.Those four lines report the two edited records' stale registrations in
manifests/evidence.json; the hot-file commitre-registers both.
SOTA sources
Every change follows these primary sources (fetched or re-checked 2026-09-27):
switchModelsOnFlag("Scope: Any file";falsepauses an interactive session and ends a-prequest as an error) and theenventry ("Scope: Any file";project values apply after workspace trust or at
-pstartup; the ignore list does not name either key).Model configuration, automatic model fallback
gives the fallback targets: Opus 5 for biology, Opus 4.8 for cybersecurity. Settings precedence.
The template form follows
adoption/templates/claude.settings.template.jsonanddocs/decisions/2026-09-25-model-fallback-guard.mdatec8a4892.settings reference and anthropics/claude-code
CHANGELOG.mdat7779afb12e3635f46f56ec823979d68350ae000b(tag
v2.1.283). Its behaviour comes from a source review of the installed npm@anthropic-ai/[email protected]client (
jD,orn,IAr,Rhn,Qzn).deniedModels(alternative 4, not adopted): the sameCHANGELOG.mdat7779afb1, lines 6-7 under## 2.1.283(
availableModelsMatch, and a "deniedModelsmanaged setting to block specific models, even whenavailableModelsallows them"); the settings reference,
deniedModels(the summary row and the entrygive "Scope: Managed", and the key is ignored "in user, project, and local settings and in
--settings, with awarning";
"claude-opus-5"also blocks Opus 5.5 and"claude-opus-5-0"blocks Opus 5 alone);model-config, "Block specific models or versions"
lines 350, 353 and 364, and
"Automatic model fallback" line 517 (line
numbers in the page's Markdown source, fetched 2026-09-27).
advisorModel("Scope: Any file"); Advisor, "Choose an advisor model" (an Opus 5.5 main
model accepts Fable, and without access or consent requests go without the advisor); env-vars, "Features that need
feature-flag fetching".
model:andeffort:frontmatter ofisolated-builderin.claude/agents/,adoption/agents/claude/andexamples/claude-native/agents/atec8a4892, anddocs/decisions/2026-09-27-claude-harness-settings.mditem 1.models overview,
model deprecations,
Claude Opus 5.5 announcement,
npm registry
@anthropic-ai/claude-code(latest 2.1.283),OpenAI API changelog,
openai/codex
rust-v0.157.1codex-rs/models-manager/models.json#L4,tobi/qmd
v2.8.3src/llm.ts#L86-L119,vLLM releases (
v0.30.0),akitaonrails/ai-memory releases (
v2.4.1) and#859,
ggml-org/llama.cpp#26286, and the model cards
nvidia/Nemotron-3-Embed-1B-BF16atc0c9fea9,jinaai/jina-reranker-v3.5-GGUFat884f7c67and
Qwen/Qwen3.8-27Bat1d4bf0f2, withembeddings-benchmark/results at
e0c9e75e.b11057(59657a613ab0fa4ab327d6c790123dff30bfbd67),b11146(
7fe450e19305b828c199d602c23a8337aaa1f03b) andv0.5.0(annotatedc13fcbf684171d5e0bca3fc5c34be6a99174b05f,which points to
7fe450e1), read through the GitHub API. The re-pin gate is the paired acceptance indocs/decisions/2026-09-25-workstation-sota-refresh.md, "llama.cpp b11146 (v0.5.0)". The review status comes fromthe
reviewsandlimitationsfields of the three 2026-09-26 host receipts and ofevidence/receipts/local-inference-c2-serving-switch-20260926.json, and the li26 runtime binding fromblueprints/convergence-practice/local-inference-latest-20260926/eval_arm.pylines 114-116.bin/vllmupdate: the coordinator's host observation of 2026-09-27 (repointed at 19:21:18Z).Decision record
docs/decisions/2026-09-27-model-currency.md: evidence classes, eight alternatives, overturn conditions and unresolveditems.
Independent review
One independent evidence review returned
repair. Its medium finding: the record said the 2026-09-26 llama.cppreceipts carry only self reviews, but three carry
independent_sessionreviews. Its low finding: the 2.1.283deniedModelssetting was missing from the alternatives. The single repair round the bounded review loop allows(
56426d69andb7dfe498) fixed both, re-weighed the llama.cpp decision on the corrected review status (unchanged: the pairedacceptance remains the gate) and closed the
bin/vllmfollow-up from the coordinator's host observation.A cross-family review followed. GPT-6 Astra at
maxran through the packaged landscape-sweepcodex_call.shlane, read-only, with live web search, at
a127cc2c. Its seven checks included recomputing all ten files'hashes and sizes, the Claude and GPT-6 release dates and IDs, the six-task RTEB(Code) means at
e0c9e75e, the2.1.283 guard behaviour, and read-only mutation checks of the two guard assertions. It returned
repairwith fivefindings. The coordinator verified each against the primary source before editing:
qmd-query-expansion-0.6B-ggufcreated 2026-04-24 (edddacb0), the 1.7B 2026-01-25 (7816de0b); qmdv2.8.3src/llm.tsL285 (1.7B default), L307-308 (QMD_GENERATE_MODEL)src/llm.tsL86-119 (Qwen3-Embedding and EmbeddingGemma formats), L281-282 and L303-304 (QMD_EMBED_MODEL)effortLevelxhigh,modelSettings.claude-opus-5-5.effortLevelxhigh,ultracodetruexhigh; agents and workflow children atmaxPer the bounded review loop, there is no second review round. GPT-6's residuals: it ran no test suite, live
session, model load or GPU acceptance. The full settings-reference page exceeded its web tool. Some pinned
Hugging Face cards were intermittently unreachable. It did not observe the gateway inventory or the
vllmsymlink.Residuals
CLAUDE_CODE_DISABLE_REFUSAL_FALLBACKis undocumented. Its effect on subagents and workflow children rests on asource review of the 2.1.283 client and was not probed, so a client update can drop it silently. The recipe says to
re-check it after each update, but no automated watch exists yet. The documented
deniedModels(2.1.283) works onlyfrom managed settings, which this repository does not write; adopting managed settings would make it the preferred
guard (record, alternative 4 and Overturn).
-perror, in the main threadand in every child, instead of an answer from Opus 4.8 or Opus 5. Coordinators check the child's transcript for a
refusal before retrying. A contributor who wants the automatic switch opts out in
.claude/settings.local.json.advisorModel, but that was not observed, and the resolved advisor IDhas not been seen in a transcript.
apply_claude_settings.pylets the template win for scalars, so re-applying the template resetsa host that chose
opusor no advisor. The record explains how such a host keeps its choice.test-envelope.mjswould change the portable contract, itsSHA256SUMSandevery adopter's vendored copy. The Python tests cover this repository's files.
v0.5.0) still needs the paired acceptance of the 2026-09-25 gate against a freshb11057 baseline in an owned window; that is the remaining gate. The 2026-09-26 host receipts already carry
independent reviews (
agreefor the current install and use receipts,needs_changesfor the superseded firstinstall receipt). Their own limitation sentences, and
limitations[4]oflocal-inference-c2-serving-switch-20260926, still say they carry only self reviews; that text is stale, and thisPR edits no receipt.
ai-memory (2.5.0 with docs: refresh foundation layer pins and evidence dates #859); Sonnet 5.5 and Haiku 5.5 (no model ID yet). When those ship, three version-keyed places
need an edit: the template's
modelSettings,LEGACY_EXACTinadoption/hooks/claude/effort-default-guard.pyandALIAS_RESOLUTIONinexamples/claude-native/workflows/child-usage.mjs. Opus 5.5 on OmniRoute is held until thegateway lists
claude-opus-5-5.clamps
max, unconfirmed release dates, workstation boundaries, and alias resolution on other hosts such as theMac.
/tmpare not chased (see Evidence). A checkout outside/tmpshould run the full suite once before merge.bfdc99cb. The only shared path ismanifests/evidence.json. After the replay,re-register the nine changed files (the eight above and
docs/decisions/2026-09-25-workstation-sota-refresh.md,which main already registers), re-run both
--writegenerators andscripts/validate.py.Checklist
paths or account data.
once applied, each advisor call spends Fable tokens under the host's existing billing: API rates, plan limits,
or usage credits on plans where Fable bills that way. If the account still needs the usage-credits consent, the
advisor bills nothing until that consent is given
(advisor, Cost). This host already runs with
advisorModel: "fable".Recommended label:
lane:foundation🤖 Generated with Claude Code