Wait for TestFlight before Claude build analysis - #25905
Draft
mokagio wants to merge 1 commit into
Draft
Conversation
`upload-claude-analysis.sh` snapshots the build's job states the moment its `depends_on` groups settle, and a job still running counts as not-failed. The TestFlight uploads take ~15 minutes and were absent from that list, so they were invisible both to the analysis and to the script's decision to run one at all. Trunk's TestFlight uploads had been rejected by App Store Connect since the 27.1 train closed, and the analyser reported it away twice on 2026-08-17. In build #33780 the uploads failed 52s after the check ran, so it saw zero failures and skipped the analysis entirely. In #33786 they failed 4s after the annotation was published, which opens "The build has one real failure: the Unit Tests job." Build #33753 diagnosed the outage correctly on 08-13 only because an upload happened to fail 28s before the check fired. The group is gated on `build.branch == 'trunk'`, so PR builds skip it and the dependency resolves immediately — the same way `prototype_builds_group` already resolves on trunk builds, where it is skipped and the step runs regardless. This closes the instance, not the class: the analysis still asserts a global all-clear over whatever snapshot it is given. --- Generated with the help of Claude Code, https://code.claude.com Co-Authored-By: Claude Code Opus 5 <noreply@anthropic.com>
Collaborator
Generated by 🚫 Danger |
Contributor
|
| App Name | WordPress | |
| Configuration | Release-Alpha | |
| Build Number | 33804 | |
| Version | PR #25905 | |
| Bundle ID | org.wordpress.alpha | |
| Commit | 4f4bd6f | |
| Installation URL | 1g2bd1ljffi5o |
Contributor
|
| App Name | Jetpack | |
| Configuration | Release-Alpha | |
| Build Number | 33804 | |
| Version | PR #25905 | |
| Bundle ID | com.jetpack.alpha | |
| Commit | 4f4bd6f | |
| Installation URL | 0vi95mmrudt3g |
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.


Description
The
:claude: 🕵️ Check for Build Failuresstep lists three groups independs_onandtestflight_builds_groupis not one of them. It therefore fires as soon as the linters, prototype builds and unit tests settle, andupload-claude-analysis.shsnapshots the build's job states at that instant — where a job still running counts as not-failed. The TestFlight uploads are the longest jobs in the pipeline, so on trunk they are almost always still running, and they are the only jobs that can detect a release-pipeline outage.That is not hypothetical. Trunk's TestFlight uploads had been rejected by App Store Connect with error 90186 since the
27.1train closed, and the analyser reported it away twice on 2026-08-17:#33753 diagnosed the outage correctly on 08-13 — naming 90186 and recommending a pre-flight version check — only because an upload happened to fail 28 seconds before the check fired. That 28 seconds is the whole difference between the one correct report and twelve days of silence.
Two things a reviewer should know:
testflight_builds_groupis gated onbuild.branch == 'trunk', so PR builds skip it and the new dependency resolves immediately. On trunk, analysis now waits for the uploads — which is the point.Testing instructions
Nothing to test in the app; this is a pipeline-graph change and only Buildkite can exercise it.
The behaviour it relies on is already demonstrated in the builds above:
prototype_builds_groupis PR-only, so on trunk builds #33780 and #33786 its jobs arebrokenand the check step ran anyway, because of theallow_dependency_failure: truealready on the step.testflight_builds_groupresolves the same way in reverse on PR builds.To confirm on this PR: the check step should still run and reach its "All steps passed, skipping Claude analysis" branch despite both TestFlight and prototype dependencies being skipped. The real confirmation is the next red trunk build, where the analysis should now start after the uploads finish rather than before.