commit 111568f245780615969f6d632771d53b4291d103 Author: Reavo End Date: Wed Sep 9 17:46:15 2026 -0700 fix(update): diagnose incompatible resident web routes Share the resident-version predicate and consequence notice between node status and successful in-place update completion. Compare completion against the signed applied version, leave ordinary compatible skew informational, and do not infer a restart need from an unanswered query. Use a bounded split carrier for the post-apply diagnostic. Standalone actual-renderer smoke and boundary matrix passed; traceable-reqs 893/893 with zero findings. Full CLI/Cargo verification waits for the reserved build slot. Co-authored by: todlando diff --git a/CHANGELOG.md b/CHANGELOG.md index eafe18d6..edb91589 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,17 @@ breaks something, or changes the observable behavior of existing surfaces broadly; **patch** for fixes, and for additive opt-in capability — a new key, flag, or page that no existing user can encounter without opting into it. +## [Unreleased] + +### Fixed + + +- Node status and successful updates now explain when an older running network + layer cannot serve node-prefixed documentation or serve controls. The notice + distinguishes a full daemon restart, which stops hosted sessions, from a + refresh that leaves the network layer running. Compatible version differences + and unanswered version checks do not recommend a restart. + ## [0.68.0] - 2026-09-08 Web serving. Files, directories, adapter documentation and the changelog are diff --git a/docs-site/src/self-update/overview.md b/docs-site/src/self-update/overview.md index 75d0a1b2..6fafe0ba 100644 --- a/docs-site/src/self-update/overview.md +++ b/docs-site/src/self-update/overview.md @@ -47,6 +47,19 @@ automatically) — that consequence is why it is opt-in rather than the default, and why it runs last: everything else has already completed, from any invoking context, before the restart lands. + +**Missing web routes after an in-place update.** If the installed release is +0.68.0 or newer but the resident network layer reports a version below 0.68.0, +`spt node status` and a successful in-place update both explain that +node-prefixed docs URLs and serve controls are unavailable. Loading those +routes requires a **full daemon restart, which stops hosted sessions**. +`spt node refresh` only refreshes the coordinator; it does not replace the +network layer. Ordinary compatible version skew does not need this notice, +and an unknown resident version is not grounds for prescribing a restart. +The update-completion check uses the signed release just applied, not the +old updater's own compiled version; a failed or unanswered diagnostic query +does not turn a successful update into a restart instruction. + **What the composite's exit code means.** `spt update` runs several legs, and its exit is the **worst** leg outcome by precedence — never simply the last one that failed: diff --git a/docs-site/src/serving/overview.md b/docs-site/src/serving/overview.md index 275be372..9a2c250c 100644 --- a/docs-site/src/serving/overview.md +++ b/docs-site/src/serving/overview.md @@ -5,6 +5,12 @@ file or directory deliberately, then copy its URL from `spt serve list` or the node's index page. Removing an entry stops serving it; it does not delete its source bytes. +If node-prefixed docs return 404 or serve controls are unavailable after an +in-place update, check `spt node status` before restarting anything. A resident +network layer older than 0.68.0 cannot supply these routes even when the +installed release can. See [the update diagnosis](../self-update/overview.md#one-command-spt-update) +for the full-restart requirement and its cost to hosted sessions. + ## Node-prefixed URLs