Skip to content

Prüf-PR für Beitrag 4366 - #12

Open
MLA82 wants to merge 10 commits into
mainfrom
check/4366
Open

MLA82 wants to merge 10 commits into
mainfrom
check/4366

Conversation

@MLA82

@MLA82 MLA82 commented Sep 20, 2026

Copy link
Copy Markdown
Owner

Dieser PR dient zur Validierung der Anpassungen aus Beitrag 4366 im Fork.

…l claims it

fm-spawn's crewmate path now acquires the pool slot through Treehouse's own
durable get --lease --lease-holder rather than the interactive pane's plain
get, and binds the spawn-side owner claim to that lease. Before any get,
fm-spawn refuses when a still-recorded state/*.meta anywhere reachable
(including secondmate homes) names that slot without a durable lease, closing
the reissuance window a landed-but-not-torn-down task record used to leave
open. fm-teardown re-verifies the recorded lease at every destructive
boundary and now refuses outright (never with --force) on a claim naming
another task or a lease that no longer matches, rather than warning and
finishing only its own cleanup, per the requirement to refuse otherwise.

fm_treehouse_require_reserved_records only enforces the lease requirement for
paths structurally registered in a treehouse-state.json, so an ordinary
worktree recorded incidentally against the same project is never mistaken
for a pool slot.
Slot ownership now binds a task id to its canonical home, so teardown must run
with the FM_HOME the task was spawned from. The launcher-workspace e2e spawns
dupC from the primary home but tore it down with only FM_ROOT_OVERRIDE set, so
teardown resolved the repository root as its home and refused the slot's own
claim as another task's.
The task pane of an aborted spawn is now a lone idle shell, so cleanup removes it
through Herdr's pane-death path, which logs no pane.close. The order check only
looked for pane.close on the task pane and saw no close at all. Count any
pane.close inside the task's own projected workspace, the seeded pane's prune
included, so the create-then-close serialization is still asserted for both
aborts.
@MLA82
MLA82 force-pushed the check/4366 branch 2 times, most recently from 66375d6 to a943b48 Compare September 20, 2026 18:19
The pane's own shell used to cd into the leased slot, so teardown's reap of
processes under the slot ended the endpoint shell itself. Herdr then removed
the pane and its workspace on its own, ahead of the focus-preserving close, and
the active workspace jumped. Run the worker in a child shell inside the slot,
as the interactive treehouse get subshell did, so the endpoint shell stays in
the project.
A claim naming another task is never overwritten by a later spawn, so the
restart fixtures, which return their leased slots with treehouse directly
instead of through teardown, left a stale claim behind. The next fixture then
received that slot and its spawn refused to claim it. Return the lease and drop
the claim together, as reconciling such a slot by hand does.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant