Changes: Preserve incomplete work and blocker metadata for S00-012. This checkpoint does not mark implementation accepted. Validation: Session ended with status blocked. Blocker: Required automation suite fails in existing all-prompts budget test: S21-006 exceeds even a diagnostic 90000-character prompt limit. This blocks verification of the stdin remediation; production limit remains 80000. Task: S00-012 Agent: manual-ci-cd-stdin-20261015b Role: ci-cd Action: escalate Status: blocked Task title: Fix runner prompt delivery after partial stdin timeout
2.0 KiB
S00-002 review startup blocker
Reporter: manual-security-stdin-20261015a, security-role supervisor.
No acceptance review was performed. Implementation commit 59b9ff62fe is preserved.
The assigned reviewer auto-security-9b8ae55222db (PID 86944) produced an empty output.log for several minutes. Its prompt.md contains 75696 bytes / 55647 characters. A one-second OS sample showed codex_exec::resolve_root_prompt -> Stdin::read_to_end -> read. This is startup waiting on stdin, before agent execution.
Actual runtime: Python 3.9.6. scripts/runner.py calls communicate(prompt, timeout=.2), then retries communicate(None). In this runtime Popen._communicate only registers stdin for writing when the current input argument is truthy. A timeout during partial delivery therefore prevents remaining writes/EOF on subsequent calls.
Synthetic reproduction, exit 0: launch Python child sleeping .5 seconds then reading stdin to EOF; parent sends 80000 bytes with communicate(timeout=.2), observes TimeoutExpired, retries communicate(None, timeout=1), observes a second TimeoutExpired. Child then terminated and reaped. Output: REPRODUCED: retry communicate(None) leaves child waiting for stdin; payload bytes=80000; Python=3.9.6.
Runner PID 84112 was stopped with SIGINT; its BaseException cleanup terminated/reaped the reviewer and removed .runner.lock. Supervisor exec session returned 130/KeyboardInterrupt. No product source edits, Git rollback, task acceptance or release bypass. Network access remains enabled in runner.local.json and verified by reviewed S00-011.
Required remediation: make runner prompt delivery resilient to slow startup/backpressure while preserving terminal-transition monitoring, timeout/process-tree cleanup and full untruncated fresh prompts. Add a deterministic delayed-stdin/large-payload regression test. Do not change product stack, requirements or S00-002 implementation. Current original review must resume in a fresh reviewer only after independent remediation acceptance.