feat: finish ZONE-WP-0003 Engine/PIP freeze and claim mapping
Declare the layer in layer.yaml, check it against INTENT.md, and fail make check on a new Tooling client or HTTP decision surface. Record the six statute §10 artifacts for the 2026-08-23 cut, name access-engine on the README, and offer a non-schema PIP field mapping to Taxonomy. Assistant: grok Assistant-Session: 01a04ceb-0745-7ae1-9e26-0d10e5d52b8b
This commit is contained in:
parent
e9d0fecede
commit
acfd93fc86
11 changed files with 682 additions and 35 deletions
72
docs/pip-claim-boundary.md
Normal file
72
docs/pip-claim-boundary.md
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
# PIP claim boundary — zone identity and membership
|
||||
|
||||
This note maps the facts this Engine/PIP already emits onto the facts a
|
||||
future request-claim must carry. It is **not** a schema, not a wire format,
|
||||
and not estate canon.
|
||||
|
||||
Statute §17 assigns the request-claim schema to Taxonomy and records that
|
||||
ownership as proposed, not assigned. Statute §18 says zone stance enters a
|
||||
decision as a **claim on the request or a rule in a versioned
|
||||
`access-engine` policy package**, never as compiled registry content.
|
||||
Inventing a competing dialect here is the drift §17 exists to prevent.
|
||||
|
||||
Offered to `gate-house` / `net-kingdom` (Taxonomy publication) and to
|
||||
`access-engine` (currently `flex-auth`, the consumer of the claim). Assent
|
||||
is not required to keep the 2026-08-23 freeze.
|
||||
|
||||
## Facts this PIP owns today
|
||||
|
||||
Emitted by `tools/resolve_zones.py` as a reference membership/admission
|
||||
record, given already-located declarations and already-resolved Repo
|
||||
Manager projections:
|
||||
|
||||
| Field | Meaning |
|
||||
| --- | --- |
|
||||
| `identity_bindings` | Authoritative workload identity bindings |
|
||||
| `workload_ref` | Explicit workload reference (`rapp_id`, name, deployable, applicability) |
|
||||
| `declared_zone` | Responsible party's declared membership |
|
||||
| `effective_zone` | Admitted zone, or `unknown` / none |
|
||||
| `admission` | `satisfied`, `unsatisfied`, `unknown`, or `not-applicable` |
|
||||
| `admission_reason` | Why that result, without inference |
|
||||
| `membership_revision` | Digest bound to identity, membership, workload ref, and source revision |
|
||||
| `source` | Declaration path or projection source |
|
||||
| `source_revision` | Caller-supplied source revision; absence yields no source-bound digest |
|
||||
| `guarantees` | What the record actually promises (non-inference, source binding, …) |
|
||||
|
||||
Optional control-profile projection (`policy_owner`, `pep_owner`,
|
||||
`policy_ref`, stance, failure mode) is **not** a PIP fact. It is owner data
|
||||
copied through for evidence, and only the referenced owner policy or PEP
|
||||
configuration may change a live effect.
|
||||
|
||||
Input `zones.reviewed` / `zones.review_due` are validated and are not
|
||||
currently copied onto the output record. Freshness the resolver *does*
|
||||
bind is `source_revision` via `membership_revision`.
|
||||
|
||||
## Mapping onto a future request-claim
|
||||
|
||||
Until Taxonomy publishes the schema, this is the contribution, not a type:
|
||||
|
||||
| Claim slot (statute §17) | This PIP's field | Must not carry |
|
||||
| --- | --- | --- |
|
||||
| Issuer | this repository, plus `source` / `source_revision` | a second PDP identity |
|
||||
| Subject | `identity_bindings` and `workload_ref` | path, repo, reef, actor, or lane as a substitute subject |
|
||||
| Zone membership | `declared_zone`, `effective_zone`, `admission`, `admission_reason` | stance, failure mode, allow/deny |
|
||||
| Freshness | `source_revision` and `membership_revision` | an implicit "current" with no revision |
|
||||
| Effect of the zone | — | **not a PIP field**; `access-engine` policy package or a versioned rule (statute §18) |
|
||||
|
||||
A decision that turned on a zone must name the policy-package version that
|
||||
read it. Membership may be compiled into the registry `access-engine`
|
||||
already loads only as a **fact**. Compiled data that determines an outcome
|
||||
is still deciding (statute §6.1).
|
||||
|
||||
## Forbidden
|
||||
|
||||
- Shipping a zone-engine claim JSON Schema, protobuf, or `/claims` endpoint.
|
||||
- Encoding stance or failure mode as if they were membership.
|
||||
- Compiling these facts into registry content that changes allow/deny
|
||||
without a policy-package revision.
|
||||
- Treating a missing claim as permission. `unknown` and `not-applicable`
|
||||
stay distinct; absence is not `z0`.
|
||||
|
||||
The freeze in `history/2026-08-29-layer-change-artifacts.md` holds while
|
||||
this mapping waits on Taxonomy.
|
||||
Loading…
Add table
Add a link
Reference in a new issue