maturity-engine/workplans/MAT-WP-0001-netkingdom-security-layer-engine.md
tegwick 4cde4e489a Stand up the Engine/PIP surface for MAT-WP-0001
Declare layer.yaml, add a Python engine over a local SQLite store,
and cover deterministic assessment, the §13 gap register, stance-map
inventory, claim guardrails, and the gate-house review path with tests.

Assistant: grok
Assistant-Session: 01a04ceb-150e-7e80-a542-ec8b1372e164
2026-08-29 12:54:37 +02:00

230 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: MAT-WP-0001
type: workplan
title: "Stand up maturity-engine on security-layer-model v0.7"
domain: infotech
repo: maturity-engine
status: finished
owner: grok
topic_slug: netkingdom-security-layer-alignment
created: "2026-08-29"
updated: "2026-08-29"
state_hub_workstream_id: "fdc711d0-bcb5-5e40-920c-d608f705f34f"
---
# MAT-WP-0001 - Stand up maturity-engine on security-layer-model v0.7
## Goal
Make this repository a conforming Engine/PIP under NetKingdom Security
Layer Model v0.7: declare the layer in a machine-readable form, stand up
the deterministic assessment surface, take the gap register and PEP
stance-map inventory off the statute, encode the scoring and guardrail
rules as tests, and give `gate-house` an engine to review through.
Source review: `history/260829-demand-netkingdom-security-layer-alignment.md`.
Statute: `net-kingdom/canon/standards/security-layer-model_v0.7.md`.
Companion: `net-kingdom/SECURITY-COMPANION.md` v0.2.
## Boundaries
- Do not render or cache an authorization decision. We are a PIP.
- Do not compile a maturity level into registry content.
- Do not let a consumer branch on a fetched level; the claim contract is
the only sanctioned path into `access-engine`.
- Do not author ladder criteria. ASM-0…ASM-6 stays `gate-house`'s.
- Do not author the gap-record schema; Taxonomy owns it (statute §17).
- Do not publish a PEP stance map from this repository.
- Do not absorb work structure (owners, estimates, due dates as task
fields) into the gap register.
- Do not treat observation-in-production or automatic containment as
available, and do not take those zeros as ours to close.
- Do not rank blocked-clean below conforming.
- `approval-engine` remains the opposite object: closed, binary, replay-proof.
- Persistence is this PIP's own store, not Lifecycle over `OpenBao` or
`key-cape`.
## T01 - Machine-readable layer declaration
```task
id: MAT-WP-0001-T01
status: done
priority: high
state_hub_task_id: "930d9cba-abf5-5982-8f7a-0f8afe518713"
```
Add `layer.yaml` in the kings-guard no-contact shape, adapted for Engine/PIP,
pointing at security-layer-model v0.7:
- `layer: engine`
- `role: pip`
- `tooling_contacts: []`
- `non_tooling_clients` lists the State Hub progress/work-record client
once it is used
- no `pep_stance` path
- `catalog_entry` transcribed from statute §4: graded progression, gap
register, capability readiness
`INTENT.md` frontmatter already declares `layer: Engine`, `role: PIP`.
Keep the file and the frontmatter equal. A conformance script is optional
in this task; the declaration file is the §11 surface.
**Done when:** `layer.yaml` is committed, agrees with `INTENT.md`, and a
reviewer can see there are no Tooling contacts and no PEP claim.
## T02 - Repository baseline
```task
id: MAT-WP-0001-T02
status: done
priority: high
state_hub_task_id: "a9b019c6-b518-59b1-913a-e47ed8fcc925"
```
There is no implementation to update. Choose and record:
- language, test harness, and local commands;
- module boundaries for models, evidence, computation, register, claims,
and emission;
- the persistence store for this PIP (our own, transactional enough for a
local outbox).
Add `AGENTS.md` (or equivalent) so later sessions can verify changes.
Do not pick catalogued Tooling as the store. List any uncatalogued client
in `layer.yaml` when it is introduced.
**Done when:** a contributor can run a documented test command against a
scaffold, and SCOPE's "no runtime" bullet is no longer the whole story.
## T03 - Deterministic assessment core
```task
id: MAT-WP-0001-T03
status: done
priority: high
state_hub_task_id: "2b35f065-47fb-5daf-a68d-cf86b8b3d8d7"
```
Implement the modeled concept:
- named, versioned ladders with ordered levels and criteria;
- evidence submission with validity windows;
- deterministic level computation, explainable by construction (criteria
met, evidence used, next level required);
- progression history;
- demotion when evidence expires.
Same criteria and same evidence MUST return the same level. A subject MUST
be able to lose a level. Criteria that cannot be evaluated by rule are
rejected, not interpreted.
**Done when:** tests demonstrate determinism, explainability, and expiry
demotion from recorded inputs, with no human in the compute path.
## T04 - Gap register
```task
id: MAT-WP-0001-T04
status: done
priority: high
state_hub_task_id: "18666e16-a882-571b-a6cc-dee4ddb938eb"
```
Take statute §13's snapshot into this engine:
- record fields: `capability`, `intended_owner`, `blocked_on`, `review`,
plus `state` and owner-status (statute §13 / §17);
- two marks: `pending` and `declared-gap`;
- owner-status: proposed ≠ assigned;
- four conformance states;
- scoring rule: blocked-clean MUST NOT rank below conforming, asserted by
a test.
Seed from the current §13 table. Do not turn register entries into work
items. Notify `gate-house` / `net-kingdom` so the statute table can become
a pointer.
**Done when:** the §13 rows are queryable here, the two surviving columns
are present, the scoring test fails if blocked-clean ranks below
conforming, and notice has been sent.
## T05 - Stance-map inventory and capability readiness
```task
id: MAT-WP-0001-T05
status: done
priority: medium
state_hub_task_id: "496b98a6-4e28-5d96-a758-1aa8dde7596d"
```
Take statute §13.1's inventory: every PEP-shaped consumer's published
unreachable-engine stance map, including currently unpublished ones
(`ops-mason`). Do not author maps.
Expose capability readiness as a query: pending (no route, no contact),
declared-gap (route through a §5.3 contact), or surface exists. This is
how `kings-guard`'s pending containment claim becomes a fact rather than
a footnote — containment itself stays the unowned actuation surface.
**Done when:** stance maps are listed here, unpublished PEPs are visible
as absences, and a readiness query returns pending / declared-gap /
surface-exists without implying ownership of actuation.
## T06 - Claim contract, guardrail, evidence emission
```task
id: MAT-WP-0001-T06
status: done
priority: high
state_hub_task_id: "1a606ac1-1b02-5b33-a8c3-79f6f45a841f"
```
Publish the PIP claim shape `access-engine` consumes for a maturity
level. Bind:
- levels arrive as request claims or versioned policy rules (statute §6.2 /
§9.5);
- a level MUST NOT be compiled into registry content;
- a consumer MUST NOT branch on a fetched level.
Emit assessment and register mutations to `audit-core`. Queue locally in
this engine's store. No synchronous `audit-core` dependency inside the
state-change transaction. Classify load-bearing vs attributive once a
claim is actually consumed; rare load-bearing classes need reconciliation
or a heartbeat, not a rate.
**Done when:** the claim contract is in-repo, guardrail tests reject a
registry compile and a consumer branch, and emission is queued locally
with the §9.6 bound stated next to the trail.
## T07 - First ladders, review path, SCOPE closeout
```task
id: MAT-WP-0001-T07
status: done
priority: medium
state_hub_task_id: "e476cc41-0a9d-59e5-b2e1-44f974997acd"
```
Register at least two ladders owned by different repositories. The first
is ASM-0…ASM-6; content remains `gate-house`'s. The second proves this is
a model rather than a preference.
Expose the surface `gate-house` uses for conformance review — compute and
remember, not judge.
After T01T06, refresh `SCOPE.md` Current State and Gap to Intent so they
describe evidenced artifacts rather than the 2026-08-29 seed deficit.
Keep Intent aspirational. Do not mark this workplan finished while T03
and T04 are open.
**Done when:** two ladders are registered, `gate-house` can review through
this engine rather than by reading files, SCOPE matches the files on
disk, and this workplan can move to `finished` without leaving silent
follow-on work that still belongs to the seed-to-engine gap.
## Sequencing
T01 can proceed immediately. T02 unblocks T03T06. T03 and T04 are the
load-bearing pair; T05 may proceed once the store from T02 exists. T06
needs T03. T07 is last.