mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 18:19:43 +00:00
50 lines
2.2 KiB
Markdown
50 lines
2.2 KiB
Markdown
---
|
|
id: 2026-08-31-mobile-release-preflight-and-attempts
|
|
date: 2026-08-31
|
|
status: promoted
|
|
scope: mobile production release preparation and local EAS builds
|
|
evidence: v1.0.7 Android and iOS local EAS release investigation and verified artifacts
|
|
destination: apps/mobile/scripts/release-preflight.mjs, apps/mobile/scripts/release-preflight.test.mjs, docs/releasing.md, and release skills
|
|
review_after: 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.
|