Skip to content

ci(standards): add version pin compliance check [OMN-4806] - #663

Merged
jonahgabriel merged 7 commits into
mainfrom
jonahgabriel/omn-4806-omnibase_core-wire-version-matrix-checker-into-ci
Mar 13, 2026
Merged

jonahgabriel merged 7 commits into
mainfrom
jonahgabriel/omn-4806-omnibase_core-wire-version-matrix-checker-into-ci

Conversation

@jonahgabriel

@jonahgabriel jonahgabriel commented Mar 12, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Wires check_version_pins.py from omni_home into omnibase_core CI as a Phase 1 version-pin-check job (OMN-4806).

  • Checks out OmniNode-ai/omni_home (sparse: standards/) on each CI run
  • Runs python omni_home/standards/check_version_pins.py --repo omnibase_core --root omni_home
  • Added to quality-gate needs — gates the full test suite
  • Step runs after dependency install, before tests (Phase 1 parallel)

Dependencies

Depends on OMN-4803 (omni_home PR #33) which creates standards/check_version_pins.py. This PR will pass CI as soon as that merges.

Definition of Done

  • CI step added
  • Step wired into quality-gate (gates test suite)
  • pre-commit passes
  • CI green (pending OMN-4803 merge)

Linear: OMN-4806

Summary by CodeRabbit

  • Chores
    • Added an automated Version Pin Compliance check to CI that validates dependency version pins against repository standards.
    • Integrated this check into the repository's quality-gate so merges must pass version-pin validation before completion, helping ensure dependency pin consistency across builds.

Wire check_version_pins.py into Phase 1 CI as a new version-pin-check
job. Checks out omni_home standards and validates omnibase_core's
dependency pins against the shared version matrix (OMN-4803).
Job is added to quality-gate needs so it gates the full test suite.
@jonahgabriel
jonahgabriel enabled auto-merge March 12, 2026 23:06
@coderabbitai

coderabbitai Bot commented Mar 12, 2026 •

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

A new GitHub Actions job version-pin-check was added to the test workflow to run an omni_home standards script that validates dependency version pins; the quality-gate job's needs list was updated to include version-pin-check.

Changes

Cohort / File(s) Summary
GitHub Actions Workflow Configuration
​.github/workflows/test.yml
Added version-pin-check job (checkout repo, sparse-checkout omni_home/standards/, set up Python 3.12, run omni_home/standards/check_version_pins.py --repo omnibase_core --root omni_home). Updated quality-gate job needs to include version-pin-check.

Sequence Diagram(s)

sequenceDiagram
  participant GH as "GitHub Actions"
  participant Runner as "Actions Runner"
  participant Repo as "Repository (omnibase_core)"
  participant OmniHome as "omni_home standards"
  participant Script as "check_version_pins.py"

  GH->>Runner: start `version-pin-check` job
  Runner->>Repo: checkout repository
  Runner->>OmniHome: sparse-checkout `standards/`
  Runner->>Runner: setup Python 3.12
  Runner->>Script: run `python omni_home/standards/check_version_pins.py --repo omnibase_core --root omni_home`
  Script->>OmniHome: read version standards
  Script->>Repo: scan dependency version pins
  Script-->>Runner: exit status (0 or non-zero)
  Runner-->>GH: report job result
  GH->>GH: include `version-pin-check` in `quality-gate` needs
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 I hop through YAML, sniffing pins so neat,
Standards in paw, I check every seat,
A tiny script run beneath moonlight,
Gates now wait for my careful bite,
🥕 CI hums softly — all tucked tight.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title clearly and concisely summarizes the main change: adding a version pin compliance check to CI/CD workflows.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch jonahgabriel/omn-4806-omnibase_core-wire-version-matrix-checker-into-ci
📝 Coding Plan
  • Generate coding plan for human review comments

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/test.yml (1)

652-693: ⚠️ Potential issue | 🔴 Critical

Quality Gate does not enforce version-pin-check result, allowing it to pass when the check fails.

version-pin-check is listed in the needs at line 652, but the gate logic (lines 680–693) never reads or checks needs.version-pin-check.result. With if: always(), the job runs regardless of upstream failures, so version-pin-check failures are silently ignored.

Suggested fix
           enum_gov="${{ needs.enum-governance.result }}"
           secrets="${{ needs.detect-secrets.result }}"
+          version_pin="${{ needs.version-pin-check.result }}"
@@
           echo "| Enum Governance | $enum_gov |" >> $GITHUB_STEP_SUMMARY
           echo "| Detect Secrets | $secrets |" >> $GITHUB_STEP_SUMMARY
+          echo "| Version Pin Compliance | $version_pin |" >> $GITHUB_STEP_SUMMARY
@@
              [[ "$docs" == "success" ]] && \
              [[ "$enum_gov" == "success" ]] && \
-             [[ "$secrets" == "success" ]]; then
+             [[ "$secrets" == "success" ]] && \
+             [[ "$version_pin" == "success" ]]; then
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/test.yml around lines 652 - 693, The Quality Gate
currently omits the version-pin-check result: add a variable (e.g.,
version_pin="${{ needs.version-pin-check.result }}"), echo it into the summary
table (a row like "| Version Pin Check | $version_pin |"), and include it in the
gate condition alongside the other checks (add && [[ "$version_pin" == "success"
]] to the if that evaluates all results) so failures in version-pin-check will
fail the gate.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/test.yml:
- Around line 617-624: The checkout step using actions/checkout@v6 for
repository OmniNode-ai/omni_home (path: omni_home, sparse-checkout: standards/)
should be pinned to a specific ref; add a ref: <commit-sha-or-tag> entry to that
checkout step so the actions/checkout invocation for omni_home always uses a
deterministic commit/tag rather than the upstream default branch.

---

Outside diff comments:
In @.github/workflows/test.yml:
- Around line 652-693: The Quality Gate currently omits the version-pin-check
result: add a variable (e.g., version_pin="${{ needs.version-pin-check.result
}}"), echo it into the summary table (a row like "| Version Pin Check |
$version_pin |"), and include it in the gate condition alongside the other
checks (add && [[ "$version_pin" == "success" ]] to the if that evaluates all
results) so failures in version-pin-check will fail the gate.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 26a7cce2-c646-486d-aa01-873b93c9008f

📥 Commits

Reviewing files that changed from the base of the PR and between ed2429c and 47ea365.

📒 Files selected for processing (1)
  • .github/workflows/test.yml

Comment thread .github/workflows/test.yml
jonahgabriel and others added 4 commits March 12, 2026 19:24
…ersion-pin-check

The Checkout omni_home standards step fails with 422 because omni_home is a
private repo and the default GITHUB_TOKEN does not have cross-repo read access.
Use CROSS_REPO_PAT (org-level secret available to all repos) to authenticate.
Add continue-on-error to omni_home checkout step and wrap script
execution in file-existence check. Until OMN-4803 merges the
check_version_pins.py script into omni_home main, the job emits
a warning and exits 0 instead of failing CI.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
.github/workflows/test.yml (1)

617-626: ⚠️ Potential issue | 🟠 Major

Pin omni_home checkout ref and reconsider continue-on-error placement.

Two concerns with this checkout step:

  1. Missing ref pin: The checkout fetches OmniNode-ai/omni_home without a pinned ref, making CI non-deterministic and vulnerable to upstream drift.

  2. continue-on-error: true masks failures: If the checkout fails (e.g., invalid PAT, network issue, repo access revoked), the step silently succeeds. The subsequent script-existence check (line 636) will then exit 0 with a misleading "script not found" warning, masking the real cause.

Consider pinning the ref and moving the error tolerance to the script execution step instead:

Suggested improvement
      - name: Checkout omni_home standards
        uses: actions/checkout@v6
-       continue-on-error: true
        with:
          repository: OmniNode-ai/omni_home
          token: ${{ secrets.CROSS_REPO_PAT }}
          path: omni_home
+         ref: main  # or pin to a specific SHA/tag for full reproducibility
          sparse-checkout: |
            standards/
          sparse-checkout-cone-mode: false

      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          python-version: "3.12"

      - name: Check version pin compliance
+       continue-on-error: true  # Tolerate missing script until OMN-4803 merges
        run: |
          SCRIPT="omni_home/standards/check_version_pins.py"
          if [ ! -f "$SCRIPT" ]; then
            echo "::warning::$SCRIPT not found (OMN-4803 not yet merged into omni_home main). Skipping."
            exit 0
          fi
          python "$SCRIPT" --repo omnibase_core --root omni_home

,

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/test.yml around lines 617 - 626, The checkout step labeled
"Checkout omni_home standards" must be pinned to a stable ref and should not
silently ignore failures: add a concrete ref (branch/tag/commit) to the
actions/checkout@v6 invocation (e.g., ref: 'main' or a specific tag/sha) and
remove continue-on-error: true from that step; instead, apply error tolerance to
the later "script-existence" check step (the step that verifies the presence of
the omni_home script) so that checkout failures surface as CI failures while
only the optional script-check gracefully handles a missing script.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/test.yml:
- Line 660: The quality-gate evaluation currently lists version-pin-check in the
job dependencies but doesn't capture its outcome, show it in the summary table,
or include it in the pass/fail condition; update the quality-gate job script to
(1) capture version-pin-check's outcome into a variable (e.g.,
version_pin_check_result) alongside the existing result variables, (2) append a
row for version-pin-check in the generated Markdown summary table, and (3)
include version_pin_check_result in the final pass/fail boolean expression that
decides the job outcome (or, if omission is intentional like node-purity-check,
add a clear comment explaining why version-pin-check is excluded).

---

Duplicate comments:
In @.github/workflows/test.yml:
- Around line 617-626: The checkout step labeled "Checkout omni_home standards"
must be pinned to a stable ref and should not silently ignore failures: add a
concrete ref (branch/tag/commit) to the actions/checkout@v6 invocation (e.g.,
ref: 'main' or a specific tag/sha) and remove continue-on-error: true from that
step; instead, apply error tolerance to the later "script-existence" check step
(the step that verifies the presence of the omni_home script) so that checkout
failures surface as CI failures while only the optional script-check gracefully
handles a missing script.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 660ccb28-72f9-4527-8bd8-1a20bb763d49

📥 Commits

Reviewing files that changed from the base of the PR and between 9c46129 and 1eb4a95.

📒 Files selected for processing (1)
  • .github/workflows/test.yml

Comment thread .github/workflows/test.yml
@jonahgabriel
jonahgabriel added this pull request to the merge queue Mar 13, 2026
@jonahgabriel
jonahgabriel removed this pull request from the merge queue due to a manual request Mar 13, 2026
@jonahgabriel
jonahgabriel merged commit 4480d67 into main Mar 13, 2026
45 of 65 checks passed
@jonahgabriel
jonahgabriel deleted the jonahgabriel/omn-4806-omnibase_core-wire-version-matrix-checker-into-ci branch March 13, 2026 16:34
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