Skip to content

ci(OMN-14104): gate CI fanout behind OCC preflight - #2229

Merged
jonahgabriel merged 19 commits into
devfrom
jonah/omn-14104-occ-first-ci-gating
Jul 8, 2026
Merged

jonahgabriel merged 19 commits into
devfrom
jonah/omn-14104-occ-first-ci-gating

Conversation

@jonahgabriel

@jonahgabriel jonahgabriel commented Jul 7, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Gate omnibase_infra CI fanout behind OCC preflight so OCC eligibility fails before runner-heavy validation starts.

Changes

  • Adds occ-preflight as the first CI dependency.
  • Makes zone-filter, validators, test gates, and summary gates depend on OCC eligibility.
  • Guards top-level always() aggregators so they do not run after OCC failure.

Test plan

Runtime startup gate

  • N/A — this PR does not touch any of the above

Type safety checklist

  • No new metadata["key"] or metadata.get("key") string literal access on Pydantic model fields
  • No new metadata: dict[str, Any] fields without TypedDict or # ONEX_EXCLUDE: comment
  • No new bare except Exception — must use narrowed type, or minimal-scope boundary with logger.exception(...) + degrade comment, or typed wrap/re-raise
  • If adding a key to a metadata dict, the key is defined in the relevant TypedDict
  • If adding a service to docker-compose.infra.yml with required (:?) env vars, update tests/integration/docker/test_docker_integration.py fixture dict in test_compose_config_valid

Strict-gate ordering

Related issues

OMN-14104

Evidence-Ticket: OMN-14104
Evidence-Source: OCC#3674

Summary by CodeRabbit

  • New Features
    • Added a centralized OCC preflight “eligibility” gate and wired it into many CI/release workflows so key checks run only after it completes.
  • Bug Fixes
    • Tightened gating logic across workflows to require preflight success before downstream validations (and updated overall CI verdict to treat “occ-preflight / eligibility” as a strict required anchor).
  • Tests
    • Updated CI workflow resilience tests to account for reusable-workflow job references, and refreshed the dispatch parity fixture metadata.

@coderabbitai

coderabbitai Bot commented Jul 7, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 45 minutes

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).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eca36588-e64c-438e-b824-56802a27f0c4

📥 Commits

Reviewing files that changed from the base of the PR and between a5f36a9 and b4b9f6a.

📒 Files selected for processing (1)
  • .pre-commit-config.yaml
📝 Walkthrough

Walkthrough

This PR adds a centralized occ-preflight reusable-workflow gate across many GitHub Actions workflows, then wires downstream jobs to wait on it with needs and updated if conditions. It also pins the reusable workflow reference in call-occ-preflight.yml and updates CI support code and tests.

Changes

OCC Preflight Gate Rollout

Layer / File(s) Summary
Pin reusable preflight workflow reference
.github/workflows/call-occ-preflight.yml
Pins the reusable occ-preflight.yml reference to a commit SHA and passes the same SHA as core-ref.
Central CI workflow preflight gating
.github/workflows/ci.yml
Adds an initial occ-preflight job and threads needs and if dependencies through CI validation, test, compliance, migration, and summary jobs.
PR and merge automation gates
.github/workflows/artifact-reconciliation-webhook.yml, .github/workflows/auto-merge.yml, .github/workflows/call-reject-skip.yml, .github/workflows/non-dev-base-guard.yml, .github/workflows/main-target-guard.yml, .github/workflows/omnigate.yml, .github/workflows/pr-title-check.yml, .github/workflows/cr-thread-gate.yml, .github/workflows/cr-thread-gate-caller.yml
Adds occ-preflight jobs and needs gating to PR and merge automation workflows.
Contract and compliance validation gates
.github/workflows/contract-validation.yml, .github/workflows/call-receipt-gate.yml, .github/workflows/receipt-honesty.yml, .github/workflows/imperative-contract-guard.yml, .github/workflows/dep-provenance-gate.yml, .github/workflows/canonical-inference-gate.yml, .github/workflows/validate-validator-requirements.yml, .github/workflows/validator-runtime-profiles.yml, .github/workflows/omni-standards-compliance.yml
Adds occ-preflight jobs and dependency wiring across contract and standards validation workflows.
Infra, deploy, and Docker build gates
.github/workflows/docker-build.yml, .github/workflows/deploy-gate.yml, .github/workflows/fresh-deploy-fitness.yml, .github/workflows/runner-disk-preflight.yml, .github/workflows/runner-image-build-smoke.yml, .github/workflows/runner-routing-audit.yml, .github/workflows/env-parity.yml, .github/workflows/no-bare-compose-teardown.yml, .github/workflows/compose-config-lint.yml
Adds occ-preflight jobs and dependency or condition updates for build, deploy, and runner infrastructure workflows.
Sync, audit, and integration checks
.github/workflows/node-migration-sync.yml, .github/workflows/skill-node-mapping-sync.yml, .github/workflows/lane-census-staleness.yml, .github/workflows/dispatch-parity-gate.yml, .github/workflows/dispatcher-route-coverage.yml, .github/workflows/integration-test-check.yml, .github/workflows/check-handshake.yml, .github/workflows/check-sibling-compat.yml, .github/workflows/stale-todo-gate.yml, .github/workflows/url-authority-gate.yml, .github/workflows/seed-provenance-check.yml, .github/workflows/security-scan.yml, .github/workflows/prod-promotion-lineage.yml, .github/workflows/docs-validate.yml, scripts/ci/ci_summary_gate.py, tests/ci/test_ci_workflow_resilience.py, tests/fixtures/dispatch_parity/baseline-selection-v2.json
Adds occ-preflight jobs and needs dependencies to sync, audit, integration, and documentation validation workflows, and updates CI support code/tests/fixture data.
Strict CI gate list
scripts/ci/ci_summary_gate.py
Adds occ-preflight / eligibility to STRICT_GATE_JOBS.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: gating CI fanout behind OCC preflight.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jonah/omn-14104-occ-first-ci-gating

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

@jonahgabriel
jonahgabriel force-pushed the jonah/omn-14104-occ-first-ci-gating branch 2 times, most recently from e79bd09 to 68d22b2 Compare July 7, 2026 13:42
@jonahgabriel
jonahgabriel enabled auto-merge (squash) July 7, 2026 17:57
@jonahgabriel
jonahgabriel disabled auto-merge July 7, 2026 19:26
@jonahgabriel
jonahgabriel enabled auto-merge (squash) July 7, 2026 19:26

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
.github/workflows/dep-provenance-gate.yml (1)

43-52: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Occ-preflight block duplicated verbatim across ~40 workflows.

The same uses: reference, pinned SHA, permissions, and with: inputs are copy-pasted into every gated workflow. Since a dedicated pinned wrapper (call-occ-preflight.yml) already exists per the stack's Layer 1, routing all callers through it instead of duplicating the reusable-workflow reference would centralize future pin rotations to a single file.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/dep-provenance-gate.yml around lines 43 - 52, The
occ-preflight configuration is duplicated here instead of using the existing
pinned wrapper, so update the workflow to call call-occ-preflight.yml rather
than repeating the OmniNode-ai/omnibase_core reusable-workflow reference,
permissions, and inputs. Keep the same contracts-dir and receipts-dir settings,
but route through the wrapper so pin rotations and future changes are
centralized in one place.
.github/workflows/docker-build.yml (1)

46-61: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Centralize the occ-preflight pin behind the local wrapper — The wiring here is fine, but this external pin is duplicated across the rollout; have per-workflow jobs call ./.github/workflows/call-occ-preflight.yml so future pin bumps touch one file instead of many.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/docker-build.yml around lines 46 - 61, The occ-preflight
reusable workflow is pinned directly here, which duplicates the version across
workflows and makes bumps harder to manage. Update the docker-build workflow to
invoke the local wrapper job that calls
./.github/workflows/call-occ-preflight.yml instead of referencing
OmniNode-ai/omnibase_core/.github/workflows/occ-preflight.yml directly, so the
pin is centralized in one place.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci.yml:
- Around line 56-64: The occ-preflight gating in the CI workflow should not skip
the required job when preflight fails. In the CI workflow’s CI Summary job, keep
the job-level condition as always() and move the occ-preflight result handling
into the job steps so the job can fail explicitly when
needs.occ-preflight.result is not success. Use the existing occ-preflight
dependency and CI Summary job names to locate the logic, and ensure the required
branch-protection check remains red instead of skipped when preflight is
unhealthy.

---

Nitpick comments:
In @.github/workflows/dep-provenance-gate.yml:
- Around line 43-52: The occ-preflight configuration is duplicated here instead
of using the existing pinned wrapper, so update the workflow to call
call-occ-preflight.yml rather than repeating the OmniNode-ai/omnibase_core
reusable-workflow reference, permissions, and inputs. Keep the same
contracts-dir and receipts-dir settings, but route through the wrapper so pin
rotations and future changes are centralized in one place.

In @.github/workflows/docker-build.yml:
- Around line 46-61: The occ-preflight reusable workflow is pinned directly
here, which duplicates the version across workflows and makes bumps harder to
manage. Update the docker-build workflow to invoke the local wrapper job that
calls ./.github/workflows/call-occ-preflight.yml instead of referencing
OmniNode-ai/omnibase_core/.github/workflows/occ-preflight.yml directly, so the
pin is centralized in one place.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1a0fba1c-f966-49ac-ad31-efb3f9a047d8

📥 Commits

Reviewing files that changed from the base of the PR and between be5a18a and d6e261b.

📒 Files selected for processing (43)
  • .github/workflows/artifact-reconciliation-webhook.yml
  • .github/workflows/auto-merge.yml
  • .github/workflows/call-occ-preflight.yml
  • .github/workflows/call-receipt-gate.yml
  • .github/workflows/call-reject-skip.yml
  • .github/workflows/canonical-inference-gate.yml
  • .github/workflows/check-handshake.yml
  • .github/workflows/check-sibling-compat.yml
  • .github/workflows/ci.yml
  • .github/workflows/compose-config-lint.yml
  • .github/workflows/contract-validation.yml
  • .github/workflows/cr-thread-gate-caller.yml
  • .github/workflows/cr-thread-gate.yml
  • .github/workflows/dep-provenance-gate.yml
  • .github/workflows/deploy-gate.yml
  • .github/workflows/dispatch-parity-gate.yml
  • .github/workflows/dispatcher-route-coverage.yml
  • .github/workflows/docker-build.yml
  • .github/workflows/docs-validate.yml
  • .github/workflows/env-parity.yml
  • .github/workflows/fresh-deploy-fitness.yml
  • .github/workflows/imperative-contract-guard.yml
  • .github/workflows/integration-test-check.yml
  • .github/workflows/lane-census-staleness.yml
  • .github/workflows/main-target-guard.yml
  • .github/workflows/no-bare-compose-teardown.yml
  • .github/workflows/node-migration-sync.yml
  • .github/workflows/non-dev-base-guard.yml
  • .github/workflows/omni-standards-compliance.yml
  • .github/workflows/omnigate.yml
  • .github/workflows/pr-title-check.yml
  • .github/workflows/prod-promotion-lineage.yml
  • .github/workflows/receipt-honesty.yml
  • .github/workflows/runner-disk-preflight.yml
  • .github/workflows/runner-image-build-smoke.yml
  • .github/workflows/runner-routing-audit.yml
  • .github/workflows/security-scan.yml
  • .github/workflows/seed-provenance-check.yml
  • .github/workflows/skill-node-mapping-sync.yml
  • .github/workflows/stale-todo-gate.yml
  • .github/workflows/url-authority-gate.yml
  • .github/workflows/validate-validator-requirements.yml
  • .github/workflows/validator-runtime-profiles.yml

Comment thread .github/workflows/ci.yml
@jonahgabriel
jonahgabriel force-pushed the jonah/omn-14104-occ-first-ci-gating branch from 05675e6 to 7fa7e35 Compare July 8, 2026 07:16
CodeRabbit flagged that gating the required CI Summary aggregate with
`if: needs.occ-preflight.result == 'success' && (always())` turns a RED
occ-preflight into a SKIPPED CI Summary. A skipped required branch-protection
check reports as success, so a failed OCC preflight could be merged.

Keep `if: always()` and enforce OCC eligibility as the first step, failing
explicitly when preflight did not succeed so the required check stays RED.
CI Summary is the single umbrella required gate (OMN-4497,
.github/required-checks.yaml), so a red CI Summary blocks the merge even
though the runner-heavy fanout is (intentionally) skipped on preflight failure.
The 06:58Z run batch on the prior push hit a transient GitHub Actions
startup_failure across all workflows (zero jobs, name==path, no diff cause —
untouched workflows failed too). Infra recovered by 07:01Z (sibling branch
runs queuing/running normally). startup_failure runs are non-retriable, so
this empty commit re-triggers a fresh CI cycle. No code change.
…dev SHA

The 43 workflow callers pinned the occ-preflight reusable (and its core-ref
input) to 7975803283 — a commit on the omnibase_core OMN-14104 PR branch
(#1396, 'ci: use dev for OCC preflight compat checkout'). That PR squash-merged
to omnibase_core dev (8a47e092), deleting the branch and ORPHANING 7975803283.
GitHub Actions can no longer resolve the reusable at an unreachable SHA, so
every caller on this branch hit startup_failure ('workflow file issue', zero
jobs) — all 43 workflows red.

Re-pin all 86 references (43 uses:@ + 43 core-ref) to 8a47e092002dd1338599fa0733feda469436acbf,
the merged commit that last defined occ-preflight.yml on omnibase_core dev
(ancestor of dev HEAD, reachable). Input interface is identical
(contracts-dir/receipts-dir/core-ref, all optional) — verified against both
SHAs. Also rebased onto origin/dev to pick up the 4 missing commits (incl.
OMN-14130 core 0.46.5 bump for the grandfather validator).
@jonahgabriel
jonahgabriel force-pushed the jonah/omn-14104-occ-first-ci-gating branch from 7fa7e35 to 2009694 Compare July 8, 2026 07:31
@jonahgabriel

Copy link
Copy Markdown
Collaborator Author

Superseded by #2230 (OMN-14127) — recommend close

This PR (OMN-14104) gates omnibase_infra CI fanout behind an occ-preflight reusable job wired into ci.yml + ~43 satellite workflows.

#2230 (OMN-14127) merged to dev at 2026-07-08T07:26:24Z (5add217) and took the opposite direction: it removed the occ-preflight gating from ci.yml entirely (dev's ci.yml now has zero occ-preflight references) and replaced it with a no-needs GitHub-hosted fail-closed CI Summary poller — explicitly "so it never wedges under self-hosted saturation." That is the same failure mode this branch hit while I was working it (all workflows startup_failure, then mass cancelled under runner starvation).

Consequences:

Recommendation: close as superseded by #2230 (operator decision — not auto-closing).

Diagnostic captured for the record (root-cause of the all-red state)

The original all-red was not flaky CI: every workflow on the branch startup_failured ("workflow file issue", zero jobs) because all 43 callers pinned the occ-preflight reusable + its core-ref to omnibase_core 7975803283 — a commit on the omnibase_core OMN-14104 PR branch (#1396) that was squash-merged + branch-deleted, orphaning the SHA so Actions could no longer resolve the reusable. I re-pinned all 86 references to the merged, reachable dev SHA 8a47e092 and rebased onto latest dev; that cleared the startup_failure and occ-preflight / eligibility went green. The 1 CodeRabbit Major thread (CI Summary skip-vs-fail on red preflight) was also fixed in code and resolved. All of that is now moot given the supersession, but the orphaned-reusable-pin pattern is worth noting for any future cross-repo reusable-workflow pins (pin to a merged/reachable SHA, never a PR-branch SHA).

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
.github/workflows/ci.yml (2)

56-68: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Missing timeout-minutes on the new gating job.

occ-preflight is now the first dependency for the entire CI fanout, but unlike every other job in this file it has no timeout-minutes. If the reusable workflow hangs, it defaults to GitHub's 360-minute job timeout, stalling the whole pipeline (and every job that depends on it) far longer than any other gate here.

⏱️ Suggested fix
   occ-preflight:
+    timeout-minutes: 15
     # self-gating-ok: target is in omnibase_core, not a required check on omnibase_infra main
     uses: OmniNode-ai/omnibase_core/.github/workflows/occ-preflight.yml@8a47e092002dd1338599fa0733feda469436acbf
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 56 - 68, The occ-preflight gating job
is missing a timeout, so it can block the entire CI fanout for far too long if
the reusable workflow hangs. Add a timeout-minutes setting to occ-preflight in
the CI workflow, matching the pattern used by the other jobs in this file, so
the gate fails fast instead of waiting for GitHub’s default timeout.

958-961: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

if only checks occ-preflight/zone-filter, not the other listed needs.

Adding a custom if here replaces the implicit success() check that would otherwise require every job in needs to succeed. Since test-parallel's if only checks occ-preflight.result and zone-filter.outputs.docs_only, a failure in e.g. arch-invariants or schema-handshake would not prevent test-parallel from running (it would still wait for those jobs to complete, but not to succeed). This is pre-existing behavior unrelated to this PR's OCC gating, and merge-blocking is still enforced independently via ci-summary's strict gate checks, so it isn't a functional regression — just worth being aware of.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 958 - 961, The `test-parallel` job’s
custom `if` in `.github/workflows/ci.yml` overrides the default success check
for all listed `needs`, so it can run even if jobs like `arch-invariants` or
`schema-handshake` fail. Update the `test-parallel` condition to preserve the
implicit all-needs-success behavior while still honoring the `occ-preflight` and
`zone-filter` gating, using the existing `test-parallel` job definition and its
`needs` list as the reference point.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 56-68: The occ-preflight gating job is missing a timeout, so it
can block the entire CI fanout for far too long if the reusable workflow hangs.
Add a timeout-minutes setting to occ-preflight in the CI workflow, matching the
pattern used by the other jobs in this file, so the gate fails fast instead of
waiting for GitHub’s default timeout.
- Around line 958-961: The `test-parallel` job’s custom `if` in
`.github/workflows/ci.yml` overrides the default success check for all listed
`needs`, so it can run even if jobs like `arch-invariants` or `schema-handshake`
fail. Update the `test-parallel` condition to preserve the implicit
all-needs-success behavior while still honoring the `occ-preflight` and
`zone-filter` gating, using the existing `test-parallel` job definition and its
`needs` list as the reference point.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 061da79b-315b-4ecd-acd6-a866997de1d5

📥 Commits

Reviewing files that changed from the base of the PR and between d6e261b and 2009694.

📒 Files selected for processing (44)
  • .github/workflows/artifact-reconciliation-webhook.yml
  • .github/workflows/auto-merge.yml
  • .github/workflows/call-occ-preflight.yml
  • .github/workflows/call-receipt-gate.yml
  • .github/workflows/call-reject-skip.yml
  • .github/workflows/canonical-inference-gate.yml
  • .github/workflows/check-handshake.yml
  • .github/workflows/check-sibling-compat.yml
  • .github/workflows/ci.yml
  • .github/workflows/compose-config-lint.yml
  • .github/workflows/contract-validation.yml
  • .github/workflows/cr-thread-gate-caller.yml
  • .github/workflows/cr-thread-gate.yml
  • .github/workflows/dep-provenance-gate.yml
  • .github/workflows/deploy-gate.yml
  • .github/workflows/dispatch-parity-gate.yml
  • .github/workflows/dispatcher-route-coverage.yml
  • .github/workflows/docker-build.yml
  • .github/workflows/docs-validate.yml
  • .github/workflows/env-parity.yml
  • .github/workflows/fresh-deploy-fitness.yml
  • .github/workflows/imperative-contract-guard.yml
  • .github/workflows/integration-test-check.yml
  • .github/workflows/lane-census-staleness.yml
  • .github/workflows/main-target-guard.yml
  • .github/workflows/no-bare-compose-teardown.yml
  • .github/workflows/node-migration-sync.yml
  • .github/workflows/non-dev-base-guard.yml
  • .github/workflows/omni-standards-compliance.yml
  • .github/workflows/omnigate.yml
  • .github/workflows/pr-title-check.yml
  • .github/workflows/prod-promotion-lineage.yml
  • .github/workflows/receipt-honesty.yml
  • .github/workflows/runner-disk-preflight.yml
  • .github/workflows/runner-image-build-smoke.yml
  • .github/workflows/runner-routing-audit.yml
  • .github/workflows/security-scan.yml
  • .github/workflows/seed-provenance-check.yml
  • .github/workflows/skill-node-mapping-sync.yml
  • .github/workflows/stale-todo-gate.yml
  • .github/workflows/url-authority-gate.yml
  • .github/workflows/validate-validator-requirements.yml
  • .github/workflows/validator-runtime-profiles.yml
  • scripts/ci/ci_summary_gate.py
🚧 Files skipped from review as they are similar to previous changes (42)
  • .github/workflows/compose-config-lint.yml
  • .github/workflows/dep-provenance-gate.yml
  • .github/workflows/node-migration-sync.yml
  • .github/workflows/prod-promotion-lineage.yml
  • .github/workflows/pr-title-check.yml
  • .github/workflows/security-scan.yml
  • .github/workflows/call-receipt-gate.yml
  • .github/workflows/no-bare-compose-teardown.yml
  • .github/workflows/contract-validation.yml
  • .github/workflows/integration-test-check.yml
  • .github/workflows/skill-node-mapping-sync.yml
  • .github/workflows/lane-census-staleness.yml
  • .github/workflows/validator-runtime-profiles.yml
  • .github/workflows/dispatch-parity-gate.yml
  • .github/workflows/artifact-reconciliation-webhook.yml
  • .github/workflows/seed-provenance-check.yml
  • .github/workflows/imperative-contract-guard.yml
  • .github/workflows/check-sibling-compat.yml
  • .github/workflows/omnigate.yml
  • .github/workflows/cr-thread-gate.yml
  • .github/workflows/call-occ-preflight.yml
  • .github/workflows/deploy-gate.yml
  • .github/workflows/receipt-honesty.yml
  • .github/workflows/stale-todo-gate.yml
  • .github/workflows/runner-image-build-smoke.yml
  • .github/workflows/docs-validate.yml
  • .github/workflows/runner-routing-audit.yml
  • .github/workflows/auto-merge.yml
  • .github/workflows/cr-thread-gate-caller.yml
  • .github/workflows/main-target-guard.yml
  • .github/workflows/non-dev-base-guard.yml
  • .github/workflows/env-parity.yml
  • .github/workflows/omni-standards-compliance.yml
  • .github/workflows/dispatcher-route-coverage.yml
  • .github/workflows/canonical-inference-gate.yml
  • .github/workflows/fresh-deploy-fitness.yml
  • .github/workflows/call-reject-skip.yml
  • .github/workflows/url-authority-gate.yml
  • .github/workflows/check-handshake.yml
  • .github/workflows/runner-disk-preflight.yml
  • .github/workflows/docker-build.yml
  • .github/workflows/validate-validator-requirements.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
tests/ci/test_ci_workflow_resilience.py (1)

784-789: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Assumes every uses job in these workflows is occ-preflight.

The branch treats any job with a uses key as the occ-preflight caller and requires it to match the pinned SHA suffix. If a future job in one of these three workflows legitimately calls a different reusable workflow, this assertion will fail for the wrong reason. Scoping the check to the occ-preflight job name would keep the test focused and avoid unrelated false failures.

♻️ Suggested tightening
         for job_name, job in workflow["jobs"].items():
-            if "uses" in job:
+            if job_name == "occ-preflight" and "uses" in job:
                 assert job["uses"].endswith(
                     "occ-preflight.yml@8a47e092002dd1338599fa0733feda469436acbf"
                 )
                 continue
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/ci/test_ci_workflow_resilience.py` around lines 784 - 789, The workflow
resilience test is too broad because it assumes every job with a `uses` key is
the `occ-preflight` reusable workflow caller. Tighten the assertion inside the
workflow job loop in `test_ci_workflow_resilience` so it only validates the job
named `occ-preflight`, and leave other reusable workflow jobs unverified to
avoid false failures. Keep the pinned SHA check on that specific job’s `uses`
value only.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@tests/ci/test_ci_workflow_resilience.py`:
- Around line 784-789: The workflow resilience test is too broad because it
assumes every job with a `uses` key is the `occ-preflight` reusable workflow
caller. Tighten the assertion inside the workflow job loop in
`test_ci_workflow_resilience` so it only validates the job named
`occ-preflight`, and leave other reusable workflow jobs unverified to avoid
false failures. Keep the pinned SHA check on that specific job’s `uses` value
only.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2051b940-63bf-4744-9f2b-1862ad121282

📥 Commits

Reviewing files that changed from the base of the PR and between 2009694 and a5f36a9.

📒 Files selected for processing (2)
  • tests/ci/test_ci_workflow_resilience.py
  • tests/fixtures/dispatch_parity/baseline-selection-v2.json
✅ Files skipped from review due to trivial changes (1)
  • tests/fixtures/dispatch_parity/baseline-selection-v2.json

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