Repository navigation
New WSL distro recipe follow-up: rehearsal, signed sums, schema and storage pre-checks, ownership probe; three corrected facts - #582
Merged
seathatflowsinourveins merged 6 commits intoOct 1, 2026
Conversation
…iling first) Adds a check, a passing test and a mutant test for each rule of the follow-up to PR #569: - B: P1 verifies the signed SHA256SUMS with gpgv and the installed archive keyring, no key import, before stage 1; - C1: P2 renders the user-data the way W3 does and runs cloud-init schema -c before any boot, and W3 prints the Windows file's SHA-256 to compare; - C2: W5 runs cloud-init schema --system as root on path A, and W6 skips it; - D: P3 counts the current boot's hv_storvsc kernel journal lines without the driver's registration line and stops on a nonzero count; - E1 and E2: W7 terminates <Name> once after the first launch, relaunches it and reads the owner of a file created from Windows; - F: W1 reads the two idle keys and F2 observes <Name> with no client attached; the host-wide check now passes a plain Select-String or grep read of .wslconfig and rejects writes, copies, editors, pipes and redirects; - G: R1, the page's first step, rehearses on a throwaway name and removes only it, exporting a failed rehearsal first. Step headings now include R and P steps. At this commit the 17 new tests fail against the unchanged recipe, record, checklist, receipt example and experiment record (Ran 48, failures=17); the next commit makes them pass. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…-checks, ownership probe Follow-up to PR #569 on the completeness critic's findings and the research packet of 2026-10-01. No command of the page has run on a host. Recipe, checklist and receipt example: - R1 rehearses the page on a throwaway name through F3 and removes only that name, after W6's export rule when the rehearsal failed. - P1 verifies SHA256SUMS with gpgv and the installed Ubuntu archive keyring (no key import); P2 runs cloud-init schema -c on the render, its SHA-256 compared with W3's; P3 counts the current boot's hv_storvsc kernel journal lines without the driver's registration line and stops on any count (microsoft/WSL#41482). - W5 runs cloud-init schema --system on path A; W6 skips it on path B. - W7 terminates <Name> once after the first launch, relaunches it and probes the owner of a file created from Windows (microsoft/WSL#40941; the fix, PR #40977, ships from 2.9.8 and 3.0.1, not in 2.7.13 or 2.7.14). - W1 reads the two idle keys of the global WSL configuration; F2 lists the running distributions for two minutes with no client attached. - Corrected facts: WSL 3.0.1 does change the first launch; the online wsl --install checks the catalog's hash while --from-file checks none; W5's console lines come from the image's wsl-setup (Launchpad 74bfc891, lines 117-118). Decision record: the critic's outcomes per item, Learn pages pinned by git_commit_id with their displayed dates, the cloud-init CLI page at 26.1, the alternatives' exclusions, rewritten open question 2, open questions 6 and 7, and the artifact checks of P1 to P3 in the workstation distribution. P3 counted 21 lines on this host, so by the page's rule stage 1 stops here until the user decides. Experiment record: re-pinned, next test starts with the rehearsal, the two research passes' usage as text (usage_assessment stays the planned-record value); status stays planned. Co-Authored-By: Claude Opus 5.5 <[email protected]>
… a second reading (failing first) The coordinator replaced P3's stop on any nonzero count: a count over the current boot cannot tell an old burst from errors that are happening now. The D check now requires: - P3 to record the hv_storvsc count (without the registration line) as a baseline, print the newest error line with its kernel time and /proc/uptime, stop only when that line is less than one hour old, and call the threshold the recipe's choice; - W5 to count again in the workstation distribution after the launch, on both paths, with a larger count recorded as exposure to microsoft/WSL#41482 and a hold before stage 2; - the record to say why a bare count was rejected, the checklist and the receipt example's storage_errors block to carry the baseline, the newest line's time and the second count, and R1 to include both readings. New mutants: the old stop rule, no newest line, no uptime, no recency rule, no second reading, a second reading on one path, no exposure rule, and lost record, checklist and receipt fields. At this commit 4 tests fail against the unchanged recipe, record, checklist and receipt example (Ran 48, failures=4); the next commit makes them pass. Co-Authored-By: Claude Opus 5.5 <[email protected]>
… reading after W5 The coordinator's decision of 2026-10-01: a count over the current boot cannot tell an old burst from storage errors that are happening now, and on this host one burst seven days earlier would have blocked stage 1 for good. So: - P3 records the hv_storvsc count (without the registration line) as a baseline, prints the newest error line with its kernel time and /proc/uptime, and stops the run only when that line is less than one hour old. The threshold is this recipe's choice, not an upstream figure. The kernel time decides because journald restamps kernel lines it re-reads after a distribution restart (measured here: one kernel message with three reception stamps); the two clocks agree within 37 s over about 8 days on this host. - W5 counts again in the workstation distribution right after the launch, on both paths and before W6 or W7: equal passes; a larger count is recorded with the new lines, a failed W5 counts as exposure to microsoft/WSL#41482, and nothing continues to stage 2 until that is decided. - R1 includes both readings, so the first real one comes from the rehearsal. - Checklist, receipt example (storage_errors: baseline, newest_line_time, swap, second_count, new_lines; rehearsal.storage_readings) and command table follow. - Record: this host's readings as artifact checks (baseline 21 at 12:19:29Z, newest error line about 7.4 days old, so P3 does not stop the run), why the bare count was rejected (Alternatives 4), open question 7 kept open. - Experiment record re-pinned; validate_convergence passes; status stays planned. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The mutant that searches for a device id instead of the driver's name carried a UUID-shaped literal, which the publication validator rejects in any published file. The string is now built at run time; the check and its mutant are unchanged. The experiment record is re-pinned to the test file's new hash. Co-Authored-By: Claude Fable 5.1 <[email protected]>
…ot-file protocol) Co-Authored-By: Claude Fable 5.1 <[email protected]>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
seathatflowsinourveins
deleted the
claude/new-wsl-distro-recipe-followup-20261001
branch
October 1, 2026 13:13
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Oct 1, 2026
… merged (#582) - cross:wsl-distro no longer says stage 1 waits for the follow-up: PR #582 merged as b8dd81d, and the recipe now starts with a rehearsal on a throwaway name and pre-checks in the workstation distribution. The install command, the new-host steps, the lane gate and the notes say so; nothing in the recipe has run on a host. - The winner's pin_source follows the pinned hash to its new line in the recipe (250, was 99): the follow-up inserted sections above it, and the build checks a citation's bounds, not its content. Co-Authored-By: Claude Fable 5.1 <[email protected]>
5 tasks done
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Oct 1, 2026
… merged (#582) - cross:wsl-distro no longer says stage 1 waits for the follow-up: PR #582 merged as b8dd81d, and the recipe now starts with a rehearsal on a throwaway name and pre-checks in the workstation distribution. The install command, the new-host steps, the lane gate and the notes say so; nothing in the recipe has run on a host. - The winner's pin_source follows the pinned hash to its new line in the recipe (250, was 99): the follow-up inserted sections above it, and the build checks a citation's bounds, not its content. Co-Authored-By: Claude Fable 5.1 <[email protected]>
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Oct 1, 2026
… merged (#582) - cross:wsl-distro no longer says stage 1 waits for the follow-up: PR #582 merged as b8dd81d, and the recipe now starts with a rehearsal on a throwaway name and pre-checks in the workstation distribution. The install command, the new-host steps, the lane gate and the notes say so; nothing in the recipe has run on a host. - The winner's pin_source follows the pinned hash to its new line in the recipe (250, was 99): the follow-up inserted sections above it, and the build checks a citation's bounds, not its content. Co-Authored-By: Claude Fable 5.1 <[email protected]>
seathatflowsinourveins
added a commit
that referenced
this pull request
Oct 1, 2026
…e); keys row, landed sources, distribution row (#583) * Architecture edition: the keys lane's row after the canary proof merged; #578's sources as plain citations The first update of the dated edition under its own overturn conditions 4 and 5. - cross:credential-practice, in the keys lane owner's wording: the canary proof tool merged with #579 (e58850f) and its synthetic acceptance on the workstation is recorded (143 unit tests, 138 of 138 mutants, 531 suite tests with one failure by design); the acceptance names what the two receipts record, class local_integration_check; the end-to-end proof on the new distribution has not run on any host and stays a new-host step; closure c3 and c4 reworded. - The seven citations of PR #578, which merged as 65a7b03, become plain source paths; the record lists five merged pull requests and two open ones (#575, #535). Co-Authored-By: Claude Fable 5.1 <[email protected]> * Architecture edition: the distribution row after the recipe follow-up merged (#582) - cross:wsl-distro no longer says stage 1 waits for the follow-up: PR #582 merged as b8dd81d, and the recipe now starts with a rehearsal on a throwaway name and pre-checks in the workstation distribution. The install command, the new-host steps, the lane gate and the notes say so; nothing in the recipe has run on a host. - The winner's pin_source follows the pinned hash to its new line in the recipe (250, was 99): the follow-up inserted sections above it, and the build checks a citation's bounds, not its content. Co-Authored-By: Claude Fable 5.1 <[email protected]> * Architecture edition: selections follow the repositories' own quality, not the source host's legacy The user's rule of 2026-10-01: evaluate each repository on its own quality and do not shape the new distribution by what the source host has installed, pinned or failed to integrate. - durable-memory: ai-memory is the reference arm, not a default (the 2026-09-27 decision). agentmemory joins with the one matched harness result on record (recall_all@5 0.821 against 0.570 on LongMemEval-S, Mac, descriptive), MemPalace as an arm, Hindsight as arm K1 judged fresh; the gate no longer treats this host's integration holds as evidence about the repository; the first new-host step installs every arm fresh. - token-efficiency, in the Gate A owner's words: comparison_required; the 14-component profile is the source host's selection and one arm, the lean base an arm of equal standing, and the E2E decides which components stay. - Trading rows, in the trading lane owner's words: the verdict selections that had been listed as alternatives for lacking a stack pin are winners of their layers (DVC, pandera, agent-retrieval-bench, Inspect AI, MLflow), each with its upstream install command and the class its recorded run supports. - cross:runtime-workers: a candidate without a repository pin is a candidate, not an exclusion. - Every comparison row carries the reason that its merit winner is undetermined and that the comparison selects. Verdicts: 20 selection_of_record_open, 15 comparison_required, 2 new_host_required. 130 winner entries. Co-Authored-By: Claude Fable 5.1 <[email protected]> * Architecture edition: the memory comparison is against ai-memory with its reranker off, not production A cross-family audit corrected the wording of the one matched memory result. The 0.821 against 0.570 recall on LongMemEval-S compares agentmemory's arm D2 with ai-memory's arm C3: the production embedder and query prefix with the reranker off. ai-memory's production arm runs the LLM reranker (C4, amendment A14) and has not run, nor has agentmemory through its shipped hooks (D2h); the arms' captures and embedders differ and the ai-memory build was a 2.5 pre-release. The durable-memory row and the record now say configuration-level evidence, not a production head-to-head, and cite the convergence record itself (paired difference +0.251, 95% CI +0.203 to +0.299). Overstating a challenger is the same bias the merit rule excludes. Co-Authored-By: Claude Fable 5.1 <[email protected]> * Re-register this branch's changed files in manifests/evidence.json (hot-file protocol) Co-Authored-By: Claude Fable 5.1 <[email protected]> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Fable 5.1 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
origin/mainat000aae77(hot-file protocol applied).lane:foundationadoption/platforms/linux-wsl2-new-distro.md,adoption/templates/wsl/first-boot-checklist.md,adoption/templates/wsl/stage1-receipt.example.json,docs/decisions/2026-10-01-new-wsl-distro-recipe.md,tests/test_wsl_new_distro_recipe.py,blueprints/convergence-practice/wsl-new-distro-image-20261001/experiment.json(re-pinned),manifests/evidence.json(last commit only).SOTA sources
Read on 2026-10-01 by a research pass (eight questions, every fact with its source and quote) and re-checked by the builder where a command's output is claimed:
SHA256SUMS.gpg; theubuntu-keyringchangelog at Launchpadedc0a0be(the CD image key843938DF228D22F7B3742BC0D94AA3F0EFE21092inubuntu-archive-keyring.gpg); https://ubuntu.com/wsl/docs/stable/howto/cloud-init/ (sudo cloud-init schema --system, "Valid schema user-data").26.1(cloudinit/config/schema.py: what--systemreads, its exit status on an invalid schema).ConnectionTargetManager::UpdateUidinsrc/windows/common/Redirector.h); issue #41482 (storage errors and boot timeouts on kernel 6.18.33.2-2 with swap active); issues #13416 and #9968 (linger does not keep a distribution alive);src/windows/common/WslInstall.cpp:36-50,315andWslClient.cpp:500-537at tag 2.7.13 (the online install checks the catalog hash;--from-filechecks none).wsl-configatMicrosoftDocs/WSL@7ea1c6f9([general] instanceIdleTimeout,[wsl2] vmIdleTimeout), and the other Learn pages the record cites, now pinned by their docs commit.wsl-setup0.5.10~24.04.2 at Launchpad commit74bfc891, lines 117-118 (the two console lines W5 expects).docs/portable-userspace-install-20260921.md(the precedent for verifying Ubuntu's signed sums) and the critic section ofdocs/decisions/2026-10-01-new-wsl-distro-recipe.md.Evidence-class table
--from-filechecks no hashtests/test_wsl_new_distro_recipe.py: 48 tests; failing first twice (17 new tests failed before the first round's edits, 4 before the P3 change)No unchanged upstream test suite was run.
What changes
wsl --install Ubuntu-24.04was backwards: that path does check the catalog's hash, and--from-filechecks none, which is why W2's own check exists. (3) W5's console lines are cited at the image's ownwsl-setuprevision.gpgvand no key import; the user-data schema before any boot; a storage-error baseline.planned.Local commands run (head 4780fe4)
validate.pyfirst failed on a UUID-shaped literal in a test mutant (the validator rejects that shape in any published file); the mutant now builds the string at run time (commit805a4134).Decision record
docs/decisions/2026-10-01-new-wsl-distro-recipe.md: the corrected context and alternatives, the P3 rule with its two rejected options (a bare count, a wall-clock age), the rewritten open question on idle behaviour, new open questions on file ownership and on #41482, the critic table with outcomes, and the artifact checks with commands, exit codes and times.Host evidence
Not applicable: nothing in stage 1 has run on any host, the rehearsal included.
Checklist
🤖 Generated with Claude Code