tenant-engine/layer.yaml
tegwick 8322f0587e Apply GH-DEC-2026-020: the checker states its version and scope, and reads content
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
2026-09-21 09:38:22 +02:00

89 lines
2.9 KiB
YAML

# tenant-engine — NetKingdom security layer declaration
#
# Framework: net-kingdom/canon/standards/security-layer-model_v0.7.md
# Companion: net-kingdom/SECURITY-COMPANION.md v0.2
# Assent: decisions/decisions.md TEN-DEC-2026-001
# Validate: python3 scripts/check_layer_conformance.py
#
# Derived artifact (§11, GH-DEC-2026-017 §1): INTENT.md frontmatter governs;
# this file is its machine-readable form and must agree with it once case is
# folded. No standard version is carried here (GH-DEC-2026-017, A12).
#
# Engine / PIP. Same authoritative tenant state yields the same result. We
# supply tenant-as-an-entity facts as claims; we do not render a decision.
# Writes are PEP-shaped (pep-stance.yaml). Catalogued Tooling (§4) is
# key-cape and OpenBao — we hold no client for either.
schema_version: "0.1"
framework: netkingdom-security-layer-model
repository: tenant-engine
derived: true
derived_from: INTENT.md
layer: engine
role: pip
declared_by: decisions/decisions.md#TEN-DEC-2026-001
declared_at: "2026-08-29"
pep_stance: pep-stance.yaml
pip_claims: pip-claims.yaml
catalog_entry:
owns:
- tenant-as-an-entity facts
# Empty is a claim. scripts/check_layer_conformance.py fails a new OpenBao
# or key-cape client that is not listed here.
tooling_contacts: []
declared_shapes:
"5.1": []
"5.2": []
"5.3": []
non_tooling_clients:
- id: postgres-own-store
module: src/tenant_engine/postgres_store.py
target: PostgreSQL
layer: not-catalogued
operation: "psycopg pool against TENANT_ENGINE_DATABASE_URL_FILE"
write: true
note: >-
Persistence this engine owns for its own facts. Companion §4: list
uncatalogued infrastructure so the check is total. Not a Tooling
contact — OpenBao and key-cape are the §4 Tooling rows.
- id: sqlite-dev-store
module: src/tenant_engine/sqlite_store.py
target: SQLite
layer: not-catalogued
operation: "sqlite3 file used for development and test"
write: true
note: "Dev/test backend. Production is PostgreSQL (TEN-WP-0009)."
- id: access-engine-check
module: src/tenant_engine/flex_auth.py
target: access-engine (flex-auth)
layer: engine
operation: "HTTP POST /v1/check"
write: false
note: "Engine API. §5 permits it; this is the shape §5 prescribes."
- id: audit-core-emission
module: src/tenant_engine/audit_core.py
target: audit-core
layer: engine
operation: "HTTP POST /v1/events from the local outbox"
write: true
note: >-
Evidence engine. Emission is attributive and non-blocking
(docs/evidence-emission.md). Sender registration on audit-core is
requested separately.
- id: state-hub-work-records
target: state-hub
layer: not-catalogued
operation: "HTTP to the Custodian State Hub for work records"
write: true
note: >-
Outside §5 by the standard's scope rule. Recorded, not policed. Carries no
tenant-fact authority and no secret payload.