flex-auth/docs
tegwick 9f3e7e363a
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Container Image / build-and-push (push) Successful in 53s
Add schemaguard; correct check_request subject.type against shipped reality
approval-engine suggested a conformance check after the examples-contradict-
prose class hit a third repository -- theirs. Fifteen lines, they said, and
it would have caught our caring fixture and our provenance omission. Worth
stealing, so we stole it.

internal/schemaguard validates published examples against published schemas.
It implements only the JSON Schema subset these schemas use, and the property
that makes it trustworthy is that an unrecognised keyword FAILS rather than
skips: a validator that silently approves what it does not understand invites
reliance it cannot support. It found three things on first run.

ONE, AND THE LARGEST: check_request.schema.json pointed subject.type at
CARING's subject_type enum (Human, Service, ...), and no consumer sends that
vocabulary. user-engine sends human, tenant-engine and secrets-engine send
service, and ops-warden sends adm/agt/atm -- an actor-type vocabulary CARING
does not model at all. Our published schema declared three live integrations
non-conformant. A rule that outlaws shipped correct behaviour is the rule
that is wrong, so the $ref is replaced with an opaque non-empty string and a
description saying why. CARING's enum remains correct where it belongs: the
registry's subject_manifest.yaml, where Service is right.

TWO: policy_package_note, which this session added to the caring example's
decision provenance, is undeclared under additionalProperties:false. Our own
annotation broke the conformance it was annotating. Moved to the envelope's
outer provenance.

THREE: the secrets-engine fixtures carried partial approval-claims, missing
binding, freshness and validity. A partial claim in a fixture is how a
consumer learns the wrong shape -- the same mechanism that produced the
destroy defect. They are now complete and valid against approval-engine's
schema, including the now-required binding.pdp_digest, and a test validates
them against that schema when the sibling repo is present.

The destroy replay fixture is regenerated accordingly and the replay README's
pinned digests updated, since a stale digest table is the same defect wearing
a different hat.

Closed the binding-mapping open item. approval-engine declined to publish a
vocabulary mapping and their reasoning is better than the request: a PIP
asserting secrets.kv.destroy MEANS destroy would author semantics over two
vocabularies it owns neither of, and a wrong mapping silently accepts a claim
approved for a different action. pdp_digest is the mapping precisely because
it does not translate. It is now always present and nullable, so the destroy
gate is pdp_digest non-null and equal, enforced at the PEP.

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
2026-09-06 14:21:28 +02:00
..
adr Finish FLEX-WP-0015: both pins enforce, live A2 probes, AuthZEN deferred 2026-08-19 14:35:27 +02:00
evidence feat(policy): adopt security zone stances 2026-08-22 15:17:13 +02:00
action-bound-authorization-contract.md Accept ActionAuthorization deferral; fix the state-hub authority constant 2026-09-06 01:30:04 +02:00
canonical-request-digest.md Finish FLEX-WP-0019 layer-model v0.7 conformance 2026-09-03 23:48:45 +02:00
caring-architecture-blueprint.md Refine workplans for CARING profile 2026-05-17 04:15:38 +02:00
decision-input-freshness.md Answer ops-warden and secrets-engine; open FLEX-WP-0021 2026-09-06 01:12:50 +02:00
decision-record-contract.md Finish FLEX-WP-0019 layer-model v0.7 conformance 2026-09-03 23:48:45 +02:00
delegated-mode-operations.md Document delegated mode operations 2026-05-17 07:27:45 +02:00
directory-group-resolver-adapters.md Add directory group resolver adapters 2026-05-17 07:24:50 +02:00
flex-auth-authorization-registry-research.md Established INTENT.md 2026-05-04 17:52:29 +02:00
iam-profile-consumption.md Align IAM Profile consumption with v0.2 2026-05-22 14:35:30 +02:00
keycloak-authz-adapter-path.md Add Keycloak authorization adapter path 2026-05-17 07:18:45 +02:00
markitect-action-vocabulary.md Define Markitect action vocabulary 2026-05-17 06:26:13 +02:00
markitect-integration-flow.md Document Markitect integration flow 2026-05-17 06:41:07 +02:00
markitect-resource-namespace.md Define Markitect resource namespace 2026-05-17 06:14:04 +02:00
ops-warden-policy-gate-handoff.md Close ops-warden policy gate deployment 2026-06-30 00:52:56 +02:00
ops-warden-registry-sync.md FLEX-WP-0007: production registry fixture, tests, and sync runbook 2026-06-24 14:52:35 +02:00
pre-implementation-assessment.md Land foundations: assessment, ADR-001/002/003, FLEX-WP-0005, Go skeleton 2026-05-16 01:54:44 +02:00
ProductRequirementsDocument.md feat(authz): bind decisions to exact actions 2026-08-23 13:18:26 +02:00
railiance-platform-action-vocabulary.md feat(policy): add credential grant authorization package 2026-08-23 13:59:03 +02:00
relationship-pdp-adapter-boundary.md Add relationship PDP adapter boundary 2026-05-17 07:06:14 +02:00
rule-pdp-adapter-boundary.md Add rule PDP adapter boundary 2026-05-17 07:13:27 +02:00
secrets-engine-action-vocabulary.md Add schemaguard; correct check_request subject.type against shipped reality 2026-09-06 14:21:28 +02:00
stance-register-review.md Review the stance register's second row; record why T04 cannot proceed 2026-09-06 09:31:40 +02:00
tenancy-posture-review.md Record zone-engine compilation invariant; drop uncommitted policy leftovers 2026-08-19 21:36:22 +02:00
tenant-engine-action-vocabulary.md Authorize tenant-engine guardrail read and set actions 2026-08-16 02:46:25 +02:00
tenant-engine-resource-namespace.md Authorize tenant-engine guardrail read and set actions 2026-08-16 02:46:25 +02:00
topaz-adapter-operations.md Implement Topaz adapter 2026-05-17 06:58:04 +02:00
topaz-mapping-spike.md Topaz alignment spike — mapping doc + green e2e example 2026-05-16 09:04:42 +02:00
workplan-planning-map.md Enforce caller-auth on flex-auth-ops-warden (FLEX-WP-0016-T03) 2026-08-19 20:10:31 +02:00