2.2 KiB
id, date, status, scope, evidence, destination, review_after
| id | date | status | scope | evidence | destination | review_after |
|---|---|---|---|---|---|---|
| 2026-08-31-mobile-release-preflight-and-attempts | 2026-08-31 | promoted | mobile production release preparation and local EAS builds | v1.0.7 Android and iOS local EAS release investigation and verified artifacts | apps/mobile/scripts/release-preflight.mjs, apps/mobile/scripts/release-preflight.test.mjs, docs/releasing.md, and release skills | 2027-02-28 |
Symptom
The v1.0.7 release spent repeated attempts on archive, plugin startup, package installation, disk-space, signing, and iOS extension-version failures before valid Android and iOS artifacts were accepted.
Reproduction
Run a local production EAS build with an ignored public OTA certificate, a
package-directory plugin path, insufficient disk space, or divergent widget
CURRENT_PROJECT_VERSION. Each condition fails or produces an invalid input
before a valid final artifact can be accepted.
Cause
Pre-compilation setup failures were treated as rebuild failures. Source parity, archive inclusion, local EAS plugin shape, disk capacity, and effective iOS widget build settings were not checked together before EAS allocation.
Remediation
Run the deterministic mobile release preflight before every production build. Classify attempts before retrying: archive, plugin, npm, and ENOSPC failures do not consume a native build; signing, profile, and capability failures require provider read-back before one replacement build. Retain work directories and logs at stable ignored paths. Accept only independently inspected artifacts and keep rejected artifacts out of the upload path.
The Android native input failure was a Gradle task ordering issue: Prefab inputs must be available before dependent native tasks. Preserve the explicit ordering fix rather than removing Firebase or changing dependency versions without proof.
Evidence
The preflight node tests reject an ignored OTA certificate and an effective widget build-setting mismatch. The checked-in source invariants pass the preflight. The maintained release guide and skills record local EAS path requirements, provider read-back, phase-specific status language, artifact inspection, store read-back, and scoped upload authorization boundaries.