Files
AXP-Resurection/docs/reference-sources.md
sunfish-adminandCursor 2d145c2878 009: Polish bacon fixes, OTA host scripts, and migration docs.
Restore disable_configstore, EuiccDisabler and thermal CDEV guards, branding
and rebuild/sync helpers; document device roles, laptop migration, and Gitea.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 21:06:45 +02:00

366 lines
16 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.
# 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 signing / AVB / OTA trade-offs. **This Magisk track (`009`) is the ship root** (KernelSU/`007` standby). 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.