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:
commit
12d2179c20
150 files changed
+26263
No files matched your search
@@ -0,0 +1,183 @@
|
||||
# Feature Specification: LineageOS 23.2 vanilla build for sunfish
|
||||
|
||||
**Feature Branch**: `003-lineage-23-vanilla-build`
|
||||
|
||||
**Created**: 2026-08-09
|
||||
|
||||
**Status**: Active — implementation next (vanilla sync/build on `rom-dev01`)
|
||||
|
||||
**Input**: Produce the first vanilla LineageOS 23.2 / Android 16 build for
|
||||
`sunfish`, copy images to the laptop, flash, and verify boot plus basic
|
||||
hardware — with no microG, KernelSU, or hardening yet.
|
||||
|
||||
## Context / non-goals
|
||||
|
||||
**Prerequisites:**
|
||||
|
||||
- `001-development-environment` sufficiently complete to sync/build;
|
||||
- `002-axp-reference-capture` P1 complete (GOLDEN labeled; LAB stock rescue
|
||||
documented). Flash **LAB only** — never GOLDEN (`docs/device-roles.md`).
|
||||
|
||||
**Out of scope for this feature:**
|
||||
|
||||
- microG / Phonesky / signature spoofing;
|
||||
- KernelSU / SUSFS / Magisk parity;
|
||||
- call recording, FLAG_SECURE toggles, privacy extras;
|
||||
- project signing / AVB / OTA implementation;
|
||||
- Graphene/AXP/Divest patch ports.
|
||||
|
||||
Build target: **`userdebug`** with development/test-keys.
|
||||
|
||||
## User Scenarios & Testing *(mandatory)*
|
||||
|
||||
### User Story 1 - Reproducible vanilla sync & build (Priority: P1)
|
||||
|
||||
As the developer, I can sync LineageOS 23.2 for sunfish on `rom-dev01` and
|
||||
complete a build that emits flashable images, with manifest/revisions recorded.
|
||||
|
||||
**Why this priority**: Establishes the real base ROM.
|
||||
|
||||
**Independent Test**: Build finishes; artifact paths listed; manifest revision
|
||||
document stored under `/srv/rom` with hashes.
|
||||
|
||||
**Acceptance Scenarios**:
|
||||
|
||||
1. **Given** `android-build` on `rom-dev01`, **When** I sync the LOS 23.2
|
||||
sunfish source via `repo`, **Then** the tree matches a documented manifest
|
||||
revision.
|
||||
2. **Given** the synced tree, **When** I build `userdebug` for sunfish with
|
||||
conservative parallelism, **Then** the build completes without requiring
|
||||
project patches beyond LOS-needed device/kernel trees.
|
||||
3. **Given** a successful build, **When** I collect outputs, **Then** images/
|
||||
zip needed to flash sunfish are in `/srv/rom/artifacts` (or documented path)
|
||||
with SHA-256 hashes and a compressed build log.
|
||||
|
||||
---
|
||||
|
||||
### User Story 2 - Flash from laptop (Priority: P1)
|
||||
|
||||
As the developer, I `rsync` artifacts to the laptop and flash the Pixel 4a over
|
||||
USB using fastboot/adb, following the recovery notes from `002` if something
|
||||
fails.
|
||||
|
||||
**Why this priority**: Closes the loop on the thin-client workflow.
|
||||
|
||||
**Independent Test**: Device boots the new build; `getprop` shows LineageOS /
|
||||
expected fingerprints (not AXP).
|
||||
|
||||
**Acceptance Scenarios**:
|
||||
|
||||
1. **Given** artifacts on the laptop, **When** I flash per documented steps,
|
||||
**Then** the device boots into the vanilla LOS build.
|
||||
2. **Given** a failed flash/boot on **LAB**, **When** I follow `002` LAB stock
|
||||
factory rescue docs, **Then** LAB returns to usable stock. GOLDEN is not
|
||||
touched.
|
||||
|
||||
---
|
||||
|
||||
### User Story 3 - Basic hardware smoke test (Priority: P1)
|
||||
|
||||
As the developer, after first boot I verify essential radios and peripherals
|
||||
well enough to trust this build as the clean base for later features — and I
|
||||
know what was already broken on **vanilla** LOS before we add patches.
|
||||
|
||||
**Why this priority**: A boot-only “success” that breaks telephony/Wi-Fi is not
|
||||
a usable base. Later regressions must be attributable.
|
||||
|
||||
**Independent Test**: Checklist results stored for P1 and extended items on the
|
||||
vanilla build.
|
||||
|
||||
**Acceptance Scenarios**:
|
||||
|
||||
1. **Given** first boot completed, **When** I run the **P1 smoke** set, **Then**
|
||||
each item either works or is logged as a blocking defect with evidence:
|
||||
|
||||
- encryption / PIN
|
||||
- SELinux mode (`Enforcing` expected)
|
||||
- Android security patch level
|
||||
- vendor security patch level / build baseline
|
||||
- SIM detection
|
||||
- mobile data
|
||||
- phone calls
|
||||
- SMS (send/receive as applicable)
|
||||
- Wi-Fi
|
||||
- Bluetooth
|
||||
- GPS
|
||||
- camera(s)
|
||||
- audio (speaker/mic)
|
||||
- NFC
|
||||
- sensors (basic)
|
||||
- fingerprint
|
||||
- USB data / ADB
|
||||
- charging
|
||||
|
||||
2. **Given** P1 smoke done, **When** I run the **extended baseline** set,
|
||||
**Then** each is recorded (need not all be P1 blockers, but must not be
|
||||
skipped silently):
|
||||
|
||||
- airplane mode
|
||||
- flashlight
|
||||
- vibration
|
||||
- screen rotation
|
||||
- USB OTG (if hardware/cable available)
|
||||
- headphone jack
|
||||
- WebView implementation / basic page load
|
||||
- app sideload install smoke (non-Google)
|
||||
- Widevine / DRM security level
|
||||
- eSIM capability/state, if available
|
||||
- WireGuard kernel capability/baseline
|
||||
- bootloader version
|
||||
- baseband / modem version
|
||||
|
||||
3. **Given** smoke results, **When** deciding to proceed to `004`, **Then** no
|
||||
unresolved P1 hardware blockers remain (or they are explicitly accepted with
|
||||
rationale).
|
||||
|
||||
---
|
||||
|
||||
### Edge Cases
|
||||
|
||||
- Build disk/oom with 52 GB + swap: document job `-j` and failure recovery
|
||||
(`out/` cleanup).
|
||||
- Partial artifact set: do not flash until required partitions/images are
|
||||
present and hashed.
|
||||
- Do not install Magisk/KernelSU “just to test” in this feature.
|
||||
|
||||
## Requirements *(mandatory)*
|
||||
|
||||
### Functional Requirements
|
||||
|
||||
- **FR-001**: Initialize from the documented official LineageOS 23.2
|
||||
manifest/branch (`repo init` → sync) and capture a revision-locked resolved
|
||||
manifest (e.g. `repo manifest -r`) for every known-good build.
|
||||
- **FR-002**: Build `userdebug` images with test-keys / default LOS signing for
|
||||
this stage.
|
||||
- **FR-003**: Record manifest, revisions, build variant, config, hashes, and
|
||||
compressed log for the successful build.
|
||||
- **FR-004**: Publish artifacts to `/srv/rom/artifacts` and document `rsync` +
|
||||
flash procedure.
|
||||
- **FR-005**: Boot sunfish on the vanilla build and run the P1 + extended
|
||||
hardware/baseline checklist (record results even for non-blockers).
|
||||
- **FR-006**: Keep tree free of microG/Phonesky/KernelSU/hardening patches
|
||||
intended for later features.
|
||||
- **FR-007**: On LAB flash failure, follow `002` LAB stock factory rescue; never
|
||||
flash or wipe GOLDEN as part of recovery.
|
||||
|
||||
### Key Entities
|
||||
|
||||
- **Vanilla LOS build**: clean base artifact set.
|
||||
- **Build metadata**: manifest + hashes + log bundle.
|
||||
- **Smoke checklist**: hardware/regression minimum for this stage.
|
||||
|
||||
## Success Criteria *(mandatory)*
|
||||
|
||||
### Measurable Outcomes
|
||||
|
||||
- **SC-001**: One successful sunfish `userdebug` build exists with recorded
|
||||
metadata and hashes.
|
||||
- **SC-002**: Device boots that build after laptop-side flash.
|
||||
- **SC-003**: P1 and extended hardware/baseline checklists are completed and
|
||||
stored (extended items may be non-blocking but must be recorded).
|
||||
- **SC-004**: No dependency on LSPosed/Magisk modules for this stage’s success.
|
||||
- **SC-005**: This build is tagged/kept as a known-good flashable baseline for
|
||||
regression when later features break the device.
|
||||
Reference in new issue
Block a user