Problem
Sync PRs are categorically more dangerous than feature PRs (recent: #2398 = 751 commits, #2400 = 2,522 commits). They warrant a different CI tier — heavier checks that would be too costly for normal feature PRs. Currently, all PRs receive the same CI treatment, which forces a trade-off: either burden every PR or tolerate gaps for sync PRs.
Solution
New GitHub Actions workflow .github/workflows/sync-pr-audit.yml triggered when PR title matches ^sync: upstream to v (existing project convention for sync PRs).
The workflow runs heavier checks ONLY on this PR class:
Result is a single composite check on the PR that summarizes all sync-specific concerns in one place.
Acceptance criteria
Effort
0.5 day after #2435, #2436, #2437 land.
Risk
PR title heuristic could be bypassed (sync PR not titled with the convention). Mitigation: the underlying gates (#2435, #2436, #2437) remain UNIVERSAL — this workflow only adds verbose reporting and optional checks tailored to sync PRs, not security-critical gates. Bypassing the title only loses verbose reporting, not the underlying enforcement.
Dependencies
Blocked by: #2435, #2436, #2437 (this issue is the orchestrator; standalone value is near-zero before they land)
Tracked under: #2433
References
Problem
Sync PRs are categorically more dangerous than feature PRs (recent: #2398 = 751 commits, #2400 = 2,522 commits). They warrant a different CI tier — heavier checks that would be too costly for normal feature PRs. Currently, all PRs receive the same CI treatment, which forces a trade-off: either burden every PR or tolerate gaps for sync PRs.
Solution
New GitHub Actions workflow
.github/workflows/sync-pr-audit.ymltriggered when PR title matches^sync: upstream to v(existing project convention for sync PRs).The workflow runs heavier checks ONLY on this PR class:
: nevercalibration signal (H7) #2435) — already universal but re-asserted with verbose logging tailored to sync-PR contextscripts/check-attestations.mjs --diffto surface attestation changes prominentlyResult is a single composite check on the PR that summarizes all sync-specific concerns in one place.
Acceptance criteria
.github/workflows/sync-pr-audit.ymlcreatedpull_request.titlematches^sync: upstream to vEffort
0.5 day after #2435, #2436, #2437 land.
Risk
PR title heuristic could be bypassed (sync PR not titled with the convention). Mitigation: the underlying gates (#2435, #2436, #2437) remain UNIVERSAL — this workflow only adds verbose reporting and optional checks tailored to sync PRs, not security-critical gates. Bypassing the title only loses verbose reporting, not the underlying enforcement.
Dependencies
Blocked by: #2435, #2436, #2437 (this issue is the orchestrator; standalone value is near-zero before they land)
Tracked under: #2433
References
: nevercalibration signal (H7) #2435, ci(fork-sync): fork-boundary mock baseline in check-stub-debt.mjs (H8) #2436, ci(fork-sync): MODULE_ATTESTATIONS manifest for src/agents/* (Option 6) #2437