@devrouter/cli 0.0.79 → 0.1.0

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.79",
3
+ "version": "0.1.0",
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",
@@ -51,6 +51,9 @@
51
51
  "qualify:capacity": "node --import tsx scripts/qualify-capacity.ts",
52
52
  "qualify:controller": "node --import tsx scripts/qualify-controller.ts",
53
53
  "qualify:stop-drift": "node --import tsx scripts/qualify-config-drift-stop.ts",
54
+ "qualify:harness-journey": "./scripts/qualify-harness-journey.sh",
55
+ "qualify:codex-journey": "DR_JOURNEY_HARNESS=codex ./scripts/qualify-harness-journey.sh",
56
+ "qualify:non-node": "./scripts/qualify-non-node-consumer.sh",
54
57
  "test:process": "bash scripts/test-devrouter-process.sh",
55
58
  "check": "biome check .",
56
59
  "check:fix": "biome check --write .",
@@ -0,0 +1,63 @@
1
+ # Upgrade to devrouter 0.0.80
2
+
3
+ This release makes Devsy maintenance routine instead of disruptive. Devrouter
4
+ now supports installed Devsy releases in the range `>=1.16.2 <2.0.0`: an
5
+ explicit `setup --workspace-runtime devsy` verifies the official Linux agent
6
+ for the installed release against the SHA-256 digest GitHub publishes, records
7
+ the manifest in Devrouter machine state, and injects it, while `doctor` and
8
+ `ensure` stay network-free. An in-range release with no recorded manifest is
9
+ accepted with a drift warning and nothing injected, so a Devsy update no longer
10
+ blocks a managed start. The release also reworks the harness gate wait budget,
11
+ adds a `devrouter capacity reconcile` recovery, names the router holder in
12
+ host-port conflicts, accepts worktree-owned dependency-overlay upstreams, and
13
+ adds the `global.cli-path` install comparison to `doctor`.
14
+
15
+ ## Task
16
+
17
+ Use the published 0.0.80 CLI. Update the repository `devrouter.version`
18
+ metadata only when consumer source changes are authorized, and refresh generated
19
+ agent guidance only with its owner's authority. No schema, journal or
20
+ configuration migration is needed.
21
+
22
+ Operating changes that matter for scripts, agents and operators:
23
+
24
+ - **Devsy agent.** Run `devrouter setup --yes --workspace-runtime devsy` once
25
+ per installed Devsy release, and rerun it after a Devsy update, to verify and
26
+ inject the official agent for that release. Until a release's manifest is
27
+ recorded, `doctor` reports `ready` with a drift warning and
28
+ `source=host`: the host CLI governs its own agent and Devrouter injects
29
+ nothing. A version outside the supported range, or an unparseable one, still
30
+ fails before the provider queue, and an explicit `DEVSY_AGENT_BINARY` must
31
+ match the official asset for the installed release.
32
+ - **Harness gate.** A `PreToolUse` hook timeout must exceed
33
+ `--wait-budget-ms`. The budget now measures only the actual wait, and a call
34
+ the harness re-delivers with the same `tool_use_id` returns one refusal that
35
+ names the earlier decision instead of waiting again.
36
+ - **Capacity recovery.** `devrouter capacity reconcile --yes` replaces a
37
+ provably absent ledger with a fresh baseline. It refuses without `--yes` and
38
+ while any journal binding remains; treat it as operator recovery, not routine
39
+ maintenance.
40
+ - **Multiple installs.** `doctor` reports `global.cli-path`. Upgrade every
41
+ `devrouter` install on PATH so a stale binary cannot run lifecycle rules
42
+ against state a newer version wrote.
43
+
44
+ ## Validation
45
+
46
+ Confirm the resolved executable and installed version from a consumer checkout,
47
+ and check `global.cli-path` reports no stale or divergent install. Confirm
48
+ `global.devsy-agent` reports `ready`; before `setup` records the installed
49
+ release, expect the non-blocking drift warning, and after it expect the recorded
50
+ manifest with no network access at `ensure` time. Parse command JSON from
51
+ stdout only, because `ensure` and `stop` still stream bounded phase progress
52
+ on stderr. Exercise `capacity reconcile` or a stuck `stopping` settlement
53
+ only with operator authority, and require each operation's own terminal
54
+ evidence.
55
+
56
+ ## Report
57
+
58
+ Report the release revision, resolved executable, installed version, the Devsy
59
+ agent and `global.cli-path` diagnostics, the manifest origin reported after
60
+ `setup`, and the terminal result of any authorized lifecycle or capacity
61
+ operation. Keep source and package validation separate from consumer readiness,
62
+ and record unknown ownership or ledger evidence as unresolved rather than as
63
+ recovered.
@@ -0,0 +1,69 @@
1
+ # Upgrade to devrouter 0.1.0
2
+
3
+ This release is the first stable cut of the reliability program. The managed
4
+ lifecycle is now driven by durable intent instead of a live CLI process, capacity
5
+ admission refuses instead of guessing when its evidence is incomplete, and the
6
+ agent harness gate serves Claude Code and the Codex CLI in the shape each of them
7
+ accepts.
8
+
9
+ ## What changed for a consumer
10
+
11
+ - A managed `stop` whose physical cessation is proven against a positively
12
+ absent capacity ledger now completes instead of staying in `stopping`
13
+ forever. An intact ledger keeps today's settlement and revision fencing, and
14
+ every other ledger classification still refuses.
15
+ - `devrouter capacity reconcile --yes [--json]` is the explicit forward
16
+ recovery for a provably absent ledger. It refuses without `--yes`, while any
17
+ journal binding remains, and when a declared runtime domain cannot be observed.
18
+ - `devrouter doctor` reports `global.cli-path` when another `devrouter` on
19
+ PATH is newer than the running CLI or when the shell resolves a different
20
+ install. Keep one install authoritative before trusting lifecycle state.
21
+ - `devrouter harness gate` defers one agent tool call while the checkout's
22
+ durable phase is `queued`, `starting`, `verifying`, `recovering` or
23
+ `stopping`, waits inside the hook process with no model turns, and refuses
24
+ once with recovery guidance when the budget runs out. It identifies the
25
+ requesting harness from its payload: Claude Code receives
26
+ `permissionDecision: allow`, the Codex CLI receives the same guidance as
27
+ `additionalContext` because it reports an `allow` decision as unsupported
28
+ hook output. A re-delivered call returns one refusal that names the earlier
29
+ decision instead of repeating a command that may already have run.
30
+ - A fixed host-port conflict whose holder is the shared `devrouter-traefik`
31
+ router names the consumer's own published binding as the side to change instead
32
+ of telling the agent to stop the router.
33
+ - Managed `ensure` accepts a devnet upstream served by any Compose project owned
34
+ by the exact worktree, while a container owned by a different worktree or by a
35
+ shared project outside the checkout is still refused.
36
+
37
+ ## Task
38
+
39
+ Use the published 0.1.0 CLI. Update the repository `devrouter.version` metadata
40
+ only when consumer source changes are authorized, and refresh generated agent
41
+ guidance only with its owner's authority. No schema, command, flag, environment
42
+ or journal migration is needed, and the upgrade rewrites no runtime state.
43
+
44
+ Two operating notes matter for scripts and agents:
45
+
46
+ - `ensure` and `stop` write bounded progress lines to stderr. Parse JSON from
47
+ stdout only; do not merge the streams before parsing.
48
+ - Capacity admission, parking consent and automatic recovery stay inert unless an
49
+ operator enables them. Nothing in this release starts, stops or parks a
50
+ consumer environment on its own.
51
+
52
+ ## Validation
53
+
54
+ Verify the resolved executable and installed version, then run `devrouter
55
+ doctor` and confirm `global.cli-path` reports one authoritative install and no
56
+ newer shadow copy. For an authorized managed checkout, run `devrouter status`
57
+ and confirm the reported intent, phase, capacity state and attention reason agree
58
+ with the runtime you observe. Require each lifecycle operation's own terminal
59
+ evidence: a status block or a progress line is not stop or ensure success. When
60
+ the gate is wired, prove it once in the harness you use by gating a harmless
61
+ command against a settled checkout.
62
+
63
+ ## Report
64
+
65
+ Report the release revision, the executable and installed version, the
66
+ CLI-path diagnostics, the status block for any affected checkout, and the
67
+ terminal result of any authorized lifecycle operation. Keep source and package
68
+ validation separate from consumer readiness or recovery, and record unknown
69
+ ownership or surviving resources as unresolved rather than as recovered.