• Joined on 2026-03-08
ltms pushed to main at fleet/fleetd 2026-09-04 09:58:19 +02:00
823976c1b5 #326: state primary's real consequence, and write down the denominator
c8388a7f92 Merge #326: primary and configReload are deferred keys, so a reload says a restart is needed
6d493bc7bb fleetd#326: classify primary and configReload as deferred top-level keys
Compare 3 commits »
ltms closed pull request fleet/fleetd#327 2026-09-04 09:53:02 +02:00
#324: read task.turnId once in finishAsyncTask; analysis of the wider unlocked-ask asymmetry
ltms closed issue fleet/fleetd#324 2026-09-04 09:52:56 +02:00
answer() mutates a Task under sessionLocks while ask()'s timeout path mutates the same Task under no lock — finishAsyncTask can throw NPE on a null turnId
ltms commented on issue fleet/fleetd#324 2026-09-04 09:52:51 +02:00
answer() mutates a Task under sessionLocks while ask()'s timeout path mutates the same Task under no lock — finishAsyncTask can throw NPE on a null turnId

Merged as 02e6aef (PR #327). Verified by me, not taken on the worker's word.

What I checked myself

The branch was behind main (git merge-base --is-ancestor said so), so I merged with…

ltms pushed to main at fleet/fleetd 2026-09-04 09:52:09 +02:00
02e6aef98c Merge #324: read task.turnId once in finishAsyncTask, so a concurrent clear cannot make the removal key null
e5cb51a90e #324: read task.turnId once in finishAsyncTask to stop an NPE from ask()'s unlocked forgetting
Compare 2 commits »
ltms opened issue fleet/fleetd#326 2026-09-04 09:33:58 +02:00
The top-level deferred-key list has the same drift as #323, and two keys are read both from the startup snapshot and live — no single classification is right for them
ltms closed pull request fleet/fleetd#325 2026-09-04 09:32:54 +02:00
fleetd#323: close the reload-classifier drift with a reflection coverage test
ltms closed issue fleet/fleetd#323 2026-09-04 09:32:47 +02:00
The reload classifier says "compares every component the launcher reads at spawn" and misses four keys, so those reloads report success and do nothing
ltms commented on issue fleet/fleetd#323 2026-09-04 09:32:40 +02:00
The reload classifier says "compares every component the launcher reads at spawn" and misses four keys, so those reloads report success and do nothing

Merged as the merge commit above, with one follow-up commit e545c08. Pushed to main.

Build on main: Tests run: 1339, Failures: 0, Errors: 0, Skipped: 0 — BUILD SUCCESS, unpiped. The…

ltms pushed to main at fleet/fleetd 2026-09-04 09:32:13 +02:00
e545c08082 #323: pin the exclusion set — the coverage mechanism's own escape hatch, found by mutation
efa0deb9b2 Merge #323: the reload classifier proves its own coverage instead of claiming it
ca47e90c01 fleetd#323: close the reload-classifier drift with a reflection coverage test
Compare 3 commits »
ltms opened issue fleet/fleetd#324 2026-09-04 09:26:17 +02:00
answer() mutates a Task under sessionLocks while ask()'s timeout path mutates the same Task under no lock — finishAsyncTask can throw NPE on a null turnId
ltms closed pull request fleet/fleetd#321 2026-09-04 09:24:18 +02:00
#318: release() no longer strands a delivery that lands while it is running
ltms closed pull request fleet/fleetd#322 2026-09-04 09:24:11 +02:00
#316: re-check worktree dirtiness after the pane stops, before removing it
ltms closed issue fleet/fleetd#318 2026-09-04 09:24:05 +02:00
A reply delivered while release() is running is stranded unacked forever: #298 closed "already held", not "arrives during release"
ltms closed issue fleet/fleetd#316 2026-09-04 09:23:58 +02:00
The dirty-worktree check runs before the worker is stopped, so work written during teardown is deleted with no preserve and no snapshot
ltms commented on issue fleet/fleetd#318 2026-09-04 09:23:52 +02:00
A reply delivered while release() is running is stranded unacked forever: #298 closed "already held", not "arrives during release"

Merged as fa1f496. Pushed to main.

Build on main after the merge: Tests run: 1336, Failures: 0, Errors: 0, Skipped: 0 — BUILD SUCCESS, unpiped.

The mechanism is the right one

The…

ltms commented on issue fleet/fleetd#316 2026-09-04 09:23:26 +02:00
The dirty-worktree check runs before the worker is stopped, so work written during teardown is deleted with no preserve and no snapshot

Merged as 65f98ba, with one follow-up commit 8426c35. Pushed to main.

Build on main after the merge: Tests run: 1334, Failures: 0, Errors: 0, Skipped: 0 — BUILD SUCCESS. After my…

ltms pushed to main at fleet/fleetd 2026-09-04 09:22:56 +02:00
fa1f49675b Merge #318: a delivery landing after release is refused, not parked in a map nobody reads
2926cd1784 #318: release() no longer strands a delivery that lands while it is running
Compare 2 commits »
ltms pushed to main at fleet/fleetd 2026-09-04 09:20:41 +02:00
8426c3528f #316: pin the fail-toward-preserve rule on the late re-check, found by mutation
65f98ba910 Merge #316: the dirty check that authorises the worktree removal is taken after the worker stops
667254df47 #316: re-check worktree dirtiness after the pane stops, before removing it
Compare 3 commits »
ltms opened issue fleet/fleetd#323 2026-09-04 09:15:04 +02:00
The reload classifier says "compares every component the launcher reads at spawn" and misses four keys, so those reloads report success and do nothing