# Reference sources — LineageOS, AXP.OS, GrapheneOS (sunfish only) Project documentation consolidating where sources live, what role they play, what is already archived locally, and what to execute later on `rom-dev01`. **Scope: Google Pixel 4a (`sunfish`) only.** Do not plan or archive unrelated devices (other Pixels, OnePlus, Fairphone, Sony, …). ```text LineageOS 23.2 / Android 16 → AUTHORITATIVE CURRENT BASE (build from this) AXP.OS 22.2 / Android 15 → GOLDEN / functional reference (live device + selective archive) GrapheneOS Android 13 sunfish → HISTORICAL hardening reference (selective archive) ``` Do **not** execute server archive/download/build commands from this file until `rom-dev01` exists. Do **not** treat this as work on frozen feature `001`. Detailed AXP hosting probes, Tor/download URLs, and Forgejo inventory commands: [`axp-sunfish-preservation.md`](axp-sunfish-preservation.md). Device roles (GOLDEN vs LAB): [`device-roles.md`](device-roles.md). --- ## Classification legend | Label | Meaning | |-------|---------| | **AUTHORITATIVE CURRENT SOURCE** | Use for builds / official current truth | | **HISTORICAL REFERENCE** | Study/port only; not the build base | | **LOCAL ARCHIVE** | Copy under `/srv/rom/references/…` or laptop path | | **UNAVAILABLE / PRIVATE** | Do not scrape or bypass access controls | | **TO BE EXECUTED LATER ON rom-dev01** | Commands/actions deferred until host is ready | --- ## Target layout on rom-dev01 ```text /srv/rom/references/ ├── axp/ │ ├── archive/ # see axp-sunfish-preservation.md │ ├── manifests/ # sunfish A15 selection / versioning notes │ └── README.md ├── lineage/ │ ├── manifests/ # repo manifest -r snapshots (reproducibility) │ └── README.md └── grapheneos/ ├── mirrors/ # selective bare clones only ├── manifests/ ├── metadata/ └── README.md ``` Plus the normal **build checkout** (not an “archive”): ```text /srv/rom/src/lineage-23.2/ # full Lineage tree used to compile (feature 003+) ``` --- # 1. LineageOS 23.2 / Android 16 — BASE ## Role **AUTHORITATIVE CURRENT SOURCE** for the ROM. Compiling = syncing and building this tree for sunfish. No need for a redundant mass mirror of the entire LineageOS GitHub organization. ## Authoritative URLs | Item | URL | Class | |------|-----|--------| | Android / repo umbrella | https://github.com/LineageOS/android | AUTHORITATIVE CURRENT | | Device sunfish | https://github.com/LineageOS/android_device_google_sunfish | AUTHORITATIVE CURRENT | | Kernel msm-4.14 | https://github.com/LineageOS/android_kernel_google_msm-4.14 | AUTHORITATIVE CURRENT | | Wiki device page | https://wiki.lineageos.org/devices/sunfish/ | AUTHORITATIVE CURRENT (verify against repos) | **Note:** Indexed/cached wiki install pages may still mention older branches (e.g. 22.2). For branch and source tree truth, trust **current GitHub branches / official `repo init`**, not a stale wiki cache. As of project research, `android_device_google_sunfish` and `android_kernel_google_msm-4.14` expose **`lineage-23.2`**. ## Official source init ```bash repo init \ -u https://github.com/LineageOS/android.git \ -b lineage-23.2 \ --git-lfs repo sync ``` (Exact path on host: e.g. `/srv/rom/src/lineage-23.2` — set during `003`.) ## What to preserve locally (not a full org archive) **TO BE EXECUTED LATER ON rom-dev01** after syncs/builds: ```bash mkdir -p /srv/rom/references/lineage/manifests cd /srv/rom/src/lineage-23.2 # or actual checkout path # After first successful sync: repo manifest -r \ -o /srv/rom/references/lineage/manifests/lineage-23.2-initial.xml # After first known-good vanilla sunfish boot/build: repo manifest -r \ -o /srv/rom/references/lineage/manifests/lineage-23.2-sunfish-vanilla-known-good.xml ``` Also keep short README under `/srv/rom/references/lineage/README.md` with: - `repo init` command used - date / host - pointer to known-good images under `/srv/rom/artifacts/` (hashes) ## Explicitly out of scope for Lineage “archive” - `git clone --mirror` of hundreds of LineageOS repos “just in case” - Mirroring unrelated device trees The build checkout **is** the working copy; revision-locked manifests are the reproducibility archive. --- # 2. AXP.OS 22.2 / Android 15 — GOLDEN / functional reference ## Role **HISTORICAL + FUNCTIONAL REFERENCE** (and live GOLDEN device). Not the build base. Infrastructure risk is higher (self-hosted pieces may vanish) → selective archive matters more than for Lineage. Full operational cookbook: [`axp-sunfish-preservation.md`](axp-sunfish-preservation.md). ## Source classes | Source | Class | Notes | |--------|-------|--------| | GOLDEN phone (AXP 22.2 / A15) | AUTHORITATIVE CURRENT *for behaviour* | Live `adb`; do not flash | | https://axpos.org (docs/news/devices) | AUTHORITATIVE CURRENT *docs* (while up) | Hosted via Codeberg | | https://git.disroot.org/AXP.OS | AUTHORITATIVE CURRENT *public git* | Main public mirror (~225 repos; **do not clone all**) | | https://codeberg.org/AXP-OS | HISTORICAL / PARTIAL | Website git + fewer repos after Jan 2026 removals | | https://github.com/AXP-OS | AUTHORITATIVE for some **APK/releases** | Lower priority mirror | | https://code.binbash.rocks/AXP.OS | UNAVAILABLE / PRIVATE anonymously | Alive; no anonymous repo list; do not bypass | | https://download.axpos.org/…/sunfish/ | AUTHORITATIVE downloads (when reachable) | Probe exact paths | | Tor onion `:8008` | FALLBACK downloads | See preservation doc | | `leech.binbash.rocks` | UNAVAILABLE (2026-08-09 probes) | Legacy | ## Sunfish-only archive criteria Preserve/reference **only**: - documentation/web useful to the project - `android_device_google_sunfish`, `android_kernel_google_msm-4.14` - manifests / `axp_versioning` needed to identify exact AXP sunfish revisions - common repos **only when** they contain AXP changes applicable to sunfish (e.g. frameworks/base, Settings, build/config, microG/spoofing, Phonesky, callrec, FLAG_SECURE, hardening) — **selected via sunfish A15 manifests**, not by cloning the whole org - sunfish Pro/Slim builds, recovery, factory, `.prop`, checksums, public keys where recoverable **Discarded:** full Disroot “225 repos / ~48 GiB Git” org mirror as a project goal. ## LOCAL ARCHIVE (laptop today) ```text ~/Archives/AXP.OS/ website-rendered/ codeberg/ # ~14 repos / ~38 GiB; LFS gaps in legacy_prebuilt_apps disroot-repositories.jsonl mirror-forgejo-org.sh … ``` ## TO BE EXECUTED LATER ON rom-dev01 1. rsync laptop archive → `/srv/rom/references/axp/archive/` 2. `df` preflight (must not steal LOS/`out`/ccache space) 3. Refresh website / selected Disroot mirrors via **manifest-driven** selection 4. Probe/download sunfish Pro/Slim artifacts if hosts allow 5. Never attempt private binbash access See [`axp-sunfish-preservation.md`](axp-sunfish-preservation.md) for commands. --- # 3. GrapheneOS — Android 13 sunfish (historical hardening) ## Role **HISTORICAL REFERENCE** for hardening techniques/patches that once ran on sunfish. **Not** the ROM base. Official project: sunfish **unsupported**; old trees moved toward **GrapheneOS-Archive**. Confirms project rule: GrapheneOS sunfish = **A13 history**, never A16 base. ## Authoritative / archive URLs | Item | URL | Class | |------|-----|--------| | Current GrapheneOS orgs | https://github.com/GrapheneOS | AUTHORITATIVE CURRENT (active devices) | | Platform manifest (current) | https://github.com/GrapheneOS/platform_manifest | AUTHORITATIVE CURRENT | | Official historical archive org | https://github.com/GrapheneOS-Archive | HISTORICAL REFERENCE | | sunfish device (archived) | https://github.com/GrapheneOS-Archive/device_google_sunfish | HISTORICAL — archive/read-only (e.g. since 2025-12-04); branch **13** | | Releases / changelog | https://grapheneos.org/releases | AUTHORITATIVE for release history (A13 era mentions Pixel 4a) | | FAQ | https://grapheneos.org/faq | AUTHORITATIVE docs | | Example reorganized tree | `GrapheneOS-Archive/platform_frameworks_base-old` (read-only) | HISTORICAL — illustrates repo moves | **Do not** mirror all ~244 repos in GrapheneOS-Archive. ## Selection rule (same spirit as AXP) 1. From last sunfish **Android 13** GrapheneOS manifests/tags, list repos/commits that carried GrapheneOS deltas relevant to sunfish. 2. Mirror **only** those (plus `device_google_sunfish` + useful manifests). 3. Likely candidates after proof: frameworks, system/core, SELinux, malloc, kernel/configs, etc. — **only if** tied to sunfish A13 lineage. 4. Record provenance; port carefully to LOS 23.2 / 4.14 (see constitution / `docs/hardening-backlog.md`). ## TO BE EXECUTED LATER ON rom-dev01 (minimum seed) ```bash mkdir -p /srv/rom/references/grapheneos/{mirrors,manifests,metadata} git clone --mirror \ https://github.com/GrapheneOS-Archive/device_google_sunfish.git \ /srv/rom/references/grapheneos/mirrors/device_google_sunfish.git git clone --mirror \ https://github.com/GrapheneOS/platform_manifest.git \ /srv/rom/references/grapheneos/mirrors/platform_manifest.git git --git-dir=/srv/rom/references/grapheneos/mirrors/device_google_sunfish.git fsck --full git --git-dir=/srv/rom/references/grapheneos/mirrors/device_google_sunfish.git show-ref ``` Then expand selectively from A13 sunfish manifests/tags — not the whole Archive org. ## LOCAL ARCHIVE No complete GrapheneOS sunfish archive is assumed on the laptop yet (unlike AXP). Seed mirrors are **TO BE EXECUTED LATER ON rom-dev01**. --- # 4. Conceptual comparison | | LineageOS | AXP.OS | GrapheneOS (sunfish) | |--|-----------|--------|----------------------| | Android | 16 (23.2) | 15 (22.2) | 13 (last) | | Role | **BASE** | **GOLDEN / functional** | **Hardening history** | | Full tree checkout | Yes (to build) | No (selective) | No (selective) | | Mass org mirror | No | No | No | | Key local artifact | `repo manifest -r` XML | web + sunfish repos + images | device_sunfish + selected A13 repos | | Urgency | Low (GitHub active) | Higher (self-host risk) | Medium (already moving to Archive) | --- # 5. Shared porting discipline For **any** AXP or GrapheneOS candidate change: 1. Identify source repo + tag/branch/build (sunfish-relevant) 2. Identify corresponding LOS 23.2 / AOSP base 3. Inspect full diff 4. Classify: direct / port / obsolete / superseded / A16- or 4.14-incompatible 5. Deduplicate vs LOS / the other reference 6. One logical change; build; test on **LAB** only --- # 6. Execution status checklist | Item | Status | |------|--------| | Document Lineage URLs + manifest `-r` strategy | Done (this file) | | Document AXP sunfish-scoped preservation | Done (`axp-sunfish-preservation.md` + this file) | | Document GrapheneOS Archive sunfish strategy | Done (this file) | | Laptop AXP archive under `~/Archives/AXP.OS/` | Exists (operator); rsync later | | rom-dev01 AXP/Lineage/GOS archives | **TO BE EXECUTED LATER** | | Lineage full sync / first `manifest -r` | **TO BE EXECUTED LATER** (`003`) | | Feature `001` implement | Not started (frozen docs) | | Features `002`/`003` | Not started | --- # 7. Contradictions / pitfalls noted 1. **Wiki vs GitHub for Lineage:** install wiki caches may show 22.2; repos show `lineage-23.2` — trust repos/`repo init`. 2. **AXP “~48 GiB Disroot” ≠ required archive size** — that is whole-org Git metadata; project policy is sunfish-selected only. 3. **Codeberg AXP archive ≠ complete** — LFS 404s (e.g. `legacy_prebuilt_apps`); keep anyway; do not claim 100% LFS. 4. **download.axpos.org `/` timeout ≠ paths dead** — probe `/axp/sunfish/` etc. 5. **OTA `/` → 403** does not mean updater API is down. 6. **GrapheneOS-Archive growth** — sunfish material is being archived; prefer Archive URLs + manifests over assuming old live GrapheneOS device support. 7. **AXP Android version:** GOLDEN is **22.2 / A15**; last GrapheneOS sunfish is **A13** — do not conflate. --- # 8. Community inspiration (non-base) — LOS + microG + KSU-Next + SusFS **Not** our ROM base. Useful field report for sunfish banking / root / SusFS. | Item | Detail | |------|--------| | Thread | [XDA: UNOFFICIAL sunfish LOS 22.2 + MicroG + KSU-Next + SusFS](https://xdaforums.com/t/rom-unofficial-sunfish-pixel-4a-lineageos-22-2-microg-ksu-next-susfs.4772261/) (torukk) | | Ship | LOS **22.2** / A15 + upstream microG + kernel KSU-Next + SusFS | | Kernel tree (author) | https://github.com/abu-adm/android_kernel_google_msm-4.14 (branch noted compatible with LOS23 kernel work) | | Claims | Revolut / hard banks workable with **spoofed** KSU-Next manager + SusFS + **TrickyStore** + microG “unblock hardware attestation”; integrity landscape changes fast | | LOS 23.2 note (forum) | Boot image with SusFS/ReSukiSU flashed onto official LOS 23.2: SusFS works, but ReSukiSU config unstable, heat, sudden reboots vs Magisk | | Our use | Inspiration for `006`/`007` (profiles, SusFS, attestation modules on **LAB**). Still build **our** LOS 23.2 vanilla first (`003`), then microG/Phonesky, then KSU-Next. Do **not** adopt as drop-in base; layer AXP/Graphene call-rec / FLAG_SECURE / hardening later as planned | If iodé/vanilla keep failing Yuh KeyMint/RKP, this thread’s stack (SusFS + TrickyStore + microG HA toggles) is the first **LAB** experiment family to evaluate — after stock factory diagnosis when convenient. --- # 9. Community inspiration (non-base) — rooted GrapheneOS OTAs **Not** our ROM base. **Not** for sunfish (EOL; project targets modern supported Pixels). | Item | Detail | |------|--------| | Repo | https://github.com/schnatterer/rooted-graphene | | Idea | Patch **Magisk** into official GrapheneOS OTAs; keep **AVB + locked bootloader** + root; own OTA channel via [Custota](https://github.com/chenxiaolong/Custota) / GitHub Pages; switch Magisk ↔ rootless by OTA | | Tooling of interest | [avbroot](https://github.com/chenxiaolong/avbroot), Custota, signed OTA pipeline | | Limits (upstream notes) | Stock Magisk Zygisk broken in this setup → banking detection; optional third-party Magisk fork; **KernelSU hard to integrate** with this Magisk-in-OTA approach | | Our use | Inspiration for later **`011`** (project signing / AVB / OTA) and for “locked + root” trade-offs — **not** a Magisk production path (constitution: KernelSU-Next). Do not treat as GrapheneOS-on-sunfish revival | Contrast with §8 (torukk): that one is **sunfish + KSU-Next + SusFS + LOS**; this one is **modern Graphene + Magisk + locked AVB OTA**. Different lessons for different stages. --- # 10. Attestation / banking compatibility references Primary reading when designing `006`/`007` attestation strategy (not sunfish-specific fixes by themselves): | Source | URL | Why keep | |--------|-----|----------| | GrapheneOS attestation compatibility guide | https://grapheneos.org/articles/attestation-compatibility-guide | Explains **hardware attestation API** vs Play Integrity; `SelfSigned` + whitelist of official GOS verified-boot keys (`attestation.json`); why modern supported Pixels can work with banks that whitelist GOS; sunfish **not** on that key list (EOL) | | PrivSec banking apps compat report (issue) | https://github.com/PrivSec-dev/banking-apps-compat-report/issues/509 | Crowdsourced banking/attestation outcomes across ROMs (incl. Graphene); use for comparative evidence, not as a recipe dump | **Project takeaway:** Yuh/Swissquote working on **supported** GrapheneOS tracks whitelist + healthy TEE/AVB on current Pixels. Our sunfish path still needs LOS+microG/Phonesky + measured KeyMint/RKP behaviour; GOS docs inform *what* apps check, not a drop-in port.