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
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@
"specStatus": "approved"
},
"schemaVersion": "1.1.0",
"shardHash": "433eb99012f76eda5b5940890a1cf35a223c0b32acaee0446d074f251cb555fa"
"shardHash": "367dbdba178c66db7708d077ae5b78774614bc2880620ca4187ad703ff3266ea"
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@
"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": "69d16df0efddc33e2ef09a97626c9662efa2a8be3f0c4b5a092b21649239526a",
"shardHash": "bdbe1f36bd561f96d6a61c98e598ec8494fb4913ec89c2af121bb6a9a57d96af",
"specVersion": "1.1.0"
}
8 changes: 8 additions & 0 deletions app/lib/product-family.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ export const REPO_META: Record<string, RepoMeta> = {
role: "a rolling-window trust scorer: weighted samples map to a graduated privilege level",
url: `${ORG_URL}/trust-window`,
},
statecrafting: {
repo: "statecrafting",
name: "statecrafting",
license: "Apache-2.0",
role: "the shared native packages: the @statecrafting/* napi addons and the Encore build toolchain",
url: `${ORG_URL}/statecrafting`,
},
"statecraft.ing": {
repo: "statecraft.ing",
name: "statecraft.ing",
Expand All @@ -112,6 +119,7 @@ export const PRODUCT_FAMILY: RepoMeta[] = [
REPO_META["attest-ledger"],
REPO_META["canonical-keysort-json"],
REPO_META["trust-window"],
REPO_META["statecrafting"],
];

export function repoMeta(repo: string): RepoMeta | undefined {
Expand Down
13 changes: 11 additions & 2 deletions specs/003-product-family-registry/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ repo-list change. This spec removes that recurring friction.

## 3. The roster

Ten public repositories under the `statecrafting` org, each checkable
Eleven public repositories under the `statecrafting` org, each checkable
against its own repo; the license is the SPDX id in that repo's LICENSE.
Each URL is `https://github.com/statecrafting/<repo>`.

Expand All @@ -79,13 +79,18 @@ Each URL is `https://github.com/statecrafting/<repo>`.
| attest-ledger | the tamper-evident, hash-linked record ledger | Apache-2.0 |
| canonical-keysort-json | canonical JSON at the hash boundary | Apache-2.0 |
| trust-window | the rolling-window trust scorer | Apache-2.0 |
| statecrafting | the shared native packages (the @statecrafting/* napi addons and the Encore toolchain) | Apache-2.0 |

The `statecrafting` repo's root LICENSE is Apache-2.0 (the org-scope
default); two of its packages carry AGPL-3.0 per-package licenses, which
the repo's own spec corpus documents.

`REPO_META` also carries a `statecraft.ing` entry (this site, unlicensed)
as a lookup convenience; it is not part of the public roster above.

## 4. Acceptance

- `app/lib/product-family.ts` encodes exactly these ten repos, in this
- `app/lib/product-family.ts` encodes exactly these eleven repos, in this
order, with these licenses; each role is a faithful one-line summary of
the repo's own description (the module may phrase it more fully).
- A subsequent roster edit (this section 3 plus the module) passes
Expand All @@ -110,3 +115,7 @@ spec declares ownership rather than creating the file, hence
`origin.retroactive: true`. No code change ships with this spec; the
module already matches section 3. The next roster edit couples cleanly
against this spec instead of requiring a waiver.

2026-07-23: first such roster edit; the `statecrafting` packages repo
(the @statecrafting/* napi addons and the Encore toolchain) joins as the
eleventh member, coupled here plus the module, no waiver.
Loading