From b26a687daaabe2f289f77ba77f181ac1b7505f39 Mon Sep 17 00:00:00 2001 From: ScottW514 Date: Sat, 8 Aug 2026 14:03:23 -0400 Subject: [PATCH] docs: Phase 4 update manager implemented --- docs/UPDATE-SYSTEM.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/UPDATE-SYSTEM.md b/docs/UPDATE-SYSTEM.md index d15bdaf..3f0df8e 100644 --- a/docs/UPDATE-SYSTEM.md +++ b/docs/UPDATE-SYSTEM.md @@ -161,7 +161,22 @@ demonstrably untouched.* forgectrl (minutes, no Yocto); optional `workflow_dispatch` cold-Yocto reproducibility build whose only product is a checksum. -## Phase 4 — forgectrl update manager (GUI) +## Phase 4 — forgectrl update manager (GUI) — IMPLEMENTED + +Endpoints in `forgectrl/src/update.c`, driven from the panel's System +tab; trust anchors in `/etc/forgefirm/keys` (`forgefirm-keys` recipe: +the release pubkey + the Glowforge keyring). Release version resolves +from the fixed-name asset redirect (`.../releases/latest/download/forgefirm.fw` +→ `.../download/v/...`), so no GitHub API / rate limits. All slot +writes run on one background job (polled `/update/status`), take the +installer's `/data/forgefirm/update.lock`, require idle + no diagnostic, +refuse the booted root slot, verify signature before writing, and +re-verify the written filesystem. `GET /slots` inventory, `POST /boot` +(probe-gated), `POST /update/{check,download,apply,upload}`, +`POST /restore/factory` (archive md5 checked), `POST /system/reboot`. +Original design notes below. + + Backend endpoints + a panel page (OpenGlow visual identity):