Files
AXP-Resurection/docs/009-ota-rebuild-checklist.md
sunfish-adminandCursor 2d145c2878 009: Polish bacon fixes, OTA host scripts, and migration docs.
Restore disable_configstore, EuiccDisabler and thermal CDEV guards, branding
and rebuild/sync helpers; document device roles, laptop migration, and Gitea.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 21:06:45 +02:00

104 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 009 — OTA rebuild checklist (re-read before every `bacon009ota` launch)
**Target (current):** `lineage-23.2-20261008-nightly-sunfish` manifest pin.
**Zip name:** `AXP-Resurection-Pro-23.2-20261008-sunfish.zip` (`LOS_DATE=20261008`).
**Host:** `rom-dev01` only, detached: `/srv/rom/artifacts/bin/rom-detach`.
## A. Upstream pin (not the LOS signed zip)
- [ ] `LOS_MANIFEST` = official `build-manifest.xml` (SHA256 recorded in `docs/009-version-pins.md`).
- [ ] First time or after long drift: `LOS_SYNC=1` + `repo sync --force-sync` + pin all projects to manifest.
- [ ] Re-run without sync: `LOS_SYNC=0` (tree already pinned).
- [ ] Post-sync: `repo manifest -r` diff vs nightly → **0 revision diffs** on common projects.
- [ ] Do **not** sync to “tip of lineage-23.2” only; pin exact nightly.
## B. Staged sources on host (laptop → rom-dev01)
`AXP_PROJECT_SOURCE` must carry **both**:
- [ ] `vendor/sunfish-a16/` (patches, magisk, hardening.mk, BoardConfig.mk, …)
- [ ] `scripts/009-*.sh` used by rebuild (entry: `009-rebuild-from-los.sh`)
`009-rebuild-from-los.sh` rsyncs **only** `vendor/sunfish-a16` into the tree; bacon runs from **`$STAGE/scripts/`** — keep them in sync.
## C. Mandatory ship flags (OTA path)
- [ ] `AXP_DEBLOB_WAVE4=1` (wave 4 deblob)
- [ ] `012` hardened_malloc (via `009-bacon-hardened-malloc.sh`)
- [ ] `AXP_AVB_FLAGS=0` / `WITH_AVB=true`
- [ ] `LINEAGE_BUILDTYPE=PRO`, lunch `lineage_sunfish-user`, `TARGET_RELEASE=bp4a`
- [ ] Release keys: `/srv/rom/secrets/android-certs` → never in git
## D. LOS device wiring (lost on `repo forall reset` — re-apply every bacon)
`apply_009_product_includes.py` must run before breakfast:
- [ ] `lineage_sunfish.mk`: `gms.mk` + `magisk.mk` + **`apps.mk`** (`sunfish-a16-009-product-includes`)
- [ ] `magisk.mk` also `inherit-product`s `apps.mk` (belt-and-suspenders if product block drifts)
- [ ] `BoardConfigLineage.mk`: `-include vendor/sunfish-a16/BoardConfig.mk` (`sunfish-a16-009-board-config`) — **AVB + super size**
## E. Secrets / signing (host only)
`apply_009_axp_identity.py` after wiring:
- [ ] Copy release keys → `vendor/lineage-priv/keys/`
- [ ] Copy `avb.pem` + `avb_pkmd.bin` → `vendor/sunfish-a16/certs/`
- [ ] `ANDROID_CERTS_DIR=/srv/rom/secrets/android-certs`
- [ ] Pre-breakfast guards: `avb.pem`, `releasekey.pk8` exist
- [ ] Post-breakfast: `MAINLINE_BLUETOOTH_SEPOLICY_DEV_CERTIFICATES` → `vendor/lineage-priv/keys`
- [ ] Post-breakfast: `BOARD_AVB_KEY_PATH` → `vendor/sunfish-a16/certs/avb.pem`
## F. Kernel pack (same msm-4.14 SHA as nightly manifest)
- [ ] Reset kernel to `git rev-parse HEAD` of pinned `kernel/google/msm-4.14` (not a stale laptop SHA).
- [ ] Stage1 + combo4 + FORTIFY + CVE clean + hi-batch1–3 + lock-scope USB
- [ ] **US-S5-1:** `CONFIG_SECURITY_YAMA` **unset** (like GOLDEN); `SLAB_FREELIST_RANDOM=y`; USERFAULTFD off
- [ ] `KSYM_NAME_LEN=192`; no KernelSU in defconfig
## G. Userspace applies (AXP ports on **A16 / LOS 23** tree)
Naming: `apply_009_a15_*` = patches **sourced from legacy AXP product**, ported to **Android 16** — not SDK 35.
- [ ] 005 sigspoof, 008 call rec / FLAG_SECURE
- [ ] 009 disable-app, DNS, connectivity, SUPL, branding, identity, cmdline, yama (inert without Yama built)
- [ ] AXP reboot/Wi‑Fi/BT timeouts (`apply_009_a15_reboot_timeouts.py`, `apply_009_a15_settings_timeouts.py`) — **no `.rej`**, fail-closed
- [ ] `apply_009_a15_small.py`
- [ ] Wave4: `apply_009_drop_lab_only_commands.py` when `AXP_DEBLOB_WAVE4=1`
- [ ] OpenSSH / carrier / euicc / lineage-tools drops
## H. Product surface (match **current LAB bacon**)
- [ ] **Jelly** on `product` (postflight US-S4-2: `Jelly.apk`)
- [ ] **AuroraStore**, **Droidify**, **FossifyGallery** on `system_ext/app/…` (postflight **US-S4-3**; absent from `product`) — [`009-bundled-apps-axp-parity.md`](009-bundled-apps-axp-parity.md)
- [ ] Pre-`mka` guard: `GmsCore`/`GsfProxy`/`Phonesky` + AuroraStore/Droidify/FossifyGallery/OpenEUICC in `PRODUCT_PACKAGES`
- [ ] Prebuilts symlinked: `/srv/rom/prebuilts/axp-apps/*.apk` → `vendor/sunfish-a16/prebuilt/`
- [ ] No Gallery2 / Glimpse on product (`hardening.mk` filter-out; Fossify replaces gallery UX)
- [ ] `hardening.mk`: `PRODUCT_PACKAGES += Jelly`
- [ ] microG + Phonesky prebuilts + GmsCore JNI extract
- [ ] Magisk 30.7 preroot, `out/.magisk/READY`
## I. Vendor SPL / identity
- [ ] `VENDOR_SECURITY_PATCH = 2023-09-05` (no rollback to 2023-08-05 on upgrade)
- [ ] `LINEAGE_BUILD_DATE` = `LOS_DATE` when set (`.axp-los-date`)
## J. Post-build (LAB only)
- [ ] Sideload full zip; Magisk boot/dtbo/vbmeta reinforce if needed
- [ ] Smoke: boot, Magisk, Island, Wallapop work profile, radio
- [ ] Record artifact SHA256 + `repo manifest -r` under `009-axp-los23-port/`
## Known failure modes (2026-10-10)
| Symptom | Cause | Fix |
|--------|--------|-----|
| LAB has microG but **no Aurora/Droidify/Fossify** | `apps.mk` never inherited (OTA before 2026-10-10 fix) | Rebacon with staged WT; postflight US-S4-3 |
| Maps brown / microG broken, JNI OK on host push only | GmsCore `.so` not in image | Rebacon; postflight must see `system_ext/app/GmsCore/lib/arm64/libconscrypt_gmscore_jni.so` |
| BT sepolicy not `lineage-priv/keys` | `gms.mk`/`magisk.mk` not inherited | `apply_009_product_includes.py` |
| Postflight US-S4-2 Gallery2 | Old gate expected Gallery2 on product | Current ship: **Jelly only** (Fossify is US-S4-3) |
| Bacon `exit=1` as root after `mka` OK | `git safe.directory` on hardened_malloc tree | `sudo -u android-build` + `apply_012` safe.directory |
| AVB key empty / wrong path | `BoardConfig.mk` not included | board include in same script |
| `missing vendor/sunfish-a16/certs` | identity not copying from secrets | `ANDROID_CERTS_DIR` + identity.py |
| `repo sync` hook errors | project object-store drift | `--force-sync` after `forall` clean |
| `patch_incomplete` | AXP patch drift on A16 | fail-closed + marker grep (not silent continue) |