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 <noreply@anthropic.com>
This commit is contained in:
@@ -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-<ver>-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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user