Record zone-engine compilation invariant; drop uncommitted policy leftovers
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

flex-auth stays the only PDP. Zone membership reaches /v1/check as compiled
registry data, never a synchronous lookup. Uncommitted tenant-engine
read/role/grouping policy was discarded, not mixed into this pin.
This commit is contained in:
tegwick 2026-08-19 21:36:22 +02:00
parent 8605695397
commit ee6d66c005
2 changed files with 30 additions and 5 deletions

View file

@ -278,3 +278,27 @@ volunteer.
Nothing in this review changes a running system, and T02 will not be applied
to production without the usual staged-promotion path.
---
## 7. Zone membership reaches flex-auth by compilation only
Recorded 2026-08-19 in reply to ops-warden (`fd4b2012`) after zone-engine was
seeded. Hold both sides to this:
- flex-auth remains the only policy decision point.
- zone-engine is authority over zone identity, membership, and exception
lifecycle. It is never a second PDP and never a synchronous lookup on
`POST /v1/check`.
- Membership (and any zone fact a decision may read) is compiled into the
registry snapshot the same way ops-warden's production actor inventory is
(`build_flex_auth_registry.py`). `service_class: latency-critical`.
- Per-zone enforcement stance for controls flex-auth does not evaluate
(agent read-boundary on `risk: high` lanes, warden desk escalation) does
not belong in the policy package. Putting it there would split
authorization again. Facts we *do* evaluate at check time can be compiled
data that existing Rego reads.
`flex-auth-ops-warden` stays `callerAuth.mode: enforce`. Recreating that
Service would break the ops-bridge ClusterIP pin `10.43.1.165`; warn
ops-warden first.

View file

@ -39,11 +39,12 @@ tenancy:
decision point judges asserted claims, it cannot be the verifier of its
own inputs. Not a defect and not a target for movement.
A: >-
Both production pins are live A2 as of 2026-08-19 on digest
sha256:138aa347… with callerAuth.mode=enforce. Unbound requests
return 401; a token bound to the other protected system returns 403.
user-engine probe from user-engine-8569d7cb87-fp7px;
tenant-engine probe from tenant-engine-6c6dcbddbb-4v26w.
All three production pins are live A2 as of 2026-08-19 on digest
sha256:138aa347… with callerAuth.mode=enforce (user-engine,
tenant-engine, isolated ops-warden). Unbound requests return 401; a
token bound to the other protected system returns 403. Zone
membership, if any, reaches this PDP only as compiled registry
data — never a synchronous zone-engine lookup.
E: >-
No tenant data at rest. Tenant scoping in decisions runs through one
choke point (internal/decision/engine.go normalizeRequest and the