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
14 changes: 7 additions & 7 deletions .hypatia-baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
"severity": "high",
"rule_module": "code_safety",
"type": "ncl_http_url",
"file": "k9-svc/register.ncl",
"file": "1-formats/k9/register.ncl",
"note": "FALSE POSITIVE (hypatia triage 2026-07-21): The http:// strings are an XML namespace URI and a DTD public identifier \u2014 opaque identifiers mandated by the freedesktop/Apple specs, never fetched. Changing them to https would break MIME registrati"
},
{
Expand Down Expand Up @@ -94,7 +94,7 @@
"severity": "high",
"rule_module": "code_safety",
"type": "shell_download_then_run",
"file": "agentic-a2ml/scripts/bootstrap.sh",
"file": "1-formats/a2ml/agentic/scripts/bootstrap.sh",
"note": "TRACKED DEBT (hypatia triage 2026-07-21): Same template-shared bootstrap as id 41 (byte-identical pattern). One template fix (download + sha256-verify + run) clears all instances.",
"expires_at": "2026-10-21",
"tracking_issue": "hyperpolymath/standards#399"
Expand All @@ -103,7 +103,7 @@
"severity": "high",
"rule_module": "code_safety",
"type": "shell_download_then_run",
"file": "neurosym-a2ml/scripts/bootstrap.sh",
"file": "1-formats/a2ml/neurosym/scripts/bootstrap.sh",
"note": "TRACKED DEBT (hypatia triage 2026-07-21): Real download-and-execute. Template-shared bootstrap (identical in agentic-a2ml and rsr-deployer) \u2014 fix the template once: download to file, verify sha256, then run.",
"expires_at": "2026-10-21",
"tracking_issue": "hyperpolymath/standards#399"
Expand Down Expand Up @@ -317,8 +317,8 @@
"severity": "high",
"rule_module": "code_scanning_alerts",
"type": "CSA001",
"file": "k9-svc/register.ncl",
"note": "FALSE POSITIVE (hypatia triage 2026-07-21): Doubly false: CSA mirror double-report (#378) AND underlying ncl_http_url matched XML namespace identifiers which are opaque strings, never dereferenced. k9-svc/** carved out to #491."
"file": "1-formats/k9/register.ncl",
"note": "FALSE POSITIVE (hypatia triage 2026-07-21): Doubly false: CSA mirror double-report (#378) AND underlying ncl_http_url matched XML namespace identifiers which are opaque strings, never dereferenced. 1-formats/k9/** carved out to #491."
},
{
"severity": "high",
Expand Down Expand Up @@ -452,7 +452,7 @@
"severity": "high",
"rule_module": "code_scanning_alerts",
"type": "CSA003",
"file": "k9-svc/register.ncl",
"file": "1-formats/k9/register.ncl",
"note": "FALSE POSITIVE (hypatia triage 2026-07-21): Double-false: mirror double-report per standards#378, AND the underlying ncl_http_url alert flags XML namespace/DTD identifiers, which are opaque IDs never fetched over HTTP. k9-svc carve-out #491."
},
{
Expand Down Expand Up @@ -666,7 +666,7 @@
"severity": "medium",
"rule_module": "structural_drift",
"type": "SD022",
"file": "meta-a2ml/spec/SCM-FORMAT-FAMILY.adoc",
"file": "1-formats/a2ml/meta/spec/SCM-FORMAT-FAMILY.adoc",
"note": "FALSE POSITIVE (hypatia triage 2026-07-21): Sample SCM session data in a format spec \u2014 the path is example payload content, not a repo reference."
},
{
Expand Down
2 changes: 1 addition & 1 deletion .machine_readable/INTENT.contractile
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"rhodium-standard-repositories/ — RSR requirements affect all 500+ estate repos"
".machine_readable/ — format is specified; do not add files outside the contractile schema"
"a2ml/ — specification language; backwards-incompatible changes need an ADR"
"k9-svc/ and k9-coordination-protocol/ — K9 trust tier boundaries are load-bearing"
"1-formats/k9/ and k9-coordination-protocol/ — K9 trust tier boundaries are load-bearing"
)

; === Ecosystem Position ===
Expand Down
32 changes: 16 additions & 16 deletions .machine_readable/REGISTRY.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ route = "the highest estate-level rules, authority precedence, assurance, contri
id = "k9-svc"
name = "K9 Self-Validating Components"
stream = "foundation"
home = "k9-svc/"
canonical_doc = "k9-svc/README.adoc"
home = "1-formats/k9/"
canonical_doc = "1-formats/k9/README.adoc"
source_hash = "sha256:780c4a516609fe2c8a61c615ef9f8a97c630218813385530ad4c1a36a61908ef"
route = "the K9 specification, security analysis and adoption guidance (implementations live in hyperpolymath/k9-ecosystem)"

Expand All @@ -61,62 +61,62 @@ route = "policy-enforcement primitives the K9 layer is built from"
id = "meta-a2ml"
name = "META.a2ml spec"
stream = "foundation"
home = "meta-a2ml/"
canonical_doc = "meta-a2ml/README.adoc"
home = "1-formats/a2ml/meta/"
canonical_doc = "1-formats/a2ml/meta/README.adoc"
source_hash = "sha256:a058855d1c8019ccf1814a9386ba406b7e8df3698fd17c9fd342a5134f6a2eb0"
route = "architecture decisions / governance metadata format"

[[spec]]
id = "state-a2ml"
name = "STATE.a2ml spec"
stream = "foundation"
home = "state-a2ml/"
canonical_doc = "state-a2ml/README.adoc"
home = "1-formats/a2ml/state/"
canonical_doc = "1-formats/a2ml/state/README.adoc"
source_hash = "sha256:a67908e04098d40d957fe067042410bf195ef48dd2d18e7426b66b3ed1a01f33"
route = "project-state metadata format (drives this registry's topology)"

[[spec]]
id = "ecosystem-a2ml"
name = "ECOSYSTEM.a2ml spec"
stream = "foundation"
home = "ecosystem-a2ml/"
canonical_doc = "ecosystem-a2ml/README.adoc"
home = "1-formats/a2ml/ecosystem/"
canonical_doc = "1-formats/a2ml/ecosystem/README.adoc"
source_hash = "sha256:fd8d8eae614d7a6c89dee84a874e4a5ba6f94db4b5e3f675154252632b01788d"
route = "ecosystem-positioning metadata format"

[[spec]]
id = "agentic-a2ml"
name = "AGENTIC.a2ml spec"
stream = "foundation"
home = "agentic-a2ml/"
canonical_doc = "agentic-a2ml/README.adoc"
home = "1-formats/a2ml/agentic/"
canonical_doc = "1-formats/a2ml/agentic/README.adoc"
source_hash = "sha256:025e72fc7cbddeeb4e92b3d1aedd74e812f164644dd9ecd26010e4ff26a74c3a"
route = "AI-agent operational gating / entropy budgets"

[[spec]]
id = "neurosym-a2ml"
name = "NEUROSYM.a2ml spec"
stream = "foundation"
home = "neurosym-a2ml/"
canonical_doc = "neurosym-a2ml/README.adoc"
home = "1-formats/a2ml/neurosym/"
canonical_doc = "1-formats/a2ml/neurosym/README.adoc"
source_hash = "sha256:753f11a288d6402296a6dc2fc69c0cca986e164d6319b7b789e159995816ec61"
route = "symbolic semantics / proof obligations"

[[spec]]
id = "playbook-a2ml"
name = "PLAYBOOK.a2ml spec"
stream = "foundation"
home = "playbook-a2ml/"
canonical_doc = "playbook-a2ml/README.adoc"
home = "1-formats/a2ml/playbook/"
canonical_doc = "1-formats/a2ml/playbook/README.adoc"
source_hash = "sha256:ae559e69331afa37ddf14d71d92bddb41613964765420a2fe930234c13e71074"
route = "executable operational runbooks"

[[spec]]
id = "anchor-a2ml"
name = "ANCHOR.a2ml spec"
stream = "foundation"
home = "anchor-a2ml/"
canonical_doc = "anchor-a2ml/README.adoc"
home = "1-formats/a2ml/anchor/"
canonical_doc = "1-formats/a2ml/anchor/README.adoc"
source_hash = "sha256:d33c7ff6c44dc734eb8fd05bd5c7491176da20237b0a5d8212df25471e6b2765"
route = "project-recalibration intervention format"

Expand Down
4 changes: 2 additions & 2 deletions .machine_readable/scorecards/agentic-a2ml.scorecard.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ id = "M3"
text = "The gating grammar MUST be formally defined (ABNF) and kept consistent with the JSON Schema representation."
system = "none — no cross-check script diffs spec/agentic.abnf against spec/agentic.schema.json"
status = "fail"
effects = "spec/agentic.abnf (199 lines) and spec/agentic.schema.json (418 lines) can drift silently (as already evidenced by M2's section mismatch); any parser generated from one artifact may reject files valid under the other, breaking playbook-a2ml/meta-a2ml consumers that pick either as ground truth."
effects = "spec/agentic.abnf (199 lines) and spec/agentic.schema.json (418 lines) can drift silently (as already evidenced by M2's section mismatch); any parser generated from one artifact may reject files valid under the other, breaking 1-formats/a2ml/playbook/meta-a2ml consumers that pick either as ground truth."

[[must]]
id = "M4"
text = "Every source file MUST carry a valid SPDX-License-Identifier header consistent with the repository's licensing policy."
system = "none — no automated SPDX header linter/CI job is configured in .gitlab-ci.yml for this repo"
status = "manual-only"
effects = "Licence compliance for redistribution of individual files (e.g. by downstream forks) depends on manual review; inconsistent headers already observed (README/ADRs declare CC-BY-SA-4.0, ffi/rsr-adapter.adb declares MPL-2.0 as 'automatic legal fallback until PMPL is formally recognised', and no repo-local LICENSE file exists under agentic-a2ml/ itself even though README says 'See LICENSE')."
effects = "Licence compliance for redistribution of individual files (e.g. by downstream forks) depends on manual review; inconsistent headers already observed (README/ADRs declare CC-BY-SA-4.0, ffi/rsr-adapter.adb declares MPL-2.0 as 'automatic legal fallback until PMPL is formally recognised', and no repo-local LICENSE file exists under 1-formats/a2ml/agentic/ itself even though README says 'See LICENSE')."

[[must]]
id = "M5"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ id = "C1"
text = "The standard COULD integrate with K9 contract validation to automate Grade-B promotion checks (verifying 6+ diverse external targets) as sketched in the automation-hooks section."
system = "none"
status = "aspirational"
effects = "COMPONENT-READINESS-GRADES.a2ml lines 139-143 describe this as a future use-case ('K9 contract validates 6+ diverse targets meet diversity-metrics before allowing promotion') with a pointer to k9-svc/README.adoc, but no such contract exists yet; promotion to B remains a manual claim."
effects = "COMPONENT-READINESS-GRADES.a2ml lines 139-143 describe this as a future use-case ('K9 contract validates 6+ diverse targets meet diversity-metrics before allowing promotion') with a pointer to 1-formats/k9/README.adoc, but no such contract exists yet; promotion to B remains a manual claim."

[[could]]
id = "C2"
Expand Down
14 changes: 7 additions & 7 deletions .machine_readable/scorecards/ecosystem-a2ml.scorecard.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ text = "ECOSYSTEM.a2ml documents MUST declare version, name, type, and purpose a
system = "spec/ecosystem.schema.json (\"required\": [\"version\", \"name\", \"type\", \"purpose\"])"
status = "pass"
evidence = "/home/user/standards/ecosystem-a2ml/spec/ecosystem.schema.json line 7 declares required: [\"version\",\"name\",\"type\",\"purpose\"], matching README.adoc's \"Required Fields\" table."
check = "python3 -c \"import json; d=json.load(open('ecosystem-a2ml/spec/ecosystem.schema.json')); assert 'properties' in d\" && grep -q '2020-12/schema' ecosystem-a2ml/spec/ecosystem.schema.json"
check = "python3 -c \"import json; d=json.load(open('1-formats/a2ml/ecosystem/spec/ecosystem.schema.json')); assert 'properties' in d\" && grep -q '2020-12/schema' 1-formats/a2ml/ecosystem/spec/ecosystem.schema.json"
effects = "Consumers building parsers/validators around this schema can rely on these four fields always being present; if unmet, downstream tooling (linters, dependency-mapping generators) would need defensive null-checks."

[[must]]
Expand All @@ -31,7 +31,7 @@ text = "A machine-readable JSON Schema MUST exist to validate the JSON represent
system = "spec/ecosystem.schema.json (2020-12 draft JSON Schema with typed properties, patterns for semver, enums)"
status = "pass"
evidence = "/home/user/standards/ecosystem-a2ml/spec/ecosystem.schema.json exists, is well-formed JSON Schema (draft 2020-12), and defines version/name/type/purpose plus optional properties (family, position-in-ecosystem, related-projects, etc.) matching the README's documented field set."
check = "python3 -c \"import json; d=json.load(open('ecosystem-a2ml/spec/ecosystem.schema.json')); assert 'properties' in d\" && grep -q '2020-12/schema' ecosystem-a2ml/spec/ecosystem.schema.json"
check = "python3 -c \"import json; d=json.load(open('1-formats/a2ml/ecosystem/spec/ecosystem.schema.json')); assert 'properties' in d\" && grep -q '2020-12/schema' 1-formats/a2ml/ecosystem/spec/ecosystem.schema.json"
effects = "Downstream tooling (a2ml-to-json converters, CI validators in consuming repos) depends on this schema being present and internally coherent to validate ecosystem manifests at scale."

[[must]]
Expand Down Expand Up @@ -60,21 +60,21 @@ id = "S2"
text = "The spec SHOULD have CI that lints/validates the grammar, JSON Schema, and any example documents on every push (e.g. schema self-validation, ABNF syntax check, or example-vs-schema conformance test)."
system = "none"
status = "fail"
effects = "No .github/workflows exist under ecosystem-a2ml/, and no repo-root workflow (.github/workflows/*.yml) references ecosystem.schema.json, ecosystem.abnf, or this directory. The M2 scm/a2ml mismatch and the M4 wrong-example issue would have been caught immediately by even a minimal CI check, and none exists to catch regressions going forward."
effects = "No .github/workflows exist under 1-formats/a2ml/ecosystem/, and no repo-root workflow (.github/workflows/*.yml) references ecosystem.schema.json, ecosystem.abnf, or this directory. The M2 scm/a2ml mismatch and the M4 wrong-example issue would have been caught immediately by even a minimal CI check, and none exists to catch regressions going forward."

[[should]]
id = "S3"
text = "Governance contractiles (Mustfile/Dustfile/Trustfile/Intentfile under 1-formats/contractiles/) SHOULD be filled in with this project's real invariants rather than left as generic templates."
system = "none (root scripts/check-mustfile-structure.sh and scripts/run-mustfile.sh default to .machine_readable/contractiles/must/Mustfile.a2ml at repo root and are not wired to ecosystem-a2ml/contractiles/must/Mustfile, which uses a different path/naming convention)"
system = "none (root scripts/check-mustfile-structure.sh and scripts/run-mustfile.sh default to .machine_readable/contractiles/must/Mustfile.a2ml at repo root and are not wired to 1-formats/a2ml/ecosystem/contractiles/must/Mustfile, which uses a different path/naming convention)"
status = "fail"
effects = "1-formats/contractiles/must/Mustfile still contains the literal template checks (config-valid, gateway-exposes-port, etc.) unrelated to an A2ML spec repo, and .machine_readable/descriptiles/ECOSYSTEM.a2ml has empty purpose/role/category fields and 'No related projects recorded' — none of it reflects real invariants, so the framework provides no actual governance signal for this repo, and the monorepo's boj-build.yml CI job validates only the top-level repo's own contractiles, not this subdirectory's."

[[should]]
id = "S4"
text = "Repository-level governance files that the README's 'Project Structure' section lists as present in ecosystem-a2ml/ (CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, LICENSE) SHOULD actually exist at that stated path."
text = "Repository-level governance files that the README's 'Project Structure' section lists as present in 1-formats/a2ml/ecosystem/ (CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, LICENSE) SHOULD actually exist at that stated path."
system = "none"
status = "fail"
effects = "A contributor following the README's tree diagram (which places CONTRIBUTING.md/CODE_OF_CONDUCT.md/SECURITY.md/LICENSE directly under ecosystem-a2ml/) will find none of those files there; only monorepo-root equivalents exist (/home/user/standards/CONTRIBUTING.md etc.), which may or may not apply identically to this subproject's PMPL-1.0 licence claim."
effects = "A contributor following the README's tree diagram (which places CONTRIBUTING.md/CODE_OF_CONDUCT.md/SECURITY.md/LICENSE directly under 1-formats/a2ml/ecosystem/) will find none of those files there; only monorepo-root equivalents exist (/home/user/standards/CONTRIBUTING.md etc.), which may or may not apply identically to this subproject's PMPL-1.0 licence claim."

[[could]]
id = "C1"
Expand All @@ -88,7 +88,7 @@ id = "C2"
text = "Standard citation metadata (CITATION.cff, codemeta.json) COULD be provided so the spec can be formally cited."
system = "none"
status = "fail"
effects = "docs/CITATIONS.adoc links to '../CITATION.cff' and '../codemeta.json', neither of which exists in ecosystem-a2ml/; the citations doc itself is unedited RSR-template-repo boilerplate (title 'RSR-template-repo', author 'Polymath, Hyper') rather than content specific to ECOSYSTEM.a2ml, so academic/tooling consumers get broken links and wrong metadata if they try to cite this spec."
effects = "docs/CITATIONS.adoc links to '../CITATION.cff' and '../codemeta.json', neither of which exists in 1-formats/a2ml/ecosystem/; the citations doc itself is unedited RSR-template-repo boilerplate (title 'RSR-template-repo', author 'Polymath, Hyper') rather than content specific to ECOSYSTEM.a2ml, so academic/tooling consumers get broken links and wrong metadata if they try to cite this spec."

[[could]]
id = "C3"
Expand Down
Loading
Loading