instar 1.3.181 → 1.3.183

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,55 @@
1
+ # Side-Effects Review — Surface restartImmediately in GET /updates/status
2
+
3
+ **Slug:** `updates-status-restart-immediately`
4
+ **Date:** 2026-06-01
5
+ **Author:** echo
6
+ **Spec:** `docs/specs/updates-status-restart-immediately-spec.md` (approved by Justin, Telegram 13435)
7
+
8
+ ## Summary of the change
9
+
10
+ Closes the #641 observability gap (#59): #641 added `restartImmediately` to
11
+ `AutoUpdaterStatus` + `getStatus()` and claimed it was "surfaced in GET
12
+ /updates/status", but the route's hand-picked response object omitted it. One
13
+ line added so the route echoes `auto.restartImmediately`.
14
+
15
+ **Files changed (source):**
16
+ - `src/server/routes.ts`: inside `router.get('/updates/status')`, the
17
+ `if (ctx.autoUpdater)` `Object.assign(status, {...})` now includes
18
+ `restartImmediately: auto.restartImmediately`. The value already exists on the
19
+ status object (from #641); no other field touched.
20
+
21
+ **Files changed (tests):**
22
+ - `tests/integration/updates-status-restart-immediately-route.test.ts` — +2:
23
+ builds the router with a stub `autoUpdater` and asserts `GET /updates/status`
24
+ returns `restartImmediately` for both `true` and `false` (both sides of the
25
+ boundary; regression pin so it can't be dropped from the pick-list again).
26
+
27
+ ## Blast radius
28
+
29
+ Pure additive observability. The route gains one boolean field sourced from an
30
+ already-computed `getStatus()`. No behavior changes; no other field altered; the
31
+ no-`autoUpdater` path is unchanged (field simply absent). tsc + linters clean.
32
+
33
+ ## Behavior delta
34
+
35
+ | Scenario | Before | After |
36
+ |---|---|---|
37
+ | `GET /updates/status`, autoUpdater wired, flag on | no field | `restartImmediately: true` |
38
+ | `GET /updates/status`, autoUpdater wired, flag off (fleet) | no field | `restartImmediately: false` |
39
+ | `GET /updates/status`, no autoUpdater | field absent | field absent (unchanged) |
40
+
41
+ ## Risks considered
42
+
43
+ - **Leaking sensitive data?** No — it's a boolean config flag, same exposure
44
+ class as the `autoApply` field already returned.
45
+ - **Breaking existing consumers?** No — additive field; existing fields unchanged.
46
+
47
+ ## Migration parity
48
+
49
+ None — no agent-installed file changes (no hook/config/skill/CLAUDE.md template).
50
+ Read-only API field; existing agents gain it automatically on update.
51
+
52
+ ## Tests / lint
53
+
54
+ 2 new integration tests pass; `npm run lint` (tsc + destructive/LLM/URL-log/
55
+ codex-drift) clean.