net-kingdom/security-case-types/_template
tegwick fa2cb57384
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
NK-WP-0048-T04: SecurityCaseType oidc-browser-relying-party 1.0 (proposed)
Composes key-cape.oidc-client-registration; confidential/public conditions,
one justified attended step, threat model, fit table of hand-built clients,
Forgejo and public-portal examples. Validator gains when/required_when and
provider discovery. 43 tests pass. Adds T08 (identity-provisioner groups ensure).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5457@bnt-lap001
Assistant-Session: 792bf84a-3783-4f5d-a811-cded61dd2012
2026-10-08 22:45:31 +02:00
..
examples NK-WP-0048: canon accepted; SecurityCaseType schemas, validator and template (T01, T03) 2026-10-08 22:29:13 +02:00
tests NK-WP-0048-T04: SecurityCaseType oidc-browser-relying-party 1.0 (proposed) 2026-10-08 22:45:31 +02:00
README.md NK-WP-0048: canon accepted; SecurityCaseType schemas, validator and template (T01, T03) 2026-10-08 22:29:13 +02:00
type.yaml NK-WP-0048: canon accepted; SecurityCaseType schemas, validator and template (T01, T03) 2026-10-08 22:29:13 +02:00

SecurityCaseType template

Copy _template/ to security-case-types/<type-id>/ and rewrite every section. Canon: canon/standards/security-case-types_v0.1.md. A type is acknowledged through informed-decision only when this README, type.yaml, the example cases and the tests are complete and green.

Purpose

Which recurring use case the type serves, and the hand-built instances it replaces or adopts (reference instances). For the template: a loopback bootstrap identity for one operator, composed from net-kingdom.local-identity.

Threat model

What the type protects, from whom, and how. Name the assets (credentials, sessions, signing keys), the actors (anonymous, low-assurance operator, tenant, compromised workload) and what each step does to prevent misuse. For the template: the store is loopback-only and private to its owner; the signing key is referenced from custody, never written into a case.

Alternatives considered

The other shapes this pattern could have taken and why they were not chosen. This is the part an informed-decision is mostly about.

Attended steps

Every step marked attended: true, why it cannot run unattended, and how ops-warden groups such steps into as few attended sessions as possible.

Known limits

What the type does not cover, and when a request should become a new type or a new major version instead of a case.

Verification and rollback

How the checks in type.yaml prove a case is live without reading any value, and how rollback restores the state from before the case.