diff --git a/.derived/codebase-index/by-spec/001-cli-mcp-thesis.json b/.derived/codebase-index/by-spec/001-cli-mcp-thesis.json index 88d6066..e9cd7ce 100644 --- a/.derived/codebase-index/by-spec/001-cli-mcp-thesis.json +++ b/.derived/codebase-index/by-spec/001-cli-mcp-thesis.json @@ -28,5 +28,5 @@ "specStatus": "approved" }, "schemaVersion": "1.1.0", - "shardHash": "b43ccdb7944f7be531e44e3ddba623598f36ebb2654f363cb9c89b0921d181d4" + "shardHash": "ab63afff1c876167323d96065b9d51781d85e5c046ec113c63017bea23eaadaf" } diff --git a/.derived/spec-registry/by-spec/001-cli-mcp-thesis.json b/.derived/spec-registry/by-spec/001-cli-mcp-thesis.json index 48e4cfa..9688dcd 100644 --- a/.derived/spec-registry/by-spec/001-cli-mcp-thesis.json +++ b/.derived/spec-registry/by-spec/001-cli-mcp-thesis.json @@ -11,19 +11,20 @@ } ], "id": "001-cli-mcp-thesis", - "implementation": "pending", + "implementation": "complete", "sectionHeadings": [ "001: statecraft-cli thesis", "1. Purpose", "2. Decided constraints", "3. Territory", - "4. Out of scope" + "4. Out of scope", + "5. Status (2026-07-23)" ], "specPath": "specs/001-cli-mcp-thesis/spec.md", "status": "approved", "summary": "The successor to OPC (the retired Tauri desktop cockpit): a single binary named statecraft that exposes the platform's governance verbs twice, as CLI subcommands for humans and as an MCP server for agents. The MCP face is the product's genuinely unique surface: any agent (Claude Code first) operates natively under Statecraft governance, requesting approvals, checking spec-code coupling, and triggering factory stages. This is milestone M4 in the Statecraft ladder; the spec records the thesis and the decided constraints so the repo is born governed ahead of its build.\n", "title": "statecraft-cli: one binary, two faces (CLI verbs + MCP server)" }, - "shardHash": "44bcacd7382fc9a9245569ebebc1e3037e4b64b9ae7e3acbe82b69b8f2fe452a", + "shardHash": "2ea06cdbf60d1603ba01e2f2669c549aee3829917a3727d842de654d4b3deaf2", "specVersion": "1.1.0" } diff --git a/specs/001-cli-mcp-thesis/spec.md b/specs/001-cli-mcp-thesis/spec.md index c863b32..d2e4aa0 100644 --- a/specs/001-cli-mcp-thesis/spec.md +++ b/specs/001-cli-mcp-thesis/spec.md @@ -3,7 +3,7 @@ id: "001-cli-mcp-thesis" title: "statecraft-cli: one binary, two faces (CLI verbs + MCP server)" status: approved created: "2026-07-14" -implementation: pending +implementation: complete depends_on: - "000-bootstrap" establishes: @@ -42,9 +42,15 @@ the MCP face is not a privileged side door. ## 2. Decided constraints -- **Binary name `statecraft`**; npm distribution as `statecraft-cli` (the - bare npm name is taken; brew/cargo naming is uncontested). The OPC name - retires with the desktop app. +- **Binary name `statecraft`.** The OPC name retires with the desktop + app; brew/cargo naming is uncontested. Distribution was originally + assumed to be npm (published as `statecraft-cli`, the bare npm name + being taken), and the repo keeps that name. Spec 007 superseded the + npm assumption: `statecraft` is a single-binary product, not a + library, so it ships as tag-gated prebuilt binaries plus an + `install.sh` (curl | sh), with no registry publishing. 007 is the + decided distribution channel; the npm line here was a 2026-07-14 + assumption that did not survive the build. - **Implementation language: Rust** (single static binary, no runtime dependency on the customer machine; the MCP server speaks stdio). - **License Apache-2.0.** The CLI is the funnel and the agent bridge; @@ -66,3 +72,15 @@ point, informed by the OPC governance-verb inventory - Control-plane behavior (statecraft repo). - Template mechanics (enrahitu repo). - A desktop or graphical client of any kind. + +## 5. Status (2026-07-23) + +Complete. The thesis and its decided constraints are realized by the +build backlog: the crate scaffold (002), auth + API client (003), the +governance verbs (004), the stdio MCP face (005), and the template +upgrade verb (006), with distribution settled by 007. Every §2 +constraint holds: binary name `statecraft`, Rust single binary, stdio +MCP, Apache-2.0, no TUI. The one §2 assumption that did not survive was +npm distribution, superseded by 007's tag-gated binaries + `install.sh` +(no registry publishing); §2 is amended to record that. The territory +this spec establishes (`README.md`) exists and is consistent with 007.