Repository navigation
Carry the dated manifest's surviving newcomers into every packet (--manifest-newcomers) - #151
Conversation
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: 8eda7de7ca
ℹ️ 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".
8eda7de to
434b0f9
Compare
…a refuted discovery (Codex review of #151) - LABEL_BEARING_RECEIPT also covers the manifest disposition vocabulary (refuted, keep_but_compare, targeted_candidate, newcomer, discovered, reject, demot, disposition); none of the 142 registered receipts matches the added terms. - A refuted_* disposition withholds only a newcomer addition: the 2026-09-23 refutations of ledger repositories refute the discovery proposal ("not new to the catalog", "already conditional"), not the repository, so a ledger candidate keeps its place (documented and tested). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0b0557c08a
ℹ️ 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".
…a refuted discovery (Codex review of #151) - LABEL_BEARING_RECEIPT also covers the manifest disposition vocabulary (refuted, keep_but_compare, targeted_candidate, newcomer, discovered, reject, demot, disposition); none of the 142 registered receipts matches the added terms. - A refuted_* disposition withholds only a newcomer addition: the 2026-09-23 refutations of ledger repositories refute the discovery proposal ("not new to the catalog", "already conditional"), not the repository, so a ledger candidate keeps its place (documented and tested). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
0b0557c to
fa68f8b
Compare
…ew of #151) Hugging Face model candidates have no GitHub slug and were dropped. Under --manifest-newcomers a non-GitHub https repository is identified by its lowercased URL (no trailing slash or .git); the default build keeps the slug-only rule. On manifest-20260923 the blind build now carries 312 candidates, 6 of them Hugging Face models. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c84a1b64ab
ℹ️ 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".
… with (Codex review of #151) An evidence[] entry such as '<path> items[x].corrections[0]' now attaches <path> (registered, unchanged, not label-bearing when blind); the locator is dropped. The 2026-09-23 manifest names one such file; the landscape-sweep source-review receipts supply the rest. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
@codex review |
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
…a refuted discovery (Codex review of #151) - LABEL_BEARING_RECEIPT also covers the manifest disposition vocabulary (refuted, keep_but_compare, targeted_candidate, newcomer, discovered, reject, demot, disposition); none of the 142 registered receipts matches the added terms. - A refuted_* disposition withholds only a newcomer addition: the 2026-09-23 refutations of ledger repositories refute the discovery proposal ("not new to the catalog", "already conditional"), not the repository, so a ledger candidate keeps its place (documented and tested). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ew of #151) Hugging Face model candidates have no GitHub slug and were dropped. Under --manifest-newcomers a non-GitHub https repository is identified by its lowercased URL (no trailing slash or .git); the default build keeps the slug-only rule. On manifest-20260923 the blind build now carries 312 candidates, 6 of them Hugging Face models. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… with (Codex review of #151) An evidence[] entry such as '<path> items[x].corrections[0]' now attaches <path> (registered, unchanged, not label-bearing when blind); the locator is dropped. The 2026-09-23 manifest names one such file; the landscape-sweep source-review receipts supply the rest. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
32be199 to
ebd03f0
Compare
…a refuted discovery (Codex review of #151) - LABEL_BEARING_RECEIPT also covers the manifest disposition vocabulary (refuted, keep_but_compare, targeted_candidate, newcomer, discovered, reject, demot, disposition); none of the 142 registered receipts matches the added terms. - A refuted_* disposition withholds only a newcomer addition: the 2026-09-23 refutations of ledger repositories refute the discovery proposal ("not new to the catalog", "already conditional"), not the repository, so a ledger candidate keeps its place (documented and tested). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ew of #151) Hugging Face model candidates have no GitHub slug and were dropped. Under --manifest-newcomers a non-GitHub https repository is identified by its lowercased URL (no trailing slash or .git); the default build keeps the slug-only rule. On manifest-20260923 the blind build now carries 312 candidates, 6 of them Hugging Face models. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… with (Codex review of #151) An evidence[] entry such as '<path> items[x].corrections[0]' now attaches <path> (registered, unchanged, not label-bearing when blind); the locator is dropped. The 2026-09-23 manifest names one such file; the landscape-sweep source-review receipts supply the rest. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
ebd03f0 to
cd91dc0
Compare
…a refuted discovery (Codex review of #151) - LABEL_BEARING_RECEIPT also covers the manifest disposition vocabulary (refuted, keep_but_compare, targeted_candidate, newcomer, discovered, reject, demot, disposition); none of the 142 registered receipts matches the added terms. - A refuted_* disposition withholds only a newcomer addition: the 2026-09-23 refutations of ledger repositories refute the discovery proposal ("not new to the catalog", "already conditional"), not the repository, so a ledger candidate keeps its place (documented and tested). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ew of #151) Hugging Face model candidates have no GitHub slug and were dropped. Under --manifest-newcomers a non-GitHub https repository is identified by its lowercased URL (no trailing slash or .git); the default build keeps the slug-only rule. On manifest-20260923 the blind build now carries 312 candidates, 6 of them Hugging Face models. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… with (Codex review of #151) An evidence[] entry such as '<path> items[x].corrections[0]' now attaches <path> (registered, unchanged, not label-bearing when blind); the locator is dropped. The 2026-09-23 manifest names one such file; the landscape-sweep source-review receipts supply the rest. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
cd91dc0 to
9931380
Compare
…anifest-newcomers) Foundation packets took their candidates from the frozen v1 ledger only, so a repository discovered after it (the 2026-09-23 landscape sweep) never reached a foundation lane. With --manifest-newcomers: - foundation packets add the manifest row's newcomers and keep-but-compare alternatives, shuffled with the ledger candidates so a key's position does not tell them apart; - a repository with a refuted_* disposition in any entry is left out (both catalogs); - a newcomer's evidence_refs are its evidence[] entries that are exactly an evidence/ path registered in manifests/evidence.json files[] with the file's current sha256; label-bearing paths are dropped when blind. Off by default, so the 2026-09-22 packets reproduce. On manifest-20260923 the blind build gains 29 foundation newcomers and drops 9 refuted trading ones (306 candidates, no withheld keys remain). Tests: 14 new lane_packets tests; full suite 3596 OK (342 skipped). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…a refuted discovery (Codex review of #151) - LABEL_BEARING_RECEIPT also covers the manifest disposition vocabulary (refuted, keep_but_compare, targeted_candidate, newcomer, discovered, reject, demot, disposition); none of the 142 registered receipts matches the added terms. - A refuted_* disposition withholds only a newcomer addition: the 2026-09-23 refutations of ledger repositories refute the discovery proposal ("not new to the catalog", "already conditional"), not the repository, so a ledger candidate keeps its place (documented and tested). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ew of #151) Hugging Face model candidates have no GitHub slug and were dropped. Under --manifest-newcomers a non-GitHub https repository is identified by its lowercased URL (no trailing slash or .git); the default build keeps the slug-only rule. On manifest-20260923 the blind build now carries 312 candidates, 6 of them Hugging Face models. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… with (Codex review of #151) An evidence[] entry such as '<path> items[x].corrections[0]' now attaches <path> (registered, unchanged, not label-bearing when blind); the locator is dropped. The 2026-09-23 manifest names one such file; the landscape-sweep source-review receipts supply the rest. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…s onto #145 a4dfd99 Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
9931380 to
cf82e68
Compare
…view of #151 at cf82e68, P2) With --manifest-newcomers, granite-embedding's unique name part "embedding" became a redaction term and semantic-rag's requirement lost "a compatible embedding service". Capability and format words measured in newcomer names (embedding, embed, reranker, multilingual, bench, https, typescript, parallel, orchestrator, group, brokerage and variants) are generic name parts now. A real-manifest test requires newcomers to add no placeholder to any packet's shared prose; the default build changes only LEAN's "Brokerage model" line. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
Local cross-family review of the rebased #151 (
Fixed in
🤖 Generated with Claude Code |
…ory assistant capture opt-in, ignore Claude Code local state (#159) * Adoption hygiene: native Claude Code pin is a floor (2.1.281), ai-memory assistant capture is opt-in, ignore Claude Code local state bootstrap-macos.sh's install_native ran `"$bin" install <pin>` even when Claude Code's native auto-updater had already installed something newer, so re-running the bootstrap downgraded it. It now keeps a ~/.local/bin/<bin> whose --version is at or above the pin (logs "Kept", downloads and installs nothing); a missing, older or unreadable launcher takes the unchanged checksum-verified install. The check lives inside install_native because tests/test_adoption_bootstrap.py runs that function on its own. Bash 3.2 safe. Both claude-code pins move to 2.1.281 together (shared components keep one version on both platforms). darwin-arm64 a922981f... comes from the official 2.1.281 manifest.json and matches, byte for byte, the copy the native updater installed on a Mac. linux-x64 56fe3da8... comes from the same manifest and was not re-hashed; fetch() checks it before running anything. 2.1.281 fixes a recursive rm of command-substitution output running unprompted in auto and --dangerously-skip-permissions mode. The macOS page's pin table and the generated new-host grand list follow the pins. The Claude settings template no longer passes --capture-assistant to ai-memory's Stop hook. render_config.py adds it only when AI_MEMORY_CAPTURE_ASSISTANT=true (host value file or --set) and rejects any value other than true, false or empty. defaultMode and skipDangerousModePermissionPrompt are unchanged. .gitignore adds .claude/settings.local.json and .claude/worktrees/. Not included, because open PRs #116, #145 and #151 own these files: the manifests/evidence.json re-hash of the 12 changed files, and the adoption/bootstrap.md "changed after `v2026.09.23.1`" marker for the three changed install inputs. Co-Authored-By: Claude Opus 5.5 <[email protected]> * Re-hash evidence and mark the Claude Code floor in the bootstrap guide Records the SHA-256/byte entries for every file this branch changes and adds the "changed after `v2026.09.23.1`" note that the docs-consistency test requires for the new install behavior (pins 2.1.281, floor instead of unconditional reinstall). Both files are also edited by open PRs; whichever lands later re-runs the same host_receipts.register_file helper. Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: seathatflowsinourveins <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]> Co-authored-by: Scout <scout@local>
…loor (stacked on #159) (#177) * Adoption hygiene: native Claude Code pin is a floor (2.1.281), ai-memory assistant capture is opt-in, ignore Claude Code local state bootstrap-macos.sh's install_native ran `"$bin" install <pin>` even when Claude Code's native auto-updater had already installed something newer, so re-running the bootstrap downgraded it. It now keeps a ~/.local/bin/<bin> whose --version is at or above the pin (logs "Kept", downloads and installs nothing); a missing, older or unreadable launcher takes the unchanged checksum-verified install. The check lives inside install_native because tests/test_adoption_bootstrap.py runs that function on its own. Bash 3.2 safe. Both claude-code pins move to 2.1.281 together (shared components keep one version on both platforms). darwin-arm64 a922981f... comes from the official 2.1.281 manifest.json and matches, byte for byte, the copy the native updater installed on a Mac. linux-x64 56fe3da8... comes from the same manifest and was not re-hashed; fetch() checks it before running anything. 2.1.281 fixes a recursive rm of command-substitution output running unprompted in auto and --dangerously-skip-permissions mode. The macOS page's pin table and the generated new-host grand list follow the pins. The Claude settings template no longer passes --capture-assistant to ai-memory's Stop hook. render_config.py adds it only when AI_MEMORY_CAPTURE_ASSISTANT=true (host value file or --set) and rejects any value other than true, false or empty. defaultMode and skipDangerousModePermissionPrompt are unchanged. .gitignore adds .claude/settings.local.json and .claude/worktrees/. Not included, because open PRs #116, #145 and #151 own these files: the manifests/evidence.json re-hash of the 12 changed files, and the adoption/bootstrap.md "changed after `v2026.09.23.1`" marker for the three changed install inputs. Co-Authored-By: Claude Opus 5.5 <[email protected]> * Re-hash evidence and mark the Claude Code floor in the bootstrap guide Records the SHA-256/byte entries for every file this branch changes and adds the "changed after `v2026.09.23.1`" note that the docs-consistency test requires for the new install behavior (pins 2.1.281, floor instead of unconditional reinstall). Both files are also edited by open PRs; whichever lands later re-runs the same host_receipts.register_file helper. Co-Authored-By: Claude Opus 5.5 <[email protected]> * Keep a newer native Claude Code on Linux/WSL2: the pin is a floor there too adoption/bootstrap-linux.sh's install_native ran `"$bin" install <pin>` unconditionally, so on a Linux/WSL2 host whose native updater (latest channel) was ahead of the pin, re-running the bootstrap moved Claude Code back to the pin and dropped newer fixes. install_native is now the same function as bootstrap-macos.sh's (#159): a ~/.local/bin/<bin> whose --version first word is a dotted numeric version at or above the pin is kept (nothing downloaded or installed; install_pin logs "Kept installed ..." instead of "Installed ..."); a missing, older, non-numeric or failing launcher takes the unchanged checksum-verified install. Tests: NativeInstallFloorTests in tests/test_adoption_bootstrap.py run the verbatim fetch/install_native/install_pin against a one-pin fixture (curl shimmed; a shasum-backed sha256sum shim only where GNU --check --status is missing), plus an identity check that both scripts share one install_native. Docs: the Linux claude-code install_note describes the floor; bootstrap.md step 2's stale "Linux/WSL2's script and pins are the same at v2026.09.23 as on main" now says what differs at that tag; the claude-code floor notes on bootstrap.md, linux-wsl2.md and macos-arm64.md name the currently pinned release v2026.09.24.1 (#171), which the docs-consistency test requires. Co-Authored-By: Claude Opus 5.5 <[email protected]> * linux-wsl2.md: keep the changed-after marker on one line (docs-consistency) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: seathatflowsinourveins <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]> Co-authored-by: Scout <scout@local>
…heir approved text The regression added for PR #985 (c9155c3) checked that the docs row and the inventory entry name the research and Jev uses and the runner, and rejected the fragments "separately authorized", "needs its own" and "separate key". The GPT review of c9155c3 (CHANGES_REQUESTED, one P2 at tests/test_credential_status.py:294, :295 and :299-301) measured three contradictions of the owner's 2026-10-10 grant that all passed it, rc 0: - docs/secret-storage.md:20, the dated grant clause replaced by ", excluding the trading lane's research work and Jev harness" - "A trading-lane use requires its own independently authorized key." appended to the docs row - the same sentence appended to the inventory notes (adoption/credential-inventory.json:140) test_typesafe_row_keeps_the_research_and_jev_grant_without_a_separate_key keeps its name: it still says what it enforces. In both real files it now requires the dated affirmative grant and the complete approved text after whitespace normalisation (the docs row and the inventory notes), and loaders equal to exactly the runner command. The phrase blacklist is gone. The same check runs on planted contradictions that must fail it with the expected message: the grant revoked, and each of two key-requirement sentences appended (the one 8e9e56c removed and the reworded one), in both places. A whitespace-only reflow must still pass, and the docs row is found after whitespace normalisation so a reformatted table does not hide it. tests/test_credential_status.py is re-registered in manifests/evidence.json with host_receipts.register_file (docs/lanes.md:107); only its sha256 and bytes change. Corrections audit (#151) Source: the GPT verdict for PR #985 at c9155c3, ~/.cache/ns2604-gpt-reads/ fix2-pr985-c9155c3d8/VERDICT.md (sha256 ccd7bffc9115c3770a481e2eef1b4b663f34ff2e6efe4257f0f7b7c60cb52ba6) with its REVIEW-EVIDENCE.md; the repo's own docs/secret-storage.md:20 and adoption/credential-inventory.json:140 at c9155c3. Mechanism, Python 3.13.16 standard library as installed: unittest/case.py:1324-1338 (assertRaisesRegex), :746-765 (_formatMessage appends the explicit message to the standard one after " : ", which the planted-case regexes rely on) and :537-566 (subTest). Fail before: the c9155c3 test returns rc 0 on each of the three contradictions above. Fail after: this test returns rc 1 on each (docs revocation: "docs/secret- storage.md row lost the dated grant"; the two appended sentences: "departs from the approved text"), and on the exact 2a33680 docs file (194,754 bytes, sha256 028f69a6...), the dropped grant and runner in either file, and a revoked inventory grant. Each run is the single-test command with one real input file changed in an isolated archive copy of c9155c3. Pass after: the single-test command rc 0, 1 test; tests.test_credential_status rc 0, 49 tests; scripts/validate.py rc 0 (11421 hashed files); scripts/evidence_manifest.py --check rc 0. Whitespace-only changes to the docs row and the notes also pass, rc 0. Untested boundary: text outside the pinned docs row, notes and loaders, such as the inventory rotation field, is not bound (a sentence appended there still passes, rc 0). Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… Jev harness (#985) * Authorize the stored TypeSafe key for the trading lane's research and Jev harness The owner decided on 2026-10-10 (north-star plan, owner item 2) that the trading lane's research work and Jev harness may use the stored typesafe key instead of a separate one. Each use still runs in its own process started through the credential runner, and no lane environment holds the key. The inventory note and the secret-storage row now record that; the lane field keeps its single-string schema. Both files are re-registered in manifests/evidence.json per the hot-file protocol. Co-Authored-By: Claude Opus 5.5 <[email protected]> * docs: drop the stale separate-key sentence from the typesafe row The GPT read of #985 found docs/secret-storage.md:20 still said a trading-lane use needs its own, separately authorized key, contradicting this PR's inventory note and body. The sentence is removed; the row keeps the narrow research and Jev-harness grant and the credential-runner requirement. Also restores the missing list comma. Re-registered per the hot-file protocol. Co-Authored-By: Claude Opus 5.5 <[email protected]> * test(credentials): pin the TypeSafe row's grant and runner command PR #985 corrected docs/secret-storage.md:20 so the typesafe row agrees with adoption/credential-inventory.json (owner decision 2026-10-10: the trading lane's research work and Jev harness may also use the stored key, each in its own process started through credential_run.py). No test caught the stale sentence "A trading-lane use needs its own, separately authorized key", and the GPT range-diff read of 8e9e56c asked for a committed regression. The new test in tests/test_credential_status.py, test_typesafe_row_keeps_the_research_and_jev_grant_without_a_separate_key, asserts that the inventory row keeps the runner loader and the grant, that the one docs row keeps the runner command and the grant, and that neither carries a separate-key requirement. tests/test_credential_status.py is re-registered in manifests/evidence.json with host_receipts.register_file (docs/lanes.md:107); only its sha256 and bytes change. scripts/evidence_manifest.py only sorts and checks the order of files[] and has no hash-update mode. Verdict: ~/.cache/ns2604-gpt-reads/fix1b-pr985-8e9e56cdc/VERDICT.md (sha256 b057e6eedb496ae228d1a54805e3814da690e77494b53c53c961092950fccc03). Fail before, with docs/secret-storage.md checked out from 2a33680 and restored afterwards (adoption/credential-inventory.json is identical at both): git checkout 2a33680 -- docs/secret-storage.md python3 -B -m unittest tests.test_credential_status.CredentialStatusTests.test_typesafe_row_keeps_the_research_and_jev_grant_without_a_separate_key rc 1, 1 test, failures=1: 'separately authorized' unexpectedly found (place='docs/secret-storage.md row') python3 -B -m unittest tests.test_credential_status rc 1, 49 tests, failures=1 (only this test) Pass after, at this commit: the same single-test command: rc 0, 1 test python3 -B -m unittest tests.test_credential_status: rc 0, 49 tests (48 before) python3 scripts/validate.py: rc 0 (11421 hashed files) python3 scripts/evidence_manifest.py --check: rc 0 Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * test(credentials): pin the TypeSafe docs row and inventory notes to their approved text The regression added for PR #985 (c9155c3) checked that the docs row and the inventory entry name the research and Jev uses and the runner, and rejected the fragments "separately authorized", "needs its own" and "separate key". The GPT review of c9155c3 (CHANGES_REQUESTED, one P2 at tests/test_credential_status.py:294, :295 and :299-301) measured three contradictions of the owner's 2026-10-10 grant that all passed it, rc 0: - docs/secret-storage.md:20, the dated grant clause replaced by ", excluding the trading lane's research work and Jev harness" - "A trading-lane use requires its own independently authorized key." appended to the docs row - the same sentence appended to the inventory notes (adoption/credential-inventory.json:140) test_typesafe_row_keeps_the_research_and_jev_grant_without_a_separate_key keeps its name: it still says what it enforces. In both real files it now requires the dated affirmative grant and the complete approved text after whitespace normalisation (the docs row and the inventory notes), and loaders equal to exactly the runner command. The phrase blacklist is gone. The same check runs on planted contradictions that must fail it with the expected message: the grant revoked, and each of two key-requirement sentences appended (the one 8e9e56c removed and the reworded one), in both places. A whitespace-only reflow must still pass, and the docs row is found after whitespace normalisation so a reformatted table does not hide it. tests/test_credential_status.py is re-registered in manifests/evidence.json with host_receipts.register_file (docs/lanes.md:107); only its sha256 and bytes change. Corrections audit (#151) Source: the GPT verdict for PR #985 at c9155c3, ~/.cache/ns2604-gpt-reads/ fix2-pr985-c9155c3d8/VERDICT.md (sha256 ccd7bffc9115c3770a481e2eef1b4b663f34ff2e6efe4257f0f7b7c60cb52ba6) with its REVIEW-EVIDENCE.md; the repo's own docs/secret-storage.md:20 and adoption/credential-inventory.json:140 at c9155c3. Mechanism, Python 3.13.16 standard library as installed: unittest/case.py:1324-1338 (assertRaisesRegex), :746-765 (_formatMessage appends the explicit message to the standard one after " : ", which the planted-case regexes rely on) and :537-566 (subTest). Fail before: the c9155c3 test returns rc 0 on each of the three contradictions above. Fail after: this test returns rc 1 on each (docs revocation: "docs/secret- storage.md row lost the dated grant"; the two appended sentences: "departs from the approved text"), and on the exact 2a33680 docs file (194,754 bytes, sha256 028f69a6...), the dropped grant and runner in either file, and a revoked inventory grant. Each run is the single-test command with one real input file changed in an isolated archive copy of c9155c3. Pass after: the single-test command rc 0, 1 test; tests.test_credential_status rc 0, 49 tests; scripts/validate.py rc 0 (11421 hashed files); scripts/evidence_manifest.py --check rc 0. Whitespace-only changes to the docs row and the notes also pass, rc 0. Untested boundary: text outside the pinned docs row, notes and loaders, such as the inventory rotation field, is not bound (a sentence appended there still passes, rc 0). Co-Authored-By: Claude Sonnet 5.5 <[email protected]> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
Stacked on #145; retargets to
mainand is rebased once #145 squash-merges.Why
The 2026-09-23 re-record must judge every layer against the current field. Foundation packets took their candidates from the frozen v1 ledger only, so a repository discovered after it never reached a foundation lane. That includes the 2026-09-23 landscape sweep (github-automation session, one discovery agent per layer with two cross-family refuters). Manifest-mode trading packets carried every manifest newcomer, refuted ones included, with no evidence.
What changes (
tools/sota-convergence/lane_packets.py, opt-in--manifest-newcomers)candidatesandalternatives_keep_but_comparewhose repository is not already a candidate. They are shuffled together with the ledger candidates, so a key's position does not tell them apart.refuted_*disposition in any of its entries is left out, in both catalogs.evidence_refsare itsevidence[]entries that are exactly anevidence/path listed inmanifests/evidence.jsonfiles[]with the file's current sha256. Under--withhold-labels, label-bearing paths are dropped.proposed_label,disposition,source,adversarial_verification,upstream_nowand the evidence prose never enter a packet. Under--withhold-labels,newcomerandnoteare stripped as before.scripts/landscape.py lane_winner_componentsforbids a non-adopted winner. A lane can only prefer one as its challenger, with an overturn protocol.The flag is off by default, so the 2026-09-22 packets reproduce, and all existing lane_packets tests pass unchanged.
Evidence
manifest-20260923.jsonwith--trading-candidates manifest --withhold-labels --registered-receipts --manifest-newcomers, the blind build has 306 candidates across 32 packets: 29 foundation newcomers added and 9 refuted trading newcomers removed.withheld_packet_keysfinds nothing in any packet.🤖 Generated with Claude Code