Skip to content

Pin rtk 0.50.0 and markitdown 0.1.8 on Linux with qualification receipts (workstation SOTA refresh) - #291

Merged
seathatflowsinourveins merged 8 commits into
mainfrom
claude/pins-rtk-markitdown-20260925
Sep 25, 2026
Merged

seathatflowsinourveins merged 8 commits into
mainfrom
claude/pins-rtk-markitdown-20260925

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Sep 25, 2026 •

Copy link
Copy Markdown
Owner

Summary

The Linux x86_64 pins move to rtk 0.50.0 and markitdown 0.1.8, and the qualification evidence is carried as sanitized native_cli_e2e receipts. Both are already switched on the workstation nativestack-5975wx-20260925. This is part of the user-requested 2026-09-25 workstation-lane SOTA refresh.

How each one was qualified:

  • a primary-source upstream review;
  • an adversarial refuter;
  • a fresh-prefix install with A/B acceptance against the current pin, with integrity verified against release checksums or PyPI digests;
  • an independent verifier;
  • a post-switch re-run on the production path.

rtk 0.49.0 → 0.50.0

  • Fixed on the live Claude hook path: 0.49.0 rewrote head -N to smart truncation, returning the wrong lines, and lost the error text of stderr-only failures while keeping the exit code. 0.50.0 fixes both.
  • New in 0.50.0:
    • git show <rev>:<path> is windowed at 8 KiB with a hint, so | tail returns window lines instead of the end of the file.
    • git log -p is capped at 10 commits, with a stderr note.
  • Mitigation, verified on both versions: ~/.config/rtk/config.toml:
    [hooks]
    exclude_commands = ["^git show [^ ]*:", "diff"]
    With it, git show <rev>:<path> and standalone diff run natively. That also fixes diff's pre-existing exit code of 1 instead of 2 on a missing file.
  • New hosts: step 4a of adoption/bootstrap.md now says to create that config. bootstrap-linux.sh prints a reminder after an rtk install when the key is missing; it never writes the file. Both are tested.
  • Acceptance on production (hash-pinned v3.1 script):
    • with the config: 87 PASS / 1 FAIL / 3 NOTE. The only FAIL is the intended native blob path;
    • with an empty config: 88 / 0 / 4.
  • Rollback hazard: 0.49.0 wraps negative saved_tokens under rtk gain --history / --all. Production had 0 negative rows.

markitdown 0.1.7 → 0.1.8

  • Output: the HTML path is byte-identical across arms.
  • Intended changes: <u>, <strike> and %2F handling.
  • Production: bin/markitdown points to a fresh uv-tool prefix, and 10 of 10 legs pass on the production path. 0.1.7 stays installed for rollback.

SOTA sources

  • rtk-ai/rtk v0.50.0: tag commit 1d87b8e7, asset rtk-x86_64-unknown-linux-musl.tar.gz sha256 bc2b8902…5f89, verified against the release checksums.txt and the GitHub API digest. Hook sources cited in recipes/README.md: src/hooks/hook_cmd.rs#L900 and hooks/codex/README.md#L14 at 1d87b8e7; config key [hooks] exclude_commands (src/core/config.rs at the tag).
  • microsoft/markitdown v0.1.8: PyPI sdist markitdown-0.1.8.tar.gz sha256 17188ad8…12ed and wheel sha256 de7375a5…cbab, from PyPI JSON and the Simple API; release 2026-09-21.
  • Qualification evidence in this PR:
    • evidence/receipts/rtk-050-qualification-20260925.json;
    • evidence/receipts/markitdown-018-qualification-20260925.json;
    • evidence/artifacts/sota-refresh-20260925/{rtk,markitdown}/.
  • Pin-move precedent: vLLM 0.30.0 for the production embeddings role on WSL (pin, receipt, docs) #260 (vLLM 0.30.0).

Evidence

  • evidence/receipts/rtk-050-qualification-20260925.json and evidence/receipts/markitdown-018-qualification-20260925.json.
  • evidence/artifacts/sota-refresh-20260925/{rtk,markitdown}/: byte-identical acceptance scripts with their sha256 values, results for both arms, the post-switch runs and the verifier verdicts. Everything is sanitized.

Deliberately unchanged

Review

An independent evidence-reviewer returned needs_changes: one moderate finding (the new-host step 4a didn't mention the mitigation) and five minor wording and evidence problems. One repair round fixed all seven items, and a re-check is in progress. Codex cross-family review was skipped because of the Codex usage limit until 2026-09-30.

Verification (uv Python 3.13 with jsonschema/PyYAML/numpy; head 41b0417 rebuilt on main d0d8c5b)

  • Pass: validate.py (5693 files, 149 receipts), evidence_manifest --check, host_receipts validate (98), component_matrix --check, new_host_grand_list --check, catalog_decisions --check, landscape.py, validate_foundation.py, build_ecosystem --check.
  • release_due: reports release_due. That is expected, because this branch changes new-machine files after v2026.09.25.2; the release markers are added.
  • Full suite: Ran 5596 tests / OK (skipped=633).

CI fixes after the first run

  • validate-macos: the new RtkConfigReminderTests extracted install_pin from bootstrap-linux.sh, which uses bash 4 mapfile, and the macOS runner has bash 3.2. The class now takes the file's existing LINUX_X86_64_ONLY guard, as the other Linux-bootstrap tests do.
  • sota-sources: this section was added.
  • The hosted native-token-tools E2E already passed at rtk 0.50.0.

Follow-up (not in this PR)

tools/token-report/token_manifest.py reads saved_tokens directly from history.db. rtk 0.50.0 can store negative values there, while the report text says each row saves max(0, raw − filtered).

Label: lane:foundation, matching the #260 pin-move precedent.

🤖 Generated with Claude Code

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Sep 25, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@seathatflowsinourveins

Copy link
Copy Markdown
Owner Author

Independent evidence-reviewer re-check of the repair round at 25bd99f: agree. All seven review items were fixed with no regressions. Every provenance and results hash matches, all 101 changed files are registered, and the hot files are in the last commit. Not verified by the reviewer: the hosted native-token-e2e workflow at 0.50.0 (it runs on this PR), and the Claude-form rtk init --global --auto-patch --no-trust-filters at 0.50.0.

@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/pins-rtk-markitdown-20260925 branch 2 times, most recently from 17df5ba to 4965f0b Compare September 25, 2026 22:13
Scout and others added 8 commits September 25, 2026 18:44
Qualified on nativestack-5975wx-20260925 against the installed 0.49.0 on the
Claude Code hook path, reviewed by an independent verifier (agree), then
switched by the coordinator. The artifacts carry the hash-pinned acceptance
scripts byte-identical (v2 186dd891..., v3.1 3644a0dc..., a2.py,
mitigation.sh), sanitized run outputs for both arms, the post-switch v3.1
runs with and without the host exclude_commands config, integrity facts,
and the verifier's verdict and defects in results.json.

- evidence/artifacts/sota-refresh-20260925/rtk/
- evidence/receipts/rtk-050-qualification-20260925.json (native_cli_e2e)

manifests/evidence.json registration follows in the branch's last commit.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ipt)

Qualified on nativestack-5975wx-20260925 against the installed 0.1.7 with
the refuter's corrected legs (run_arm.py, check_outputs.py), reviewed by an
independent verifier (agree), then switched by the coordinator with a prefix
flip to tools/markitdown-0.1.8; the post-switch run against the production
path passed 10 of 10 legs. The first post-switch attempt, which aborted on an
existing run directory, is retained.

- evidence/artifacts/sota-refresh-20260925/markitdown/
- evidence/receipts/markitdown-018-qualification-20260925.json (native_cli_e2e)

manifests/evidence.json registration follows in the branch's last commit.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
adoption/pins-linux-x86_64.json moves rtk to the v0.50.0 musl tarball
(sha256 bc2b8902..., checked against the release checksums.txt) and
markitdown to the 0.1.8 sdist (sha256 17188ad8...; the note records the
wheel digest de7375a5... that uv installs). pins-macos-arm64.json has no
entry for either and is unchanged.

recipes/README.md: the archive procedure and both rows name the new pins.
The RTK hook section documents the ~/.config/rtk/config.toml
exclude_commands that mitigate 0.50.0's `git show <rev>:<path> | tail` blob
window and the pre-existing `diff` exit code, states that the Linux
bootstrap and templates do not render it, lists the rewrites that stay
imperfect and the rollback check, and drops `rtk init --global --codex`:
at 0.50.0 it installs an unqualified Codex PreToolUse hook.

Copies of those commands follow: docs/token-efficiency-stack.json,
docs/token-session-handbook.md, docs/token-practice.md,
tools/token-report/README.md and observability/native-data/README.md.
bootstrap.md and platforms/macos-arm64.md say the Linux pin file changed
after v2026.09.25.1. The upstream-snapshot rows come from a fresh run of
their three gh api endpoints; the saturation-audit rows cite the new
receipts. catalogs/landscape/foundation.json winner pins do not move.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
scripts/native_token_ci.py refuses to run when its PINS differ from
manifests/stack.json, so the stack move to rtk 0.50.0 moves its rtk pin
too (tests.test_native_token_ci failed on the mismatch otherwise). Its rtk
install path and rtk_fixture ran locally at 0.50.0: fresh release download,
publisher checksum verification and all six fixture checks passed. The
harness and the script's own sanitized report are added to the rtk
artifacts, and the receipt's data records the run; the hosted
native-token-e2e workflow has not run at 0.50.0 yet. docs/native-token-ci.md
names the new pin.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ease markers

With the rtk 0.50.0 pin the Claude hook needs ~/.config/rtk/config.toml with
[hooks] exclude_commands = ["^git show [^ ]*:", "diff"] (the `git show
<rev>:<path> | tail` blob window and diff's exit code). The bootstrap still
never writes it: after a successful rtk install, install_pin now prints one
reminder line when that config ($XDG_CONFIG_HOME honoured) lacks the key.
tests/test_adoption_bootstrap.py RtkConfigReminderTests runs install_pin,
fetch, install_single_binary_tarball and the new function verbatim against
a cached synthetic tarball: missing config (twice, never created), key
present, key absent (file unchanged), XDG_CONFIG_HOME, and a non-rtk pin.

adoption/bootstrap.md step 4a says the same next to the settings template
that registers `rtk hook claude`. The pin-file and script markers name the
new release, v2026.09.25.2, in bootstrap.md, platforms/linux-wsl2.md and
platforms/macos-arm64.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… rollback and uv wording

- recipes/README.md: the Codex-hook paragraph cites upstream at tag commit
  1d87b8e7 (src/hooks/hook_cmd.rs:900, hooks/codex/README.md:14) instead of
  a source review, and adds that Codex's own approval and sandbox checks
  still run on the rewritten command while its classifier does not unwrap
  rtk; the hook stays unqualified. The rtk row says 0.49.0 lost the error
  text of stderr-only failures while keeping the exit code. The rollback
  note and the bootstrap sentence are corrected (see below).
- Rollback hazard: 0.49.0 wraps negative rows in `rtk gain --history` and
  `--all` (including `--all --format json|csv`); plain `rtk gain --format
  json` showed none (out/negrow.out). Corrected in the rtk receipt,
  recipes/README.md, docs/token-practice.md (moved off the `rtk gain
  --format json` row that tools/token-report runs) and rtk/results.json,
  where a corrections list keeps the implementer's original sentences.
- markitdown/results.json: switch.rollback now gives the post-switch
  rollback and keeps the qualification-time text, marked as written before
  the production switch.
- markitdown receipt: the pin's sha256 is not passed to uv; whether uv
  verifies an index digest itself was not established.
- catalogs/landscape/upstream-snapshot.json: markitdown leaves
  newer_stable_release_review_queue (its row now matches the latest).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The harness extracts install_pin from the Linux bootstrap, which uses bash 4
mapfile; the macOS runner's bash 3.2 lacks it, so the class takes the file's
existing LINUX_X86_64_ONLY guard like the other Linux-bootstrap tests.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…enerate reports

Rebuilt on main d0d8c5b per the hot-file protocol (reviewed stack.json diff;
same registered path set and receipts as the reviewed head, plus the macOS
test-guard fix).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/pins-rtk-markitdown-20260925 branch from 4965f0b to 41b0417 Compare September 25, 2026 22:44
@seathatflowsinourveins
seathatflowsinourveins merged commit 965c9d6 into main Sep 25, 2026
25 of 29 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/pins-rtk-markitdown-20260925 branch September 25, 2026 23:02
seathatflowsinourveins added a commit that referenced this pull request Sep 25, 2026
Keeps the branch current with main after #296, #297, #291 and #298 so CI
judges it against the current base.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 25, 2026
…station SOTA refresh

docs/decisions/2026-09-25-ai-memory-2-4-0-release-review.md gains a dated
correction section; the original text is kept. GHSA-9pj6-vhgr-3mwh is not
reachable on this host (stateless transport: GET /mcp 405 with allow:
POST, no --http-stateful), and 2.4.0 writes no automatic pre-migration
archive for a store created by 2.3.2 (snapshot_before_db_migration is
gated to the 1.x -> 2.0 upgrade). It also records that the upgrade was
performed on 2026-09-25 and cites the new receipt.

docs/decisions/2026-09-25-workstation-sota-refresh.md is the dated
research-convergence record for the whole workstation-lane refresh: per
unit, the decision, its primary sources (releases, compares, advisories
and the refuter's key finding), the alternatives and the overturn
condition. rtk, markitdown, mcporter and ai-memory were qualified and
switched; socraticode 1.15.0 is qualified with the cutover deferred to no
earlier than 2026-10-01; dagu 2.17.2 is held by the trading lane;
headroom stays 0.37.0 because 0.38.0 carries #3736 on the MCP compress
path; qmd, qdrant, ccusage, worktrunk and vllm are already current;
llama.cpp b11146 is recorded, not qualified; both models are retained;
the ai-memory Nemotron embedder is evaluation-only. The research and
qualification results are cited as private inputs only.

Review repairs (2026-09-25, independent review needs_changes), each
fact re-checked with gh api at about 22:35Z:
- headroom: v0.39.0 (2026-09-25T19:29:55Z) contains d971f7c3 (compare
  ahead 86, behind 0; the release notes list #3748), so the overturn
  condition is met; qualifying 0.39.0 is the queued follow-up.
- ai-memory: only commands/hook*.rs and commands/install_hooks.rs are
  unchanged in the v2.3.2...v2.4.0 compare (config.rs, serve.rs, run.rs,
  reindex.rs, mcp_bridge.rs and six ai-memory-core files changed).
- ai-memory v2.4.1 (2026-09-25T21:46:32Z) carries the #792 fix and the
  forward-only V67 migration but not #859; it meets the "a 2.4.1
  appears" condition, and qualifying it (another rehearsal and the
  user's approval) is queued. Recorded in both documents.
- The embedder section cites issue #274 (the Mac-only harness, A17, "the
  workstation now owns R1") and catalogs/foundation/memory-stack-20260925.json;
  #274 covers the C3/C4 rerun, and the Nemotron-prefix evaluation comes
  after it.
- The release review gains a dated one-line pointer under its title.
- The rtk and markitdown receipts are linked now that #291 has merged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 25, 2026
… regenerate reports

Shared hot files, last in the branch per docs/lanes.md:

- manifests/stack.json: ai-memory 2.4.0 (release tag URL, source_pin
  b1b25219b507cf56cb7334ac1a408dc9b09eaa50, freshness) and mcporter
  0.14.1 (tree/v0.14.1 URLs, freshness), each with its new receipt in
  evidence_ids. The mcporter command becomes
  `mcporter --config "${MCPORTER_CONFIG}" list socraticode --brief --no-oauth`:
  the targetless `list --brief` form fails on both versions.
- manifests/evidence.json: receipt entries for
  ai-memory-240-qualification-20260925 and
  mcporter-0141-qualification-20260925, and every added or changed file
  registered with scripts/host_receipts.py register_file on top of main's
  copy.
- catalogs/landscape/new-host-grand-list.json and
  docs/new-host-grand-list.md from new_host_grand_list.py --write (Linux
  bootstrap 2.4.0 / 0.14.1 against the unchanged 2.3.2 / 0.13.13
  landscape winner pins; macOS bootstrap unchanged);
  component_matrix.py --write produced no change.

Rebased onto #291 (rtk 0.50.0 and markitdown 0.1.8): both sides' pins,
doc text and receipts[] entries are kept, and evidence.json was rebuilt
from main's copy (indent 2, ASCII) and re-registered.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
…station SOTA refresh

docs/decisions/2026-09-25-ai-memory-2-4-0-release-review.md gains a dated
correction section; the original text is kept. GHSA-9pj6-vhgr-3mwh is not
reachable on this host (stateless transport: GET /mcp 405 with allow:
POST, no --http-stateful), and 2.4.0 writes no automatic pre-migration
archive for a store created by 2.3.2 (snapshot_before_db_migration is
gated to the 1.x -> 2.0 upgrade). It also records that the upgrade was
performed on 2026-09-25 and cites the new receipt.

docs/decisions/2026-09-25-workstation-sota-refresh.md is the dated
research-convergence record for the whole workstation-lane refresh: per
unit, the decision, its primary sources (releases, compares, advisories
and the refuter's key finding), the alternatives and the overturn
condition. rtk, markitdown, mcporter and ai-memory were qualified and
switched; socraticode 1.15.0 is qualified with the cutover deferred to no
earlier than 2026-10-01; dagu 2.17.2 is held by the trading lane;
headroom stays 0.37.0 because 0.38.0 carries #3736 on the MCP compress
path; qmd, qdrant, ccusage, worktrunk and vllm are already current;
llama.cpp b11146 is recorded, not qualified; both models are retained;
the ai-memory Nemotron embedder is evaluation-only. The research and
qualification results are cited as private inputs only.

Review repairs (2026-09-25, independent review needs_changes), each
fact re-checked with gh api at about 22:35Z:
- headroom: v0.39.0 (2026-09-25T19:29:55Z) contains d971f7c3 (compare
  ahead 86, behind 0; the release notes list #3748), so the overturn
  condition is met; qualifying 0.39.0 is the queued follow-up.
- ai-memory: only commands/hook*.rs and commands/install_hooks.rs are
  unchanged in the v2.3.2...v2.4.0 compare (config.rs, serve.rs, run.rs,
  reindex.rs, mcp_bridge.rs and six ai-memory-core files changed).
- ai-memory v2.4.1 (2026-09-25T21:46:32Z) carries the #792 fix and the
  forward-only V67 migration but not #859; it meets the "a 2.4.1
  appears" condition, and qualifying it (another rehearsal and the
  user's approval) is queued. Recorded in both documents.
- The embedder section cites issue #274 (the Mac-only harness, A17, "the
  workstation now owns R1") and catalogs/foundation/memory-stack-20260925.json;
  #274 covers the C3/C4 rerun, and the Nemotron-prefix evaluation comes
  after it.
- The release review gains a dated one-line pointer under its title.
- The rtk and markitdown receipts are linked now that #291 has merged.

Final round (2026-09-26):
- ai-memory: the record and the release review state that 2.4.1 was
  rehearsed and, with the user's approval, switched on 2026-09-26
  (00:14:12Z stop, 00:19:51Z start, V66 to V67), replacing the "needs
  another rehearsal and the user's approval" sentences and "2.4.0 serves".
- headroom: 0.39.0 was qualified and is not switched. The reasons are
  source-checked with gh at 00:28Z: the omission notice counts levels
  over all lines (log_compressor.py:461-487 and the Rust format_output;
  same Python blob since v0.37.0; #3635 changed only the Rust file), the
  Rust detector lacks the #3736 guard, and #299/#296 run 0.37.0.
- The embedder section cites experiment.json and convergence.json for
  the C1 to C3 arms (the catalog has no C1 label).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
… regenerate reports

Shared hot files, last in the branch per docs/lanes.md:

- manifests/stack.json: ai-memory 2.4.1 (release tag URL, source_pin
  433a19f3d54dea287571b1423591db2a89965fa9, freshness; evidence_ids keep
  the 2.4.0 receipt as history and add the 2.4.1 one) and mcporter
  0.14.1 (tree/v0.14.1 URLs, freshness), each with its new receipt in
  evidence_ids. The mcporter command becomes
  `mcporter --config "${MCPORTER_CONFIG}" list socraticode --brief --no-oauth`:
  the targetless `list --brief` form fails on both versions.
- manifests/evidence.json: receipt entries for
  ai-memory-240-qualification-20260925,
  mcporter-0141-qualification-20260925,
  ai-memory-241-qualification-20260925 and
  headroom-039-qualification-20260925 (headroom stays 0.37.0; the
  receipt is not in its evidence_ids), and every added or changed file
  registered with scripts/host_receipts.py register_file on top of main's
  copy.
- catalogs/landscape/new-host-grand-list.json and
  docs/new-host-grand-list.md from new_host_grand_list.py --write (Linux
  bootstrap 2.4.1 / 0.14.1 against the unchanged 2.3.2 / 0.13.13
  landscape winner pins; macOS bootstrap unchanged);
  component_matrix.py --write produced no change.

Rebased onto current main (including #291 and #299): both sides' pins,
doc text and receipts[] entries are kept, and evidence.json was rebuilt
from main's copy (indent 2, ASCII) and re-registered.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
…station SOTA refresh

docs/decisions/2026-09-25-ai-memory-2-4-0-release-review.md gains a dated
correction section; the original text is kept. GHSA-9pj6-vhgr-3mwh is not
reachable on this host (stateless transport: GET /mcp 405 with allow:
POST, no --http-stateful), and 2.4.0 writes no automatic pre-migration
archive for a store created by 2.3.2 (snapshot_before_db_migration is
gated to the 1.x -> 2.0 upgrade). It also records that the upgrade was
performed on 2026-09-25 and cites the new receipt.

docs/decisions/2026-09-25-workstation-sota-refresh.md is the dated
research-convergence record for the whole workstation-lane refresh: per
unit, the decision, its primary sources (releases, compares, advisories
and the refuter's key finding), the alternatives and the overturn
condition. rtk, markitdown, mcporter and ai-memory were qualified and
switched; socraticode 1.15.0 is qualified with the cutover deferred to no
earlier than 2026-10-01; dagu 2.17.2 is held by the trading lane;
headroom stays 0.37.0 because 0.38.0 carries #3736 on the MCP compress
path; qmd, qdrant, ccusage, worktrunk and vllm are already current;
llama.cpp b11146 is recorded, not qualified; both models are retained;
the ai-memory Nemotron embedder is evaluation-only. The research and
qualification results are cited as private inputs only.

Review repairs (2026-09-25, independent review needs_changes), each
fact re-checked with gh api at about 22:35Z:
- headroom: v0.39.0 (2026-09-25T19:29:55Z) contains d971f7c3 (compare
  ahead 86, behind 0; the release notes list #3748), so the overturn
  condition is met; qualifying 0.39.0 is the queued follow-up.
- ai-memory: only commands/hook*.rs and commands/install_hooks.rs are
  unchanged in the v2.3.2...v2.4.0 compare (config.rs, serve.rs, run.rs,
  reindex.rs, mcp_bridge.rs and six ai-memory-core files changed).
- ai-memory v2.4.1 (2026-09-25T21:46:32Z) carries the #792 fix and the
  forward-only V67 migration but not #859; it meets the "a 2.4.1
  appears" condition, and qualifying it (another rehearsal and the
  user's approval) is queued. Recorded in both documents.
- The embedder section cites issue #274 (the Mac-only harness, A17, "the
  workstation now owns R1") and catalogs/foundation/memory-stack-20260925.json;
  #274 covers the C3/C4 rerun, and the Nemotron-prefix evaluation comes
  after it.
- The release review gains a dated one-line pointer under its title.
- The rtk and markitdown receipts are linked now that #291 has merged.

Final round (2026-09-26):
- ai-memory: the record and the release review state that 2.4.1 was
  rehearsed and, with the user's approval, switched on 2026-09-26
  (00:14:12Z stop, 00:19:51Z start, V66 to V67), replacing the "needs
  another rehearsal and the user's approval" sentences and "2.4.0 serves".
- headroom: 0.39.0 was qualified and is not switched. The reasons are
  source-checked with gh at 00:28Z: the omission notice counts levels
  over all lines (log_compressor.py:461-487 and the Rust format_output;
  same Python blob since v0.37.0; #3635 changed only the Rust file), the
  Rust detector lacks the #3736 guard, and #299/#296 run 0.37.0.
- The embedder section cites experiment.json and convergence.json for
  the C1 to C3 arms (the catalog has no C1 label).

Delta review (2026-09-26): the refresh record says 2.4.1 arm 28/28
(results/step4-rehearsal.json has 28 checks), and the release review's
"now name 2.4.0" is dated to the 2.4.0 cutover and marked superseded by
2.4.1.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
… regenerate reports

Shared hot files, last in the branch per docs/lanes.md:

- manifests/stack.json: ai-memory 2.4.1 (release tag URL, source_pin
  433a19f3d54dea287571b1423591db2a89965fa9, freshness; evidence_ids keep
  the 2.4.0 receipt as history and add the 2.4.1 one) and mcporter
  0.14.1 (tree/v0.14.1 URLs, freshness), each with its new receipt in
  evidence_ids. The mcporter command becomes
  `mcporter --config "${MCPORTER_CONFIG}" list socraticode --brief --no-oauth`:
  the targetless `list --brief` form fails on both versions.
- manifests/evidence.json: receipt entries for
  ai-memory-240-qualification-20260925,
  mcporter-0141-qualification-20260925,
  ai-memory-241-qualification-20260925 and
  headroom-039-qualification-20260925 (headroom stays 0.37.0; the
  receipt is not in its evidence_ids), and every added or changed file
  registered with scripts/host_receipts.py register_file on top of main's
  copy.
- catalogs/landscape/new-host-grand-list.json and
  docs/new-host-grand-list.md from new_host_grand_list.py --write (Linux
  bootstrap 2.4.1 / 0.14.1 against the unchanged 2.3.2 / 0.13.13
  landscape winner pins; macOS bootstrap unchanged);
  component_matrix.py --write produced no change.

Rebased onto current main (including #291 and #299): both sides' pins,
doc text and receipts[] entries are kept, and evidence.json was rebuilt
from main's copy (indent 2, ASCII) and re-registered.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
…station SOTA refresh

docs/decisions/2026-09-25-ai-memory-2-4-0-release-review.md gains a dated
correction section; the original text is kept. GHSA-9pj6-vhgr-3mwh is not
reachable on this host (stateless transport: GET /mcp 405 with allow:
POST, no --http-stateful), and 2.4.0 writes no automatic pre-migration
archive for a store created by 2.3.2 (snapshot_before_db_migration is
gated to the 1.x -> 2.0 upgrade). It also records that the upgrade was
performed on 2026-09-25 and cites the new receipt.

docs/decisions/2026-09-25-workstation-sota-refresh.md is the dated
research-convergence record for the whole workstation-lane refresh: per
unit, the decision, its primary sources (releases, compares, advisories
and the refuter's key finding), the alternatives and the overturn
condition. rtk, markitdown, mcporter and ai-memory were qualified and
switched; socraticode 1.15.0 is qualified with the cutover deferred to no
earlier than 2026-10-01; dagu 2.17.2 is held by the trading lane;
headroom stays 0.37.0 because 0.38.0 carries #3736 on the MCP compress
path; qmd, qdrant, ccusage, worktrunk and vllm are already current;
llama.cpp b11146 is recorded, not qualified; both models are retained;
the ai-memory Nemotron embedder is evaluation-only. The research and
qualification results are cited as private inputs only.

Review repairs (2026-09-25, independent review needs_changes), each
fact re-checked with gh api at about 22:35Z:
- headroom: v0.39.0 (2026-09-25T19:29:55Z) contains d971f7c3 (compare
  ahead 86, behind 0; the release notes list #3748), so the overturn
  condition is met; qualifying 0.39.0 is the queued follow-up.
- ai-memory: only commands/hook*.rs and commands/install_hooks.rs are
  unchanged in the v2.3.2...v2.4.0 compare (config.rs, serve.rs, run.rs,
  reindex.rs, mcp_bridge.rs and six ai-memory-core files changed).
- ai-memory v2.4.1 (2026-09-25T21:46:32Z) carries the #792 fix and the
  forward-only V67 migration but not #859; it meets the "a 2.4.1
  appears" condition, and qualifying it (another rehearsal and the
  user's approval) is queued. Recorded in both documents.
- The embedder section cites issue #274 (the Mac-only harness, A17, "the
  workstation now owns R1") and catalogs/foundation/memory-stack-20260925.json;
  #274 covers the C3/C4 rerun, and the Nemotron-prefix evaluation comes
  after it.
- The release review gains a dated one-line pointer under its title.
- The rtk and markitdown receipts are linked now that #291 has merged.

Final round (2026-09-26):
- ai-memory: the record and the release review state that 2.4.1 was
  rehearsed and, with the user's approval, switched on 2026-09-26
  (00:14:12Z stop, 00:19:51Z start, V66 to V67), replacing the "needs
  another rehearsal and the user's approval" sentences and "2.4.0 serves".
- headroom: 0.39.0 was qualified and is not switched. The reasons are
  source-checked with gh at 00:28Z: the omission notice counts levels
  over all lines (log_compressor.py:461-487 and the Rust format_output;
  same Python blob since v0.37.0; #3635 changed only the Rust file), the
  Rust detector lacks the #3736 guard, and #299/#296 run 0.37.0.
- The embedder section cites experiment.json and convergence.json for
  the C1 to C3 arms (the catalog has no C1 label).

Delta review (2026-09-26): the refresh record says 2.4.1 arm 28/28
(results/step4-rehearsal.json has 28 checks), and the release review's
"now name 2.4.0" is dated to the 2.4.0 cutover and marked superseded by
2.4.1.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Sep 26, 2026
…fresh record (headroom 0.39.0 qualified, not switched) (#307)

* ai-memory 2.4.0 qualification evidence (sanitized artifacts, cutover facts and receipt)

Qualified on nativestack-5975wx-20260925 against the installed 2.3.2 on
restored copies of an online backup (2.3.2 baseline 16/16 on its second
attempt, 2.4.0 rehearsal 19/19: V64 -> V66 with nothing missing, /healthz
200, 23 tools unchanged, both hook clients captured, 2.3.2 refuses the
migrated store), reviewed by an independent verifier (agree, 3 minor
defects), then switched by the coordinator in a user-approved cold-copy
cutover (20:43:48Z stop, 20:44:37Z start, V65/V66 applied, fingerprint
PASS, real Claude Code capture). The Codex /hooks trust step for the 7
changed commands is pending and the user's.

- evidence/artifacts/sota-refresh-20260925/ai-memory/: the driver and
  the verifier's scripts byte-identical, sanitized step results,
  cutover.json with the coordinator's aggregate facts only (no cold copy,
  fingerprint file or store content), a read-only read-back and
  results.json with both arms, the verifier verdict and what was not
  published.
- evidence/receipts/ai-memory-240-qualification-20260925.json
  (native_cli_e2e).

Review repairs (2026-09-25, independent review needs_changes): the
receipt adds the failed production compare check (claude_settings_unchanged:
~/.claude/settings.json changed at 19:01:59Z by an unidentified writer);
results.json corrects the verifier's two wording defects in place and keeps
the originals in a corrections list; recorded_at_utc is the time the
receipt content was written. Final round: the #792 limitation says the
fix is not in 2.4.0 and was released in v2.4.1 at 2026-09-25T21:46:32Z.

manifests/evidence.json registration follows in the branch's last commit.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* mcporter 0.14.1 qualification evidence (sanitized artifacts, cutover facts and receipt)

Qualified on nativestack-5975wx-20260925 against the installed 0.13.13:
the verified npm tarball (sha256 8e489864..., SLSA provenance from
release.yml at refs/tags/v0.14.1) in a new prefix, and the same 37-step
acceptance in isolated daemon namespaces passing 37/37 on both versions
with identical outcomes. An independent verifier agreed and measured the
one difference the acceptance cannot see: without ps on the daemon's
PATH, 0.14.1 cannot connect keep-alive servers and `daemon stop`
refuses. The coordinator then relinked bin/mcporter with no daemon
running; `list socraticode --brief --no-oauth` listed 26 tools and
codebase_health reached Qdrant.

- evidence/artifacts/sota-refresh-20260925/mcporter/: harness and
  verifier scripts byte-identical, both arms' results, the per-step raw
  outputs bundled into two JSON files (deduplicated), integrity and
  provenance outputs, cutover.json, a read-only read-back and
  results.json.
- evidence/receipts/mcporter-0141-qualification-20260925.json
  (native_cli_e2e).

Review repairs (2026-09-25, independent review needs_changes): the
staging install's package.json and package-lock.json are published as
stage/package.evidence.json and stage/package-lock.evidence.json (bytes
unchanged), so they are not repository dependency manifests and the OSV
inventory and Dependabot scope stay as they were; results.json records
the renames; recorded_at_utc is the time the receipt content was written.

Delta review (2026-09-26): the two npm registry key .pem files are
listed under not_published (source https://registry.npmjs.org/-/npm/v1/keys),
because .gitignore excludes *.pem; they were never committed.

manifests/evidence.json registration follows in the branch's last commit.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* ai-memory 2.4.1 qualification and cutover evidence (sanitized artifacts and receipt)

Qualified on nativestack-5975wx-20260925 against production 2.4.0 on
restored copies of one online backup (2.4.0 arm 26/26, 2.4.1 arm 28/28:
V66 -> V67 with nothing missing, 2.4.0 refuses the V67 copy, path-only
install-hooks render, and the #792 A/B: 65/65 keepalive timers and all 60
vanished peers reclaimed on 2.4.1, none on 2.4.0), reviewed by an
independent verifier (agree, 8 minor defects). The coordinator then
performed the user-approved cutover on 2026-09-26: stop 00:14:12Z, cold
V66 copy, relink, path-only hook rewrite, start 00:19:51Z with V67
applied, fingerprint PASS, keepalive on 2 of 2 live sockets and real
Claude Code capture. The Codex /hooks re-trust is pending and the
user's. The 2.4.0 receipt stays as history.

- evidence/artifacts/sota-refresh-20260925/ai-memory-241/: the driver
  and the verifier's scripts byte-identical, sanitized results for both,
  cutover.json with the coordinator's aggregate facts only (no cold copy,
  fingerprint file or store content), a read-only read-back and
  results.json (steps for both arms, the verdict, and the verifier's
  wording corrections).
- evidence/receipts/ai-memory-241-qualification-20260925.json
  (native_cli_e2e); recorded_at_utc is the time the content was written.

Delta review (2026-09-26): results/step4-rehearsal.json has 28 checks,
all true, so the receipt and the B-arm excerpt say 28 (the original 29 is
kept in results.json corrections), and the R1/A17 control-build limitation
cites issue #274.

manifests/evidence.json registration follows in the branch's last commit.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* headroom 0.39.0 qualification evidence, not switched (sanitized artifacts and receipt)

Qualified on nativestack-5975wx-20260925 against the pinned 0.37.0: the
verified wheel in a new prefix (RECORD 555/555), the unchanged upstream
#3736 test 6/6 (0.37.0: 4/6), and the stack's MCP path over stdio with
byte-exact retrieval and cross-version store reads; an independent
verifier agreed. The coordinator retains 0.37.0: at v0.39.0 the
'[N lines omitted: ...]' notice counts levels over all input lines
(log_compressor.py:461-487 and the Rust format_output; checked with gh),
so fixture A's '[593 lines omitted: 1 ERROR]' reports the kept CRITICAL
line as omitted; the Rust detector still lacks the #3736 timestamp
guard; #299 pins 0.37.0 in the bootstrap and #296's counters run at it.
No pin changes.

- evidence/artifacts/sota-refresh-20260925/headroom-039/: harness and
  verifier scripts, key results as files, all other outputs and the
  production snapshots bundled, a read-only read-back and results.json
  (decision reasons, overturn condition, beacon note, corrections).
- evidence/receipts/headroom-039-qualification-20260925.json
  (native_cli_e2e).

manifests/evidence.json registration follows in the branch's last commit.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Linux pins, hook template, recipes and docs: ai-memory 2.4.1 and mcporter 0.14.1

adoption/pins-linux-x86_64.json moves ai-memory to the v2.4.1 archive
(sha256 15cafdc4..., 16,026,020 bytes, equal to the release sidecar, the
API digest and the release body; binary dec065a8...; tag commit 433a19f3) and mcporter to the 0.14.1 npm
tarball (sha256 8e489864..., integrity sha512-/6pv...). The notes carry
the forward-only migration and the ps-on-PATH requirement.
pins-macos-arm64.json is unchanged: the Mac qualifies on its own.

adoption/templates/claude.settings.template.json: the eight ai-memory
hook commands name tools/ai-memory-2.4.1, matching the live source host
after the upstream install-hooks rewrite. bootstrap.md,
platforms/linux-wsl2.md and platforms/macos-arm64.md say the Linux pin
file and the template changed after v2026.09.25.2, and tell a Mac to
point the rendered hooks at its installed 2.3.2 prefix.

recipes/README.md: both rows name the new pins, and a new "Upgrading an
existing store" section gives the cold-copy procedure the host used.
Copies follow in docs/token-efficiency-stack.json,
tools/token-report/README.md and observability/native-data/README.md.
The two catalogs/landscape/upstream-snapshot.json rows come from a
fresh run of their gh api endpoints, and the saturation-audit rows cite
the new receipts. catalogs/landscape/foundation.json winner pins do not
move.

tests/test_adoption_bootstrap_macos.py required every shared component to
carry the same version and npm hash on both platforms, which a Linux-only
move breaks. It now names each Mac-behind-Linux lag exactly (ai-memory
2.3.2/2.4.0 and mcporter 0.13.13/0.14.1, with their receipts), so a move
on either side fails until the table is reviewed, and compares npm hashes
only between equal versions.

Review repairs (2026-09-25, independent review needs_changes):
- recipes/README.md: the hook commands' 49374 is an example; use the
  host's own server URL (NativeStack binds 127.0.0.1:49474, and 49374 is
  another distro's default there) and record what NativeStack used. The
  upgrade section states the order hazard: bootstrap-linux.sh repoints
  bin/ai-memory at once, so an existing store is stopped and cold-copied
  before any bootstrap re-run; adoption/update.md step 1 says the same.
- platforms/macos-arm64.md: the changed-after marker in step 3 states only
  the difference and points to a standing "ai-memory hook paths on macOS"
  note, which gives the full recipe command (--apply, --capture-mode
  allowlist, --no-capture-prompts, --server-url): with no stored mode,
  v2.3.2's installer falls back to denylist.
- catalogs/landscape/foundation.json durable-memory: one appended, dated
  limitation for the 20:44Z cutover; the earlier 2026-09-25 text is kept,
  and the winner pin (a verdict field) does not change.

Final round (2026-09-26): the ai-memory pin, the hook template, the
recipes and docs, the upstream-snapshot row, the saturation-audit row and
the Mac-lag test pair move from 2.4.0 to 2.4.1 after the user-approved
2.4.1 cutover (the 2.4.0 receipt stays as history). The upgrade section
covers both cutovers and warns against `pgrep -f` in the quiesce wait.
platforms/macos-arm64.md now says accurately that #299 also added
ccusage, headroom, repomix, serena, socraticode and toon to the Linux
pins, and which of the ten have Mac entries. The foundation.json
limitation names both cutovers.

Delta review (2026-09-26): the ai-memory install_note dates the
three-value check to 2026-09-25 (22:43Z qualification, 23:10Z verifier)
and says 2026-09-26 re-checked the API digest.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Decision records: correct the ai-memory 2.4.0 review; record the workstation SOTA refresh

docs/decisions/2026-09-25-ai-memory-2-4-0-release-review.md gains a dated
correction section; the original text is kept. GHSA-9pj6-vhgr-3mwh is not
reachable on this host (stateless transport: GET /mcp 405 with allow:
POST, no --http-stateful), and 2.4.0 writes no automatic pre-migration
archive for a store created by 2.3.2 (snapshot_before_db_migration is
gated to the 1.x -> 2.0 upgrade). It also records that the upgrade was
performed on 2026-09-25 and cites the new receipt.

docs/decisions/2026-09-25-workstation-sota-refresh.md is the dated
research-convergence record for the whole workstation-lane refresh: per
unit, the decision, its primary sources (releases, compares, advisories
and the refuter's key finding), the alternatives and the overturn
condition. rtk, markitdown, mcporter and ai-memory were qualified and
switched; socraticode 1.15.0 is qualified with the cutover deferred to no
earlier than 2026-10-01; dagu 2.17.2 is held by the trading lane;
headroom stays 0.37.0 because 0.38.0 carries #3736 on the MCP compress
path; qmd, qdrant, ccusage, worktrunk and vllm are already current;
llama.cpp b11146 is recorded, not qualified; both models are retained;
the ai-memory Nemotron embedder is evaluation-only. The research and
qualification results are cited as private inputs only.

Review repairs (2026-09-25, independent review needs_changes), each
fact re-checked with gh api at about 22:35Z:
- headroom: v0.39.0 (2026-09-25T19:29:55Z) contains d971f7c3 (compare
  ahead 86, behind 0; the release notes list #3748), so the overturn
  condition is met; qualifying 0.39.0 is the queued follow-up.
- ai-memory: only commands/hook*.rs and commands/install_hooks.rs are
  unchanged in the v2.3.2...v2.4.0 compare (config.rs, serve.rs, run.rs,
  reindex.rs, mcp_bridge.rs and six ai-memory-core files changed).
- ai-memory v2.4.1 (2026-09-25T21:46:32Z) carries the #792 fix and the
  forward-only V67 migration but not #859; it meets the "a 2.4.1
  appears" condition, and qualifying it (another rehearsal and the
  user's approval) is queued. Recorded in both documents.
- The embedder section cites issue #274 (the Mac-only harness, A17, "the
  workstation now owns R1") and catalogs/foundation/memory-stack-20260925.json;
  #274 covers the C3/C4 rerun, and the Nemotron-prefix evaluation comes
  after it.
- The release review gains a dated one-line pointer under its title.
- The rtk and markitdown receipts are linked now that #291 has merged.

Final round (2026-09-26):
- ai-memory: the record and the release review state that 2.4.1 was
  rehearsed and, with the user's approval, switched on 2026-09-26
  (00:14:12Z stop, 00:19:51Z start, V66 to V67), replacing the "needs
  another rehearsal and the user's approval" sentences and "2.4.0 serves".
- headroom: 0.39.0 was qualified and is not switched. The reasons are
  source-checked with gh at 00:28Z: the omission notice counts levels
  over all lines (log_compressor.py:461-487 and the Rust format_output;
  same Python blob since v0.37.0; #3635 changed only the Rust file), the
  Rust detector lacks the #3736 guard, and #299/#296 run 0.37.0.
- The embedder section cites experiment.json and convergence.json for
  the C1 to C3 arms (the catalog has no C1 label).

Delta review (2026-09-26): the refresh record says 2.4.1 arm 28/28
(results/step4-rehearsal.json has 28 checks), and the release review's
"now name 2.4.0" is dated to the 2.4.0 cutover and marked superseded by
2.4.1.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Stack pins ai-memory 2.4.1 and mcporter 0.14.1; register evidence and regenerate reports

Rebuilt on main c09dd6d (#306) per the hot-file protocol: the reviewed
stack.json diff, the same registered path set and all four qualification
receipts as the reviewed head b64f9b0.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
Codex post-merge review of #291, findings 1 and 2.

- rtk tests an exclude_commands entry that starts with ^ as a raw Rust
  regex against each command segment and anchors any other entry as
  ^<escaped>($|\s) (src/discover/registry.rs:1540-1569 and 1599-1604 at
  tag commit 1d87b8e7). The 2026-09-25 "^git show [^ ]*:" missed
  git show --no-color HEAD:x, git -C . show HEAD:x, a double space,
  a tab, --no-pager and -c key=value, which the hook still rewrote into
  the ~8 KiB blob window. The recipe, bootstrap step 4a, token practice,
  the pin note and the decision record now give
  '^git(\s+\S+)*\s+show(\s+\S+)*\s+(:\S|[^\s-]\S*:)' as a TOML literal
  string, explain the anchoring, and keep a dated note on the old pattern.
- Scratch re-test on 0.50.0 and 0.49.0 (mitigation-20260926.sh): the
  widened regex excludes 14 of 14 blob-read and diff spellings (old: 8)
  and leaves 8 of 8 other commands rewritten; executed blob tails equal
  native git. A read-only read-back confirms the host config. The rtk
  receipt gains a dated limitation, and results.json a correction, steps
  and files; provenance is regenerated.
- bootstrap-linux.sh's reminder now parses the config with Python's
  tomllib and stays silent only when [hooks].exclude_commands holds both
  exact entries; a missing python3/tomllib or invalid TOML keeps it.
  Print-only; XDG_CONFIG_HOME is still honoured. New tests cover Codex's
  counterexample, the old pattern, the new pattern, invalid TOML and a
  python3 without tomllib.
- Pages that mention the changed install inputs say "changed after
  `v2026.09.26`".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
…checker output

Codex post-merge review of #291, finding 3.

- verify_installed.py is retained byte-identical. Its 2026-09-25 stdout
  was never written to a file, so results.json says so (not_retained)
  and adds a 2026-09-26 read-only re-run on the production prefix
  (45 of 45 identical) plus a per-file listing (installed_files.py) of
  the wheel RECORD, wheel member and installed digests in RECORD form.
- run-candidate/, run-baseline/ and run-postswitch2/ (converted
  documents, PDF stderr with the home directory replaced by ~, package
  listings) are retained; their files hash to the recorded values.
  run_arm.py kept only checker counts, so check_outputs.py is re-run on
  them (out/checker-rerun-20260926.out), and the independent verifier's
  own checker.out, legs logs and integrity check are retained.
- results.json gains corrections, not_retained, steps and files; the
  receipt gains a dated limitation and regenerated provenance.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
Codex post-merge review of #291, findings 1 and 2.

- rtk tests an exclude_commands entry that starts with ^ as a raw Rust
  regex against each command segment and anchors any other entry as
  ^<escaped>($|\s) (src/discover/registry.rs:1540-1569 and 1599-1604 at
  tag commit 1d87b8e7). The 2026-09-25 "^git show [^ ]*:" missed
  git show --no-color HEAD:x, git -C . show HEAD:x, a double space,
  a tab, --no-pager and -c key=value, which the hook still rewrote into
  the ~8 KiB blob window. The recipe, bootstrap step 4a, token practice,
  the pin note and the decision record now give
  '^git(\s+\S+)*\s+show(\s+\S+)*\s+(:\S|[^\s-]\S*:)' as a TOML literal
  string, explain the anchoring, and keep a dated note on the old pattern.
- Scratch re-test on 0.50.0 and 0.49.0 (mitigation-20260926.sh): the
  widened regex excludes 14 of 14 blob-read and diff spellings (old: 8)
  and leaves 8 of 8 other commands rewritten; executed blob tails equal
  native git. A read-only read-back confirms the host config. The rtk
  receipt gains a dated limitation, and results.json a correction, steps
  and files; provenance is regenerated.
- bootstrap-linux.sh's reminder now parses the config with Python's
  tomllib and stays silent only when [hooks].exclude_commands holds both
  exact entries; a missing python3/tomllib or invalid TOML keeps it.
  Print-only; XDG_CONFIG_HOME is still honoured. New tests cover Codex's
  counterexample, the old pattern, the new pattern, invalid TOML and a
  python3 without tomllib.
- Pages that mention the changed install inputs say "changed after
  `v2026.09.26`".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
…checker output

Codex post-merge review of #291, finding 3.

- verify_installed.py is retained byte-identical. Its 2026-09-25 stdout
  was never written to a file, so results.json says so (not_retained)
  and adds a 2026-09-26 read-only re-run on the production prefix
  (45 of 45 identical) plus a per-file listing (installed_files.py) of
  the wheel RECORD, wheel member and installed digests in RECORD form.
- run-candidate/, run-baseline/ and run-postswitch2/ (converted
  documents, PDF stderr with the home directory replaced by ~, package
  listings) are retained; their files hash to the recorded values.
  run_arm.py kept only checker counts, so check_outputs.py is re-run on
  them (out/checker-rerun-20260926.out), and the independent verifier's
  own checker.out, legs logs and integrity check are retained.
- results.json gains corrections, not_retained, steps and files; the
  receipt gains a dated limitation and regenerated provenance.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
…checker output

Codex post-merge review of #291, finding 3.

- verify_installed.py is retained byte-identical. Its 2026-09-25 stdout
  was never written to a file, so results.json says so (not_retained)
  and adds a 2026-09-26 read-only re-run on the production prefix
  (45 of 45 identical) plus a per-file listing (installed_files.py) of
  the wheel RECORD, wheel member and installed digests in RECORD form.
- run-candidate/, run-baseline/ and run-postswitch2/ (converted
  documents, PDF stderr with the home directory replaced by ~, package
  listings) are retained; their files hash to the recorded values.
  run_arm.py kept only checker counts, so check_outputs.py is re-run on
  them (out/checker-rerun-20260926.out), and the independent verifier's
  own checker.out, legs logs and integrity check are retained.
- results.json gains corrections, not_retained, steps and files; the
  receipt gains a dated limitation and regenerated provenance.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 9ec4c33)
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
… check to its reminder

Reconciles this branch's Codex post-merge fixes for #291 (findings 1-2)
and the #314 P2 with #318, which merged first.

- Recipe: #318's four-entry exclude_commands block stays the one set of
  guidance in recipes/README.md, bootstrap.md step 4a, token-practice.md,
  the rtk pin note and the SOTA refresh record. The single regex this
  branch had tested ('^git(\s+\S+)*\s+show(\s+\S+)*\s+(:\S|[^\s-]\S*:)'
  with "diff") is kept only as dated evidence, labelled as an alternative
  that was tested (mitigation-20260926, readback-20260926). The recipe
  also explains rtk's anchoring (registry.rs:1540-1569, 1599-1604) and
  that explicit `rtk` commands bypass the exclusions (registry.rs:1690).
- Reminder: rtk_config_reminder keeps #318's text check (the exact
  four-entry key, exactly once) and, once it passes, runs the installed
  "$bin_dir/rtk" hook check (timeout 30, stdin closed, the caller's
  environment) on `git show HEAD:x | tail -n 5`, `git -C . show
  --no-color HEAD:x | tail -n 5`, `diff a missing`, `git branch -a` and
  `git -C . branch`. Either check failing prints the reminder; a text
  pass with an rtk failure adds a hint naming the probe, because rtk
  ignores a TOML-valid file that does not deserialize (TrackingConfig,
  src/core/config.rs:152-158 at 1d87b8e7). Print-only.
- Tests: all of #318's reminder tests are kept (the silent ones now run
  against a stub rtk that honours the file); new stub tests cover an
  exact text that rtk rewrites, the [tracking] counterexample, an
  unsupported subcommand, a rewritten branch probe, extra output, the
  #291 comments counterexample, the five probes and XDG_CONFIG_HOME
  reaching rtk. An optional real-binary test (skipped without an
  installed rtk 0.50.0) covers the four-entry block, the [tracking]
  rejection with and without history_days, the old two-entry line, the
  single-regex alternative and a missing file.
- Evidence: combined-reminder-20260926.{sh,out} (hook check and the
  combined reminder on scratch configs; silent on this host's #318
  block). The rtk receipt keeps #318's addenda untouched; its added
  limitation now references #318's recipe and the combined reminder;
  results.json gains a step, files and relabelled corrections; the
  receipt's provenance is regenerated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Sep 26, 2026
…bootstrap reminder, blind-packet leak, retained markitdown evidence (#314)

* Retain markitdown's installed-byte verifier, run directories and raw checker output

Codex post-merge review of #291, finding 3.

- verify_installed.py is retained byte-identical. Its 2026-09-25 stdout
  was never written to a file, so results.json says so (not_retained)
  and adds a 2026-09-26 read-only re-run on the production prefix
  (45 of 45 identical) plus a per-file listing (installed_files.py) of
  the wheel RECORD, wheel member and installed digests in RECORD form.
- run-candidate/, run-baseline/ and run-postswitch2/ (converted
  documents, PDF stderr with the home directory replaced by ~, package
  listings) are retained; their files hash to the recorded values.
  run_arm.py kept only checker counts, so check_outputs.py is re-run on
  them (out/checker-rerun-20260926.out), and the independent verifier's
  own checker.out, legs logs and integrity check are retained.
- results.json gains corrections, not_retained, steps and files; the
  receipt gains a dated limitation and regenerated provenance.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 9ec4c33)

* Keep the durable-memory incumbent's build and releases out of blind packets

Codex post-merge review of #269, finding 1 (P2).

The dated durable-memory limitations (the 19b6429/Mac/2.3.2/VelaNext
entry, the open_gaps[0] entry and the 2.4.0/2.4.1 cutover entry), the
older #234 "Production now runs ai-memory 19b6429" entry and the #234
"keeps ai-memory as the production control" sentence named the
incumbent's build, releases and role without a selection word next to a
candidate name, so build_all_packets(..., withhold=True) kept them.
Each sentence carrying those identifiers now calls the component the
incumbent, a choice phrase the prose filter (lane_packets.py
CHOICE_PHRASE, reduce_prose) drops; the ledger keeps every fact.
Verdict fields and checked_at are unchanged. A regression test builds
the real withheld durable-memory packet (default and blind-export
parameters) and asserts that 19b6429, 2.3.2, 2.4.0, 2.4.1 and
"production control" are absent while the ledger still records them.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 418c0f0)

* Grand list legend: the JSON carries winners' basis and only open-gap counts

Codex post-merge review of #269, finding 2 (P3). The "What a winner
means" legend said the JSON carries the layer's limitations and open
gaps; the generator emits each winner's why_selected and evidence_refs
and only gap counts. The legend now says so and points to the layer
ledgers for the limitations and the open-gap text (without paths: the
page is a new-host document).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit caeaa4d)

* rtk hook exclusions: adopt #318's four-entry recipe and add rtk's own check to its reminder

Reconciles this branch's Codex post-merge fixes for #291 (findings 1-2)
and the #314 P2 with #318, which merged first.

- Recipe: #318's four-entry exclude_commands block stays the one set of
  guidance in recipes/README.md, bootstrap.md step 4a, token-practice.md,
  the rtk pin note and the SOTA refresh record. The single regex this
  branch had tested ('^git(\s+\S+)*\s+show(\s+\S+)*\s+(:\S|[^\s-]\S*:)'
  with "diff") is kept only as dated evidence, labelled as an alternative
  that was tested (mitigation-20260926, readback-20260926). The recipe
  also explains rtk's anchoring (registry.rs:1540-1569, 1599-1604) and
  that explicit `rtk` commands bypass the exclusions (registry.rs:1690).
- Reminder: rtk_config_reminder keeps #318's text check (the exact
  four-entry key, exactly once) and, once it passes, runs the installed
  "$bin_dir/rtk" hook check (timeout 30, stdin closed, the caller's
  environment) on `git show HEAD:x | tail -n 5`, `git -C . show
  --no-color HEAD:x | tail -n 5`, `diff a missing`, `git branch -a` and
  `git -C . branch`. Either check failing prints the reminder; a text
  pass with an rtk failure adds a hint naming the probe, because rtk
  ignores a TOML-valid file that does not deserialize (TrackingConfig,
  src/core/config.rs:152-158 at 1d87b8e7). Print-only.
- Tests: all of #318's reminder tests are kept (the silent ones now run
  against a stub rtk that honours the file); new stub tests cover an
  exact text that rtk rewrites, the [tracking] counterexample, an
  unsupported subcommand, a rewritten branch probe, extra output, the
  #291 comments counterexample, the five probes and XDG_CONFIG_HOME
  reaching rtk. An optional real-binary test (skipped without an
  installed rtk 0.50.0) covers the four-entry block, the [tracking]
  rejection with and without history_days, the old two-entry line, the
  single-regex alternative and a missing file.
- Evidence: combined-reminder-20260926.{sh,out} (hook check and the
  combined reminder on scratch configs; silent on this host's #318
  block). The rtk receipt keeps #318's addenda untouched; its added
  limitation now references #318's recipe and the combined reminder;
  results.json gains a step, files and relabelled corrections; the
  receipt's provenance is regenerated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Register the post-merge fixes' files and regenerate the grand list

Hot-file commit (docs/lanes.md): manifests/evidence.json starts from
main's copy (with #318's and #315's entries) and re-registers every
changed or new file of this branch (indent 2, ensure_ascii); receipts[]
mirrors the rtk and markitdown receipts' new limitations and keeps every
other entry. component_matrix --write (no change) and
new_host_grand_list --write regenerate the reports.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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