Repository navigation
Release the TestFlight build after a day, gated by CI reference images - #1101
Merged
2 commits merged intoNov 9, 2026
Merged
2 commits merged into
2 commits merged into
Conversation
Chris decided an App Store release is the TestFlight build plus CI screenshots (#1097). Submit App Store Review now submits a platform's build when the Ship record's source commit has a passing shared-view-simulator-references job and the build has been on TestFlight for 24 hours with no crash report from the TestFlight crash watcher, or when skip_soak_reason records Chris's override. Deletes the release-time proof round: the signed validation coordinator and operator flow, runtime receipt ingestion and session, the visual approval ledger, reference approvals, the release evidence gate and policy, the submission evidence bundle, the hosted Shared-View Capture Evidence workflow, the surface comparison schemas, and their tests and docs. CI keeps only the capture code it runs. A pull request that changes a reference image must now carry a Reference images section with old and new images and the author's statement; the CI scope job enforces it.
…sues From the cross-provider review: count the day from when Ship reported a successful TestFlight distribution, find crash watcher issues by their build marker as well as title, require whole HTML image tags in the reference statement, and drop a test that asserted a config literal.
Contributor
Author
|
Review result: weighed Cross-provider review weighed (OpenAI reviewer, author Anthropic). Four findings, all fixed in 5263585: TestFlight day now starts at successful distribution, retitled watcher issues still count, HTML-only reference sections fail, config-literal assertion removed. Rereview: all fixed, no new findings. Details in the PR body. |
This was referenced Nov 9, 2026
Make an App Store release the TestFlight build plus CI screenshots, and delete the proof round
#1097
Closed
Contributor
Author
|
Ready for the merge train Head: 5263585 |
Contributor
Author
|
Launchplane completed the merge-train step for this pull request.
Launchplane landed this pull request through protected batch PR #1105. Launchplane manages this comment and will update it as the train moves. |
shiny-code-app Bot
added a commit
that referenced
this pull request
Nov 9, 2026
…-7b2b43326d3e040e: merge PR #1101
This was referenced Nov 9, 2026
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.
Why
Chris, during the 1.0.80 App Store proof round: "I hate this part." He approved making an App Store release the TestFlight build plus CI screenshots, and later clarified that the wait is automatic and that visual correctness is judged in the pull request that changes a screen.
Closes #1097
Do not land before Context Panel 1.0.80 is submitted to App Review.
What changes
Submit App Store Reviewnow submits a platform's TestFlight build when:shared-view-simulator-referencesCI job; andskip_soak_reasonskips the wait and the crash check, never the reference job, and the run log and summary record it. A dry run reports the gate without stopping. A build with no Ship record is refused. The gate isscripts/app_store_submission_gate.py; it reads the existing records (the Ship release record and the crash watcher's issues), so there is no second crash reader. One command submits all four platforms (a loop over per-platform dispatches, so each platform keeps its own release record update).A pull request that changes a
Tests/SharedViewReferences/*.pngimage must carry a## Reference imagessection with the old and new images and the author's statement of what the screen should show and that it does. The CIscopejob reads the current body and fails the pull request without it. AGENTS.md and docs/validation-authority.md say so.What the simulator job launches
It launches the real Release app on each simulator, so a launch crash fails it:
It does not launch the Mac app, any widget extension, the Watch complication extension, the Top Shelf extension or the Mac refresh agent; macOS cells come from a host SwiftPM renderer. Watch and Apple TV launch in gallery mode, so a crash only on the normal launch path is not caught there either. No new machinery was added for these.
Removed
scripts/context_panel_validation/,scripts/context-panel-validation.py,scripts/context-panel-runtime-session.py)scripts/context_panel_release_gate/,scripts/context-panel-release-gate.py,scripts/validate-release-evidence-report.py,Config/ContextPanelReleaseEvidencePolicy.json,Config/ContextPanelHistoricalPolicyArchive.json)release-evidence/*branch route (scripts/submission-evidence-bundle.py), andevidence_bundle_sha256,validation_trainandrelease_evidence_modeinputsShared-View Capture Evidenceworkflow (.github/workflows/shared-view-capture.yml,scripts/context-panel-shared-view-capture-workflow.py)compareandevidence-templatesubcommands,comparison_v6,comparison_schema_v2..v4,artifact_comparison,scripts/context_panel_comparison_schema.py)--candidate-manifestoptionKept: signing, notarization, uploads and the expected-build manifests they write, the CI reference jobs (their capture code moved to
scripts/context_panel_shared_view_capture.pyandscripts/context_panel_shared_view_matrix.py, andpinned-xcodeandcapture-configmoved intoscripts/context-panel-shared-view-references.py), the TestFlight crash watcher, App Store Release Status and the release records, App Review submission, and the runtime baseline's localcheck,installandreset.Not removed here: the Swift runtime receipt writers and their CloudKit record types are still in the apps. They are product code on every platform, so removing them is a separate change that should ship through its own TestFlight build.
Removed: about 43,100 lines across code, tests and docs, and the concepts of release evidence, carry-forward, visual approval and capture receipts.
Net lines: -41,365 (code -20,745, tests -18,551, docs -2,069).
Verification
python3 scripts/context-panel-test-lanes.py run --lane fast-local-pythonand--lane routine-ci-python: passscripts/commit-gate.sh --skip-swift(surface manifest validate, lanes validate, fast Python lane): pass. No Swift changed.uv run scripts/check-release-approvals.py: passscripts/modules that tests add tosys.path(the existing pattern in this repo; the inspection profile does not treatscripts/as a source root, and the gate test's type warnings follow from that), and type warnings in capture code moved unchanged from the deleted package. Fixed the real ones it found (amin()type, a redundant regex escape, static helpers, an unused parameter).Review
Reviewed by an OpenAI model through the catalog's model-review helper (author: Anthropic; the CLI did not report the exact model). It found four issues, all acted on:
Noted, not changed: CI run and job lookups read the first 100 results, so an old passing job could be missed after many reruns; the helper then prints how to get a fresh run.
A rereview of the fixes found all four fixed and no new findings.