Emit T03 replay fixtures from the published package
Two real DecisionEnvelopes in examples/secrets-engine/replay/ for secrets-engine to verify its digest join unchanged: a plain allow (rotate, empty context) and the dual-control allow (destroy with a valid approval-claim). Both are included deliberately. input_claim_digests.context appears only when the request carries a non-empty context, so a consumer asserting the field is always present would pass on destroy and fail on rotate. One fixture would have hidden that. request_digest, policy_package_digest, registry_snapshot_digest and the context claim digest are verified identical across two runs and are the fields to pin. id, decision_time and the lifetime bounds move with the clock; the README says so rather than leaving a consumer to discover it by flake. lifetime.ttl is 15m from the package allow_ttl. Emitted from flex-auth/local in standalone mode, not from a cluster pin. T03 is progress, not done -- it closes when secrets-engine confirms their validator accepts the records unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JTbVXpEiXA7mNJVpDnEPcB Assistant: claude-code Assistant-Model: opus Assistant-Process: 412054@bnt-lap001 Assistant-Session: 3968fae1-8d59-4209-9bd6-c22594b8ab19
This commit is contained in:
parent
68ad039a3f
commit
9e10d1cec1
4 changed files with 288 additions and 1 deletions
|
|
@ -126,7 +126,7 @@ all twelve actions could never reach it.
|
|||
|
||||
```task
|
||||
id: FLEX-WP-0021-T03
|
||||
status: todo
|
||||
status: progress
|
||||
priority: high
|
||||
state_hub_task_id: "8f7e5cdd-777e-5f54-9b92-c72b79f65672"
|
||||
```
|
||||
|
|
@ -143,6 +143,15 @@ Owner: `flex-auth` to emit; `secrets-engine` to verify.
|
|||
Gate: secrets-engine confirms its validator accepts the real record unchanged.
|
||||
A validator change on their side is their work-record, not closed from here.
|
||||
|
||||
**Emitted 2026-09-06**, awaiting their confirmation.
|
||||
`examples/secrets-engine/replay/` carries two real envelopes — a plain allow
|
||||
(`rotate`, empty context) and the dual-control allow (`destroy` with a valid
|
||||
approval-claim). All three digests plus `input_claim_digests.context` verified
|
||||
identical across two runs; `id`, `decision_time`, and the `lifetime` bounds move
|
||||
with the clock and are documented as unpinnable. Both fixtures are included
|
||||
because `input_claim_digests.context` appears only for a non-empty context, so a
|
||||
consumer asserting it is always present would pass on one and fail on the other.
|
||||
|
||||
## 4. Stand up the `flex-auth-secrets-engine` pin
|
||||
|
||||
```task
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue