@devrouter/cli 0.0.67 → 0.0.69
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/dist/devrouter-lifecycle-worker.js +1821 -285
- package/dist/devrouter.js +19245 -14619
- package/package.json +2 -1
- package/upgrade-prompts/0.0.68.md +51 -0
- package/upgrade-prompts/0.0.69.md +41 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devrouter/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.69",
|
|
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,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.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Upgrade to devrouter 0.0.69
|
|
2
|
+
|
|
3
|
+
This patch release teaches managed `ensure` to refuse — in seconds, with
|
|
4
|
+
attribution — when a consumer-declared fixed published host port is already
|
|
5
|
+
bound by another running container, and adds a read-only doctor check for the
|
|
6
|
+
same drift. It exists because two workspaces collided on one fixed binding and
|
|
7
|
+
the second burned a full provider bootstrap before failing with Docker's raw
|
|
8
|
+
"port is already allocated" and no holder attribution.
|
|
9
|
+
|
|
10
|
+
## Task
|
|
11
|
+
|
|
12
|
+
Install the published release and update `.devrouter.yml` devrouter.version to
|
|
13
|
+
0.0.69. No schema migration or configuration change is required. Do not rewrite
|
|
14
|
+
consumer compose files, host ports, or environment defaults to satisfy the
|
|
15
|
+
check: the refusal is intentional, and devrouter never regenerates or offsets
|
|
16
|
+
consumer-declared bindings. When an ensure is refused, resolve the collision on
|
|
17
|
+
the holding side — stop the named workspace with `devrouter stop <path>`, or
|
|
18
|
+
change the consumer's own binding through its declared escape hatch (for
|
|
19
|
+
example its compose interpolation variable) — then run ensure again.
|
|
20
|
+
|
|
21
|
+
## Validation
|
|
22
|
+
|
|
23
|
+
On a repository whose managed overlay declares a fixed binding (for example
|
|
24
|
+
`127.0.0.1:${SOME_HOST_PORT:-10003}:10000`), run
|
|
25
|
+
`devrouter doctor --repo <path> --json`: with no live holder,
|
|
26
|
+
`repo.host-port-claims` is `ok`; with another workspace already bound to that
|
|
27
|
+
port it is `error` naming the holding container and owning workspace; with
|
|
28
|
+
Docker unavailable it is `warn` without failing doctor. While the port is
|
|
29
|
+
held, run `devrouter ensure <path> --json`: it must refuse within seconds with
|
|
30
|
+
`hostPortConflicts` populated and a nonzero exit, and no provider bootstrap may
|
|
31
|
+
start. Free or override the port and re-run: ensure completes with routes as
|
|
32
|
+
before. Confirm repositories without fixed published bindings and non-managed
|
|
33
|
+
repositories behave exactly as before.
|
|
34
|
+
|
|
35
|
+
## Report
|
|
36
|
+
|
|
37
|
+
Report the tested CLI version, the repository and binding exercised, the
|
|
38
|
+
doctor check level and details before and after, the ensure refusal JSON
|
|
39
|
+
(`hostPortConflicts`) or its absence, the remediation used (stop versus env
|
|
40
|
+
override), and whether any fixed-binding or non-managed regression was
|
|
41
|
+
observed.
|