Files
AXP-Resurection/specs/009-axp-los23-port/plan.md
T
sunfish-admin 12d2179c20 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.
2026-09-16 21:56:22 +00:00

131 lines
6.6 KiB
Markdown
Raw 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.
# Implementation Plan: AXP LOS22 feature port to LOS23 (resurrection)
**Branch**: `009-axp-los23-port` | **Date**: 2026-09-16 | **Spec**: [spec.md](./spec.md)
**Input**: Feature specification from `/specs/009-axp-los23-port/spec.md`
## Summary
Resurrect **AXP.OS Pro on LOS22 / GOLDEN** as a single shippable LineageOS
23.2 / Android 16 `sunfish` ROM on **LAB**: vanilla `003` base + full AXP
capability set (Google stack, selectable spoofing, Island banking workflow,
selectable call-recording unlock, Magisk like GOLDEN, bundled usability apps,
GOLDEN-class hardening/signing/AVB posture).
**Explicit exceptions:** LOS23 WebView default (Aosmium EOL) with unlocked
provider chooser; Phonesky = project's recent patched artifact (reconsider if
GOLDEN-class fixes missing); KernelSU (`007`) out of ship for now with optional
recycle of existing functional kernels (FR-016).
**Approach:** reuse proven `004`/`005`/`008` runbooks and `vendor/sunfish-a16`
packaging where they already match; replace the KernelSU ship path with
AXP-style Magisk preinstall (newest Magisk); pin newest stable microG and
bundled apps; keep Phonesky on the existing host pipeline; measure Magisk
“preinstalled but not fully activated” behaviour on GOLDEN before freezing LAB
setup docs.
## Technical Context
**Language/Version**: Android product makefiles / Soong; Java/Kotlin Settings +
Dialer + frameworks patches; bash runbooks on `rom-dev01`
**Primary Dependencies**: LOS 23.2 sunfish tree; microG + GSF releases; project
patched Phonesky host artifacts; Magisk (newest stable that works on this
stack); Island; AXP/GOLDEN inventory (`002`); EXTENDROM call-rec reference;
existing `vendor/sunfish-a16` overlays/patches from `004`/`005`/`008`
**Storage**: Host `/srv/rom/prebuilts/`, `/srv/rom/secrets/`,
`/srv/rom/artifacts/009-axp-los23-port/`; meta-repo docs + `vendor/sunfish-a16`
scripts (no proprietary APKs in Git)
**Testing**: LAB flash/`adb`; microG Self-Check; Play install; Island +
Swissquote/Yuh; Magisk DenyList-class; DO toggles; version-pin record
**Target Platform**: Pixel 4a LAB `11231JEC207477`; Android 16 / LOS 23.2
**Project Type**: Android custom ROM (product overlay + attributable patches)
**Performance Goals**: N/A (daily-driver correctness / parity)
**Constraints**: LAB only; no GOLDEN flash; no Phonesky bytes in Git; Magisk
ship root (not KernelSU); newest stables except Phonesky artifact rule;
attributable reversible changes; long builds detached on `rom-dev01`
**Scale/Scope**: Full AXP resurrection surface in one feature (Google stack,
toggles, Magisk, bundled apps, hardening/signing class); **parallel track**
to the standby KernelSU / split roadmap (`004`–`008`/`007`), reusing their
artifacts without deleting that track
## Constitution Check
*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
| Gate | Status |
|------|--------|
| LAB only; never GOLDEN | pass |
| Spec-as-source for active feature requirements | pass (`009` normative for ship) |
| Functionality first; AXP compatibility oracle | pass (resurrection goal) |
| No proprietary Google APKs / secrets in Git | pass (host paths) |
| Phonesky priv-app; no FakeStore primary | pass |
| Restricted selectable spoofing (not open platform) | pass (reuse `005` class) |
| Native call-rec unlock; re-validate A16 | pass (reuse `008` / EXTENDROM) |
| Prefer native over LSPosed/Zygisk modules for ROM features | pass |
| Small attributable reversible changes | pass (staged integrate; known-good images) |
| Base = LOS 23.2 sunfish stack (no unrelated prebuilt kernel) | pass |
| Constitution default root = KernelSU; no Magisk production stage | **variance** — see Complexity Tracking (owner ship decision in `009`) |
| Signing/AVB historically `011` | **variance** — GOLDEN-class signing/AVB posture pulled into `009` acceptance (may stage inside feature) |
**Post-design**: Magisk ship + signing/AVB-in-`009` remain justified variances;
KernelSU recycle stays optional (FR-016). Recommend a later constitution
amendment to align Root architecture text with Magisk resurrection — not
blocking this plan.
## Project Structure
### Documentation (this feature)
```text
specs/009-axp-los23-port/
├── plan.md # this file
├── research.md # Phase 0
├── data-model.md # Phase 1
├── quickstart.md # Phase 1
├── contracts/
│ ├── packages.md
│ ├── toggles-surface.md
│ ├── magisk-preinstall.md
│ ├── webview-surface.md
│ └── acceptance-gates.md
└── tasks.md # /speckit-tasks (not this command)
```
### Host + tree
```text
# Meta-repo
vendor/sunfish-a16/ # product mk, permissions, patch apply
docs/002-golden-inventory.md
docs/004-phonesky-runbook.md
docs/005-spoofing-runbook.md
docs/008-call-rec-flag-secure-runbook.md
docs/axp-pro-parity.md # non-normative; remap rows → 009 after tasks
# rom-dev01
/srv/rom/src/lineage/ # LOS 23.2 sunfish tree
/srv/rom/prebuilts/microg/ # newest microG + GSF
/srv/rom/prebuilts/phonesky/ # project patched Phonesky (+ XMLs)
/srv/rom/prebuilts/magisk/ # Magisk artifacts for AXP-like preinstall
/srv/rom/prebuilts/axp-apps/ # bundled usability apps (newest stables)
/srv/rom/secrets/ # Phonesky / later release keys (never Git)
/srv/rom/artifacts/009-axp-los23-port/ # images, hashes, version pins, LAB evidence
/srv/rom/artifacts/007-…/ # optional KSU kernels (recycle only)
```
**Structure Decision**: Same meta-repo pattern as `004`/`005`/`008` —
attributable packaging and patches via `vendor/sunfish-a16`; heavy tree and
proprietary blobs only on `rom-dev01`. No megapatch dumps in Git.
## Complexity Tracking
| Violation | Why Needed | Simpler Alternative Rejected Because |
|-----------|------------|--------------------------------------|
| Magisk as ship root (constitution prefers KernelSU; forbids Magisk production stage) | Owner chose **AXP resurrection** = Magisk like GOLDEN (`009` FR-010); KSU out of ship for now | Keeping KernelSU abandons “todo igual que AXP”; Magisk A/B-only diagnostic does not meet ship parity |
| GOLDEN-class hardening/signing/AVB inside `009` (was split `011`–`013`) | Owner Q2 = full resurrection, not apps-only | Deferring signing/hardening recreates the decide-scatter `009` was meant to end |
| Single Magisk-resurrection feature owns large surface | Simplifies current ship without deleting standby KSU track | Re-merging both tracks into one ambiguous roadmap recreates decide-scatter |
## Phase 0 / Phase 1
See `research.md`, `data-model.md`, `contracts/*`, `quickstart.md`.