From 70608fcb7a5f89cea697095dac855b1a985850d3 Mon Sep 17 00:00:00 2001 From: DanS Date: Fri, 5 Jun 2026 14:23:51 -0500 Subject: [PATCH] docs(lite): record verified Linux lite release packaging (M5b) `./build.sh --lite-backend --linux-release` produces a working ObsidianDragonLite zip + AppImage (SDXL backend linked statically). Verified the lite bundle excludes all full-node assets (dragonxd, dragonx-cli, sapling params, asmap.dat) and includes res/ + xmrig (pool mining works in lite). CMake falls back to FetchContent SDL3 when system SDL3 is absent, so the release build has no system-SDL3 prerequisite. release/ is gitignored. Remaining M5b (Windows/macOS packaging, CI artifact build + signing, kill-switch/rollout) is infra/CI, not locally verifiable. Co-Authored-By: Claude Opus 4.8 --- docs/lite-wallet-implementation-plan-v2-2026-06-04.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/lite-wallet-implementation-plan-v2-2026-06-04.md b/docs/lite-wallet-implementation-plan-v2-2026-06-04.md index 17b374c..4a04fba 100644 --- a/docs/lite-wallet-implementation-plan-v2-2026-06-04.md +++ b/docs/lite-wallet-implementation-plan-v2-2026-06-04.md @@ -147,14 +147,16 @@ Each milestone is independently demoable and gated by a fake-backend test. Order - Runtime kill-switch / feature flag / staged rollout. - **Exit demo / test:** A downloadable `ObsidianDragonLite` that creates, syncs, sends, and persists against a real backend. -**Status (2026-06-05): M5a (durability) DONE; packaging/rollout (M5b) pending.** +**Status (2026-06-05): M5a (durability) DONE; Linux release packaging VERIFIED; rest of M5b (CI/signing/macOS/rollout) pending.** Verified against the SDXL Rust source that the backend auto-saves only on new-address / import / rescan — it does **NOT** save after `sync`, `send`, or `shield`, and `litelib_shutdown` only sets a flag (no save). So without intervention a first sync (~30 min) and any sent tx are lost on restart. The controller now triggers `save` at exactly those points: - after the detached `sync` completes (before `syncDone_` is set, so a `syncComplete()` observer sees a persisted wallet); - after a successful `send` / `shield` (skipped on failure); - a guarded best-effort flush in the destructor (only when `syncDone_` and no broadcast in flight, so shutdown never blocks on the scan's wallet lock); - plus a public `saveWallet()` for explicit saves. Crash/recovery of the wallet *file* (the `.dat`/`.dat.bak` rotation) is already handled inside the backend. Tests: `testLiteWalletControllerM5Persistence` proves saves fire after sync/send/shield and `saveWallet()`, and do NOT fire on a failed send or with no wallet open (fake tracks a save counter). -- **Pending (M5b):** release packaging (zip/AppImage/exe), CI backend-artifact build + signing, macOS, dynamic-loader sublane, runtime kill-switch/staged rollout, and end-to-end error/retry UX. Mostly build/CI/infra + GUI, not unit-verifiable here. +**Linux release packaging VERIFIED (2026-06-05).** `./build.sh --lite-backend --linux-release` produces `release/linux/ObsidianDragonLite--Linux-x64.zip` + `.AppImage` with the SDXL backend linked statically into the binary. Confirmed the lite bundle correctly **excludes** all full-node assets (no `dragonxd`, `dragonx-cli`, `sapling-spend.params`, `sapling-output.params`, `asmap.dat`) and includes `res/` + `xmrig` (pool mining, which works in lite — xmrig connects to `pool.dragonx.is`, no local daemon needed). `release/` is gitignored. (CMake falls back to FetchContent SDL3 when system SDL3 is absent, so no system-SDL3 prerequisite for the build to succeed.) + +- **Pending (M5b):** Windows/macOS release packaging, CI backend-artifact build + signing (per `lite-wallet-backend-signing-policy`), dynamic-loader sublane, runtime kill-switch/staged rollout, and end-to-end error/retry UX. Mostly build/CI/infra + GUI, not unit-verifiable here. ## What we explicitly drop from the v1 plan