From 36015a19fe04cb8be3cc0116be759c67d4e92354 Mon Sep 17 00:00:00 2001 From: archipelago Date: Tue, 23 Jun 2026 15:26:17 -0400 Subject: [PATCH] =?UTF-8?q?docs(master-plan):=20=C2=A78b=20session-b=20sta?= =?UTF-8?q?te=20=E2=80=94=20connection-lost+netbird+UX-merge=20shipped=20t?= =?UTF-8?q?o=20.228,=20uninstall=20ghost=20fix,=20workstream=20F=20in=20pr?= =?UTF-8?q?ogress?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/PRODUCTION-MASTER-PLAN.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/PRODUCTION-MASTER-PLAN.md b/docs/PRODUCTION-MASTER-PLAN.md index 8128fbe6..f1d1e92f 100644 --- a/docs/PRODUCTION-MASTER-PLAN.md +++ b/docs/PRODUCTION-MASTER-PLAN.md @@ -245,7 +245,26 @@ phases 2–6 (`dual-ecash-design.md`). ## 8b. SESSION STATE + RESUME (updated 2026-06-23) — READ §8b "CURRENT STATE + RESUME" FIRST -### ▶ CURRENT STATE + RESUME (2026-06-23) — RESUME FROM HERE (works from any device) +### ▶ SESSION b (2026-06-23 PM) — LATEST, RESUME FROM HERE + +**Canonical resume detail: memory `project_session_resume_2026_06_23b` (▶️ top of MEMORY.md).** +`gitea-vps2/main = 4346007d` pushed; local HEAD `e57514b6` (uninstall fix, committed, **not pushed/deployed**). + +Shipped + verified live on .228 (all in 4346007d): +- **Connection-lost FULLY fixed** — companion `image_exists` journal-flood (Stdio::null) + netbird UDP-port reconcile churn (`wait_for_manifest_host_ports` tcp-only). .228: flood→0, ws/db→0 disconnects, load 3.95→2.26. +- **netbird → manifest-driven** (#20 ph4) — 3 manifests + 4 orchestrator primitives (base64 secret, GeneratedCert+`ensure_manifest_certs`, templated-file render `{{HOST_IP}}/{{NETWORK_GATEWAY}}/{{secret:}}`, udp port protocol). Live: https 8087→200, OIDC→200, resolver=gateway. Legacy-Rust delete deferred to post-full-verify. +- **registry-manifest flip (code)** — `EMBED_MANIFESTS` default-on, `main.rs` bounded pre-load `refresh_catalog`. Catalog regenerated w/ 52 embedded manifests but **NOT published** (gitignored + never committed; publish = force-add to gitea-vps2 main). Do after fleet binary roll. +- **UX regression root-caused + fixed** — the mobile/desktop UX (loader/AppLoadingScreen, store-driven launch, app icons, android webview footer) was on `companion-mobile-ux` and **never merged to main**, so any main build silently dropped it. **Merged → main**, frontend redeployed to .228. Android 0.4.9/code13 pushed for user to build APK elsewhere. + +In progress — **Workstream F lifecycle bugs** (this §, user-picked next): +- **uninstall ghost — FIXED (e57514b6), not deployed.** `handle_package_uninstall` returned Err on any cleanup-residue failure *before* removing the package state entry → ghost in My Apps + revert-to-Installed. Now: split container vs cleanup errors; remove state entry as soon as containers gone (before slow data rm). NEXT: deploy + verify a real uninstall clears My Apps (CAUTION: destroys app data — get user OK). +- grafana reinstall-stops (#14, likely same root cause, re-test after) + fedimint guardian wait-vs-stuck (#15, not started). + +Next: deploy+verify uninstall fix on .228 → push e57514b6 → roll binary to fleet → publish catalog → finish F → Phase 3 → multinode. + +--- + +### ▶ CURRENT STATE + RESUME (2026-06-23) — earlier session-a baseline (historical) **✅ HEADLINE (2026-06-23): single-node gate GREEN (`run-gate.sh` 5/5 on .228, 0 not-ok) + multinode test deploy DONE to 6 nodes.** The exit criterion (§5) is met. Green took fixing **two real