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

7.6 KiB
Raw Permalink Blame History

Feature Specification: microG + GSF Proxy + patched Phonesky

Feature Branch: 004-microg-phonesky-integration
Created: 2026-09-14
Status: Draft
Input: Continue after 003 gate — integrate Google compatibility stack on LAB vanilla LOS 23.2 / Android 16 (sunfish), without Magisk/KernelSU yet.

User Scenarios & Testing (mandatory)

User Story 1 - microG Self-Check green on LAB (Priority: P1)

As the developer, after flashing a build that includes microG + GSF Proxy, I can open microG Settings Self-Check and see the checks required for basic Google compatibility pass (or document exact remaining gaps owned by 005).

Why this priority: Without a working microG core, Play and banking paths cannot start.

Independent Test: Flash LAB-only build; open microG Self-Check; capture screenshots/log; no Magisk/KSU installed.

Acceptance Scenarios:

  1. Given LAB on 003 vanilla baseline, When a 004 build is flashed, Then com.google.android.gms and com.google.android.gsf are present as system packages and microG Settings opens.
  2. Given microG is configured (device registration as required), When Self-Check runs, Then either all P1 checks pass, or each failure is explicitly attributed to signature spoofing (005) vs packaging error.

User Story 2 - Patched Phonesky as priv-app (Priority: P1)

As the developer, patched Play Store (com.android.vending) is installed as a privileged system app with required permission XMLs, obtained/patched/signed via a documented host-side procedure (APK never committed to Git).

Why this priority: Constitution requires AXP-style patched Phonesky, not FakeStore→Play as primary.

Independent Test: Package present as priv-app; permission XMLs deployed; Play UI launches; update path documented even if spoofing still incomplete.

Acceptance Scenarios:

  1. Given Phonesky artifacts under a restricted host path, When the ROM is built, Then com.android.vending is a privileged system app with the required default-permission / privapp-permissions configuration.
  2. Given the build is flashed to LAB, When Play Store is opened, Then it starts (login/install may still depend on 005 spoofing — mark clearly if so).
  3. Given Git history, When inspected, Then no Google proprietary Phonesky APK bytes are committed.

User Story 3 - No FakeStore conflict (Priority: P2)

As the developer, FakeStore / microG Companion are not installed when they would conflict with real patched com.android.vending.

Why this priority: Prevents the wrong Play stub from masking Phonesky.

Independent Test: pm list packages shows no conflicting FakeStore when Phonesky is present.

Acceptance Scenarios:

  1. Given Phonesky is included, When packages are listed, Then FakeStore is absent (or explicitly disabled with documented reason).

User Story 4 - Reproducible obtain → patch → sign pipeline (Priority: P2)

As the developer, I can re-run a documented procedure on rom-dev01 to produce signed Phonesky + microG packaging inputs without tribal knowledge.

Why this priority: Required before any updatable Play Store distribution.

Independent Test: Second operator (or clean host path) follows the runbook and produces matching package names/permissions (signature may differ if keys differ — keys stay host-only).

Acceptance Scenarios:

  1. Given the 004 runbook, When followed on rom-dev01, Then inputs land under /srv/rom/… (restricted) and the build consumes them without manual one-off hacks.
  2. Given signing keys, When stored, Then they live only under host secrets (e.g. /srv/rom/secrets/), never in Git.

Edge Cases

  • LOS 23.2 already ships partial microG spoofing → use it; do not invent a full spoofing stack in 004 (that is 005).
  • Self-Check fails only on signature-related items → record as 005 dependency, not a 004 packaging failure.
  • Play login/install fails while Self-Check packaging is OK → same split.
  • Flash/upgrade wipes user data → LAB only; never GOLDEN.
  • Wrong device serial → abort flash.

Requirements (mandatory)

Functional Requirements

  • FR-001: Integrate latest official microG Services Core as com.google.android.gms on the LOS 23.2 sunfish LAB build (do not pin to GOLDEN’s older version).
  • FR-002: Integrate GSF Proxy as com.google.android.gsf (latest upstream).
  • FR-003: Integrate patched Phonesky as privileged com.android.vending with required privapp-permissions / default-permissions XML, produced by patching the latest official Play Store APK (not an AXP archive binary).
  • FR-004: Document and implement a reproducible obtain → patch → sign → priv-app pipeline for Phonesky on rom-dev01 using AXP patch-playstore / apktool; proprietary APKs MUST NOT be committed to Git.
  • FR-005: Do not install FakeStore (or conflicting Companion) alongside patched Phonesky.
  • FR-006: Record microG Self-Check results on LAB (pass/fail per item) after flash; attribute spoofing-related failures to 005.
  • FR-007: Keep Magisk and KernelSU out of 004 builds (root arrives in 007; banking baseline rootless in 006).
  • FR-008: Flash and validate on LAB serial 11231JEC207477 only; never GOLDEN 11071JEC203839.
  • FR-009: Prefer AXP golden packaging behaviour as reference (inventory from 002); do not blind-copy Magisk modules or ship AXP-signed Play as product.
  • FR-010: Phonesky is signed with a project-owned stable keystore under /srv/rom/secrets/phonesky-signing/ so later patched Builds can update Play.
  • FR-011: microG GmsCore/GsfProxy MUST remain PRESIGNED with the official microG signer so they stay updatable from the microG F-Droid repository; document repo setup for LAB Self-Check.

Key Entities

  • microG Services Core — com.google.android.gms
  • GSF Proxy — com.google.android.gsf
  • Patched Phonesky — com.android.vending (external proprietary input)
  • LAB — Pixel 4a 11231JEC207477 (Android 16 / LOS 23.2 target)
  • GOLDEN — AXP Pro Android 15 reference (read-only)

Success Criteria (mandatory)

Measurable Outcomes

  • SC-001: LAB build includes microG + GSF + patched Phonesky packages with correct package names.
  • SC-002: microG Self-Check evidence captured; packaging failures = 0; any remaining failures mapped to 005 or explicitly accepted.
  • SC-003: Phonesky opens on LAB; Git contains no proprietary Play APK.
  • SC-004: Runbook exists such that a clean rom-dev01 path can rebuild the same packaging layout.
  • SC-005: No Magisk/KSU in the 004 validation build.

Assumptions

  • 003 vanilla baseline remains the parent tree; 004 adds packaging/patches on top without unrelated hardening.
  • LineageOS 23.2 microG-oriented spoofing hooks may already exist; full restricted spoofing policy is 005.
  • 002 / GOLDEN inventory supplies reference behaviour and permission patterns only — not version pins for microG or Play.
  • Phonesky binary is obtained outside Git via latest Play APK + AXP patch-playstore (apktool) + project signing keys on rom-dev01.
  • Official microG release APKs share the signer used by the microG F-Droid repo, enabling same-package updates without re-signing.

Out of Scope

  • Signature spoofing implementation beyond using what LOS already provides (005)
  • Insular / banking hard-gates (006)
  • KernelSU (007)
  • Release signing / AVB relock (011)
  • Flashing or modifying GOLDEN