Skip to content

Fast-track CI: drop the dormant model-manager suite, refresh statuses after re-runs - #3077

Merged
PawelPeczek-Roboflow merged 4 commits into
mainfrom
fix/fast-track-ci-dormant-workflows
Sep 29, 2026
Merged

PawelPeczek-Roboflow merged 4 commits into
mainfrom
fix/fast-track-ci-dormant-workflows

Conversation

@PawelPeczek-Roboflow

@PawelPeczek-Roboflow PawelPeczek-Roboflow commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

What does this PR do?

Two fixes to the fast-track CI orchestrator (fast_track_ci.yml), found on the first real fast-track cycle (#3076):

1. Stop dispatching a workflow that is dormant everywhere except feat/new-model-manager. unit_tests_inference_model_manager_and_server.yml is path-filtered to inference_model_manager/** and inference_server/**, which exist only on that branch (#2251); it has never run on main. workflow_dispatch ignores path filters, so the orchestrator dispatched it on every fast-track branch and it died at install with Distribution not found at: …/inference_model_manager (3 of 3 fast-track dispatches: two on post-v1.6.2-pt2, one on post-v1.7.2-pt1, e.g. https://github.com/roboflow/inference/actions/runs/36472734041). Fix: remove it from TEST_WORKFLOWS, with a comment saying why and when to put it back (when #2251 lands the packages on main). An earlier revision of this PR detected dormancy from each workflow's path filter at dispatch time; that was replaced by this plain removal (third commit).

2. Refresh statuses after a re-run. The orchestrator writes each fast-track-ci / <workflow> status once, from the attempt it waited for. A maintainer re-run completes outside it, so integration_tests_workflows_x86 stayed red on #3076 after its re-run went green (https://github.com/roboflow/inference/actions/runs/36472764699, attempt 1 failed 19:42 UTC, attempt 2 passed 20:01 UTC). New fast_track_ci_status_sync.yml listens with workflow_run on the same 12 workflows and, for run_attempt > 1 of a workflow_dispatch run on a fast-track/post-v* branch, rewrites the status from that attempt. It only refreshes a status the orchestrator created, has statuses: write only, and never checks anything out.

Related: #3053 (fast-track CI), #2669 (the dormant workflow, "dormant until packages land on main"), #2251.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)

Testing

  • actionlint clean on both files (style-only shellcheck note SC2016 as elsewhere in the repo); .github/scripts/check_workflow_concurrency.py OK.
  • fast_track_ci.yml differs from main only by the removed list entry and two comments.
  • Not exercised end to end: the workflow_run listener firing on a re-run attempt. To be confirmed on the next maintainer re-run of a fast-track suite; it is inert otherwise (run_attempt > 1 guard).

Test details: the workflow_run workflows: list matches by workflow name and must be kept in sync with TEST_WORKFLOWS in fast_track_ci.yml (12 entries in both).

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code where necessary, particularly in hard-to-understand areas
  • My changes generate no new warnings or errors
  • I have updated the documentation accordingly (if applicable)

🤖 Generated with Claude Code

The orchestrator dispatched unit_tests_inference_model_manager_and_server.yml
on every fast-track branch. That workflow is path-filtered to
inference_model_manager/** and inference_server/**, which exist only on
feat/new-model-manager, so it never runs on main, but workflow_dispatch
ignores path filters and the run died at install with "Distribution not
found at: .../inference_model_manager" (3 of 3 fast-track dispatches).

Before dispatching, read each workflow's pull_request path filter as it is
on the branch and skip the workflow when every literal root of the filter
is absent there: a PR to main would never have started it. The skip is
reported as a success status and a summary row naming the absent roots.
Workflows without a path filter, with a root-level pattern, or with at
least one root present are dispatched as before.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The orchestrator writes each fast-track-ci / <workflow> status once, from
the attempt it waited for. A maintainer re-run of a failed suite completes
outside the orchestrator, so a suite that went green on re-run kept a red
status on the umbrella PR (integration_tests_workflows_x86 on #3076).

Add a workflow_run listener on the same test workflows that, for a re-run
attempt (run_attempt > 1) of a workflow_dispatch run on a fast-track branch,
rewrites the status from that attempt. It only touches a status the
orchestrator created and never checks out branch code.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

👋 Thanks for the pull request! Here is how automated Claude review works here, so you spend credits (and reviewer time) wisely.

🚦 This PR is marked Ready for review, so automated Claude review will run — and every pass spends real credits.

Warning

💸 The Claude reviewer bills in credits, not vibes

Automated review spins up a real agent that reads real code and spends real credits on every pass. It is glad to help — but it is not a rubber duck, a linter you poke in a loop, or a substitute for reading the contributing guide. Treat it like an expensive senior reviewer whose time you booked, and show up prepared.

Draft when unsure, Ready when you mean it:

  • 🌱 Not sure the PR is in good shape yet? Keep it (or set it back) as a draft — drafts pause review, so you can push and iterate without burning credits on a moving target.
  • 💪 Feel strong about the contents? Mark it Ready for review and the reviewer will take a look.

However you get there, arrive prepared:

  • 🧱 Bring a SOLID, thorough PR. Point your local agent at our skills/ to tune it to our guidelines first — or, if you are one of those fabled carbon-based contributors, read them yourself. A half-baked diff costs exactly the same to review as a finished one.
  • ✅ Resolve every comment before you re-request review. Re-requesting with threads still open means paying twice for the same conversation.
  • 🔁 Do not use CI review as an inner loop for a local agent. The reviewer is not a step-by-step debugger — do the unfolding locally and arrive with the answer, not the search.
  • 🙋 If something looks off, ask a human. One question to a maintainer is cheaper and faster than three rounds of agent re-review chasing a misread.

Reviews are not free. A draft costs nothing to review; a Ready PR is a promise that it is worth reviewing.

  • Prefer to skip automated review entirely? Add the skip-claude-review label.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Claude review started at commit d78dba11f3693d3c441cdc8ddfb46ed03eaf4797.

New commits are not auto-reviewed. Add the claude-review label to request a re-review — the label is consumed when the review starts, so just add it again next time.

@github-actions

Copy link
Copy Markdown
Contributor

Review summary — Skills: review-packaging-ci (surface), review-topic-test-hygiene (topic).

Two CI-orchestrator fixes to fast_track_ci.yml + new fast_track_ci_status_sync.yml. Traced both against the runtime behavior:

  • Dormant-skip: path_filter_roots / dormant_paths correctly extract literal roots of on.pull_request.paths (handling PyYAML's on:→True key, ! negations, glob-root truncation, and root-level ** → dispatch). A workflow is skipped only when every root is absent on the branch (conservative); it never fails the run and its success status is never later touched. set -e is safely suppressed inside the if absent=$(...) context. The embedded python3 -c lands at column 0 after YAML block-scalar dedent (base indent = 10 spaces) — no IndentationError.
  • Status sync: new workflow has least-privilege permissions: statuses: write, a concurrency group keyed on workflow_run.id, and timeout-minutes. All github.event.* values flow through env: (no injection); no checkout/branch code runs. The event==workflow_dispatch + run_attempt>1 + startsWith(head_branch,'fast-track/post-v') guards plus the "existing status" check correctly limit it to refreshing statuses the orchestrator created. Verified all 13 workflow_run.workflows entries match the target workflows' actual name: fields exactly; context fast-track-ci / <basename> matches the orchestrator's.

No user/dev-visible package contract changes → no changelog/version notice required (CI infra only).

minor doubts (non-blocking): the new import yaml / pip install pyyaml preflight would hard-fail the orchestrator only if PyYAML is unimportable and both installs fail (network-down) — improbable on GitHub runners; the workflow_run listener is inert until a real re-run, so it is only statically verified.

Reviewed at HEAD: d78dba1

@github-actions

Copy link
Copy Markdown
Contributor

😎 PR passes the vibe-check and trust-me-bro verification.

…ing dormancy

Replace the path-filter dormancy check with the plain fix: remove
unit_tests_inference_model_manager_and_server.yml from TEST_WORKFLOWS, with a
comment saying why and when to put it back (once inference_model_manager/ and
inference_server/ land on main, #2251). The status-sync listener drops the
same workflow name so the two lists stay aligned.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@PawelPeczek-Roboflow PawelPeczek-Roboflow changed the title Fast-track CI: skip dormant path-filtered workflows, refresh statuses after re-runs Fast-track CI: drop the dormant model-manager suite, refresh statuses after re-runs Sep 29, 2026
@PawelPeczek-Roboflow PawelPeczek-Roboflow added the claude-review Use to trigger AI review manually label Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🤖 Claude review started at commit 8ce6e76cbd895f3847fbe8d3eb26b53e3eaf788e.

New commits are not auto-reviewed. Add the claude-review label to request a re-review — the label is consumed when the review starts, so just add it again next time.

@github-actions github-actions Bot removed the claude-review Use to trigger AI review manually label Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Review summary — Skills: review-packaging-ci (surface), review-topic-test-hygiene (topic).

Re-review of the delta since the last pass (d78dba1): commit 3058195 replaced the Python path-filter dormancy detection with a plain removal of unit_tests_inference_model_manager_and_server.yml from TEST_WORKFLOWS, plus a main merge (8ce6e76). Strictly simpler than the revision already reviewed.

Verified against the code:

  • TEST_WORKFLOWS = 12 entries; the dormant model-manager suite is gone (it path-filters to inference_model_manager/**/inference_server/**, absent on release-cut branches, and workflow_dispatch ignores paths:, so it only ever died at install).
  • All 12 workflow_run.workflows: entries in fast_track_ci_status_sync.yml match the target workflows' actual name: fields exactly, and the model-manager name was dropped in lock-step — both lists stay at 12.
  • Status context fast-track-ci / <basename> matches the orchestrator's fast-track-ci / ${wf%.yml}.
  • New workflow: least-privilege permissions: statuses: write, timeout-minutes, concurrency on workflow_run.id; all github.event.* flow through env: (no injection); no checkout. Guards (workflow_dispatch + run_attempt>1 + startsWith(head_branch,'fast-track/post-v') + existing-status check) limit it to refreshing statuses the orchestrator created, on the same head SHA.

CI infra only — no user/dev-visible package contract change, so no changelog/version notice required.

Reviewed at HEAD: 8ce6e76

@github-actions

Copy link
Copy Markdown
Contributor

😎 PR passes the vibe-check and trust-me-bro verification.

@github-actions

Copy link
Copy Markdown
Contributor

Maintainer review discussion: Slack thread.

Final approval and merge remain in GitHub.

@PawelPeczek-Roboflow
PawelPeczek-Roboflow merged commit 77caa2c into main Sep 29, 2026
80 of 84 checks passed
@PawelPeczek-Roboflow
PawelPeczek-Roboflow deleted the fix/fast-track-ci-dormant-workflows branch September 29, 2026 10:09
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.

2 participants