AXP Magisk resurrection track: Speckit 009 port AXP/LOS22 to LOS23.

Ship Magisk like GOLDEN; KernelSU optional recycle only; parallel to sunfish-a16-rom standby.
This commit is contained in:
sunfish-admin committed 2026-09-16 21:56:22 +00:00
commit 12d2179c20
150 files changed
+26263

No files matched your search

+129
View File
@@ -0,0 +1,129 @@
# Android 15 (AXP GOLDEN) → Android 16 (LOS 23.2) — developer delta
Living notes for porting **AXP / GrapheneOS ideas** onto our base without
blind copy. Non-normative until a row is promoted into a feature `spec.md`.
| Ours (LAB target) | GOLDEN (oracle) |
|-------------------|-----------------|
| LineageOS **23.2** / Android **16** | AXP Pro / LOS-derived **22.2** / Android **15** |
| `BUILD_ID=BP4A.251205.006`, SDK **36** tree | SDK **35**, `ro.build.version.release=15` |
| Device: sunfish (same silicon) | sunfish |
**Working rule (owner):** prefer AXP A15 scheme when still valid; if A16 is
easier, use it; if harder, redesign the *path* to the **same end state**.
---
## 1. Already measured on this project
| Area | A15 / AXP behaviour | A16 / LOS 23.2 reality | Adaptation |
|------|---------------------|------------------------|------------|
| Phonesky on `/system/priv-app` | Works on GOLDEN | `artifact_path_requirements` / `generic_system.mk` rejects device-specific `system/` installs unless allow-listed | Keep AXP path; `PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST` (`004`) — do **not** move to `product` only to silence the check |
| GmsCore / Gsf on `system_ext` app | GOLDEN layout | Builds clean (no artifact hit) | Keep |
| Priv-app XML for GmsCore | GOLDEN: not priv-app | Inventing `privapp-permissions-microg` diverges | Removed; add only if Self-Check proves need |
| Super partition headroom | AXP fuller image fits their budgets | Vanilla LOS ERROR_LIMIT too tight for fat microG+Play | Modest `BOARD_SUPER_PARTITION_ERROR_LIMIT` bump — not ABI-strip of official microG |
| Play targetSdk / apktool | Older Play on GOLDEN (50.x) | Latest Play ~52.x needs apktool 2.12 + `ANDROIDSDK=35+`, zipalign-before-sign | Documented in `004` runbook |
| PRESIGNED prebuilt APKs | AXP ships Play/microG with intact v2/v3 | `BUILD_PREBUILT` uncompresses JNI / realigns → strips APK Sig v2/v3; PM skips Phonesky (`pm path` empty) | `LOCAL_REPLACE_PREBUILT_APK_INSTALLED` for GmsCore/Gsf/Phonesky (`004`, measured 2026-09-15) |
| Phonesky privapp allowlist | AXP XML for older Play | Play 52.x on A16 requests `HIDE_STATUS_BAR_NOTIFICATION` + `READ_SYSTEM_GRAMMATICAL_GENDER`; missing → boot abort on userdebug | Extend `privapp-permissions-com.android.vending.xml` |
| Signature spoofing | EXTENDROM: `allow_signature_fake` + `FAKE_PACKAGE_SIGNATURE` + Settings toggle; grants on gms+vending; A15 STABLE | LOS 23.2 **already** has LuK1337 allow-list spoof (`ComputerEngine` `23c0a5c`): userdebug + microG signer + Google fake-sig + `signingInfo`. Missing vs AXP: no `FAKE_PACKAGE` perm/UI; **rejects project-signed Phonesky** | Feature **`005`**: extend signer allow-list for our Phonesky JKS; port EXTENDROM toggle + `FAKE_PACKAGE_SIGNATURE`; see `docs/005-spoofing-runbook.md` |
---
## 2. Partition / packaging (porter mindset)
- AOSP has been tightening **system vs system_ext vs product** for years; A16
builds (especially with `generic_system.mk`) make “drop OEM APKs on system”
a **build-time** problem, not only a policy preference.
- **Privapp-permissions must live on the same partition as the priv-app**
(AOSP rule since product partition work). Moving Phonesky later ⇒ move XMLs
with it.
- `system_ext` remains the natural home for ROM Google-compat substitutes
(AXP: microG, F-Droid, Aurora base) — still valid on A16.
- Prefer **allow-list exception** or **system_ext/product** over rewriting the
whole AXP layout when GSI rules bite.
---
## 3. Compatibility stack (microG / Play / spoofing)
| Topic | Note for A16 |
|-------|----------------|
| microG | Use **current** upstream; do not pin GOLDEN 0.3.15. Keep official signer for F-Droid. |
| Phonesky | Still patch via AXP `patch-playstore`; newer Play = newer apktool/SDK framework. |
| Signature spoofing | **Done in `005`:** extend LuK1337 allow-list for project Phonesky JKS; port EXTENDROM toggle + `FAKE_PACKAGE_SIGNATURE`. LAB US6 green 2026-09-15. |
| Phonesky FGS / exact-alarm | A16 `systemExempted` needs manifest `USE_EXACT_ALARM` (or SCHEDULE / VPN), not only privapp XML. Fixed in Phonesky rebuild; vendor prebuilt updated. |
| FakeStore | Still forbidden next to real Phonesky. |
---
## 4. Attestation / KeyMint / banking (`006`/`007`)
- GOLDEN already shows **KeyMint / RKP / TEE** stress with Yuh on **A15**.
- A16 does not remove that class of problem; RKP and attestation surfaces
continue to evolve — treat GrapheneOS/AOSP docs as *what* to measure, LOS+LAB
as *where* to measure.
- Magisk DenyList on GOLDEN ≠ our root plan. Production root = **KSU-Next +
SusFS** (`007`). Do not port Magisk-shaped packaging into `004`.
---
## 5. GrapheneOS on Android 16 (reference, not base)
- GOS ported features to A16; publicly noted **harder** device-support work
because AOSP dropped much Pixel board/userspace publishing with 16.
- For **sunfish** we stay on **LOS 23.2 device trees**, not GOS device bringup.
- Use modern GOS as reference for **hardening / privacy behaviour** patches
(`013`, hardening backlog) — classify each patch: direct / port / obsolete /
A16-incompatible (same discipline as `reference-sources.md`).
- Never treat historical GOS **A13 sunfish** kernel as A16 base.
---
## 6. Call recording / FLAG_SECURE / UX (`008`+)
- AXP overlays and older XML toggles often **break or no-op** across major
releases. On A16: re-find Dialer/Telecom/framework hooks in LOS 23.2 first;
then decide AXP vs EXTENDROM vs iodé vs native LOS.
- Screenshot / sensitive-content APIs continue to tighten — verify before
porting FLAG_SECURE bypasses.
---
## 7. Checklist before applying an AXP or GOS change on A16
1. What problem does it solve on GOLDEN / in GOS docs?
2. Does LOS 23.2 already provide an equivalent?
3. Partition + artifact-path impact?
4. Same-signer / update path impact (microG, Phonesky)?
5. Kernel 4.14 / sunfish EOL constraints?
6. If blocked: document blocker; redesign route; **same end state**.
---
## 8. Open follow-ups (fill as we hit them)
- [x] Exact LOS 23.2 spoofing surface for `005` — stock LuK1337 path + our
`SUNFISH_A16_005_SIGSPOOF` extension (2026-09-15); runbook
`docs/005-spoofing-runbook.md`
- [ ] Whether A16 needs any microG permission XML AXP ships outside privapp
- [ ] RKP/KeyMint behaviour on LAB after `004` (compare to `002` Yuh logs)
- [ ] Call-recording hook locations on LOS 23.2 Dialer
- [ ] Which GOS A16 hardening patches are realistic on sunfish 4.14
## 9. EXTENDROM A15 → A16 mapping (`005`)
| EXTENDROM A15 patch | LOS 23.2 action |
|---------------------|-----------------|
| `02`/`06` ComputerEngine FAKE + gate | **Adapt** existing LuK1337 `generateFakeSignature`; add toggle + permission + Phonesky signer |
| `01`/`12` api current + lint | Applied |
| `07` AndroidManifest permission | Applied |
| `03` PermissionMapping | Applied (`.kt` path) |
| `04` Activity requestPermissions | Applied (A16 short-circuit path context) |
| `05` Settings.Secure.ALLOW_SIGNATURE_FAKE | Applied |
| `08`–`11` Settings Developer Options | Applied (controllers + XML + strings) |
| Overlay strings | Inlined into frameworks/Settings `strings.xml` |
Source checkout: `/srv/rom/references/extendrom` @ `f129253c07e735a373441254457cf75efac11d04`.
Update this file when a delta is **measured** (build error, Self-Check, adb),
not from blog speculation alone.