Skip to content

v3.2.0 — Chunked Reviewer Waiter (omni_wait.py) + Phase 3 Completion Rewrite

Choose a tag to compare

@nexiouscaliver nexiouscaliver released this 01 Sep 20:51
· 97 commits to main since this release
65bb872

What's New

Added

  • omni_wait.py chunked 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 and final_text harvest; mtime-stability fallback when the Status: DONE marker 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-dir writing a pretty-printed status.json plus 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 unittest and pytest; 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_text harvest, and zero improvised sleep commands.
  • Tag installability proven from a fresh scratch config: plugin list reports 3.2.0 and installed_plugins.json records gitCommitSha = 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