Skip to content

Raise the Claude Code floor to 2.1.300 and record its source commit as the run pin - #1128

Open
seathatflowsinourveins wants to merge 2 commits into
mainfrom
claude/cc-native-practice-claude-code-floor-2300-20261014
Open

seathatflowsinourveins wants to merge 2 commits into
mainfrom
claude/cc-native-practice-claude-code-floor-2300-20261014

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

  • What this PR changes: the Claude Code floor rises from 2.1.295 to 2.1.300, the client the core lanes run. Both platform pins also record the run pin's source commit, so catalogs/landscape/final-stack.json reads claude-code as 2.1.300 at 94506ff0d3bd9185f1752da36e968775021fb48f.
  • Base commit: a339425ca56ec3fb87dff0fa8ad5dffc83354168
  • Lane: lane:foundation
  • Owned paths touched:
    • the claude-code entries of adoption/pins-linux-x86_64.json and adoption/pins-macos-arm64.json, adoption/new-wsl-profile.json and manifests/stack.json;
    • the floor text in adoption/bootstrap.md, adoption/platforms/macos-arm64.md and both bootstrap scripts' comments;
    • the floor tests;
    • the regenerated handbook, grand list and final-stack catalog, and the upstream snapshot and lifecycle audit mirrors;
    • the client-core slot note and its snapshot label;
    • the floor decision addendum and manifests/evidence.json.

SOTA sources

Evidence-class table

Claim Evidence class Command / receipt
The 2.1.300 manifest carries a good Anthropic release signature; linux-x64 is 674deba0…5453, 266,972,344 B native_proven the documented procedure at 2026-10-14T23:55:04Z; values in the floor decision's 2026-10-14 addendum
The installed ~/.local/share/claude/versions/2.1.300 re-hashes to that digest and size native_proven sha256sum, stat on this host
darwin-arm64 is 475517ca…e2d3, 249,556,880 B source_review signed-manifest value only; no Mac re-hash, execution or code-signature check
final-stack.json's claude-code run is 2.1.300 with commit 94506ff0 local_integration python3 scripts/final_stack.py --write / --check
The bootstrap keeps 2.1.300 and newer and installs below it synthetic tests.test_adoption_bootstrap, tests.test_adoption_bootstrap_macos (stub launchers)
Native auto-update is on here; autoUpdates: false in ~/.claude.json is the native installer's own legacy-updater marker native_proven claude doctor at 2026-10-15T00:44:57Z (Auto-updates: enabled); Claude Code 2.1.300 binary byte offsets 229504330 and 218781814
Headless roles follow the latest release through a retained, sha256-checked copy outside versions/, moved after a function check of the exact invocation (owner direction 2026-10-14) source_review the floor addendum; setup.md:498 (the version cleanup); #1127 (the worker) and the trading lane's own dated runner copy

Local commands run

$ gpg --verify manifest.json.sig manifest.json   # empty keyring, key from downloads.claude.ai/keys/claude-code.asc
Good signature from "Anthropic Claude Code Release Signing"; Primary key fingerprint: 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE
$ python3 scripts/component_matrix.py --write; python3 scripts/new_host_grand_list.py --write; python3 scripts/build_new_wsl_handbook.py --write; python3 scripts/final_stack.py --write
written; final_stack.py --check then rc 0 (34 layers)
$ python3 -m unittest tests.test_adoption_bootstrap tests.test_adoption_bootstrap_macos   # with main's two pin files, this PR's tests
Ran 232 tests, FAILED (failures=4, skipped=22)
$ python3 -m unittest tests.<module>   # at a7901c01 (before the auto-update text correction), 72 modules touching the changed files, idle-class
70 rc 0; test_catalog_freshness_propose and validate.py rc 1 only on the nine date-driven model-currency lines, which origin/main shows identically (the currency incident)
$ python3 -m unittest tests.<module>   # at 9a58181b, the 17 modules touching the corrected files, idle-class
rc 0 for all 17: adoption_bootstrap (79), adoption_bootstrap_macos (153), final_stack (75), stack_lifecycle (6), new_wsl_handbook (88), new_wsl_profile (18), native_practice_retired_routes (45), native_practice_snapshot_provenance (9), primary_source_reading_counts (22), native_practice_meter_windows (6), paired_runs_results (31), skills_manifest (38), evidence_manifest (5), runtime_worker_openhands_push_gate (127), local_pages_policy_grants (25), ecosystem_manifest (88), validate (86)
$ python3 scripts/validate.py   # at a7901c01 and at origin/main a339425c
rc 1 at both, the same nine model-currency lines; INCIDENT-BLOCKED on that currency incident, not on this change

Head bd3eecfe (2026-10-15)

Per the owner's direction of 2026-10-14 (paraphrased, through the command center), the text no longer says the headless roles stay on 2.1.299 pending a paired check. They follow the latest release through a retained, sha256-checked copy, after a function check of their exact invocation. Affected modules pass at this head: bootstrap 79 and 153, final_stack 75, handbook 88, slot checks, validate 86, push gate 127.

Decision record

docs/decisions/2026-10-09-claude-code-floor.md, addendum of 2026-10-14. It covers the distribution evidence, the source commit, the CHANGELOG delta check, the roles that pin 2.1.299 and the cleanup that can remove their binary (auto-update is on: autoUpdates: false is the installer's own marker), the derived records and the inverse. The client-core slot row carries the version-pin note.

Notes for the reads

  • Why version stays plain: both bootstrap scripts compare --version's first word numerically, so the source commit goes in a separate commit field, which record_pin merges.
  • Email-shaped string: both pins' notes carry the vendor's release-signing address from the GPG output, as main's 2.1.295 entries already do in the same fields. It is the only scanner hit on the added lines; the commit message scans clean.
  • Out of scope here:

Checklist

  • No GitHub Actions changed.
  • No workflows changed.
  • No secrets printed, logged or committed.
  • No paid hosting, subscription or billing surface.
  • Peer-owned files and worktrees preserved.

🤖 Generated with Claude Code

…s the run pin

The command center asked (2026-10-14) for the claude-code run pin in
catalogs/landscape/final-stack.json to name the client the core lanes run.
scripts/final_stack.py takes that run pin from the platform pins
(`record_pin(version, commit)`), and the same `version` is the bootstrap
floor, so this mirrors the 2.1.295 raise (#922).

- Distribution: the 2.1.300 signed manifest was checked with the documented
  procedure at 2026-10-14T23:55:04Z. Good signature, fingerprint
  31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE; manifest sha256
  fb62dae2...; linux-x64 674deba0... (266972344 B), matched by the installed
  binary; darwin-arm64 475517ca... (249556880 B, no Mac re-hash).
- Both pins: version 2.1.300 (plain, since the bootstrap scripts compare it
  numerically), plus "commit": 94506ff0d3bd9185f1752da36e968775021fb48f, the
  anthropics/claude-code commit whose CHANGELOG.md first carries 2.1.300.
  The regenerated final-stack run reads 2.1.300 with that commit.
- CHANGELOG 2.1.296-2.1.300 (357 entries): none changes the native
  installer, the auto-update channel or minimumVersion.
- client-core slot note: the floor and run pin, and the two headless roles
  that pin 2.1.299 by path (the review worker, #1107, and the trading lane's
  private runner). Native auto-update is on here (claude doctor at
  2026-10-15T00:44:57Z: enabled, channel latest); ~/.claude.json's
  autoUpdates false is the native installer's own legacy-updater marker,
  written with autoUpdatesProtectedForNative true (2.1.300 binary). The
  version cleanup keeps only the launcher's version, running sessions'
  versions and the two newest (setup.md), so those roles need their own
  protection, a separate change.
- The new-WSL profile, the stack manifest, the bootstrap docs and comments,
  and the macOS platform page now say 2.1.300.
- Regenerated by their builders: the handbook (with a receipt regeneration
  entry), the grand list and final-stack.json. Mirrored as in #922: the
  upstream snapshot's selected version (a dated local-integration refresh)
  and the lifecycle audit. The floor decision gets a 2026-10-14 addendum.

Tests: the floor tests move to PIN 2.1.300. With main's pins they fail
(4 failures in test_adoption_bootstrap and test_adoption_bootstrap_macos).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 15, 2026
On 2026-10-14 the owner directed (paraphrased, through the command
center) that the headless roles follow the latest Claude Code. The floor
addendum, the pins' notes and the client-core note no longer say that
the review worker and the trading runner stay on 2.1.299 pending a paired
check.

They now state the rule: a pinned role runs a retained copy outside
versions/, checks its sha256 against the release's signed manifest at
launch, and moves to a new release after a function check of its exact
invocation, not a paired quality run. The retained copy protects the
role against the native installer's version cleanup and against a broken
release. At this addendum both roles move to 2.1.300: the trading runner
by its own dated copy, the review worker in #1127.

Derived records regenerated: final-stack.json, the snapshot label, the
evidence registry. Tests: the affected modules pass (bootstrap 79 and
153, final_stack 75, handbook 88, slot checks, validate 86, push gate
127).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 15, 2026
GPT read of #1129 at efa0b45 (P2): the source record said the GPG check of the signed 2.1.300 manifest was
in the floor decision's 2026-10-14 addendum, which this tree does not contain (that addendum is #1128's). The
check was re-run 2026-10-15T11:23:49Z and is retained here: release-signature-2.1.300.json, with the public
manifest.json, manifest.json.sig and claude-code.asc it verified in release-2.1.300/. Result: good signature
from 31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE, and the manifest's linux-x64 checksum and size equal the
installed binary's (674deba0..., 266972344). The record now cites the receipt.

Regression test_the_signature_check_the_record_claims_is_retained_and_binds_the_binary checks:
- the record names the receipt, and every decision file it cites contains 2.1.300;
- the retained files match their sha256;
- the manifest binds the binary.
Fail-before: AssertionError: 'release-signature-2.1.300.json' not found. After: 5 OK; the privacy and
provenance modules OK. validate reports only the inherited model-currency date checks that main has refreshed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 16, 2026
The GPT read of #1128 at bd3eecf (blocker 1, P1) found owner quotation
spans in the generated handbook's agent-messaging record. They came from
the layer-consensus record: assemble_manifest.py copies its rows and
amendments into the definitive manifest, and build_new_wsl_handbook.py
copies each manifest slot whole into the handbook, so the fix is in the
canonical input and the outputs are regenerated from it.

Layer-consensus record (consensus.json): six owner quotation spans in
five fields become dated, attributed paraphrases of the form: the owner,
<date> (paraphrased): ..., with the date taken from each record's own
context:
- authorization: verbatim -> paraphrase (2026-10-02)
- amend_rows[4] agent-messaging amendment: owner_verbatim ->
  owner_paraphrase (2026-10-02); its decision, text, arms and experiment
  contract are unchanged
- wave2 context-supply interim authority: verbatim -> paraphrase
  (2026-10-03)
- wave5 agent-messaging owner default: two spans in its reason
  (2026-10-02 and 2026-10-03) and one in its posture (2026-10-03); the
  public record of the answer stays linked by URL

Regenerated through the existing generators:
- assemble_manifest.py (write; --check exit 0): definitive-manifest.json
- render_tables.py --check: the 2026-10-01 record's tables stay current
- build_new_wsl_handbook.py --write, then --check exit 0:
  docs/new-wsl-handbook.json and docs/new-wsl-handbook.md
The handbook loses five owner spans: the four the read named (base lines
851, 933, 934) and one in the context-supply record's overturned interim
(base line 2383), which the read did not list.

Bindings: the handbook receipt's current outputs, a regenerations entry
and a previous_outputs entry; manifests/evidence.json re-registers the
eight changed hashed files; scripts/validate.py passes.

Regression: tests/test_new_wsl_handbook.py OwnerQuotationTests checks by
structure, with invented prose only: a field that holds the owner's
words, or a sentence that attributes a double-quoted span to the owner
or the user, fails; a dated paraphrase and separately defined protocol
or contract text pass. Against the base tree it fails with 13 locators
(consensus record 5, manifest 4, handbook 4); after the change all three
tests pass.

tests/test_new_wsl_definitive_defaults.py reads the paraphrase fields,
checks the consensus decision record with the same attribution rule, and
its wave-3 relay check no longer holds any of the owner's words (it
checks the record's block quote instead). assemble_manifest.py: comment
only, the interim authority now carries a dated paraphrase.

Not changed: the owner batches' authority.verbatim fields (wave3, wave4,
wave5) stay in consensus.json. assemble_manifest.py requires them
(OWNER_AUTHORITY_FIELDS, line 389) and refuses a batch whose hashed
relaying decision record does not contain them (check_owner_batch,
lines 542-544); they
never reach the manifest or the handbook. Changing that relay contract
needs its own ruling. The regression keeps exactly those paths, and only
while the assembler requires the field.

This supersedes, for the canonical inputs, the integration resolution
that chose exact quotation (evidence/artifacts/
final-architecture-round2-20261004/integration-resolutions.json:543,
:630, :801). No history rewrite: earlier commits keep the old text.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant