Skip to content

Record the nativestack-5975wx-20260925 WSL2 workstation: measured profile and 21 host receipts - #231

Merged
seathatflowsinourveins merged 2 commits into
mainfrom
claude/nativestack-host-record-20260925
Sep 25, 2026
Merged

seathatflowsinourveins merged 2 commits into
mainfrom
claude/nativestack-host-record-20260925

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Sep 25, 2026 •

Copy link
Copy Markdown
Owner

Scope

  • What this PR changes:
    • The measured hardware profile of a new WSL2 workstation, host id nativestack-5975wx-20260925, written by scripts/hardware_profile.py --record-host: evidence/artifacts/hw-profiles/nativestack-5975wx-20260925/profile.json and a new native_proven entry in adoption/hardware-profiles.json hosts[]. The labelled projection wsl-workstation-128gb-projected stays, as docs/next-host-stages.md describes. The grand list now shows the measured host next to it.
    • 21 host receipts under evidence/hosts/nativestack-5975wx-20260925/: 14 use-stage native_proven, 1 use-stage local_integration, and 6 install-stage native_proven. All 21 pass. None has an independent review yet (see Host evidence).
    • The regenerated catalogs/landscape/component-evidence-matrix.json, docs/component-evidence-matrix.md, catalogs/landscape/new-host-grand-list.json and docs/new-host-grand-list.md, plus the manifests/evidence.json registrations.
  • Base commit: aa0812b. Every receipt was recorded from a worktree at aa0812b1 (then origin/main), so catalog_revision stays reachable after a squash merge.
  • Owned paths touched: the files above only. adoption/pins-*.json, adoption/platforms/linux-wsl2.md, docs/secret-storage.md, docs/acceptance-evidence-policy.md, docs/next-host-stages.md and docs/new-workstation-runtime-profile-20260922.md are untouched.

The host, as measured. Ubuntu 24.04.5 LTS in WSL 2.7.13.0 (kernel 6.18.33.2-microsoft-standard-WSL2), distro NativeStack. AMD Ryzen Threadripper PRO 5975WX with 48 visible CPUs (.wslconfig processors=48). 102.2 GiB in /proc/meminfo (.wslconfig memory=104GB, swap=24GB). NVIDIA GeForce RTX 4090 24 GB (driver 616.64). systemd 255 (255.4-1ubuntu8.17) on cgroup v2; the user manager delegates cpu, memory and pids.

  • Tiers: large-32b-q4 generation, headroom semantic RAG, concurrency cap 16, bounded-run memory 25.6 / 17.1 GB. These are the projection's tiers.
  • .wslconfig differs from the decided profile. docs/next-host-stages.md records memory=112GB, processors=60, swap=16GB; this host has 104GB, 48 and 24GB. That page is owned by another PR, so it is not edited here.
  • Second physical machine. Every receipt declares second_physical_machine: true. The catalog's WSL authoring host is an Intel Core Ultra 9 275HX laptop with an RTX 5090 Laptop GPU (evidence/artifacts/sota-refresh-20260923/hw-profiles/this-host.json), and this host's measured CPU and GPU differ from it. The claim is self-declared; the reviewer should confirm it.

Evidence-class table

Paths are evidence/hosts/nativestack-5975wx-20260925/nativestack-5975wx-20260925--<component>--<stage>--20260925.json.

Receipt Stage Evidence class What the retained commands show
gitleaks use native_proven gitleaks resolves to the guarded launcher, whose hashes and its runner's equal adoption/tools. The checkout's latest commit and a throwaway clean commit: no leaks. Positive control: the gitleaks sidekiq-secret fixture commit exits 1 with exactly one finding (RuleID: sidekiq-secret, secret redacted).
rtk use native_proven rtk git status is compacted (599 to 228 bytes). rtk proxy git status is byte-identical to git status. A missing ref returns git's own exit 128.
qmd use native_proven BM25 search on this host's nativestack-catalog index (15 files, 0 vectors): the expected top hit adoption/tools/README.md, and [] for an absent token.
prometheus use native_proven The running 3.14.0 server: up for 7 scrape targets (all 1), 240 vLLM samples in the last hour, 2 rule groups and 14 rules with health ok. Five firing alerts are named (see Findings).
loki use native_proven The running 3.7.8 server: stored service_name values and 131,557 lines over 24 h. A line pushed with the native push API (HTTP 204) comes back from a LogQL query.
opentelemetry-collector-contrib use native_proven The running 0.161.0 Collector took one OTLP/HTTP log into Loki. The body came back as [content omitted], the allowlisted observation_id was kept, and both non-allowlisted attributes were dropped.
vllm use native_proven The running server reports /version 0.25.0 on the RTX 4090. Nemotron-3-Embed-1B returns 2048-dimensional embeddings, and the backup passage ranks first (0.5844 against 0.2269 and 0.0588).
qdrant use native_proven The running 1.19.1 server: a temporary collection of real embeddings is created, upserted and searched (backup passage first), then deleted. It returns 404 after deletion, and the collection count is 5 before and after.
restic use native_proven A throwaway repository with a run-time password: adoption/ (51 files) is backed up, check --read-data is clean, and restore --verify plus diff -r give an identical tree. Positive control: after one pack is corrupted, check exits 1.
dagu use native_proven Scratch DAGU_HOME: a two-step DAG that passes output between steps succeeds. Negative case: a step exiting 3 gives Result: Failed and error: exit status 3.
difftastic use native_proven Real revisions 57fb6d89 to aa0812b1: syntactic change, exit 1. Control: a whitespace-only JSON reformat, where cmp differs and difft exits 0.
worktrunk use native_proven Throwaway repository, no user or project config, stdin /dev/null: switch --create, list, remove --foreground, then only main remains.
markitdown use native_proven A real 8-K's HTML (the vendored edgartools fixture, sha256 a1e7ca47…) becomes 5,536 bytes of Markdown with 29 table rows and no raw tags.
nautilustrader use native_proven The unchanged upstream quickstart at 1b0a49d2 (sha256 verified) runs in Bubblewrap with loopback only and no /home: 10,000 iterations, 1,804 events, 902 fills, 451 positions, 903 account rows, ending total 1000431.00. account.csv is byte-identical to the authoring host's accepted runs.
poppler use local_integration The frozen document-ingestion protocol on the repository's designed corpus: all 8 checks are true, including the native invalid-PDF refusal.
codex install native_proven 0.155.1: path, bootstrap and catalog pin, --version. Readiness only.
ai-memory install native_proven 2.3.2: path, pins, --version. Readiness only.
mcporter install native_proven 0.13.13: path, pins, --version. Readiness only.
systemd install native_proven 255.4-1ubuntu8.17 by systemctl and dpkg-query, cgroup v2, cpu/memory/pids delegated. Readiness only.
headroom install native_proven 0.37.0: path, catalog pin, --version. Readiness only.
ccusage install native_proven 20.0.24: path, catalog pin, --version. Readiness only.

The install receipts are version and pin checks. They show the pinned build is present and starts, which is readiness evidence, not functional acceptance, and they support conditional at most. The use receipts against running services observed services that were already up under their systemd user units; nothing was started, stopped or reconfigured.

Rehearsal and one post-recording edit. Each receipt's commands were rehearsed once through the recorder's own execution path (/bin/sh from the repository root, sanitized 400-character excerpt) before recording. The rehearsal found and fixed these problems:

  • a false pass in restic's positive control: restic writes packs read-only, the overwrite failed, and the stale exit status satisfied the check. The recorded command now makes the pack writable, exits 2 if the overwrite fails, and requires an error in the check log;
  • restic 0.19.1's restore layout;
  • gitleaks printed no finding lines without --verbose;
  • a /home skeleton inside the Nautilus sandbox, because the environment lives under $HOME. It is now bound at /opt/nautilus-env, which the receipt states as its one difference from the accepted argv;
  • a scratch directory named home, which the sanitizer redacted;
  • pin, path and collection lines that some claims cited but no command printed.

After recording, the restic receipt's claim was reworded to match its retained excerpt: pack … contains 2 errors and Fatal: repository contains errors, not the rehearsal's ciphertext verification failed. Its commands, outputs and timestamps are unchanged, and its hash was re-registered. Between them, the rehearsals and recordings wrote four labelled synthetic probe records to this host's Loki, which has 72-hour retention. Two went through Loki's push API. Two went through the Collector, which also appended them, with the body already replaced, to its events file. They also created two temporary Qdrant collections, both deleted.

Not recorded, and why

  • claude-code: installed 2.1.282, at or above the 2.1.280 bootstrap floor, but the landscape winner pin is still 2.1.278. A receipt would need --allow-unbound-version and would never count. No claude -p model run was attempted.
  • candidate:cli-cli (gh 2.101.0) and candidate:astral-sh-uv (uv 0.12.17): both winners are unpinned, so no receipt can bind. node 24.21.0 is not a catalog component.
  • codex use: no codex exec model turn was attempted. The account's Codex usage limit was reported to run until 2026-09-30; this PR did not verify that.
  • Use stage for ai-memory, mcporter, headroom, ccusage and systemd: not recorded. The memory store and usage logs are private, and the mcporter config is machine-specific client configuration. headroom needs its proxy or MCP server. systemd use would start transient units, which this task excluded.
  • IBKR environments (nautilus-ibapi-10.45.1-py312, nautilus-ib-1.231.0-py312): IBKR local acceptance is a later gate (docs/next-host-stages.md step 6). The skills and agents installed today (typesafe-ai, gh-fix-ci, security-best-practices; 7 catalog agents) either have unpinned winners or need a model-mediated invocation.
  • Model qualification on the RTX 4090: not run. The vllm receipt records serving only, with no qualified_models.
  • Not recorded in this PR: socraticode, serena, context-mode and jcodemunch (MCP servers used through the clients); syft, grype and zizmor; hf; Grafana, Alertmanager and ntfy (not landscape winners); the llama.cpp generation server (a b11146 CUDA build; the stack's llama-cpp entry is b11057). For sandbox-runtime, srt --version prints 1.0.0 while its package is 0.0.77, so a version call cannot back that pin.
  • Not installed on this host: promptfoo, playwright-test (no pnpm), agent-browser, openresearch, tavily-cli, and the pandera, mlflow, dvc and inspect-ai rows.

Findings (left unchanged here)

  1. EcosystemCollectorHealthUnexpected fires on this host. The rule, rendered from observability/backends/templates/ecosystem-prometheus-rules.yml.example, probes 127.0.0.1:14333, but this host's Collector health_check listens on, and its http_check probes, 127.0.0.1:24333. The other four firing alerts are for services this host does not run: OmniRoute, FreeLLMAPI, the Dagu dashboard and paper-trial metrics.
  2. The claude-code winner pin lags the bootstrap floor: landscape 2.1.278 against floor 2.1.280 and 2.1.282 installed here.
  3. This host's QMD index is nativestack-catalog, not the native-agent-stack-catalog that AGENTS.md names. It indexes only the adoption collection and has no embeddings yet.
  4. verdict_flip_candidates.py lists 2 new linux-wsl2 candidates, difftastic and worktrunk in foundation/git-github-automation: declared not_established, and the evidence now supports conditional. Report only; a flip needs the lane re-record.
  5. The no-CPU refusal test from Stop the no-CPU test slice so guarded-runner runs stop leaking systemd units #229 fails on this host. In the dropped subtest, the scope created in the fresh ecosystem-check-nocpu-<pid>.slice has no memory.max, so ecosystem-bounded-run refuses with memory.max is not enforced where the test asserts cpu.max is not enforced. The refusal itself holds (exit 78, command not started); only the asserted reason differs. This session's two runs stopped their slices, so Stop the no-CPU test slice so guarded-runner runs stop leaking systemd units #229's cleanup works here. Four older ecosystem-check-nocpu-<pid>.slice units from earlier runs are still loaded on this host and are left in place.
  6. The pre-commit gitleaks hook does not run on this host. The repository-local core.hooksPath is an absolute path to scripts/git-hooks in the main checkout, and that directory does not exist there. Git skips a missing hooks directory silently, so commits from any worktree get no staged-change scan. scripts/git-hooks/pre-commit documents the relative form git config core.hooksPath scripts/git-hooks, which resolves inside each checkout. This commit's range was scanned manually instead. The host configuration is left unchanged.

Local commands run

Each command ran as uv run --no-project --python 3.13 --with jsonschema --with pyyaml python …, because the host's python3 lacks jsonschema.

$ python3 scripts/hardware_profile.py --record-host nativestack-5975wx-20260925 --label "WSL2 x86_64 workstation, …"
{"evidence": "evidence/artifacts/hw-profiles/nativestack-5975wx-20260925/profile.json", "host_id": "nativestack-5975wx-20260925", "status": "recorded"}
$ python3 scripts/host_receipts.py record …          # 21 receipts, each result=pass
$ gitleaks dir evidence/hosts/nativestack-5975wx-20260925 --no-banner --no-color --redact            # no leaks found
$ gitleaks dir evidence/artifacts/hw-profiles/nativestack-5975wx-20260925 --no-banner --no-color --redact   # no leaks found
$ gitleaks git --no-banner --no-color --redact --config .gitleaks.toml --log-opts="origin/main..HEAD" .   # 1 commit, ~144.6 KB, no leaks found (the pre-commit hook did not run; see Findings 6)
$ python3 scripts/component_matrix.py --write          # {"flip_rule_violations": 0, "rows": 32, "status": "written"}
$ python3 scripts/new_host_grand_list.py --write       # {"status": "written", "layers": 32, "winners": 66}
$ python3 scripts/host_receipts.py validate            # {"receipts": 37, "status": "passed"}
$ python3 scripts/evidence_manifest.py --write && python3 scripts/evidence_manifest.py --check   # 5360 files: written, passed
$ python3 scripts/validate.py                          # passed: 69 components, 5360 hashed files, 4 profiles, 145 receipts
$ python3 scripts/verdict_review_gate.py --base origin/main   # passed: 2 regenerated catalogs/landscape files, 0 changed rows, 0 violations
$ python3 scripts/receipt_staleness.py                 # 34 buckets, 0 flagged
$ python3 scripts/component_matrix.py --check          # 32 rows, checked
$ python3 scripts/new_host_grand_list.py --check       # passed
$ python3 scripts/validate_catalogs.py && python3 scripts/validate_foundation.py --root . --json && python3 scripts/landscape.py --root .   # passed, errors []
$ python3 scripts/build_ecosystem.py --check           # passed
$ python3 scripts/verdict_flip_candidates.py           # 8 candidates (6 pre-existing macOS, 2 new linux-wsl2)
$ python3 scripts/release_due.py --strict-if-repinned origin/main   # release_due, non-strict, exit 0: pre-existing tag drift; this PR's 4 generated paths already differed from v2026.09.24.1
$ python3 -m unittest                                  # Ran 4720 tests in 395.5s: FAILED (failures=1, skipped=534)
$ python3 -m unittest tests.test_adoption_guarded_runners.BoundedRunCpuQuotaTests   # Ran 7 tests: FAILED (failures=1), same test

The one failure is tests.test_adoption_guarded_runners.BoundedRunCpuQuotaTests.test_scope_with_a_dropped_or_altered_cpu_quota_is_refused_with_78, in its launcher='dropped' subtest. It reproduces in isolation, and this PR does not cause it: tests/, adoption/tools/ and scripts/ are byte-identical to origin/main. See Findings 5.

Decision record

None. This PR records host evidence only: it selects no winner, records no verdict, and flips no platform_status.

Host evidence

  • python3 scripts/host_receipts.py validate passes for every new/changed receipt (37 receipts, passed).
  • Independent review is recorded (scripts/host_receipts.py review) or explicitly requested in this PR. Requested: each receipt carries only the recorder's self review. A reviewer in a separate session should check the four points in docs/contributing-evidence.md step 8 (layer role, positive control, backed claims, bound to the winner) and append a review. The reviewer must be a different Claude Code session, a Codex session or a person; this recording session's identity is refused. Cross-family Codex review was skipped: the Codex account's usage limit runs until 2026-09-30. With an agree review, the 14 use-stage native_proven receipts become qualifying receipts for their winners on linux-wsl2-x86_64.
  • No platform_status change is made from a host receipt alone. adoption/manifest.json and catalogs/landscape/{foundation,us-equities}.json are unchanged.

Checklist

  • New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no floating tags). No workflow changes.
  • New/changed workflows declare top-level permissions: contents: read. No workflow changes.
  • No secrets are printed, logged or committed; no new required secret was added. The receipts were re-read and scanned for home paths, usernames, session ids, emails and token patterns (none found), and gitleaks found no leaks. No credential store was read. The restic probe's run-time password was deleted with its throwaway repository.
  • No new paid hosting, subscription or billing surface was introduced.
  • Peer-owned untracked files and worktrees were preserved.

Independent review (appended 2026-09-25)

A separate headless Claude Code session reviewed all 21 receipts against docs/contributing-evidence.md step 8. It had its own session id, so it was not the recorder. It re-ran at least one command per receipt on this host. The verdicts are recorded with host_receipts.py review --kind independent_session:

  • 20 agree. Use receipts reproduced live include:
    • restic backup, restore and the corruption control (exit 1),
    • vLLM embedding ranking (cosines within 0.0004),
    • Prometheus: 7 targets up, 14 healthy rules,
    • the full NautilusTrader quickstart with a byte-identical account.csv,
    • qmd, rtk, worktrunk, dagu, difftastic and gitleaks with their controls.
  • 1 needs_changes: systemd (install). It fails point 3. Its generic limitation says the tool is an install under ~/.local/share/codex-ecosystem, but systemd is the Ubuntu package at /usr/bin/systemctl. Its version and pin claims were reproduced. The receipt stays withheld with its veto intact.

A same-day re-record would have silently overwritten this receipt and its review. That was caught before commit and reverted. The tool defect is fixed in a separate PR: record now refuses to overwrite and supports an explicit supersede.

Rebased onto d993d5ff (#230). Regenerated component_matrix.py --write (32 rows, 0 flip-rule violations) and new_host_grand_list.py --write (32 layers, 66 winners). host_receipts.py validate passes (37 receipts), as do evidence_manifest.py --check (5366 files), validate.py and verdict_review_gate.py (0 changed rows). Codex cross-family review is still skipped because of the usage limit until 2026-09-30.

Residuals:

  • The systemd install receipt is withheld and can be re-recorded with the corrected limitation once the supersede support lands.
  • claude-code, gh and uv have no bound pins, so they got no receipts.
  • IBKR environments, skills and agents are not recorded here.

🤖 Generated with Claude Code

@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.

Scout and others added 2 commits September 25, 2026 03:01
…file and 21 host receipts

Measured hardware profile (scripts/hardware_profile.py --record-host) for a
second physical WSL2 machine: AMD Ryzen Threadripper PRO 5975WX, 48 visible
CPUs, 102 GiB visible RAM, RTX 4090 24 GB. It is added to
adoption/hardware-profiles.json next to the labelled projection.

21 receipts recorded with scripts/host_receipts.py record from origin/main
aa0812b, all pass:
- 14 use-stage native_proven: gitleaks, rtk, qmd, prometheus, loki,
  opentelemetry-collector-contrib, vllm, qdrant, restic, dagu, difftastic,
  worktrunk, markitdown and nautilustrader.
- 1 use-stage local_integration: poppler.
- 6 install-stage native_proven readiness receipts: codex, ai-memory,
  mcporter, systemd, headroom and ccusage.

None is independently reviewed yet. The component evidence matrix and the
new-host grand list are regenerated; no platform_status changes.

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

A separate headless Claude Code session (its own session id; not the recorder)
reviewed all 21 receipts against docs/contributing-evidence.md step 8 and
re-ran at least one command for each on this host: 20 agree, 1 needs_changes.
The systemd install receipt fails point 3: its generic limitation says the tool
is an install under ~/.local/share/codex-ecosystem, but systemd is the Ubuntu
package at /usr/bin/systemctl. Its version and pin claims were reproduced.
component_matrix.py and new_host_grand_list.py were regenerated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/nativestack-host-record-20260925 branch from 0d7babf to 2602dc3 Compare September 25, 2026 07:01
@seathatflowsinourveins
seathatflowsinourveins merged commit 202e051 into main Sep 25, 2026
26 of 29 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/nativestack-host-record-20260925 branch September 25, 2026 07:13
seathatflowsinourveins added a commit that referenced this pull request Sep 25, 2026
)

#231 recorded nativestack-5975wx-20260925 with 21 receipts; an independent
session agreed on 20 and withheld the systemd install receipt. Add one gate row
that claims only that, linked to the host's measured hardware profile, and
refresh recorded_at_utc.

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 25, 2026
…artifact (one host identity)

#231 already records this physical machine as nativestack-5975wx-20260925.
To avoid two host identities (and double counting in platform_status), the
66 receipts recorded here under threadripper4090-nativestack-20260924 move
unchanged into evidence/artifacts/nativestack-20260924/host-receipts-20260924/
(still hash-registered), the duplicate hardware-profiles entry and its
hw-profiles artifact are dropped, and the README states the relationship.
The failure register and execution ledger stay. Agreed with the #231
recorder (option d).

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

Two use-stage receipts, native_proven, recorded with scripts/host_receipts.py
at origin/main 720e294 on the WSL2 Threadripper/RTX 4090 host from #231,
each bound to its layer winner's current pin:

- socraticode 1.14.0 (foundation/semantic-rag): through mcporter, the health
  check reaches Qdrant and the vLLM-served Nemotron embedder, the index of a
  separate clone of this repository is green, a gate-ladder question returns
  scripts/trading_gates.py and catalogs/us-equities/gates-20260922.json in the
  top eight, and an unrelated control query returns neither. The -2
  generation supersedes the first recording: it drops an unestablished
  "read-only clone" wording and asserts the launched package version against
  the winner pin.
- ai-memory 2.3.2 (foundation/durable-memory): read-only status of the host
  service (counts and flags only), then write, search, read-back and delete
  of a scoped probe page on a disposable scratch server with its own data
  directory; after deletion the same search finds nothing and read-page
  fails. The scratch server and directory are removed.

Rebased onto d2daa16 (#254) with the docs/lanes.md hot-file protocol: main's
manifests/evidence.json plus the three receipts re-registered; the component
evidence matrix is regenerated with main's component_matrix.py, and the
new-host grand list is unchanged by these receipts.

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

Two use-stage receipts, native_proven, recorded with scripts/host_receipts.py
at origin/main 720e294 on the WSL2 Threadripper/RTX 4090 host from #231,
each bound to its layer winner's current pin:

- socraticode 1.14.0 (foundation/semantic-rag): through mcporter, the health
  check reaches Qdrant and the vLLM-served Nemotron embedder, the index of a
  separate clone of this repository is green, a gate-ladder question returns
  scripts/trading_gates.py and catalogs/us-equities/gates-20260922.json in the
  top eight, and an unrelated control query returns neither. The -2
  generation supersedes the first recording: it drops an unestablished
  "read-only clone" wording and asserts the launched package version against
  the winner pin.
- ai-memory 2.3.2 (foundation/durable-memory): read-only status of the host
  service (counts and flags only), then write, search, read-back and delete
  of a scoped probe page on a disposable scratch server with its own data
  directory; after deletion the same search finds nothing and read-page
  fails. The scratch server and directory are removed.

Rebased onto b792d6e (#177) with the docs/lanes.md hot-file protocol: main's
manifests/evidence.json plus the three receipts re-registered; the component
evidence matrix is regenerated with main's component_matrix.py, and the
new-host grand list is unchanged by these receipts.

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

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

---------

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Sep 25, 2026
…20260925 (#262)

* Record 31 host receipts on nativestack-5975wx-20260925 (component-stages only the 09-24 record held)

The 2026-09-24 NativeStack record (#160) held 66 receipts under a second host
id for this machine; #231's canonical record held 21. The component-stages
only #160 proved are re-recorded fresh on current pins under the canonical
host id, by host_receipts.py record: 8 observability/recovery, 10 tools,
6 trading-lane libraries, 7 clients and scanners. Recovery stages ran on
owned instances only; use stages meet the four review points (layer role,
positive control, backed claims, winner binding). 16 historical pairs were
not re-recorded, each for a stated reason (no landscape winner to bind,
unpinned catalog pin, already on main, or Codex usage-limited until
2026-09-30). The vllm install receipt waits for the 0.30.0 pin.

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

* Keep the 26 independently agreed receipts; drop five for re-recording from a published commit

Independent headless review sessions agreed on 26 receipts. Five are
withdrawn before publication: mcp-inspector, poppler, serena and lean were
re-recorded on an unpublished local commit (catalog_revision not on GitHub),
and claude-code use shows none of the workers layer's job. They will be
re-recorded from a published origin/main commit and reviewed again.

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant