ε.κ.0 δ2 — A-21 G-SHACL-OPEN-FLAG-ENFORCED gate spec + A-162 candidate
Outcome: outcome-VALIDATED Closed: 2026-05-04T19:55 BST
Key empirical findings
-
gen-shacl —non-closed is the default-closed fix — LinkML 1.10.0 defaults
sh:closed true;--non-closedproducessh:closed falsein generated SHACL. Smoke-test confirmed:- Closed shapes (default):
Conforms: False—ClosedConstraintComponentrejects partner extension property - Open shapes (
--non-closed):Conforms: True
- Closed shapes (default):
-
2 NON-COMPLIANT patches applied (from δ1 remediation list):
code-inherit-v2/.github/workflows/linkml-generator-matrix.ymlline 66 →gen-shacl --non-closed linkml/inherit-v2.linkml.yamlcode-inherit-v2/Makefileline 41 →gen-shacl --non-closed $(SCHEMA)- Commit
be43647pushed to code-inherit-v2 main
-
Lint script:
docs-strategy/scripts/lint-gen-shacl-invocations.shv1.0 authored and committed (56d9a76). Scans.github/workflows/for non-compliantgen-shaclinvocations. Run against patched repo: PASS. -
A-162 amendment candidate: G-SHACL-OPEN-FLAG-ENFORCED — pending Rich approval. Text in closure-bundle + T-file §6.
-
richard-task #229 reactivation condition MET: ELK OWL API spike can proceed once A-162 approved; reactivation threshold remains T-box ~2K complex DL classes.
Pre-existing arch-state discrepancy (documented, not resolved)
Shape X angle (vii) says “21-gate CI” but §13 entries say “22 per A-130”. Pre-existing inconsistency; δ2 treats §13 as authoritative. Should be resolved at next arch-state minor bump.
Commits
| Repo | Commit | Description |
|---|---|---|
| off-github | e72101f | T-file |
| code-inherit-v2 | be43647 | CI patches |
| docs-strategy | 56d9a76 | Lint script |
Why: A-162 enforces that INHERIT v2 partner extensions (properties beyond the base schema) are not silently rejected by SHACL CI gates. Without —non-closed, all partner extension validation passes locally but fails in CI with no error message about the real cause.
How to apply: When authoring new A-21 CI gates that invoke gen-shacl, always include --non-closed. Run bash docs-strategy/scripts/lint-gen-shacl-invocations.sh <repo-root> to verify. A-162 wiring into pre-commit hook is a Phase-1 Sprint S1 follow-on (~½ day).