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

+183
View File
@@ -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.