Repository navigation
fix(OMN-20331): CI reads every sibling repo at its pinned version, never a live branch - #2480
Conversation
…2480 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 50608e2553b3f61e1acb1d4d132857e22cb0d6d3.
) * evidence(OMN-20331): author OCC companion for OmniNode-ai/omniclaude#2480 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 50608e2553b3f61e1acb1d4d132857e22cb0d6d3. * evidence(OMN-20331): self-bind OCC#12242 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai>
✅ Hostile Reviewer — PASSEDBlocking findings (critical/error): 0 Findings
Gate semantics (pilot phase)
Powered by omniintelligence.review_pairing.cli_review — node-based adversarial review via HandlerLlmCliSubprocess (OMN-8524) |
|
Hold placed on this PR at head 50608e2 (ledger HOLD id 2026-10-01T23:37:50Z-hold-2480). This head carries a registry-drift tolerance that the operator ruling of 2026-10-01T23:26:53Z (lane ruling-pin-strict-drift) forbids. The strict restore cannot be committed yet: with drift strict, 11 work.ledger.typed.* types registered here are absent from the omnimarket rev that uv.lock pins (e11987165b96). Release condition: an omnimarket release containing the work.ledger.typed.* types is published, AND this PR's omnimarket pin is bumped to that release with drift strict. Path: omnimarket#3207 merges, omnimarket releases, then this PR bumps the pin and lands strict. Do not arm or merge before then. Auto-merge is currently not armed. |
|
OCC autobind rebound this PR's evidence-source stamp line to The receipt gate's own eligibility validator, run against the change-control tree the gate pins for Reported by |
…ver a live branch - Every workflow read of omnibase_core, onex_change_control, omnimarket, omniintelligence, omnibase_compat, and omnibase_infra now uses a full sha, a release tag, or the rev/version in uv.lock resolved by an in-workflow step. - deploy-gate and skip-guard reusables read omniclaude at job.workflow_sha. - check_registry_consistency.py and generate_event_registry.py tolerate omniclaude being ahead of the pinned omnimarket registry (11 work.ledger.typed.* events). - New falsifier tests/ci/test_sibling_reads_pinned_omn20001.py reports 79 violations on origin/dev and 0 here. - Ticket OMN-20001.
…te ci.yml comments
- Update pyproject.toml and uv.lock to commit d471dcb96d054e85089a63437aa05c1ef68bfee5 (v0.4.277). - Remove ahead-of-pin tolerance in generate_event_registry.py and check_registry_consistency.py; both now fail on drift in both directions without a baseline file. - Update tests to match new strictness. - Verified: generate_event_registry.py --check passed (77 event types), check_registry_consistency.py passed, 20 unit tests in tests/hooks passed. - Tickets: OMN-20001, OMN-20331.
The Hostile Reviewer job clones omniintelligence at the uv.lock pin. The old pin (59edb2c9) predates omniintelligence#945, so its review model registry has no gpt-oss-review, which hostile-reviewer.yml passes as a second --model. The job failed with infra_error "Unknown model 'gpt-oss-review'" and Hostile Review Gate went red on head 162f068. Bump the pin in pyproject.toml and uv.lock from 59edb2c991c71e464ffb9ade0d7d47a1a9f1684f to 43be97b1f47435dfbbd835ff8f5b4484c4dee282 (omniintelligence#945, lacks gpt-oss-review), so the pin is a dev commit, not a tag commit. uv lock: omninode-intelligence v0.24.0 (59edb2c9) -> v0.24.0 (43be97b1). tests/ci passed locally. Ticket: OMN-20331 PR: omniclaude#2480 Onex-Lane: strict-drift-3214 Onex-Session: 4901013959264ec78c4e7a2e95672a3d
Rebased omn-20001-sibling-pin-fix onto origin/dev 6c6efd2. Registry scripts are byte-identical to dev with strict validation. Verified at uv.lock pins 750808959945ef7e4ddf5e6da5c4faac8caef530. Version 0.4.278 contains 5dac7e4a and exits 0 for 77 event types. Positive control at e11987165b96 exits 1 naming 11 work.ledger.typed.* types. Updated test_registry_consistency_script_omn19513.py with two direction tests. Updated test_hostile_reviewer_workflow.py to assert uv.lock rev fetching. Updated test_dispatch_drift_authority.py to ignore uses: lines in scans. Focused pytest shows 41 passed across the touched files. Ticket: OMN-20331 PR: omniclaude#2480
9120094 to
0d1d394
Compare
Updated call-occ-autobind-reusable.yml and call-occ-companion-effect-reusable.yml to set the omnimarket-ref input default to v0.4.278. This aligns the defaults with the pinned rev 750808959945 in uv.lock, replacing the outdated v0.4.276. Comments above the defaults now specify version 0.4.278 and require bumping in the same change as the lock. Validated with 46 passed tests across test_call_occ_companion_effect_reusable.py and related CI checks. Ticket: OMN-20331 PR: omniclaude#2480
fix(OMN-20331): CI reads every sibling repo at its pinned version, never a live branch
Rule
Operator ruling 2026-10-01: each repo checks only itself; any read of a sibling uses the version this repo has PINNED (uv.lock rev or version, release tag, recorded sha), never the sibling's live branch, so a merge in one repo cannot turn another repo red. New sibling version is integration-tested by the consumer before it moves its pin.
What changed (70 files, .github/workflows plus scripts/validation plus tests)
Workflow caller updates
@main->@52851458622f368c3b596c82bf810bc6acce1d5ein 55 workflow callers.@main``@7631ef3321e1a6561f4b2c70019ee57d24160620(same shas omnimarket uses).validate-docs.yml->52851458.onex_change_control updates
@main->@47342e562a516b0278e22a974f35cbf2a64b33eb(uv.lock OCC rev).@main->@babdd13ce68f07df20f989f52ff1c4514d03d896(the sha ci_summary_gate.py records its mirror as read from).Checkouts and clones resolved from uv.lock
Checkouts/clones are now resolved from uv.lock by an in-workflow step (no new scripts):
check-handshakeandcanon-shape-ratchetuse omnibase_core tagv<lock version>(was no ref / dev).750808959945(was dev and the feature branchcodex/omn-20001-m3-fg2).dev-> release tagv0.4.278(the omnimarket version uv.lock records; the tag contains the pinned rev750808959945).Producer reusables
job.workflow_sha(the pattern kb-doc-gate-reusable already uses), with an assert-at-pin step.@main.Tests
tests/ci/test_sibling_reads_pinned_omn20001.pyscans every workflow.origin/devit reports 79 violations; on this branch 0.uses:lines).Not changed, with reasons
dod-evidence-checkandcontract-complianceread OCC evidence data at the exact sha a ticket names (a resolved 40-hex commit, not a branch).How pins move
uses:lines (omnibase_core52851458and7631ef33, OCC47342e56andbabdd13c) and the omnimarket-ref defaults: move only by a consumer PR after the consumer integration-tests the new sibling rev.Supersedes
Rebase and pin
omn-20001-sibling-pin-fixwas rebased ontoorigin/dev89d74d586.ci.yml,pyproject.toml, anduv.lock(twice).ci.ymlkeeps the PR side, where the ref is the omnimarket rev read fromuv.lock, not dev.uv.lock: omnimarket rev750808959945ef7e4ddf5e6da5c4faac8caef530, locked version0.4.278.d471dcb96d054e85089a63437aa05c1ef68bfee5(0.4.277) and contains5dac7e4a, the commit that registers the 11work.ledger.typed.*event types.git merge-base --is-ancestor 5dac7e4afor both revs.e11987165b96, named in earlier text in this PR, is the parent of5dac7e4aand lacks the 11 types; it is no longer the pin.omninode-intelligenceis pinned to43be97b1f47435dfbbd835ff8f5b4484c4dee282(this PR's own commit; the hostile-reviewer job needsgpt-oss-review).scripts/validation/check_registry_consistency.pyandscripts/validation/generate_event_registry.pyare byte-identical toorigin/devand fail on any event type omniclaude has that the pinned omnimarket registry lacks. This PR changes neither script.Strict drift proof and lab readback
750808959945:check_registry_consistency.pyexits 0 ("Registry consistency gate passed.")generate_event_registry.py --checkexits 0 ("77 event types match")e11987165b96:check_registry_consistency.pyexits 1, naming all 11work.ledger.typed.*types missinggenerate_event_registry.py --checkexits 1tests/hooks/test_registry_consistency_script_omn19513.pyprove both directions:h202(lanerebase-2480-strict, in the pushed worktree) at head0d1d39452afddeb18de14ad26adb0885f25d5648:tests/hooks/test_registry_consistency_script_omn19513.pytests/hooks/test_generate_event_registry.pytests/hooks/test_registry_consistency.pytests/hooks/test_hostile_reviewer_workflow.pytests/test_dispatch_drift_authority.pytests/ci/test_sibling_reads_pinned_omn20001.pytests/ci/test_skip_guard_validator_pinned_omn20001.pytests/ci/test_ci_summary_gate_bot_skip_omn19167.pyuv lock --check: consistentonex_lab_runplacement tool refused:h200over the load bar, other hosts unreadableonex_lab_runRed causes on the previous head
912009498and their fixes:tests/hooks/test_hostile_reviewer_workflow.pystill asserted the clones track--branch dev; updated to assert theuv.lockpinned reads.tests/test_dispatch_drift_authority.pyforbade any 40-hex literal inomnimarket-dispatch-drift-gate.yml, including the new uses: pin of theomnibase_corereusable; the scan now ignoresuses:lines.tests/skills/test_lab_onboarding_script_omn20150.py(22macos_onlyskips) from before dev's version, which has none; resolved by the rebase.skip_count_baselineis unchanged.contracts/OMN-20331.yaml). The autobind effect returned a 422 'No commits between dev and auto/window-omninode-ai-omniclaude-occ-autobind', i.e. it had no new delta to add; no companion was hand-authored.dod_evidence
Verification
190debe9e11e67e014d9bcdb6a612d722546b9d4(rebased onorigin/dev89d74d586); its last commit moves the two OCC reusableomnimarket-refdefaults tov0.4.278and passed 46 focused tests.0d1d39452afddeb18de14ad26adb0885f25d5648: 112 passed, exit 0 (files listed under the lab readback below); thentests/workflowsandtests/citogether on h202 after the reusable-default change: 1158 passed.750808959945; both exit 1 againste11987165b96(positive control). Both directions are also proven by unit tests.uv lock --checkconsistent.Evidence-Ticket: OMN-20331
Evidence-Source: OCC#12244