Skip to content

fix(ci): sync stale strix.yml concurrency-format assertion with PR #1779 - #1788

Merged
seonghobae merged 2 commits into
mainfrom
fix/stale-strix-concurrency-format-assertion
Sep 3, 2026
Merged

fix(ci): sync stale strix.yml concurrency-format assertion with PR #1779#1788
seonghobae merged 2 commits into
mainfrom
fix/stale-strix-concurrency-format-assertion

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Summary

scripts/ci/test_strix_quick_gate.sh on main fails a required check (exact-head-path-policy) on every PR, regardless of that PR's own diff, with:

FAIL: strix workflow scopes active evidence per repository and event class (missing 'format('{0}-{1}', github.event_name, github.event.client_payload.target_repository ||')
FAIL: strix workflow isolates repository_dispatch evidence from pull-request evidence (missing 'format('{0}-{1}', github.event_name,')

Root cause

#1779 ("[QUEUE_SATURATION_CHICKEN_EGG] restore PR-scoped concurrency for strix.yml") deliberately changed .github/workflows/strix.yml's concurrency group: expression from the 2-argument format('{0}-{1}', github.event_name, github.event.client_payload.target_repository || ...) to the 3-argument format('{0}-{1}-{2}', github.event_name, github.event.client_payload.target_repository || ..., github.event.pull_request.number || ...), adding the PR number back into the group key to restore PR-scoped concurrency (fixing a queue-saturation chicken-egg problem) while keeping repository+event-class isolation.

The parallel Python contract in tests/test_required_workflow_queue_contract.py (assert block around the strix: job's concurrency_contract, lines ~387-396) was already correctly updated to expect the 3-argument form at the time #1779 merged. Only the bash-side contract in scripts/ci/test_strix_quick_gate.sh's assert_strix_workflow_pr_trigger_hardened() was left asserting the old 2-argument literal — the same class of defect PR #1750 fixes for a stale cron: "*/30 * * * *" assertion in this same file (both are "contract test not updated alongside an intentional, already-merged workflow change").

This is a genuine, reproducible defect on protected main itself — confirmed by running the script directly against main at ff332ea88f (the commit immediately preceding this branch) before making any change: it failed with the two messages above (plus the pre-existing, unrelated cron failure from #1630 that #1750 already addresses).

Fix

Updated the two stale assertions in assert_strix_workflow_pr_trigger_hardened() from the 2-argument format('{0}-{1}', ...) literal to the current 3-argument format('{0}-{1}-{2}', ...) literal, preserving each assertion's semantic intent and human-readable message unchanged. No other lines touched.

-	assert_file_contains "$workflow_file" "format('{0}-{1}', github.event_name, github.event.client_payload.target_repository ||" "strix workflow scopes active evidence per repository and event class"
+	assert_file_contains "$workflow_file" "format('{0}-{1}-{2}', github.event_name, github.event.client_payload.target_repository ||" "strix workflow scopes active evidence per repository and event class"
@@
-	assert_file_contains "$workflow_file" "format('{0}-{1}', github.event_name," "strix workflow isolates repository_dispatch evidence from pull-request evidence"
+	assert_file_contains "$workflow_file" "format('{0}-{1}-{2}', github.event_name," "strix workflow isolates repository_dispatch evidence from pull-request evidence"

Developer experience

  • bash scripts/ci/test_strix_quick_gate.sh (with STRIX_TEST_PROCESS_TIMEOUT_SECONDS=3 STRIX_TEST_FAKE_SLEEP_SECONDS=5, matching CI):
  • Full suite (Python 3.12, matching this repo's CI target): coverage run -m pytest tests -q2681 passed, 1 skipped, 21 subtests passed. coverage report --show-missing → 100% on scripts/ci/ (fail_under = 100). interrogateRESULT: PASSED (minimum: 100.0%, actual: 100.0%).
  • This is a bash-string-only fix with no Python production code touched, so the full-suite pass is a non-regression check; the direct before/after gate-script run against main is the evidence the fix itself works.
  • Diff scope: one file, two lines changed (scripts/ci/test_strix_quick_gate.sh), confirmed against current main after rebase.

User experience

exact-head-path-policy stops failing organization-wide PRs on these two assertions once this reaches protected main; any PR whose branch has already synced past this point (or syncs after) picks it up automatically. No workflow behavior change — strix.yml's actual concurrency grouping is untouched, only the test that verifies it is corrected to match.

Related


🤖 Generated with Claude Code

https://claude.ai/code/session_01BV96rXhqoR3tYZ9AeAVur4


Generated by Claude Code


Devin Review

Summary by CodeRabbit

  • 테스트
    • 자동화된 CI 검증이 최신 워크플로 구성에 맞게 업데이트되었습니다.
    • 이벤트 유형, 대상 저장소 및 ref 정보를 기준으로 검증 항목을 더욱 정확하게 확인합니다.
    • 이를 통해 변경 사항 검토와 배포 전 검증의 신뢰성이 향상됩니다.



PR #1779 changed strix.yml's concurrency group.format() expression from
the 2-argument form to the 3-argument form format('{0}-{1}-{2}', ...) to
restore PR-scoped concurrency (fixing a queue-saturation chicken-egg
problem) while keeping repository+event-class isolation. The bash
contract test scripts/ci/test_strix_quick_gate.sh was never updated to
match, so two assertions in assert_strix_workflow_pr_trigger_hardened()
kept checking for the old 2-argument format('{0}-{1}', ...) literal and
now fail on every PR regardless of that PR's own diff.

The parallel Python contract in
tests/test_required_workflow_queue_contract.py was already correctly
updated for the 3-argument form at the time of PR #1779 -- only the bash
side drifted, the same class of bug PR #1750 fixes for a stale cron
assertion in this same file.

Updated both stale assertions to the current 3-argument
format('{0}-{1}-{2}', ...) literal, preserving their semantic intent and
messages unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BV96rXhqoR3tYZ9AeAVur4
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: df5c7b18-d57b-4bde-9f21-0bbc159a6855

📥 Commits

Reviewing files that changed from the base of the PR and between 403da71 and 8e3e6f7.

📒 Files selected for processing (1)
  • scripts/ci/test_strix_quick_gate.sh

📝 Walkthrough

Walkthrough

Changes

Strix 빠른 게이트 검증

Layer / File(s) Summary
동시성 그룹 검증 갱신
scripts/ci/test_strix_quick_gate.sh
활성 증거와 repository_dispatch 증거의 동시성 그룹 검증을 2개 인자 형식에서 3개 인자 형식으로 갱신했습니다. 검증은 이벤트 유형, 대상 저장소, ref를 기준으로 증거 범위를 분리합니다.

Estimated code review effort: 1 (간단) | ~5분

Suggested reviewers: claude

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/stale-strix-concurrency-format-assertion

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.

@devin-ai-integration devin-ai-integration 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@seonghobae
seonghobae merged commit bc9c081 into main Sep 3, 2026
6 of 20 checks passed
@seonghobae
seonghobae deleted the fix/stale-strix-concurrency-format-assertion branch September 3, 2026 08:39
@github-project-automation github-project-automation Bot moved this from Todo to Done in naruon Platform Roadmap Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants