docs: reconcile delivered scope with intent

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a0291a-1e87-7151-9934-fcbfe3f65eb1
This commit is contained in:
tegwick 2026-08-23 10:42:12 +02:00
parent d6e74a55f6
commit 5ce5117506
2 changed files with 189 additions and 130 deletions

View file

@ -0,0 +1,107 @@
# Scope assessment against `INTENT.md` — 2026-08-23
## Assessment
There is no open repository work. `ZONE-WP-0001` is the only workplan; it is
`finished`, all seven tasks are `done`, and its delivery assessment is
`DoD-Ok`. `GOAL.md` marks the project `complete`, and the checked-in work-record
index contains no ready or in-progress item.
The intended outcome was achieved, but the runtime hypothesis was falsified in
the useful direction anticipated by `INTENT.md` §7. The repository proved that
reviewed declarations plus enforcement-time expiry at the owning control are
sufficient. The thing delivered here is therefore a standard source, a partial
reference resolver, tests, and evidence—not a running zone engine.
## Intent-to-outcome map
| Intent claim or test | Assessment | Evidence / boundary |
| --- | --- | --- |
| A control can vary by workload zone rather than one repo-wide switch (§§12) | Met | The five-zone model and total owner-qualified profiles were adopted; ops-warden retired `policy.enabled` and global `policy.fail_closed`. |
| The workload is the policy subject and qualifies against a floor (§3) | Met | Direct `workload_identity` plus `zones:` declarations are validated; missing facts resolve `unknown` without inference. |
| Identity, admission, stance, failure mode, and expiring exceptions all have owners (§4) | Met by a distributed contract | zone-engine owns the identity/membership model; control owners own stance; PEP owners own failure behavior; exception expiry runs where the effect occurs. No central runtime is required. |
| flex-auth remains the only PDP for its decisions (§5) | Met | zone-engine performs no live lookup or authorization decision. flex-auth owns its versioned policy package. |
| Consumers can understand posture without reading this repo (§6) | Met for the adopted path | The standard is in net-kingdom canon, declarations are in owning repos, and decision/verdict evidence belongs to control owners. |
| Exception lifecycle needs no runtime (§7 falsifier) | Falsifier triggered | `docs/exception-lifecycle-2026-08-22.md` records decision-time expiry and explicitly rejects a central service. Under the Intent, this makes the repo an archive candidate. |
| Zones partition the real estate (§7 falsifier) | Met at model level | The estate study classifies applicable workloads and explicitly represents `unknown` and `not-applicable`; it does not manufacture zones for unresolved inventory. |
| Two owners declare and a third reads (§7 falsifier) | Met | ops-warden and flex-auth declare; zone-engine's reference resolver reads both. |
| No second decision point appears (§7 falsifier) | Met, with a reference-tool caveat | The local resolver projects an accepted profile for evidence, but cannot render an authorization effect and is not authoritative policy. |
| Canon-first direction and conditional runtime (§9) | Met | Canon was published and adoption proven; T04 selected the cheaper no-runtime result. |
## Gaps and residual boundaries
These are gaps between the broad language of `INTENT.md`, the full canonical
contract, and what this repository itself can execute. They are not open tasks
in the completed workplan.
### 1. Repository name and lifecycle no longer match the delivered shape
The name `zone-engine` suggests a running service. No engine was needed or
shipped. `INTENT.md` §7 says this exact outcome should lead to archival rather
than preserving a repository for its own sake. The remaining governance choice
is to archive it or deliberately retain it as a clearly named reference and
evidence repository. That choice belongs outside the completed implementation
workplan.
### 2. `INTENT.md` is now historical argument, not present-state description
Phrases such as “NetKingdom cannot say that today,” “the gate ... was
deliberately not switched on,” and “a relaxation with an expiry is state”
describe the initiating problem and hypothesis. Adoption has since made the
sentence sayable, retired the global switch, and shown that state can live in
versioned owner policy with expiry evaluated at the enforcement point.
`SCOPE.md`, not those present-tense passages, must be used for current
capability.
### 3. The checked-in resolver implements only part of the resolved-view contract
The reference resolver validates direct declaration files and emits an
admission result. It does not:
- resolve Repo Manager's managed-workload tuple or emit applicability and
`workload_ref` results;
- discover declarations or join a fleet catalog;
- include source revision in `membership_revision` (the digest covers the
workload identity and `zones:` content);
- report membership changes against a preceding snapshot;
- emit the full authority/provenance fields illustrated by the standard, such
as identity binding, policy owner, PEP owner, and policy reference; or
- represent active exception ids and expiry in its output.
Consequently it is sufficient for the recorded direct-declaration adoption
proof, but must not be presented as the complete compiler described by the
canonical standard.
### 4. The local standard is a source snapshot, not canon
`docs/security-zones_v0.1.md` remains marked `status: draft` even though the
standard has been published and subsequently updated in `net-kingdom`. The
published copy is authoritative. Maintaining two independently editable copies
creates drift risk; an archived repository avoids that risk, while a retained
reference repository needs an explicit canon-sync policy.
### 5. The reference control profile could be mistaken for local stance authority
`tools/resolve_zones.py` embeds the initial flex-auth and ops-warden control
rows and emits them without policy-package provenance. This was adequate to
prove the v0.1 adoption profile, but the owning policy packages and PEP
configuration remain authoritative. Any future profile change must happen at
those owners and in canon; changing this table alone must never change a live
effect.
### 6. Estate-wide completeness remains consumer migration work
The model can represent resolved workloads, `unknown`, and `not-applicable`,
but this repository does not make every catalog entry resolvable. Pre-rapp
deployables and missing owner references remain migration debt in the owning
catalogs and workloads. That does not require a zone-engine runtime and is not
unclosed work in this repository.
## Recommendation
Treat `zone-engine` as complete and make no new runtime workplan. Prefer
archival once its history/evidence value is accepted elsewhere. If it is kept,
retain it explicitly as a reference-conformance repository, make net-kingdom
canon the only consumer-facing authority, and open future work only for a
concrete canon revision or a demonstrated adopting-control need that cannot be
met at its existing enforcement point.