Skip to content

fix(OMN-16878): make receipt-honesty and contract-validation actually block on infra - #2973

Merged
github-actions[bot] merged 1 commit into
devfrom
jonah/omn-16878-enforcement-wiring
Aug 28, 2026
Merged

github-actions[bot] merged 1 commit into
devfrom
jonah/omn-16878-enforcement-wiring

Conversation

@jonahgabriel

@jonahgabriel jonahgabriel commented Aug 28, 2026 •

Copy link
Copy Markdown
Collaborator

Ticket

OMN-16878 — wire receipt-honesty and contract-validation into omnibase_infra's real enforcement surface. Executes item 2 of the OMN-16876 enforcement census.

Evidence-Ticket: OMN-16878
Evidence-Source: OCC#7454
Original-Evidence-Source: OCC#7433

The gap

Both checks ran on every omnibase_infra PR and could not block a merge. House Rule 5: detection not wired as a pre-merge gate is advisory and gets ignored.

This is sharper here than in any other repo. dev requires exactly one status check — CI Summary (the OMN-4497 single-umbrella design) — so EXPECTED_EXTERNAL_CONTEXTS in scripts/ci/ci_summary_gate.py is the entire external enforcement surface. A context missing from that tuple has no second surface to fall back on and no branch-protection signal that it is missing. It simply stops mattering, silently.

Two Done tickets that live state contradicts

Ticket Claim Reality on 2026-08-28
OMN-13328 its OCC contract states omnibase_infra, omniclaude and omnimarket "were already flipped" none of the three was enforced on any surface
OMN-13326 "contract-validation REQUIRED across all 6 repos" true on omnibase_core, omnibase_compat, omnibase_spi, omniintelligence, omnidash; wired on neither omnibase_infra nor omniclaude

Correction comments with the full readback are on both tickets. Neither needed re-implementation — only wiring.

Admission — measured, not assumed

Window Source Result
#2955–#2970 (2026-08-28) live check-runs 16/16 present, 16/16 green (both contexts)
#2546–#2567 omn15496 fixture, backfilled 16/16 present, 16/16 green
#2705–#2720 omn15979 fixture, backfilled 32/32 present, 32/32 green (both contexts)

Both existing merge-time fixtures were backfilled with real API reads under the fixtures' own declared merge-time filter (started_at <= mergedAt) — not synthesised rows — following the precedent set for Dep Provenance Gate (OMN-15737) and Integration Test Removal Gate (OMN-15979). Three independent windows agree.

Non-vacuity — mandatory, per OMN-16876 finding 5

Zero reds across three windows is also exactly the vacuous-pass shape: a checker fed empty or inapplicable input prints PASS and exits 0 forever. Each was therefore proven able to FAIL on real input, with a positive control:

Context Negative input exit Positive control exit
receipt-honesty gamed receipt: status PASS, echo-only probe, verifier == runner 1 ([SELF_ATTESTATION]) real committed receipt 0
contract-validation contract with ticket_id int, title list, dod_evidence string, extra key 1 (4 field errors) contracts/OMN-10041.yaml 0

Negative fixtures were local-only and are deliberately not committed. The receipt-honesty validator also exits 1, not 0, when handed no arguments — it does not manufacture a green from empty input; the workflow's "0 changed receipt files" short-circuit is an explicit, readable applicability guard.

Baseline freeze?

Not needed. Zero reds across three independent windows, so nothing had to be frozen and nothing was force-greened. These are straight promotions, not OMN-14340 / OMN-14355-shaped ratchets.

Why no if: always() fix here

omniclaude's three producers needed one (needs: occ-preflight with no if: is skip-as-pass under branch protection — OMN-15057 vector 5). Neither producer here has needs: or a job-level if: at all, so no upstream failure can skip them. Belt and braces regardless: that hazard is a branch-protection property, and this layer's EXTERNAL_GOOD_CONCLUSIONS admits only success, so a skipped producer fails CI Summary closed rather than satisfying it.

Both producers declare pull_request and merge_group, so requiring them cannot wedge a queue SHA if a queue is ever re-enabled.

Tests

tests/ci/test_omn_16878_enforcement_wiring.py — pins tuple membership, that neither context is simultaneously listed in MEASURED_NOT_ENFORCED_CONTEXTS, both producer triggers, the no-skip-path producer property, and that skipped is never a good external conclusion.

uv run pytest tests/ci/test_omn_16878_enforcement_wiring.py tests/ci/test_ci_summary_gate.py -q → 90 passed.

… block on infra

OMN-16876 census item 2. Both checks ran on every omnibase_infra PR and could
not block a merge.

That is sharper here than in any other repo: `dev` requires exactly ONE status
check, "CI Summary" (the OMN-4497 single-umbrella design), so
EXPECTED_EXTERNAL_CONTEXTS in scripts/ci/ci_summary_gate.py IS the entire
external enforcement surface. A context missing from that tuple has no second
surface to fall back on and no branch-protection signal that it is missing.

Both entries close a Done ticket that live state contradicts:
  - OMN-13328 ("receipt-honesty REQUIRED on all repos that produce receipts")
    -- its OCC contract asserted omnibase_infra, omniclaude and omnimarket
    "were already flipped". Live readback 2026-08-28: none of the three was
    enforced on any surface.
  - OMN-13326 ("contract-validation REQUIRED across all 6 repos") -- genuinely
    required on omnibase_core, omnibase_compat, omnibase_spi, omniintelligence
    and omnidash; wired on neither omnibase_infra nor omniclaude.

Admission, measured not assumed:
  - #2955..#2970 (2026-08-28): 16/16 present, 16/16 green for both.
  - Backfilled BOTH existing merge-time fixtures with real API reads under the
    fixtures own merge-time filter (started_at <= mergedAt), not synthesised
    rows: omn15496 (#2546..#2567) and omn15979 (#2705..#2720). The second
    window independently measured 32/32 present, 32/32 green across both
    contexts. Three independent windows agree; no freeze-baseline ratchet is
    indicated.

Non-vacuity (OMN-16876 finding 5) -- 16/16 green is also exactly the vacuous
pass shape, so each was proven able to FAIL on real input:
  receipt-honesty      gamed receipt (verifier == runner) -> exit 1; real -> 0
  contract-validation  schema-invalid contract -> exit 1; OMN-10041.yaml -> 0

Both producers declare pull_request AND merge_group and carry no `needs:` and
no job-level `if:`, so no upstream failure can skip them; and this layer admits
only "success", so a skip fails closed rather than passing.

Evidence-Source: OCC#7433
@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 1 minute.

View limit details

Limit details: You’ve used the included review currently available. Your 131 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb0178f4-2d78-4aa9-88ea-feb70e60e069

📥 Commits

Reviewing files that changed from the base of the PR and between e57ad15 and 938d674.

📒 Files selected for processing (4)
  • scripts/ci/ci_summary_gate.py
  • tests/ci/fixtures/omn15496_merge_time_external_check_runs.json
  • tests/ci/fixtures/omn15979_merge_time_external_check_runs.json
  • tests/ci/test_omn_16878_enforcement_wiring.py

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Hostile Reviewer — DEGRADED (informational)

Blocking findings (critical): 0
Total findings: 0
Models succeeded: none

Note: All reviewer models failed or were unavailable. Degraded results are informational during the pilot phase (OMN-8468/OMN-8524) and do not block merge. Error: all review endpoints [192.168.86.201:8000 192.168.86.201:8000 ] unreachable — preflight short-circuit (no models available)


Gate semantics (pilot phase)

Verdict Meaning Blocks merge?
passed No critical findings No
blocked CRITICAL findings found Yes
degraded All models unavailable (infra) No (pilot)

Powered by omniintelligence.review_pairing.cli_review — multi-model adversarial review (OMN-8468/OMN-8524)

@github-actions
github-actions Bot merged commit 31504a7 into dev Aug 28, 2026
315 of 349 checks passed
@github-actions
github-actions Bot deleted the jonah/omn-16878-enforcement-wiring branch August 28, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant