Skip to content

ci: add main CI checks staging-release promotion - #5639

Open
think-in-universe wants to merge 9 commits into
mainfrom
codex/sync-main-to-staging-on-green
Open

think-in-universe wants to merge 9 commits into
mainfrom
codex/sync-main-to-staging-on-green

Conversation

@think-in-universe

@think-in-universe think-in-universe commented Jul 4, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Replace the former standalone staging-sync workflow with a combined Main CI Checks workflow.
  • Keep Slack alerts for failed push-to-main CI workflows via MAIN_CI_SLACK_WEBHOOK_URLS.
  • Fast-forward staging-release to a green main commit after required push-to-main CI workflows pass for that SHA.
  • Preserve fast-forward-only behavior: the workflow skips when staging-release already contains the SHA and fails rather than overwriting staging-release-only commits.

Change Type

  • Bug fix
  • New feature
  • Refactor
  • Documentation
  • CI/Infrastructure
  • Security
  • Dependencies

Linked Issue

None.

Validation

  • Created origin/staging-release from current origin/main with a normal push.
  • Parsed .github/workflows/main-ci-checks.yml as YAML locally.
  • Checked embedded shell snippets with bash -n.
  • Ran git diff --check for the workflow changes.
  • actionlint was not available locally.

Security Impact

This workflow uses the dedicated MAIN_CI_SLACK_WEBHOOK_URLS secret for Slack alert delivery and does not print webhook values. The staging-release promotion job grants contents: write only to the job that updates refs/heads/staging-release, and it performs a normal non-force push. It does not run untrusted PR code; it reacts to completed push-to-main workflow runs.

Reborn Trust-Boundary Checklist

N/A: GitHub Actions automation only; no Reborn runtime, trust-bearing type, prompt ingress, policy, sandbox, DB, or host-boundary behavior is changed.

Database Impact

None.

Blast Radius

Touches GitHub Actions automation for main CI alerting and branch promotion from main to staging-release. Possible breakage is limited to Slack alert delivery and the workflow's ability to fast-forward the staging-release ref.

Rollback Plan

Revert this PR to restore the Slack-only main CI alert workflow and remove automatic staging-release promotion. If promotion must be paused without reverting, protect staging-release against direct pushes or disable the Main CI Checks workflow.

Review Follow-Through

Reviewer should confirm the required workflow list and whether staging-release should stay fast-forward-only from main.


Review track: C (CI)

Note: This workflow targets staging-release (not staging) for automated main→staging release fast-forwarding.

Copilot AI review requested due to automatic review settings July 4, 2026 17:38
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5639 July 4, 2026 17:38 Destroyed
@github-actions github-actions Bot added scope: ci CI/CD workflows size: L 200-499 changed lines risk: medium Business logic, config, or moderate-risk modules contributor: core 20+ merged PRs labels Jul 4, 2026
@coderabbitai

coderabbitai Bot commented Jul 4, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 80957a3d-0a2c-40af-b6d3-d1408b7ef79a

📥 Commits

Reviewing files that changed from the base of the PR and between 1c7c411 and ed9a15f.

📒 Files selected for processing (1)
  • .github/workflows/main-ci-checks.yml

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added automated Slack alerts when main-branch CI workflows fail, time out, require action, or encounter startup issues.
    • Added automatic fast-forward promotion of successful main-branch changes to the staging release after required checks complete.
    • Promotion is safeguarded to prevent overwriting diverged staging changes and won’t update when already up to date.
  • Documentation

    • Updated workflow guidance to describe the new “Main CI checks” monitoring and staging promotion behavior, including how to add new workflows to the allowlist.

Walkthrough

Adds main-ci-checks.yml to alert on failed main-branch workflows and fast-forward staging-release after required push-to-main workflows succeed. Updates workflow documentation with the monitoring and promotion behavior.

Changes

Main CI checks and staging promotion

Layer / File(s) Summary
Workflow monitoring and Slack alerting
.github/workflows/main-ci-checks.yml
Monitors configured workflow completions, gathers up to 12 failed-like jobs through the GitHub API, and posts failure details to configured Slack webhooks.
Required-check gating and staging promotion
.github/workflows/main-ci-checks.yml
Checks required and optional workflow runs for the upstream SHA, retries missing or pending required checks, and fast-forwards staging-release with ancestor safeguards when all required checks succeed.
Workflow documentation
.github/workflows/README.md
Documents monitored workflows, staging promotion behavior, path-filter handling, and the requirement to update main-ci-checks.yml when adding workflows.

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

Sequence Diagram(s)

sequenceDiagram
  participant MainWorkflow
  participant MainCIChecks
  participant GitHubAPI
  participant Slack
  participant GitRepository
  MainWorkflow->>MainCIChecks: completed workflow_run on main
  MainCIChecks->>GitHubAPI: inspect jobs and workflow runs
  GitHubAPI-->>MainCIChecks: failure details and workflow statuses
  MainCIChecks->>Slack: post failure alert when applicable
  MainCIChecks->>GitRepository: fast-forward staging-release after required checks succeed
Loading

Possibly related PRs

  • nearai/ironclaw#5863: Reimplements related workflow_run-based Slack alerting for failed push-to-main CI runs.

Suggested reviewers: hanakannzashi

🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The template is mostly complete, but a New feature PR must link an approved issue and the Linked Issue section says None. Add the approved issue reference in Linked Issue, or remove New feature if this PR is not introducing one.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title uses Conventional Commits style and accurately summarizes the CI checks and staging-release promotion changes.
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.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copilot AI 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.

Pull request overview

Adds a new GitHub Actions workflow to promote main → staging by fast-forwarding staging only when the latest main commit has a fully green status-check rollup, and refusing to sync if staging has diverged.

Changes:

  • Introduces a scheduled / workflow_run-triggered Sync main to staging workflow.
  • Adds a guard job that queries GitHub’s statusCheckRollup to ensure the current main HEAD is green before syncing.
  • Fast-forwards staging via GitHub API (no merge commits; refuses if staging has staging-only commits).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +24 to +26
permissions:
contents: write

Comment on lines +174 to +179
sync-staging:
name: Fast-forward staging
needs: check-main
if: needs.check-main.outputs.green == 'true'
runs-on: ubuntu-latest
steps:
Comment on lines +192 to +194
git fetch origin main staging

if git merge-base --is-ancestor "origin/main" "origin/staging"; then

@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

🤖 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/sync-main-to-staging.yml:
- Around line 192-208: The ancestry checks in the sync-main-to-staging workflow
are using the moving `origin/main` ref, which can drift after `check-main` has
selected the commit to apply. Update the merge-base guards in the sync step to
compare against `MAIN_SHA` consistently, so the safety check and the later `gh
api` PATCH both use the same fixed commit. This keeps the fast-forward decision
aligned with the exact SHA being promoted and avoids rejecting a valid sync when
main advances.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b2873a15-8dc8-4df1-a370-56221d6bf5d0

📥 Commits

Reviewing files that changed from the base of the PR and between 2603114 and b4dd4fd.

📒 Files selected for processing (1)
  • .github/workflows/sync-main-to-staging.yml

Comment on lines +192 to +208
git fetch origin main staging

if git merge-base --is-ancestor "origin/main" "origin/staging"; then
echo "::notice::staging already contains main ${MAIN_SHA}; nothing to sync."
exit 0
fi

if ! git merge-base --is-ancestor "origin/staging" "origin/main"; then
echo "::error::staging has commits that are not in main; refusing to overwrite or merge automatically."
exit 1
fi

gh api \
-X PATCH \
"repos/${GITHUB_REPOSITORY}/git/refs/heads/staging" \
-f "sha=${MAIN_SHA}" \
-F "force=false" >/dev/null

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Map the workflow and inspect the relevant sections with line numbers.
file=".github/workflows/sync-main-to-staging.yml"
wc -l "$file"
sed -n '1,260p' "$file" | cat -n

Repository: nearai/ironclaw

Length of output: 8642


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate repository review-rule files and any workflow-specific guidance.
git ls-files | rg '(^|/)(CLAUDE\.md|AGENTS\.md|\.claude/|rules)' || true

# If present, show the relevant guidance files.
for f in CLAUDE.md AGENTS.md .claude/rules.md .claude/rules/*.md; do
  if [[ -f "$f" ]]; then
    echo "===== $f ====="
    sed -n '1,220p' "$f"
  fi
done

Repository: nearai/ironclaw

Length of output: 50374


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the workflow file for any nearby references to the target ref/update logic.
sed -n '174,210p' .github/workflows/sync-main-to-staging.yml | cat -n

Repository: nearai/ironclaw

Length of output: 1662


Use MAIN_SHA for both merge-base guards. sync-staging re-fetches origin/main after check-main has already captured the commit to apply, so the branch tip can move between jobs. That makes the ancestry check and the PATCH target diverge; a safe fast-forward to MAIN_SHA can be rejected because origin/main advanced.

🤖 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/sync-main-to-staging.yml around lines 192 - 208, The
ancestry checks in the sync-main-to-staging workflow are using the moving
`origin/main` ref, which can drift after `check-main` has selected the commit to
apply. Update the merge-base guards in the sync step to compare against
`MAIN_SHA` consistently, so the safety check and the later `gh api` PATCH both
use the same fixed commit. This keeps the fast-forward decision aligned with the
exact SHA being promoted and avoids rejecting a valid sync when main advances.

@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

⚠️ 3 Reborn crate(s) have 0 int-tier coverage (target: 0) — ironclaw_reborn_identity, ironclaw_reborn_traces, ironclaw_webui_v2

Reborn integration-tier coverage

Line coverage (Reborn crates): 17.19% — 11063 / 64362 lines

Per-crate breakdown (11 crates, lowest-covered first)
Crate Line % Covered / Total
ironclaw_reborn_identity 0% 0 / 230
ironclaw_reborn_traces 0% 0 / 6769
ironclaw_webui_v2 0% 0 / 2785
ironclaw_reborn_event_store 0.73% 6 / 825
ironclaw_reborn_config 1.31% 15 / 1142
ironclaw_product_adapter_registry 5.12% 25 / 488
ironclaw_product_workflow 7.23% 716 / 9905
ironclaw_product_adapters 12.55% 283 / 2255
ironclaw_reborn 23.44% 2041 / 8707
ironclaw_reborn_composition 25.5% 7966 / 31242
ironclaw_product_context 78.57% 11 / 14

This signal is informational: coverage never gates the PR — not the percentage, not the per-crate holes, not the 0-coverage callout.

@railway-app

railway-app Bot commented Jul 4, 2026 •

Copy link
Copy Markdown

🚅 Deployed to the ironclaw-pr-5639 environment in ironclaw-ci-preview

Service Status Web Updated (UTC)
ironclaw ✅ Success (View Logs) Web Jul 12, 2026 at 5:18 pm

Copilot AI review requested due to automatic review settings July 10, 2026 18:07
@ironloopai

ironloopai Bot commented Jul 10, 2026 •

Copy link
Copy Markdown
Contributor

🔎 IronLoop Review Status

Head: 7ace70ad205acdd1a526b8cec01a266dfffd53e0
Result: No reviewer jobs are scheduled yet.
Next: Run @ironloopai review to start reviewers.
Updated: 2026-07-10T18:25:41.250Z

Current reviewers:

Reviewer State Verdict Findings Last update
none Queued N/A No reviewer jobs scheduled yet. N/A
Reviewer summaries
Reviewer Detail
none No reviewer jobs scheduled yet.
Recent activity
Time Reviewer State Detail
N/A N/A Waiting No progress events recorded yet.
Available commands
  • @ironloopai help
  • @ironloopai agents
  • @ironloopai review
  • @ironloopai review --agent <agent>
  • @ironloopai status
Run metadata

Admission: webhook accepted the request and IronLoop persisted reviewer state before this projection.

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5639 July 10, 2026 18:07 Destroyed
@github-actions github-actions Bot added the scope: docs Documentation label Jul 10, 2026
@think-in-universe think-in-universe changed the title ci: sync green main to staging ci: add main CI checks staging-release promotion Jul 10, 2026
@think-in-universe

Copy link
Copy Markdown
Collaborator Author

@claude review

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

Comment on lines +226 to +228
run: |
set -euo pipefail
git push origin "HEAD:refs/heads/${STAGING_BRANCH}"
Comment thread .github/workflows/main-ci-checks.yml
Comment thread .github/workflows/README.md Outdated
Comment on lines +121 to +123
staging-release update is a normal `git push` to
`refs/heads/staging-release`, so it fails instead of forcing when
`staging-release` is not a fast-forward from `main`.
@claude

claude Bot commented Jul 10, 2026

Copy link
Copy Markdown

Code Review: PR #5639

Found 5 issues:

HIGH SEVERITY

  1. [HIGH:100] Missing error suppression on `gh run list` API calls (Line 158-166)

  2. [HIGH:75] Loose coupling between workflow trigger list and validation array

  3. [HIGH:75] Workflow timeout risk from sequential Slack webhooks (Line 92-98)

    • With 5 webhooks @ 30-second timeout each, alert job could run 2.5+ minutes. Acceptable for async Slack notifications but consider batching or async posting in future.

MEDIUM SEVERITY

  1. [MEDIUM:MEDIUM] Array formatting issue in error output (Line 199)

  2. [MEDIUM:75] Conditional step chaining with implicit dependencies (Lines 218-228)

    • If "Checkout main commit" fails, "Fast-forward staging-release" silently skips without explicit error logging.
    • Add explicit error handling or logging for clarity.

Recommendations

No security vulnerabilities found. Permission scoping is correct (global read-only, job-specific write). Fast-forward-only git behavior preserves branch safety. Secrets handling is secure.

Copilot AI review requested due to automatic review settings July 10, 2026 18:22
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5639 July 10, 2026 18:22 Destroyed
Copilot AI review requested due to automatic review settings July 10, 2026 18: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: 2

🤖 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/main-ci-checks.yml:
- Around line 230-238: Reorder the checks in the workflow so the divergence
validation runs before the “already contains main” early exit. In the merge-base
logic around the `HEAD_SHA` and `origin/${STAGING_BRANCH}` checks, first reject
staging commits absent from `origin/main`, then report success only when staging
contains the promoted main commit.

In @.github/workflows/README.md:
- Around line 121-124: Update the staging-release promotion documentation to
scope the “fails only” statement specifically to the ancestry guard, while also
noting that required CI, pending runs, push permissions, and concurrent updates
may independently block or fail the workflow. Preserve the existing SHA-skip and
non-ancestor behavior description.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 5982226d-2319-4462-94e6-3bb586650c8c

📥 Commits

Reviewing files that changed from the base of the PR and between 5d9f290 and afb549d.

📒 Files selected for processing (2)
  • .github/workflows/README.md
  • .github/workflows/main-ci-checks.yml

Comment thread .github/workflows/main-ci-checks.yml Outdated
Comment on lines +230 to +238
if git merge-base --is-ancestor "$HEAD_SHA" "origin/${STAGING_BRANCH}"; then
echo "::notice::${STAGING_BRANCH} already contains main ${HEAD_SHA}; nothing to sync."
exit 0
fi

if ! git merge-base --is-ancestor "origin/${STAGING_BRANCH}" "origin/main"; then
echo "::error::${STAGING_BRANCH} has commits that are not in main; refusing to overwrite or merge automatically."
exit 1
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Check divergence before treating staging as already promoted.

Line 230 also succeeds for HEAD_SHA -> staging-only commit, returning before Lines 235-238 can reject divergence. This violates the documented requirement to fail when staging-release contains commits absent from main.

Proposed fix
-          if git merge-base --is-ancestor "$HEAD_SHA" "origin/${STAGING_BRANCH}"; then
-            echo "::notice::${STAGING_BRANCH} already contains main ${HEAD_SHA}; nothing to sync."
-            exit 0
-          fi
-
           if ! git merge-base --is-ancestor "origin/${STAGING_BRANCH}" "origin/main"; then
             echo "::error::${STAGING_BRANCH} has commits that are not in main; refusing to overwrite or merge automatically."
             exit 1
           fi
+
+          if git merge-base --is-ancestor "$HEAD_SHA" "origin/${STAGING_BRANCH}"; then
+            echo "::notice::${STAGING_BRANCH} already contains main ${HEAD_SHA}; nothing to sync."
+            exit 0
+          fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if git merge-base --is-ancestor "$HEAD_SHA" "origin/${STAGING_BRANCH}"; then
echo "::notice::${STAGING_BRANCH} already contains main ${HEAD_SHA}; nothing to sync."
exit 0
fi
if ! git merge-base --is-ancestor "origin/${STAGING_BRANCH}" "origin/main"; then
echo "::error::${STAGING_BRANCH} has commits that are not in main; refusing to overwrite or merge automatically."
exit 1
fi
if ! git merge-base --is-ancestor "origin/${STAGING_BRANCH}" "origin/main"; then
echo "::error::${STAGING_BRANCH} has commits that are not in main; refusing to overwrite or merge automatically."
exit 1
fi
if git merge-base --is-ancestor "$HEAD_SHA" "origin/${STAGING_BRANCH}"; then
echo "::notice::${STAGING_BRANCH} already contains main ${HEAD_SHA}; nothing to sync."
exit 0
fi
🤖 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/main-ci-checks.yml around lines 230 - 238, Reorder the
checks in the workflow so the divergence validation runs before the “already
contains main” early exit. In the merge-base logic around the `HEAD_SHA` and
`origin/${STAGING_BRANCH}` checks, first reject staging commits absent from
`origin/main`, then report success only when staging contains the promoted main
commit.

Comment thread .github/workflows/README.md Outdated

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/main-ci-checks.yml Outdated
Comment on lines +204 to +213
if [ "${#missing[@]}" -gt 0 ] || [ "${#pending[@]}" -gt 0 ]; then
echo "ready=false" >> "$GITHUB_OUTPUT"
if [ "${#missing[@]}" -gt 0 ]; then
printf 'Required workflow has not appeared yet: %s\n' "${missing[@]}"
fi
if [ "${#pending[@]}" -gt 0 ]; then
printf 'Workflow is still pending: %s\n' "${pending[@]}"
fi
exit 0
fi
Copilot AI review requested due to automatic review settings July 12, 2026 01:49
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5639 July 12, 2026 01:49 Destroyed
@think-in-universe

Copy link
Copy Markdown
Collaborator Author

I pushed fixes for the open actionable review items in this PR on commit f1df91f6b.

What changed:

  • In .github/workflows/main-ci-checks.yml:
    • Added resilient gh run list lookup with warning fallback instead of hard-failing on API errors.
    • Added bounded retry loop (3 attempts, 30s) for missing/pending required workflows to reduce false negatives from eventual consistency.
    • Made failed-workflow output explicitly iterate through all failed workflows.
    • Reordered fast-forward checks so non-ancestor divergence check runs before the "already contains SHA" fast path.
    • Added a note to keep the workflow_run watched list aligned with required/optional workflow arrays.
  • In .github/workflows/README.md:
    • Clarified staging-release promotion failure modes so it no longer claims it fails only on ancestry checks.

If you want, I can follow up with one short comment per unresolved thread and explicitly cite the exact file/line changes.

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/main-ci-checks.yml
Comment thread .github/workflows/main-ci-checks.yml
Comment thread .github/workflows/main-ci-checks.yml
Copilot AI review requested due to automatic review settings July 12, 2026 02:09
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5639 July 12, 2026 02:09 Destroyed

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/main-ci-checks.yml Outdated

@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

🤖 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/main-ci-checks.yml:
- Around line 110-113: Remove the github.event.workflow_run.name == 'Code Style'
condition from the job-level if expression in the workflow, while retaining the
push-event and successful-conclusion checks. Rely on the existing concurrency
group and SHA validation to prevent duplicate processing.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c83cedd1-cd30-4028-9adf-1a27ecff1e42

📥 Commits

Reviewing files that changed from the base of the PR and between f1df91f and c7d16df.

📒 Files selected for processing (1)
  • .github/workflows/main-ci-checks.yml

Comment thread .github/workflows/main-ci-checks.yml Outdated
@think-in-universe think-in-universe added the skip-regression-check Bypass regression test CI gate (tests exist but not in tests/ dir) label Jul 12, 2026
Copilot AI review requested due to automatic review settings July 12, 2026 17:09
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5639 July 12, 2026 17:09 Destroyed

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

Caution

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

⚠️ Outside diff range comments (1)
.github/workflows/main-ci-checks.yml (1)

160-172: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Do not treat workflow-query failures as skipped optional checks.

When gh run list fails, this replaces the result with {}. Lines 177-182 then classify every optional query failure as “did not run,” allowing promotion without confirming that the optional workflow passed. Track query failures as pending/retryable for both required and optional workflows instead.

Proposed fix
             if ! run_json="$(gh run list \
               --repo "$GITHUB_REPOSITORY" \
               --workflow "$workflow" \
               --branch main \
               --event push \
               --commit "$HEAD_SHA" \
               --limit 1 \
               --json conclusion,status,url \
               --jq '.[0] // {}' \
               2>/dev/null)"; then
               echo "::warning::Failed to query workflow status for ${workflow}; treating as missing."
-              run_json='{}'
+              pending+=("${workflow} (status query failed)")
+              return
             fi
🤖 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/main-ci-checks.yml around lines 160 - 172, Update the
workflow-status polling logic around the gh run list query and its run_json='{}'
fallback so query failures are tracked as pending/retryable rather than
classified as missing or skipped. Ensure this behavior applies equally to
required and optional workflows, preventing promotion until each query succeeds
and confirms the workflow result.
🤖 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.

Outside diff comments:
In @.github/workflows/main-ci-checks.yml:
- Around line 160-172: Update the workflow-status polling logic around the gh
run list query and its run_json='{}' fallback so query failures are tracked as
pending/retryable rather than classified as missing or skipped. Ensure this
behavior applies equally to required and optional workflows, preventing
promotion until each query succeeds and confirms the workflow result.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a2bf1e21-535d-4354-8e73-896cc9e8d2af

📥 Commits

Reviewing files that changed from the base of the PR and between c7d16df and 1c7c411.

📒 Files selected for processing (1)
  • .github/workflows/main-ci-checks.yml

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/main-ci-checks.yml

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

This branch was successfully deployed

1 active deployment
ironclaw-ci-preview / ironclaw-pr-5639 — ed9a15f5 Deployed Jul 12, 2026 by railway-app[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: medium Business logic, config, or moderate-risk modules scope: ci CI/CD workflows scope: docs Documentation size: L 200-499 changed lines skip-regression-check Bypass regression test CI gate (tests exist but not in tests/ dir)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants