Implement SECRETS-WP-0008 unblocked layer-model obligations
Load pep-stance.yaml as the live unreachable-engine gate and record named stance fields on privileged evidence. Classify evidence, queue load-bearing records in a local outbox, and add heartbeat/drain commands that never sit on a mutation path. Publish proposed SSH-CA and secret-use evidence contracts without adding an OpenBao SSH-CA write. T02 (access-engine decision records) and T06 (no standing credential) stay wait on external endpoints. Assistant: grok Assistant-Session: 01a04cea-cb33-7c63-bad7-c1b0f9f0076b
This commit is contained in:
parent
57f6c4fa65
commit
3cd9955ac9
16 changed files with 1041 additions and 77 deletions
62
evidence-classification.yaml
Normal file
62
evidence-classification.yaml
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
# secrets-engine — load-bearing vs attributive evidence (§9.6)
|
||||
#
|
||||
# Machine-readable classification next to the layer declaration.
|
||||
# Completeness is not claimed. No control may branch on presence or
|
||||
# absence of a local evidence record.
|
||||
|
||||
schema_version: "0.1"
|
||||
framework: netkingdom-security-layer-model
|
||||
standard_version: "0.7"
|
||||
repository: secrets-engine
|
||||
bound: "§9.6"
|
||||
completeness_claimed: false
|
||||
no_control_branches_on_presence: true
|
||||
intended_destination: audit-core
|
||||
destination_today: "local JSONL; load-bearing also queued in evidence_dir/outbox/"
|
||||
sound_claim: >-
|
||||
The archive proves the records it holds were not altered or truncated
|
||||
after arrival. It does not prove a record was sent, and absence is not
|
||||
evidence of non-occurrence.
|
||||
|
||||
cadence:
|
||||
load_bearing_form: heartbeat
|
||||
interval: 1d
|
||||
action: evidence-heartbeat
|
||||
claim: nothing-to-report
|
||||
command: "secrets-engine evidence heartbeat"
|
||||
|
||||
# First match wins.
|
||||
rules:
|
||||
- id: heartbeat
|
||||
kind: heartbeat
|
||||
actions: [evidence-heartbeat]
|
||||
stages: [build, test, prod, unknown]
|
||||
emission: local-outbox
|
||||
note: >-
|
||||
Positive claim that can itself go missing. Queue depth is metadata,
|
||||
not a permission.
|
||||
|
||||
- id: destroy
|
||||
kind: load-bearing
|
||||
actions: [lifecycle-destroy]
|
||||
stages: [build, test, prod, unknown]
|
||||
emission: local-outbox
|
||||
note: Live destroy is currently disabled; refusals are still classified here.
|
||||
|
||||
- id: production-control-mutation
|
||||
kind: load-bearing
|
||||
actions: [revoke, lifecycle-suspend, lifecycle-deactivate, provision]
|
||||
stages: [prod]
|
||||
emission: local-outbox
|
||||
note: >-
|
||||
Production provision, revoke, and suspend/deactivate once enabled.
|
||||
Production live remains fail-closed until an access-engine decision
|
||||
record is served.
|
||||
|
||||
- id: default-attributive
|
||||
kind: attributive
|
||||
actions: ["*"]
|
||||
stages: [build, test, prod, unknown]
|
||||
emission: local-jsonl
|
||||
trade: >-
|
||||
State Hub progress posts are non-blocking. Completeness is not claimed.
|
||||
Loading…
Add table
Add a link
Reference in a new issue