v3.2.0 — Chunked Reviewer Waiter (omni_wait.py) + Phase 3 Completion Rewrite
What's New
Added
omni_wait.pychunked completion waiter (skills/omnireview-gitlab/scripts/) — waits on the 3 reviewer subagents' transcripts with exit-code semantics (0 = all terminal, 3 = still running — re-invoke, 2 = degraded: budget exhausted / every remaining agent stalled / transcript count mismatch). One-line JSON status on stdout with per-agent state andfinal_textharvest; mtime-stability fallback when theStatus: DONEmarker is absent (the marker never blocks completion); dead-agent stall detection (>300 s) with partial harvest while the others are still waited on; scan-dir fallback with a 15 s spawn-grace window (count_pending); and--reports-dirwriting a pretty-printedstatus.jsonplus one markdown report file per agent (omni_wait-<basename>.md, collision-suffixed) — the lossless Read-channel for the reviewers' reports.- Chunked SIGALRM deadline strictly inside the chunk budget (default 480 s, under the 600 s Bash-tool ceiling) with fail-fast degraded exits for platforms without POSIX timers (
sigalrm_unsupported).
Changed
- omnireview-gitlab Phase 3 completion detection rewritten — the waiter's exit code is now the sole completion authority; improvised
sleep-polling and hand-written collect/wait helper scripts are explicitly forbidden (retired a pattern with a measured worst case of 503 s of dead wait after all agents finished); background-agent task notifications are informational only. - Degraded runs (stalled/missing agents) proceed to consolidation with an explicit "coverage degraded (N/3 reviewers)" report note naming the missing perspectives.
- Post-parse validation of numeric flags (non-positive durations,
--expect < 1) fail fast on the usage path instead of breaking the JSON contract mid-wait. - Version bumped to 3.2.0.
Tests
- 31 waiter tests (subprocess-driven, deterministic via faked mtimes and tiny clamped windows), runnable under both
python3 -m unittestandpytest; full plugin suite 231 passed. TDD red→green receipts with verified lineage for every review round. - Reviewed across 4 adversarial review rounds (1 human-commissioned code review + Copilot rounds on this PR), all findings fixed red→green.
Validation
- Staggered-completion e2e: last-terminal → exit-0 latency 0.17 s; evaluation overhead 0.036 s.
- Local A/B dry-runs via the engine harness on a scratch MR: 3.1.0 tag run and 3.2.0 tree run both SUCCESS (engine exit 0, conforming report, content-sha install proof); the 3.2.0 transcript shows waiter chunks bounded at 465 s < 480, the marker fast-path firing, full
final_textharvest, and zero improvisedsleepcommands. - Tag installability proven from a fresh scratch config:
plugin listreports 3.2.0 andinstalled_plugins.jsonrecordsgitCommitSha = 65bb872d7f0a681621ce5c98a6b86d3fedac4fe4(this release's tagged commit).
Contributors
- @nexiouscaliver (W2A workstream: waiter implementation, Phase 3 rewrite, review rounds)
Full Changelog: v3.1.0...v3.2.0