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:
commit
12d2179c20
150 files changed
+26263
No files matched your search
@@ -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.
|
||||
Reference in new issue
Block a user