Files
Sauci/.agents/learnings/promoted/2026-08-31-mobile-release-preflight-and-attempts.md
T

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.