S00-012: Verify runner prompt delivery and lifecycle regressions

Changes: Record verification evidence and replace the blocked S00-012 handoff with independent QA review instructions. Retain the existing stdin implementation and regressions from prior checkpoints; no new source changes.
Validation: Reproduced the legacy partial stdin timeout on Python 3.9.6 and reaped the child. All 28 automation tests passed, including exact 140024-byte UTF-8/EOF and timeout/submit descendant cleanup. make check passed all 72 tests; git diff --check passed. No live model, application readiness or Windows cleanup check is claimed.

Task: S00-012
Agent: auto-ci-cd-f101e40d9902
Role: ci-cd
Action: claim
Status: review

Task title: Fix runner prompt delivery after partial stdin timeout
This commit is contained in:
wt committed 2026-10-15 01:50:53 +07:00
1 parent bdfde480d4
commit adb152fdd0
7 files changed
+72 -14

No files matched your search

@@ -0,0 +1,27 @@
# S00-012 executor evidence
Agent: auto-ci-cd-f101e40d9902; role: ci-cd; date: 2026-10-15.
Result: preserved stdin implementation verified after reviewed prerequisites; pending independent QA review.
## Input, outcome and scope
Read master/startup instructions, role, card and CLI packet, exact NFR-007 in specs/tz_clear.md, previous handoff, diagnostic evidence, accepted scope ADR 0000 and direct S00-001/S00-011/S00-013/S00-014 evidence, reviews and handoffs. CLI resume confirmed current ownership; no repeated claim. Initial git status showed only coordinator state/tasks.json metadata.
The implementation is already preserved in S00-012 checkpoint c28412ae8f79e03257b4fab2460ff62dc4682c72: runner opens its persisted prompt in binary mode as child stdin and polls process.wait at .2-second intervals. A regular file supplies all UTF-8 bytes and EOF regardless of delayed startup and avoids the partial pipe retry. No new source edits were necessary in this fresh session. Checkpoint 49c054a preserves the real timeout/submit descendant regressions. Independently reviewed S00-013 fixes prompt budgeting; S00-014 fixes repeated cleanup. Those prerequisite results are retained, not reimplemented or accepted on their behalf.
Acceptance is complete prompt/EOF delivery with timeout/transition cleanup, fresh sessions, scope and existing tooling checks preserved. No immutable spec, task definition, shared contract, dependency, stack or product implementation was changed. This session writes only workflow evidence, handoff and commit message, then submits via CLI.
## Actual checks and results
- python3 scripts/tasks.py resume --agent auto-ci-cd-f101e40d9902, show S00-012 and packet S00-012 --agent auto-ci-cd-f101e40d9902: exit 0 each; assigned in_progress task and context read.
- Read-only git log --all --grep='^S00-012:' --oneline -n 5 and git show c28412a -- scripts/runner.py tests/tooling/test_automation.py: exit 0; preserved source implementation/regression inspected alongside current code.
- Synthetic legacy reproduction using Python subprocess: exit 0. A child waits .5 seconds then reads stdin to EOF; parent sends 140000 UTF-8 bytes with communicate(payload, timeout=.2), then communicate(None, timeout=1). Both time out on Python 3.9.6, reproducing stranded delivery/EOF. Child killed and reaped, streams closed in finally. No model launched.
- python3 -m unittest discover -s tests/tooling -p test_automation.py -v: exit 0; all 28 tests passed in 11.202s. Delayed-reader regression verifies exact equality with the persisted 140024-byte UTF-8 prompt, reaches EOF, decodes it and successfully submits. Timeout and submit regressions launch a SIGTERM-ignoring descendant, require readiness before cleanup and confirm no delayed source file appears after 1.6 seconds. Successful repeated cleanup and failed-kill propagation/retry regressions pass. Fresh process chain, scope, terminal escalation and current claim/review prompt budgets pass.
- make check > /private/tmp/luma-S00-012-f101e40d9902-check.log 2>&1: exit 0; 72 tests passed in 17.834s; validated 279 tasks, 22 stages, 221 requirements and 211 allocated Web requirements. Includes snapshot integrity, generated artifacts, CLI, automation and isolated Git workflow tests.
- git diff --check and git diff --stat before writing reports: exit 0 each; only coordinator state/tasks.json metadata changed, no source changes.
## Limits and next step
Checks exercise real local subprocesses and isolated workflow fixtures, not a live model or product/browser/provider integration. Current runtime is Python 3.9.6 on macOS; Windows cleanup was not exercised. No fresh natural EPERM reproduction is claimed; the reviewed deterministic cleanup regressions and real descendant checks pass. Foundation checks do not prove app readiness or accept root S00-002.
QA must independently review the cumulative S00-012 checkpoints, prerequisite source changes, actual tests and this session's metadata/message; rerun make check. No blocker remains in these checks. Coordinator owns commit and next fresh reviewer; executor does not set done or continue another task.