Release-keys/AVB, CVE clean+hi batches, Yama/slabrand, Pro branding, bundled apps, and AXP-class product surface docs/scripts.
525 lines
29 KiB
Markdown
525 lines
29 KiB
Markdown
# Feature Specification: AXP LOS22 feature port to LOS23
|
||
|
||
**Feature Branch**: `009-axp-los23-port`
|
||
|
||
**Created**: 2026-09-16
|
||
|
||
**Status**: Spec clarified 2026-09-17 (banking deferred; kernel hardening in;
|
||
localization compare later) — tasks updated; ready for `/speckit-implement`
|
||
|
||
**Input**: User description: "009-axp based LOS22 feature port to LOS23 —
|
||
take vanilla LineageOS 23 for sunfish and integrate the full AXP.OS (LOS22 /
|
||
Android 15 GOLDEN) feature set into LOS23 without product exceptions; only
|
||
versions change (newest stable for each system / bundled app that still fits
|
||
sunfish / Android 16); use the project's already updated patched Phonesky
|
||
(Google Play)."
|
||
|
||
**Owner clarifications (2026-09-16):** Magisk like GOLDEN (newest Magisk;
|
||
AXP-style preinstalled-but-not-fully-activated layout — measure on GOLDEN);
|
||
hardening / signing / AVB like GOLDEN (full **AXP resurrection** on LOS23);
|
||
WebView exception = keep LOS23 WebView (Aosmium EOL) but leave provider
|
||
selection unlocked; Phonesky = project patched build from recent work unless
|
||
it lacks GOLDEN-class fixes (then reconsider); microG newest stable integrated
|
||
with that Phonesky; signature spoofing and call recording **selectable**
|
||
(toggles); KernelSU (`007`) out of ship for now, with optional recycle of
|
||
existing functional kernels if useful; otherwise everything equal to
|
||
AXP/GOLDEN.
|
||
|
||
**Owner clarifications (2026-09-17):** Primary ship interest = an **updated
|
||
AXP clone on LOS23** (features, options, userspace hardening/security, updated
|
||
hardened sunfish kernel). Banking / Island / Swissquote / Yuh **deferred**
|
||
(owner future). Localization AXP-vs-LOS compare **later** (FR-018). Prefer AXP
|
||
**build sources + docs** on `rom-dev01` as the compile oracle (how Magisk /
|
||
product packaging is wired); GOLDEN `adb` for *runtime* behaviour, not the
|
||
first place to reverse “how to build”. **Do not** ship NeoLauncher — keep LOS
|
||
Launcher3. Prefer **Droidify** over stock F-Droid client (lighter; many repos
|
||
by default) unless packaging forces otherwise. **Do not** integrate AXP
|
||
**external** market repos or AXP **OTA** servers (EOL / servers down — no
|
||
sense). **Do** clone AXP-class **Private DNS** presets (many provider entries).
|
||
**Do** keep AXP-class **Internet connectivity** / special INTERNET permission
|
||
UX where practical, but **do not** hard-wire `axp.os` branding/endpoints.
|
||
**Wanted:** restore classic **Disable app** behaviour on Android 16 (LOS/AOSP
|
||
replaced much of this with **Archive**, which the owner dislikes) — research
|
||
and re-expose Disable where still feasible on A16. **Later (final ROM):**
|
||
system components (microG, Magisk, project Phonesky, other bundled system
|
||
apps) MUST remain **sideload-updatable** on a shipping build — owner plans
|
||
refreshes every **2–3 months** without a full ROM reflash. Packaging MUST
|
||
preserve update paths (same signing identity / PRESIGNED where applicable;
|
||
document Magisk update path separately from APK sideload if boot-preroot).
|
||
|
||
|
||
## Context / non-goals
|
||
|
||
**Product intent (this feature is normative for the AXP resurrection ship):**
|
||
|
||
- This feature is an **AXP.OS resurrection** on LineageOS 23.2 / Android 16
|
||
`sunfish`: same capability set as AXP on LOS22 / GOLDEN, moved to LOS23.
|
||
- Base ROM = LineageOS 23.2 / Android 16 `sunfish` vanilla from `003` (or the
|
||
best known-good vanilla-equivalent flashable baseline already proven on LAB).
|
||
- Feature source of truth for *what* to ship = what AXP.OS Pro / GOLDEN
|
||
provides on LOS22 (inventory in `002`, product catalog in
|
||
`docs/axp-pro-parity.md`), **without omitting AXP capabilities as “decide
|
||
later” rows**, including Magisk-class root and AXP-class hardening /
|
||
signing / AVB posture that GOLDEN represents.
|
||
- Versions = **newest stable** (or newest tagged pre-release the upstream
|
||
project currently ships) for each system/bundled component, constrained to
|
||
what still works on sunfish / non-GKI 4.14 / LOS 23.2 — not stale laptop
|
||
caches or shallow-clone version lies.
|
||
- **Phonesky exception:** ship the project's **already patched / fixed
|
||
Phonesky** from the recent host pipeline (not “whatever newest Play APK
|
||
is today”). If that build is missing fixes that GOLDEN's Phonesky path
|
||
still needs for daily-driver parity, stop and reconsider the Phonesky
|
||
plan before accepting the feature.
|
||
- **WebView exception:** do **not** ship Aosmium (EOL). Default WebView =
|
||
LineageOS 23's WebView. The ROM MUST keep Android's multi-provider path so
|
||
the owner can install another WebView later and select it (Developer
|
||
options → WebView implementation) — not locked to a single provider.
|
||
- Flash / experiment **LAB only**; GOLDEN remains the read-only oracle
|
||
(`docs/device-roles.md`).
|
||
|
||
**Relationship to earlier features:**
|
||
|
||
- `001`–`003` remain shared foundation (host, GOLDEN capture, vanilla build).
|
||
- **Two parallel product tracks** (neither deletes the other):
|
||
- **Standby / prior track:** `004`–`008` + `007` KernelSU (+ deferred
|
||
`006`/`010`–`013` as previously planned). Kept intact for later resume;
|
||
live on its own git branch once pushed (see plan notes).
|
||
- **Active Magisk-resurrection track (this feature):** AXP→LOS23 ship with
|
||
Magisk like GOLDEN. Does **not** rewrite or remove `004`–`008`/`007`
|
||
specs; it is a new Speckit directory that may **reuse** proven LAB
|
||
runbooks/results from those features when helpful.
|
||
- KernelSU / SusFS from `007` stays **out of this track’s ship** for now.
|
||
Recycle of the two functional `007` kernels is optional (FR-016) — never an
|
||
acceptance gate for Magisk.
|
||
- Project-only `FLAG_SECURE` global override may still ship if already
|
||
specified under `008` (not AXP catalog); it is optional relative to AXP
|
||
resurrection acceptance. AXP call-recording unlock **is** required and must
|
||
be selectable.
|
||
|
||
**Out of scope for this feature (explicit):**
|
||
|
||
- Flashing or modifying GOLDEN.
|
||
- Committing proprietary Google Phonesky APK bytes, private keys, or personal
|
||
identifiers to Git.
|
||
- Replacing the LOS 23.2 sunfish kernel/device stack with an unrelated prebuilt
|
||
(Graphene A13, stock A13, etc.).
|
||
- Shipping Aosmium / AOSmium as the default or only WebView (EOL).
|
||
- Building a custom AXP-style backup/restore ROM feature (personal backup
|
||
remains an external user tool if needed).
|
||
- Claiming Yuh hardware-attestation PASS if GOLDEN itself currently FAILs that
|
||
path — banking attestation is deferred with the banking workflow (owner
|
||
future); do not treat Swissquote/Yuh as ship gates here.
|
||
- Deleting or rewriting the standby KernelSU / split-roadmap specs
|
||
(`004`–`008`/`007`) — they remain valid on the standby branch/track.
|
||
- Shipping KernelSU-Next as this track’s root (out of ship here; Magisk is
|
||
the resurrection root). Optional later reuse of `007` kernels is allowed
|
||
under FR-016 but MUST NOT delay Magisk acceptance.
|
||
- Resolving localization/location-hardening policy vs LOS defaults in this
|
||
feature’s acceptance (deferred research FR-018 — compare AXP vs LOS later).
|
||
- Integrating AXP **external** F-Droid/market repos or AXP **OTA** update
|
||
servers (EOL; servers down — no sense).
|
||
- Shipping NeoLauncher.
|
||
- Hard-wiring `axp.os` branding/endpoints into Internet-connectivity /
|
||
network UX (keep the permission/connectivity *behaviour* where practical).
|
||
|
||
## User Scenarios & Testing *(mandatory)*
|
||
|
||
### User Story 1 - AXP resurrection daily-driver on LAB (Priority: P1)
|
||
|
||
As the owner, after flashing one LAB build produced under this feature, the
|
||
phone boots and presents an **updated AXP-class clone on LOS23**: Google
|
||
compatibility stack, Play, selectable call recording unlock, Magisk root/hide
|
||
workflow like GOLDEN, AXP options/settings surface, userspace hardening /
|
||
signing posture, bundled usability apps, and an updated hardened sunfish
|
||
kernel — except WebView as defined here. Banking/Island validation is
|
||
**out of this story’s acceptance** (deferred to owner future / US3).
|
||
|
||
**Why this priority**: This is the whole reason for the resurrection.
|
||
|
||
**Independent Test**: Flash one `009` build to LAB; walk the GOLDEN daily
|
||
checklist minus banking (microG Self-Check, Play open/install, call-record
|
||
toggle off/on, spoofing toggle off/on, Magisk present in AXP-like install
|
||
state, bundled apps present, hardening/signing + kernel hardening checks);
|
||
compare against `002` inventory categories.
|
||
|
||
**Acceptance Scenarios**:
|
||
|
||
1. **Given** LAB on a vanilla `003` baseline (or documented equivalent),
|
||
**When** the `009` image is flashed, **Then** the device boots to home and
|
||
cellular/Wi‑Fi/basic hardware still work as in the vanilla smoke.
|
||
2. **Given** that build, **When** I compare shipped capability categories to
|
||
GOLDEN/AXP Pro (Google stack, Play, selectable spoofing, selectable call
|
||
recording unlock, Magisk/DenyList-class path, DNS/hosts privacy helpers if
|
||
present on GOLDEN, F‑Droid/Aurora/launcher/gallery-class bundled apps,
|
||
userspace hardening/signing/AVB class, kernel update + hardening class),
|
||
**Then** no category is left as “decide / later” without an explicit
|
||
obsolescence or **deferred** note (WebView exception FR-015; banking
|
||
deferred FR-006/FR-007; localization hardening compare deferred FR-018).
|
||
3. **Given** Git and host artifact policy, **When** inspected, **Then** no
|
||
proprietary Phonesky APK bytes or secrets were committed.
|
||
|
||
---
|
||
|
||
### User Story 2 - Google stack: newest microG + project Phonesky (Priority: P1)
|
||
|
||
As the owner, newest-stable microG + GSF Proxy integrate with the project's
|
||
recent patched Phonesky so I can open Play, sign in as needed, and
|
||
install/update apps the same way I do on AXP; signature spoofing is
|
||
selectable (off = stock-safe default behaviour; on = needed Play/microG
|
||
path).
|
||
|
||
**Why this priority**: Without Play/microG parity, the ROM is not a daily
|
||
driver.
|
||
|
||
**Independent Test**: microG Self-Check; Phonesky launches; install or update
|
||
at least one ordinary app; toggle spoofing off/on and confirm expected
|
||
behaviour; push notifications smoke for a known test app.
|
||
|
||
**Acceptance Scenarios**:
|
||
|
||
1. **Given** the `009` build on LAB, **When** microG Settings Self-Check runs
|
||
with spoofing enabled as required, **Then** checks required for basic
|
||
Google compatibility pass (or each remaining failure is documented as
|
||
attestation/hardware outside packaging).
|
||
2. **Given** the project's current patched Phonesky host artifacts, **When**
|
||
the ROM is built and flashed, **Then** `com.android.vending` is present as
|
||
privileged Play and opens on LAB.
|
||
3. **Given** selectable signature spoofing, **When** the owner turns it on,
|
||
**Then** Play install/update works with microG without FakeStore; **When**
|
||
turned off, **Then** the device does not expose unrestricted spoofing to
|
||
arbitrary apps.
|
||
4. **Given** version policy, **When** microG / GSF versions are recorded,
|
||
**Then** each is the newest stable (or tagged pre-release upstream
|
||
currently ships) verified on this stack; Phonesky version matches the
|
||
project patched artifact (not a blind “newest Play from the internet”).
|
||
5. **Given** Play behaviour on LAB, **When** compared to GOLDEN needs, **Then**
|
||
if the project Phonesky lacks a GOLDEN-class fix required for daily use,
|
||
acceptance stops and the Phonesky plan is reconsidered.
|
||
|
||
---
|
||
|
||
### User Story 3 - Banking profile workflow parity (Priority: P3 — deferred)
|
||
|
||
As the owner, **later** I can recreate the GOLDEN banking layout on LAB:
|
||
Island + Magisk DenyList-class hiding + Swissquote/Yuh. This is explicitly
|
||
**not** required to accept the AXP-on-LOS23 clone for functionalities,
|
||
options, hardening, security, or kernel work.
|
||
|
||
**Why this priority**: Owner (2026-09-17) — banking is a future personal
|
||
problem; do not block the updated AXP clone on bank gates.
|
||
|
||
**Independent Test** *(when owner resumes)*: Install Swissquote and attempt
|
||
Yuh; Island; Magisk DenyList; record PASS/FAIL honestly vs GOLDEN.
|
||
|
||
**Acceptance Scenarios** *(deferred — not ship gates)*:
|
||
|
||
1. **Given** Island on LAB, **When** the owner follows the GOLDEN banking
|
||
install order, **Then** Swissquote reaches a usable logged-in state in the
|
||
managed profile.
|
||
2. **Given** Yuh on the same workflow, **When** tested, **Then** either it
|
||
PASSes or the failure matches the known GOLDEN attestation-class failure
|
||
and is documented — not a silent packaging regression.
|
||
3. **Given** Magisk is present on the build, **When** banking apps run with
|
||
DenyList-class configuration, **Then** they do not receive root.
|
||
|
||
---
|
||
|
||
### User Story 4 - Magisk like GOLDEN + selectable call recording (Priority: P1)
|
||
|
||
As the owner, Magisk is present the way AXP/GOLDEN presents it (newest Magisk;
|
||
preinstalled but not fully activated until I finish setup — exact UX measured
|
||
from GOLDEN), with DenyList-class hiding; call recording unlock is selectable
|
||
like other Developer Options toggles.
|
||
|
||
**Why this priority**: Root and call recording are core AXP daily behaviours.
|
||
|
||
**Independent Test**: Confirm Magisk package/binary layout vs GOLDEN notes;
|
||
complete activation on LAB if required; DenyList a test app; toggle call
|
||
recording unlock off (restricted) and on (record allowed).
|
||
|
||
**Acceptance Scenarios**:
|
||
|
||
1. **Given** a fresh `009` flash, **When** inspected, **Then** Magisk is
|
||
present in an AXP-like preinstalled / not-fully-activated state consistent
|
||
with GOLDEN measurement, using the newest Magisk stable that works on this
|
||
stack.
|
||
2. **Given** Magisk setup completed on LAB, **When** DenyList-class hiding is
|
||
configured for a test package, **Then** that package does not receive root
|
||
(banking packages deferred with US3).
|
||
3. **Given** selectable call recording unlock, **When** OFF, **Then** stock
|
||
LOS country/carrier style restrictions apply; **When** ON, **Then** Dialer
|
||
can record on LAB without that block.
|
||
|
||
---
|
||
|
||
### User Story 5 - AXP usability, options, hardening + kernel (Priority: P1)
|
||
|
||
As the owner, the ROM ships the rest of the AXP usability/privacy surface,
|
||
AXP-class options/settings behaviour, GOLDEN-class userspace hardening /
|
||
signing / AVB posture, and an **updated LOS 23.2 sunfish kernel with
|
||
attributable hardening** (AXP / Graphene / Divest class where still valid on
|
||
non-GKI 4.14), at newest workable stables, with LOS23 WebView default and an
|
||
unlocked provider chooser. Localization/location-hardening delta vs LOS is
|
||
**out of scope for now** (FR-018 later).
|
||
|
||
**Why this priority**: Owner (2026-09-17) — this is the core of “clon
|
||
actualizado de AXP”, ahead of banking.
|
||
|
||
**Independent Test**: Package list vs `002`; open bundled apps; confirm
|
||
default WebView is LOS; userspace hardening/signing checks; kernel version /
|
||
hardening patch attribution recorded for the accepted build.
|
||
|
||
**Acceptance Scenarios**:
|
||
|
||
1. **Given** the `009` build, **When** I list bundled system/user apps in the
|
||
AXP usability set, **Then** each GOLDEN/AXP category is present or
|
||
explicitly marked impossible on Android 16/sunfish with rationale
|
||
(Aosmium absence is the allowed WebView exception; banking tools may ship
|
||
as packages without Gate E validation).
|
||
2. **Given** Developer options, **When** I open WebView implementation,
|
||
**Then** LOS23 WebView is available/default and the chooser is not locked
|
||
against future alternate providers.
|
||
3. **Given** version policy, **When** bundled apps (except Phonesky per
|
||
FR-004) are recorded, **Then** each is newest stable that still runs on
|
||
the ROM.
|
||
4. **Given** GOLDEN/AXP hardening and signing expectations, **When** the
|
||
accepted build is evaluated, **Then** equivalent class of userspace
|
||
protections / signing posture is present or each gap is documented as
|
||
impossible on this stack — not silently dropped.
|
||
5. **Given** the LOS 23.2 sunfish kernel tree, **When** the accepted boot
|
||
image is built, **Then** it is an updated lineage/sunfish-compatible
|
||
kernel (not an unrelated prebuilt) with attributable hardening patches
|
||
applied or each skipped hardening item documented.
|
||
|
||
---
|
||
|
||
### User Story 6 - Parallel tracks stay honest (Priority: P2)
|
||
|
||
As the owner, docs make clear that **this** Speckit is the Magisk AXP
|
||
resurrection track on LOS23, while the prior KernelSU / split roadmap remains
|
||
on standby (other branch / same `004`–`008`/`007` specs untouched).
|
||
|
||
**Why this priority**: Lets either track resume without rewriting history.
|
||
|
||
**Independent Test**: `specs/004`–`008`/`007` still exist unchanged in intent;
|
||
`009` describes Magisk resurrection; git branches separate standby vs active
|
||
work when published.
|
||
|
||
**Acceptance Scenarios**:
|
||
|
||
1. **Given** the repo, **When** inspected, **Then** `001`–`008`/`007` spec
|
||
directories remain present (not deleted by `009`).
|
||
2. **Given** `009`, **When** read as ship intent for Magisk resurrection,
|
||
**Then** it does not claim to permanently retire the standby track — only
|
||
that KernelSU is out of *this* track’s ship for now.
|
||
|
||
---
|
||
|
||
### Edge Cases
|
||
|
||
- Newer “stable” of a bundled app breaks Android 16 / sunfish: pin last known
|
||
good, document the regression, and retry when a fixed release exists.
|
||
- Project Phonesky missing a GOLDEN-class fix: halt acceptance; reconsider
|
||
Phonesky patch/version plan before claiming Play parity.
|
||
- Magisk “preinstalled but not fully installed” UX differs across Magisk
|
||
versions: match GOLDEN's *class* of first-boot/setup behaviour; document
|
||
exact measured steps from GOLDEN before freezing LAB instructions.
|
||
- GOLDEN Yuh FAIL vs LAB FAIL: distinguish attestation/hardware class from
|
||
packaging/spoofing regressions.
|
||
- Vanilla LOS already provides an AXP capability (e.g. WireGuard, encryption):
|
||
keep LOS behaviour; do not duplicate.
|
||
- Dirty upgrade from older LAB experimental (incl. KernelSU) images: prefer
|
||
clean flash for acceptance.
|
||
- Phonesky host artifacts missing or wrong signature: fail closed — never
|
||
silently fall back to FakeStore.
|
||
- Alternate WebView installed by user later: selection must remain possible;
|
||
default remains LOS23 WebView until the user changes it.
|
||
- Localization/location hardening: AXP historically more aggressive than LOS
|
||
in places the owner dislikes; **do not decide** AXP-vs-LOS location policy
|
||
in this feature’s acceptance — compare later (FR-018).
|
||
|
||
## Requirements *(mandatory)*
|
||
|
||
### Functional Requirements
|
||
|
||
- **FR-001**: The project MUST produce a flashable LineageOS 23.2 / Android 16
|
||
`sunfish` build that resurrects the AXP.OS on LOS22 / GOLDEN capability set
|
||
(including Magisk-class root, GOLDEN-class userspace hardening / signing /
|
||
AVB posture, and an updated hardened sunfish kernel per FR-017), without
|
||
leaving AXP capabilities as open “decide” omissions except documented
|
||
exceptions/deferrals (WebView FR-015; banking FR-006/FR-007; localization
|
||
compare FR-018).
|
||
- **FR-002**: Version selection for system and bundled components (except
|
||
Phonesky per FR-004) MUST prefer the newest stable (or newest tagged
|
||
pre-release upstream currently ships) that still works on sunfish /
|
||
LOS 23.2; GOLDEN versions are a floor reference, not a freeze.
|
||
- **FR-003**: The ROM MUST ship newest-stable microG Services Core and GSF
|
||
Proxy integrated with the project Phonesky (no FakeStore as primary Play).
|
||
- **FR-004**: The ROM MUST ship the project's recent patched Phonesky as
|
||
privileged `com.android.vending`, with a documented host-side obtain /
|
||
patch / sign / deploy path that never commits APK bytes to Git. If that
|
||
artifact lacks GOLDEN-class fixes required for daily-driver Play behaviour,
|
||
the Phonesky plan MUST be reconsidered before acceptance.
|
||
- **FR-005**: The ROM MUST provide **selectable** signature spoofing for the
|
||
microG + Phonesky path (owner-controlled toggle; default safe/off or
|
||
project-documented default). Spoofing MUST remain restricted/controlled —
|
||
not unrestricted platform spoofing for all apps.
|
||
- **FR-006**: *(Deferred — owner future)* The ROM SHOULD support the GOLDEN
|
||
managed-profile banking workflow (Island as measured on GOLDEN) including
|
||
Swissquote PASS. This is **not** an acceptance gate for the AXP clone MVP.
|
||
- **FR-007**: *(Deferred — owner future)* Banking applications SHOULD run
|
||
without being granted root (Magisk DenyList-class hiding). Magisk MUST still
|
||
provide DenyList-class capability for general use (FR-010); bank-specific
|
||
validation is deferred with FR-006.
|
||
- **FR-008**: The ROM MUST include **selectable** AXP-equivalent call
|
||
recording unlock (toggle; OFF = stock LOS restrictions, ON = unlock).
|
||
- **FR-009**: The ROM MUST include the AXP usability/privacy bundled surface
|
||
present on GOLDEN / AXP Pro (stores, launcher/gallery-class apps, DNS/hosts
|
||
or equivalent blockers when part of that surface) at newest workable
|
||
stables, subject to FR-015 for WebView.
|
||
- **FR-010**: The ROM MUST ship **Magisk** like GOLDEN: newest Magisk stable
|
||
that works on this stack, in an AXP-like preinstalled but not fully
|
||
activated layout (exact first-boot/setup behaviour measured from GOLDEN),
|
||
with DenyList-class hiding available. KernelSU is **out of ship for now**
|
||
(not the resurrection root path).
|
||
- **FR-011**: The feature acceptance gate MUST include GOLDEN/AXP-class
|
||
userspace hardening and signing / AVB posture (as applicable on LOS 23.2 /
|
||
sunfish), not only apps and Google compatibility. Gaps MUST be documented
|
||
as impossible on this stack rather than silently omitted.
|
||
- **FR-012**: Acceptance flashing MUST use LAB only; GOLDEN MUST remain
|
||
unmodified by this feature's work.
|
||
- **FR-013**: Each shipped capability MUST be attributable (what upstream or
|
||
AXP behaviour it reproduces) and reversible (known-good prior LAB image
|
||
retained).
|
||
- **FR-014**: This feature MUST live as a **new Speckit** (`009`) in parallel
|
||
with the standby KernelSU / split roadmap (`004`–`008`/`007`). Those older
|
||
specs MUST NOT be deleted or rewritten to match Magisk resurrection.
|
||
Reusable runbooks/results from them MAY be referenced. For *this* track’s
|
||
ship only, Magisk (not KernelSU) is the root path.
|
||
- **FR-015**: Default WebView MUST be LineageOS 23's WebView. Aosmium MUST NOT
|
||
be required. The ROM MUST keep WebView provider selection available so a
|
||
future alternate WebView can be installed and chosen.
|
||
- **FR-016**: Existing functional KernelSU / related kernels and artifacts
|
||
from `007` SHOULD be retained and MAY be recycled when useful (reference
|
||
boot images, differential debugging, or a later optional non-ship path).
|
||
Such reuse is **optional** (“si se puede, ok”), MUST NOT become an
|
||
acceptance requirement for Magisk resurrection, and MUST NOT imply KernelSU
|
||
is back in the ship path unless a future spec explicitly says so.
|
||
- **FR-017**: The ship MUST use an **updated** LineageOS 23.2–compatible
|
||
`sunfish` kernel (current lineage/kernel_google_sunfish or project-tracked
|
||
equivalent — not an unrelated Graphene A13 / stock A13 prebuilt), with
|
||
**attributable kernel hardening** ported from AXP / Graphene / Divest where
|
||
still valid on non-GKI 4.14. Skipped items MUST be documented with rationale.
|
||
- **FR-018**: *(Deferred research — look later)* Compare how AXP/GOLDEN
|
||
hardens or constrains **localization / location** (network location,
|
||
backends, permissions, privacy toggles) versus stock LineageOS 23 behaviour.
|
||
Owner historically finds AXP aggressive here; do **not** freeze a
|
||
clone-or-LOS policy in this feature’s acceptance until that comparison
|
||
exists. Default until then: do not silently invent extra location lockdown
|
||
beyond what the rest of the AXP clone already implies; record the open
|
||
question in the capability matrix.
|
||
- **FR-019**: On a **final** shipping `009` image, owner MUST be able to
|
||
refresh bundled **system / privileged** packages by **sideload** (or the
|
||
documented Magisk-equivalent path) roughly every **2–3 months**, without
|
||
requiring a full ROM reflash for routine bumps of at least: **microG
|
||
(GmsCore / companions)**, **Magisk**, **project Phonesky**, and other
|
||
project-bundled system apps that the capability inventory treats as
|
||
updatable. Packaging MUST preserve PackageManager update eligibility
|
||
(matching signing identity; **PRESIGNED** where upstream expects
|
||
self-updates; project-key continuity for Phonesky). Magisk MAY use its
|
||
normal manager / boot-image update flow when APK-only sideload is
|
||
insufficient — that path MUST be documented in the recovery/sideload
|
||
runbook. This does **not** restore AXP external repos or OTA (still
|
||
forbidden); updates are owner-driven sideload / recovery packages.
|
||
|
||
### Key Entities
|
||
|
||
- **Vanilla baseline**: The LOS 23.2 sunfish build from `003` (or documented
|
||
equivalent) before AXP feature integration.
|
||
- **AXP capability set**: Inventory of features/packages/behaviours from
|
||
GOLDEN (`002`) plus AXP Pro catalog rows promoted by this spec
|
||
(resurrection target).
|
||
- **Version pin record**: Documented package/component versions chosen for the
|
||
accepted `009` build (newest workable stable each; Phonesky = project
|
||
artifact id/version; kernel rev + hardening patch list).
|
||
- **Phonesky host artifact**: Project patched/signed Play APK and permission
|
||
metadata kept outside Git on the build host.
|
||
- **Magisk preinstall state**: Measured GOLDEN/AXP layout for Magisk present
|
||
but not fully activated, plus LAB setup steps.
|
||
- **Hardened sunfish kernel**: Updated LOS23-compatible kernel build +
|
||
attributed hardening patch set for FR-017.
|
||
- **LAB acceptance build**: Flashable image set + hashes + smoke / Magisk /
|
||
userspace+kernel hardening results for this feature (banking evidence
|
||
optional/deferred).
|
||
|
||
## Success Criteria *(mandatory)*
|
||
|
||
### Measurable Outcomes
|
||
|
||
- **SC-001**: One LAB flash of a `009` build boots and completes the vanilla
|
||
hardware smoke within the same session as flash (owner can place a call,
|
||
use Wi‑Fi, and unlock the device).
|
||
- **SC-002**: 100% of AXP resurrection capability categories from the agreed
|
||
inventory are either demonstrated on LAB, marked deferred (banking,
|
||
localization compare), or explicitly documented as impossible on Android
|
||
16/sunfish — zero silent omissions (WebView exception allowed only as
|
||
FR-015).
|
||
- **SC-003**: With spoofing enabled as required, microG Self-Check required
|
||
items and project Phonesky open/install succeed on LAB for ordinary apps on
|
||
the first accepted build candidate (or within one documented fix iteration).
|
||
- **SC-004**: *(Deferred with US3)* Swissquote managed-profile + Magisk
|
||
DenyList-class workflow PASSes on LAB when owner resumes banking; not
|
||
required for AXP-clone MVP acceptance.
|
||
- **SC-005**: Every bundled/system app version in the acceptance record
|
||
(except Phonesky) is newer than or equal to GOLDEN's measured version,
|
||
unless a newer release was tried and failed with a written regression note;
|
||
Phonesky matches the recorded project patched artifact.
|
||
- **SC-006**: Owner can turn signature spoofing and call recording unlock off
|
||
and on and observe the documented behaviour each time.
|
||
- **SC-007**: Magisk is present post-flash in the AXP-like preinstall state and
|
||
can be fully activated on LAB using documented steps measured from GOLDEN.
|
||
- **SC-008**: Default WebView is LOS23's; provider selection remains available.
|
||
- **SC-009**: Owner can perform the GOLDEN-equivalent daily checklist on LAB
|
||
**excluding deferred banking** without consulting a scatter of conflicting
|
||
feature specs for what “ships”.
|
||
- **SC-010**: Accepted build records kernel revision + hardening attribution
|
||
list (applied / skipped+why) satisfying FR-017.
|
||
- **SC-011**: Acceptance docs list, for each FR-019 component, the intended
|
||
update channel (sideload APK / recovery zip / Magisk self-update) and confirm
|
||
signing identity is not broken by packaging (PRESIGNED or project key as
|
||
applicable). Full 2–3 month refresh drill MAY wait until a final ROM
|
||
candidate; packaging regressions that block updates MUST be fixed before
|
||
ship.
|
||
|
||
## Assumptions
|
||
|
||
- `003` vanilla LOS 23.2 sunfish is (or becomes) available as the integration
|
||
base; LAB stock rescue from `002` remains valid.
|
||
- GOLDEN inventory (`002`) plus AXP Pro docs are sufficient to enumerate the
|
||
capability set; live `adb` re-query of GOLDEN is allowed (especially Magisk
|
||
preinstall/activation details).
|
||
- “AXP resurrection” / updated clone means Magisk + GOLDEN-class userspace
|
||
hardening/signing/AVB + AXP user/options surface + updated hardened kernel
|
||
on LOS23, with WebView, Phonesky-artifact, banking-deferral, and
|
||
localization-compare exceptions as stated.
|
||
- Island / banking validation is owner-future; shipping Island as a bundled
|
||
app is optional and does not imply Gate E.
|
||
- FakeStore is never the primary Play path.
|
||
- Selectable spoofing and selectable call recording follow the same class of
|
||
Developer Options UX already explored in `005`/`008` runbooks where useful.
|
||
- Project `FLAG_SECURE` override is nice-to-have, not an AXP resurrection
|
||
hard gate.
|
||
- Personal app/data backup is not a ROM feature gate.
|
||
- Builds and long compiles run on `rom-dev01`; laptop holds docs/specs and
|
||
flash tools only.
|
||
- Prior KernelSU LAB experiments (including the two functional kernels already
|
||
built) are **out of ship for now** but kept as recyclable assets: reuse if
|
||
helpful, never required for Magisk acceptance.
|
||
- Localization hardening AXP-vs-LOS comparison is intentionally postponed
|
||
(FR-018); do not block MVP on it.
|
||
- No AXP-style OTA or external repos; periodic system-package refresh is
|
||
**owner sideload** (FR-019), not a network updater in the ROM.
|
||
- microG stays PRESIGNED / replace-prebuilt so same-signer updates remain
|
||
possible; Phonesky stays on the project signing key across releases;
|
||
Magisk update docs cover manager + any boot re-patch when needed.
|