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 .claude/skills/init/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Claude Code, Codex CLI, Cursor, Copilot, and any future agent).
`## ` heading exclusive. That section is the step list.
2. Execute the protocol described there, using parallel tool calls where steps
are independent.
3. Emit a structured summary as a `## initialized: stagecraft.ing` block:
3. Emit a structured summary as a `## initialized: statecraft.ing` block:
rules loaded, registry freshness, lifecycle counts (from
`spec-spine registry status-report --json --nonzero-only`), and the next
pending spec per `AGENTS.md` § Working the backlog.
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/setup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ in `.github/workflows/spec-spine.yml`; match it):
```bash
cargo install spec-spine-cli # from crates.io (needs a Rust toolchain)
# or, no Rust toolchain: the prebuilt installer CI uses
curl -fsSL https://raw.githubusercontent.com/stagecraft-ing/spec-spine/main/install.sh | \
curl -fsSL https://raw.githubusercontent.com/statecrafting/spec-spine/main/install.sh | \
SPEC_SPINE_VERSION=v0.10.0 SPEC_SPINE_BIN_DIR="$HOME/.local/bin" sh
```

Expand Down Expand Up @@ -69,7 +69,7 @@ re-check. Do not parse `.derived/**/*.json` directly to "verify" success.
Report exactly:

```
## setup: stagecraft.ing
## setup: statecraft.ing

**Install:** {ok / failed at <step>}
**Node:** {node <version> + npm <version> / absent (needed once spec 001 lands)}
Expand Down
2 changes: 1 addition & 1 deletion .derived/codebase-index/by-package/stagecraft-ing.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"package": {
"kind": "npm-package",
"name": "stagecraft-ing",
"name": "statecrafting",
"path": ""
},
"schemaVersion": "1.1.0",
Expand Down
289 changes: 289 additions & 0 deletions .derived/codebase-index/by-spec/004-marketing-surfaces.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,289 @@
{
"mapping": {
"dependsOn": [
"001-site-scaffold",
"002-launch-content",
"003-product-family-registry"
],
"implementingPaths": [
{
"path": "app/components/architecture-explorer.tsx",
"source": "spec-edge"
},
{
"path": "app/components/icons.tsx",
"source": "spec-edge"
},
{
"path": "app/components/paper-reader.tsx",
"source": "spec-edge"
},
{
"path": "app/components/sign-in-link.tsx",
"source": "spec-edge"
},
{
"path": "app/components/site-chrome.tsx",
"source": "spec-edge"
},
{
"path": "app/lib/explorer-diagrams.ts",
"source": "spec-edge"
},
{
"path": "app/lib/get-started.ts",
"source": "spec-edge"
},
{
"path": "app/lib/papers.ts",
"source": "spec-edge"
},
{
"path": "app/lib/products.ts",
"source": "spec-edge"
},
{
"path": "app/lib/whitepaper.ts",
"source": "spec-edge"
},
{
"path": "app/routes.ts",
"source": "spec-edge"
},
{
"path": "app/routes/get-started.tsx",
"source": "spec-edge"
},
{
"path": "app/routes/papers.$slug.tsx",
"source": "spec-edge"
},
{
"path": "app/routes/papers.tsx",
"source": "spec-edge"
},
{
"path": "app/routes/products.tsx",
"source": "spec-edge"
},
{
"path": "react-router.config.ts",
"source": "spec-edge"
}
],
"resolvedUnits": [
{
"locations": [
{
"file": "app/components/architecture-explorer.tsx"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/components/architecture-explorer.tsx"
}
},
{
"locations": [
{
"file": "app/components/icons.tsx"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/components/icons.tsx"
}
},
{
"locations": [
{
"file": "app/components/paper-reader.tsx"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/components/paper-reader.tsx"
}
},
{
"locations": [
{
"file": "app/components/sign-in-link.tsx"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/components/sign-in-link.tsx"
}
},
{
"locations": [
{
"file": "app/lib/explorer-diagrams.ts"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/lib/explorer-diagrams.ts"
}
},
{
"locations": [
{
"file": "app/lib/get-started.ts"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/lib/get-started.ts"
}
},
{
"locations": [
{
"file": "app/lib/papers.ts"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/lib/papers.ts"
}
},
{
"locations": [
{
"file": "app/lib/products.ts"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/lib/products.ts"
}
},
{
"locations": [
{
"file": "app/lib/whitepaper.ts"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/lib/whitepaper.ts"
}
},
{
"locations": [
{
"file": "app/routes/get-started.tsx"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/routes/get-started.tsx"
}
},
{
"locations": [
{
"file": "app/routes/papers.$slug.tsx"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/routes/papers.$slug.tsx"
}
},
{
"locations": [
{
"file": "app/routes/papers.tsx"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/routes/papers.tsx"
}
},
{
"locations": [
{
"file": "app/routes/products.tsx"
}
],
"ownership": true,
"sourceField": "establishes",
"unit": {
"kind": "file",
"path": "app/routes/products.tsx"
}
},
{
"locations": [
{
"file": "app/components/site-chrome.tsx"
}
],
"ownership": true,
"sourceField": "extends",
"unit": {
"kind": "file",
"path": "app/components/site-chrome.tsx"
}
},
{
"locations": [
{
"file": "app/routes.ts"
}
],
"ownership": true,
"sourceField": "extends",
"unit": {
"kind": "file",
"path": "app/routes.ts"
}
},
{
"locations": [
{
"file": "react-router.config.ts"
}
],
"ownership": true,
"sourceField": "extends",
"unit": {
"kind": "file",
"path": "react-router.config.ts"
}
}
],
"specId": "004-marketing-surfaces",
"specStatus": "approved"
},
"schemaVersion": "1.1.0",
"shardHash": "17cae3aae14beeeda1c9cc036ee10a1fa5f8bb808278529665a3ab98182a78be"
}
6 changes: 3 additions & 3 deletions .derived/spec-registry/by-spec/001-site-scaffold.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@
"3. Behavior",
"4. Acceptance",
"5. Out of scope",
"6. Status (2026-07-14): complete, live at https://stagecraft.ing"
"6. Status (2026-07-14): complete, live at https://statecraft.ing"
],
"specPath": "specs/001-site-scaffold/spec.md",
"status": "approved",
"summary": "The marketing and docs site, built as a fully static React Router v7 app (framework mode, prerendered, no SSR at runtime) deployed to GitHub Pages under stagecraft.ing. Amended 2026-07-14: React Router v7 replaces the earlier Astro choice, harvesting the OAP-era stagecraft web app (ecosystem content, the spec-registry viewer) and keeping the whole product family on one frontend stack. The registry viewer runs over build-time-baked shards from the public repos, so the site stays static and every claim stays checkable. The apex DNS cutover is authorized: the legacy control plane no longer owns the domain.\n",
"title": "stagecraft.ing: React Router v7 static site, Pages deploy, apex cutover"
"summary": "The marketing and docs site, built as a fully static React Router v7 app (framework mode, prerendered, no SSR at runtime) deployed to GitHub Pages under statecraft.ing. Amended 2026-07-14: React Router v7 replaces the earlier Astro choice, harvesting the OAP-era statecraft web app (ecosystem content, the spec-registry viewer) and keeping the whole product family on one frontend stack. The registry viewer runs over build-time-baked shards from the public repos, so the site stays static and every claim stays checkable. The apex DNS cutover is authorized: the legacy control plane no longer owns the domain.\n",
"title": "statecraft.ing: React Router v7 static site, Pages deploy, apex cutover"
},
"shardHash": "b49f22920be2a1d5873fe38da81d44466129e9422159399541c6f41c3dc4e69f",
"specVersion": "1.1.0"
Expand Down
2 changes: 1 addition & 1 deletion .derived/spec-registry/by-spec/002-launch-content.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
],
"specPath": "specs/002-launch-content/spec.md",
"status": "approved",
"summary": "The words on the site at launch. One index page that states what Stagecraft is in the builder's own register (creator-led, OSS-credible, no startup theater), a product-family section presenting the roster owned by spec 003, and an honest status section tied to the public milestone ladder. The positioning facts are inlined here so the implementing session needs no external archive.\n",
"summary": "The words on the site at launch. One index page that states what Statecraft is in the builder's own register (creator-led, OSS-credible, no startup theater), a product-family section presenting the roster owned by spec 003, and an honest status section tied to the public milestone ladder. The positioning facts are inlined here so the implementing session needs no external archive.\n",
"title": "Launch content: positioning, product family, honest status"
},
"shardHash": "69cf21c7547a8181c8c517b14673b7776e8e5379a8075a849ea9165a370a9bff",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
],
"specPath": "specs/003-product-family-registry/spec.md",
"status": "approved",
"summary": "The canonical registry of the Stagecraft product family: each repo's name, role, SPDX license, and URL, encoded once in app/lib/product-family.ts and consumed by the index family section, the footer, and the /registry viewer's repoMeta lookup. This spec gives that module a single explicit owner so a roster change (a repo added, removed, or re-described) is an ordinary authoring edit here plus the module, with no coupling waiver and no edit to the scaffold (001) or launch-content (002) specs. It owns the roster data, not the rendering.\n",
"summary": "The canonical registry of the Statecraft product family: each repo's name, role, SPDX license, and URL, encoded once in app/lib/product-family.ts and consumed by the index family section, the footer, and the /registry viewer's repoMeta lookup. This spec gives that module a single explicit owner so a roster change (a repo added, removed, or re-described) is an ordinary authoring edit here plus the module, with no coupling waiver and no edit to the scaffold (001) or launch-content (002) specs. It owns the roster data, not the rendering.\n",
"title": "Product-family registry: a single owner for the shared repo list"
},
"shardHash": "cb8d0cd1171faee3ce246ccacab44f0ecdceca15d9c52d962ca22250e0e51cb8",
Expand Down
Loading
Loading