jochen
02a8837348
Fix review round 1 of the wait list and its hooks (issues 1629, 1743, 1744)
...
A session id reaching the Stop and SessionStart hooks was only checked
for blank, so "../../x" or "a/b" could read or write outside the waits
directory; both hooks now hold every session id to waitSessionID before
building any path, and allow (saying why) rather than fail on a bad one.
claude_code_wait's list/watched/done/said held only add to that same
check, letting a malformed id through as an ordinary, always-empty key;
they all refuse it now.
The Stop hook's three-strikes cap could be bypassed forever if its
counter file could not be written on a refusal: it now allows instead,
saying so, so a wait can never hold a turn open indefinitely. Its advice
offered mesh_wait on a wait's event family unconditionally, ignoring
that the session's tool runner may not be granted it (ADR 0367 §2); it
now offers mesh_wait only "if this session's tool runner is granted it,
otherwise start a watcher", and drops the family entirely when a wait
has none.
Both hooks' fail-open and let-through notices were said only on stderr,
which Claude Code does not show the operator on an allowed (exit 0)
outcome; they now also print the same words as a "systemMessage" JSON
object on stdout, which Claude Code does show.
2026-10-21 18:23:42 +02:00
..
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-04 12:50:20 +02:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-05 15:10:30 +02:00
2026-10-05 11:47:38 +02:00
2026-10-21 09:26:11 +02:00
2026-10-17 16:23:03 +00:00
2026-10-21 18:23:42 +02:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-05 15:10:30 +02:00
2026-10-05 11:50:52 +02:00
2026-10-17 16:23:03 +00:00
2026-10-21 09:50:14 +00:00
2026-10-15 15:06:06 +02:00
2026-10-17 16:23:03 +00:00
2026-10-04 13:02:23 +02:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-04 13:02:23 +02:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-04 13:02:23 +02:00
2026-10-16 09:42:45 +00:00
2026-10-07 21:35:50 +02:00
2026-10-21 14:07:01 +02:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-21 09:51:22 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-21 14:07:01 +02:00
2026-10-21 09:50:14 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-16 09:42:45 +00:00
2026-10-21 16:24:58 +02:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-21 12:52:28 +02:00
2026-10-21 12:52:28 +02:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-21 09:57:56 +02:00
2026-10-21 17:06:51 +02:00
2026-10-17 16:23:03 +00:00
2026-10-20 13:02:35 +00:00
2026-10-18 00:09:16 +02:00
2026-10-20 23:50:02 +02:00
2026-10-17 16:23:03 +00:00
2026-10-21 01:52:58 +02:00
Review round 1: an unset mail-reading verb answers unavailable not unknown, cache the index instead of leaking a pool per call, a gone mail leaves the queue without going unhealthy, sort the judge's own cause by its words, drive RunBatches itself for its pacing test, and prove no tell while unhealthy against a genuinely untold mail (issues 1430, 1523, 1517, 1518, 1520, 1519, 1524)
2026-10-21 01:48:23 +02:00
2026-10-21 13:14:57 +02:00
2026-10-21 14:07:01 +02:00
2026-10-17 16:23:03 +00:00
2026-10-21 13:14:57 +02:00
2026-10-17 16:23:03 +00:00
2026-10-20 22:57:13 +02:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-21 13:07:08 +02:00
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-05 15:10:30 +02:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-05 15:10:30 +02:00
2026-10-17 16:23:03 +00:00
2026-10-21 09:51:22 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-08 12:04:08 +02:00
2026-10-21 08:08:04 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-21 14:07:01 +02:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 22:42:21 +02:00
2026-10-21 13:14:57 +02:00
2026-10-21 14:07:01 +02:00
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-08 15:04:02 +02:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-04 13:02:23 +02:00
2026-10-20 21:09:36 +00:00
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-07 21:35:49 +02:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-04 13:02:23 +02:00
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-17 16:23:03 +00:00
2026-10-17 16:23:03 +00:00
2026-10-16 09:42:45 +00:00
2026-10-16 09:42:45 +00:00