@devrouter/cli 0.0.66 → 0.0.68

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrouter/cli",
3
- "version": "0.0.66",
3
+ "version": "0.0.68",
4
4
  "description": "Local dev routing CLI with shared Traefik reverse proxy",
5
5
  "author": "Roland Schlaefli",
6
6
  "homepage": "https://github.com/rschlaefli/devrouter#readme",
@@ -48,6 +48,7 @@
48
48
  "test": "vitest run && pnpm test:process",
49
49
  "test:package": "./scripts/package-smoke.sh",
50
50
  "qualify:lifecycle": "node --import tsx scripts/qualify-lifecycle.ts",
51
+ "qualify:capacity": "node --import tsx scripts/qualify-capacity.ts",
51
52
  "qualify:controller": "node --import tsx scripts/qualify-controller.ts",
52
53
  "qualify:stop-drift": "node --import tsx scripts/qualify-config-drift-stop.ts",
53
54
  "test:process": "bash scripts/test-devrouter-process.sh",
@@ -0,0 +1,41 @@
1
+ # Upgrade to devrouter 0.0.67
2
+
3
+ This patch release makes the reliability journal incapable of deadlocking
4
+ lifecycle commands and completes managed stop when a registration was deleted
5
+ rather than replaced. It restores workspaces that every canonical command
6
+ previously refused with "Lifecycle admission is blocked." after a saturated
7
+ journal held a drained `INTERRUPTED` ensure.
8
+
9
+ ## Task
10
+
11
+ Install the published release and update `.devrouter.yml` devrouter.version to
12
+ 0.0.67. No schema migration or configuration change is required. Do not change
13
+ the committed configuration, delete registrations, containers, or source files,
14
+ and do not reset lifecycle state manually. Recovery runs inside the existing
15
+ canonical commands under their normal locks, ownership proofs, and journal
16
+ accounting. If a command reports a live worker, wait for it or re-run later;
17
+ `workspace journal settle` refuses while a worker outcome is still observable.
18
+
19
+ ## Validation
20
+
21
+ On a workspace whose commands were refused with "Lifecycle admission is
22
+ blocked." (saturated journal with a drained interrupted ensure), run
23
+ `devrouter stop <path>` and confirm it completes — including the case where the
24
+ Devsy registration was already deleted and every workload is positively absent
25
+ — then run `devrouter ensure <path> --json` and confirm admission succeeds with
26
+ routes published. On a record whose worker is provably gone and that still
27
+ refuses progress, run `devrouter workspace journal settle <path> --json` and
28
+ confirm it reports the settled operation, then retry `ensure`. Confirm refusal
29
+ messages now name the blocking field and remediation. For workspaces that never
30
+ hit the deadlock, confirm existing stop, ensure, exec, and `devrouter doctor`
31
+ behavior is unchanged, and confirm a downgrade attempt (record written by a
32
+ newer CLI than the installed one) fails with an explicit upgrade instruction
33
+ instead of a mid-flight refusal.
34
+
35
+ ## Report
36
+
37
+ Report the tested CLI version, the exact workspace path or synthetic fixture,
38
+ each command result (stop, ensure, settle if used) with route state after the
39
+ run, any diagnostic failure output verbatim, and whether the
40
+ deleted-registration case, the saturated-journal case, or only the unchanged
41
+ retained path was exercised.
@@ -0,0 +1,51 @@
1
+ # Upgrade to devrouter 0.0.68
2
+
3
+ This patch release adds opt-in capacity admission for enrolled managed
4
+ checkouts and makes lock failures actionable. Machines without an enabled
5
+ capacity policy keep the current manual lifecycle unchanged.
6
+
7
+ ## What changed
8
+
9
+ - **Capacity admission (opt-in).** With an explicitly enabled
10
+ `capacity-policy.json` under Devrouter home and an enrolled checkout, the
11
+ controller admits `ensure` and `exec` before dispatch. The CLI follows the
12
+ decision with bounded reconnecting waits that survive controller restarts
13
+ while the request stays queued, worker results are journalled atomically, and
14
+ `stop` bypasses admission. Without an enabled policy, behavior is unchanged
15
+ (ADR 0008).
16
+ - **Actionable lock diagnostics.** A lock that cannot prove its owner now names
17
+ the failing inspection stage, the activity, the exact lock path, a portable
18
+ reproduction command (`LC_ALL=C ps -o lstart= -o command= -p <any-live-pid>`),
19
+ and the permitted-host-context remediation. Locks stay fail-closed and no
20
+ identity fallback is attempted. `devrouter controller` commands additionally
21
+ print the underlying failure cause on stderr while keeping the stable
22
+ `controller-unavailable` JSON contract on stdout.
23
+
24
+ This release does not prevent host OOM and does not perform autonomous agent
25
+ recovery. Capacity admission bounds what Devrouter starts when an operator
26
+ enables it; it is not a memory guarantee.
27
+
28
+ ## Task
29
+
30
+ Install the published release and update `.devrouter.yml` `devrouter.version`
31
+ to 0.0.68. No schema migration or configuration change is required. Do not
32
+ create a capacity policy, enroll a checkout, or change machine policy unless the
33
+ operator asks for it. Do not hand-edit `~/.config/devrouter`.
34
+
35
+ ## Validation
36
+
37
+ Confirm ordinary behavior is unchanged on a machine without
38
+ `capacity-policy.json`: run `devrouter ensure <path> --json`, then
39
+ `devrouter stop <path>`, and confirm routes publish and release as before.
40
+ Confirm `devrouter doctor --repo <repo>` reports no new failures. If an operator
41
+ has enrolled a checkout, confirm `ensure` and `exec` follow the reported
42
+ admission decision and that `stop` still bypasses admission. If a lock cannot
43
+ prove its owner, confirm the error names the inspection stage, the lock path,
44
+ and the remediation command instead of a bare refusal.
45
+
46
+ ## Report
47
+
48
+ Report the tested CLI version, the exact workspace path or synthetic fixture,
49
+ each command result (ensure, stop, and doctor) with route state after the run,
50
+ whether a capacity policy was enabled or absent, any diagnostic failure output
51
+ verbatim, and whether admission or only the unchanged manual path was exercised.