Skip to content

Adoption hygiene: native Claude Code pin is a floor (2.1.281), ai-memory assistant capture opt-in, ignore Claude Code local state - #159

Merged
seathatflowsinourveins merged 5 commits into
mainfrom
claude/adoption-hygiene-20260924
Sep 25, 2026
Merged

seathatflowsinourveins merged 5 commits into
mainfrom
claude/adoption-hygiene-20260924

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Why

  • adoption/bootstrap-macos.sh's install_native always ran "$bin" install <pin>. On a Mac whose native updater follows the latest channel (now 2.1.281), every bootstrap re-run moved Claude Code back to the 2.1.280 pin and lost 2.1.281's fixes. Per its CHANGELOG, 2.1.281 stops a recursive rm of command-substitution output (e.g. rm -rf "$(pwd)") from running unprompted in auto and --dangerously-skip-permissions mode.
  • adoption/templates/claude.settings.template.json put --capture-assistant on ai-memory's Stop hook, so capturing assistant output was on by default. The owner's rule is to keep automatic history capture off.
  • .claude/settings.local.json and in-repo .claude/worktrees/ were not ignored. A Claude Code worktree inside the repo showed up as untracked, so git add -A could commit it as an embedded repository.

What

  1. The native pin is a floor. install_native keeps ~/.local/bin/<bin> when its --version reports a dotted numeric version at or above the pin, compared field by field (2.1.99 < 2.1.281). In that case it downloads and installs nothing and logs Kept installed claude-code <v>. A missing, older or unreadable launcher gets the unchanged checksum-verified install. The check is bash 3.2 safe.

  2. Both claude-code pins are now 2.1.281. Shared components keep one version on both platforms (test_shared_components_keep_the_linux_pinned_version), so Linux moves too. Checksums come from the official 2.1.281 manifest:

    • darwin-arm64: a922981f6f3b55a251ef9f9dbaa0621a5f99cbcb5ca67f8a797476ccfc83f626
    • linux-x64: 56fe3da88458465fb27d7e9299dddb3fead55750fb9c2de795f233b5eea6dce1

    Both were re-checked independently against that manifest on 2026-09-24, and CI's bootstrap jobs downloaded and verified both binaries. The macOS page's pin table, a floor paragraph and the generated new-host grand list (scripts/new_host_grand_list.py --write) are updated.

  3. Assistant capture is an explicit opt-in. The Stop hook ends at --server-url http://${AI_MEMORY_URL}${AI_MEMORY_CAPTURE_ASSISTANT}. render_config.py renders AI_MEMORY_CAPTURE_ASSISTANT=true (host value file or --set) as --capture-assistant. Absent, empty or false renders nothing, and any other value is an error. This is documented in the renderer's --help and in adoption/README.md. defaultMode: bypassPermissions and skipDangerousModePermissionPrompt are unchanged (the owner's choice).

  4. .gitignore adds .claude/settings.local.json and .claude/worktrees/.

  5. Evidence and docs contract. manifests/evidence.json is re-hashed for all 13 changed files with the repo's host_receipts.register_file helper. adoption/bootstrap.md step 2 gains the required changed after `v2026.09.23.1` note.

Merge notes

manifests/evidence.json is also edited by #116, #145, #151 and #158, and adoption/bootstrap.md by #145. Whichever lands later should rebase, keep both sides, and re-run the helper for its changed files. Pass each path as a separate argument; a zsh variable holding a newline-joined list is rejected as non-canonical:

python3 -c 'import sys; sys.path.insert(0, "scripts"); from pathlib import Path; import host_receipts; [host_receipts.register_file(Path("."), p) for p in sys.argv[1:]]' $(git diff --name-only origin/main...HEAD)

How verified

  • CI: all 19 checks pass: validate and validate-macos (full suites), bootstrap-linux, bootstrap-macos, bootstrap-macos-brew, secret-scan, verdict-review-gate, CodeQL (6 languages), osv-scanner, dependency-review, token-report and Socket. The 3 skipped jobs run only on main.
  • Locally, macOS arm64:
    • scripts/validate.py, scripts/validate_convergence.py --all-recorded --root . and scripts/host_receipts.py validate all exit 0.
    • The adoption test modules (192 tests) pass except LlamaWrapperQuotingTests. That test fails identically on an untouched checkout of main (8eacd8b), because System Integrity Protection strips DYLD_LIBRARY_PATH from /bin/sh on a real Mac. It is pre-existing and not caused by this PR.
  • New tests: NativeInstallFloorTests (5 tests, 12 launcher cases, including a real bash 3.2 run and a checksum mismatch that still fails closed) and 3 test_render_config cases.
  • Mutation checks: against the old code, the 5 "kept" cases plus the bash 3.2 case fail, and exactly the 3 new render tests fail.
  • Linters and scanning: shellcheck -S style, bash -n and actionlint 1.7.12 are clean. gitleaks 8.30.1 found no leaks.

Notes for the owner

  • Existing hosts: tools/adoption/apply_claude_settings.py never drops live hooks. A live ~/.claude/settings.json that already has the --capture-assistant Stop hook keeps it; remove that entry by hand. This Mac's live settings have no such hook.
  • Linux can still downgrade: adoption/bootstrap-linux.sh still reinstalls the pin unconditionally. That is out of scope here.
  • Stale sentence, pre-existing: step 2 of adoption/bootstrap.md says "Linux/WSL2's script and pins are the same at v2026.09.23 as on main". That was already untrue on main before this PR: bootstrap-linux.sh +56 lines and pins-linux-x86_64.json +43/−5 since that tag. It is left unchanged to avoid widening the conflict with Blind lanes round 2: sanitized export, receipt aliases, two-family adjudication #145.

🤖 Generated with Claude Code

…ory 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]>
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]>
@seathatflowsinourveins
seathatflowsinourveins marked this pull request as ready for review September 24, 2026 04:09
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-24T04:13:29.952259Z 98ab747 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Resolves the manifests/evidence.json conflict with #161 by regenerating the
adoption/bootstrap.md entry through scripts/host_receipts.py register_file().

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Foundation lane here: this PR is in the foundation lane (labelled lane:foundation). It is now conflicting with main (evidence manifest and generated grand-list files moved). Its local worktree on the Mac was last touched around 00:00 EDT at 98ab747, while the remote head is 48297c8. If this is your PR, please claim it on seathatflowsinourveins/agent-ecosystem#28 and rebase it; see the hot-file protocol in the proposed docs/lanes.md. If nobody claims it by 2026-09-25 12:00 UTC, the foundation lane will rebase it from the remote head: resolve manifests/evidence.json by re-registering, regenerate the grand list, re-run validate.py and the adoption tests, then merge.

seathatflowsinourveins added a commit that referenced this pull request Sep 24, 2026
…up (#195)

Measured on macos-m5pro-20260924 (Apple M5 Pro, 24 GB) on 2026-09-24:
- Excluding the gitleaks runaway, processes held 26.84 GiB of footprint
  plus 3.07 GiB wired on 24 GiB. There were 357.8 GiB of swap writes in
  4.81 days, and two Jetsam events (09:45 and 09:46 EDT) killed 405 and
  then 4,255 processes.
- Loading the RAG embedder (qwen3-embedding:4b, 4.09 GiB) leaves
  2,079 MB unused with Chrome closed.
- The Metal working-set limit is 17.76 GiB, below the 17.67 GiB of the
  27B Q4_K_M weights plus any cache.

Added:
- evidence/artifacts/host-upgrade-20260924/upgrade-evidence.json: the
  RAM gate, the replacement recommendation (64 GB, M5 Pro) with Apple
  Store prices read 2026-09-24, and the Mac role. The Mac is the
  cockpit and coordinator; heavy and always-on lanes run on the WSL2
  workstation. It supersedes the projected-64 GB MacBook item of
  host-upgrade-20260923.
- evidence/artifacts/host-upgrade-20260924/foundation-alignment.json:
  memory, RAG and foundation-layer state on the Mac, the saturation
  status, and the model candidates. It also records the user's
  2026-09-24 license decision and the open items for the replacement
  Mac.
- docs/next-host-stages.md: the macOS role row and upgrade row, and
  replacement-Mac pickup steps. The pickup steps skip bootstrap-macos
  launchd agents where the agent-ecosystem services exist, and add the
  RAM-fit matrix and SSH to the workstation.
- manifests/evidence.json: registrations and the updated doc hash.

No Mac global state was changed. It has one writer
(foundation-lane-setup, agent-ecosystem#28). This leaves the files of
#185, #159 and #177 alone.

Co-authored-by: seathatflowsinourveins <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
# Conflicts:
#	.gitignore
#	docs/new-host-grand-list.md
#	manifests/evidence.json
# Conflicts:
#	manifests/evidence.json
@seathatflowsinourveins
seathatflowsinourveins merged commit 83b6f87 into main Sep 25, 2026
23 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/adoption-hygiene-20260924 branch September 25, 2026 14:41
seathatflowsinourveins added a commit that referenced this pull request Sep 25, 2026
…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>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 25, 2026
…obed

install_pin now records a pin in installed_pin_ids before #177's early
return for a kept native launcher, so a Claude Code at or above its 2.1.281
floor is still checked by the version report (minimum match). Pins re-taken
from main (2.1.281) with the version_probe declarations re-applied; the
linux-wsl2 step keeps both changed-after notes.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 25, 2026
- Step 3 now runs install-hooks with explicit --agent, --config-file and
  --server-url http://127.0.0.1:49474 for Claude Code and Codex, and keeps
  this host's capture choices: neither hook set carries
  --capture-assistant today, and a re-run without it removes the flag.
  It notes that 49374 is another WSL distro's default on this machine.
- Step 2 adds adoption/templates/claude.settings.template.json, whose
  eight hook commands hardcode tools/ai-memory-2.3.2.
- The header says the doc was first written against 720e294 and that
  #159 (83b6f87) made assistant capture opt-in.
- Only GHSA-9pj6 affects the HTTP server; GHSA-9g45 affects the rmcp
  client used by mcp-bridge, and GHSA-33f5 affects OAuth discovery,
  which 2.3.2 does not enable (checked against its rmcp features).
- The %USERPROFILE% fallback is not Windows-only (#804 reads it on every
  platform). #859 merged into release/2.5. The overturn condition no
  longer says "Adopt 2.4.0" and "not 2.4.0" at once.
- Adds two default-on changes: the memory_briefing pinned list (#780)
  and memory_status evidence_rows.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Sep 25, 2026
…ay, Nemotron qualification on the RTX 4090, ai-memory 2.4.0 review (#256)

* Re-record the workstation systemd install receipt as the Ubuntu apt package

Supersedes nativestack-5975wx-20260925--systemd--install--20260925, whose
limitation said systemd was an install under the ecosystem prefix; its
independent review is needs_changes. The new -2 generation adds
`command -v systemctl` and `dpkg-query -S /usr/bin/systemctl`, keeps the
version, package, cgroup-delegation and pin checks, and states that systemd
is the Ubuntu apt package 255.4-1ubuntu8.17 at /usr/bin/systemctl. The
original file is unchanged. The matrix and the manifest registration are
regenerated in the branch's last commit (docs/lanes.md hot-file protocol).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Replay the SPY/LEAN parity harness on the RTX 4090 workstation (CPU only)

Ran the spy-parity README's bwrap replay on nativestack-5975wx-20260925 with
this host's roots (~/.local/share/codex-ecosystem/nautilus-py312 and
lean/Lean/Data instead of the README's tools/ paths). run.py exited 0 with
the five frozen inputs accepted; every economic field and both normalized
economic hashes equal receipt-v2.json (fills 304 @ 323.58 / -304 @ 291.69,
distributions 0.00 and 428.64, native end cash 90734.08).

compare.py --lean-data on receipt-v2.json on this host: exit 0, PASS,
complete, 0 failed, equal to verdict-v2.json except the replay-history
check's observed text. On this host's own receipt: exit 1, FAIL, 106/106
execution checks, with the two review preconditions failing by design,
since a retry of the reviewed cc4503f harness cannot qualify. The --bars
mode gives FAIL on both receipts, because v2 counts its skipped
input-rehash check as FAIL; I predicted PASS and kept that wrong
prediction. Negative controls: tampered bars and an altered input are
both refused.

The run is recorded in the blueprint's format: the fresh receipt and
verdicts go under evidence/artifacts/workstation-lane-20260925/spy-parity/,
the replay is appended to replay-history-v2.json, and the README gets a
dated note. The agreed nautilustrader quickstart host receipt is not
superseded. Gate G-a and every catalog status are unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Qualify Nemotron-3-Embed-1B on the RTX 4090 vLLM service (model-card bar)

Supersedes nativestack-5975wx-20260925--vllm--use--20260925 with a -2
generation that keeps its three commands: /version, unit, GPU and pin;
/v1/models; and the asserted backup ranking. The new generation adds a
qualified_models entry for nvidia/Nemotron-3-Embed-1B-BF16 at revision
c0c9fea93ea424587517f2c59e20db9f1d6bf615 on vllm 0.25.0. The requests are
read-only HTTP to the running 127.0.0.1:18231; the service was not
touched.

The bar is the repository's reproducible model-card qualification
(docs/hf-memory-model-qualification.md):
- hf cache verify of the served directory: 15 files at the revision. A
  two-file copy passes, and the same copy fails after a one-byte
  alteration.
- NVIDIA's exact /v2/embed Recommended Retrieval example, with only the
  URL changed, ranks 4/4 intended documents first, max |d| 0.0006 to the
  card's printed output.
- /v1/embeddings with query:/passage: prefixes ranks 4/4, 2048 dims, unit
  norms, max |d| 0.0005 to the 2026-09-21 laptop scores.
- With the documents rotated, the ranking assertion fails (0/4).

The 0.005 tolerance and the rotated control were preregistered; the
checking script and the preregistration are in
evidence/artifacts/workstation-lane-20260925/nemotron-qualification/.

The laptop's ai-memory hybrid-retrieval bar was not rerun: its corpus is
a private sealed store and its query set is not committed. Its winning
arm also needed max-model-len 8192, while this service runs 4096.

The matrix, the grand list and the manifest registration are regenerated
in the branch's last commit (docs/lanes.md hot-file protocol).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Record the ai-memory 2.4.0 release review for the workstation (no upgrade)

This read-only review compares the v2.4.0 release (tag 5c4350e3, commit
b1b25219) with the 2.3.2 pin: 118 commits and 137 files. Findings:

- Two additive migrations, V65 and V66. Both are forward-only, and a
  2.3.2 binary or hook fails closed on the migrated store.
- rmcp 2.2 fixes three MCP transport advisories. This host serves the
  HTTP transport on 127.0.0.1:49474.
- Several default behaviour changes: access reinforcement, refusal of
  page writes that collide on case or Unicode normalization, broader
  capture redaction, and a memory_status scope object.
- The new config keys all default to off.
- The server, hooks and MCP clients need a coordinated restart.

Upstream PR #859 (query/document embedding prefixes) merged after the
release, so 2.4.0 does not contain it. The record lists what a later
upgrade window must check. No binary, hook, configuration, service or
store was changed, and the pin stays 2.3.2.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Add the independent review of the workstation systemd install -2 receipt

An independent headless Claude Code session re-ran all six commands with
byte-identical output hashes and appended an independent_session agree
(2026-09-25T14:51:57Z). The review is committed exactly as it recorded
it. The receipt's catalog_revision, 720e294, is on main.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Require exactly 0/4 from the Nemotron rotated-documents control

preregistration.txt (Q4) says the rotated check "must report 0/4
intended-first and fail its ranking assertion". model_card_check.py
v1-rotated exited 0 for any result below 4/4, so a partial 1/4 to 3/4
would have counted as the expected control. It now exits 0 only at
exactly 0/4, and prints control_required "0/4". Checked on synthetic
rankings: 0/4 exits 0; 1/4, 3/4 and 4/4 exit 1. The independent review
of the first recording found this.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Withdraw the first workstation vLLM use -2 recording to an artifact

Its catalog_revision, 66fd7e96, is a local pre-rebase commit. GitHub
returns 422 for it, so host_receipts.py validate fails in CI (run
36149652903), and the independent review recorded needs_changes. A
receipt is never edited after recording, so the file moves out of
evidence/hosts/ unchanged, with both reviews, to
evidence/artifacts/workstation-lane-20260925/nemotron-qualification/withdrawn/.
The README there quotes the reviewer's reasons verbatim and names the
replacement recording.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Re-record the workstation vLLM use -2 receipt at origin/main 8c7b7f3

Recorded with scripts/host_receipts.py record from a detached worktree
whose HEAD was origin/main 8c7b7f3, so catalog_revision is on GitHub.
The branch's committed model_card_check.py (with the strict 0/4 rotated
control) and preregistration.txt were copied in at the same paths; the
fifth command prints their sha256. --supersedes names the #231 original,
so record assigned the next free generation, -2.

It keeps the original three use commands, the hf cache verify check and
its altered-file control, the /v2/embed and /v1/embeddings ranking checks
and the rotated control, and adds an OS and WSL version command (Ubuntu
24.04.5 LTS, WSL 2.7.13.0). The claim and bars say that the /v2 run was
compared only with the card's printed scores (max |d| 0.0012) and the /v1
run only with the 2026-09-21 laptop scores (max |d| 0.0005). The
limitations give the preregistration timing (about 3 minutes before the
first recording; the rehearsal ran after it) and say every result was
known before this recording. All ten commands exit 0. It carries only
the self review and needs an independent_session review.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Correct the SPY/LEAN host replay record after review

- The checkout now names 720e294 instead of 156d9cc7, a local commit
  that is not on GitHub, in the new replay-history-v2.json entry and in
  spy-parity-host-replay.json. The first seven history entries are
  byte-identical, and compare.py's own append check still passes on
  both receipt-v2.json (extended by 2) and the host receipt (extended
  by 1).
- The record now acknowledges the second wrong prediction: C2 predicted
  bytes equal to verdict-v2.json (1816835f...) and got 9decd956...,
  which differs at replay_history_at_comparison.
- B2: only no_prior_replay_ran_the_reviewed_harness fails by design.
  retained_record_before_run fails because the README's run.py command
  omits --review-record (compare.py:702-704), although
  review-record-v2-cc4503f.json exists.
- The README note says the --bars example exits 1 on both v2 receipts.
- The history note no longer says every listed replay is superseded and
  unreviewed; compare.py compares only `replays`, so the note edit does
  not affect the append check.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Correct the ai-memory 2.4.0 release review after independent review

- Step 3 now runs install-hooks with explicit --agent, --config-file and
  --server-url http://127.0.0.1:49474 for Claude Code and Codex, and keeps
  this host's capture choices: neither hook set carries
  --capture-assistant today, and a re-run without it removes the flag.
  It notes that 49374 is another WSL distro's default on this machine.
- Step 2 adds adoption/templates/claude.settings.template.json, whose
  eight hook commands hardcode tools/ai-memory-2.3.2.
- The header says the doc was first written against 720e294 and that
  #159 (83b6f87) made assistant capture opt-in.
- Only GHSA-9pj6 affects the HTTP server; GHSA-9g45 affects the rmcp
  client used by mcp-bridge, and GHSA-33f5 affects OAuth discovery,
  which 2.3.2 does not enable (checked against its rmcp features).
- The %USERPROFILE% fallback is not Windows-only (#804 reads it on every
  platform). #859 merged into release/2.5. The overturn condition no
  longer says "Adopt 2.4.0" and "not 2.4.0" at once.
- Adds two default-on changes: the memory_briefing pinned list (#780)
  and memory_status evidence_rows.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Register the branch's files and regenerate the matrix and grand list

Hot-file protocol (docs/lanes.md): manifests/evidence.json starts from
main's copy (8c7b7f3), and register_file re-registers the 28 evidence,
blueprint and receipt files this branch adds or changes, including the
withdrawn vLLM -2 artifact and the re-recorded vLLM -2 receipt.
component_matrix.py --write and new_host_grand_list.py --write then
regenerated the four reports. The vLLM row no longer shows the withdrawn
receipt's dissent, and the grand list gains the Nemotron qualified-model
row from the new receipt.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Record the independent-session review of the corrected vllm use receipt

A separate headless Claude Code session re-ran all ten receipt commands
read-only (all exit 0) and recorded agree; the matrix counts for vllm in
foundation/semantic-rag move from 3/0/1/0 to 3/0/2/0.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

---------

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
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