Complete production UX and harden iOS CI#22
Merged
Conversation
Add durable provider transfers with real upload progress, explicit hosted-tool approvals, persisted CloudKit conflict resolution, exact OpenRouter spend reporting, and honest compatibility guidance. Bound simulator lifecycle and Xcode test phases so CI fails with diagnostics instead of hanging. Extend schema, persistence, tests, generated project wiring, and product documentation. Verified with Swift package tests, the core verifier, full Xcode unit and UI suites, public hygiene, site build, workflow lint, ShellCheck, and gitleaks.
Allow 12 minutes per Xcode test phase after the macOS runner completed all unit tests and six of nine UI tests before the previous eight-minute bound. Simulator lifecycle operations remain independently bounded at three minutes and the overall job remains capped at 60 minutes.
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.
What changed
Why
The app had several production UX surfaces that looked complete but did not expose durable state or honest operational boundaries. The Xcode CI job could also spend its entire 60-minute budget in an unbounded
simctl bootstatuscall.User impact
Transfers are recoverable and observable, hosted provider actions cannot begin before explicit approval, CloudKit no longer silently overwrites unsynced local data, OpenRouter spend only reports exact receipts, and compatibility claims show their evidence and fallback. CI now has bounded simulator lifecycle behavior.
Current acceptance evidence
swift test --disable-automatic-resolution: 238 tests in 16 suites passedswift run --disable-automatic-resolution PinesCoreTestRunner: passedgit diff --check: passedReal-device installation is intentionally performed after this PR is merged and the fresh
mainCI run passes.