Skip to content

Commit 2ee0be5

Browse files
Merge branch 'main' into claude/nice-hopper-fzl2bl
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
2 parents 93dbe4c + 4fa96a6 commit 2ee0be5

7 files changed

Lines changed: 145 additions & 30 deletions

File tree

.github/workflows/secret-scanner.yml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,3 @@ jobs:
1313
scan:
1414
uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@3e4bd4c93911750727e2e4c66dff859e00079da0
1515
secrets: inherit
16-
trufflehog:
17-
runs-on: ubuntu-latest
18-
steps:
19-
- uses: actions/checkout@v4
20-
with:
21-
fetch-depth: 0
22-
- name: TruffleHog Secret Scan
23-
uses: trufflesecurity/trufflehog@main
24-
with:
25-
extra_args: --only-verified --fail

czech-file-knife/Cargo.lock

Lines changed: 5 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deno.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@
1313
"./coq-ecosystem/coq-jr",
1414
"./deno-ecosystem/projects/beamdeno",
1515
"./deno-ecosystem/projects/deno-bunbridge",
16-
"./rescript-ecosystem/cadre-router",
17-
"./rescript-ecosystem/cadre-router/tea-router",
18-
"./rescript-ecosystem/cadre-router/tea-router-pkg",
19-
"./rescript-ecosystem/cadre-tea-router",
2016
"./rescript-ecosystem/idaptik-rescript13-staging",
2117
"./rescript-ecosystem/idaptik-rescript13-staging/idaptik-ums",
2218
"./rescript-ecosystem/packages/bindings/d3",
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
# ANCHOR.a2ml — authoritative anchor for the k9-ecosystem hub.
4+
5+
[metadata]
6+
version = "1.0.0"
7+
last-updated = "2026-06-20"
8+
9+
[anchor]
10+
schema = "hyperpolymath.anchor/1"
11+
repo = "hyperpolymath/k9-ecosystem"
12+
authority = "upstream-canonical"
13+
purpose = [
14+
"Own the canonical K9 format specification and conformance suite.",
15+
"Define what K9 implementations (satellites) may extend but not redefine.",
16+
"Publish the spec version that every satellite must pin.",
17+
]
18+
19+
[identity]
20+
project = "k9-ecosystem"
21+
kind = "specification-hub"
22+
one-sentence = "Canonical home of the K9 self-validating configuration format: owns the spec and conformance suite, aggregates the implementations and tooling."
23+
domain = "software-component-declaration"
24+
25+
[semantic-authority]
26+
policy = "canonical"
27+
owns = [
28+
"K9 format specification (spec/SPEC.adoc)",
29+
"Conformance suite and reference behavior (conformance/fixtures/)",
30+
"K9 invariant definitions and the SecurityLevel / Leash model",
31+
]
32+
33+
[semantic-authority-files]
34+
language-spec = "spec/SPEC.adoc"
35+
conformance = "conformance/fixtures/"
36+
37+
[spec-version]
38+
# The version satellites pin. Bump on ratified spec changes.
39+
current = "0.1.0-draft"
40+
41+
[governance-authority]
42+
# The hub is itself a satellite of the estate standards for governance:
43+
# the anchor schema, contractile model, and ECOSYSTEM.a2ml meta-layer are owned upstream.
44+
upstream = "hyperpolymath/developer-ecosystem"
45+
pins-schema = "hyperpolymath.anchor/1"
46+
47+
[satellite-policy]
48+
# Obligations the hub places on every K9 member (implementation / tooling / ci / examples):
49+
must-pin-upstream = true
50+
must-declare-authority = true
51+
must-have-anchor = true
52+
must-run-conformance = true
53+
54+
[implementation-policy]
55+
allowed = ["AsciiDoc", "Markdown", "Nickel", "Just", "Shell", "TOML"]
56+
forbidden = ["Node.js", "npm"]
57+
58+
[golden-path]
59+
smoke-test-command = ["just check-spec"]
60+
success-criteria = [
61+
"spec/SPEC.adoc present and versioned",
62+
"conformance/fixtures present",
63+
]
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// SPDX-License-Identifier: MPL-2.0
2+
// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
= K9 Anchors — single source of truth, enforced
4+
5+
The K9 format has *one writer and many pinned readers*. This directory holds the
6+
mechanism that keeps them from drifting silently.
7+
8+
== Roles
9+
10+
* `ANCHOR.a2ml` — the *hub* anchor. Declares `authority = upstream-canonical`
11+
and `semantic-authority.owns` the K9 spec (`spec/SPEC.adoc`) and conformance
12+
suite. Publishes `[spec-version].current` — the version every member pins. The
13+
hub is itself a *satellite of `developer-ecosystem`* for governance.
14+
* `SATELLITE-ANCHOR.template.a2ml` — copied into each member repo as
15+
`.machine_readable/anchors/ANCHOR.a2ml`, with `authority = satellite` and an
16+
`[upstream]` block pinning `spec-version`.
17+
18+
== The contract (pin + verify, not hardlink)
19+
20+
[cols="1,2,2", options="header"]
21+
|===
22+
| Artifact | Pin | Drift check
23+
| Spec prose | satellite cites `spec-version` | anchor-drift job: pinned version must exist upstream
24+
| Conformance fixtures | submodule / published artifact | conformance run: impl output != `expected.json` -> red
25+
| Derived grammars (tree-sitter, TextMate, JSON schema) | generated from the spec | regenerate-&-diff job: stale -> red
26+
| Vendored governance | stamped via `{{OWNER}}` templating + content hash | `a2ml-validate-action` re-stamp, fail on hash diff
27+
|===
28+
29+
The enforcer is `hyperpolymath/k9-validate-action`: an *anchor-drift* job asserts
30+
every satellite pins an existing upstream `spec-version` and (where vendored) that
31+
governance hashes match. A drifted satellite cannot merge — the CI check is the
32+
hardlink: versioned and loud.
33+
34+
== Propagation status
35+
36+
* [x] Hub anchor (this PR)
37+
* [ ] `k9-rs` flipped `upstream-canonical -> satellite` (reference behaviour, not spec authority)
38+
* [ ] Satellite anchors stamped across the remaining members
39+
* [ ] anchor-drift job added to `k9-validate-action`
40+
* [ ] generate-from-spec + regen-diff wired for `tree-sitter-k9` / `vscode-k9`
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# SPDX-FileCopyrightText: 2026 {{AUTHOR}} ({{OWNER}}) <{{AUTHOR_EMAIL}}>
3+
# ANCHOR.a2ml — satellite anchor template. Copy into a K9 member repo at
4+
# .machine_readable/anchors/ANCHOR.a2ml and fill the {{...}} fields.
5+
6+
[metadata]
7+
version = "1.0.0"
8+
last-updated = "{{CURRENT_DATE}}"
9+
10+
[anchor]
11+
schema = "hyperpolymath.anchor/1"
12+
repo = "{{OWNER}}/{{REPO}}"
13+
authority = "satellite"
14+
15+
[identity]
16+
project = "{{PROJECT_NAME}}"
17+
kind = "{{PROJECT_KIND}}" # implementation | tooling | ci | examples
18+
one-sentence = "{{PROJECT_PURPOSE}}"
19+
20+
[upstream]
21+
# Canonical owner of the K9 format. This satellite may extend but not redefine it.
22+
canonical = "hyperpolymath/k9-ecosystem"
23+
spec-version = "0.1.0-draft" # MUST equal an existing k9-ecosystem [spec-version].current
24+
conformance = "hyperpolymath/k9-ecosystem//conformance/fixtures"
25+
26+
[satellite-policy]
27+
must-pin-upstream = true
28+
must-run-conformance = true # reproduce conformance fixtures' expected.json
29+
redefines-spec = false
30+
31+
[golden-path]
32+
smoke-test-command = ["just test"]
33+
success-criteria = [
34+
"Conformance fixtures reproduced",
35+
"Pinned spec-version exists upstream",
36+
]

rescript-ecosystem/packages/tooling/create-poly/deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "@hyperpolymath/rescript-poly-core",
2+
"name": "@hyperpolymath/rescript-create-poly",
33
"version": "0.1.0",
44
"exports": "./src/PolyCore.res.js",
55
"tasks": {

0 commit comments

Comments
 (0)