You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Make the hosted Full iOS UI validation gate finish within its job limit #517
The manual release gate Full iOS UI validation has not passed on GitHub-hosted runners since 1.4.0 (October 7, 2026). The 2.0 UI suite added the Pro commerce journeys, and the suite no longer fits the iOS UI journeys job's timeout-minutes: 90.
On October 22 the exact build 5 release SHA 62f6d8e (tag v2.0.0-build5) was rerun in run 39779930660:
All five quality jobs passed: SwiftLint, strict concurrency, iOS tests, watchOS tests, SwiftPM smoke.
iOS UI journeys (iphone) was cancelled with "The job has exceeded the maximum execution time of 1h30m0s". No logs were retained.
The iPad job was cancelled along with it, and the aggregate failed.
The same families pass locally on this SHA with the pinned Xcode 26.6 / iOS 26.2 runner (see APP-STORE.md, build 5 qualification). As things stand, AGENTS.md's release rule cannot be met for any 2.0.x candidate.
Scope
This changes only the manual workflow_dispatch path. Automatic PR CI must not change. Options, in order of preference:
Shard each UI family across matrix entries, such as original / supplemental / commerce, on the manual path only.
Pin the hosted path to the qualified iOS 26.2 runtime and Xcode 26.6 so it matches local qualification.
Raise the manual-only UI job timeout as a last resort. Measure first.
Acceptance criteria
Full iOS UI validation completes and passes on a hosted run for a 2.0.x candidate.
Automatic PR CI triggers, jobs, timeouts and elapsed time are unchanged. Prove it with before-and-after measurements per AGENTS.md.
Resolved the main conflicts in PR #521 with a normal merge of f2ce58a30628ad11bd6e58cae0a3b76208466b55. New head cb9f1b03397ce1362973fcc56a57c98fc4fd10e6; no rebase/force push. Both changelog entries and the12-worker/53-journey instructions are retained. Main’s qualified native failure-capture test is unchanged. Workflow/manifests/shard plan/observer/cost helper match previous8befdb5 bytes.
149Python and14offline relay tests passed; diff/marker checks passed. Required SwiftLint passes. Its ordinary47s elapsed/37s summed runtime is an unpaired observation, not a substitute for the failed guarded pair. One fresh connected Codex request is pending for this merge head.
All prior raw failures/controls and cost receipts are preserved. The valid same-image pair still fails57s/52s versus54s/50s at old8bef; neither it nor the older full runs qualifies this new head. No new cost/full/native dispatch was started. Current-head cost acceptance and full5-quality/12-worker/53-journey qualification remain blocking. No merge/Store/Home actions. Evidence and old-head recovery bundle: /tmp/codexbar-517-main-reconcile-20261026/.
Connected Codex is now clean at exact current head cb9f1b03397ce1362973fcc56a57c98fc4fd10e6. Required automatic SwiftLint40364006120 passed; its first ordinary47s/37job-seconds used image20261013.0424.1. It is retained as unpaired evidence, not retroactively substituted into the failed guarded pair.
Remaining hard gates: strict comparable cost acceptance, then exact-head5quality/12worker/full53-journey-per-family qualification with preparation/reset. The prior one-pair allocation is exhausted: preserved baseline54s/50 versus candidate57s/52 failed. No new cost or full run started.
Prepared a concrete budget-review proposal at /tmp/codexbar-517-main-reconcile-20261026/next-cost-proposal.json: one baseline/current-mainf2ce58a and one current-candidatecb9f1b0 run, common immutable controller/empty preparation, exact currently observed image/toolchain guards, unchanged complete-run metrics, no tolerance or retry and no full/native dispatch. It is a proposal only; there is no causal optimization or claim that another pair will pass. Chief must authorize any additional allocation before execution. No reviews/checks remain pending, so the PR watch is being released while this decision is handed back; existing owner retains the source/evidence.
Activity
Gate-only: add a ui-only manual mode that runs just the UI families (#…
Gate-only: align CI policy assertions with the ui-only mode (#517)
test: tolerate floating-point noise in touch-target dimensions (#517)
test: distinguish reported Grok zero from missing quota (#517)
test: await billing warning removal after reload (#517)
ci: relay manual aggregate hints to the exact current PR (#517)
Capture native readiness evidence during manual qualification
Honor supplied simulator ownership receipts during capture
Use supported log date syntax without widening phase evidence
Guard manual CI cost comparisons by image and toolchain (#517)
Materialize both CI cost sources from an empty checkout (#517)
Pin manual cost checkouts to the immutable dispatch SHA (#517)
HemSoft commentedon Oct 26, 2026
Resolved the main conflicts in PR #521 with a normal merge of
f2ce58a30628ad11bd6e58cae0a3b76208466b55. New headcb9f1b03397ce1362973fcc56a57c98fc4fd10e6; no rebase/force push. Both changelog entries and the12-worker/53-journey instructions are retained. Main’s qualified native failure-capture test is unchanged. Workflow/manifests/shard plan/observer/cost helper match previous8befdb5 bytes.149Python and14offline relay tests passed; diff/marker checks passed. Required SwiftLint passes. Its ordinary47s elapsed/37s summed runtime is an unpaired observation, not a substitute for the failed guarded pair. One fresh connected Codex request is pending for this merge head.
All prior raw failures/controls and cost receipts are preserved. The valid same-image pair still fails57s/52s versus54s/50s at old8bef; neither it nor the older full runs qualifies this new head. No new cost/full/native dispatch was started. Current-head cost acceptance and full5-quality/12-worker/53-journey qualification remain blocking. No merge/Store/Home actions. Evidence and old-head recovery bundle:
/tmp/codexbar-517-main-reconcile-20261026/.HemSoft commentedon Oct 26, 2026
Connected Codex is now clean at exact current head
cb9f1b03397ce1362973fcc56a57c98fc4fd10e6. Required automatic SwiftLint40364006120 passed; its first ordinary47s/37job-seconds used image20261013.0424.1. It is retained as unpaired evidence, not retroactively substituted into the failed guarded pair.Remaining hard gates: strict comparable cost acceptance, then exact-head5quality/12worker/full53-journey-per-family qualification with preparation/reset. The prior one-pair allocation is exhausted: preserved baseline54s/50 versus candidate57s/52 failed. No new cost or full run started.
Prepared a concrete budget-review proposal at
/tmp/codexbar-517-main-reconcile-20261026/next-cost-proposal.json: one baseline/current-mainf2ce58a and one current-candidatecb9f1b0 run, common immutable controller/empty preparation, exact currently observed image/toolchain guards, unchanged complete-run metrics, no tolerance or retry and no full/native dispatch. It is a proposal only; there is no causal optimization or claim that another pair will pass. Chief must authorize any additional allocation before execution. No reviews/checks remain pending, so the PR watch is being released while this decision is handed back; existing owner retains the source/evidence.Merge remote-tracking branch 'origin/main' into fix/issue-517-manual-…
Keep manual iOS UI qualification within the worker limit (#521)