Skip to content

Commit fb2e048

Browse files
committed
docs(ledger): record the W1 snapshot workspaces batch
1 parent 9afe14e commit fb2e048

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

‎plans/architecture-loop-2026-09-22.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,3 +1428,10 @@ Opening HEAD `59517a2bc`. Sweeps and triage in `~/.cache/architecture-loop/gent/
14281428
- Review: orchestrator diff review (small batch, no counsel round). TUI change is a rename in thread-view; covered by typecheck and E2E, no Herdr check (no behavior change).
14291429
- Validation: merge with main clean; gate EXIT 0, E2E EXIT 0. Merged `bbef40d4c`, pushed.
14301430
- Carried: the TUI keeps a partial copy of the marker details (`apps/tui/src/message-list.tsx` `HandoffDetails`; its row renderer gets `details: unknown`, not the message) → a TUI batch with a Herdr check; installed gent has no `node_modules`, so project tests need a checkout.
1431+
1432+
### Pass 30 W1 snapshot workspaces (@gent/workspaces), 2026-10-05
1433+
1434+
- Owner request (W1): a delegated child can run in an isolated copy of the workspace (`isolation: "snapshot"`): a rift copy (btrfs reflink, `rift rpc`) where rift is available, else a git worktree; the child's work is collected back to a branch of the origin by compare-and-swap. Shipped extension `@gent/workspaces` (one file, `packages/extensions/src/workspaces.ts`); delegate admits snapshot children through it. Records and phases under `<data dir>/workspaces/`; per-workspace hook `.gent/workspace.toml` (`version = 1`, a TOML integer as written).
1435+
- Review: counsel r1 and r2 (two rounds, max), then orchestrator line review of the round-3 repairs (`apply-workspaces.md` rounds 1–4). Data-safety decisions R1–R7: no marker written through a link (lstat-proven git dir, `wx` temp + rename); marker binds start digest, canonical path, backend and rift copy id; gent never removes a rift copy (record `retained`, since rift removal cannot refuse a copy with descendants atomically; upstream rift request for `remove --leaf-only` recorded verbatim in the apply report); an interrupted admission decides by storage (stored child → bind, none → release, read failure → keep); the child's `Session.create` request id is a digest of parent session, branch and tool call; private refs fetched by id into no ref, base ref created only where none exists and deleted only at the recorded SHA; worktree removal only through `git worktree remove` after the ownership proof. Child start message id is per child session (new optional registry field `startMessageId`). `delegate.cancel`'s id was checked: stops key by the child loop entity, so no collision (guard test added).
1436+
- Validation: gate EXIT 0 (extensions 1305 before main merge), merge with main clean, gate EXIT 0, E2E EXIT 0. Merged `9afe14e3e`, pushed.
1437+
- Carried: residual race between the ownership proof and `git worktree remove` (needs another process to swap the path under gent's lock); manual removal of retained rift copies (W2, with the TUI); a rift workspace whose `.git` is a file gets a refused start (fall back to worktree before copying); rift live check (real `rift rpc create`, `.rift` id) open; crash between `Session.create` and `bind` (process crash only); interrupted `git worktree add`; cost per profile; trust of the workspace hook.

0 commit comments

Comments
 (0)