Drew T
f3ec6ef588
fix(phase-30): treelock.sh — an flock MUTEX for tree-writing campaigns (incident 2: a poll is not a mutex)
...
I gated 8 binaries in parallel while wave-2's propagation loop was still running, then ran
'make clean' on top. check-all 77/140; the corpus denominator moved, so the apparent 91.4% instr
was a half-written tree, not a gain. Reverted to commit:1245 (last R22-verified) — 140/140 restored,
all 58 drafts survived because agents only ever write .run/.
ROOT CAUSE, and it was structural not unlucky: my guard was
while pgrep -f dedup_propagate; do sleep; done
A CAMPAIGN is a LOOP of short-lived processes (15 sequential invocations), so it has gaps where no
process matches. The poll sampled a gap and started. Presence-of-a-process cannot express 'a
campaign owns the tree'.
treelock.sh holds one flock for the WHOLE campaign, released by the kernel on exit OR kill, with
--status; both drivers refuse to run unlocked. LAW: guard the CAMPAIGN, not the process.
Corollary (twice today): a killed process performs no undo — a fleet-tier write needs a lock ABOVE
it, not cleanup inside it.
2026-07-30 22:00:32 -06:00
..
2026-06-14 03:56:07 -06:00
2026-06-14 03:19:23 -06:00
2026-06-15 17:15:31 -06:00
2026-06-13 19:47:42 -06:00
2026-06-14 03:56:07 -06:00
2026-06-21 12:00:47 -06:00
2026-06-14 03:56:07 -06:00
2026-06-14 03:56:07 -06:00
2026-07-28 14:53:47 -06:00
2026-07-02 23:32:38 -06:00
2026-07-26 23:37:35 -06:00
2026-06-29 12:52:39 -06:00
2026-07-01 21:03:08 -06:00
2026-07-16 01:56:26 -06:00
2026-07-29 00:42:40 -06:00
2026-06-19 10:05:58 -06:00
2026-06-21 13:12:04 -06:00
2026-06-18 23:15:31 -06:00
2026-06-21 13:06:34 -06:00
2026-07-28 19:34:00 -06:00
2026-07-30 16:39:05 -06:00
2026-07-14 21:25:19 -06:00
2026-07-26 23:08:07 -06:00
2026-07-24 14:11:58 -06:00
2026-07-23 19:54:19 -06:00
2026-07-14 09:22:31 -06:00
2026-07-23 11:43:28 -06:00
2026-06-30 23:34:31 -06:00
2026-07-22 15:24:59 -06:00
2026-06-17 00:30:45 -06:00
2026-06-20 17:12:00 -06:00
2026-07-14 19:59:56 -06:00
2026-07-29 20:57:11 -06:00
2026-07-22 18:12:09 -06:00
2026-07-27 19:45:18 -06:00
2026-07-30 20:45:02 -06:00
2026-07-21 11:03:59 -06:00
2026-06-14 14:47:01 -06:00
2026-07-25 13:27:07 -06:00
2026-07-14 02:50:28 -06:00
2026-07-25 00:17:08 -06:00
2026-07-24 14:25:28 -06:00
2026-07-16 12:07:37 -06:00
2026-07-15 18:20:55 -06:00
2026-07-16 01:59:32 -06:00
2026-07-15 18:33:37 -06:00
2026-06-29 16:49:11 -06:00
2026-07-15 18:20:55 -06:00
2026-06-30 01:46:54 -06:00
2026-07-30 16:35:59 -06:00
2026-07-14 09:40:38 -06:00
2026-07-30 10:26:26 -06:00
2026-07-30 20:17:15 -06:00
2026-07-30 16:31:01 -06:00
2026-07-23 12:42:43 -06:00
2026-06-30 01:46:54 -06:00
2026-07-30 21:28:00 -06:00
2026-06-19 10:05:58 -06:00
2026-07-14 00:08:59 -06:00
2026-06-15 20:55:28 -06:00
2026-06-15 23:25:00 -06:00
2026-06-14 03:19:23 -06:00
2026-06-14 03:19:23 -06:00
2026-06-14 02:04:28 -06:00
2026-06-14 02:04:28 -06:00
2026-07-02 16:56:56 -06:00
2026-07-01 21:03:08 -06:00
2026-07-30 20:17:15 -06:00
2026-07-27 17:17:54 -06:00
2026-07-01 23:13:29 -06:00
2026-06-25 13:09:02 -06:00
2026-06-30 11:15:11 -06:00
2026-07-25 21:58:04 -06:00
2026-07-12 22:06:17 -06:00
2026-07-27 11:01:59 -06:00
2026-07-28 19:26:38 -06:00
2026-07-18 02:03:48 -06:00
2026-07-12 21:51:27 -06:00
2026-07-23 19:54:19 -06:00
2026-07-14 20:46:11 -06:00
2026-06-30 15:32:56 -06:00
2026-06-15 20:55:28 -06:00
2026-06-15 13:44:32 -06:00
2026-06-15 20:55:28 -06:00
2026-07-21 11:03:59 -06:00
2026-07-02 23:10:54 -06:00
2026-07-21 11:03:59 -06:00
2026-06-14 03:19:23 -06:00
2026-07-15 18:33:37 -06:00
2026-07-18 20:30:43 -06:00
2026-06-22 21:22:35 -06:00
2026-07-14 21:43:52 -06:00
2026-06-18 23:40:17 -06:00
2026-06-18 23:15:31 -06:00
2026-07-24 16:02:34 -06:00
2026-07-07 20:20:43 -06:00
2026-07-21 15:05:56 -06:00
2026-07-30 17:01:53 -06:00
2026-07-26 23:41:40 -06:00
2026-06-14 21:24:10 -06:00
2026-06-15 21:00:36 -06:00
2026-06-15 21:00:36 -06:00
2026-06-14 21:24:10 -06:00
2026-06-15 21:00:36 -06:00
2026-06-15 21:00:36 -06:00
2026-06-15 21:00:36 -06:00
2026-06-19 13:03:14 -06:00
2026-07-14 12:53:14 -06:00
2026-07-28 00:16:08 -06:00
2026-06-26 03:06:54 -06:00
2026-07-24 15:33:25 -06:00
2026-07-27 00:06:01 -06:00
2026-07-28 19:34:00 -06:00
2026-07-30 09:51:02 -06:00
2026-07-16 17:05:52 -06:00
2026-07-30 17:05:50 -06:00
2026-07-07 22:23:10 -06:00
2026-07-30 16:32:37 -06:00
2026-07-27 22:52:48 -06:00
2026-07-28 20:15:11 -06:00
2026-06-30 01:46:54 -06:00
2026-07-08 01:02:58 -06:00
2026-07-14 15:39:07 -06:00
2026-06-15 20:55:28 -06:00
2026-07-28 13:20:27 -06:00
2026-07-26 23:10:06 -06:00
2026-07-24 21:30:08 -06:00
2026-07-10 00:02:55 -06:00
2026-07-21 15:05:56 -06:00
2026-06-29 20:07:48 -06:00
2026-07-30 22:00:32 -06:00
2026-07-23 20:51:42 -06:00
2026-07-28 13:20:27 -06:00
2026-06-19 12:13:38 -06:00
2026-07-14 09:22:31 -06:00
2026-07-16 02:01:15 -06:00