Files
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

184 lines
6.5 KiB
Markdown
Raw Permalink 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.
# 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.