v3.3.0 — Tail Compression: Findings Contract, Deterministic Consolidator, Stable Posting
What's New
Added
- Structured findings JSON contract +
omni_validate_findings.py(skills/omnireview-gitlab/scripts/) — each reviewer agent emits a machine-readable findings block; the validator checks all three blocks and passes malformed output through verbatim (never fails the run). omni_consolidate.pydeterministic consolidation (skills/omnireview-gitlab/scripts/) — merges only near-identical findings (same file+lines+category, Jaccard ≥ 0.30); same-locus non-identical pairs classify as clusters, not merges, with per-agent verbatim entries in the worklist; corroboration is recorded as metadata; confidence values are never adjusted or recomputed; emits one 6-section single-pass adjudication worklist;--priorretrospective guard marks prior-matched locialready_adjudicated— prior posted findings are authoritative and new input is routed as replies on their existing threads.omni_post_review.pyshipped posting fallback (skills/omnireview-gitlab/scripts/) — standaloneglab-based posting with retry/backoff (2 s / 4 s on 5xx/429), a duplicate-summary guard that refuses to post a second default## OmniForgesummary, and--reply-to/reply_to_thread_idthread routing; no MCP dependency (if the MCP server breaks, posting still works).omni_partition.pydiff load balancing (skills/omnireview-gitlab/scripts/) — security-affinity assignment first, then greedy balancing across the codebase and analyst reviewers; plus reviewer-brief tightening and the "Never sleep-poll — not even sub-60 s sleeps" rule.omni_digest.pycontext digest (skills/omnireview-gitlab/scripts/) — script-built digest where bot artifacts are carried byte-verbatim, human prose is capped, and diffs are reduced to hunk headers; retrospective wiring in Phases 1/3/4 replaces raw comment dumps.
Changed
- One-dispatch-per-reviewer rule in the three reviewer briefs — fixes the 9-vs-3 dispatch-file churn observed on retrospective re-reviews (A/B retrospective arm:
sub_count== 3). - Test suite 325 + 9 (was 231).
Measured (A/B e2e — same MR, same head, same provider hour)
- Tail −28.2 % (339.5 → 243.7 s — real, beyond the ±75 s single-pair noise band); output tokens −24.4 %.
- Dispatch files: 3 (retrospective re-reviews previously produced 9); 3 prior loci marked
already_adjudicatedwith replies routed on their recorded threads.
Known limitations (stated honestly)
- Adjudication turns: 20 vs the ≤12 target — miss (baseline 10; per-call API time fell 32.5 → 10.9 s, so the tail dropped anyway — the single-pass worklist produces more, much shorter turns).
- Sub-agent wall skew (2×) unimproved by this release.
- Measurements are from the local A/B harness; fleet (VPS) verification follows the production rollout.
Full changelog: see CHANGELOG.md § 3.3.0.