Repository navigation
Raise Claude Code floor to 2.1.295 and classify plugin notifications - #922
Conversation
### Scope - What this PR changes, in one or two sentences: the Claude settings template and the repository's project settings now start the secret-path guard with `/usr/bin/python3` instead of the first `python3` on `PATH`, so a broken or inactive interpreter shim can no longer make every guarded Bash call exit 1; the new-WSL renderer admits that one absolute path as a practice-hook command word, with tests that it still refuses every other interpreter path. - Base commit: `22e3ef6ffd53b09f3cb335c46f7c696093521274` (main after #920) - Lane: `lane:foundation` - Owned paths touched: `adoption/templates/claude.settings.template.json` (one command), `.claude/settings.json` (the project guard command, folded in at the command center's request), `tools/adoption/new_wsl_client_config.py` (`BASE_COMMAND_WORDS` and its comment), `tests/test_install_claude_profile.py`, `tests/test_new_wsl_client_config.py`, `docs/decisions/2026-10-08-guard-hook-fails-closed.md` (append-only addendum), `manifests/evidence.json` (re-registration). Successor to #920, scoped by the command center on 2026-10-09: the interpreter pin, the allowlist entry for that one path, the jq refusal and missing-script exit 2 kept, and a test with no mise shim on `PATH`. ### SOTA sources - Claude Code hooks: exit code 2 blocks a PreToolUse call and other non-zero codes are non-blocking (https://code.claude.com/docs/en/hooks, read 2026-10-09); `onFailure: "block"` added in 2.1.295 (`anthropics/claude-code@602df92bf481ed904533e95c09f740f40aab5aed` CHANGELOG.md line 5: "a hook that can't start, times out, or exits with an unexpected code blocks the action instead of letting it through"). - POSIX Shell Command Language, 2.8.2 Exit Status for Commands: a command that is not found exits 127 (https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html). - jq 1.7 manual, `halt_error(exit_code)` (https://jqlang.org/manual/v1.7/), unchanged from #920. - Python `ast.parse(..., feature_version=...)` (https://docs.python.org/3/library/ast.html#ast.parse), used to check the guard parses as 3.9 through 3.14. - `docs/decisions/2026-10-08-guard-hook-fails-closed.md` and the Claude Code native practice record of 2026-10-09 (#923, slot `hooks`). ### Evidence-class table | Claim | Evidence class | Command / receipt | | --- | --- | --- | | Unpinned, a failing `python3` first on `PATH` makes the guard return 1 for a credential-file read and for `git status`; pinned, 2 and 0 | `local_integration` | rendered template + installed guard in a temporary home, `PATH` = a directory holding only `jq` and a failing `python3` stub | | The rendered hook blocks before and after install with no working `python3` on `PATH` | `local_integration` | new `test_rendered_hook_runs_the_system_interpreter_without_a_working_python3_on_path`; fails when the template is unpinned | | The renderer admits `/usr/bin/python3` and refuses `/usr/local/bin/python3`, `/usr/bin/python3.14`, `/usr/bin/python`, `/bin/python3`, `/tmp/python3`, `./python3`, `/usr/bin//python3`, `/usr/bin/../bin/python3`, `/usr/bin/env` | `local_integration` | new `test_a_practice_hook_may_name_only_the_pinned_system_interpreter_by_absolute_path`; fails when the allowlist entry is removed, and `--check` on the shipped template then reports the guard | | The project hook in `.claude/settings.json` takes the same form: a checkout without the script gives 2 and the refusal; the repository's guard gives 2 for a credential-file read and 0 for `git status`, behind the same failing-`python3` `PATH` | `local_integration` | new `test_project_hook_runs_the_system_interpreter_and_refuses_a_missing_script`; fails when the hook is unpinned and when its refusal is removed | | The guard uses the standard library only and parses as Python 3.9 to 3.14 | `source_review` | imports at `scripts/hooks/secret_path_guard.py:108-115`; `ast.parse` with `feature_version` 3.9 through 3.14, run by `/usr/bin/python3` 3.14.4; the suite ran under 3.13.16 | ### Local commands run ``` $ python3 -E -s -B -m unittest tests.test_apply_claude_settings tests.test_currency_due_notice tests.test_install_claude_profile tests.test_new_wsl_client_config tests.test_observability_tool_names tests.test_observability_writer_identity tests.test_render_config tests.test_secret_path_guard tests.test_skills_manifest tests.test_token_lanes_session_start tests.test_upstream_surface_watch tests.test_windows_terminal_defaults tests.test_adoption_status tests.test_credential_status tests.test_adoption_docs_consistency Ran 1016 tests; FAILED (failures=2, skipped=16) K4GuardTests.test_k4_hook_process_and_hints failed its 3-second timing assertion under load; it starts the guard with sys.executable, not a settings command, and passed 3 of 3 alone and in the full tests.test_secret_path_guard rerun (90 tests OK) the one failure is the pre-existing F10, OverlayTests.test_the_installed_client_knows_no_notification_type_without_a_decision (plugin_notification on the installed 2.1.295); it fails the same way on clean main and is owned by the currency floor PR #922 $ python3 -E -s -B -m unittest tests.test_new_wsl_definitive_defaults tests.test_new_wsl_profile tests.test_new_wsl_handbook tests.test_new_wsl_gateway_composition tests.test_new_wsl_mcp_conformance_lifecycle tests.test_adoption_docs_consistency tests.test_adoption_contract Ran 314 tests; OK (skipped=4) $ python3 -E -s -B tools/adoption/new_wsl_client_config.py --check check passed (two pre-existing mcp-inspector warnings) $ python3 -E -s -B scripts/validate.py {"components": 70, "hashed_files": 10939, "profiles": 4, "receipts": 239, "status": "passed"} $ python3 -E -s -B scripts/evidence_manifest.py --check {"files": 10939, "status": "passed"} $ python3 -E -s -B scripts/validate_convergence.py --all-recorded --root . --json valid: true $ python3 -E -s -B scripts/component_matrix.py --write && python3 -E -s -B scripts/new_host_grand_list.py --write written; no diff in the generated reports ``` ### Decision record `docs/decisions/2026-10-08-guard-hook-fails-closed.md`, new addendum "the guard runs the system interpreter": the measurement, the allowlist scope, the project hook and the limits. A host without `/usr/bin/python3`, or a missing script with no `jq` on `PATH`, exits 127, which `onFailure: "block"` turns into a block from 2.1.295 (the floor raise is the currency lane's change). After this lands, the command center aligns the host's user settings to the rendered form; until then the host keeps its own pinned form. ### Host evidence Not applicable: no file under `evidence/hosts/` changes. ### Checklist - [x] New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no floating tags). (none changed) - [x] New/changed workflows declare top-level `permissions: {}` and grant each job only what it needs. (none changed) - [x] No secrets are printed, logged or committed; no new required secret was added without a documented owner. - [x] No new paid hosting, subscription or billing surface was introduced. - [x] Peer-owned untracked files and worktrees were preserved (not deleted, moved or overwritten). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
8a53d41 to
24945c8
Compare
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 24945c864c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| { | ||
| "id": "claude-code", | ||
| "version": "2.1.284", | ||
| "version": "2.1.295", |
There was a problem hiding this comment.
Synchronize the platform guides with this floor
When users follow the OS-specific onboarding pages instead of the generic bootstrap page, they receive the old boundary: adoption/platforms/linux-wsl2.md:91-99 still says 2.1.284+ is kept, although the updated bootstrap will reinstall any 2.1.284–2.1.294 launcher, and adoption/platforms/macos-arm64.md:377 likewise describes both pins as 2.1.284. Update these current platform guides alongside the pin so they do not promise behavior that the installers no longer provide.
Useful? React with 👍 / 👎.
| "checksum_source": "manifest_crosscheck", | ||
| "checksum_ref": "https://downloads.claude.ai/claude-code-releases/2.1.284/manifest.json (fetched 2026-09-29; commit 2b8ce618c24de26410e4bdfc4e1d592accd61f61, buildDate 2026-09-28T02:36:51Z) lists platforms.darwin-arm64.checksum = 50a14c2f50f56668380fdda490167f1d3630d5cc18fb8aed3073c2c7ea7314fe and size 226563088. Independently re-hashed on 2026-09-29: the binary streamed from this pin's URL on the NativeStack WSL2 host (HTTP 200, 226563088 bytes) hashes to that value. Nothing was executed and Apple's `codesign --verify` was not run (no macOS host), so the darwin-arm64 binary is hash-verified, not code-signature-verified. That is why checksum_source is manifest_crosscheck, as it was for 2.1.280 and 2.1.281. The manifest itself was verified with the documented procedure (https://code.claude.com/docs/en/setup#binary-integrity-and-code-signing) on 2026-09-29: the key at https://downloads.claude.ai/keys/claude-code.asc, imported into an empty keyring, has the documented fingerprint 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE, and `gpg --verify manifest.json.sig manifest.json` reported `Good signature from \"Anthropic Claude Code Release Signing <[email protected]>\"` (gpg's untrusted-key warning is expected; a copy of the manifest with one byte changed failed with BAD signature). The key's own certification, expiry and revocation were not checked, and the fingerprint comes from the same documentation. The 2.1.281 manifest verified the same way; the 2.1.280 and 2.1.281 notes said no public key or verification procedure was published, which the setup page (read 2026-09-29) contradicts for releases from 2.1.89. The same manifest's platforms.linux-x64 checksum was confirmed by re-hashing both the NativeStack WSL2 host's updater-installed 2.1.284 binary and a fresh download from the Linux pin's URL (243059896 bytes). adoption/bootstrap-macos.sh's fetch() still verifies the served bytes against this sha256 before anything runs, so a wrong value fails closed with a checksum mismatch instead of running an unverified binary. Raised from 2.1.281 (a922981f6f3b55a251ef9f9dbaa0621a5f99cbcb5ca67f8a797476ccfc83f626, its manifest value at 220931760 bytes, which a macOS arm64 host's natively installed 2.1.281 binary hashed to), itself raised from 2.1.280 (387a5c5dcdbb815085edf0baf79591f9d8894efe922bceaf3d75b1b08055229d, its manifest value, re-hashed from a direct download on 2026-09-23), which superseded the prior npm-wrapper + platform_dependency pin (2.1.278, DISABLE_AUTOUPDATER=1): the native installer is the reference path, matching the linux-x86_64 pin and ~/codex-ecosystem/bin/bootstrap-linux.sh's own claude-code step.", | ||
| "install_note": "Fetch the binary, verify its sha256, then run `\"$bin\" install 2.1.284`, mirroring pins-linux-x86_64.json's claude-code entry (adoption/bootstrap-macos.sh's own *-native case does this). The installed binary self-manages ~/.local/share/claude/versions and the ~/.local/bin/claude launcher and auto-updates on the latest channel from there; this pin is a floor, not a ceiling: install_native keeps a ~/.local/bin/claude whose --version already reports 2.1.284 or newer (nothing is downloaded or installed) and runs the verified install only when that launcher is missing, older or unreadable. No DISABLE_AUTOUPDATER opt-out is set. 2.1.284 is the floor because its CHANGELOG.md entry (read 2026-09-29) adds Claude Sonnet 5.5 (`claude-sonnet-5-5`) as the default Sonnet model on the Anthropic API, and https://code.claude.com/docs/en/model-config (read 2026-09-29) resolves the `sonnet` alias to Sonnet 5.5 from v2.1.284 and to Sonnet 5 from v2.1.197, so an older client routes `sonnet` to Sonnet 5 on the Anthropic API. The floor it replaced, 2.1.281 (CHANGELOG.md entry read 2026-09-24), fixed a recursive rm whose target is only command-substitution output, such as rm -rf \"$(pwd)\", running unprompted in auto and --dangerously-skip-permissions mode; 2.1.284 includes that fix. This drops the old npm platform_dependency entirely; the native binary needs no nested @anthropic-ai/claude-code-darwin-arm64 package or install.cjs postinstall copy step.", | ||
| "checksum_ref": "CC-native-practice reported the documented GPG check at 2026-10-09T06:13:50Z in proposal section B, SHA256 9ae0a4c2faf71cd93b8aacce931fa4f96b15386e1da62f343d17ba499c096440: manifest https://downloads.claude.ai/claude-code-releases/2.1.295/manifest.json, SHA256 b36d7b376c95dd409212ecce0b700cd547266d9ea014ab1f81a1d5bc49cb3cbe, commit 07e8f67ea3282bf154a9e05673a0942b1b173cef, buildDate 2026-10-08T17:09:12Z; Good signature from Anthropic Claude Code Release Signing <[email protected]>, fingerprint 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE. The signed manifest lists platforms.darwin-arm64.checksum=0116ee2e0a513900b633d9951367f18747686478e2b462805b8c31609f047f70 and size 239695888. No Mac re-hash, execution or codesign verification was performed; this is signed-manifest source evidence, not macOS native acceptance. Currency did not download or repeat the signature check. ", |
There was a problem hiding this comment.
Record the Mac hash as manifest-only evidence
This new provenance explicitly says that no Mac artifact re-hash occurred, but the row still declares checksum_source: "manifest_crosscheck"; the repository defines that value in tests/test_adoption_bootstrap_macos.py:45-48 as the manifest value plus an independent download and re-hash. Any consumer relying on the structured field rather than the prose will therefore overstate the assurance for this pin. Either perform the independent re-hash or introduce/use a signed-manifest-only classification.
AGENTS.md reference: AGENTS.md:L7-L7
Useful? React with 👍 / 👎.
| checksum-verified install.""" | ||
|
|
||
| PIN = "2.1.284" | ||
| PIN = "2.1.295" |
There was a problem hiding this comment.
Raise the remaining probe versions above the new floor
After this floor moves to 2.1.295, the unchanged Bash 3.2 case at line 1799 still calls assert_kept("2.1.290 ..."), so it deterministically fails on a real Mac where /bin/bash is 3.2. The failing-probe cases at lines 1781-1782 and tests/test_adoption_bootstrap.py:1314-1315 also become vacuous because 2.1.290 would be reinstalled even if the nonzero exit status were accidentally ignored. Use an above-floor version such as 2.1.296 in all three cases so macOS passes and the exit-status regression remains covered.
Useful? React with 👍 / 👎.
Apply the three scoped corrections from the CC PASS_WITH_P3 micro on 25af188, plus its five cheap folds, in ONE commit with no rebase or source-branch merge. Must-fix items under docs/decisions/: - 2026-09-27-omniroute-account-pool.md:302 records only that the owner overrode both settings recommendations; the record's risk remains at :290. - 2026-09-30-omniroute-rebuild.md:285-286 separates the relayed owner quality condition from the record's own saving/regression/exact-tool-text requirement. - 2026-09-25-skills-trial-and-usage.md:863 restores the evidence/research delegation and grant to complete the work on the coordinator's end, with full access; no new peer-convergence attribution. Cheap folds from the same micro: - 2026-09-28-ecosystem-roadmap.md:311 removes duplicated recorded wording. - 2026-09-28-top-rule-templates.md:5 preserves the operator's own file and edited 2026-09-28 07:34Z, with loading versus behavior evidence unchanged. - 2026-09-29-key-management.md:41 restores the owner-statements basis for the every-key rule, rather than attributing it to a design-brief reading. - 2026-09-27-omniroute-account-pool.md:304 preserves the gateway route without introducing native-Codex wording. - 2026-09-25-top-rule-sota-sources.md:22-25 restores the exact historical instruction block from22e3ef6ffd53b09f3cb335c46f7c696093521274. The direct owner speech at :18-20 remains paraphrased; frozen audit inputs are untouched. All seven physical line counts and source locators are preserved. Native register_file updates only their seven existing sha256/bytes rows. The original P1 commit-pinned anchors, protected model-currency sections, source gaps and owner-gate repairs remain intact. No test or F10 implementation change: the CC assigns plugin_notification clearance to the later landing rebase onto main containing #922. FULL precommit validate returned0 at2026-10-09T18:20:57Z:10949 hashed files, 70 components,4 profiles,239 receipts, under a capped native systemd scope. This is source integrity, not a newly executed merged-suite or CC micro. Generated by OpenAI Codex; reasoning effort max.
Apply the three scoped corrections from the CC PASS_WITH_P3 micro on 25af188, plus its five cheap folds, in ONE commit with no rebase or source-branch merge. Must-fix items under docs/decisions/: - 2026-09-27-omniroute-account-pool.md:302 records only that the owner overrode both settings recommendations; the record's risk remains at :290. - 2026-09-30-omniroute-rebuild.md:285-286 separates the relayed owner quality condition from the record's own saving/regression/exact-tool-text requirement. - 2026-09-25-skills-trial-and-usage.md:863 restores the evidence/research delegation and grant to complete the work on the coordinator's end, with full access; no new peer-convergence attribution. Cheap folds from the same micro: - 2026-09-28-ecosystem-roadmap.md:311 removes duplicated recorded wording. - 2026-09-28-top-rule-templates.md:5 preserves the operator's own file and edited 2026-09-28 07:34Z, with loading versus behavior evidence unchanged. - 2026-09-29-key-management.md:41 restores the owner-statements basis for the every-key rule, rather than attributing it to a design-brief reading. - 2026-09-27-omniroute-account-pool.md:304 preserves the gateway route without introducing native-Codex wording. - 2026-09-25-top-rule-sota-sources.md:22-25 restores the exact historical instruction block from22e3ef6ffd53b09f3cb335c46f7c696093521274. The direct owner speech at :18-20 remains paraphrased; frozen audit inputs are untouched. All seven physical line counts and source locators are preserved. Native register_file updates only their seven existing sha256/bytes rows. The original P1 commit-pinned anchors, protected model-currency sections, source gaps and owner-gate repairs remain intact. No test or F10 implementation change: the CC assigns plugin_notification clearance to the later landing rebase onto main containing #922. FULL precommit validate returned0 at2026-10-09T18:20:57Z:10949 hashed files, 70 components,4 profiles,239 receipts, under a capped native systemd scope. This is source integrity, not a newly executed merged-suite or CC micro. Generated by OpenAI Codex; reasoning effort max.
Apply the three scoped corrections from the CC PASS_WITH_P3 micro on 25af188, plus its five cheap folds, in ONE commit with no rebase or source-branch merge. Must-fix items under docs/decisions/: - 2026-09-27-omniroute-account-pool.md:302 records only that the owner overrode both settings recommendations; the record's risk remains at :290. - 2026-09-30-omniroute-rebuild.md:285-286 separates the relayed owner quality condition from the record's own saving/regression/exact-tool-text requirement. - 2026-09-25-skills-trial-and-usage.md:863 restores the evidence/research delegation and grant to complete the work on the coordinator's end, with full access; no new peer-convergence attribution. Cheap folds from the same micro: - 2026-09-28-ecosystem-roadmap.md:311 removes duplicated recorded wording. - 2026-09-28-top-rule-templates.md:5 preserves the operator's own file and edited 2026-09-28 07:34Z, with loading versus behavior evidence unchanged. - 2026-09-29-key-management.md:41 restores the owner-statements basis for the every-key rule, rather than attributing it to a design-brief reading. - 2026-09-27-omniroute-account-pool.md:304 preserves the gateway route without introducing native-Codex wording. - 2026-09-25-top-rule-sota-sources.md:22-25 restores the exact historical instruction block from22e3ef6ffd53b09f3cb335c46f7c696093521274. The direct owner speech at :18-20 remains paraphrased; frozen audit inputs are untouched. All seven physical line counts and source locators are preserved. Native register_file updates only their seven existing sha256/bytes rows. The original P1 commit-pinned anchors, protected model-currency sections, source gaps and owner-gate repairs remain intact. No test or F10 implementation change: the CC assigns plugin_notification clearance to the later landing rebase onto main containing #922. FULL precommit validate returned0 at2026-10-09T18:20:57Z:10949 hashed files, 70 components,4 profiles,239 receipts, under a capped native systemd scope. This is source integrity, not a newly executed merged-suite or CC micro. Generated by OpenAI Codex; reasoning effort max.
* Ground G6c-A decision records in primary sources * docs: resolve G6c-A dated-record review findings * Restore decision authority and historical source meaning in #885 Restore who decided, their scope and reasons, open owner gates, and recorded source gaps as paraphrase. Keep upstream loading/configuration mechanisms distinct from local decision authority; introduce no owner quotation. CC verdict: pr885-claude-read-8eb4b532.md SHA256 a1a626db8739b50ea5ec48b1436f571bb7d9ba44d138e95fb0b4a3f8901779c8. P1: docs/decisions/2026-10-03-sweep-gpt6-route-settlement.md:9,19,20,23,27,31,127,132 pins 46 historical source locators and three links to the immutable 22e3ef6 revision, preserving Gate B's basis. P2-2: 2026-09-25-top-rule-sota-sources.md:3-5,18-25 restores the decided all-action stop-and-report rule and original task-record provenance. P2-3: 2026-09-28-ecosystem-roadmap.md:106,305 removes the false Gate A custody correction; :311,344 restores the criterion authority and citations. P2-4: 2026-09-25-skills-trial-and-usage.md:1214-1223 restores the M4 readers, non-independence qualification and L16 conflict; removes invented receipts. P2-5: 2026-09-25-skills-trial-and-usage.md:1510,1644-1645 preserves the owner's choice under condition 6, consistent with :1160. P2-6: restore owner gates, recorded reasons and decision authority at 2026-09-27-model-currency.md:62,65; 2026-09-30-skills-llm-native-listing.md:240-241; 2026-09-30-omniroute-rebuild.md:284-286; 2026-10-01-definitive-sota-wsl-program.md:128-130; 2026-09-29-max-default-effort.md:11-12; 2026-09-23-max-effort-default.md:289; 2026-09-29-key-management.md:47-51; 2026-09-28-terminal-experience.md:557; 2026-09-27-omniroute-account-pool.md:301-302; 2026-09-28-delegated-decisions.md:44; 2026-09-29-retire-polaris.md:3. P2-7: 2026-09-30-rule-text-every-layer.md:32-33,178 restores the explicit north-star-action source gap and the authority/reason for the budget exception. P2-8: retain requests and unproved work as open at 2026-10-01-definitive-sota-wsl-program.md:11,25; 2026-09-28-top-rule-templates.md:5; 2026-10-01-new-wsl-architecture-edition.md:109-111. Related P3 repairs retain authority and qualifiers across all 29 original records; restore agent-ecosystem#28 at mac-single-writer-staged.md:12, PR#528 at sol-primary-quality-defaults.md:89-90, PREREGISTRATION L9 at ecosystem-roadmap.md:344, coordination citations at skills-trial-and-usage.md:1214-1218, Decision point 9 at skills-llm-native-listing.md:36, Gate A re-aim at definitive-sota-wsl-program.md:352, and source bases at claude-harness-settings.md:145 and model-currency.md:62. All 30 record line counts stay unchanged. The complete protected October 4 model-currency ending and both October 9 sections remain byte-identical. Native register_file updates only these 30 rows' sha256/bytes fields, preserving registry membership, order and all other keys. Precommit FULL scripts/validate.py: rc 0, 10949 hashed files, 70 components, 4 profiles and 239 receipts, 2026-10-09T17:14:04Z. Genuine merged-tree suite and CC/GPT micros remain required before push/cue; no rebase is performed. Generated by OpenAI Codex; reasoning effort max. * Clarify the remaining #885 attribution boundaries from the CC micro Apply the three scoped corrections from the CC PASS_WITH_P3 micro on 25af188, plus its five cheap folds, in ONE commit with no rebase or source-branch merge. Must-fix items under docs/decisions/: - 2026-09-27-omniroute-account-pool.md:302 records only that the owner overrode both settings recommendations; the record's risk remains at :290. - 2026-09-30-omniroute-rebuild.md:285-286 separates the relayed owner quality condition from the record's own saving/regression/exact-tool-text requirement. - 2026-09-25-skills-trial-and-usage.md:863 restores the evidence/research delegation and grant to complete the work on the coordinator's end, with full access; no new peer-convergence attribution. Cheap folds from the same micro: - 2026-09-28-ecosystem-roadmap.md:311 removes duplicated recorded wording. - 2026-09-28-top-rule-templates.md:5 preserves the operator's own file and edited 2026-09-28 07:34Z, with loading versus behavior evidence unchanged. - 2026-09-29-key-management.md:41 restores the owner-statements basis for the every-key rule, rather than attributing it to a design-brief reading. - 2026-09-27-omniroute-account-pool.md:304 preserves the gateway route without introducing native-Codex wording. - 2026-09-25-top-rule-sota-sources.md:22-25 restores the exact historical instruction block from22e3ef6ffd53b09f3cb335c46f7c696093521274. The direct owner speech at :18-20 remains paraphrased; frozen audit inputs are untouched. All seven physical line counts and source locators are preserved. Native register_file updates only their seven existing sha256/bytes rows. The original P1 commit-pinned anchors, protected model-currency sections, source gaps and owner-gate repairs remain intact. No test or F10 implementation change: the CC assigns plugin_notification clearance to the later landing rebase onto main containing #922. FULL precommit validate returned0 at2026-10-09T18:20:57Z:10949 hashed files, 70 components,4 profiles,239 receipts, under a capped native systemd scope. This is source integrity, not a newly executed merged-suite or CC micro. Generated by OpenAI Codex; reasoning effort max. * Clarify delegated item authority and adjacent provenance in #885 * Restore the September 30 effort amendment terms in #885 --------- Co-authored-by: seathatflowsinourveins <[email protected]>
Scope
Raise the native Claude Code installer minimum from 2.1.284 to 2.1.295 and classify the same release's newly encountered
plugin_notificationtype as quiet. Equal or newer clients remain eligible. The installed-client notification gate previously failed because the type had no decision; it now passes with 19 explicit decisions. The lifecycle audit's current identity now matches the canonical 2.1.295 floor, fixing the unchanged lifecycle contract test.958a6d1ab770c807c5ee59748475a5c14df7ba52; lane:lane:foundation.24945c864c96637273d3261e2eed30023983feeb.SOTA sources
b36d7b376c95dd409212ecce0b700cd547266d9ea014ab1f81a1d5bc49cb3cbe, release commit07e8f67ea3282bf154a9e05673a0942b1b173cef. Retained cc-native-practice check at 2026-10-09T06:13:50Z: manifest b36d7b37, Good signature, fingerprint 31DD DE24 … CACE; Linux artifact 4503bfe1…f358, 256,113,848 B. Proposal section B SHA2569ae0a4c2faf71cd93b8aacce931fa4f96b15386e1da62f343d17ba499c096440.4503bfe11a6c7fcc1e0b39b5e0d347c04248f750b03b0977b3ad6b531fe6f358. Bounded reads of the installed 2.1.295 source locate the plugin$.ui.notifyemitter at byte offset 217182500 and notification catalog at 207984418. The emitter forwards plugin text/title/origin and carries no approval or input-wait predicate. This supports quiet classification under the existing escalation-only bell policy.plugin_notificationoccurrence. The documented count stays 12. The source record retains the sample hash/date and distinguishes current documentation from the version-pinned binary.0116ee2e0a513900b633d9951367f18747686478e2b462805b8c31609f047f70remains a manifest crosscheck, with no new Mac execution or rehash.scripts/build_new_wsl_handbook.pyandscripts/new_host_grand_list.py, run through their write/check interfaces for the original floor delta. One dated decision covers the minimum and notification classification.Evidence-class table
source_reviewsynthetic/local_integration$.ui.notifyat 2.1.295source_reviewf10-2.1.295-source.jsonlocal_integrationlocal_integrationLocal commands run
Every local module uses
nice -n 10 ionice -c2 -n7 timeout 600 python3 -m unittest <module>.Final required modules after the rebase and lifecycle repair: 311 cases, 289 passed, 22 skipped, zero failures. The earlier R136/R138 module runs are retained as history and are not represented as repeats at this new head.
The required diagnostic ran the merge-base versions of all four changed test modules against
24945c864c96637273d3261e2eed30023983feeb:It returned 1, with four failed assertions across three files. These changed expectations are declared for review: the Linux fixture floor assertion still expects 2.1.284; the Mac native-pin and fixture-floor assertions still expect 2.1.284; the notification-table assertion still expects 18 decisions. The floor is now 2.1.295 and the decision table has 19 entries. The base profile module passed. Current versions of all four modified modules pass, and the preserved installed-client regression case passes on the rebased current tree. This diagnostic failure is not presented as a passed or waived gate.
The earlier F10 current-profile run exposed a stale selected-version mirror in the rolling upstream snapshot. Synchronizing that metadata repaired its generator consistency check; the profile and landscape modules passed in the F10 unit; the profile module passes again after this rebase. Earlier publication validation rejected a personal home path in the raw failure traceback. The public copy substitutes
<repo>; raw outputs remain in private lane custody. Both initial logs are retained, and final validation returns 0.The lifecycle audit change is one current identity value (
claude-code.version: 2.1.284 → 2.1.295) plus its evidence hash. All dated functional receipts, recertification flags and limits are preserved.tests.test_stack_lifecyclereturned 1 before that repair and now returns 0 for all six cases. Rebased once onto the base above, preserved main's evidence rows during the sole conflict and used the CC's native re-registration helper for the audit. No new test expectation was introduced for this repair.Decision record
docs/decisions/2026-10-09-claude-code-floor.mdcovers both changes, with the pinned emitter, quiet classification, documentation boundary, minimum semantics and inverse. The sharedDECISIONStable containsplugin_notification = (quiet, False, reason); the repository bell matcher excludes it and still names exactly the ring decisions.Before/after outputs and source metadata are committed under
evidence/artifacts/notification-types-20260929/recorded/f10-2.1.295-*. Private native logs and the full-head diagnostic remain undercoordination/ns2604-coop/lanes/currency-work/claude-code-floor-20261009/f10.Revisit the quiet choice if a later pinned emitter establishes an explicit needed-action contract. Restoring the prior minimum metadata does not downgrade a newer launcher; removing the notification decision restores the fail-closed unknown-type failure on 2.1.295.
Host evidence
No host acceptance or platform-status flip is claimed. Notification evidence is source/consistency validation against the installed client; it does not apply user-level client settings or exercise live delivery.
Checklist
Keep draft for the head gates. The base-test diagnostic is reported separately and never treated as a waived check. Landing follows the shared-manifest rebase/re-registration procedure on the CC cue.