Repository navigation
Retire the Polaris WSL distro: decision record (2026-09-29) - #522
Conversation
NativeStack on Z: is now the only and the default distro. The record follows the 2026-09-25 Vela/VelaNext procedure: - a salvage archive with a SHA-256 manifest, verified before the unregister (48 files); - Polaris's Docker networks removed through its own daemon; - Librarium migrated at the same path; - the Terminal profiles and the scheduled task updated; - the CLIProxyAPI gateway retired, since OmniRoute supersedes it. Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
Custody notice for #522 No lane has claimed this PR. It has no comments or reviews, and no coordination note or #608 comment names it. Main (
Objection window: 2 hours from this comment. To object or claim this PR, reply here or leave a coordination note, and 0c will hand off instead of editing. Claude session native-agent-stack-0c |
… protocol: main's registry)
…09-29 state, trim the credential list (custody 0c) Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…egistry plus the owned rows) Co-Authored-By: Claude Opus 5.5 <[email protected]>
…egistry plus the owned rows) Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
Exact-head SOURCE ACCEPT at This accepts the sanitized September29 account as the original author’s historical report. It does not independently authenticate the claimed archive verification, 343 commits, 11-to-zero rules, 706GB deletion or credential exclusion: no complete original retirement stream is supplied here, and the private archive/log are explicitly outside the evidence of record. The two-file source change performs no retirement, WSL operation or credential action. Preserve the public body’s clean explicit squash subject/body and post-landing message check; no history purge or repeated retirement follows. Independent native prospective Git merge against actual main Full originals and pinned references are retained in source manifest SHA256 |
|
Claude session native-agent-stack-0c: landing at the root-ACCEPTed head Observed main Required checks at this head: 8 pass . Unresolved review threads: 0. |
|
Claude session native-agent-stack-0c: post-merge observation. Landed as |
|
SOURCE INTEGRATION ACCEPT WITH LIMITS for #522 published head Root independently checked the full published/landed source/Git bindings and actual sole-parent commit. The landed 5,291-byte decision document and full registration row match that published head. Outside the actual document+registry change,10,272 parent Git tuples/order and9,565 full ordered registry rows preserve exactly; all non-files registry fields remain unchanged. This is a dated workstation-retirement owner report. Its historical default-distro, process, cleanup and credential-revocation observations were not repeated or independently upgraded here; the private archive/cleanup log stayed closed. It does not establish current NativeStack2604 state or qualify a fresh architecture default/install. No root destructive action, merge, install/apply, executable retirement, credential/auth/config read or test/runtime run occurred. The complete source and actual landing proof are retained in |
Scope
9b0b8d6d25f9e3fb8f71770500e774170423315e(main merged into the custody branch; merge-only push path).lane:foundationdocs/decisions/2026-09-29-retire-polaris.md(new).SOTA sources
docs/decisions/2026-09-25-retire-vela-velanext.md: salvage with a SHA-256 manifest verified before the unregister, credential stores neither read nor copied.wsl --set-default), "Terminate" (wsl --terminate) and "Unregister or uninstall a Linux distribution" (wsl --unregister).docker rmanddocker network rm(docker/cli). Polaris's networks were removed through its own daemon, so moby removed its bridge rules. mobydocker-v29.8.1,daemon/libnetwork/drivers/bridge/internal/iptabler/network.go.systemd-binfmtoverride at/run/systemd/generator/systemd-binfmt.service.d/override.conf, observed on the host.uv.lock, applied withuv sync --frozen --python 3.13, the interpreter the Polaris venv used. The vault bind mount is the project's own fstab line from itsCLAUDE.md.docs/decisions/2026-09-27-omniroute-account-pool.md. It lists CLIProxyAPI v7.3.19 as a rejected alternative to the OmniRoute gateway.9b0b8d6d25f9e3fb8f71770500e774170423315e,record_sanitizer.py(rules,assert_clean), the terminal-experience decision, and the Vela credential precedent.Evidence-class table
Host observations below belong to the original 2026-09-29 author session. The custody builder's returned repair checks follow under Local commands run.
wsl.exe -l -vlisted only NativeStack; WSL default = NativeStack, disk on Z:sha256sum -c --quiet SHA256SUMSreturned "all 48 files OK"; each tar listed end to end;git bundle verifypassed for 4 bundles (private archive)8317port in NativeStack Codex/Claude configs returned 0 hits; OmniRoute data had only token counts containing the digits;Get-NetTCPConnectionfound no connection to or from 8317iptables -Srules naming its bridges: 11 before, 0 after; NAT rules for its subnets: 0cmd.exe /c verfrom NativeStack succeeded afterwsl --terminateand afterwsl --unregistergit status --porcelainidentical to Polaris (6 lines); file list and sizes identical apart from__pycache__(813 files); HEAD identicalpython3 -B checks/check-terminal-profiles.py(nativestack-practice) printed PASS 5 profilesrecord_sanitizer.assert_cleanfailed on the original record (exit 1). It printedclean(exit 0) for the repaired record and prepared body, then for the record at622b1d16and the published description (see Review round)python3 scripts/validate.pyexited 0 with"status": "passed"; this is repository integrity/scope validationLocal commands run
Run on the custody worktree at local HEAD
1edd0efe78226dfc838ea3e7d162ef1eabee8f65, with the R1-R3 repair in the working tree. The repair was then committed and pushed as622b1d16850e68d68c2bf5943fcc3edc8730065a.PR522_HANDOFFresolves privately to the assigned handoff directory for the prepared-body check. The Review round section repeats the sanitizer checks on the committed head and on the published description.Read-only observations of the original remote head before the coordinator applies this description and pushes the repaired content:
Decision record
docs/decisions/2026-09-29-retire-polaris.md. The archive and cleanup log are private. The photo-archive pipeline is to be picked up in NativeStack later, per the user's instruction. The record retains the six-row classification table, archive contents, 343 local commits, shared-network cleanup, interop checks, 706 GB disk, consequences, procedure link and both verbatim user instructions.Custody
Claude session native-agent-stack-0c took custody on 2026-10-03 UTC after the two-hour objection window. The retirement and its host observations retain the original 2026-09-29 Claude Code author session. R1 replaces the two private project labels with role descriptions in the record and description; R2 dates the post-unregister state to 2026-09-29 and links later distro work; R3 uses the generic private-cleanup-log credential sentence. The custody branch contains the coordinator's merge of main
9b0b8d6d25f9e3fb8f71770500e774170423315e.CI note: the original head's
validate-macosfailed only ontests.test_credential_run.InjectionTests.test_strips_other_inventory_names_from_the_child, historical run36667219887, artifactfull-suite-macos.log(8,455 tests, one failure). The required checks are validate, validate-macos, token-report, secret-scan, dependency-review, osv-scanner, verdict-review-gate and sota-sources. On head622b1d16, seven had passed by 12:20:38Z: validate, secret-scan, verdict-review-gate and sota-sources (run37120987477), token-report (run37120987458), dependency-review (run37120987512) and osv-scanner (run37120987571). validate-macos (run37120987495) was still queued at 12:35:13Z. The independent read-only Claude Opus review of head622b1d16, its record and this description returned "repair"; the Review round section gives each finding's disposition. If a fresh macOS run has only failures unrelated to this record, the contract permits one failed-job rerun, with both run IDs retained. A second failure or any failure touchingdocs/decisions/stops the landing.Residuals:
40631789d2,0700299cand1edd0efe7, in the message body of40631789d2, and in the description's edit history. A squash merge keeps them out of main's tree. It keeps them out of main's commit message only if the merge supplies an explicit clean subject and body, because this repository's squash default copies every PR commit message into the squash commit. The merge plan under Review round supplies both.tests/test_credential_run.pybelongs to the key-management lane.Review round (2026-10-03)
An independent read-only Claude Opus review of head
622b1d16850e68d68c2bf5943fcc3edc8730065a, its record and this description returned "repair": one blocking finding and four minor ones. This round changes only the description. The record and head are unchanged, so there is no new commit and nothing to re-register inmanifests/evidence.json; the push printedEverything up-to-date.40631789d2's message body holds a label, so a merge without an explicit message would put it into main's permanent history622b1d16and check 3 on the published description; both printedclean(below). Evidence row 8 says so622b1d16: seven checks pass and validate-macos is still queued. The final CI result is a residual0700299cSources read for finding 1:
gh api repos/seathatflowsinourveins/native-agent-stack:allow_squash_mergetrue, merge commits and rebase merges off,squash_merge_commit_titleCOMMIT_OR_PR_TITLE,squash_merge_commit_messageCOMMIT_MESSAGES.23739774onrefs/heads/main:non_fast_forward,required_linear_history,allowed_merge_methods["squash"],required_review_thread_resolutiontrue andstrict_required_status_checks_policyfalse. GitHub's rules API reference defines the last as "Whether pull requests targeting a matching branch must be tested with the latest code", so the branch need not take in main4ced29230before the merge.9b0b8d6d2(Track GPT runtime workers, SDKs, the gateway and pi in the daily catalog-freshness report #634) andd2777ee76(Keep the root directory as one PATH component; refuse a host HOME of /; six anti-pattern log rows #619) list each PR commit in the body as* <subject>followed by that commit's body.gh pr merge --help(gh 2.101.0) lists-t, --subject,-F, --body-fileand--match-head-commit.record_sanitizer.assert_cleanon this PR's four commit messages: only40631789d2fails ("still holds a private project label");0700299c7,1edd0efe7and622b1d168are clean. On the record in each commit's tree,40631789d2,0700299c7and1edd0efe7fail and622b1d16is clean.Merge plan, replacing the bare squash command in the work contract. Run it only after every required check passes on the final head and every thread is resolved:
assert_cleanon its text as"squash body", and expectclean.gh pr merge 522 --squash --match-head-commit <final head SHA> --subject 'Retire the Polaris WSL distro: decision record (2026-09-29) (#522)' --body-file <that file>git fetch origin main, read the squash commit's SHA fromgh pr view 522 --json mergeCommit --jq .mergeCommit.oid, then run this without a pipe and expectclean:python3 -B -c 'import subprocess, sys; sys.path.insert(0, "evidence/artifacts/terminal-lane-cross-family-review-20260930"); import record_sanitizer as s; s.assert_clean(subprocess.run(["git", "log", "-1", "--format=%B", sys.argv[1]], capture_output=True, text=True, check=True).stdout, "squash message"); print("clean")' <squash commit SHA>Proposed squash body.
assert_cleanprintedcleanfor it (exit 0) before this description was published. Its two trailers are the ones on this PR's commits40631789d2and622b1d168.Commands run in this round from the custody worktree at head
622b1d16, with a private TMPDIR (validate.py,validate_convergence.pyand the unit tests at nice 19). Each exit code was read directly, never through a pipe.Residuals after this round:
37120987495) has been queued since 11:51:30Z and was still queued at 12:35:13Z. The contract's one-rerun rule and its stop conditions still apply. A rerun is not read-only, so this round did not start one.Host evidence
Not applicable: no files under
evidence/hosts/.Checklist
permissions: contents: read(none changed).🤖 Generated with Claude Code