Repository navigation
Claude Code floor 2.1.281 -> 2.1.284: sonnet means Sonnet 5.5; pins verified against the signed manifest - #477
Merged
seathatflowsinourveins merged 3 commits intoSep 29, 2026
Conversation
…ests 2.1.284 is the first release whose `sonnet` alias resolves to Sonnet 5.5 on the Anthropic API (CHANGELOG.md 2.1.284; model-config version history), so an older client routes the alias to Sonnet 5. Both platform pins move together. The pins' values equal the 2.1.284 manifest (commit 2b8ce618, built 2026-09-28): linux-x64 5cd90aab... and darwin-arm64 50a14c2f.... Verified on 2026-09-29: the manifest's GPG signature with the documented key and fingerprint (a one-byte-changed copy fails), the darwin-arm64 and linux-x64 binaries streamed from the pin URLs and re-hashed to the manifest values, and the updater-installed linux binary. Not verified: Apple's code signature (no macOS host) and the key's own certification. macOS checksum_source is manifest_crosscheck again (manifest value plus a re-hash of the served binary). The floor tests move with the pin and now fail if their fixture pin drifts from the real pin file; the 2026-09-23 record gains an addendum because its overturn condition (a documented signature procedure and key) is met. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
The row's three checks (repo, releases/latest, commits/v2.1.284) were re-run with gh 2.101.0, the client the file's methodology names; the response fields equal the row's (latest stable v2.1.284, published 2026-09-28T18:02:03Z, tag commit 8364969e, pushed_at 2026-09-29T00:05:54Z). The stdout hashes are those of the authenticated gh api bodies. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…eports The shared hot files of this lane change here, in the last commit: manifests/stack.json (the claude-code version and its freshness text, which now names the latest GitHub release and the publisher's latest channel separately from its stable channel), the hashes of the files this branch changes in manifests/evidence.json, and the regenerated new-host grand list. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Collaborator
Author
|
Trading lane acknowledgement (
No objection. |
seathatflowsinourveins
deleted the
claude/claude-code-floor-2-1-284-20260929
branch
September 29, 2026 02:06
5 tasks done
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 29, 2026
…nt on Opus 5.5, effort and default child model saved in settings (2.1.284 probes) (#479) * Settings: pin the coordinator effort at xhigh and default an unnamed child to Opus Claude Code 2.1.284: ultracode neither raises nor overrides effort, so a Sonnet 5.5 session with no saved level ran at medium; a stage that names no model runs the lead's. The project and portable settings carry effortLevel xhigh; the template pins claude-sonnet-5-5 at xhigh and sets CLAUDE_CODE_SUBAGENT_MODEL=opus (the portable file does too, the project file leaves the host layer to). Tests added. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Instructions: Sonnet 5.5 fan-out units, the default child model and the measured effort rule The portable instructions and the workflows README state which units may run on Sonnet 5.5 (oracle- or Opus-checked fan-out), keep every judgment on Opus, and record the 2.1.284 effort and inheritance findings. The instruction word budget is re-baselined to 1,310. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Decision record and receipt: Sonnet 5.5 and Opus 5.5 dispatch, effort and the default child model Adds docs/decisions/2026-09-29-sonnet-5-5-dispatch.md, the probe receipt claude-model-effort-probes-20260929, a dated addendum to the 2026-09-23 record and two anti-pattern rows. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * child-usage: document how the sonnet and fable aliases resolve by client version ALIAS_RESOLUTION had rows for opus only, so a child that requested sonnet but ran an older Sonnet than its client version documents was not flagged as substituted. Add sonnet (Sonnet 5 from v2.1.197, Sonnet 5.5 from v2.1.284) and fable (Fable 5.1 from v2.1.257) from the model-config doc's version history table (fetched 2026-09-29). haiku and any alias without rows still have no expectation. test-child-usage.mjs: the "alias without rows" case moves from sonnet to haiku; the opus table's sonnet clause takes the documented value (claude-sonnet-5 on 2.1.281) and gains a haiku-is-null clause; new cases cover the sonnet and fable version tables, a whole child on claude-sonnet-5 under 2.1.284 (older than documented), claude-sonnet-5-5 under 2.1.284 and claude-sonnet-5 under 2.1.283 (complete), and a change from claude-sonnet-5-5 to claude-sonnet-5 within one child. 95 -> 101 cases. SHA256SUMS lines for both files regenerated. manifests/evidence.json is left to the integrating coordinator. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Record: close the two open items of the 2026-09-28 addendum that this change resolves Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Effort guard: stop assuming `ultracode: true` runs a session at xhigh Claude Code 2.1.284 (measured 2026-09-29): ultracode neither sets nor overrides a per-model effort level. An unsaved claude-sonnet-5-5 session ran at medium under the host settings and the guard stayed silent, because resolve() returned xhigh for any settings file with `ultracode: true`. That also kept the SessionEnd healer from saving a level, since it only saves when resolve() gives none. - resolve(): drop the ultracode branch. The level now comes only from CLAUDE_CODE_EFFORT_LEVEL, the highest-precedence saved modelSettings or applicable top-level effortLevel, and the maxEffortLevel caps. No other logic changed. - Docstring: record the 2.1.284 measurement and that 2.1.281 behaved differently (docs/decisions/2026-09-23-max-effort-default.md stays as history). - Tests: an unsaved Sonnet 5.5 under ultracode now warns; a saved xhigh stays silent; a saved lower level still warns; under ultracode the healer saves xhigh when nothing is saved, and respects a saved low. - SHA256SUMS: regenerate the effort-default-guard.py line. The installed host copy (~/.claude/hooks/effort-default-guard.py) is not touched here. Refresh it with tools/adoption/install_claude_profile.py --only guard; until then test_shipped_guard_is_verbatim fails on a host that has the old copy installed. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Profile recipe: dated 2.1.284 correction to the Ultracode effort statement Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Receipt: count each assistant message once and reproduce every row from the transcripts The 2026-09-28 model-currency addendum counted the Sonnet child's 82 transcript rows as messages; it made 38 (all claude-sonnet-5-5 at max), and the first receipt drafts carried the same kind of row counts (299 for the coordinator). The receipt is regenerated by a script that asserts every row (model, effort, reminder lines, message count, client version) against the native transcripts before writing, takes the run times from them, and embeds one extractor per kind (headless cases, interactive cases) with a per-script digest. Its claim now separates the headless findings from the interactive one (the lead's max reached every child, the Opus ones included), scopes the effort findings to the setting form and to levels passed with --settings, and counts 27 probes and two session observations. The addendum's count is corrected and the mistake goes in the anti-pattern log. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Guard and child-usage: name the models the user-scope key reaches, document the same-family alias The SessionStart warning said a user-settings top-level effortLevel does not apply to Opus 5.5 and later; it applies only to Opus 5, Fable 5.1 and earlier models (Sonnet 5.5 ran at medium under a top-level xhigh, receipt case A1). The guard's docstring cites the documentation of the 2.1.284 change and scopes its ultracode rule to 2.1.284 and later. child-usage.mjs no longer says a stage without effort inherits the coordinator's xhigh, and its alias table notes the documented same-family exception (a family alias resolves to the lead's exact model when the lead belongs to that family). test-envelope.mjs states the documented order for a stage that names no model. Both SHA256SUMS files are regenerated and the host guard copy reinstalled. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Instructions and records: scope every 2.1.284 statement and align the Sonnet rule across files Repairs the findings of one GPT-6 and three Opus 5.5 reviews of this branch. The workflow contract, the routing table, the recipes, the portable CLAUDE.md and the dated addendum now state the Ultracode and effort behaviour with its version (2.1.284: the setting leaves effort unchanged, --effort ultracode still sets xhigh, Ultracode stays on at other levels; 2.1.281 statements are history). The portable Quality bullet lists the same Sonnet classes and conditions as the README (a test oracle alone never clears a Sonnet build); the coordinator model is stated once (Opus 5.5 by default, a Sonnet 5.5 coordinator sends each judgment to an opus stage). The record quotes the system card and the benchmark pages with their scope (the three Terminal-Bench 4.0 evaluations disagree and differ in more than the harness, the FrontierCode result for max, the Vals cost and latency figures, the welfare-section figure it no longer leans on), names the floor change's branch, records the guard and CLAUDE.md host steps, and corrects the sealed-run and RUNBOOK statements. The instruction word budget is re-baselined to 1,356. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Record: state the base commit the branch was reviewed against Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Repair round 2: separate what the receipt shows from what the definitions explain, fix the child-usage and coordinator statements Applies the second-round review of this branch. The interactive inheritance finding is limited to the children that named no effort (C1, C3 to C6); the project agents of C2 and C8 declare effort max, so they show the definition, and the receipt, the record, the README, the recipe and the addendum now say so. The record no longer says child-usage.mjs flags a Sonnet 5 child on a client older than 2.1.284 (its alias table records that as the documented resolution) and tells the operator to check `claude --version` before routing a stage to `sonnet`; it names the floor pull request (#477). The portable CLAUDE.md gains the coordinator condition (a Sonnet 5.5 session hands each judgment to an opus-named stage), one Opus list and one build condition across README, CLAUDE.md and the record, and the teammate effort follows the lead's session effort. The recipe's remaining 2.1.281 statements are dated, the non-orchestrated max session uses the 2.1.284 form (documented, not probed together with --effort max), the settings example's description lists the two added keys, test comments no longer carry the retracted rationales, the shell row drops the speed advantage (Vals' Terminal-Bench 4.0 data lists higher latency and output tokens for Sonnet 5.5), the overturn conditions name measurements this repository can make, and the anti-pattern row stops citing a generator the repository does not retain. The instruction word budget is 1,372. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Repair round 3: the confirmed findings of the cross-family check A read-only GPT-6 Astra review at max of head 52d11856 returned four medium and one low finding and no high one; four are confirmed against the repository text or the documentation and are one-line edits, and the fifth (the receipt not yet registered) is the deferred hot-file step. The recipe states the documented model order for a stage that names no model (definition, then CLAUDE_CODE_SUBAGENT_MODEL, then the lead) instead of the lead alone. A Sonnet coordinator no longer verifies teammate claims itself: the lead collects results and has any claim verified on Opus, in the portable CLAUDE.md and the record's teammate row. The two test comments scope the headless observation and state frontmatter precedence and the interactive case. The README carries the same Haiku statement as the portable instructions. The record notes that the floor pull request has merged. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Record: state the base commit after the floor pull request merged Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * Hot files: evidence registration for the dispatch branch Registers the dispatch receipt and the hashes of the files this branch changes on the current main copy of manifests/evidence.json, the only shared hot file this lane touches. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Sonnet 5.5 <[email protected]>
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.
Scope
manifests/stack.json, the adoption docs and the floor tests, because 2.1.284 is the first release whosesonnetalias resolves to Sonnet 5.5 on the Anthropic API (an older client routes it to Sonnet 5). Both pins are re-verified against the publisher's signed manifest: signature checked, both platform binaries re-hashed from their pin URLs.11648f9a(origin/mainat the last rebase; agit merge-treeagainst it is clean)lane:shared. It changes what a shared hot file says (manifests/stack.json: theclaude-codeversion and its freshness text), so it needs the trading lane's acknowledgement before merge; the rest is foundation-lane. The hot-file commit is last.adoption/{bootstrap.md,bootstrap-linux.sh,bootstrap-macos.sh,pins-linux-x86_64.json,pins-macos-arm64.json},adoption/platforms/{linux-wsl2.md,macos-arm64.md},blueprints/token-native-focus/saturation-audit.json(tied tostack.jsonbytest_stack_lifecycle),catalogs/landscape/upstream-snapshot.json(one row),docs/decisions/2026-09-23-claude-user-profile.md(dated addendum),tests/test_adoption_bootstrap.py,tests/test_adoption_bootstrap_macos.py,tests/test_adoption_status.py; shared:manifests/stack.json,manifests/evidence.json(hash registration), and the regeneratedcatalogs/landscape/new-host-grand-list.jsonanddocs/new-host-grand-list.md.claude/sonnet55-dispatch-20260929); this one only makes the client floor match it.SOTA sources
https://downloads.claude.ai/claude-code-releases/2.1.284/manifest.json(version 2.1.284, commit2b8ce618c24de26410e4bdfc4e1d592accd61f61, buildDate 2026-09-28T02:36:51Z) with its detached signaturemanifest.json.sig, and the documented verification procedure in the setup page, Binary integrity and code signing (keyhttps://downloads.claude.ai/keys/claude-code.asc, fingerprint31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE).CHANGELOG.md2.1.284 ("Added Claude Sonnet 5.5 (claude-sonnet-5-5), now the default Sonnet model on the Anthropic API"), releasev2.1.284(published 2026-09-28T18:02:03Z, tag commit8364969e9f5234ef3d9743cf7c790e9aab0ac3b1), and the model-config version-history table (sonnetis Sonnet 5.5 from v2.1.284, Sonnet 5 from v2.1.197), all read 2026-09-29.https://downloads.claude.ai/claude-code-releases/latest(2.1.284) and/stable(2.1.277), read 2026-09-29.Evidence-class table
native_proven(this host, gpg 2.4.4, an empty keyring)checksum_refandinstall_noteand the 2026-09-23 record's addendum state the result; the negative control returnedBAD signature, rc 1native_proven(streamed and hashed on 2026-09-29, nothing executed)local_integrationclaude-codesnapshot row matches GitHubsource_reviewgh api(gh 2.101.0, the file's stated client); the response fields equal the rowLocal commands run
Decision record
docs/decisions/2026-09-23-claude-user-profile.md, "Addendum (2026-09-29)": its overturn condition (a documented signature procedure and public key) is met. Reviews: the branch was built by a Sonnet 5.5 builder (its tests as the oracle) and reviewed once by an independent Opus 5.5 reviewer at max, which confirmed every pin, checksum, URL, size and tag claim and found one medium and seven low text or provenance findings (a false "no published key or procedure" statement, artkcomparison, provider scope of the alias claim, the publisher's stable channel, the snapshot's client, a stale date, the commit order, a fixture pin with no tie). All were repaired in one round: the signature is now verified, the darwin binary re-hashed, the snapshot row re-run withgh api, the tie tests added and the shared-file hunk moved to the last commit.Host evidence
Not applicable: no files under
evidence/hosts/change.Not verified
Apple's
codesignresult and notarization of the darwin-arm64 binary; the manifest'smanifestSignatureEnforcement: "flag"field (what it changes is not documented); the key's certification, expiry and revocation.Checklist
🤖 Generated with Claude Code