diff --git a/.planning/evidence/2026-08-08-orphan-companions-pre-deploy.md b/.planning/evidence/2026-08-08-orphan-companions-pre-deploy.md new file mode 100644 index 00000000..e321b3ae --- /dev/null +++ b/.planning/evidence/2026-08-08-orphan-companions-pre-deploy.md @@ -0,0 +1,36 @@ +# Pre-deploy orphan-companion evidence — captured 2026-08-08T11:08:59Z + +## Backends present? +lnd EXISTS +fedimint ABSENT +bitcoin-knots EXISTS +electrumx EXISTS + +## Companion containers +archy-lnd-ui Up 2 days +fips-ui Up 2 days (healthy) +archy-fedimint-ui Up 13 hours +archy-electrs-ui Up 2 hours +archy-bitcoin-ui Up About a minute + +## Companion systemd units +UNIT LOAD ACTIVE SUB DESCRIPTION +archy-bitcoin-ui.service loaded active running Archipelago companion UI: archy-bitcoin-ui +archy-btcpay-db.service loaded active running Archipelago app: archy-btcpay-db +archy-electrs-ui.service loaded active running Archipelago companion UI: archy-electrs-ui +archy-fedimint-ui.service loaded active running Archipelago companion UI: archy-fedimint-ui +archy-lnd-ui.service loaded active running Archipelago companion UI: archy-lnd-ui +archy-nbxplorer.service loaded active running Archipelago app: archy-nbxplorer + +Legend: LOAD → Reflects whether the unit definition was properly loaded. + ACTIVE → The high-level unit activation state, i.e. generalization of SUB. + +## Quadlet unit files +archy-bitcoin-ui.container +archy-electrs-ui.container +archy-fedimint-ui.container +archy-lnd-ui.container +archy-lnd-ui.container.bak-20260506061414 +fedimint-clientd.container +fips-ui.container +lnd.container diff --git a/.planning/phases/13-aiui-functional-conversational-node-control-and-content-surf/13-UAT.md b/.planning/phases/13-aiui-functional-conversational-node-control-and-content-surf/13-UAT.md index 91e33287..683286fa 100644 --- a/.planning/phases/13-aiui-functional-conversational-node-control-and-content-surf/13-UAT.md +++ b/.planning/phases/13-aiui-functional-conversational-node-control-and-content-surf/13-UAT.md @@ -54,3 +54,53 @@ tree's `dist/`, never by grepping the never-pruned `assets/` graveyard on disk. phase's close work; recorded in W1.7 of the assessment fix plan. - Console noise items (wavlake/itunes CSP on enrichment, sw.js SSL on self-signed) tracked in the open task list. + +--- + +## Addendum — 2026-08-08: this record is stale, and the node is not running this branch + +**The phase is NOT closed. Do not mark 13-15 complete from the record above.** + +### The deployed surface no longer matches the build under test + +13-15's gate is explicit that "the deployed surface is checked, not only the source". That +half of the gate is currently void: `/usr/local/bin/archipelago` on archi-dev-box is dated +2026-08-08 03:20 and is a build of **`main`**, not of this branch. Evidence: `strings` on the +deployed binary finds no `app_uninstall` (added by this branch's `7686a486`, confirmed +branch-exclusive via `git branch --contains`), and the sudo journal shows the per-app +ownership hooks chowning unconditionally with no `stat -c %u:%g` drift-gate calls — i.e. +`b9e64eb6` / `db8937f9` / `ca106c5a` / `b8869307` are absent. + +So every row in the table above was verified against a binary the node **no longer runs**. +The node has silently reverted to a tree 417 commits behind this branch. Re-verification is +required after a redeploy; nothing above can be carried forward on trust. + +### Row 2 (content grid) — the premise changed after this record was written + +The table records scope `own` only (18 items, "13 Images"). 13-15's check 2 asks for **real +peer/owned files**, which `own` alone cannot discharge. Since `482c4e30`: + +- `05b459a6` + `9abc1623` made `requestArchyAllContent()` fetch `own`, paint, then fold in + `owned` and `peers` as each resolves — deduped by id, through a single `setArchyContent` + sink, called from `init()`. Operator decision 2026-08-08 confirmed auto-load-at-init is the + intended behaviour. +- The 2026-08-06 note claiming "no call passes `peers` or `owned`; they exist only in type + signatures" is therefore **obsolete** and should not be re-derived from it. + +Check 2 remains **unverified on device**. It is a code-complete, verification-pending row. + +### What completing this gate requires + +1. Merge `gitea-ai/main` into this branch (the open-source workstream, 63 commits) and rebuild. +2. Deploy that build to archi-dev-box — binary **and** both frontends. +3. Re-run rows 1–11 above; they are void against the current deployment. +4. Discharge check 2 specifically: peer and owned content reaching the grid, images bucket + rendering, audio going to the bottom bar rather than the lightbox. +5. Do the real-handheld pass, still owed from the original record. +6. Only then write `13-15-SUMMARY.md`, flip `13-VALIDATION.md`'s `status:` from `draft` to + `validated`, and close the phase. + +Two new lifecycle fixes land with this branch and want their own device checks at the same +time: the companion reaper (orphaned `archy-fedimint-ui` should disappear ~5 min after start +while `archy-bitcoin-ui` survives) and `Restart=always` on backend units (a `podman stop` of +a backend should see systemd restore it within ~10s instead of leaving it deleted).