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

+510
View File
@@ -0,0 +1,510 @@
# AXP.OS sunfish preservation / reference archive
Parent overview (Lineage + AXP + GrapheneOS): [`reference-sources.md`](reference-sources.md).
## Purpose
AXP.OS is an important historical and functional reference for
`sunfish-a16-rom`.
Some AXP.OS infrastructure is self-hosted and may disappear. Preserve **useful
publicly accessible material related to sunfish / AXP.OS A15** before relying on
it during later ROM development.
This archive is **REFERENCE** material. It is **not** the base ROM.
```text
GOLDEN device: AXP.OS 22.2 / Android 15 on sunfish
historical GOS: Android 13 sunfish (hardening reference only)
new ROM base: LineageOS 23.2 / Android 16
AXP sources: reference inputs only
```
**Do not** block ROM development indefinitely on recovering unavailable AXP
material.
**Do not** archive all ~225 Disroot repositories (Sony, OnePlus, Fairphone,
unrelated Pixels, etc.).
```text
AXP archive != complete backup of AXP.OS
AXP archive == what is needed to understand, reproduce, and port
AXP.OS A15 for SUNFISH
```
Execute this work on **`rom-dev01`** under `/srv/rom/references/axp/`. Do not
keep growing large mirrors on the laptop once the server copy is verified.
---
## When to run
- After `001` has `/srv/rom` and `android-build` SSH working.
- Before or in parallel with early `002` (does not replace GOLDEN live `adb`).
- Prefer rsync of the existing laptop archive first, then fill gaps on the server.
---
## Architecture reminder
| Role | Meaning |
|------|---------|
| GOLDEN | Live AXP.OS 22.2 / A15 — do not flash for experiments |
| LAB | LOS / project ROM experiments only |
| This archive | Offline docs + sunfish-related git/releases on `rom-dev01` |
See also: `docs/device-roles.md`.
---
## 1. Known AXP.OS hosting
### Main website
Preserve (rendered + git source):
- https://axpos.org/
- https://axpos.org/news/
- https://axpos.org/docs/
- https://axpos.org/devices/
- https://axpos.org/devices/google/sunfish/
- https://axpos.org/devices/changelogs/2026/
- https://axpos.org/docs/knowledge/faq/
- https://axpos.org/docs/knowledge/reproducible/
- https://axpos.org/docs/knowledge/microg/
- https://axpos.org/docs/knowledge/callrec/
- https://axpos.org/docs/knowledge/features/
- https://axpos.org/docs/knowledge/technical-details/
Website hosting: Codeberg.
Website source:
- https://codeberg.org/AXP-OS/axpos-org
- https://codeberg.org/AXP-OS/axpos-org.git
Observed branches: `hugo`, `pages`.
Official docs describe:
| Host | Role |
|------|------|
| **Disroot** (`git.disroot.org/AXP.OS`) | Main **public** mirror of repos / APK releases / reproducible-build data |
| **code.binbash.rocks/AXP.OS** | Complete self-hosted set (CI, internals) — **not** anonymously public |
| **Codeberg** | Partial (website + fewer repos after Jan 2026 removals) |
| **GitHub** (`github.com/AXP-OS`) | Mainly APK/release mirror |
---
### Public source mirror: Disroot
- Org: https://git.disroot.org/AXP.OS
- API: https://git.disroot.org/api/v1/orgs/AXP.OS/repos
Snapshot **2026-08-09** (inventory only — not a mandate to clone everything):
- Repos: **225**
- Forgejo reported size: **49,908,145 KiB (~48 GiB)** Git metadata only
- **Additional** space needed for LFS, releases, wikis, downloads
Generate inventory dynamically from the API. Do **not** maintain a hard-coded
full org clone list.
---
### Codeberg
- https://codeberg.org/AXP-OS
- Snapshot 2026-08-09: **14** public repos, complete attempt ~**38 GiB**
- Includes `axpos-org` website source
- **Not** a complete AXP source archive (100+ repos removed Jan 2026 per AXP docs)
Known laptop archive: `~/Archives/AXP.OS/codeberg/`
Known issue: `legacy_prebuilt_apps.git` has historical LFS pointers whose objects
return **HTTP 404** on Codeberg.
```text
"Git mirror valid" != "all historical LFS content preserved"
```
Do **not** delete the Codeberg archive just because Disroot is newer/larger.
---
### GitHub
- https://github.com/AXP-OS
- Documented focus: APK/release mirror (PhoneSky, AOSmium, OpenEUICC, …)
- Lower priority; useful independent source for artifacts/public keys
---
### Self-hosted Gitea (not publicly readable)
- https://code.binbash.rocks / https://code.binbash.rocks/AXP.OS
- Observed DNS 2026-08-09: `148.251.225.181`
- Site root HTTP 200; anonymous org API returned `[]`
- Historical repo URLs request auth; web 404
**Do not** attempt to bypass access controls. Only use legitimately public
material. Official docs: this host holds the complete private set.
---
## 2. Download / OTA infrastructure
### Clearnet downloads
- https://download.axpos.org (DNS 2026-08-09 → `148.251.225.182`, PTR yes.binbash.rocks)
- Root `/` may time out; **always probe exact paths**
Sunfish paths:
```text
PRO: https://download.axpos.org/axp/sunfish/
…/factory/ …/recovery/ …/tests/
SLIM: https://download.axpos.org/axp-slim/sunfish/
```
Device page confirms **AXP.OS 22.2 / Android 15** for Pro and Slim, with links
to OS zip, recovery, factory, and keys.
When reachable, preserve for sunfish (Pro + Slim as available):
- OS ZIPs, `.prop`, `.sha512sum`
- recovery / factory packages
- relevant test artifacts
- signing / AVB **public** keys
Never treat images as trusted without published checksums/signatures.
Example filenames seen in indexes (verify live):
```text
AXP.OS-22.2-20260324-PRO-sunfish.zip(+.prop+.sha512sum)
AXP.OS-22.2-20260331-PRO-sunfish.zip(+.prop+.sha512sum)
```
### Tor download mirror
Onion advertised by AXP:
```text
e3tx35xwvqoihx36tjmnzurjcghs6kjwrwnen55jg7ujqilbaicutpid.onion
HTTP :8008 (main documented alias)
HTTPS :9009 (historical)
```
Example:
```text
http://…onion:8008/axp/sunfish/
http://…onion:8008/axp-slim/sunfish/
```
Probe when preservation runs; do not assume availability.
### Legacy download host
`leech.binbash.rocks` — observed unavailable 2026-08-09 (timeouts / refused).
Treat as legacy; `download.axpos.org` replaced port-8008 URLs per changelog.
### OTA
```text
https://update.axpos.org
https://update-unstable.axpos.org
```
Both resolved to `148.251.225.182` (2026-08-09); `/` → HTTP 403 Apache.
403 on `/` ≠ OTA API dead (updater endpoints, not browsing).
Older (pre build 2026.005):
```text
https://sfxota.binbash.rocks:8010
https://sfxota-unstable.binbash.rocks:8010
```
If needed: capture the exact OTA URL from **GOLDEN** via `adb logcat` while
checking for updates — **do not modify GOLDEN** merely for discovery.
---
## 3. Historical IP snapshot (diagnostic only)
Observed **2026-08-09** — **never hard-code**; re-resolve DNS before use:
| Host | IPv4 |
|------|------|
| axpos.org | 217.197.84.141 |
| code.binbash.rocks | 148.251.225.181 |
| download.axpos.org | 148.251.225.182 |
| update.axpos.org | 148.251.225.182 |
| update-unstable.axpos.org | 148.251.225.182 |
| leech.binbash.rocks | 162.55.66.39 |
---
## 4. Existing laptop archive → server first
Laptop working location:
```text
~/Archives/AXP.OS/
website-rendered/
codeberg/
disroot-repositories.jsonl
mirror-forgejo-org.sh
…
```
**Do not** redownload blindly.
Once `rom-dev01` is available:
```bash
ssh android-build@rom-dev01 \
'mkdir -p /srv/rom/references/axp/archive'
rsync -aH --partial --info=progress2 \
"$HOME/Archives/AXP.OS/" \
android-build@rom-dev01:/srv/rom/references/axp/archive/
du -sh ~/Archives/AXP.OS
ssh android-build@rom-dev01 'du -sh /srv/rom/references/axp/archive'
```
Keep the laptop copy until the server copy is verified.
---
## 5. Suggested server layout
```text
/srv/rom/references/axp/archive/
├── website-rendered/
├── codeberg/
│ ├── git/
│ ├── releases/
│ └── metadata/
├── disroot/
│ ├── git/ # sunfish-selected repos only (see §8)
│ ├── releases/
│ └── metadata/
├── github/ # optional APK/release mirrors
├── downloads/
│ ├── sunfish-pro/
│ └── sunfish-slim/
├── status/
├── tools/ # e.g. mirror-forgejo-org.sh
└── README.md
```
Separate from any **working checkouts** used during active porting.
---
## 6. Storage preflight (mandatory)
```bash
df -h /srv/rom
du -sh /srv/rom/references/axp/archive 2>/dev/null || true
```
Preservation **must not** consume space needed for LOS tree, `out/`, ccache,
artifacts.
Full Disroot org (~48 GiB Git + LFS/releases) is **out of scope**. Prefer
sunfish-selected set (typically far smaller) + website + sunfish images.
---
## 7. What to preserve (sunfish-scoped)
### Always (small / high value)
1. Rendered website (`axpos.org`) + `sitemap.xml` / `robots.txt`
2. `axpos-org.git` (Codeberg)
3. Existing Codeberg org archive (rsync; refresh optionally)
4. Disroot org **inventory JSONL** (metadata only)
5. Status probe snapshots under `status/`
### Highest priority if downloads work
Sunfish Pro/Slim OS zip, recovery, factory, `.prop`, `.sha512sum`, public keys
(clearnet path first; Tor fallback).
### Git (Disroot / public) — selection rule
**Do not** clone all 225 repos.
**Do** discover the exact set from **sunfish A15 / 22.2** reproducible-build /
manifest / `axp_versioning` data, then clone **that** set (+ histories).
Minimum explicit interest (seed list — expand from manifests):
| Priority | Examples |
|----------|----------|
| Device/kernel | `android_device_google_sunfish`, `android_kernel_google_msm-4.14` |
| Versioning | `axp_versioning`, sunfish-related manifests / `axp.xml` tags |
| Likely port targets | `android_frameworks_base`, `android_packages_apps_Settings`, shared `build`/config **if** present in sunfish build |
| Compat features | microG / signature spoofing / Phonesky-related public repos |
| Features we want | call recording, FLAG_SECURE-related, hardening **used by sunfish A15** |
Exclude by default: other OEMs/devices, unrelated Pixel generations, bulk
device trees not referenced by the sunfish A15 build.
### Lower priority
GitHub APK/release mirrors for apps we care about (Phonesky, etc.).
### Out of scope
Private `code.binbash.rocks` content without credentials.
---
## 8. Manifest-driven repo selection (preferred workflow)
1. From archived docs / Disroot, locate sunfish **22.2 / A15** reproducible
tags and `axp_versioning` / manifest (`axp.xml` or equivalent).
2. Extract the list of repositories + revisions for that build.
3. Clone `--mirror` **only those** repos (plus any tiny shared deps they need).
4. Record the selection in
`/srv/rom/references/axp/archive/status/sunfish-repo-selection.txt`
with tag/build id and date.
5. `git fsck --full` per mirror; `git lfs fetch --all` where applicable; log LFS
failures separately (404s are expected for some historical objects).
Fallback if manifests are incomplete: inventory API + name filters
(`sunfish`, `msm-4.14`, `phonesky`, `microg`, `signature`, `spoof`, `callrec`,
`versioning`, `manifest`, …) **plus** manual review — still not “clone org”.
---
## 9. Website commands (server refresh)
```bash
mkdir -p /srv/rom/references/axp/archive/website-rendered
wget \
--mirror --page-requisites --convert-links --adjust-extension \
--restrict-file-names=unix --domains=axpos.org \
--directory-prefix=/srv/rom/references/axp/archive/website-rendered \
https://axpos.org/
curl -fL https://axpos.org/sitemap.xml \
-o /srv/rom/references/axp/archive/website-sitemap.xml || true
curl -fL https://axpos.org/robots.txt \
-o /srv/rom/references/axp/archive/website-robots.txt || true
```
Prefer transferring the existing laptop `website-rendered/` and `axpos-org.git`
via rsync; refresh only if needed:
```bash
git --git-dir=axpos-org.git remote update --prune
git --git-dir=axpos-org.git show-ref
git --git-dir=axpos-org.git fsck --full
```
---
## 10. Forgejo inventory (Disroot / Codeberg)
```bash
tmp="$(mktemp)"; page=1
while :; do
data="$(curl -fsSL \
"https://git.disroot.org/api/v1/orgs/AXP.OS/repos?limit=50&page=$page")"
count="$(jq 'length' <<<"$data")"
[ "$count" -eq 0 ] && break
jq -c '.[]' <<<"$data" >> "$tmp"
page=$((page + 1))
done
cp "$tmp" /srv/rom/references/axp/archive/disroot/metadata/disroot-repositories.jsonl
rm "$tmp"
```
Useful queries: largest repos; name filter for sunfish-interest (see research
notes). Same pattern for Codeberg org `AXP-OS`.
If using `mirror-forgejo-org.sh` from the laptop archive:
- **Codeberg**: OK to refresh the small org into `archive/codeberg/`
- **Disroot**: do **not** invoke a full-org mirror by default; use
manifest-selected clones into `archive/disroot/git/`
Scripts must be resumable; one repo failure must not abort the batch; prefer
`git remote update --prune` over delete/reclone.
---
## 11. Service / path probes
Probe roots **and** exact sunfish paths (`/axp/sunfish/`, `/axp-slim/sunfish/`).
Save under `archive/status/` with `date -Is`.
Tor fallback (optional):
```bash
# apt: tor torsocks — only if needed
curl --socks5-hostname 127.0.0.1:9050 --connect-timeout 30 --max-time 120 -I \
'http://e3tx35xwvqoihx36tjmnzurjcghs6kjwrwnen55jg7ujqilbaicutpid.onion:8008/axp/sunfish/'
```
Mine archived website for URLs:
```bash
grep -RhoE 'https?://[^"<> ]+' \
/srv/rom/references/axp/archive/website-rendered/axpos.org 2>/dev/null |
grep -Ei 'axpos|binbash|codeberg|disroot|github|sunfish' | sort -u \
> /srv/rom/references/axp/archive/discovered-urls.txt
```
---
## 12. Verification
```bash
find /srv/rom/references/axp/archive -type d -name '*.git' -prune | wc -l
du -sh /srv/rom/references/axp/archive/*
date -Is > /srv/rom/references/axp/archive/SNAPSHOT_DATE.txt
```
Document LFS/release errors. Do not claim 100% completeness if objects 404.
---
## 13. Priority order (execution)
1. rsync laptop `~/Archives/AXP.OS/` → server; verify `du`
2. Storage preflight (`df`)
3. Website rendered + `axpos-org.git` (if not already complete)
4. Probe/download **sunfish** Pro/Slim images + checksums/keys (clearnet → Tor)
5. Disroot inventory JSONL + **manifest-driven** sunfish repo mirrors
6. Optional Codeberg refresh; optional GitHub APK repos of interest
7. Status snapshot + selection file
Skip: full Disroot org; private binbash Gitea; endless LFS 404 retries.
---
## 14. Later development use
Do **not** blindly cherry-pick AXP into LOS 23.2.
For each candidate:
1. Identify repo + AXP branch/tag/build (prefer sunfish 22.2 / A15)
2. Identify corresponding LOS/AOSP base
3. Inspect full diff
4. Classify: direct / port / obsolete / superseded / A16-incompatible
5. Record provenance; dedupe vs LOS / GrapheneOS / DivestOS
6. Apply one logical change; build; test on **LAB** only
AXP A15 GOLDEN remains the live oracle.
LOS 23.2 / Android 16 remains the base.