Skip to content

Make the hosted Full iOS UI validation gate finish within its job limit #517

Closed

Description

@HemSoft

Problem

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:

  1. Shard each UI family across matrix entries, such as original / supplemental / commerce, on the manual path only.
  2. Pin the hosted path to the qualified iOS 26.2 runtime and Xcode 26.6 so it matches local qualification.
  3. 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.

Refs #470.

Activity

  1. HemSoft commented on Oct 26, 2026

    @HemSoft
    CollaboratorAuthor

    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/.

  2. HemSoft commented on Oct 26, 2026

    @HemSoft
    CollaboratorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions