Declare ops-mason's NetKingdom layer in INTENT.md frontmatter.

Staff, role pep-shaped, stated in ops-mason's own voice (security-layer-model
§11, GH-DEC-2026-017). Direct OpenBao and Kubernetes contacts in the shipped
executors are declared as §5.3 gaps; the §6.4 stance map is recorded as a
dated declared gap (review 2026-12-21). No sidecar, no standard version.

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
This commit is contained in:
tegwick 2026-09-21 12:36:37 +02:00
parent 1189d12dc3
commit 0ff263a0b2

122
INTENT.md
View file

@ -1,3 +1,125 @@
---
# NetKingdom security layer declaration (net-kingdom security-layer-model, §11).
#
# This frontmatter IS ops-mason's declaration, stated in its own voice. The
# 2026-08-28 review note in the body, the §4 catalog row, and correspondence
# from gate-house and access-engine are statements ABOUT ops-mason and are not
# the declaration (§11). INTENT.md governs; no layer.yaml sidecar is written
# (GH-DEC-2026-017 §1). No standard version appears anywhere in this block
# (GH-DEC-2026-017 §5, A12 r2 per GH-DEC-2026-020): the layer is a standing
# property of the repository.
#
# Worked out from ops-mason's own character against §3, not copied from §4:
# every construction plan is drafted and self-reviewed by an agent and gated by
# a founder decision -- judgment, not a deterministic function of input state.
# Its artifacts are construction plans, executive summaries and build records
# (specifications, decisions, tasks). That is Staff (§3.4). It holds no state
# another layer reads at runtime: what it builds lives in OpenBao and the
# cluster, its audit log is its own. Phase 4 causes protected side effects --
# it writes OpenBao policies and auth roles, mints and delivers AppRole
# secret_ids, and applies Kubernetes objects -- so it is PEP-shaped (§6.4).
# This agrees with §4's row. The finding is below the layer line: the shipped
# executors contact Tooling directly, which the 2026-08-28 review note says
# ops-mason does not do. Those contacts are declared here as §5.3 gaps --
# tracked non-conformance, not a claim of conformance.
layer: Staff
role: pep-shaped
repository: ops-mason
declared_by: INTENT.md
declared_at: "2026-09-21"
ruling: GH-DEC-2026-017
# §6.4 obligation 3 / §13.1 -- DECLARED GAP, not a published map. ops-mason's
# stance is undecided rather than merely unpublished: its builds are gated by a
# founder approval of a construction plan, not by an access-engine decision
# record, so there is no engine outage for a stance to govern until ops-mason
# decides whether its build path consults access-engine at all. Publishing a
# fail-closed map today would describe behaviour the code does not have.
pep_stance:
status: declared-gap
path: null
blocked_on: >-
Undecided whether phase-4 builds consult access-engine (§6.4 obligation 1)
or remain founder-approval-gated only; a stance map is only meaningful once
that is settled.
review: "2026-12-21"
# §11: every direct Tooling contact, one entry each. Empty would be a claim.
tooling_contacts:
- id: openbao-structure-build
shape: "5.3"
module: src/ops_mason/executor.py
symbol: build_approle_kv_lane, build_kubernetes_kv_lane
tooling: OpenBao
operation: "bao policy write; bao write auth/approle/role/*, auth/kubernetes/role/*"
write: true
capability: "Create policies and auth roles for an approved construction plan (structure only, never secret values)"
intended_owner: secrets-engine
blocked_on: >-
No engine exposes a policy / auth-role construction surface; ops-mason
runs the bao CLI under a scoped, time-boxed ops-mason-build token.
review: "2026-12-21"
- id: openbao-approle-credential-delivery
shape: "5.3"
module: src/ops_mason/executor.py
symbol: build_approle_kv_lane
tooling: OpenBao
operation: "bao read auth/approle/role/*/role-id; bao write -f auth/approle/role/*/secret-id"
write: true
capability: "Mint and deliver an AppRole role_id/secret_id to the consumer, write-only, never logged"
intended_owner: secrets-engine
blocked_on: >-
No engine exposes credential issuance for AppRole lanes; secrets-engine
owns credential lifecycle but fronts no issuance API today.
review: "2026-12-21"
- id: openbao-custody-metadata-read
shape: "5.1"
module: scripts/custody-inventory.py
symbol: bao
tooling: OpenBao
operation: "bao kv list; bao kv metadata get"
write: false
capability: "Inventory credential paths and their descriptions without reading any value"
intended_owner: secrets-engine
blocked_on: "No engine exposes a custody inventory query."
review: "2026-12-21"
- id: kubernetes-plane-apply
shape: "5.3"
module: src/ops_mason/kubernetes_plane.py
symbol: preflight, verify, apply
tooling: Kubernetes
operation: "kubectl get / auth can-i / apply (server dry-run, then apply) of an allowlisted, digest-pinned bundle"
write: true
capability: "Build small source-pinned security planes (namespaces, service accounts, network policies)"
intended_owner: null
blocked_on: >-
Kubernetes is not catalogued in §4, so no engine is named as its owner.
ops-mason reads the cluster as Tooling by character (§3.2) and declares
the contact rather than treating it as out of scope; raised with
gate-house as a catalog question.
review: "2026-12-21"
- id: bao-session-grant
shape: "5.2"
module: scripts/bao-session.sh
symbol: login, grant, revoke
tooling: OpenBao
operation: "Operator OIDC login; mint a scoped, bounded token under the operator's own session"
write: true
capability: "Hand an agent session a task-scoped ops-mason-build token instead of the operator's session"
supplied_authority: none
note: >-
Runs under the operator's own authority and narrows it; ops-mason holds
no standing credential of its own.
non_tooling_clients:
- module: ops-warden registry/routing/catalog.yaml (git contribution)
target: ops-warden
rationale: "A proposed catalog entry is a repository commit, not a runtime call."
- module: State Hub (session protocol)
target: state-hub
rationale: "Not catalogued in §4; coordination only, no security state."
---
# INTENT # INTENT
> **NetKingdom layering review — 2026-08-28.** This repository's role was reviewed > **NetKingdom layering review — 2026-08-28.** This repository's role was reviewed