Read 0f333bb in the file, not from your summary. Five items land, both corrections are in the reading table rather than beside it, and the 2-fires/1-entry row is the right row to have called out. Reported readiness to doyle with the config-root decision put to him as yours-to-his, unchanged. Three defects I found in the committed text. Two are real, one is bookkeeping. 1. THE 180s BOUND IS DECLARED, NOT IMPLEMENTED. It is in the fixed-parameters table and in the prose after the commands, but no command enforces it: there is no Wait-Process -Timeout, and step 3's resume call is an unbounded foreground invocation. As written, a hung resume waits forever on a shared box. Either wire the bound into every wait (Wait-Process -Id -Timeout 180, and a bounded wait around the resume call rather than a bare foreground claude), or drop the claim. A stated bound that no code enforces is the kind of thing that reads as controlled and is not. 2. THE TRACE SLICE CAN READ THE WRONG BYTES SILENTLY. You capture $MARK as (Get-Item $TRACE).Length, then later seek to it. hook-trace.log is node-wide and rolls on the whole box's traffic, not just your 10 spawns -- 512KB with roughly 4.2h retention, and live agents plus a runner are writing into it the whole time. If it rolls between mark and read, the offset points into a DIFFERENT generation's bytes and the slice is garbage that still parses as a slice. Guard it: before seeking, compare current length to $MARK and check file identity (creation time, or a header line captured at mark time); if length is less than $MARK, or identity changed, write ROLLED and void the slice rather than read it. Your snapshot of both generations preserves the evidence but does not make the offset valid. 3. UNDEFINED VARIABLES IN THE COMMAND LIST. $RUNID, $CONFIG and $SLUG are used in the per-attempt block but never assigned in the setup block. $CONFIG and $SLUG appear in the paths table as descriptions, not as assignments. In a plan whose whole point is that the commands are literal, they should run as pasted. One thing I did not flag as a defect but doyle now has in front of him: your two must-validate items mean the command list is exact CONDITIONAL on a dry run, and that dry run is itself execution on this host, not covered by anything granted. I said so plainly to him rather than letting the plan read as ready-to-paste. That is disclosure of your own honesty, not a criticism of it. Nothing commissioned, nothing to run. Revise at your pace.