Skip to content

Register Harbor 0.24.0 as a container harness with a measured install, smoke and route-b probe - #1047

Merged
seathatflowsinourveins merged 2 commits into
mainfrom
foundation/harbor-parallel-runtimes-20261012
Oct 12, 2026
Merged

seathatflowsinourveins merged 2 commits into
mainfrom
foundation/harbor-parallel-runtimes-20261012

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

  • What this PR changes: records the first measured Harbor 0.24.0 install on the NativeStack host (private uv tool scope), one zero-spend oracle trial and one claude-code trial (claude-haiku-5-5) of Harbor's own hello-world task through Docker, and one container-to-gateway TCP probe; registers the receipt, adds harbor as an optional stack component with the registrations a new component requires, and adds the decision record with the CC's 2026-10-12 rulings. The second commit answers the first Claude and GPT reads of the first head.
  • Base commit: 489b2632 (main at the pure rebase; the pull request was opened on 2f59d744). The second commit is a fast-forward on top of the rebased head 5164a06b and the branch is not rebased again here, so both reads can delta-read it against 5164a06b; the one rebase onto main happens at landing (the merged-tree result against main at push time is under "Local commands run").
  • Lane: lane:foundation. The change touches two shared hot files (manifests/evidence.json, manifests/stack.json) through the hot-file protocol; re-registration and --write regeneration do not by themselves make a PR shared (docs/lanes.md), the precedent Register Hindsight research memory and service templates #854 added a stack component under lane:foundation, and no trading path is touched.
  • Owned paths touched: docs/decisions/, evidence/receipts/, evidence/artifacts/harbor-smoke-20261012/ (four sanitized files), manifests/ (hot files), adoption/manifest.json, recipes/README.md, catalogs/landscape/ (foundation, upstream snapshot, final-stack report), catalogs/us-equities/decision-index.json (generated), catalogs/foundation/new-wsl-architecture-20261001.json (one moved line citation), blueprints/token-native-focus/saturation-audit.json (lifecycle row), docs/new-wsl-handbook.{json,md} and evidence/artifacts/new-wsl-handbook-20261001/receipt.json (regenerated through the builder, with the receipt's regeneration entry), tools/local-pages/ (two exact Architecture grants and a README sentence), tests/ (one new module, one extended).

SOTA sources

  • harbor-framework/harbor v0.24.0, annotated tag bf8996ef6d97d014924dc1a5e4acc7e9b19b27a1 peeling to b53b8134e1241686dca7759af188f987ecc48e8b: install route README.md#L22 (uv tool install harbor); installed wheel harbor-0.24.0-py3-none-any.whl, SHA256 23b7ba616a3aae4eff561ced5e2c51c7186f2981e53a770dea9c689d3969877c (PyPI metadata), re-downloaded and re-hashed here, installed RECORD 488 ok / 0 bad.
  • Upstream mirror pin dc933be707feafbb9efcdf092cb8a0e391332617 (31 commits after v0.24.0; gh api compare ahead_by=31): adapter and connection sources read for the route table, src/harbor/agents/model_connection.py, agents/factory.py:40-90, agents/installed/{claude_code,codex,opencode,pi,goose,mini_swe_agent,openhands_sdk,deerflow}.py, trial/single_step.py:40-54, trial/trial.py:551-556,1052-1058, cli/jobs.py:542,635,2294,2803 (the retry, resume and regrade interfaces), telemetry.py:40-45,479-480, constants.py:4, examples/tasks/hello-world/, docs-mintlify/telemetry/telemetry.mdx. The cited files are identical in the v0.24.0 wheel except five, listed in the decision record.
  • rootless-containers/rootlesskit v3.1.0 (tag object 4fab82caf726318cef33bf82912546b8a529eaab): pkg/network/gvisortapvsock/gvisortapvsock.go#L106-L124 and #L142-L148: the gateway address and the NAT to host 127.0.0.1 that exists only without --disable-host-loopback (the installed daemon runs with it). A byte-identical copy (git blob 805e97a93257f447aff56ea8d1463d306e77f00c, Apache-2.0) is published in this PR as evidence/artifacts/harbor-smoke-20261012/upstream/gvisortapvsock.go.txt.
  • This repository's Architecture reader and grant procedure: tools/local-pages/architecture_evidence.py:161-162,193-197, tools/local-pages/source_policy.py (authorize), scripts/local_pages_policy_grants.py and tools/local-pages/README.md; the hot-file protocol in docs/lanes.md; precedent Register Hindsight research memory and service templates #854 (f24910e5e) for adding a stack component; docs/decisions/2026-10-09-harbor-0240-profile.md and evidence/artifacts/harbor-0240-currency-20261009/receipt.json for the prior pin and slot.

Evidence-class table

Claim Evidence class Command / receipt
Harbor 0.24.0 installs with uv tool install --no-build harbor==0.24.0 into a private scope; wheel digest and RECORD verified (exit 0, 91 distributions, list published) native_proven evidence/receipts/harbor-smoke-20261012.json data.install
The oracle agent passes Harbor's hello-world through Docker and the verifier with no model call (reward 1.0, 37 s) native_proven receipt data.oracle_dry_run
claude-code + claude-haiku-5-5 passes the same task (reward 1.0, 206 s, 32,704 in / 106 out tokens, $0.001053); 19.66 s outside the four phases located and attributed from source native_proven receipt data.smoke
One TCP connect from a throwaway container to 10.0.2.1:21128 timed out; the control to 10.0.2.1:53 opened native_proven receipt data.route_b_probe; output and script published
The timeout's cause: rootlesskit maps the gateway address to host loopback only without --disable-host-loopback, and the daemon runs with it source_review published copy of the rootlesskit file; the daemon's process line is in the record
Isolation: settings.json unchanged; real-HOME Harbor, uv and docker directories unchanged; other movement attributed native_proven (bounded) receipt data.isolation
Route table for the eight named adapters and the 45-adapter matrix source_review decision record, file:line at v0.24.0
The terminus-2 --ak api_base= gateway route (model client in the Harbor process on the host) source_review (source-read, not live-tested) decision record, route table
No digest of a private preimage is published, and a provenance digest hashes a repository file local_integration tests/test_provenance_digest_custody.py (fail-first below); prefix audit
Exact Architecture grants for the two Harbor receipts; unlisted paths stay refused local_integration tests/test_local_pages_policy_grants.py, the committed-catalog test (fail-first below)
Registration, generated reports and the landscape candidate local_integration commands below

Local commands run

First commit 1f5413b6 (opened on 2f59d744): validate 0, 16 shard-0 steps 0, 1,222 + 1,696 unit tests OK (two module batches)
  (that selection did not include tests.test_local_pages_architecture_landscape_exclusions, which holds the test that failed on hosted CI)

Pure rebase 5164a06b onto 489b2632, pushed once with a lease on 1f5413b6:
$ git patch-id --stable over git diff -U0 of the 14 non-registry files
original d1b01612c23e3904, rebased d1b01612c23e3904 (same); only manifests/evidence.json differs
  (+1 receipts[] entry, +1 files[] row, 12 hash updates, via register_receipt and register_file)
validate 0 (71 components / 240 receipts / 11,817 hashed files), all 16 shard-0 steps 0
Hosted CI on 1f5413b6: validate-shard-7 failed with ONE test of 1,416 (the Architecture catalog build, no independent approval
for architecture_receipt); shards 0 to 6 succeeded (shards 2 and 4 were pending at the GPT read and passed afterwards), and the
validate aggregate failed only because of shard 7.
Hosted CI on 5164a06b: the same single test failed, in shard 2 this time (1 of 2,119); every other check run concluded success,
neutral or skipped, and the validate aggregate failed only because of shard 2.

This commit, fail-first:
$ python3 -m unittest tests.test_provenance_digest_custody   (before the receipt fix)
FAILED (failures=16, errors=1): {'evidence/receipts/harbor-smoke-20261012.json': 14} != {}   (counts only, no digest in the output)
$ python3 -m unittest tests.test_local_pages_architecture_landscape_exclusions.CommittedLandscapeSetTests.test_committed_catalog_set_builds_through_the_committed_policy
rc 1: SourcePolicyError: Architecture role/path has no independent approval: architecture_receipt   (before the grants)
and with only the first grant it still failed on the second Harbor receipt the candidate cites, so both grants are needed

This commit, after the fix (committed head, then the merged tree):
$ python3 scripts/validate.py
{"components": 71, "hashed_files": 11821, "profiles": 4, "receipts": 240, "status": "passed"}   exit 0
$ the sixteen shard-0 steps of .github/workflows/validate.yml, then python3 scripts/verdict_review_gate.py --root . --base 489b2632
all 16 exit 0; verdict-review-gate: passed (0 changed row(s), 0 violation(s))
$ build_new_wsl_handbook --check; evidence_manifest --check; saturation_ledger --check; catalog_decisions --check
exit 0 each
$ python3 -m unittest <44 modules: the 29 local-pages modules, custody, digest-privacy, stack lifecycle, final-stack, decision index, handbook, validate, verdicts, ecosystem, landscape and catalog modules, host receipts, pins> -q
Ran 1,230 tests in 308 s, OK (skipped=2)

Merged tree, as main stands at push time (703d588c5; 1 commit since the rebase base, #1033; the only overlap with this PR is manifests/evidence.json):
$ git worktree add --detach <dir> 703d588c5; git merge --no-commit --no-ff <this head>
Automatic merge went well; 0 unmerged paths
$ the same 16 steps, the gate (--base 703d588c5), the four checks above
all exit 0; {"components": 71, "hashed_files": 11859, "profiles": 4, "receipts": 240, "status": "passed"}
$ python3 -m unittest <62 modules: the broad selection, all 29 local-pages modules, custody and digest-privacy included> -q
Ran 2,253 tests in 886 s, OK (skipped=19)
$ python3 scripts/validate_shards.py run -v --shard N --shards 8   (the CI command, N = 0 to 7, in parallel; each shard in its own local merge commit of 703d588c5 and this head)
Ran 14,223 tests across the 8 shards, skipped 1,164; shards 1, 2, 3, 6, 7 exit 0; shards 0, 4 and 5 exit 1 on environment-only results:
  shard 0, 1 failure, tests.test_token_e2e_grader.F27c_KeysOnRealContent.test_keys_at_the_pinned_revision: `git clone --local` fails with a cross-device link (the test's temp dir is on tmpfs, the object store is on another filesystem);
    it fails the same way on main alone, and passes (1 test OK) in the merged tree with TMPDIR on the objects' filesystem
  shard 4, 25 errors, all in tests.test_claude_usage_metrics: ModuleNotFoundError prometheus_client (not installed on this host; CI installs it); the same 25 errors on main alone
  shard 5, 10 errors, all in tests.test_claude_usage_sampler: the same missing module; the same 10 errors on main alone
  this PR changes none of observability/, tests/test_claude_usage_sampler.py, tests/test_claude_usage_metrics.py or tests/test_token_e2e_grader.py (0 files)

$ prefix audit: the first 7 hex digits of each of the ten flagged digests, searched in every tracked and untracked text file, this body and the commit message
12587 text files and 2 drafts scanned: 0 files hold any flagged prefix   exit 0
$ gitleaks (staged diff, the commit range, and a directory copy of the record, receipt, four artifacts, two test modules, README, the added lines, this body and the commit message) and privacy_scan.sh on the same material
no leaks found; all clean (names_checked=3)   exit 0

Decision record

docs/decisions/2026-10-12-harbor-parallel-runtimes.md: evidence, the route table and what each route's source accepts, the CC rulings (environment shim accepted as a disclosed scratch-only isolation measure, HARBOR_TELEMETRY=off standing, route policy: gateway routes use terminus-2 with --ak api_base= (source-read, not live-tested), container adapters use route a only until a measured route exists, no change to the Docker daemon or rootlesskit), the custody of the run originals, the Architecture grants and the open questions. What would overturn the container-adapter route policy: a measured container-to-gateway route (for example a gateway address the container network reaches) from one probe like the recorded one.

Host evidence

No files under evidence/hosts/; no platform_status change. The receipt is a repository evidence receipt, not a host receipt.

Follow-ups and decisions for the CC

  1. Landscape candidate (CC ruling 2026-10-12: it stays). scripts/landscape.py:1326 requires every selected stack component to be a layer candidate. Hindsight was already a candidate before Register Hindsight research memory and service templates #854; Harbor was not. This PR adds one hand-written candidate Harbor (conditional, mixed) to foundation/quality-evaluation in catalogs/landscape/foundation.json. The row records the parallel-runtime harness role; the layer already carries Harbor as the trajectory-analysis companion (slot foundation/quality-evaluation/trajectory-analysis), a role the row does not qualify. It cites the 2026-10-09 currency receipt by path (evidence/artifacts/harbor-0240-currency-20261009/receipt.json) as the prior evidence it rests on, next to this PR's receipt. It is a recorded addition and changes no verdict field (gate: 0 changed rows). The landscape sweep owns confirming or superseding it. The usual route (sweep first, then stack) was not run, and this PR does not claim the layer was reopened.
  2. New policy surface, for the readers' attention. Adding a registered receipt had never been done after the Architecture grants were pinned (receipts[] stayed at 239 from the reviewed pin c945ea1f to the base), so the pinned-union test had no way to take one. This PR adds an explicit post-pin ledger (POST_PIN_RECEIPT_GRANTS) with a mutation test; it is the first use, and a different mechanism (for example re-pinning to a landed commit) would replace it.
  3. Open questions in the decision record: route b needs a measured container route (host configuration, not changed here); the terminus-2 --ak api_base= gateway route is source-read and has no live check; restart, replay, retry, refusal and cleanup acceptance through Harbor's own interfaces (harbor jobs resume, --max-retries, harbor jobs regrade) is not established; agent CLIs install latest unless --ak version= is given; agent setup was 171 s of a 204 s trial; openhands-sdk needs a credential-runner entry that exports LLM_API_KEY; telemetry is on by default and an earlier user-scope install shows it was used; two 0.24.0 installs now exist; the upstream acceptance command was not run.
  4. The saturation audit's generated g5_catalog_reconciliation.current_counts still reads 70 selected components (written by tools/sota-convergence/merge_fragments.py; Register Hindsight research memory and service templates #854 left it too). CC ruling: a follow-up outside this PR.
  5. The 2026-09-20 architecture-wave row for Harbor (catalogs/convergence-practice/architecture-wave/harbor-framework__harbor.json, defer-install) is not edited: it is a dated, hash-listed ledger entry bound to the v0.23.0 review, and no generator that writes it was found in scripts/, tools/ or blueprints/. The supersession is recorded in the decision record (Supersession, open question 10); a superseding record or pointer from that catalog's owner is a follow-up.
  6. Captures still not stored: the Harbor v0.24.0 wheel (pinned by its public PyPI digest) and the Harbor source files cited in the route table (pinned by the mirror commit and the wheel), and the public API responses behind the upstream-snapshot row's digests. The rootlesskit file, the probe's output and script, and the resolved-distribution list are now published.
  7. History: the two earlier branch commits (1f5413b6 and its rebase 5164a06b) carry the ten private-byte digests this commit removes. The final tree and a squash merge do not; the branch history keeps them until the branch is deleted.
  8. Inherited, not changed here (scope lock): the custody test freezes by count the 44 provenance digests in 12 older receipts that resolve to no repository file. Freezing is not clearing: each older receipt still needs its own review under the same rule, which this PR does not do. The GPT read's fourth P3 (locator and hostname hygiene) reported zero added-line hits; its inherited context lines and the historical pinned locators are left as recorded.

Checklist

  • New/changed GitHub Actions are pinned to a full commit SHA with a
    version comment (no floating tags). (No workflow change.)
  • New/changed workflows declare top-level permissions: {} and grant each job
    only what it needs (contents: read, or an explicitly justified addition). (No workflow change.)
  • No secrets are printed, logged or committed; no new required secret was
    added without a documented owner.
  • No new paid hosting, subscription or billing surface was introduced. (The live smoke spent $0.001053 of an existing API key slot.)
  • Peer-owned untracked files and worktrees were preserved (not deleted,
    moved or overwritten).

🤖 Generated with Claude Code

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 12, 2026
@socket-security

socket-security Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Dependency limit exceeded — report not shown.

This pull request scan exceeded the 10,000-dependency limit applied to this scan, so the results are incomplete and may be inaccurate. To avoid reporting false positives, Socket has not posted a report.

Upgrade your plan to raise the dependency limit and get complete reports, or view the partial scan in the dashboard.

Socket is always free for open source. If this is a non-commercial open source project, contact us to request a free Team account.

@seathatflowsinourveins
seathatflowsinourveins marked this pull request as ready for review October 12, 2026 19:15
…, smoke and route-b probe

Records the first measured Harbor 0.24.0 install on this host (private uv tool scope): a zero-spend oracle trial and one claude-code (claude-haiku-5-5) trial of Harbor's own hello-world task through Docker, both reward 1.0, and one container-to-gateway TCP probe that timed out under the rootless daemon's --disable-host-loopback. Adds the decision record with the CC's 2026-10-12 rulings and the receipt, and registers the receipt.

Adds the harbor component to the optional profile with the registrations a new component requires: the recipe map and recipe row, a freshness row in the upstream snapshot, a lifecycle audit row, the regenerated decision index, final-stack report and handbook (with its rolling receipt entry), and the one architecture line citation that the insertion moves. The landscape coverage rule also needs a layer candidate: Harbor is added by hand as a conditional candidate in quality-evaluation. It changes no verdict field (verdict review gate: 0 changed rows) and is flagged in the PR body and the decision record for the CC to rule on.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the foundation/harbor-parallel-runtimes-20261012 branch from 1f5413b to 5164a06 Compare October 12, 2026 20:47
…tecture grants, source-read route marks

The receipt no longer publishes a digest of any unpublished byte. The ten digests of run output, a transcript and home-state snapshots, and the duplicate freeze digest in the record, are removed with every prefix; the private originals are listed by name only. What is published with digests is limited to four sanitized files whose bytes are now in the repository: the resolved-distribution list, the route-b probe's output and script, and a byte-identical copy of the public rootlesskit file at its tag. tests/test_provenance_digest_custody.py rejects a provenance digest that hashes no repository file (fail-first: 14 in this receipt, none after) and freezes the 12 older receipts that carry the shape by count.

The Architecture reader refused the new receipt and the earlier Harbor receipt that the candidate row now cites, which stopped every committed catalog build (hosted validate shard failure, one test). Both get an exact architecture_receipt grant in tools/local-pages/source_policy.json and an entry in an explicit post-pin ledger in tests/test_local_pages_policy_grants.py; the committed list must equal the reviewed union plus exactly those paths, and unlisted paths stay refused.

From the first Claude read and the CC's ruling: the candidate row cites the 2026-10-09 receipt and is labelled mixed; the terminus-2 api_base gateway route is marked source-read, not live-tested wherever it is stated; the timeout's cause is labelled read from source; the 19.66 s outside the smoke phases is located and attributed; the supersession of the 2026-09-20 defer-install row is recorded as a follow-up. From the GPT read's follow-ups: exact oracle, smoke and probe commands, the daemon's process line and the shim text; restart is not established rather than not applicable; the operating rules separate measured settings from proposed prerequisites.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins merged commit 738fdf7 into main Oct 12, 2026
36 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the foundation/harbor-parallel-runtimes-20261012 branch October 12, 2026 23:09
seathatflowsinourveins added a commit that referenced this pull request Oct 17, 2026
adoption/platforms/linux-wsl2-new-distro.md:1247 keeps the raw stage-1
transcript private and never committed, and :1240-1274 prescribe a
stage-1 receipt filled from adoption/templates/wsl/stage1-receipt.example.json
instead. So this commit:

- removes evidence/artifacts/live-distro-stage1-logs-20261017/ (the three
  redacted transcripts and their receipt.json) and its four files[] rows;
- adds one receipt per distribution under evidence/receipts/:
  wsl-new-distro-stage1-nativestack2604-20261002,
  wsl-new-distro-stage1-nativehorizonny-20261015 and
  wsl-new-distro-stage1-nativehorizonny-r1-20261015, each filled only
  from its own private transcript, with the template's 212 recipe steps,
  null where the transcript holds no record, and source_transcript giving
  the original's path, size and sha256 on Z:;
- registers the three files through scripts/host_receipts.py register_file
  and adds their receipts[] rows (same id, kind, component_ids, claim and
  limitations, plus path), as the recipe's Contribute step says.

Sanitizing follows :1248-1250 and <win-host>; the transcripts hold no GUID.

The Architecture build refuses a registered receipt that has no exact
grant (tests.test_local_pages_architecture_landscape_exclusions failed in
CI run 39001649622, validate-shard-6, at b72d3d6). Following the post-pin
grant precedent (#1047, #1060, #1178, #1191), this commit adds one exact
architecture_receipt row per new receipt to tools/local-pages/source_policy.json
and one POST_PIN_RECEIPT_GRANTS entry each, with its reason, to
tests/test_local_pages_policy_grants.py. Both files are re-registered
through register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 17, 2026
…onNY's rehearsal (#1235)

* Harvest the live distros' Stage-1 transcripts as sanitized evidence (cleanup H01)

Add evidence/artifacts/live-distro-stage1-logs-20261017/ with sanitized copies
of the three Stage-1 PowerShell transcripts that existed only on Z:
(NativeStack2604, NativeHorizonNY and NativeHorizonNY-r1). Add receipt.json,
which gives each original's path, size, sha256 and mtime and lists every
redaction by line. The originals stay on Z: unchanged.

Sanitizing follows adoption/platforms/linux-wsl2-new-distro.md:1248-1250 and
docs/decisions/2026-10-09-host-name-scan.md:160-161. The placeholders are
<win-host>, <win-user>, %USERPROFILE% and <WSL_USER>, replaced inside lines
only: 66 lines change, and no line is added or removed. CRLF becomes LF
per .gitattributes:2. The four files are registered in manifests/evidence.json
through scripts/host_receipts.py register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Rework H01 into stage-1 receipts per the WSL recipe's documented form

adoption/platforms/linux-wsl2-new-distro.md:1247 keeps the raw stage-1
transcript private and never committed, and :1240-1274 prescribe a
stage-1 receipt filled from adoption/templates/wsl/stage1-receipt.example.json
instead. So this commit:

- removes evidence/artifacts/live-distro-stage1-logs-20261017/ (the three
  redacted transcripts and their receipt.json) and its four files[] rows;
- adds one receipt per distribution under evidence/receipts/:
  wsl-new-distro-stage1-nativestack2604-20261002,
  wsl-new-distro-stage1-nativehorizonny-20261015 and
  wsl-new-distro-stage1-nativehorizonny-r1-20261015, each filled only
  from its own private transcript, with the template's 212 recipe steps,
  null where the transcript holds no record, and source_transcript giving
  the original's path, size and sha256 on Z:;
- registers the three files through scripts/host_receipts.py register_file
  and adds their receipts[] rows (same id, kind, component_ids, claim and
  limitations, plus path), as the recipe's Contribute step says.

Sanitizing follows :1248-1250 and <win-host>; the transcripts hold no GUID.

The Architecture build refuses a registered receipt that has no exact
grant (tests.test_local_pages_architecture_landscape_exclusions failed in
CI run 39001649622, validate-shard-6, at b72d3d6). Following the post-pin
grant precedent (#1047, #1060, #1178, #1191), this commit adds one exact
architecture_receipt row per new receipt to tools/local-pages/source_policy.json
and one POST_PIN_RECEIPT_GRANTS entry each, with its reason, to
tests/test_local_pages_policy_grants.py. Both files are re-registered
through register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Fold both families' reads of c4c5242 into the three stage-1 receipts

The three receipts are rebuilt by the same transcript-line generator, and
their files[] and receipts[] rows are re-registered.

Claude family:
- P2-1 (two real-run receipts, the 29 R1 rows): rows the transcript does
  not record keep the template's text, so no R1 row names a production
  distribution (linux-wsl2-new-distro.md:167-168, :172, :1269-1270). The
  steps[] limitation states the R1 exception; in the r1 receipt only the
  recorded R1 rows carry its own name.
- P3-1 (nativestack2604 steps 90, 91, 94, 95): the unlabeled '0' lines are
  no longer read as exits; those exits are null and the excerpts say so.
- P3-2 (creation_path_basis and the 24 W6 excerpts): no "--from-file"
  claim; the basis is W3's '#cloud-config' output and the absent W6 block.
- P3-3 (nativehorizonny rehearsal block, its limitation and the 29 R1
  excerpts): the R1 identity is hedged as "taken as".
- P3-4 (r1 rehearsal.basis): cites
  docs/decisions/2026-10-15-new-wsl-clean-install-plan.md:914-915, whose
  18:37:42Z removal equals the transcript's last End time, and drops the
  "every proof held" implication.
- P3-5 (every null field): each receipt names every null field with its
  reason, and the generator asserts none is left unnamed.
- P3-6 (nativestack2604 rehearsal limitation): points to
  evidence/artifacts/new-wsl-rehearsal-20261002/ and says those records
  name StackRehearsal2604 and its e1, r2 and r3 runs, not NativeStack2604.

Muse family:
- P2 (nativehorizonny :15), P2 (nativehorizonny-r1 :15) and P2
  (nativestack2604 :15), with their manifest copies: covered by the full
  null-field naming above.
- P2 (nativestack2604 :19): the rehearsal block is described as present
  with null fields.
- P3 (each receipt :14): the sanitizing note lists only the placeholders
  in copied values, keeps the template's own placeholders apart, and says
  why <win-user> and <win-host> do not appear.
- P3 (nativehorizonny :20): same fix as Claude P3-3.

13 of 13 findings covered.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Cleanup H01 fold: move three 2604 null fields to the no-line bucket, correct the sanitizing note

Closes both findings of the CC verdict on 39ab807
(/var/tmp/cc-cc-work/nas1235-micro/CC-DELTA-39ab8072.md, CHANGES_REQUESTED;
full read /var/tmp/cc-cc-work/nas1235-micro/MICRO-delta-39ab8072.md).

P3-A: in the NativeStack2604 stage-1 receipt, first_launch.user_prompt_marker,
first_launch.oobe_failed_marker and first_launch.systemd_user_session_warning
sat in the "shows the source command but not the output" null bucket (:17).
The transcript has no line for the W5 launch command (its W5 block shows only
an unlabeled '0' before its first labeled command, as the receipt's own launch
row says), so the three fields move to the "no line for the source command"
bucket (:18). The manifest row matches. The NativeHorizonNY receipts keep
their buckets: their launch is labeled.

P3-B: the sanitizing note (:14 of each of the three receipts) said the Windows
user name and computer name occur only in transcript header lines the receipt
does not copy. They also occur in transcript body paths and in the Host
Application header, of which each receipt copies a sanitized run-from path
(deviations[0] in 2604, deviations[1] in the NativeHorizonNY receipts). The
note now says so and names the replacements that remove them. The three
manifest copies match word for word.

The three receipt rows in manifests/evidence.json are re-registered with
host_receipts.register_file (sha256 and bytes). validate.py and
evidence_manifest.py --check pass.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

* Cleanup H01 fold 4: give each receipt's sanitizing note the facts its own transcript supports

Closes P3-1 of the CC verdict on 5ed31f6
(/var/tmp/cc-cc-work/nas1235-micro/CC-DELTA-5ed31f69.md, CHANGES_REQUESTED;
full read /var/tmp/cc-cc-work/nas1235-micro/MICRO-delta-5ed31f69.md).

The previous fold copied one sentence into all three receipts' :14 note. It
was true only for the Windows user name in the NativeStack2604 receipt. The
verdict records that the sentence came from the CC's earlier verdict.

NativeStack2604 receipt: the Windows user name appears in body paths, in the
Host Application header (copied only as the sanitized run-from path at
deviations[0]) and in the Username and RunAs User headers, and the listed
replacements remove it. The computer name appears only in the Username,
RunAs User and Machine headers, which the receipt does not copy.

NativeHorizonNY and r1 receipts: the user name appears in two body lines
(the user-data name line and the default= line, rendered <WSL_USER>) and in
the Username and RunAs User headers. The computer name appears only in the
Username, RunAs User and Machine headers. The Host Application header carries
neither name, and deviations[1] copies its run-from directory as it stands.

The three manifest copies (manifests/evidence.json, the limitations of each
receipt row) match the receipts word for word, and the three file rows are
re-registered with host_receipts.register_file (sha256 and bytes). No other
line changes.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant