backend: require confirmation for signed channel updates [CI] #16

Merged
justme merged 2 commits from feature/backend-updates into main 2026-10-06 22:05:17 -07:00
Owner

Backend updates are now delivered as signed channel-specific offers. Each instance follows the image namespace selected by Compose (moshiro-dev or moshiro, unless explicitly overridden). The admin UI receives new offers through SSE and shows the channel and tag. A user must confirm the exact release sequence; the host updater rechecks that sequence, verifies the CI signature and pinned image repository, snapshots the database, updates by digest, restarts, checks /healthz, and restores the database and previous image if startup fails.

The main and version-tag pipelines sign Backend manifests and register them through the release-scoped API token only after publishing the image. Agent and Probe update policies are unchanged.

Agent and Probe hello/heartbeats include IPv6 diagnostics (socket support, listen state, global address, default route, and container/host network scope). Diagnostics report booleans and coarse states; they do not contain IP addresses or interface names. Host-network Compose and systemd examples set the reported scope explicitly.

Validation on Windows: dotnet test --solution MoShiro.slnx -c Release (363 passed, 0 failed, 2 platform/AOT skips); npm run gen:api --prefix web; npm run build --prefix web; npm run lint:css --prefix web. The signed updater shell syntax and existing container-updater regression script also passed under WSL.

Backend updates are now delivered as signed channel-specific offers. Each instance follows the image namespace selected by Compose (`moshiro-dev` or `moshiro`, unless explicitly overridden). The admin UI receives new offers through SSE and shows the channel and tag. A user must confirm the exact release sequence; the host updater rechecks that sequence, verifies the CI signature and pinned image repository, snapshots the database, updates by digest, restarts, checks `/healthz`, and restores the database and previous image if startup fails. The main and version-tag pipelines sign Backend manifests and register them through the release-scoped API token only after publishing the image. Agent and Probe update policies are unchanged. Agent and Probe hello/heartbeats include IPv6 diagnostics (socket support, listen state, global address, default route, and container/host network scope). Diagnostics report booleans and coarse states; they do not contain IP addresses or interface names. Host-network Compose and systemd examples set the reported scope explicitly. Validation on Windows: `dotnet test --solution MoShiro.slnx -c Release` (363 passed, 0 failed, 2 platform/AOT skips); `npm run gen:api --prefix web`; `npm run build --prefix web`; `npm run lint:css --prefix web`. The signed updater shell syntax and existing container-updater regression script also passed under WSL.
justme added 1 commit 2026-10-06 21:57:42 -07:00
backend: require confirmation for signed channel updates [CI]
ci/woodpecker/pr/verify Pipeline failed
ci/woodpecker/pr/web-build unknown status
84f9d211bc
justme added 1 commit 2026-10-06 22:00:43 -07:00
ci: tolerate legacy Backend release webhook [CI]
ci/woodpecker/pr/verify Pipeline was successful
ci/woodpecker/pr/web-build Pipeline was successful
33b9782a1d
justme merged commit 1b052dcaef into main 2026-10-06 22:05:17 -07:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: justme/MoShiro#16