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:
parent
1189d12dc3
commit
0ff263a0b2
1 changed files with 122 additions and 0 deletions
122
INTENT.md
122
INTENT.md
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue