VALIDATED_AGAINST now names the accepted security-layer-model v0.7
(net-kingdom@66dc491) as amended by GH-DEC-2026-017, -020, -021
(gate-house@39d9287), not the held v0.8 (021 §2).
The A12 detector converges on ops-warden's playbook reference plus the
021 §3 addition (a version in a standard:/companion: value is a pin).
A prose citation such as 'the v0.7 scope rule' is no longer failed
(021 §1); tests updated. The layer.yaml note rewording stays.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 63291@bnt-lap001
Assistant-Session: 8bd77868-ca68-4f49-bb1e-d539ecc0d703
scripts/check_layer_conformance.py now prints, on every run (success and
failure), the standard text it checks against (VALIDATED_AGAINST:
security-layer-model_v0.8.md @ net-kingdom f9e1611 with gate-house A9, A11,
A12 r2 @ 104f3fc) and its scope. A12 detection widens from the key name
standard_version to any *_version key (companion_version included), a
versioned standard/companion path, or a bare vN.N token in any key or value
of INTENT.md frontmatter or layer.yaml. schema_version and comments are not
reached; pep-stance.yaml and pip-claims.yaml are not read for A12 and keep
their version fields (GH-DEC-2026-020 §3).
The widened check found one value the key-name check could not: the
state-hub-work-records note in layer.yaml cited "the v0.7 scope rule". It is
reworded to "the standard's scope rule"; no layer or role value changes.
Tests fail if a versioned standard: path, a companion_version or a bare
version token returns, and if a run stops stating its version and scope.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 63291@bnt-lap001
Assistant-Session: 8bd77868-ca68-4f49-bb1e-d539ecc0d703
Remove standard_version from layer.yaml and the INTENT.md frontmatter (A12),
mark layer.yaml derived: true / derived_from: INTENT.md (A11), and change the
conformance checker and its tests in the same commit so the conforming
declaration does not fail as malformed.
The checker now requires the INTENT.md layer: key, rejects standard_version
in either form, checks the layer against the closed four-token vocabulary
(A9), and reports a layer/role disagreement between the two forms after an
ASCII case-fold. Nothing is re-spelled: INTENT.md keeps Engine/PIP and
layer.yaml keeps engine/pip. pep-stance.yaml and pip-claims.yaml keep their
standard_version; neither is a layer declaration.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 63291@bnt-lap001
Assistant-Session: 8bd77868-ca68-4f49-bb1e-d539ecc0d703
Engine/PIP declaration is now checkable (layer.yaml plus a Tooling-client
scan). Writes persist a decision record or the published fail-closed
stance, live-lookup freshness is published, events_for is tenant-scoped,
and mutation evidence drains to audit-core from a local outbox without
blocking the mutation.
Sender registration is requested as AUDIT-IN-0002. Boundary-contract
amendment is requested as NET-IN-0002.
Assistant: grok
Assistant-Session: 01a04cea-e5e8-7081-a0fc-808ebbc35fa9