6.3 KiB
Laptop migration — AXPR (2026-10-16)
Portable bundle for moving AXP_Resurection + sunfish-a16-rom to a new
machine without Cursor chat history. Agents should read this file after
AGENTS.md and docs/009-handoff-20261008.md.
USB layout (this export)
AXPR/
README-FIRST.md → copy of this doc (short pointer)
MANIFEST.txt → rsync timestamp + paths
Workspaces/
AXP_Resurection/ → full git tree (incl. uncommitted WT)
sunfish-a16-rom/ → parallel KernelSU / standby meta repo
laptop-home/
ssh/id_ed25519_rom_dev01 → rom-dev01 / a16.ssystems.de (mode 600 on restore)
ssh/id_ed25519_rom_dev01.pub
android/ → adbkey + debug.keystore (optional USB debug)
Not on USB (stays on server): Lineage out/, ccache, release keys
(/srv/rom/secrets/android-certs), prebuilt APKs under /srv/rom/prebuilts/,
AXP reference trees under /srv/rom/references/.
New laptop — minimum setup
- Restore workspaces under
~/Workspaces/(or any path; update scripts if moved). - Install private key:
mkdir -p ~/.ssh && chmod 700 ~/.ssh cp laptop-home/ssh/id_ed25519_rom_dev01 ~/.ssh/ chmod 600 ~/.ssh/id_ed25519_rom_dev01 - Wire SSH (repo ships client config):
# in ~/.ssh/config Include ~/Workspaces/AXP_Resurection/docs/ssh/config - Verify host:
ssh -F ~/Workspaces/AXP_Resurection/docs/ssh/config a16-build 'whoami; hostname' - Gitea + web UI — see Gitea and services below.
- Optional:
cp laptop-home/android/adbkey* ~/.android/for same ADB RSA trust.
Host runbook: docs/001-host-runbook.md. Device roles: docs/device-roles.md.
Gitea and services
| Layer | What |
|---|---|
| URL | https://a16.ssystems.de/ (Gitea), https://a16.ssystems.de/semaphore/ |
| Edge auth | nginx HTTP Basic (user sunfish) — password on host only: /srv/rom/secrets/web-htpasswd.txt (read as root on rom-dev01; not in Git) |
| Gitea login | sunfish-admin — app password/token on host: /srv/rom/secrets/gitea-admin.txt |
| Git transport | HTTPS through nginx (DISABLE_SSH=true on Gitea) |
Clone / update (canonical branches):
git clone https://a16.ssystems.de/sunfish-admin/AXP-Resurection.git
cd AXP-Resurection && git checkout 009-axp-los23-port
git clone https://a16.ssystems.de/sunfish-admin/sunfish-a16-rom.git
cd sunfish-a16-rom && git checkout standby-ksu-split-roadmap
Git from the laptop needs Gitea credentials in the HTTPS URL (nginx Basic
alone is not enough for git push). On first login as sunfish-admin, create a
Personal Access Token (Gitea → Settings → Applications) and either:
git config --global credential.helper store
# first fetch/push: user sunfish-admin, password = token
or embed in the remote (keep out of Git):
https://sunfish-admin:<TOKEN>@a16.ssystems.de/sunfish-admin/AXP-Resurection.git
Host-side pushes can use /srv/rom/secrets/gitea-admin.txt (api_token) on
loopback 127.0.0.1:3000 — laptop does not get that file in Git.
Pushed to Gitea (2026-10-16 UTC): AXP-Resurection @ 009-axp-los23-port
→ 2d145c2; sunfish-a16-rom @ standby-ksu-split-roadmap → 491fdfb.
Prefer git clone/pull on the new laptop over the USB tree if the stick
predates that push.
Branches (2026-10-16):
| Repo | Ship / active branch | Notes |
|---|---|---|
AXP-Resurection |
009-axp-los23-port |
Magisk 009; main is older |
sunfish-a16-rom |
standby-ksu-split-roadmap |
KernelSU parallel; main |
Not in Git: artifacts/ bootanimation PNG tree (~GB; optional on USB bundle),
/srv/rom/prebuilts/, release keys, SSH private key (USB laptop-home/ssh/).
Git state at export (AXP_Resurection)
| Item | Value |
|---|---|
| Branch | 009-axp-los23-port |
vs origin |
Should match Gitea after 2026-10-16 push from old laptop |
artifacts/ |
Gitignored (bootanimation frames); keep USB copy if needed |
After push, a fresh git clone + checkout 009-axp-los23-port is enough for
code/docs; large host-only paths stay on rom-dev01.
Remotes:
AXP_Resurection→https://a16.ssystems.de/sunfish-admin/AXP-Resurection.gitsunfish-a16-rom→https://a16.ssystems.de/sunfish-admin/sunfish-a16-rom.git
Host build in flight (2026-10-16 evening)
Full polish bacon (configstore + EuiccDisabler + thermal CDEV log fixes):
| Field | Value |
|---|---|
| Stage on host | /srv/rom/artifacts/009-axp-los23-port/worktree-20261016-polish |
| tmux session | bacon009polish20261016 |
| Status | /srv/rom/artifacts/detach-bacon009polish20261016.status |
| Log | /srv/rom/artifacts/detach-bacon009polish20261016-20261016T183009Z.log |
| Command | AXP_PROJECT_SOURCE=<stage> LOS_SYNC=0 LOS_DATE=20261016 bash <stage>/scripts/009-rebuild-from-los.sh |
| Expected zip | AXP-Resurection-Pro-23.2-20261016-sunfish.zip (if postflight passes) |
Monitor from any laptop with SSH:
ssh -F docs/ssh/config a16-build cat /srv/rom/artifacts/detach-bacon009polish20261016.status
ssh -F docs/ssh/config a16-build tail -30 /srv/rom/artifacts/detach-bacon009polish20261016-20261016T183009Z.log
After a fix on the laptop tree:
./scripts/009-sync-ota-stage-to-host.sh
./scripts/009-relaunch-polish-bacon.sh
(009-relaunch-polish-bacon.sh = sync + rom-detach same session name.)
Polish fixes (uncommitted WT) — summary
Detail: docs/009-lab-polish-20261016.md.
| Issue | Apply script / gate |
|---|---|
| configstore VINTF crash-loop | apply_009_drop_lab_only_commands.py restores disable_configstore; bacon postflight |
| EuiccDisabler crash | apply_009_euicc_disabler_guard.py (after euicc drop) |
| pixel-thermal false CDEV ERROR | apply_009_thermal_cdev_log.py |
| media_quality / SLIM_0_RX | documented; no ship fix |
Tests: tests/test_009_next_bacon_guards.py (polish guards).
Agent onboarding (no chat history)
AGENTS.mddocs/009-handoff-20261008.mddocs/009-laptop-migration-20261016.md(this file)docs/device-roles.md+docs/009-lab-polish-20261016.mddocs/009-ota-rebuild-checklist.mdbefore any bacon
Security: USB holds a private SSH key. Encrypt the stick or wipe after restore; never commit keys to Git.