Repository navigation
ci(OMN-20332): read every sibling repo at a pinned sha, never a live branch - #347
Conversation
…branch A workflow that reads a sibling at its live dev/main, or with no ref, goes red the moment that sibling merges, and no omnidash PR can fix it. Per the 2026-10-01T21:43:10Z ruling each sibling is now read at a recorded sha: today's tip of the branch each read used, so nothing behaves differently at merge. - 10 reusable workflow/action `uses:` pinned (omnibase_core, omniclaude, onex_change_control), including the 7 required checks - the two omnimarket publisher checkouts pinned from `ref: dev` - receipt-honesty's omnibase_core clone checks out the pinned sha - required-checks.yaml cross_repo_ref values follow the pins - tests/ci/test_sibling_reads_pinned.py fails on any live sibling read (12 failures on the pre-fix tree) and runs in workflow-script-refs.yml
* evidence(OMN-20332): author OCC companion for OmniNode-ai/omnidash#347 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 30541abbe19c801d5a06e34fbd8db4b71b0fcd53. * evidence(OMN-20332): self-bind OCC#12270 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai>
|
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 |
|
@jonahgabriel one red check on head
I have stopped rerunning. Could the outcome check treat an empty batch window as nothing-to-mint rather than an error, or be cleared by hand for this head? Thank you! |
Summary
omnidash CI now reads every sibling repo (omnibase_core, omniclaude, onex_change_control, omnimarket) at a pinned commit, never a live
dev/mainor no ref. A sibling's merge can no longer turn omnidash red (OMN-20332, per the 2026-10-01T21:43:10Z sibling-pin ruling under OMN-20331).What changed
receipt-honesty.yml: the omnibase_core clone checks out1e69bec9.call-occ-preflight.yml,call-receipt-gate.yml,docs-validate.yml: omnibase_core@1e69bec9.call-reject-skip.yml: omniclaude@61761f04.required-check-skip-guard-caller.yml: omniclaude@4ddbc808.contract-validation.yml: onex_change_controlvalidate-contract@a89a6f30.pr-title-check.ymlandsecurity-scan.yml: onex_change_control@a89a6f30.call-occ-autobind.ymlandcall-occ-companion-effect.yml: the omniclaude reusables@4ddbc808and the omnimarket publisher checkoutsref: d471dcb9. The ticket marks these two as also related to OMN-14812, but AC1 covers every workflow.# <repo> <branch> as of 2026-10-02 ([OMN-20332](https://linear.app/omninode/issue/OMN-20332)). Moving a pin later is a PR that tests the new version..github/required-checks.yaml: the fivecross_repo_refvalues follow the pins. The skip guard resolves the cross-repo ref from the caller's ownuses:, not from this string (omniclaude_workflow_model.py:255), so this keeps the manifest truthful without changing its behaviour.tests/ci/test_sibling_reads_pinned.py: fails on any sibling read in.github/workflows/that isn't a full sha, whether auses:, anactions/checkoutrepository:/ref:pair, or agit clonenever moved to a sha. It also fails on anycross_repo_refat a branch. It carries its own bad and good fixtures, plus a check that the scanner finds the tree's sibling reads at all.workflow-script-refs.yml: the test runs in the existing unconditional bare-environment job (pytest pyyaml,--noconftest). No new workflow and no new required check.How it was verified
cc628179: the new test failed 12 times. One failure per live read across the 11 workflows, includingclone 51: git clone omnibase_coreinreceipt-honesty.yml, and one for the manifest. The extractor self-tests passed. Already-pinned reads (type-sync-check.yml:144,check-handshake.yml:41,onex-schema-compat.yml:46,contract-validation.yml:98) were not flagged.python -m pytest tests/ci/ -q --noconftest -p no:cacheprovider -c /dev/nullgives 93 passed. Every workflow andrequired-checks.yamlparses withyaml.safe_load.gh api repos/OmniNode-ai/<repo>/contents/<path>?ref=<sha>returned FOUND for all 14 pinned files (3 omnibase_core reusables, 4 omniclaude reusables, 3 onex_change_control files, 3 omnimarket publisher files and configs). A zero sha returned MISSING, which is the positive control.HEAD=1e69bec909f245be511803191554e5b340def0b7withpyproject.tomlpresent.Failure paths
n/a: this change writes no receipt, verdict or report. It changes which commit CI reads, plus one static test.
Open defects
none
Local gates
--no-verify, noSKIP=, no--no-gpg-sign, nocore.hooksPathoverride. Every pre-commit and pre-push hook ran.Not in this change
validate-contractaction still checks out onex_change_control atref: maininside itself. That read lives in onex_change_control and can't be pinned from omnidash.Evidence-Ticket: OMN-20332
Evidence-Source: OCC#12281