Repository navigation
fix(OMN-15597): re-pin the AC5 census to the ticket's OCC SHA and correct its false provenance - #1999
Conversation
…s provenance Merged #1998 (3cb2633) pinned the AC5 corpus at onex_change_control@9089ffa9 and asserted -- in the corpus module docstring and in TestAc5PinnedCorpusReCensus::test_pinned_corpus_is_the_census_the_ticket_names -- that its 59 values / 33 contracts were the ticket's census "reproduced exactly". That is false. It was a cardinality coincidence over a different contract set: OMN-15597's census point is d7b16271 (its own stated 32,593 scan total is exactly that SHA), and contracts/OMN-15239.yaml and contracts/OMN-15488.yaml do not exist at 9089ffa9 at all -- so the pinned corpus structurally could not contain OMN-15488, the live motivating case AC5 exists to protect. A green assertion encoding a false provenance claim is the same defect class #1998 was opened to close. Re-pinned to d7b16271 and regenerated with the oracle already committed in this repo (vendored pre-fix guard rejects AND current guard accepts), via the fixture's own documented git-archive procedure -- read-only, AC6 respected: OCC_CENSUS_SHA 9089ffa9 -> d7b16271 OCC_CENSUS_TOTAL_COMMAND_CHECK_VALUES 32564 -> 32593 class / contracts 59/33 -> 63/35 The new class is a strict superset of the old 59 (extras: OMN-15239.yaml#0, OMN-15488.yaml#0/#1/#2). The control at 9089ffa9 reproduces the outgoing snapshot exactly, so the divergence is the SHA, not the method. Provenance is now stated rather than implied: the docstring and the renamed test_pinned_corpus_is_the_ticket_census_point_under_the_committed_oracle say which oracle at which SHA, and record that the ticket's literal 59/33 was read with a different oracle (its unbalanced-$( rule, which yields 56/32 here) and is superseded, not reproduced. New test_pinned_corpus_covers_every_contract_the_ticket_enumerates makes the provenance claim falsifiable by containment of the ticket's 33 enumerated contract names -- something a cardinality coincidence cannot satisfy. Also corrects the docstring's "one day of OCC commits later" for 1e6b75f8: it is 76 minutes, same day. Findings by the #1998 adversarial verifier, independently re-measured and confirmed by lane G3 (Linear comment 921b6c7b on OMN-15597). Evidence-Ticket: OMN-15597
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 50 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
Comment |
✅ Hostile Reviewer — PASSEDBlocking findings (critical/error): 0 Gate semantics
Powered by omniintelligence.review_pairing.cli_review — node-based adversarial review via HandlerLlmCliSubprocess (OMN-8524) |
✅ Architectural Review — PASSEDErrors: 0 What this checks
No architectural violations found. Static architectural lint — no model inference (OMN-14176). |
…5845) * evidence: OCC companion pass 1 for OmniNode-ai/omnimarket#1999 * evidence: OCC companion self-bind for #5845 --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai>
…erged The first head ran ci.yml before the OCC companion existed, so occ-preflight / eligibility failed, OCC Preflight Dependency refused to start heavy CI, and CI Summary fail-closed -- every test-bearing job was skipped and this diff had zero Linux-runner proof. OCC#5845 merged 2026-08-01T13:24:08Z (born-admissible: app/onexbot-occ-writer, both commits authored AND committed by occ-companion-effect, single-parent, zero human commits) and occ-preflight / eligibility now passes on the existing head. No diff change. Evidence-Ticket: OMN-15597
OMN-15597 — G4: re-pin the AC5 census to the ticket's SHA and state its provenance truthfully
Repairs a false-provenance defect that is already on
dev. Merged #1998 (3cb2633c) closed both of the lane-G verifier residuals correctly — the census oracle is genuinely un-vacuated and AC5 genuinely runs on hosted CI — but it did so against the wrong OCC SHA, and then asserted, in a green test, that it was the right one.Nothing about the runner changes here. This PR touches two test files and no
src/: the corpus snapshot and the assertions that describe it.The defect
Three sites claimed the committed AC5 corpus is this ticket's blast-radius census:
omn_15597_occ_census_pinned.pydocstring — "That is the ticket's blast-radius census reproduced exactly: 59 checks / 33 contracts"TestAc5PinnedCorpusReCensus::test_pinned_corpus_is_the_census_the_ticket_names— assertsOCC_CENSUS_SHA == "9089ffa9…"and the59/33pair as "the ticket's numbers"It is not. The corpus was pinned at
onex_change_control@9089ffa9; OMN-15597's census point isd7b16271(OCC#5760, 2026-07-31T20:57:21Z — the last OCCdevcommit before the ticket was filed at 21:09:23Z).The
59 / 33agreement is a cardinality coincidence over a different contract set. The two 33-sets differ by two elements each way: the pin hasOMN-14587+OMN-15142, the ticket hasOMN-15239+OMN-15488.contracts/OMN-15239.yamlandcontracts/OMN-15488.yamldo not exist at9089ffa9at all.OMN-15488is the live motivating case the ticket names — the 12th steel instance tracked in OMN-15596, "carries three items in this exact nested-quote shape, so the next steel Done-flip hits this defect again unless the runner is fixed". The pinned corpus structurally could not contain the case AC5 exists to protect.A green assertion that encodes a false provenance claim is exactly the defect class — "an assertion whose green means something other than what it says" — that #1998 was opened to close.
Provenance of the finding: raised by the #1998 adversarial verifier (
fable-ws0-0731/laneG2-verify, Linear comment7d7e31ff), which measured the SHA-by-SHA table and marked theac5_optionclaim REFUTED on its second clause. Independently re-measured and confirmed by lane G3 (921b6c7b), which found no vehicle — #1998 merged 2026-08-01T11:51:46Z before G3 could push — and specified this repair. This lane is that repair; nothing here is taken on either lane's word (see the control below).What changed
OCC_CENSUS_SHA9089ffa9338b…d7b162710514…OCC_CENSUS_TOTAL_COMMAND_CHECK_VALUESTOKENIZER_DAMAGE_CLASSOCC_CENSUS_DAMAGE_CLASS_CONTRACT_COUNTTOKENIZER_DAMAGE_PATH_COMMANDS{gh, printf, test}NO_EVIDENCE_BUILTIN_CANDIDATESThe new class is a strict superset of the old 59: all 59 values are still present, plus exactly
OMN-15239.yaml#0andOMN-15488.yaml#0/#1/#2. Nothing was dropped to reach a number.Regenerated by the fixture's own documented re-pin procedure —
git archive <sha> contracts | tar -x, then rebuilding the three constants with the selectors that already live intest_omn_15597_command_substitution_shape_guard.py. There is still deliberately no generator script (it would be a second copy of the census oracle). AC6 respected: the OCC clone was read read-only viagit archive; nocontracts/*.yamland nodrift/dod_receipts/**file was written —git -C onex_change_control statusshows no tracked modification.Why the numbers changed — two independent axes, and this is the part #1998 got wrong
The counts are oracle-dependent AND SHA-dependent. #1998 carried
59forward as though it were invariant. It is neither.9089ffa9d7b16271(the ticket's census point)$("So no oracle reproduces the ticket's literal 59 / 33 at its own census point. The
59is an earlier reading under a different rule. It is now recorded as superseded, not reproduced — in the module docstring and in the renamed test — rather than being made to agree by editing a number.Three independent signals put the ticket's census at
d7b16271:9089ffa9scans 32,564.9089ffa9, which lacksOMN-15239andOMN-15488.OMN-15488's three items are precisely three of the four values this re-pin adds.Provenance is now asserted, not implied
test_pinned_corpus_is_the_census_the_ticket_names→test_pinned_corpus_is_the_ticket_census_point_under_the_committed_oracle. The name now states what it checks. It asserts the SHA, the scan total (32593— signal 1 above, in-test), and63/35, and its docstring keeps the two claims apart: the SHA is the ticket's census point; the counts are not the ticket's literal numbers.test_pinned_corpus_covers_every_contract_the_ticket_enumerates. This is the assertion fix(OMN-15597): un-vacuate the AC5 census oracle and pin AC5 to a committed OCC corpus #1998 lacked, and the reason a re-pin is the right remedy rather than a docstring edit: it requires containment of the ticket's 33 enumerated contract names, which a cardinality coincidence cannot satisfy, and pinsOMN-15488.yaml#0/#1/#2explicitly. The 33 names are transcribed from the ticket body into the test file, not the generated corpus module, so the check compares two independently sourced sets rather than a snapshot against itself. Alen(...) == 33guard catches a transcription typo that would silently weaken it.59as superseded, and explains why the pin moved.1e6b75f8, one day later" —1e6b75f8is 2026-07-31T21:08:02Z and9089ffa9is 19:51:59Z. 76 minutes, same day. The count 63 was right; the interval was wrong by ~19×, and it understated how fast the corpus moves.RED-before / GREEN-after — against the artifact that runs
The new assertions were run against the merged
3cb2633ccorpus (only the corpus module reverted, tests held constant):The containment failure names
OMN-15488on its own — the RED is the defect, not a number mismatch. The corpus was restored and re-hashed (sha256 175d09b4…) before every subsequent run; same class then reports8 passed.GREEN-after, OCC clone deliberately unreachable (
OMNI_HOMEandONEX_CC_REPO_PATHcleared — the hosted-runner condition): 212 passed, 2 skipped. Up from #1998's 211 by the one new test. The only 2 skips remainTestOccLiveCorpusDriftDiagnostic, host-only by design and excluded from AC5.Anti-fabrication control — the oracle is faithful, only the SHA moved
Before regenerating, the same procedure was run at the outgoing pin:
It reproduces the merged snapshot key-for-key and byte-for-byte, so the divergence is the SHA, not the method. And the regenerated class was re-verified under the restricted
whichstub the committed test actually uses ({gh, printf, test}only): 0 of 63 still RED under the current guard, 0 of 63 accepted by the vendored pre-fix guard — the class is real at the new SHA, not just larger.Gates — all on
stickybeatz-studio(.200), push includedRemote-only lane. Every mutation was made over
ssh(heredoc /python -/git); noEdit/Writetool call touched this worktree, so the edit-locality trap does not apply and there is nothing to patch-transfer or hash-compare across hosts.ruff format --check— 2 files already formatted;ruff check— all checks passed.pre-commit run --files— RC=0, 21 passed / 47 skipped / 0 failed, no hook skipped by hand (OMNIBASE_INFRA_PATHexported fortopic-naming-lint, same disclosure as R3/G2).test_omn_15597_command_substitution_shape_guard.py— 212 passed, 2 skipped.tests/unit/nodes/node_dod_verify/— 517 passed, 3 skipped.git push(pre-push, OMN-13973), no hand-narrowing, no--no-verify— 5284 passed, 16 skipped, 1 xfailed in 4m46s;[prepush-smart-tests] impacted tests passed; allowing push.Disclosed, pre-existing, not diff-caused:
mypyon these two test files reports 6"object" has no attribute …errors. The identical 6 reproduce on theorigin/devcopies of the same files (same errors, line-shifted only), andtests/is outside the repo's configured mypy scope (mypy_path = "src"; the pre-pushmypyhook reports no files to check for this diff). Not introduced here, not fixed here.Capacity: the lane held for
.200capacity before starting and again before the heavy pre-push gate — pushed at load 7.9/24 cores,Pages free683613,vm.swapusagebyte-identical across a 20s interval (a pinned lifetime figure on a 25-day uptime, not active paging).Scope discipline
This PR does not re-litigate #1998's substance. The verifier upheld its
gates_green, both RED reproductions, the AC5 option-(b) rationale, AC6, and companion#5827's born-admissibility; the census oracle single-sourcing and the hermetic AC5 structure are kept intact and untouched. Only the pin, the derived counts, and the three provenance statements move.Closes OMN-15597
Evidence-Ticket: OMN-15597
Evidence-Source: 51e0dc7695f5f5ebddee945382ccb7d5bfd5ef54