docs(access-control-prover): own reviewed fact authority

This commit is contained in:
Marius Ciepluch
2026-11-01 14:58:22 +01:00
parent 24724e6da4
commit 8991f44ee3
9 changed files with 360 additions and 16 deletions
+20 -4
View File
@@ -70,6 +70,8 @@ remain readable but are never rewritten or used as a v2 trend baseline.
orchestration.
- Proof search, sandbox execution, oracle semantics, and demonstration qualification.
- Push scoping policy, alert rendering, capability rollout, and BLOCK enablement.
- Production vulnerability-family contracts, target-specific authority bundles, structural
matchers, and match-artifact persistence. Those belong to the downstream family spec.
### Allowed Dependencies
@@ -85,6 +87,9 @@ remain readable but are never rewritten or used as a v2 trend baseline.
- Authorization, DSPy, search-proof, benchmark, and push adapters may import the public core
contract.
- Development and admission populations are read-only identities at the core boundary.
- Downstream family adapters may inject typed contracts, packs, matches, policies, lineages,
custody ports, content resolvers, and persisted content references. Core validates and
applies those objects but never imports the target adapter or creates its authority.
- No core module imports `openultrasast.semantic`, `openultrasast.hunt`,
`openultrasast.search`, `openultrasast.tools`, `benchmarks`, or `dspy`.
@@ -293,10 +298,6 @@ not execute proof or family analysis.
for core types; remains the authorization-family trace domain.
- `src/openultrasast/hunt/prover.py` — sends authorization results through
`semantic/obligations/core_adapter.py`; it does not define neutral core types.
- `src/openultrasast/mapping/entry_packs.py` — consumes versioned typed packs and supplies
structural match evidence.
- `src/openultrasast/ruleset/entries/express.json` — migrates metadata and fact rows to the
v2 pack schema without changing target behavior.
- Existing `tests/test_core_*.py` files — authorization assumptions move to adapter or
legacy tests; neutral tests use the two reference contracts.
- `tests/test_core_contract.py` — replaces the assertion that no model path exists with the
@@ -1069,6 +1070,17 @@ record's evaluation population. Matching behavior influenced by the admission
population's labels therefore spends that population and cannot complete a relation in the
same admission run.
#### Downstream Fact-Adapter Seam
A downstream vulnerability-family adapter owns its production `FamilyContract`, reviewed
packs, structural matcher, and persistence of canonical `StructuralObservation` and
`FactMatchEvidence` bytes. It supplies those typed objects, their content references,
lineages, policies, custody port, and resolver to the core. Core only revalidates the pack,
match, provenance, and relation application; it neither imports target modules nor mints
missing trust or evidence. A legacy recognition projection may coexist during downstream
migration, but it is non-authoritative and cannot construct v2 evidence, readiness, or
admission by itself.
#### Evidence Validation Composition
| Field | Detail |
@@ -2545,6 +2557,10 @@ spec and consumes only status, counts, and digests.
pack plus valid structural match. Direct `apply_fact` use with an unreviewed pack, wrong
review policy, or protected-population matcher contamination is refused (`4.4`, `10.4`,
`11.1–11.5`, `13.3–13.4`).
- Downstream conformance fixture: inject a complete family-owned contract, reviewed pack,
persisted structural match, lineages, policies, custody and resolver; prove generic core
validation succeeds while name-only, partial, substituted, self-authored, contaminated,
or legacy-projection-only inputs are refused (`10.2`, `11.1–11.5`, `14.3`).
- `test_core_admission.py`: consume-only refusal order, readiness prerequisites, threshold
feasibility over label-blind census capacities and Wilson bounds, the historical
impossible-denominator regression, scoring derived from full case evidence, fixed
+28
View File
@@ -598,3 +598,31 @@ requirements approval.
refused before report production, and out-of-scope-only calls do not alter the arm's gate.
- **Boundary:** replay production remains part of task 8.9. Task 8.10 consumes and validates
the replay before fitted-component checks and refuses raw reports.
---
## Downstream fact-authority boundary correction (2026-11-01)
### Scope and finding
- **Trigger:** task 9.4 could not migrate the legacy Express pattern pack without either
inventing reviewer/custodian authority inside mapping or removing current recognition.
- **Instrument evidence:** the installed `express.json` was read at 963 bytes; the legacy
and v2 fact suites passed 80 tests, confirming this was not an unread-input or broken-core
diagnosis.
- **Finding:** the attempted core task decomposition put a production access-control
contract, target authority, matcher, and artifact writer into the neutral core. That
violated the engine/target split even though the generic validators were already sound.
### Decision: downstream ownership plus core conformance
- `access-control-prover` owns its production family contract, reviewed target packs,
externally authenticated authority bundle, matcher, and canonical observation/match
artifact writer. Its bootstrap trust remains external to the authenticated bundle.
- Detection-core owns only family-neutral validation and relation application. Its task 9.4
becomes a conformance gate over downstream-produced objects and cannot import target code.
- The legacy recognition projection remains downstream-owned, byte-stable, and explicitly
non-authoritative until cutover. Name-only recognition cannot produce complete v2 evidence.
- The downstream spec must first deliver authority, reviewed packs, persistence, and the
structural adapter. Core conformance then proves those objects satisfy the generic
contract before readiness, admission, or single-writer cutover can depend on them.
+1 -1
View File
@@ -1,7 +1,7 @@
{
"feature_name": "detection-core",
"created_at": "2026-10-30T13:55:30Z",
"updated_at": "2026-11-01T10:15:05Z",
"updated_at": "2026-11-01T13:57:54Z",
"language": "en",
"phase": "tasks-generated",
"approvals": {
+11 -8
View File
@@ -326,15 +326,15 @@
- _Requirements: 9.6, 14.2, 14.3_
- _Boundary: Proof Adapter_
- _Depends: 7.4_
- [ ] 9.4 (P) Migrate the existing entry-pack loader to the reviewed v2 schema
- Translate existing metadata and fact rows without adding framework vocabulary or changing target behavior.
- Supply complete structural match evidence and pack/fact/matcher provenance to the shared fact validator.
- Keep acquisition and review ownership outside core.
- Done when the migrated existing pack produces byte-stable behavior through v2 and partial/name-only matches remain incomplete.
- _Requirements: 10.2, 11.1, 11.2, 11.3, 11.4, 11.5, 14.3_
- _Boundary: Fact Pack Adapter_
- [ ] 9.4 Accept downstream reviewed fact-adapter conformance evidence
- Consume the immutable conformance fixture and manifest produced by the downstream family adapter without constructing its contract, packs, matches, authority, or target data in core.
- Re-run only the family-neutral fact-pack, fact-match, relation-application, full-evidence, canonical-reference, and import-boundary checks named by that handoff.
- Verify the manifest accounts for complete, name-only, partial, substituted, self-authored, protected-population-contaminated, and legacy-projection-only cases.
- Done when the downstream handoff is accepted by generic validators and core remains free of target imports; adapter implementation and target-specific fixtures remain downstream-owned.
- _Requirements: 10.2, 10.4, 11.1, 11.2, 11.3, 11.4, 11.5, 13.4, 14.3_
- _Boundary: Fact Pack Adapter Conformance_
- _Depends: 5.4_
- _Blocked: task decomposition is missing an externally owned production family contract, reviewed authority bundle, lineage/custody wiring, matcher identity, and approved legacy-to-v2 semantic mapping; self-authorizing defaults are prohibited_
- _Blocked: consume the handoff only after access-control-prover tasks 14.1–14.6 produce the downstream artifacts and immutable conformance manifest_
- [ ] 9.5 (P) Produce readiness and development records through benchmark-owned adapters
- Construct canonical readiness results while leaving sequencing and persistence with benchmark workflows.
- Emit development observations with v2 identities, evidence-use roles, instrument receipts, and prerequisite ancestry.
@@ -367,6 +367,8 @@
- Retain the read-only legacy decoder and refuse comparison between v1 and v2 baseline identities.
- Done when no production writer/import targets the v1 contract, historical fixtures remain unchanged, and all public writes use v2.
- _Requirements: 14.3, 15.3_
- _Depends: 9.4_
- _Blocked: access-control-prover task 14.7 must migrate the production caller and prove a zero-bypass census after task 9.4 accepts the handoff_
- [ ] 11. Validate readiness, failure visibility, and implementation boundaries
- [ ] 11.1 Run both reference families through the complete synthetic readiness path
@@ -395,6 +397,7 @@
- Prove each test instrument read nonzero fixture bytes before interpreting zero findings or failures.
- Done when the complete suite passes, boundary/import censuses are clean, historical bytes are unchanged, and all declared adapter and consumer seams pass conformance.
- _Requirements: 1.4, 10.4, 14.3, 15.3, 15.4_
- _Depends: 9.4_
## Implementation Notes