EloquentBrush0x
502d03d5a3
fix(kanban): detect cycles in decompose_triage_task sibling-link pre-validation
...
decompose_triage_task inlines SQL INSERTs for atomicity and intentionally
bypasses link_tasks() — which calls _would_cycle() per edge. If the LLM
emits a cyclic parent graph (e.g. A.parents=[1], B.parents=[0]) the DB
write succeeds but every involved child deadlocks in 'todo' forever:
recompute_ready() requires all parents to be done, which is impossible
when A waits for B and B waits for A.
Add a Kahn topological sort over the sibling parent indices in the
pre-validation block, before any DB writes. Mirrors the cycle-safety
guarantee that link_tasks() provides for manually linked tasks.
2026-05-18 09:40:44 -07:00
..
2026-05-17 16:56:37 -07:00
2026-05-16 02:58:57 -07:00
2026-05-07 06:16:23 -07:00
2026-05-08 14:27:40 -07:00
2026-05-15 12:11:32 -07:00
2026-05-17 16:56:37 -07:00
2026-04-28 06:46:45 -07:00
2026-05-11 11:13:25 -07:00
2026-05-15 14:45:43 -07:00
2026-04-28 22:11:10 -07:00
2026-04-14 16:11:37 -07:00
2026-05-11 11:13:25 -07:00
2026-05-11 11:13:25 -07:00
2026-04-13 16:32:04 -07:00
2026-05-13 22:54:21 -07:00
2026-05-11 11:13:25 -07:00
2026-05-15 02:31:30 -07:00
2026-05-17 02:29:41 -07:00
2026-03-30 17:07:21 -07:00
2026-05-17 02:31:18 -07:00
2026-05-13 09:34:15 -07:00
2026-05-18 16:34:10 +05:30
2026-05-11 11:13:25 -07:00
2026-05-15 01:36:03 -07:00
2026-05-11 11:13:25 -07:00
2026-05-11 11:13:25 -07:00
2026-05-03 11:42:20 -07:00
2026-03-26 01:34:27 -07:00
2026-05-18 16:34:24 +05:30
2026-05-11 11:13:25 -07:00
2026-05-18 00:45:25 -07:00
2026-05-05 10:13:13 -07:00
2026-05-08 14:27:40 -07:00
2026-05-11 11:13:25 -07:00
2026-05-09 14:34:18 -07:00
2026-05-17 11:55:25 -07:00
2026-05-16 23:05:27 -07:00
2026-05-11 11:13:25 -07:00
2026-05-13 22:31:11 -07:00
2026-05-18 09:40:44 -07:00
2026-05-17 13:54:12 -07:00
2026-05-18 01:27:06 -07:00
2026-05-12 20:49:20 -07:00
2026-05-18 01:27:06 -07:00
2026-04-11 17:23:36 -07:00
2026-05-18 16:34:10 +05:30
2026-05-15 01:43:54 -07:00
2026-05-14 07:59:38 -07:00
2026-05-08 14:27:40 -07:00
2026-05-06 09:08:33 -07:00
2026-05-17 13:09:24 -07:00
2026-05-16 02:24:48 -07:00
2026-05-06 10:05:29 -07:00
2026-05-09 14:36:58 -07:00
2026-05-07 07:18:21 -07:00
2026-04-29 21:56:51 -07:00
2026-05-16 17:15:19 -07:00
2026-05-17 04:04:15 -07:00
2026-05-17 13:54:12 -07:00
2026-05-08 10:04:32 -07:00
2026-05-17 13:54:12 -07:00
2026-05-15 12:11:32 -07:00
2026-05-09 12:48:14 -07:00
2026-05-11 11:13:25 -07:00
2026-05-08 14:27:40 -07:00
2026-05-17 16:56:37 -07:00
2026-05-12 01:02:25 -07:00
2026-05-16 23:00:58 -05:00
2026-05-17 02:29:41 -07:00
2026-05-15 12:11:32 -07:00
2026-04-29 04:03:03 -07:00
2026-05-11 11:13:25 -07:00
2026-05-14 23:23:32 -07:00
2026-05-08 17:01:12 -07:00
2026-05-17 11:35:57 -07:00
2026-05-11 11:13:25 -07:00
2026-04-26 20:48:20 -07:00
2026-05-17 23:28:45 -07:00
2026-05-17 04:04:15 -07:00
2026-05-11 11:13:25 -07:00
2026-04-29 07:22:33 -07:00
2026-05-06 15:49:59 -07:00
2026-05-17 16:56:37 -07:00
2026-05-11 11:13:25 -07:00