From c87fc68b4ce7e3477800f219d09f0f7ee3296edd Mon Sep 17 00:00:00 2001 From: SirHumza <204067870+SirHumza@users.noreply.github.com> Date: Sun, 27 Sep 2026 14:55:33 +0200 Subject: [PATCH] chore: remove HANDOFF.md (notes live in docs/ + SUPPORT.md) --- HANDOFF.md | 75 ------------------------------------------------------ 1 file changed, 75 deletions(-) delete mode 100644 HANDOFF.md diff --git a/HANDOFF.md b/HANDOFF.md deleted file mode 100644 index 37c6bfa..0000000 --- a/HANDOFF.md +++ /dev/null @@ -1,75 +0,0 @@ -# HANDOFF — OrbisRPC PS4 Rich Presence - -Date: 2026-09-24. Branch: `main` (pushed). Console: PS4 9.00, GoldHEN 2.4, -`192.168.1.136` (FTP :2121 anon, klog :3232, BinLoader one-shot :9020). - -## Folder layout (repo root) - -- `orbisrpc/` — all daemon sources. Key files: `daemon.c` (loop/sessions), - `discord.c` (presence serialize), `detect.c` (game finding), `tmdb.c` + - `art_table.h` (Sony metadata), `art.c` (mp: proxy resolve), `tls.c` + - `ws.c` (transport), `updater.c` + `manifest.c` + `health.c` (updates), - `timesync.c` (SNTP), `lock.c`, `cfg.c`, `log.c`, `jsonlite.c`. -- `scripts/build_sdk.sh` — builds the daemon payload with ps4-payload-sdk - (`build-sdk/orbisrpc_sdk.elf`). Toolchain: `~/ps4-payload-sdk`, shim in - `~/llvmshim`. NEVER link `libkernel.so` (instant death in spawn context; - gate in CI + `tests/e2e_consumer.py`). -- `tests/` — host unit tests + e2e contracts. `make test`, `make asan`. -- `scripts/build_art_table.py` + `titles.txt` — regenerates art table/icons. -- `docs/injecting.md` — how payloads get onto the console (one-shot rule!). -- `findings/` — hardware research archive (loaders, TLS PSA, IME, linkage). -- `scripts/ps4_watch.py` — one-shot console state diff (repo copy may be - absent; logic: FTP file sizes + ports + newest screenshot). - -## Existing issues (ranked, all reproduced) - -1. **Cover art tile** — shows "?" instead of game art. mp: proxy renders - (proven live), uploaded asset stuck `private`, external URLs drop the - whole activity. Daemon resolves mp: per session (`art: resolved mp` in - log). Needs: propagation wait or per-title asset strategy (below). -2. **Stale title on fresh launches** — save-mtimes get bulk-touched by - cloud sync (all 28 titles shared one mtime!); app.pkg atime added as - sharper signal; eboot-set change fast-path added. Unproven live. -3. **Game crashes (CE-34878-0)** on some titles with daemon on — no - mechanism found after full audit; console has prior crash history. - Needs clean-boot test (reboot, no payload, launch). -4. **IME keyboard** never opens (0x80BC0010 through six fixes). Token is - pre-seeded via FTP; do not block on this. -5. **Rest Mode** — wake/resume coded, never tested through a real cycle. -6. **Updater drill** — staged-update path never tested live. -7. **Plugin path** — PRX can't deploy via FTP (console converts SELF→ELF); - must ship inside PKG. Untested live. -8. **`main` vs `WIP` branches** — main = proven runtime line; WIP = old - 1.0 product line (installer/app/docs). Do not merge blindly. - -## What could be better (next agent: pick these up) - -- **Rest Mode field test** + home-screen presence proof. -- **Updater live drill** (stage → reboot → rollback check). -- **IME**: needs on-console iteration with return-code logging (already - instrumented in `pkg/app_main.c` on the WIP line). -- **Plugin live test** via PKG delivery. -- **e2e/CI**: `.github/workflows/ci.yml` exists; extend coverage for new - modules (lock, timesync, art, session persistence). -- **Playtime ledger reader** (totals per title; data already banked). -- **Media-type table**: only Netflix/YouTube mapped; add IDs as found. - -## Auto icons from Sony CDN (no manual adding) — the design - -Goal: never hand-add a title again. Three layers, in order: - -1. **Live TMDB-over-TLS** (`tmdb_https_get()` in `tmdb.c`, already coded): - queries `tmdb.np.dl.playstation.net:443` for any title ID at resolve - time. Port 80 is blocked on-console; **443 was never proven — first - job is running `probe_tmdb443.elf` on hardware.** If green, every - current and future game resolves fully automatically. -2. **Self-growing table fallback**: daemon already logs unknown title IDs - implicitly (raw-ID sessions). Add a CI job: parse `titles.txt` + - any new IDs seen, run `build_art_table.py`, commit regenerated - `art_table.h` + icons. Table then grows itself with zero hand edits. -3. **mp: proxy at post time** (`art.c`, proven rendering): whatever URL - layers 1–2 produce gets proxied per session; cache expires per game - switch so mappings never go stale. - -Rule: hands touch art ZERO times — new game installs resolve through -layer 1, or land in the table via layer 2's automation.