Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .derived/codebase-index/by-spec/001-cli-mcp-thesis.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@
"specStatus": "approved"
},
"schemaVersion": "1.1.0",
"shardHash": "b43ccdb7944f7be531e44e3ddba623598f36ebb2654f363cb9c89b0921d181d4"
"shardHash": "ab63afff1c876167323d96065b9d51781d85e5c046ec113c63017bea23eaadaf"
}
7 changes: 4 additions & 3 deletions .derived/spec-registry/by-spec/001-cli-mcp-thesis.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
26 changes: 22 additions & 4 deletions specs/001-cli-mcp-thesis/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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;
Expand All @@ -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.
Loading