feat/harness!: the pool stops creating or exposing the legacy bin/ and lib/ trees #110

Merged
pti merged 2 commits from feat/pool-drop-legacy-layout into main 2026-10-20 09:20:27 +02:00
Owner

#107 item 2, after #108 and #109. The harness pool layout no longer creates or exposes the pre-1.0 bin/ and lib/ trees. ensureHarnessPool creates home/ and runtime/ only. The guix runtime exposes runtime/ read-only alone and the legacy-removed marker is gone, so there is no mixed state, no half-gone classification and no gating. harness gc --legacy is now a plain one-time removal of whatever is left of the two trees plus the stale marker, with no refusal check. harness list ACTIVE only reports the activated generation version, the legacy row is deleted. The dead PoolLockable guards, the sbx refusal, poolPlanInput.PoolLockable, harnessDeps.poolBinDir and the dead bare-shell branch of buildDevcontainerExecArgs are removed, every registry harness is pool-lockable since #109. Breaking: a pool from an older release keeps working, run wraptool harness gc --legacy once to drop the leftover trees. CLAUDE.md, CHANGELOG, docs/releases.qmd, docs/cli-reference.qmd and the design notes are updated. Phase 4 is not declared closed yet, item 3 does that with the feature description bump. Reviewer pass done, five nits fixed in the second commit. Refs #107. Generated with Claude Code.

#107 item 2, after #108 and #109. The harness pool layout no longer creates or exposes the pre-1.0 bin/ and lib/ trees. ensureHarnessPool creates home/ and runtime/ only. The guix runtime exposes runtime/ read-only alone and the legacy-removed marker is gone, so there is no mixed state, no half-gone classification and no gating. harness gc --legacy is now a plain one-time removal of whatever is left of the two trees plus the stale marker, with no refusal check. harness list ACTIVE only reports the activated generation version, the legacy row is deleted. The dead PoolLockable guards, the sbx refusal, poolPlanInput.PoolLockable, harnessDeps.poolBinDir and the dead bare-shell branch of buildDevcontainerExecArgs are removed, every registry harness is pool-lockable since #109. Breaking: a pool from an older release keeps working, run wraptool harness gc --legacy once to drop the leftover trees. CLAUDE.md, CHANGELOG, docs/releases.qmd, docs/cli-reference.qmd and the design notes are updated. Phase 4 is not declared closed yet, item 3 does that with the feature description bump. Reviewer pass done, five nits fixed in the second commit. Refs #107. Generated with Claude Code.
The pool generation is the only install since #102 and #107 item 1, so
nothing reads or executes from the pre-1.0 bin/+lib/ trees any more.
ensureHarnessPool now creates only home/ and runtime/, the guix runtime
exposes runtime/ read-only alone, and the mixed-state plumbing (legacy
state classification, guixPoolPlanInput, the legacy-removed marker) is
gone. gc --legacy stays as an explicit opt-in one-time cleanup of any
leftover trees, without the refusal check or the marker. harness list
ACTIVE only reports the activated generation's version, and the
PoolLockable guards (every registry harness is pool-lockable) are
dropped from cmd.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
fix(harness): gc --legacy also removes the stale pre-1.0 marker, tidy wording
All checks were successful
Lint / lint (pull_request) Successful in 37s
Lint / sonarqube (pull_request) Has been skipped
f47fb63bc4
Review nits on the layout cleanup: a pool that ran the pre-1.0
`gc --legacy` keeps its `legacy-removed` marker file forever, with no
reader left; gcLegacy now removes it as part of the one-time cleanup.
Reflow over-long comment lines, drop the last "mixed state" /
"legacy-feature" / "not pool-lockable" wording from CLAUDE.md and the
design notes, and name the trees "pre-1.0" consistently in releases.qmd.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
pti merged commit c802c7f629 into main 2026-10-20 09:20:27 +02:00
pti deleted branch feat/pool-drop-legacy-layout 2026-10-20 09:20:27 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
pti/wraptool!110
No description provided.