{ "title": "Fix runner prompt delivery after partial stdin timeout", "reason": "Reviewer startup hangs waiting for stdin EOF: runner retries communicate(None) after a .2s partial-write timeout. Reproduced with delayed stdin reader and 80000-byte payload on Python 3.9.6; no S00-002 acceptance review was performed.", "reproduction": "state/evidence/S00-002-manual-security-stdin-20261015a.md", "role": "ci-cd", "reviewer_role": "qa", "scope": [ "scripts/runner.py", "tests/tooling/test_automation.py" ], "outcome": "Reliable complete prompt delivery under startup delay and pipe backpressure, preserving runner lifecycle guarantees.", "steps": [ "Read diagnostic evidence and reproduce delayed-reader partial-write timeout without launching a model.", "Fix only runner stdin delivery; retain fresh sessions, prompt budget, terminal-transition monitoring, timeout and process-tree cleanup.", "Add a deterministic delayed-reader large-prompt regression check and run focused runner tests plus make check.", "Record evidence/handoff/commit message and submit for independent review." ], "acceptance": [ "A delayed stdin reader receives the complete large UTF-8 prompt and EOF without hanging.", "Timeout and terminal-transition process cleanup still work; no background source-writing descendants remain.", "Existing runner/tooling checks pass; no task scope, spec snapshots or product implementation is changed." ], "checks": [ "Delayed-reader large UTF-8 prompt regression.", "Existing runner timeout, transition, scope and fresh-session tests.", "make check" ], "depends_on": [], "requires_user_input": false }