Summary
Every figure behind #3750 was taken on a Linux CI container. Windows Git Bash is the host .claude/rules/hook-budget.md binds the budget to, and four behaviors the pipeline leans on are documented for it but unmeasured there. The Codex review on #3750 asked for the budget figure; the README says it is owed and the switch stays off by default until it is taken.
| Claim |
Why it matters |
What to run on Windows |
| The always-on kill-switch read costs about one spawn floor (2.42 ms against 2.08 ms on Linux) on 30 events |
this is the cost every consumer pays with logging off; the parallel wall across the 30 producer rows plus the existing hooks is the budget number |
the fleet's hook fan-out harness, one PostToolUse and one Stop payload, logging off and on |
Concurrent >> appends of one line under 4 KB do not interleave |
33 producers can append to one session file in the same second |
session-event-log.test.sh's 33-parallel case, then the same shape with 4 KB lines (Linux: zero corruption at 4 KB, 376 of 990 corrupt at 16 KB) |
ls -t orders by mtime at one-second resolution |
retention's "newest N" and the reader's session scope key on it |
two files written in the same second on NTFS; confirm the newer sorts first or document the tie |
| The late-EOF stall costs one idle slice, not the whole read bound |
the producer reads 4 KB slices with a balanced-brace stop and a quarter-bound idle slice |
the held-open-pipe case on Git Bash; 262 ms is the Linux figure, the 1 s idle bound the ceiling |
Also unmeasured: the peer-reported 11 s cold cli-flag-verify run (Linux: 461.6 ms after #3747).
Fix
Run the four probes on a Windows Git Bash host, record the figures in plugins/claude-ops/README.md beside the Linux ones (the "Hook budget accounting" shape guardrails uses), and either confirm the default-off posture or adjust the slice bound and the retention ordering if a figure demands it.
Acceptance
Related
Summary
Every figure behind #3750 was taken on a Linux CI container. Windows Git Bash is the host
.claude/rules/hook-budget.mdbinds the budget to, and four behaviors the pipeline leans on are documented for it but unmeasured there. The Codex review on #3750 asked for the budget figure; the README says it is owed and the switch stays off by default until it is taken.PostToolUseand oneStoppayload, logging off and on>>appends of one line under 4 KB do not interleavesession-event-log.test.sh's 33-parallel case, then the same shape with 4 KB lines (Linux: zero corruption at 4 KB, 376 of 990 corrupt at 16 KB)ls -torders by mtime at one-second resolutionsessionscope key on itAlso unmeasured: the peer-reported 11 s cold
cli-flag-verifyrun (Linux: 461.6 ms after #3747).Fix
Run the four probes on a Windows Git Bash host, record the figures in
plugins/claude-ops/README.mdbeside the Linux ones (the "Hook budget accounting" shape guardrails uses), and either confirm the default-off posture or adjust the slice bound and the retention ordering if a figure demands it.Acceptance
plugins/claude-ops/README.mdline 201) can be answered with numbers.Related