From c321d72e7d6529a04422301d867a00615bb89ef4 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Thu, 4 Jun 2026 14:48:44 -0700 Subject: [PATCH] =?UTF-8?q?C2(hephd-self-update):=20finalize=20=E2=80=94?= =?UTF-8?q?=20changelog=20+=20mark=20goal=20implemented?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All eight prerequisite leaves are closed; the daemon-side feature is implemented and the cargo-install-over-public-HTTPS mechanism is verified end-to-end. Add the changelog fragment and drop the goal card's status/branch, noting the one remaining owner check: observing a real older->newer upgrade on the next release. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/changelog.d/hephd-self-update.feature.md | 1 + docs/how-to/self-update/hephd-self-update.md | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 docs/changelog.d/hephd-self-update.feature.md diff --git a/docs/changelog.d/hephd-self-update.feature.md b/docs/changelog.d/hephd-self-update.feature.md new file mode 100644 index 0000000..90cd33d --- /dev/null +++ b/docs/changelog.d/hephd-self-update.feature.md @@ -0,0 +1 @@ +Opt-in (default off) **hephd self-update**: `hephd --self-update` polls the forge for a newer release on an interval and, when one appears, rebuilds via `cargo install` from the release tag (anonymous HTTPS clone of the public repo — no credentials) and restarts onto the new binary. Enable it on the managed service with `heph daemon start --self-update` (which also bakes a cargo-capable `PATH` into the launchd/systemd unit and switches systemd to `Restart=always` so a clean self-exit respawns). The install mechanism is verified end-to-end; a live cross-version upgrade is confirmed on the first release after this lands. Also hardens hub resilience: the daemon's HTTP client now has a 30s timeout so a black-hole hub can't stall the sync/self-update loop. diff --git a/docs/how-to/self-update/hephd-self-update.md b/docs/how-to/self-update/hephd-self-update.md index e9b679a..dbd0e8a 100644 --- a/docs/how-to/self-update/hephd-self-update.md +++ b/docs/how-to/self-update/hephd-self-update.md @@ -3,8 +3,6 @@ title: hephd self-update modified: 2026-06-04 tags: - how-to -status: active -branch: mikado/hephd-self-update requires: - self-restart-after-update - verify-hub-dropout-resilience @@ -12,10 +10,16 @@ requires: # hephd self-update -**Goal (desired end state).** An opt-in, **default-off** mode where `hephd` -periodically polls the forge for a newer release and, when one exists, -rebuilds via `cargo install` from the release tag and restarts itself onto the -new binary — unattended. +**Implemented.** An opt-in, **default-off** mode where `hephd` periodically +polls the forge for a newer release and, when one exists, rebuilds via `cargo +install` from the release tag and restarts itself onto the new binary — +unattended. Enable on the managed service with `heph daemon start --self-update` +(see [[run-the-daemon]]). + +> **One remaining live check (owner):** the install mechanism is verified +> end-to-end (anonymous public HTTPS `cargo install`), and the detection/apply +> logic is unit-tested, but a real older→newer upgrade can only be observed when +> the next release lands. Enable `--self-update` and confirm the upgrade then. ## End state