ci: make the exact package candidate the sole push-to-main gate (#74) - #97
Merged
Merged
Conversation
Drop the pull_request and merge_group triggers so the candidate runs only on push to main, nightly, and manual dispatch. Delete the quality and render-regressions jobs (duplicates of ci.yml / performance.yml), run the minimum Android/iOS runtime floors uniformly on every event, keep exactly one verify-package-artifact invocation and one sha256 assertion per artifact hand-off, add the ci.yml CocoaPods cache to the contract job's Apple configurations, and add a schedule-only, non-gating peer-version canary that installs the candidate against the latest React Native, Reanimated, and Gesture Handler releases. Decided in #57, recorded in ADR 0006 (2026-09-02 amendment). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #74. Decision: #57, recorded in ADR 0006 (2026-09-02 amendment, #62).
What changed in
exact-package-candidate.ymlpull_requestandmerge_group; the candidate now runs onpush: main, nightlyschedule, andworkflow_dispatchonly. TheCANDIDATE_CHANNELexpression loses its unreachablepull-requestfallback.qualityandrender-regressions— duplicates ofci.yml/performance.yml, which own those checks at the PR lifecycle point per the ADR 0006 gate placement map.minimum-android-runtimeandminimum-ios-runtimelose theirschedule || workflow_dispatchguards, so every main SHA proves the floors; renamed to drop the now-false "Nightly" prefix.verify-package-artifactinvocation (incandidate) and one sha256 assertion per artifact hand-off remain —clean-package-consumersandapprove-candidateeach assert once; the duplicate manifest recheck inapprove-candidateis gone.ci.ymladded to thecontractjob's Apple configurations (cacheexample/ios/Podskeyed onexample/ios/Podfile.lock, skippod installon hit). The other iOS jobs build freshly generated consumers with no committedPodfile.lock, so theci.ymlpattern does not map to them.schedule-only job that installs the candidate into a fresh bare app against the latest React Native, Reanimated, and Gesture Handler releases (plus latest react/worklets as required transitives) and proves TypeScript, Babel worklet transform, and autolinking. Deliberately absent fromapprove-candidate'sneeds, so a failure alerts on the nightly run without blocking any push candidate or publication.approve-candidateneeds/ifupdated: removed jobs dropped; the floors are now required to succeed on every event.release.ymlis untouched: itsworkflow_rungate (conclusion == 'success' && event == 'push' && head_branch == 'main') already prevents nightly canary runs from publishing.docs/releasing.mdline 90 updated to stop claiming the candidate runs "performance checks".Acceptance criteria
approve-candidate(not inneeds).release.ymlvia the unchangedworkflow_runtrigger.Validation: YAML parses;
yarn lint,yarn typecheck, fullyarn test(29 suites / 285 tests), andyarn test:releaseall pass. Two-axis code review (standards + spec) ran; both findings it surfaced (push concurrency, unpinned canary CLI rationale) are addressed above.🤖 Generated with Claude Code