Elnor Repo Reader

DOC82_Knowledge_Source_Evidence_Charter_Draft.md

Memory Rebuild Docs/Stage_6_Charters/E3_E4_DOC82_Knowledge_Source_Evidence/DOC82_Knowledge_Source_Evidence_Charter_Draft.md

Short text page 295db4e1bb3f. Generated 2026-06-18T18:34:37.209Z from commit 98f25a3624ebcec0f7eade9eeadb12916dede4c6. Worktree: clean.

Open readable HTML page · Open raw txt · Open path URL

ELNOR REPO READER TEXT MIRROR
Original path: Memory Rebuild Docs/Stage_6_Charters/E3_E4_DOC82_Knowledge_Source_Evidence/DOC82_Knowledge_Source_Evidence_Charter_Draft.md
Source repo: /Users/OpenClaw1/Elnor/Elnor Specs
Git branch: main
Git commit: 98f25a3624ebcec0f7eade9eeadb12916dede4c6
Generated: 2026-06-18T18:34:37.209Z

---

# DOC82 — Canonical Knowledge + Source/Evidence (Stage 6 E3/E4 Charter Draft R1)

**Repository:** github.com/wbrody/Elnor-Specs — branch `main`
**Document status:** `charter-draft (Stage 6 E3/E4, R1 — not reviewed, not ratified)`. Becomes the operative DOC82 member spec after architect review + red-team rounds + ratification.
**Versioning discipline:** git-native — stable filename `DOC82_Knowledge_Source_Evidence_Charter_Draft.md`, no version suffix. Git history is the version record (Skeletal Baseline B5).
**Family member:** DOC82 (member **3 of 8** — the Canonical Knowledge + Source/Evidence plane; the **truth plane**). Family = Memory Control Plane (ADQ-210/220).
**Drafted as:** the **E3 + E4 lockstep** (plan §12.3). E3 = Knowledge (Assertion family + lifecycle + warrant ladder + bitemporal axes); E4 = Source/Evidence (SourceEnvelope, EvidenceRecord/EvidenceSupportEdge, corpus-hierarchy interface, parse-quality bounds). Drafted together because `EvidenceSupportEdge` depends on the source-span / `SourceEnvelope` contracts.
**Governing inputs:** `E3_E4_Drafting_Commission_Claude_Code.md`; `Charter_Opening_Brief.md` (20 draft targets); `Charter_Input_Deck.md`; **`Pre_Charter_Analysis_ADQ202_ADQ219.md` (the resolved pre-conditions + the four architect locks — this draft is FROM those resolutions; it does not re-open them)**; ratified E0 (`DOC80_Core_Charter_Draft.md`) + ratified DOC81 (`DOC81_Scope_Policy_Charter_Draft.md` R3.1); `DOC80_Owner_Map.md`; `DOC80_Skeletal_Target_Baseline.md`; `DOC80_Import_Graph.md`; ABC R0.2 (`12_ABC_Consolidated_Structural_Patch_R0_2.md`); DOC73 Artifact 1 R0.5 §8.2 / Artifact 3 R0.3 §9.2; DOC25 V2.0; `OPA_V4.md` §6 (+ archived `OPA_V3_18.md` canonical bodies); `Architect_Decision_Queue.md`.

---

## §0. How to read this draft

DOC82 is the **truth plane**: it owns the Assertion family (the only truth-apt objects in the system — E0 §6.3), the full assertion lifecycle/state machine, the warrant ladder, the evidence + source envelopes, and the bitemporal axes. Every other plane consumes it: DOC83 generates candidates *into* it, DOC84 caps delivery *on* it, DOC85 learns *from* it, DOC87 organizes *over* it; **EC executes its writes** (Owner Map §1–§2; Import Graph §2). DOC82 defines contracts; EC executes durable writes, warrant evaluation, and resolution/merge execution. Nothing in this plane writes durably by itself.

### §0.1 Citation convention (Commission §0)

Every contract / field / enum / lint / fixture traces to one of: ABC R0.2 (`ABC §N.M` — **senior for SEMANTICS**, DR-001), an Owner Map row (`Owner Map line N` — **canonical for PLACEMENT**, D-SEED-2), a Skeletal section (`Skeletal §10.x/§11.x/§DOC82`), an ADQ (`ADQ-NNN`), an OPA obligation (`OBL-…`, body per archived `OPA_V3_18.md` where V4 §6 carries the retarget row only), an E0 section (`E0 §N.M`), a DOC81 section (`DOC81 §N.M`), the Pre-Charter Analysis (`PCA Finding 1/2`, `PCA Lock A/B/C/D`), or a Supersession Matrix row (`SM-NNN`). Untraceable claims are flagged `OPEN_FOR_ARCHITECT_REVIEW` in §13 (≤5). Coined lint/fixture tokens are tagged `[proposed]` (Stage 9 confirms); verbatim-source tokens are `[canonical]` (E0 §16.3 convention).

### §0.2 The ABC §2.1 placement-override note (load-bearing)

**ABC R0.2 is senior for SEMANTICS** (identity / relation / warrant / disposition / merge / dedupe behavior — DR-001). **ABC §2.1's PLACEMENT is overridden by D-SEED-2:** ABC §2.1 assigns Assertion/AssertionVariant schema to DOC72 and EvidenceRecord/EvidenceSupportEdge to the DOC73/DAMS seam; the DOC80 family **re-homes those schemas to DOC82** (Skeletal §3.3; Owner Map lines 26–37, 57–58). This draft treats ABC §2.1 as authoritative for *semantics only*; `DOC80_Owner_Map.md` is the canonical placement source. Two placement-driven shape deviations from ABC §3.2 are recorded at §2.1: `memberships` moves out (DOC87 owns the membership edge, ADQ-220) and embedded arrays normalize to branded refs (E0 §8.5 / N12). The retired Concept Model §17.3 11-value disposition enum is **not reintroduced** (G-2).

### §0.3 Bind-by-reference list (consumed, NEVER redefined)

**E0-owned (ratified 2026-06-01) — referenced by section number:** `ReasonCodeRegistry`/`ReasonCodeId` (E0 §2.1; **source-revocation reason codes route to DOC82's namespace per UR-37**); `DomainProfileRegistry`/`DomainProfileId` + conservative fallback (E0 §2.2 — its `warrant_policy_ref` points at DOC82's §3.7 `DomainProfileWarrantPolicy`); the warrant-degradation-trigger registry (E0 §2.4 — DOC82 consumes triggers into the §3 ladder; the §3.6 `authority_class` carveout key is DOC82-declared per E0 §2.4/UR-22); `MemoryFlowCertificate` union incl. `DurableWriteMFC` (E0 §3.3); `MemoryCoordinationTrace` (E0 §3.4); `SemanticProjectionContract` + axis registration (E0 §3.6 — DOC82 registers the `knowledge` axis, §9.2); `ContextPacketProof`/`RenderSafetyProof` (E0 §4.1/§4.2); `MemoryMutationEnvelope` (E0 §5.1, NAMED — every DOC82 durable mutation is one envelope event); `MemoryProvenanceGraph` (E0 §5.2, NAMED); the memory-object taxonomy (E0 §6 — DOC82 confirms/extends its rows, §12.5); `ExternalDependencyRecord` posture (E0 §7 — DOC72/DOC73/DOC25 rows per E0 §7.4); `ECSeamContract` (E0 §7.1 / OPA-031 — serialized writes, `dedupe_basis_generation_id` CAS, policy-generation re-gate); embedding-provenance fields (E0 §8.1, F28 comparability, UR-41 un-merge-through-review); the bitemporal carrier rule (E0 §8.2 — **DOC82 owns the axes**; the envelope carries them; UR-18 linkable-not-collapsed); the policy-generation carrier (E0 §8.3); global naming/brand conventions (E0 §8.5); `SourceRevocationCascade` invariant shape (E0 §12.1 — DOC82 drafts its per-plane execution at §8); the E0 §12.1 invariant set; the E0 §13.1 ABC-§21 dispositions (4 warrant objects assigned to DOC82 — drafted at §3).

**DOC81-owned (ratified 2026-06-08) — referenced by section number:** the `Brand<T,B>` pattern + foreign-vocabulary `ExternalVocabularyValueRef` (DOC81 §0); `ScopeResolutionResult` (+ `minimum_conservatism_floor`, `PrincipalScope`) (DOC81 §2.4 — **write gating reads the floor**); `EffectiveMemoryPolicy` meet + the five axes incl. **`mutation_authority`** (`none ⊏ candidate_only ⊏ durable_requires_review ⊏ durable_allowed`) (DOC81 §3.0–§3.2 — **write gating reads the mutation_authority ceiling**); `PolicyStamp` (`scope_items`) + `PolicyStampRestamp` (DOC81 §3.4); `EpisodePolicyEpoch` + `policy_generation_id` boundary (DOC81 §3.6); `disclosure_class` + `SafeLabelDisclosurePolicy` (DOC81 §4.2); `ExtractionRoutePolicyEnvelope` (DOC81 §4.3); `PolicyCappedDAMSInput` (DOC81 §4.4); the `CascadingSourceInvalidation` **envelope** + `CascadingSourceInvalidationRun` + `LastActiveSupportEdgeEvaluation` (DOC81 §5.1–§5.2 — **DOC82 owns only the source-side payload**, §8); source-revocation monotonicity + the polarity boundary note (DOC81 §5.3); `LegalHoldState` (DOC81 §6.1); policy monotonicity (DOC81 §6.3); the policy-generation re-gate boundary (DOC81 §6.4); the **`AssertionRelationEdge` traversal-scope-check policy** — `RelationTraversalScopeCheckPolicy`/`Registry`/`Budget`/`ExecutionTrace` (DOC81 §8 / ADQ-315 — DOC82 owns the edge; DOC81 owns the traversal policy; EC executes).

**External owner docs (`ExternalDependencyRecord`-pinned per E0 §7.4):** **DOC72** (`stable`) — graph payload storage for Assertion family/edges/evidence, six-dimensional knowledge, `Entity`; **DOC73** (`partial`, `reconcile_at_charter`) — `ConsolidatedUnderstanding` semantics + `ConsolidatedUnderstandingSupportContract` (ABC §4.5; Owner Map line 40), `VersionedClaim` (DOC73 retains, DR-003), CU supersession lineage (ADQ-223), `PBEClusterDetectionResult` (ADQ-PASS2-01 — DOC73 owns; DOC82 consumes a read-model projection as equivalence *hints* only); **DOC25** (`stable`) — `SourceArtifact`/`ArtifactSegment` (OBL-D25-O-SOURCEARTIFACT-01; DOC25 V2.0+ §17), `SourceParseQualitySidecar` (ADQ-303 thresholds at DOC25/DAMS), file-materialization + provider profiles (ADQ-401), `LibrarySourceBinding`/`CorpusIndex`/`SourceCollection` (Owner Map lines 63–65), prompt-injection isolation (OBL-D25-PROMPTINJ-01), corpus-source-bindings completion (ADQ-402, depends on ADQ-202); **EC** (`partial/moving`, ECSeamContract OPA-031) — durable Assertion writes, warrant evaluation, resolution/merge execution, traversal scope checks, cascade execution.

DOC82 **never re-declares** an E0 registry/carrier, a DOC81 policy/scope contract, DOC73's CU, or a DOC25 artifact/container schema (Commission Hard Constraints §2/§4).

### §0.4 Branded-ref types (declared here, used throughout)

Per E0 §8.5 + DOC81 §0 (`Brand<T,B>` — a bare `string` is not a brand; lint `schema.primary_id_not_branded`). Durable records extend `E0DurableRecord` (E0 §1.6.2). Timestamps RFC3339-UTC; hashes sha256 (E0 §8.5).

```typescript
type Brand<T, B extends string> = T & { readonly __brand: B };   // DOC81 §0 pattern

// ---- DOC82-owned primary-ID brands (truth plane) ----
type AssertionRef = Brand<string, 'AssertionRef'>;
type AssertionVariantRef = Brand<string, 'AssertionVariantRef'>;
type AssertionCandidateRef = Brand<string, 'AssertionCandidateRef'>;
type AssertionCandidateEmissionRef = Brand<string, 'AssertionCandidateEmissionRef'>;   // DR-008
type AssertionResolutionRef = Brand<string, 'AssertionResolutionRef'>;
type AssertionDedupeOutcomeRef = Brand<string, 'AssertionDedupeOutcomeRef'>;
type AssertionOperationRef = Brand<string, 'AssertionOperationRef'>;                   // merge/split/unmerge ops
type AssertionRelationEdgeRef = Brand<string, 'AssertionRelationEdgeRef'>;
type EquivalenceTestRef = Brand<string, 'EquivalenceTestRef'>;
type ResolutionTraceRef = Brand<string, 'ResolutionTraceRef'>;
type WarrantEvaluationResultRef = Brand<string, 'WarrantEvaluationResultRef'>;
type WarrantRecomputeTraceRef = Brand<string, 'WarrantRecomputeTraceRef'>;             // §8 polarity recompute
type PromotionGateRecordRef = Brand<string, 'PromotionGateRecordRef'>;
// ---- DOC82-owned source/evidence brands ----
type SourceRef = Brand<string, 'SourceRef'>;                     // THE content-deduped source identity (PCA Lock C/D; §5.1) — the brand DOC81 §0 references as "a DOC82/DOC25 source id"
type SourceEnvelopeRef = Brand<string, 'SourceEnvelopeRef'>;
type SourceAuthorityScopeRef = Brand<string, 'SourceAuthorityScopeRef'>;
type EvidenceRecordRef = Brand<string, 'EvidenceRecordRef'>;
type EvidenceSupportEdgeRef = Brand<string, 'EvidenceSupportEdgeRef'>;
type ExtractionRouteContextRef = Brand<string, 'ExtractionRouteContextRef'>;           // Owner Map line 60 (SM-201)
type SourceInvalidationPayloadRef = Brand<string, 'SourceInvalidationPayloadRef'>;     // §8 — resolves DOC81 §5.1 source_side_payload_ref
type LibrarySourceBindingConsumptionContractRef = Brand<string, 'LibrarySourceBindingConsumptionContractRef'>;
type KnowledgeProjectionRef = Brand<string, 'KnowledgeProjectionRef'>;
type VersionedClaimLineageRowRef = Brand<string, 'VersionedClaimLineageRowRef'>;
type CuConsumptionBindingRef = Brand<string, 'CuConsumptionBindingRef'>;
// ---- §10 legal-profile (Bucket-A) brands ----
type FilingUnitRef = Brand<string, 'FilingUnitRef'>;
type FilingUnitVersionRef = Brand<string, 'FilingUnitVersionRef'>;
type FilingPartVisibilityRef = Brand<string, 'FilingPartVisibilityRef'>;
type RulingDispositionRef = Brand<string, 'RulingDispositionRef'>;
type CourtDispositionObservationRef = Brand<string, 'CourtDispositionObservationRef'>;
// ---- referenced (consumed, not owned) brands — owners noted; never redefined ----
type EntityRef = Brand<string, 'EntityRef'>;                     // DOC72-owned Entity
type SourceArtifactRef = Brand<string, 'SourceArtifactRef'>;     // DOC25-owned (OBL-D25-O-SOURCEARTIFACT-01)
type ArtifactSegmentRef = Brand<string, 'ArtifactSegmentRef'>;   // DOC25-owned
type SourceParseQualitySidecarRef = Brand<string, 'SourceParseQualitySidecarRef'>; // DOC25-owned (SM-207)
type ParserRunRef = Brand<string, 'ParserRunRef'>;               // DOC25-owned
type MaterializationStateRef = Brand<string, 'MaterializationStateRef'>; // DOC25-owned (ADQ-401)
type LibrarySourceBindingRef = Brand<string, 'LibrarySourceBindingRef'>; // DOC25-owned (Owner Map line 63)
type CorpusOrSourceCollectionRef = Brand<string, 'CorpusOrSourceCollectionRef'>; // DOC25-owned CorpusIndex/SourceCollection id (Owner Map line 65)
type ConsolidatedUnderstandingRef = Brand<string, 'ConsolidatedUnderstandingRef'>; // DOC73-owned (ADQ-219)
type VersionedClaimRef = Brand<string, 'VersionedClaimRef'>;     // DOC73-owned (DR-003)
type ClusterDetectionReadModelRef = Brand<string, 'ClusterDetectionReadModelRef'>; // DOC73-owned (ADQ-PASS2-01)
type MemoryMembershipEdgeRef = Brand<string, 'MemoryMembershipEdgeRef'>; // DOC87-owned edge; brand per E0 §4.1 — a RUNTIME ref, not a schema import (Import Graph §2.2; §2.5 keeps DOC82 < DOC87 acyclic)
type DocketRef = Brand<string, 'DocketRef'>;                     // legal-profile docket id (DOC23/DOC25 task/source plane); referenced
// E0/EC/DOC81-owned brands referenced verbatim (Hard Constraint §2): ReasonCodeId, PolicyGenerationId,
//   DomainProfileId, MemoryFlowCertificateId, MemoryMutationEnvelopeRef, MemoryCoordinationTraceRef,
//   ScopeRef, ScopeResolutionResultRef, EffectiveMemoryPolicyRef, PolicyStampRef, ECReceiptRef,
//   CascadingSourceInvalidationRef, LastActiveSupportEdgeEvaluationRef, RelationTraversalScopeCheckPolicyRef,
//   RelationTraversalExecutionTraceRef, ContentHash, SchemaVersionRef, EffectiveStateGenerationId.

/** Foreign vocabulary values use DOC81 §0's owner/version-qualified ref — never loose strings. */
// interface ExternalVocabularyValueRef { owner_doc; registry_id; value_id; registry_version }  — DOC81 §0; referenced
type VisibilityClassRef = /* ExternalVocabularyValueRef */ { owner_doc: string; registry_id: string; value_id: string; registry_version: SchemaVersionRef };  // see §13 flag 5 (PropA-vs-DOC82 vocabulary owner)
```

**Lints (Stage 9):** `schema.primary_id_not_branded` [canonical — DOC81 §0]; `schema.branded_ref_declared_as_plain_string` [canonical — DOC81 §0]; `schema.external_vocabulary_unversioned_string` [canonical — DOC81 §0].

---

## §1. Identity, the E3/E4 lockstep, and what DOC82 owns / does not own

### §1.1 Member identity (family member 3 of 8)

DOC82 is the **Canonical Knowledge + Source/Evidence** member (Skeletal §1; topological position 3: `DOC80 < DOC81 < DOC82 < DOC87 < DOC83 < DOC84 < {DOC85, DOC86}` — Import Graph §2.5). Its schema_import edges: **inbound** `DOC80 → DOC82`, `DOC81 → DOC82`; **outbound** `DOC82 → {DOC83, DOC84, DOC85, DOC87}` (Import Graph §2.1). The apparent DOC82↔DOC83 cycle is dissolved: `DOC83 → DOC82` is a **runtime_instance_flow** (`AssertionCandidateEmission` instances produced against the DOC82-owned contract — Import Graph §2.2, DR-008), not a schema import. Storage/execution flows: `DOC82 → DOC72` (graph payload), `DOC82 → EC` (durable writes) (Import Graph §2.4).

### §1.2 The lockstep (plan §12.3)

**E3 declares the knowledge objects** (§2 Assertion family + §3 warrant ladder + bitemporal axes); **E4 declares + validates the source/evidence backing** (§5 SourceEnvelope/EvidenceSupportEdge + §6 corpus interface + parse-quality bounds). They are one charter because evidence support is meaningless without the source-span contracts: every `EvidenceSupportEdge` (§5.5) resolves through `SourceSegmentRef`/`SourceRegionRef` pointers (§5.2) into DOC25 artifacts, and the warrant ladder (§3) is computed over those edges.

### §1.3 What DOC82 owns (Owner Map lines 26–65, 94–95, 140 + E0 §13.1 slot-ins)

- **The Assertion family + full lifecycle/state machine (B9):** `Assertion` · `AssertionVariant` · `AssertionCandidate` · `AssertionCandidateEmission` (DR-008 — the named E3↔E5 handoff; DOC83 generates instances) · `AssertionResolution` · `AssertionDedupeOutcome` (ABC §7.8) · `AssertionMergeOperation/Reconciliation/Split/Unmerge` · `AssertionRelationEdge` (schema only; DOC72 stores; EC executes traversal checks per DOC81 §8) · `AssertionIdentitySignature` · `AssertionLifecycleState` (the full machine) · `AssertionTemporalProfile` (Owner Map lines 26–36).
- **The warrant ladder:** `EpistemicKind` / `UseWarrant` / `EffectiveWarrant` (Owner Map line 37; EC executes evaluation) + the E0 §13.1 slot-ins **`WarrantEvaluationResult`**, **`WarrantConsequenceRegistry`**, **`DomainProfileWarrantPolicy`**, **`PromotionGateRecord`** (Skeletal §10.17; E0 §13.1 assigns all four to DOC82; Owner Map rows added at discharge, §14.5).
- **Source + evidence interface:** `SourceEnvelope` (Owner Map line 52) · `SourceRegionRef`/`SourceSegmentRef` (line 55) · `EvidenceRecord` (line 57) · `EvidenceSupportEdge` (line 58) · `SourceAuthorityScope`/`SourceAuthorityClass` (line 59) · `ExtractionRouteContext` (line 60, SM-201) · `VisualGroundingState` (line 61) · `LibrarySourceBindingConsumptionContract` (line 64) · the `CascadingSourceInvalidation` **source-side payload** (line 95).
- **Bitemporal axes** on the Assertion family (Skeletal §DOC82 §1 / §11.8; E0 §8.2 — DOC82 owns the axes).
- **Lineage + projection:** the `VersionedClaim → AssertionVariant` lineage table (line 42; DR-003) · `KnowledgeProjection` + `KnowledgeProjectionInvalidationPolicy` (line 140) · `SourceBoundSynthesisAdapter` (line 39 — **wrapper-only placeholder; documented-not-built per PCA Lock B**, §7.4).

### §1.4 What DOC82 does NOT own (one-owner; Commission Hard Constraint §4)

- **`ConsolidatedUnderstanding` semantics + `ConsolidatedUnderstandingSupportContract`** → DOC73 (ADQ-219; Owner Map lines 38, 40). DOC82 consumes directly (§7).
- **`SourceArtifact` / `ArtifactSegment` / `SourceParseQualitySidecar` / materialization / provider profiles** → DOC25 (OBL-D25-O-SOURCEARTIFACT-01; ADQ-303; ADQ-401). DOC82 consumes via envelope/segment refs (§5).
- **Corpus containers — `CorpusIndex` / `SourceCollection` / `LibrarySourceBinding`** → DOC25; **Library-as-organizational-container + the corpus↔library identity mapping** → DOC87 (ADQ-202; ADQ-PASS2-02; ADQ-220). DOC82 owns the *interface*, zero containers (§6).
- **Graph payload storage + six-dimensional knowledge + `Entity`** → DOC72.
- **Policy/scope gates** → DOC81 (the whole §0.3 DOC81 list — incl. the `CascadingSourceInvalidation` *envelope* and the `AssertionRelationEdge` *traversal policy*).
- **Registries + proof spine + taxonomy + quota** → DOC80 core (E0).
- **Membership/organization** → DOC87 (ADQ-220 — an Assertion carries **no** membership array; DOC87 edges point at it; §2.1 placement deviation).
- **Extraction triage + `AssertionCandidateDisposition` (the enum) + `AlternativeExtractionRouting`** → DOC83 (Owner Map lines 102–103; Skeletal §10.7 — DOC83 emits a *recommended* disposition; DOC82 is the canonical **resolution authority** and enforces the ABC §7.8 anti-overlap rule).
- **Durable writes + warrant evaluation execution + resolution/merge execution + cascade execution** → EC (ECSeamContract, E0 §7.1).
- **Treatment statuses (Linked/Indexed/Learned) + access policy** → DOC87/DOC26/DOC81 (PCA Lock C — DOC82 states only the consumption posture, §6.4).

### §1.5 Fail-closed posture

DOC82 inherits the family fail-closed posture: a missing domain profile resolves conservative (E0 §2.2); an unresolved scope floors `fail_closed_candidate` (DOC81 §2.4); a candidate whose parse-quality bounds are failed/unknown is capped (§5.7 / ABC §7.11); an un-spanned CU can never support (§7.2 R-CU-1); an indeterminate support-edge survivor count fails closed to retained-but-degraded (DOC81 §5.1 `indeterminate_fail_closed`). **No DOC82 contract ever fails open into `assert`.**

---

## §2. The Assertion family + lifecycle (E3 — declare)

**Source:** ABC §3.1–§3.12 (semantics — senior, DR-001); Owner Map lines 26–36 (placement); Skeletal §DOC82 §1.1–§1.9 + §10.7 + §11.8; B9 (DOC82 owns the whole machine); E0 §8.2 (bitemporal), §8.1 (embedding refs), §1.5 (EC serialized writes). **Owner:** DOC82 for every schema in this section. **Storage:** DOC72 (graph payload). **Execution:** EC (durable writes via `MemoryMutationEnvelope` + `DurableWriteMFC`); DOC1 executes the Write Gate (Owner Map line 35); DOC83 generates `AssertionCandidateEmission` instances (runtime flow).

The vocabulary (ABC §3.1, verbatim): **Assertion** = canonical reusable truth-apt proposition (ADQ-201 — `Assertion` canonical; `Premise` is a use role only; namespaced `Claim` allowed). **AssertionCandidate** = staged extracted truth-apt candidate. **AssertionVariant** = scoped/temporal/authority-specific/precondition-specific/formulation-specific variant. **CU** = source-bound synthesis, **not** reusable truth. Rejected as canonical truth objects (ABC §3.1): PremiseFamily, generic Claim/Understanding, Topic/Library/Project facts, CU-as-law, RecentActivity-as-evidence, IssueFrame-as-Assertion, DAMS-as-truth-owner.

### §2.1 `Assertion` (+ the bitemporal axes)

```typescript
/** Canonical reusable truth-apt proposition. schema_owner = DOC82 (Owner Map line 26; ADQ-201; SM-007/008).
 *  DOC72 stores graph payload; EC executes writes. Shape per ABC §3.2 with two PLACEMENT deviations (§0.2):
 *  (1) ABC's `memberships: MemoryMembershipEdge[]` is REMOVED — membership edges are DOC87-owned and point AT
 *      the assertion (ADQ-220); an Assertion carries no membership state.
 *  (2) embedded arrays normalize to branded refs (E0 §8.5 / N12) — variants/edges are independent durable
 *      records with their own lifecycle, stored by DOC72, so they ref rather than embed. */
interface Assertion extends E0DurableRecord {
  assertion_id: AssertionRef;
  schema_owner: 'DOC82';
  canonical_question: string;            // REQUIRED identity anchor (ABC §3.2)
  canonical_statement?: string;          // current best formulation; may change (ABC §3.2)
  domain_profile_ref?: DomainProfileId;  // E0 §2.2
  identity_signature: AssertionIdentitySignature;          // §2.3
  variant_refs: AssertionVariantRef[];                     // ≥1 once past candidate stage
  assertion_edge_refs: AssertionRelationEdgeRef[];         // §4; DOC72 stores
  lifecycle_rollup: AssertionLifecycleRollup;              // §2.8 — DERIVED from variant states
  factual_status: 'verified' | 'unverified' | 'not_truth_evaluable';  // OBL-D23-A-V6-PROMOTED-CLAIM-MEMORY-KIND-01 (§10.1) — queries MUST be able to filter by it
  // ---- bitemporal axes (Skeletal §11.8; E0 §8.2 — DOC82 owns the axes; E0 §6.2 row) ----
  valid_time_start: string;              // when the proposition holds in the world (RFC3339-UTC); open-ended via valid_time_end absent
  valid_time_end?: string;
  transaction_time_start: string;        // when the system recorded it; closed by superseding mutations
  transaction_time_end?: string;
}
```

**Bitemporal rules (Skeletal §11.8; E0 §8.2).** `valid_time` = in-world validity; `transaction_time` = system-record validity. The axes enable time-window warrant degradation (E0 §2.4 `time_window` trigger), litigation as-of queries ("what did I know about X as of date D" — Skeletal §DOC82 §1), and audit integrity. `MemoryMutationEnvelope` (E0 §5.1) propagates them family-wide; the envelope's `replay_order` is **NOT** the assertion's `valid_time` — linkable, never collapsed (UR-18). As-of *read* contracts are an E0-temporal-contract stub (DOC81 §13.7(c) honest-claim note) — DOC82 owns the axes and their write semantics; it does not over-claim a query engine here.

**Lifecycle.** Created only through resolution (§2.6) of an emitted candidate (§2.5) — never minted directly by extraction, delivery, learning, or UI (route-independence, ABC §1.2). Durable creation/mutation = one `MemoryMutationEnvelope` event + `DurableWriteMFC`, EC-serialized (E0 §1.5; OPA-031). `transaction_time_end` is set exactly when a superseding mutation commits.

**Unhappy paths.** *Missing `canonical_question`* → reject at resolution (identity anchor required, ABC §3.2). *Direct write bypassing the candidate pipeline* → `proof.durable_write_without_memory_flow_certificate` (E0 §3.3) + `assertion.created_outside_resolution_path` [proposed]. *Membership array smuggled back on* → `membership.edge_defines_non_membership_relation` [canonical — DOC87 §5 family] + one-owner violation. *Bitemporal fields absent* → `bitemporal.assertion_missing_valid_time` / `bitemporal.assertion_missing_transaction_time` [canonical — Skeletal §11.8].

**Lints (Stage 9):** the two bitemporal lints above; `assertion.created_outside_resolution_path` [proposed]; `assertion.canonical_question_missing` [proposed]; `assertion.memberships_embedded_on_truth_object` [proposed]; `taxonomy.truth_apt_outside_assertion_family` [canonical — E0 §6.3].

**Fixtures (Stage 8):** `fixture.assertion.bitemporal_axes_present_and_distinct_from_replay_order` (UR-18); `fixture.assertion.as_of_date_query_returns_what_was_known` (Skeletal §DOC82 §1 litigation case); `fixture.assertion.created_only_via_resolution`.

**Cross-charter.** DOC84 consumes for delivery products; DOC85 reads outcomes; DOC87 minted membership edges point at `assertion_id`; DOC72 stores; EC writes.

### §2.2 `AssertionVariant` (scoped/conditional) + preconditions + safety

```typescript
/** Scoped/conditional/formulation-specific variant. schema_owner = DOC82 (Owner Map line 27; SM-008).
 *  Support edges attach at the VARIANT level — support is always for a formulation under specific
 *  scope/preconditions (ABC §3.2 note). */
interface AssertionVariant extends E0DurableRecord {
  variant_id: AssertionVariantRef;
  schema_owner: 'DOC82';
  assertion_ref: AssertionRef;
  statement: string;
  scope_conditions: ScopeCondition[];                 // ABC §3.2; shape per §13.6 confirm-seed
  preconditions?: AssertionPrecondition[];            // ABC §3.11
  source_support_refs: EvidenceSupportEdgeRef[];      // §5.5
  contrary_support_refs: EvidenceSupportEdgeRef[];    // §5.5 — contrary edges are MANDATORY carriage, accumulate (ABC §3.5; E0 §6.2 SM-200 note)
  contributing_candidate_refs: AssertionCandidateRef[];
  temporal_class: TemporalClass;                      // §3.1 (ABC §3.8)
  epistemic_kind: EpistemicKind;                      // §3.1 (ABC §3.8 + PCA Lock A)
  temporal_profile: AssertionTemporalProfile;         // §3.2 (Owner Map line 36)
  lifecycle_state: AssertionLifecycleState;           // §2.8 — the machine runs PER VARIANT
  staleness_state: AssertionStalenessState;           // §3.4 (value set = §13 flag 3)
  default_use_warrant: UseWarrant;                    // §3.3
  authority_class: WarrantAuthorityClass;             // §3.6 — E0 §2.4/UR-22 degradation-carveout key
  safety_class: SafetyClass;                          // ABC §3.11
  safety_relevance?: 'none' | 'advisory' | 'must_warn';  // ABC §3.2
  origin_scope_ref: ScopeRef;                         // inherited from the emission origin-stamp (PCA Lock D; §2.5)
  origin_scope_resolution_ref: ScopeResolutionResultRef;  // DOC81 §2.4
  policy_stamp_ref?: PolicyStampRef;                  // DOC81 §3.4
  // ---- bitemporal axes (same contract as §2.1; Skeletal §11.8) ----
  valid_time_start: string; valid_time_end?: string;
  transaction_time_start: string; transaction_time_end?: string;
}

/** ABC §3.11 verbatim. */
type SafetyClass = 'none' | 'health_safety' | 'legal_exposure' | 'financial';
interface AssertionPrecondition {
  predicate_text: string;
  predicate_kind: 'user_action' | 'world_state' | 'time_window' | 'scope_state';
  if_unmet_warrant: UseWarrant | 'blocked';
}

/** Scope-condition shape — field exists per ABC §3.2; shape mirrors ABC §3.11's precondition
 *  (predicate + kind + optional binding). Value set = §13.6 confirm-seed. */
interface ScopeCondition {
  condition_text: string;
  condition_kind: 'jurisdiction' | 'domain' | 'matter_scope' | 'time_window' | 'other';  // seed
  scope_ref?: ScopeRef;            // DOC81 §2.1 when the condition binds a scope identity
  entity_refs?: EntityRef[];       // DOC72 entities when the condition binds entities
}
```

**Variant-vs-new-Assertion rule (ABC §3.4, normative — the scienter-fixture correction):** an `AssertionVariant` is a scoped/preconditioned answer to the **same** `canonical_question`; distinct sub-rules with distinct canonical_questions are **distinct Assertions** linked by `AssertionRelationEdge`, never variants.

**Safety rule (ABC §3.11):** safety-class variants must not be auto-superseded by extraction agents; a safety-class change requires confirmation before the conservative prior branch retires. Conditional facts are modeled as **active precondition-differentiated variants**, not flat supersession.

**Rolling-operational rule (ABC §3.12):** a `rolling` variant MUST carry a `reverify_cadence` or a `source_watch_binding_ref` (§3.2 temporal profile) — otherwise it is not spec-valid.

**Unhappy paths.** *Same-question scoped formulation filed as a new Assertion* (or distinct question filed as variant) → equivalence-test outcome misapplied, `assertion.variant_question_mismatch` [proposed]. *Safety-class auto-supersession* → `assertion.safety_class_auto_superseded` [proposed]. *Rolling variant without cadence/watch* → `assertion.rolling_variant_without_reverify_or_watch` [proposed]. *Contrary edge dropped on merge* → `assertion.contrary_edges_not_accumulated` [proposed] (ABC §3.5 `accumulate_all`).

**Fixtures (Stage 8):** `fixture.assertion.distinct_subrules_are_distinct_assertions` (ABC §3.4 scienter correction); `fixture.assertion.safety_class_supersession_requires_confirmation`; `fixture.assertion.rolling_without_cadence_rejected`; `fixture.assertion.precondition_unmet_warrant_applies` (ABC §3.11 pineapple-fixture lineage).

**Cross-charter.** DOC84 (variant is the delivery-grade unit; warrant consequences per §3.8), DOC81 §8 (traversal policy checks run per related variant), DOC85 (outcome reads), EC/DOC72.

### §2.3 `AssertionIdentitySignature` + equivalence + dedupe basis

```typescript
/** Deterministic identity signature. schema_owner = DOC82 (Owner Map line 34; ABC §3.3 verbatim shape
 *  + E0 §8.1 embedding-provenance fields where embeddings contribute). */
interface AssertionIdentitySignature {
  canonical_question_hash?: ContentHash;
  normalized_statement_hash: ContentHash;
  subject_entity_refs: EntityRef[];
  predicate_key?: string;
  object_entity_refs?: EntityRef[];
  jurisdiction_or_domain_scope?: string;
  temporal_scope?: string;
  authority_anchor_refs?: SourceRef[];
  polarity: 'positive' | 'negative' | 'qualified' | 'unknown';
  modality: 'asserted' | 'hypothesized' | 'argued' | 'observed' | 'inferred';
  signature_version: 1;
  embedding_model_ref?: string;          // E0 §8.1 — REQUIRED iff embeddings contribute to equivalence
  embedding_generation_id?: string;      // E0 §8.1
}

/** ABC §3.7 verbatim. */
interface EquivalenceTest {
  test_id: EquivalenceTestRef;
  signals: Array<'source_span_identity' | 'authority_citation_identity' | 'canonical_question_match'
    | 'embedding_similarity' | 'qualifier_set_match'>;
  domain_threshold_ref: DomainProfileId;             // E0 §2.2 — thresholds live with the domain profile
  outcome: 'merge' | 'new_variant' | 'new_assertion' | 'human_review';
}
```

**Normative identity rule (ABC §3.3):** semantic equivalence may **propose** a merge, but deterministic identity signature, authority/citation matching, source-span dedupe, or user/manual review must **approve** a durable merge when collision risk is material. **Equivalence rules (ABC §3.7):** same canonical_question + differing formulation/scope/precondition → `new_variant`; different canonical_question → `new_assertion`; identical span/citation → `merge`; **qualifier_set mismatch → never auto-merge — absolute, no exceptions (ADQ-311)**; review band → `human_review` or degraded provisional state.

**Embedding discipline (E0 §8.1).** Similarity/merge comparisons are valid only within the same `embedding_generation_id` (F28); cross-generation comparison requires re-embedding or explicit review. An embedding-model migration may require un-merging — **through review, never a silent split** (UR-41). Cluster-detection read-models consumed from DOC73 (ADQ-PASS2-01) are equivalence **hints** feeding `EquivalenceTest.signals` — never an auto-merge authority.

**Lints (Stage 9):** `embedding.semantic_equivalence_without_model_generation` [canonical — E0 §8.1]; `embedding.cross_generation_comparison_without_reembed` [canonical — F28]; `embedding.silent_unmerge_on_model_migration` [proposed — UR-41]; `assertion.qualifier_set_mismatch_auto_merged` [proposed — ADQ-311]; `assertion.semantic_merge_without_deterministic_approval` [proposed — ABC §3.3].

**Fixtures (Stage 8):** `fixture.assertion.qualifier_mismatch_never_auto_merges` (ADQ-311); `fixture.assertion.semantic_proposal_requires_deterministic_approval`; `fixture.assertion.cross_generation_similarity_blocked` (F28).

### §2.4 `AssertionCandidate`

```typescript
/** Staged extracted truth-apt candidate. schema_owner = DOC82 (Owner Map line 28; B9); DOC83 generates
 *  via AssertionCandidateEmission; EC executes resolution. Grounding/origin per ABC §7.10. */
interface AssertionCandidate extends E0DurableRecord {
  candidate_id: AssertionCandidateRef;
  schema_owner: 'DOC82';
  emission_ref: AssertionCandidateEmissionRef;        // §2.5 — REQUIRED (Skeletal §10.7 seam)
  proposed_canonical_question: string;
  proposed_statement: string;
  proposed_scope_conditions: ScopeCondition[];
  proposed_temporal_class: TemporalClass;             // §3.1
  proposed_epistemic_kind: EpistemicKind;             // §3.1 — (temporal, epistemic) validity pre-checked at §3.5
  candidate_origin: CandidateOrigin;                  // ABC §7.10 verbatim
  grounding_state: GroundingState;                    // ABC §7.10 verbatim
  claim_nature: ClaimNature;                          // ABC §7.10 verbatim
  target_memory_kind: TargetMemoryKind;               // §10.1 (OBL-D23-A-V6-PROMOTED-CLAIM-MEMORY-KIND-01)
  evidence_record_refs: EvidenceRecordRef[];          // §5.4 — the staged support
  source_segment_refs: SourceSegmentRef[];            // §5.2
  parse_quality_bound_check: 'within_bounds' | 'capped_review_required' | 'capped_evidence_or_cu_only';  // §5.7 (ABC §7.11 downstream_bounds)
  identity_signature_draft?: AssertionIdentitySignature;  // §2.3 — computed for dedupe
  resolution_ref?: AssertionResolutionRef;            // set when resolved (§2.6)
}

/** ABC §7.10 verbatim. */
type CandidateOrigin = 'source_text' | 'user_direct' | 'system_observation' | 'model_synthesis'
  | 'task_output' | 'cu_synthesis' | 'external_llm_carryover';
type GroundingState = 'span_backed' | 'source_backed_no_span' | 'system_observation_backed'
  | 'user_direct_backed' | 'cu_backed_with_underlying_spans' | 'cu_backed_without_spans'
  | 'model_synthesis_only' | 'ungrounded';
type ClaimNature = 'objective' | 'subjective' | 'normative';
```

**Grounding rules (ABC §7.10, verbatim):** an AssertionCandidate is **never evidence of truth**; `model_synthesis_only`, `cu_backed_without_spans`, and `ungrounded` **cannot promote to `active`** (wired into the §2.8 machine); subjective observations use domain/project/source-bounded treatment, not authority verification.

**Lifecycle.** Generated by DOC83 (Steps 0–11 of the ABC §7.7 triage tree — DOC83's plane); handed off via §2.5; resolved at §2.6; durable only from `provisional` onward. A candidate is **not** retained as a shadow truth store: unresolved candidates expire to the review queue (DOC83 §1.8, ADQ-306) or are rejected.

**Unhappy paths.** *Candidate without emission ref* → `assertion.doc82_resolution_missing_doc83_emission_ref` [canonical — Skeletal §10.7]. *Ungrounded candidate promoted* → `assertion.ungrounded_candidate_promoted_to_active` [proposed — ABC §7.10]. *Parse-capped candidate claiming span-backed support* → `source.parse_capped_candidate_claimed_span_backed` [proposed — ABC §7.11].

**Fixtures (Stage 8):** `fixture.assertion.ungrounded_cannot_reach_active`; `fixture.assertion.cu_without_spans_cannot_reach_active` (ties §7.2 R-CU-1); `fixture.assertion.parse_capped_candidate_bounded`.

### §2.5 `AssertionCandidateEmission` — the E3↔E5 handoff (DR-008) + the origin-stamp lock (PCA Lock D)

```typescript
/** THE named E3↔E5 handoff object (DR-008; Owner Map line 29; OPA-030). schema_owner = DOC82;
 *  DOC83 GENERATES instances (runtime_instance_flow, Import Graph §2.2 — not a schema import).
 *  PCA Lock D (binding): the emission MUST carry the originating library/scope membership so the
 *  canonical Assertion inherits scope (DOC81) + membership (DOC87). Treatment gates EXTRACTION,
 *  not injection — DOC84 injects by active-scope eligibility, never per-document treatment. */
interface AssertionCandidateEmission extends E0DurableRecord {
  emission_id: AssertionCandidateEmissionRef;
  schema_owner: 'DOC82';
  produced_by: 'DOC83';
  candidate_ref: AssertionCandidateRef;               // 1:1 — one emission per candidate (batching is a DOC83 transport concern, not contract shape)
  recommended_disposition: AssertionCandidateDispositionRef_DOC83;  // DOC83-OWNED enum, CONSUMED (see note below)
  extraction_route_context_ref: ExtractionRouteContextRef;  // §5.6 — route is provenance, not identity (ABC §1.2/§7.4)
  triage_step_trace_ref?: string;                     // DOC83's ABC §7.7 Step 0–11 trace (DOC83-owned record; referenced)
  // ---- THE ORIGIN-STAMP BLOCK (PCA Lock D — load-bearing; lint below) ----
  origin_scope_ref: ScopeRef;                          // DOC81 §2.1 — the scope the extraction ran under
  origin_scope_resolution_ref: ScopeResolutionResultRef;  // DOC81 §2.4 — the resolution in force at extraction
  origin_membership_edge_refs: MemoryMembershipEdgeRef[]; // DOC87 edges (runtime refs; E0 §4.1 brand) — the originating library/container memberships
  origin_treatment_attestation: 'extracted_under_learned_treatment';  // PCA Lock C/D — extraction implies the source was Learned IN THIS scope; per-document treatment is NOT re-checked at injection
  // ---- policy-generation carriage (E0 §8.3; Skeletal §11.3) ----
  policy_generation_id: PolicyGenerationId;            // the generation extraction admission ran under (Step 0)
  effective_policy_ref: EffectiveMemoryPolicyRef;      // DOC81 §3.2
  extraction_route_policy_envelope_ref: string;        // DOC81 §4.3 (ExtractionRoutePolicyEnvelopeRef; DOC81-owned brand)
  coordination_trace_ref: MemoryCoordinationTraceRef;  // E0 §3.4
  reason_codes: ReasonCodeId[];                        // E0 §2.1
}

/** DOC83-owned 7-value enum (ABC §7.8; Owner Map line 102; DR-006 verified values) — REFERENCED here,
 *  never redefined (Skeletal §10.7: "do NOT relocate AssertionCandidateDisposition; it stays at DOC83").
 *  Verified value set: durable_eligible | durable_eligible_confirmation_required | session_scoped |
 *  ephemeral_reroute | candidate_only_pending_issueframe | review_queue | reject_not_memory.
 *  The Concept Model §17.3 11-value enum stays RETIRED (G-2); its 4 extra capabilities live at
 *  DOC83's AlternativeExtractionRouting (Owner Map line 103). */
type AssertionCandidateDispositionRef_DOC83 = Brand<string, 'AssertionCandidateDisposition'>;
```

**The disposition/resolution seam (Skeletal §10.7, verbatim posture).** DOC83 owns extraction triage and emits a *recommended* disposition. **DOC82 owns `AssertionCandidate`, `AssertionResolution`, `AssertionDedupeOutcome`, and the ABC §7.8 anti-overlap rule** — DOC82 is the canonical resolution authority; no second/overlapping resolution-or-disposition enum may exist anywhere in the family. (The Opening Brief's shorthand "ABC §7.8 enums defined at DOC82 only" is implemented precisely: `AssertionDedupeOutcome` is **defined** here (§2.6); `AssertionCandidateDisposition` is **DOC83-owned and referenced** — Owner Map line 102 is canonical for placement, Skeletal §10.7 for the seam. Neither enum is declared twice; the anti-overlap gate is DOC82's.)

**The origin-stamp lock (PCA Lock D — the multi-treatment resolution).** A source may be **Learned in Library A** and merely **Indexed in Library B** (one content-deduped identity, many memberships — Lock C/D). Treatment is an **extraction-time gate**: extraction runs only over sources Learned in the active scope, and the emission stamps *which* scope/membership it ran under. The resulting canonical Assertion/Variant inherits `origin_scope_ref` (DOC81 scope) and the DOC87 memberships minted from `origin_membership_edge_refs`. **DOC84 then injects by active-scope eligibility** (DOC81 scope resolution + DOC87 membership + policy) — never by re-checking per-document library treatment. Cross-scope extracted knowledge routes through DOC81's cross-matter machinery (relevance, not direct injection). **Lint:** `assertion.emission_missing_origin_scope_membership` [canonical — Input Deck / PCA Lock D].

**Lifecycle.** DOC83 emits → DOC82 resolution consumes (§2.6) → resolution either lands the candidate or routes it back (review_queue / reject). If `policy_generation_id` changes between emission (Step 0 admission) and resolution/write, the candidate **re-gates at Step 0** under the new generation (E0 §8.3; Skeletal §11.3; EC resolution-side re-gate per OPA-031).

**Unhappy paths.** *Origin-stamp block absent/empty* → blocked + `assertion.emission_missing_origin_scope_membership`. *Emission consumed under a stale policy generation without re-gate* → `ec.policy_generation_changed_without_regate` [canonical — E0 §7.1]. *DOC83 attempts final resolution* → `assertion.doc83_final_resolution_without_doc82` [canonical — Skeletal §10.7]. *A second disposition enum appears* → `assertion.overlapping_resolution_disposition_enum` [canonical — Skeletal §10.7 / E0 §12.1].

**Lints (Stage 9):** the four above + `assertion.emission_without_route_context` [proposed]; `assertion.emission_treatment_attestation_missing` [proposed].

**Fixtures (Stage 8):** `fixture.assertion.emission_origin_stamp_required_and_inherited` (Lock D end-to-end: emission → resolution → variant carries origin scope; DOC87 membership minted); `fixture.assertion.multi_treatment_source_extracted_only_in_learned_scope` (Learned-in-A/Indexed-in-B: extraction fires in A only; injection in B blocked by scope eligibility, not treatment re-check); `fixture.golden.policy_change_mid_extraction_regates` (E0 §18 case).

**Cross-charter.** DOC83 (producer; OPA-030), DOC81 (scope/policy refs + cross-matter), DOC87 (membership minting), DOC84 (injects by active-scope eligibility), EC (resolution-side re-gate + write).

### §2.6 `AssertionResolution` + `AssertionDedupeOutcome` (the canonical-resolution pair)

```typescript
/** Higher-level resolution audit record (ABC §3.6 verbatim shape + emission_ref per Skeletal §10.7).
 *  schema_owner = DOC82 (Owner Map line 30); DOC83 + EC execute. Resolution confidence is NOT
 *  epistemic confidence (ABC §3.6: "a high-confidence merge means 'same proposition,' not 'true
 *  proposition'"). */
interface AssertionResolution extends E0DurableRecord {
  resolution_id: AssertionResolutionRef;
  schema_owner: 'DOC82';
  candidate_ref: AssertionCandidateRef;
  emission_ref: AssertionCandidateEmissionRef;        // REQUIRED (Skeletal §10.7 lint)
  resolution: 'landed' | 'review_queue' | 'rejected_not_memory' | 'rerouted';   // outcome of applying the dedupe outcome under policy; reroute target is DOC83's AlternativeExtractionRouting
  dedupe_outcome_ref: AssertionDedupeOutcomeRef;
  target_assertion_ref?: AssertionRef;
  target_variant_ref?: AssertionVariantRef;
  equivalence_test_ref?: EquivalenceTestRef;          // §2.3
  resolution_confidence: number;                      // 0..1 — same-proposition confidence ONLY
  support_strength_delta?: number;                    // ABC §3.6
  epistemic_confidence_delta?: number;                // ABC §3.6
  resolved_by: 'rule' | 'model' | 'human';
  resolution_trace_ref: ResolutionTraceRef;
  review_requirement?: 'none' | 'required' | 'completed';
  policy_generation_id: PolicyGenerationId;           // re-gate proof (E0 §8.3)
  scope_resolution_ref: ScopeResolutionResultRef;     // DOC81 §2.4 — write gating reads the floor
  mutation_envelope_ref?: MemoryMutationEnvelopeRef;  // E0 §5.1 — set when a durable write commits
  reason_codes: ReasonCodeId[];
}

/** ABC §7.8 verbatim — the dedupe axis, ORTHOGONAL to DOC83's disposition (Owner Map line 31; SM-202).
 *  Defined at DOC82 ONLY. */
interface AssertionDedupeOutcome extends E0DurableRecord {
  outcome_id: AssertionDedupeOutcomeRef;
  schema_owner: 'DOC82';
  candidate_ref: AssertionCandidateRef;
  outcome: 'merge_to_existing_variant' | 'add_variant_to_existing_assertion'
    | 'create_new_assertion' | 'reroute_misclassified';
  reroute_to?: string;                                // ExtractionOutputKind value (DOC83-owned vocabulary; referenced)
  target_ref?: AssertionRef | AssertionVariantRef;
  dedupe_basis: Array<'source_span_duplicate' | 'canonical_question_match' | 'semantic_equivalence'
    | 'authority_citation_match' | 'manual_user_merge' | 'no_match'>;
  confidence: number;
  requires_review: boolean;
  dedupe_basis_generation_id: string;                 // OPA-031 / E0 §1.5 — EC revalidates via compare-and-swap inside the serialized write
  embedding_model_ref?: string;                       // E0 §8.1 — required iff dedupe_basis includes semantic_equivalence
  embedding_generation_id?: string;
}
```

**Write gating (the DOC81 bind).** A resolution may commit a durable write **only** when: (a) the `ScopeResolutionResult` floor permits (`minimum_conservatism_floor` not `fail_closed_candidate` — DOC81 §2.4); (b) the effective policy's **`mutation_authority`** axis allows it — `candidate_only` holds the candidate; `durable_requires_review` forces `review_requirement = 'required'`; `durable_allowed` may commit; `none` blocks (DOC81 §3.0–§3.2); (c) the `AssertionCandidateDisposition` recommendation is honored or **conservatively overridden** (DOC82 may demote a `durable_eligible` recommendation to review; it may never promote past policy); (d) EC revalidates `dedupe_basis_generation_id` by compare-and-swap inside the serialized write (E0 §1.5; OPA-031) — a stale basis re-runs dedupe, never overwrites.

**Unhappy paths.** *Resolution without emission ref* → `assertion.doc82_resolution_missing_doc83_emission_ref` [canonical]. *Dedupe committed on a stale generation* → `ec.dedupe_write_without_generation_revalidation` [canonical — E0 §7.1]. *Resolution promotes past the mutation_authority ceiling* → `assertion.resolution_exceeded_mutation_authority` [proposed]. *Resolution-confidence used as truth confidence* → `assertion.resolution_confidence_used_as_epistemic` [proposed — ABC §3.6].

**Lints (Stage 9):** the four above + `assertion.overlapping_resolution_disposition_enum` [canonical]; `assertion.dedupe_semantic_basis_without_embedding_generation` [proposed — E0 §8.1].

**Fixtures (Stage 8):** `fixture.assertion.resolution_respects_floor_and_mutation_authority`; `fixture.assertion.concurrent_dedupe_cas_retries` (E0 §1.5); `fixture.assertion.merge_confidence_is_not_truth_confidence`.

**Cross-charter.** EC (serialized write + CAS + re-gate), DOC1 (Write Gate at promotion, §2.8), DOC83 (reroute consumer), DOC85 (resolution outcomes feed learning eligibility).

### §2.7 Merge / Reconciliation / Split / Unmerge (reversible, auditable)

```typescript
/** ABC §3.5 verbatim shapes (refs normalized per E0 §8.5). schema_owner = DOC82 (Owner Map line 32;
 *  SM-204); EC executes. Merge must have inverse operations — route-independent resolution only works
 *  if identity can be corrected (ABC §3.5). */
interface AssertionMergeOperation extends E0DurableRecord {
  operation_id: AssertionOperationRef;
  schema_owner: 'DOC82';
  source_assertion_refs: AssertionRef[];
  target_assertion_ref: AssertionRef;
  merge_basis: AssertionDedupeOutcome['dedupe_basis'];
  attribute_reconciliation: AssertionMergeReconciliation;
  policy_restamp_required: boolean;                   // most-restrictive-until-restamped ⇒ DOC81 §3.4 restamp path
  mutation_envelope_ref: MemoryMutationEnvelopeRef;   // E0 §5.1
  reason_codes: ReasonCodeId[];
}

/** ABC §3.5 verbatim policy values — these strings ARE the normative merge rules. */
interface AssertionMergeReconciliation {
  evidence_edges_policy: 'accumulate_all';
  contrary_edges_policy: 'accumulate_all';
  memberships_policy: 'union_then_validate';          // executed by DOC87 (membership plane) on EC receipt
  policy_state_policy: 'most_restrictive_until_restamped';   // DOC81 §3.4 restamp is the only widening path
  warrant_policy: 'most_conservative_until_recomputed';      // §3 recompute, never inherited
  freshness_policy: 'least_fresh_until_domain_recomputed';
  variants_policy: 'preserve_scope_conditions';
  utility_policy: 'preserve_context_product_history_not_truth_confidence';
}

interface AssertionSplitOperation extends E0DurableRecord {
  operation_id: AssertionOperationRef;
  schema_owner: 'DOC82';
  original_assertion_ref: AssertionRef;
  child_assertion_refs: AssertionRef[];
  split_basis: ReasonCodeId[];
  evidence_reassignment_map: Record<string, AssertionRef>;        // EvidenceSupportEdgeRef → child
  membership_reassignment_map: Record<string, AssertionRef[]>;    // MemoryMembershipEdgeRef → children (DOC87 executes re-pointing)
  invalidate_projection_refs: KnowledgeProjectionRef[];           // §9.2 — projections over the split parent invalidate
  preserve_audit_history: true;
  mutation_envelope_ref: MemoryMutationEnvelopeRef;
}

interface AssertionUnmergeOperation extends E0DurableRecord {
  operation_id: AssertionOperationRef;
  schema_owner: 'DOC82';
  prior_merge_operation_ref: AssertionOperationRef;
  restored_or_child_assertion_refs: AssertionRef[];
  unmerge_basis: ReasonCodeId[];                      // incl. embedding-migration recheck (UR-41 — through review, never silent)
  projection_invalidation_refs: KnowledgeProjectionRef[];
  preserve_final_prompt_proof: true;                  // delivery history survives identity correction (ABC §3.5)
  mutation_envelope_ref: MemoryMutationEnvelopeRef;
}
```

**Normative merge rules (ABC §3.5, verbatim):** identity merges; support edges accumulate; contrary edges accumulate; memberships union then validate; policy/review state takes the most restrictive until restamped; **warrant is recomputed, not inherited**; freshness is least-fresh until domain recomputation; utility history remains delivery history, not truth confidence.

**Unhappy paths.** *Merge widens policy without restamp* → `monotonicity.policy_widened_without_restamp` [canonical — E0 §12.1]. *Merge inherits the more permissive warrant* → `assertion.merge_inherited_warrant_without_recompute` [proposed]. *Unmerge without prior-merge ref* → `assertion.unmerge_without_prior_merge` [proposed]. *Silent split on embedding migration* → `embedding.silent_unmerge_on_model_migration` [proposed — UR-41].

**Fixtures (Stage 8):** `fixture.assertion.merge_takes_most_restrictive_policy_and_recomputes_warrant`; `fixture.assertion.unmerge_restores_and_preserves_proof`; `fixture.assertion.split_reassigns_evidence_and_invalidate_projections`.

### §2.8 The full `AssertionLifecycleState` state machine (+ `PromotionGateRecord` + rollup)

**Source:** ABC §7.13 (promotion rules — verbatim states/transitions); ADQ-304 (retire/audit_only); ABC §3.11 (safety gate); ABC §7.10 (grounding gate); ADQ-314 (validity flagged at transition); Owner Map line 35 (EC + DOC1 Write Gate execute); B9 (DOC82 owns the whole machine). The machine runs **per variant** (ABC §3.2 puts `lifecycle_state` on the variant); the Assertion-level `lifecycle_rollup` is derived.

```typescript
/** The canonical lifecycle states. Each value is source-cited: candidate/provisional/active/confirmed/
 *  contested/superseded per ABC §7.13; retired/audit_only per ADQ-304. No other states exist. */
type AssertionLifecycleState =
  | 'candidate'      // staged; not durable truth (ABC §7.13)
  | 'provisional'    // resolution completed; policy permits candidate/provisional (ABC §7.13)
  | 'active'         // promoted past the DOC1 Write Gate (ABC §7.13)
  | 'confirmed'      // independently corroborated or user-confirmed (ABC §7.13)
  | 'contested'      // contrary support edge present (ABC §7.13)
  | 'superseded'     // newer assertion/variant covers same canonical proposition with overriding scope (ABC §7.13)
  | 'retired'        // last lawful support edge lost (ADQ-304) or manual retirement
  | 'audit_only';    // ADQ-304 alternative to retirement — retained for audit, never delivered

/** Derived Assertion-level rollup (ABC §3.2 lifecycle_rollup). Derivation rule = §13.6 confirm-seed:
 *  contested if ANY variant contested; else the most-advanced state among non-superseded/retired variants;
 *  audit_only/retired only when ALL variants are. NOT independently writable. */
interface AssertionLifecycleRollup {
  rollup_state: AssertionLifecycleState;
  contested_variant_refs: AssertionVariantRef[];
  derivation_rule: 'any_contested_else_most_advanced_live_variant';
}

/** Record of a promotion-gate decision (E0 §13.1 disposition: PromotionGateRecord → DOC82/E3;
 *  DOC1 Write Gate EXECUTES — Owner Map line 35). One record per provisional→active attempt. */
interface PromotionGateRecord extends E0DurableRecord {
  gate_record_id: PromotionGateRecordRef;
  schema_owner: 'DOC82';
  variant_ref: AssertionVariantRef;
  candidate_refs: AssertionCandidateRef[];
  gate_executor: 'DOC1';                              // Write Gate (Owner Map line 35; ABC §7.13)
  support_summary: { supporting_edge_count: number; contrary_edge_count: number; non_adversarial_support: boolean };
  grounding_state_at_gate: GroundingState;            // §2.4 — must not be in the §7.10 barred set
  validity_check: 'valid' | 'flagged_invalid_combo';  // §3.5 ADQ-314 check runs AT the transition
  outcome: 'approved' | 'denied' | 'deferred_review';
  policy_generation_id: PolicyGenerationId;
  memory_flow_certificate_ref?: MemoryFlowCertificateId;  // DurableWriteMFC on approval (E0 §3.3)
  reason_codes: ReasonCodeId[];
}
```

**The transition table (the machine — every durable transition is one `MemoryMutationEnvelope` event + `DurableWriteMFC`, EC-serialized):**

| # | from → to | trigger | gate (runtime owner) | proof artifact | source |
|---|---|---|---|---|---|
| T1 | (extraction) → `candidate` | `AssertionCandidateEmission` consumed | DOC82 resolution authority; emission origin-stamp present (Lock D) | emission + coordination trace | ABC §7.13; §2.5 |
| T2 | `candidate` → `provisional` | `AssertionResolution` completes; policy permits | DOC81 floor + `mutation_authority` ≥ `candidate_only`; EC CAS on dedupe basis | `DurableWriteMFC` + envelope | ABC §7.13; §2.6 |
| T3 | `provisional` → `active` | sufficient non-adversarial source/user/system support **+ DOC1 Write Gate approval** | DOC1 Write Gate (`PromotionGateRecord`); grounding not in {model_synthesis_only, cu_backed_without_spans, ungrounded} (ABC §7.10); ADQ-314 validity check; `mutation_authority` ≥ `durable_requires_review`→review / `durable_allowed` | `PromotionGateRecord` + `DurableWriteMFC` | ABC §7.13; ABC §7.10; ADQ-314 |
| T4 | `active` → `confirmed` | independent corroboration OR user confirmation | EC write; corroboration = a second independent supporting `EvidenceSupportEdge` (distinct `SourceRef`) or `user_direct` confirmation | `DurableWriteMFC` | ABC §7.13 |
| T5 | any live → `contested` | contrary support edge added (`support_relation: 'contradicts'` or contrary polarity) | automatic on contrary-edge commit; never silent — reason code emitted | edge write envelope | ABC §7.13 |
| T6 | `contested` → prior state | contrary support resolved (edge retired/refuted) + warrant recompute trace | EC recompute (§8 polarity-aware trace required) | `WarrantRecomputeTrace` | E0 §12.1 (UR-09); §8 |
| T7 | any live → `superseded` | newer assertion/variant covers the same canonical proposition with overriding scope | supersession via `AssertionRelationEdge supersedes`; **safety-class variants require confirmation first** (ABC §3.11) | edge + envelope | ABC §7.13; ABC §3.11 |
| T8 | any → `retired` \| `audit_only` | **last lawful support edge from another source lost** (ADQ-304) — per DOC81 §5.1 `LastActiveSupportEdgeEvaluation = 'lost'`; or manual retirement | EC cascade execution (§8); `indeterminate_fail_closed` does NOT retire (DOC81 §5.1) | cascade receipts + envelope | ADQ-304; DOC81 §5.1 |
| T9 | `retired`/`audit_only` → `provisional` | **re-proof**: fresh `EvidenceSupportEdge` to a non-revoked source | DOC82 re-proof path (§8.3) — the ONLY eligibility-raising path post-revocation | new edge + `WarrantRecomputeTrace` | Skeletal §11.9; E0 §12.1 |

**Machine-wide rules.** (a) **Partial support loss never retires** — warrant degradation only (ADQ-304; §8). (b) The **(temporal_class, epistemic_kind) validity check runs at every lifecycle transition** — invalid combos are flagged, blocking T3+ (ADQ-314; §3.5). (c) `lifecycle_state`, `staleness_state` (§3.4), and `UseWarrant` (§3.3) are **three orthogonal axes**: lifecycle = where the variant is in the machine; staleness = freshness posture; warrant = how it may be used. None substitutes for another. (d) Erasure/restamp/restore of assertion records ride E0 §3.3 certificate shells (`ErasureMFC`/`RestampMFC`/`RestoreMFC`) — the machine adds **no** erasure lifecycle engine (UR-29). (e) No spontaneous transitions: warrant transitions are a closed labeled machine (Skeletal §11.9).

**Unhappy paths.** *T3 without `PromotionGateRecord`* → `assertion.promotion_without_write_gate_record` [proposed]. *Auto-supersession of a safety-class variant* → `assertion.safety_class_auto_superseded` [proposed — ABC §3.11]. *Retirement on partial loss* → over-retirement, guarded by DOC81 §5.1 denominator proof (`revocation.last_active_support_edge_boolean_without_denominator` [canonical — DOC81 §5]). *Rollup written independently* → `assertion.lifecycle_rollup_not_derived` [proposed]. *Transition under invalid (temporal, epistemic) combo* → `warrant.invalid_temporal_epistemic_combo_transitioned` [proposed — ADQ-314].

**Lints (Stage 9):** the five above + `assertion.spontaneous_lifecycle_transition` [proposed]; `assertion.audit_only_variant_delivered` [proposed].

**Fixtures (Stage 8):** `fixture.assertion.candidate_to_confirmed_full_path` (T1→T4 with every gate + proof); `fixture.assertion.contrary_edge_contests_then_recompute_restores` (T5/T6); `fixture.assertion.last_edge_lost_retires_partial_degrades` (T8; ADQ-304 — shared with DOC81 §5 fixture); `fixture.assertion.reproof_restores_via_fresh_edge` (T9); `fixture.golden.removed_membership_cannot_inject` consumed from E0 §12.1 (membership lifecycle is DOC87's; listed for the seam).

**Cross-charter.** DOC1 (Write Gate execution), EC (every durable transition), DOC81 (floor/authority/restamp), DOC85 (T-outcomes feed learning; learning may never drive T-transitions directly — Skeletal §11.9 learning monotonicity), DOC86 (renders lifecycle + contested state), DOC84 (delivery eligibility honors lifecycle: `audit_only`/`retired` never deliver).

---

## §3. The warrant ladder (E3 — declare)

**Source:** ABC §3.8–§3.10 (semantics — verbatim enums + evaluation/composition), §7.13 (degradation ladder + triggers), §11.5 (consequence language — the registry seed); ADQ-314 (the validity table — created at this charter); **PCA Lock A (`principal_authored` — binding)**; ADQ-223 (minimal lock only; deeper work deferred); E0 §2.4 (trigger registry + UR-22 carveout), §13.1 (the four warrant-object slots → DOC82); E0 §2.2 (`warrant_policy_ref` → §3.7); Owner Map line 37 (EC executes warrant evaluation). **Owner:** DOC82 for every schema here. **Executor:** EC (evaluation); DOC84 DAMS substrate executes `time_window`/`confidence` triggers (ADQ-312).

### §3.1 The two classification enums: `TemporalClass` + `EpistemicKind`

```typescript
/** ABC §3.8 verbatim — the temporal/kind SPLIT. Kind labels were removed from the temporal enum
 *  (standing_preference / procedure_heuristic / historical_fact are NOT temporal values — ABC §3.8).
 *  This 7-value set supersedes the legacy pre-split "10 temporal classes" count carried in the
 *  Owner Map line-36 note (ABC senior for semantics, DR-001; see §13 flag 4 for the discharge note). */
type TemporalClass = 'instant' | 'session' | 'incident' | 'rolling' | 'bounded' | 'durable' | 'static';

/** ABC §3.8's 8 kinds + `principal_authored` (PCA Lock A — architect lock 2026-06-08; ADQ-223 minimal lock).
 *  principal_authored = the principal's own authoritative-but-not-citable statements (esp. legal statements
 *  of law): first-class sources where the AUTHOR IS THE PRINCIPAL and the SPAN IS THE STATEMENT — not
 *  "system synthesis without spans" (PCA Lock A amends R-CU-1's reach). */
type EpistemicKind = 'status' | 'operational' | 'doctrine' | 'preference' | 'heuristic'
  | 'historical_fact' | 'diagnosis' | 'subjective_observation'
  | 'principal_authored';   // PCA Lock A — minimal lock; deeper sub-kinds/settledness DEFERRED to ADQ-223
```

### §3.2 `AssertionTemporalProfile`

```typescript
/** The temporal profile object (Owner Map line 36 — DAMS V5 + EC consume; SM-008). Carries the class
 *  plus the class-conditional obligations ABC §3.12 imposes. */
interface AssertionTemporalProfile {
  temporal_class: TemporalClass;
  reverify_cadence?: string;               // ISO-8601 duration; REQUIRED for 'rolling' unless source_watch_binding_ref present (ABC §3.12)
  source_watch_binding_ref?: string;       // a source-watch hook (DOC25/DOC83 watch seam); the ABC §3.12 alternative
  session_ref?: string;                    // REQUIRED for 'session' (session-bound expiry — ADQ-312 trigger owner DOC24)
  incident_ttl_policy_ref?: string;        // 'incident' TTL hook (ABC §7.14 stage-1 alignment)
  bounded_window?: { start: string; end: string };  // 'bounded' in-world window — feeds valid_time
}
```

**Rule (ABC §3.12, verbatim):** a `rolling` operational variant without a `reverify_cadence` or `source_watch_binding_ref` is **not spec-valid**. Lint `assertion.rolling_variant_without_reverify_or_watch` [proposed] (§2.2).

### §3.3 `UseWarrant` + `WarrantEvaluationInput`/`WarrantEvaluationResult`

```typescript
/** ABC §3.9 verbatim. `do_not_inject` is NOT a delivered-item warrant — it is a considered/excluded-ledger
 *  disposition (ABC §3.9; the ledger is DOC84's ConsideredItemLedger per E0 §13.1). */
type UseWarrant = 'assert' | 'hedge' | 'verify_before_use' | 'orientation_only' | 'search_only';

/** ABC §3.9 verbatim shape (refs branded per E0 §8.5). EC executes the deterministic evaluation. */
interface WarrantEvaluationInput {
  assertion_variant_ref: AssertionVariantRef;
  source_support_edges: EvidenceSupportEdgeRef[];
  contrary_support_edges: EvidenceSupportEdgeRef[];
  source_authority_scopes: SourceAuthorityScopeRef[];
  domain_profile_ref?: DomainProfileId;
  freshness_state: AssertionStalenessState;            // §3.4
  relation_edges: AssertionRelationEdgeRef[];
  policy_render_state: string;                          // DOC81-derived render posture (PolicyRenderState — DOC81/DOC84 vocabulary; referenced)
  scope_relation: string;                                // DOC81 §2.3 ScopeAffinity value; referenced
  intended_use: 'answer_factually' | 'orient_work' | 'draft_argument' | 'search' | 'export' | 'delegate' | 'carryover';
}

/** ABC §3.9 verbatim + E0 §13.1 slot-in (WarrantEvaluationResult → DOC82/E3, beside the §1.8 family).
 *  Owner Map row added at discharge (§14.5). */
interface WarrantEvaluationResult extends E0DurableRecord {
  result_id: WarrantEvaluationResultRef;
  schema_owner: 'DOC82';
  input: WarrantEvaluationInput;
  use_warrant: UseWarrant;
  reason_codes: ReasonCodeId[];
  required_checks?: string[];
  can_satisfy_factual_query: boolean;
  can_satisfy_evidence_query: boolean;                  // honors the ABC §4.4 supportability table (§5.8)
}
```

**Required downgrade rules (ABC §3.9, verbatim):** policy blocked → no delivery / blocked_scope_notice; reference-only policy → reference_only_notice / `search_only` posture; freshness unknown in a high-stakes authority context → `verify_before_use`; unresolved contrary support → `hedge` or conflict notice; source-bound synthesis only → `orientation_only` unless source-specific query; model-generated source without backing → `orientation_only` or `search_only`; scope unresolved + sensitive tags → block / ask-user / reference-only.

### §3.4 `AssertionStalenessState`

```typescript
/** The freshness axis (named at Skeletal §DOC82 §1.8; consumed by ABC §3.9 freshness_state).
 *  VALUE SET = §13 OPEN flag 3 — no canonical source enumerates it; the four values below are
 *  fragment-cited seeds: 'stale_possible' verbatim from ABC §4.6; 'reverify_due' from the ABC §3.12
 *  cadence obligation; 'fresh' as the zero state; 'expired_session_bound' from the ADQ-312
 *  session_bound_expiry trigger. Architect confirms or amends the set. */
type AssertionStalenessState = 'fresh' | 'stale_possible' | 'reverify_due' | 'expired_session_bound';
```

Staleness transitions are driven by the E0 §2.4 trigger registry (`time_window`, `supporting_CU_stale`, `parse_quality_audit`, `session_bound_expiry`) and by source-population change (ABC §4.6). Staleness **feeds** warrant evaluation (§3.3); it never bypasses it.

### §3.5 The `(temporal_class, epistemic_kind)` validity table (ADQ-314) — incl. `principal_authored` (PCA Lock A)

**ADQ-314 (resolved):** "create validity table at Stage 6 E3 charter; invalid combos (e.g., instant_status + standing_preference) flagged at lifecycle transition." The table below is that creation. **Check point:** every §2.8 lifecycle transition runs the check; an invalid combo flags (blocking T3+, per §2.8 rule (b)). Cell values are a **§13.6 confirm-seed** (the table's *existence and check point* are ADQ-314-mandated; the cells are this draft's reasoned proposal). Legend: ✓ = valid; F = flagged-invalid at transition; (✓) = valid with the stated warrant cap.

| epistemic_kind \ temporal_class | instant | session | incident | rolling | bounded | durable | static |
|---|---|---|---|---|---|---|---|
| `status` | ✓ | ✓ | ✓ | ✓ | ✓ | F¹ | F¹ |
| `operational` | ✓ | ✓ | ✓ | ✓ | ✓ | F¹ | F¹ |
| `doctrine` | F² | F² | F² | (✓)³ | ✓ | ✓ | ✓ |
| `preference` | F⁴ | ✓ | F⁴ | ✓ | ✓ | ✓ | F⁵ |
| `heuristic` | F⁴ | ✓ | F⁴ | ✓ | ✓ | ✓ | F⁵ |
| `historical_fact` | F⁶ | F⁶ | ✓ | F⁶ | ✓ | ✓ | ✓ |
| `diagnosis` | ✓ | ✓ | ✓ | ✓ | ✓ | (✓)⁷ | F⁷ |
| `subjective_observation` | ✓ | ✓ | ✓ | (✓)⁸ | ✓ | (✓)⁸ | F⁸ |
| **`principal_authored`** (Lock A) | F⁹ | ✓ | ✓ | ✓ | ✓ | ✓ | (✓)⁹ |

Cell rationales (seed): ¹ a status/operational reading is time-bound by nature — `durable`/`static` status is the ADQ-314 example class of mismatch (the resolved example "instant_status + standing_preference" is, in the split vocabulary, exactly a kind-label/temporal-class crossing). ² doctrine is not an instant/session/incident-lived proposition — short-lived doctrine is a status about doctrine. ³ rolling doctrine requires the ABC §3.12 cadence/watch (tracked-current-law case). ⁴ a preference/heuristic that lives one instant/incident is working state (IssueFrame plane), not reusable truth. ⁵ `static` preference/heuristic over-claims permanence — `durable` is the ceiling (preferences change; ADQ-223's settledness gradient is the deferred refinement). ⁶ a historical fact is not instant/session/rolling-lived; incident-shaped history (a thing that happened) is valid. ⁷ a `durable` diagnosis caps at `verify_before_use` absent re-corroboration; `static` diagnosis over-claims. ⁸ subjective observations stay source/project-bounded (ABC §7.10); rolling/durable subjective carries `hedge` cap; never `static`. ⁹ `principal_authored`: an `instant` principal statement is conversation, not a position (significance/Write-Gate territory — ADQ-223(a)); `static` principal statements are valid but warrant-capped like all of Lock A (below).

**The `principal_authored` warrant profile (PCA Lock A — binding; the row's warrant cap, enforced at §3.3 evaluation + §3.8 consequences):**

- **MAY:** be injected as **orientation** (`orientation_only`) and ground **hypothesis/drafting framing** (`verify_before_use` ceiling for `draft_argument` intended use), framed to the model as *"principal's stated understanding — not verified authority"* (exact framing string tuned at E7/DOC84+KDA per ADQ-223(c)).
- **MAY NOT:** be cited as controlling authority — `UseWarrant` for brief-citation contexts (`answer_factually`/`export` in an authority-demanding domain profile) is **insufficient**; satisfying a citation requires external authority through the normal evidence path (`can_satisfy_evidence_query: false` for principal-authored-only support).
- **Source posture:** the principal's statement is a **first-class source** (author = principal; span = the statement) — it flows through `SourceEnvelope` (§5.1, `source_authority_class: 'user_direct'`) and `EvidenceRecord` (`evidence_kind: 'user_direct_statement'`), so R-CU-1 (no-spans ⇒ no support) does **not** bar it: the span exists.
- **Deferred (ADQ-223 — do NOT over-build here):** the provisionality gradient (tentative-vs-settled), claim-vs-directive delineation (DOC83 `AlternativeExtractionRouting` / DOC26 split), injection weight + framing tuning (E7/DOC84+KDA), settled-vs-tentative learning (E9). DOC82 lands ONLY the kind + this warrant profile + CU-supersession-lineage consumption (§9.1).

**Lints (Stage 9):** `warrant.invalid_temporal_epistemic_combo_transitioned` [proposed — ADQ-314]; `warrant.principal_authored_cited_as_authority` [proposed — PCA Lock A]; `warrant.principal_authored_satisfied_evidence_query` [proposed].

**Fixtures (Stage 8):** `fixture.warrant.invalid_combo_flagged_at_transition` (ADQ-314 example cell); `fixture.warrant.principal_authored_orients_never_cites` (Lock A end-to-end: principal statement → envelope → evidence → variant → orientation injection OK; brief-citation blocked).

### §3.6 `EffectiveWarrant` + composition + the degradation carveout key

```typescript
/** ABC §3.10 verbatim (BDSM/DOC8 reference reframed per SM-020/ADQ-221: the tightening adjuster is the
 *  DOC84 DAMS substrate + DOC85 learning — DOC8 is phantom). EC executes the meet. */
interface WarrantInputs {
  variant_default: UseWarrant;
  staleness_derived: UseWarrant;
  policy_derived: UseWarrant;
  scope_derived: UseWarrant;
}
interface EffectiveWarrant {
  effective: UseWarrant;                  // the MOST CONSERVATIVE of inputs (ABC §3.10)
  band_floor: UseWarrant;
  bdsm_adjustment_applied: boolean;       // DAMS-substrate tightening only (SM-020)
  inputs: WarrantInputs;
}

/** The E0 §2.4 / UR-22 degradation-carveout key. E0 names the enum and defers ownership to the
 *  knowledge/policy planes ("owned by DOC82/DOC81 … referenced, not redefined"); one-owner resolves
 *  it HERE — warrant-degradation exemption is warrant semantics (DOC82); DOC81 consumes for policy
 *  (§14.6 records the disposition). */
type WarrantAuthorityClass = 'user_asserted' | 'authority_fixed' | 'source_derived' | 'inferred';
```

**Composition rule (ABC §3.10, verbatim):** effective warrant is the most conservative result from variant, staleness, policy, and scope. The DAMS substrate / learning **may only tighten within that band** — it MUST NOT escalate a staleness-derived `verify_before_use` to `assert` (ABC §3.10; learning ceiling per E0 §12.1 UR-47).

**Degradation (ABC §7.13 + E0 §2.4).** The ladder: `assert → hedge → verify_before_use → orientation_only → search_only → excluded (do_not_inject disposition)`. Triggers = the E0 §2.4 controlled registry (9 kinds; new kinds require an ADQ). **Carveout (UR-22):** a degradation trigger MUST NOT lower eligibility on `user_asserted`, `authority_fixed`, or user-locked content (static facts, fixed citations/dates/named entities); only `source_derived`/`inferred` content degrades on time/confidence triggers. Trigger **emission** lowers-or-holds only (E0 §2.4); the polarity-aware **recompute** (a contrary-source removal MAY raise net warrant) is §8's, with a mandatory trace.

**Lints (Stage 9):** `warrant_trigger.emission_raised_eligibility` [canonical — E0 §2.4]; `warrant_degradation.authority_fixed_fact_degraded` / `warrant_degradation.static_fact_degraded` / `warrant_degradation.user_locked_memory_degraded` [canonical — E0 §2.4]; `warrant.effective_not_most_conservative` [proposed — ABC §3.10]; `warrant.dams_escalated_beyond_band` [proposed — ABC §3.10].

**Fixtures (Stage 8):** `fixture.warrant.effective_is_most_conservative_meet`; `fixture.warrant.user_asserted_fact_immune_to_time_window`; `fixture.warrant.dams_tightens_never_loosens`.

### §3.7 `DomainProfileWarrantPolicy`

```typescript
/** Per-domain warrant policy — the value bundle E0 §2.2's DomainProfile.warrant_policy_ref points at
 *  (E0 §13.1 disposition: DomainProfileWarrantPolicy → DOC82/E3; ADQ-313 knob-values-live-with-planes).
 *  Owner Map row added at discharge (§14.5). */
interface DomainProfileWarrantPolicy extends E0DurableRecord {
  policy_id: string;                              // referenced by E0 §2.2 ExternalContractRef
  schema_owner: 'DOC82';
  domain_profile_id: DomainProfileId;             // FK to E0 §2.2
  high_stakes_authority_context: boolean;         // drives the ABC §3.9 freshness-unknown → verify_before_use rule
  default_warrant_by_epistemic_kind: Partial<Record<EpistemicKind, UseWarrant>>;   // e.g. legal.litigation: doctrine→verify_before_use, principal_authored→orientation_only
  citation_requires_authority_classes: SourceAuthorityClass[];   // §5.3 — e.g. legal: ['primary_source']
  confirmation_requires_independent_source: boolean;             // §2.8 T4 corroboration knob
  staleness_to_warrant_caps: Partial<Record<AssertionStalenessState, UseWarrant>>;
}
```

The **conservative fallback** profile (E0 §2.2) maps every kind to its most-restrictive cap (`orientation_only`/`search_only`); a missing profile never fails open (E0 §2.2 fallback rule). Per-profile cell values are §13.6 confirm-seeds.

### §3.8 `WarrantConsequenceRegistry`

```typescript
/** The registry of model-visible warrant consequences (E0 §13.1 disposition → DOC82/E3, carrying the
 *  E0 §16.1 item-2 placement flag — §13 flag 1). Seed rows VERBATIM from ABC §11.5; DOC84/KDA consume
 *  the language at render (ABC §11.5 "every nontrivial warrant needs model-visible consequences"). */
interface WarrantConsequenceEntry {
  use_warrant: UseWarrant;
  required_consequence_language: string;          // the ABC §11.5 cell, verbatim (below)
  render_constraint: 'scope_freshness_limited' | 'caveated' | 'draft_background_only' | 'orientation_frame_only' | 'availability_signal_only';
  lifecycle_state: 'candidate' | 'active' | 'deprecated' | 'retired';   // E0 §1.6 RegistryEntryLifecycleState values
}
interface WarrantConsequenceRegistry extends E0DurableRecord {
  registry_id: 'doc82.warrant_consequence_registry';
  schema_owner: 'DOC82';
  entries: WarrantConsequenceEntry[];             // exactly one ACTIVE entry per UseWarrant value
}
```

**Seed entries (ABC §11.5, verbatim):** `assert` → "May be used as stated within listed scope/freshness limits; do not generalize beyond scope." · `hedge` → "Use with caveat; present as likely, partial, contested, or source-limited." · `verify_before_use` → "Drafting/background only; do not present as current authority or final fact without verification." · `orientation_only` → "Orient task framing/sequencing/next steps only; not evidence, authority, or settled fact." · `search_only` → "Availability/navigation signal; do not infer unseen contents." **Plus the Lock A framing entry:** `principal_authored` content renders under its §3.5 framing string regardless of warrant level (exact string tuned at E7 — ADQ-223(c)).

**Lints (Stage 9):** `warrant.consequence_entry_missing_for_warrant_value` [proposed]; `warrant.consequence_language_absent_from_render` [proposed — DOC84/KDA enforcement seam]. **Fixture (Stage 8):** `fixture.warrant.every_warrant_has_active_consequence_entry`.

**Cross-charter (§3 roll-up).** EC executes evaluation + meet; DOC84 (DAMS tightening; consequence rendering; ADQ-312 time/confidence triggers); DOC85 (proof-gated degradation producer; learning ceiling); DOC81 (`policy_change` trigger → restamp eligibility; policy-derived warrant input); DOC73 (`supporting_CU_stale` trigger); DOC25 (`parse_quality_audit` trigger); DOC24 (`session_bound_expiry`); E0 §2.2 (warrant_policy_ref binding).

---

## §4. `AssertionRelationEdge` (schema only)

**Source:** ABC §3.4 (semantics — verbatim); Owner Map line 33 (schema DOC82; **DOC72 stores; EC executes traversal scope checks**; B3 split); DOC81 §8 / ADQ-315 (the traversal-scope-check **policy** is DOC81's — consumed, never redefined). **Owner:** DOC82 (the edge schema only).

```typescript
/** Typed assertion-to-assertion relation. schema_owner = DOC82 (Owner Map line 33); DOC72 stores;
 *  EC executes traversal under the DOC81 §8 policy registry. ABC §3.4 verbatim (refs branded;
 *  conflict sets are DERIVED projections over these edges, not a standalone AssertionConflictSet). */
interface AssertionRelationEdge extends E0DurableRecord {
  edge_id: AssertionRelationEdgeRef;
  schema_owner: 'DOC82';
  source_assertion_variant_ref: AssertionVariantRef;
  target_assertion_variant_ref: AssertionVariantRef;
  relation_kind: AssertionRelationKind;
  relation_warrant: UseWarrant;                       // §3.3 — the warrant of the RELATION claim itself
  source_support_refs: EvidenceSupportEdgeRef[];      // §5.5 — relations need support too
  scope_conditions: ScopeCondition[];                 // §2.2
  injection_policy?: RelationInjectionPolicy;
  created_by_resolution_ref?: AssertionResolutionRef;
  lifecycle_state: 'active' | 'contested' | 'superseded' | 'retired';   // ABC §3.4 (edge-level; distinct from §2.8)
  // bitemporal carriage per §2.1 contract (Skeletal §11.8)
  valid_time_start: string; valid_time_end?: string;
  transaction_time_start: string; transaction_time_end?: string;
}

/** ABC §3.4 verbatim — 11 kinds. */
type AssertionRelationKind = 'supports' | 'contradicts' | 'qualifies' | 'narrows' | 'broadens'
  | 'exception_to' | 'supersedes' | 'is_superseded_by' | 'derived_from' | 'analogous_to'
  | 'same_question_different_scope';

/** ABC §3.4 verbatim. */
type RelationInjectionPolicy = 'do_not_inject' | 'inject_conflict_notice_only'
  | 'inject_preferred_with_caveat' | 'inject_all_with_comparison' | 'search_only';
```

**Traversal (consumed from DOC81 §8 — the ADQ-315 split).** The edge **schema** is DOC82's; the **policy table** (`RelationTraversalScopeCheckPolicy`/`Registry`/`Budget`) is DOC81's; **EC executes**. Edge-kind → traversal-purpose mapping (DOC81 §8's closed `RelationTraversalPolicyKind`): `contradicts`/`qualifies`/`exception_to` → `conflict_projection`; `analogous_to` → `analogy`; `supersedes`/`is_superseded_by` → `supersession`; any kind rendered side-by-side → `comparison_injection`. Every traversal for those purposes runs scope-resolution + effective-policy **per related variant** (Round D §3.7 via DOC81 §8); a cross-scope/firewalled/not-disclosable related variant may not render, be summarized, or be named — at most a safe blocked notice if existence-disclosable. Unknown relation kinds default-deny via DOC81's registry. Traversal budgets + cycle handling are DOC81 §8's (`MAX_SCOPE_TRAVERSAL_DEPTH = 16` seed).

**Derived conflict sets.** A "conflict set" is a **projection** over `contradicts`/`qualifies` edges (ABC §3.4 rejects a standalone `AssertionConflictSet`) — materialized, it is a `KnowledgeProjection` (§9.2) with source refs + invalidation.

**Unhappy paths.** *Traversal without per-variant policy check* → `relation.traversal_without_scope_policy_check` [canonical — DOC81 §8]. *Cross-scope related variant leaked* → `relation.cross_scope_variant_leaked` [canonical — DOC81 §8]. *Edge minted without support* → `relation.edge_without_support_refs` [proposed] (relations are claims; ABC §3.4 `source_support_refs`). *Supersession edge auto-retiring a safety-class variant* → `assertion.safety_class_auto_superseded` (§2.2).

**Lints (Stage 9):** the DOC81 §8 set (consumed: `relation.traversal_without_scope_policy_check`, `relation.cross_scope_variant_leaked`, `relation.analogy_traversal_bypassed_policy`, `relation.unknown_kind_without_default_deny`) + `relation.edge_without_support_refs` [proposed]; `relation.conflict_set_materialized_as_canonical` [proposed — must be a projection].

**Fixtures (Stage 8):** `fixture.relation.cross_scope_traversal_gated` (shared with DOC81 §8); `fixture.relation.contradicts_edge_contests_target` (ties §2.8 T5); `fixture.relation.conflict_set_is_projection_with_invalidation`.

**Cross-charter.** DOC81 (policy table), EC (traversal execution + writes), DOC72 (storage), DOC84 (honors `RelationInjectionPolicy` + comparison gating), DOC86 (safe blocked notice).

---

## §5. Source + Evidence (E4 — declare + validate)

**Source:** Owner Map lines 52–61 (placement + the envelope's field charter: "source ref, kind, authority, visibility, parse quality, injection risk, materialization"); ABC §4.1–§4.4 (semantics), §7.4 (route context), §7.10–§7.12 (grounding/parse/formatting), §11.6 (injection-risk vocabulary); **PCA Lock C/D + Finding 2 (binding)**; DOC73 §8.2 (span shape); DOC25 V2.0 (artifact/segment/dedupe — consumed); E0 §8.2 (edge temporal snapshot). **Owner:** DOC82 for every schema here (the *interface*); DOC25 owns artifacts/segments/sidecars/materialization; DOC72 stores evidence graph payload; EC writes.

### §5.1 `SourceEnvelope` — the one source-bound-discipline gateway (PCA Lock C/D)

```typescript
/** THE source interface. schema_owner = DOC82 (Owner Map line 52; ABC §1.3 family 2). DOC83 consumes
 *  (extraction); DOC84/DOC86 consume (delivery/inspection); DOC25 supplies the artifact side.
 *  LOCK C/D (binding, PCA 2026-06-08): library-agnostic + multi-membership-safe — ONE content-deduped
 *  source identity, MANY memberships. The envelope therefore carries NO library/treatment field:
 *  memberships are DOC87 edges pointing at source_ref; treatment statuses live at DOC87/DOC26/DOC81. */
interface SourceEnvelope extends E0DurableRecord {
  envelope_id: SourceEnvelopeRef;
  schema_owner: 'DOC82';
  source_ref: SourceRef;                      // the content-deduped single source identity (Lock C/D)
  content_hash: ContentHash;                  // dedupe anchor — same content ⇒ same source_ref (DOC25 §13 cross-surface dedupe executes; policy-zone split per DOC25 Q2 is honored: a different policy zone is a different source INSTANCE, referenced via source_instance_refs)
  source_instance_refs?: string[];            // DOC25 source_instance_ids when policy zones split instances (DOC25 V2.0 Q2; provenance only)
  source_kind: { owner_doc: 'DOC25'; registry_id: string; value_id: string; registry_version: SchemaVersionRef };  // ExternalVocabularyValueRef form (DOC81 §0) into the DOC25-owned artifact/surface-kind vocabulary (DOC25 V2.0 scope seed: corpus/email/browser/chat/demonstration/task_output/autonomous/direct_upload — §13.2 seed)
  source_artifact_ref?: SourceArtifactRef;    // DOC25 (OBL-D25-O-SOURCEARTIFACT-01); optional — docket-text observations exist without an artifact (V3-AT-18, §10.4)
  // ---- authority ----
  authority_scope_ref: SourceAuthorityScopeRef;        // §5.3
  source_authority_class: SourceAuthorityClass;        // §5.3 (denormalized for hot-path bounding)
  // ---- visibility ----
  visibility_class: VisibilityClassRef;       // §13 flag 5 — PropA-vs-DOC82 vocabulary owner; carried as versioned external ref, never a loose string
  // ---- parse quality ----
  parse_quality_sidecar_ref?: SourceParseQualitySidecarRef;   // DOC25 (SM-207; ADQ-303 thresholds at DOC25/DAMS); §5.7 consumption
  // ---- injection risk ----
  prompt_injection_risk: 'none' | 'low' | 'medium' | 'high' | 'unresolved';   // ABC §11.6 verbatim vocabulary
  injection_isolation_ref?: string;           // DOC25 isolation wrapper receipt (OBL-D25-PROMPTINJ-01)
  // ---- materialization ----
  materialization_state_ref?: MaterializationStateRef;  // DOC25 (ADQ-401 — file-materialization stays DOC25)
  // ---- corpus/ingestion provenance (provenance ONLY — never membership, authority, or identity; Finding 2) ----
  origin_corpus_refs?: CorpusOrSourceCollectionRef[];    // DOC25 CorpusIndex/SourceCollection ids
  library_source_binding_refs?: LibrarySourceBindingRef[]; // DOC25 bindings (consumed via §6.2 contract)
  // ---- source-version semantics (generic hook; legal-profile instantiation at §10.5) ----
  source_version_ref?: string;                // this envelope's version id within a version family
  supersedes_envelope_ref?: SourceEnvelopeRef;
  revocation_state: 'not_revoked' | 'revoked' | 'integrity_failed';   // §8 payload drives transitions; DOC81 §5.1 trigger_reason vocabulary governs causes
}
```

**Lock C/D rules (binding).** (1) **One identity:** the same content reaching the system through any surface resolves to one `source_ref` (content-deduped; DOC25 executes dedupe; route is provenance — ABC §1.2). (2) **Library-agnostic:** no field on the envelope names a Library, a treatment status, or a membership — those are DOC87 edges / DOC87-DOC26-DOC81 statuses. (3) **Multi-membership-safe:** N libraries may hold membership edges to one `source_ref` with different treatments; the envelope is unchanged by membership churn. (4) **Provenance ≠ authority:** `origin_corpus_refs` and binding refs explain *where it came from*; they confer no authority (membership confers no source authority — Skeletal §10.4).

**Unhappy paths.** *Envelope carries a library/treatment field* → `source.envelope_carries_library_or_treatment_state` [proposed — Lock C/D]. *Two envelopes for one content identity (un-deduped)* → `source.duplicate_envelope_for_content_identity` [proposed]. *Injection-risk `high`/`unresolved` content rendered outside a source sandbox* → ABC §11.6 rule; enforcement at DOC84/DOC24 render (`source.adversarial_text_rendered_unsandboxed` [proposed]; execution seam noted at §12). *Envelope minted without authority scope* → `source.envelope_missing_authority_scope` [proposed].

**Lints (Stage 9):** the four above + `source.doc82_redefined_corpus_container` [canonical — Input Deck / PCA] (fires if DOC82 ever declares a Library/Corpus/CorpusIndex/SourceCollection/LibrarySourceBinding schema).

**Fixtures (Stage 8):** `fixture.source.one_content_identity_many_memberships` (Lock C/D: one envelope; Learned-in-A + Indexed-in-B memberships at DOC87; envelope unchanged); `fixture.source.policy_zone_split_preserved` (DOC25 Q2 — firewalled vs ambient instances don't collapse); `fixture.source.unresolved_injection_risk_sandboxed`.

### §5.2 The pointer types: `SourceRegionRef` / `SourceSegmentRef` + `VisualGroundingState`

```typescript
/** ABC §4.3 verbatim — region-level grounding pointer INTO a DOC25 artifact. schema_owner = DOC82
 *  (Owner Map line 55); DOC25 generates refs; DOC82 consumes. */
interface SourceRegionRef {
  source_id: SourceRef;
  page_index?: number;
  bbox_normalized_1000?: [number, number, number, number];
  element_label?: 'text' | 'table' | 'picture' | 'page_header' | 'page_footer' | 'caption'
    | 'footnote' | 'formula' | 'section_header' | 'title';
  region_hash?: ContentHash;
  schema_version: 1;
}

/** Span/segment pointer into a DOC25 ArtifactSegment — the normalization target for DOC73's
 *  source_spans {document_ref, span_start, span_end, span_hash} (DOC73 §8.2; PCA Finding 1 mapping row).
 *  schema_owner = DOC82 (Owner Map line 55). ABC's loose `SourceSpanRef` resolves to THIS type. */
interface SourceSegmentRef {
  source_ref: SourceRef;
  source_artifact_ref?: SourceArtifactRef;    // DOC25 artifact (absent for artifact-less observations, V3-AT-18)
  artifact_segment_ref?: ArtifactSegmentRef;  // DOC25 segment id
  span_start?: number;                        // DOC73 §8.2 span fields
  span_end?: number;
  span_hash?: ContentHash;                    // tamper-evidence + dedupe basis 'source_span_duplicate'
  schema_version: 1;
}

/** ABC §4.3 verbatim (Owner Map line 61 — DOC82 owns; DOC25 generates). NO separate
 *  GroundedEvidenceSupportEdge exists — EvidenceSupportEdge is extended instead (ABC §4.3). */
type VisualGroundingState = 'localized_classified_attributed' | 'localized_only'
  | 'attribution_uncertain' | 'ungrounded_text_only' | 'grounding_not_available';
```

**Lint:** `source.span_ref_without_hash_on_dedupe_basis` [proposed] (a `source_span_duplicate` dedupe claim requires `span_hash`). **Fixture:** `fixture.source.doc73_spans_map_to_segment_refs` (PCA Finding 1 mapping row exercised).

### §5.3 `SourceAuthorityScope` + `SourceAuthorityClass`

```typescript
/** ABC §4.1 verbatim. schema_owner = DOC82 (Owner Map line 59); DOC25 + EC + PropA consume. */
interface SourceAuthorityScope extends E0DurableRecord {
  scope_id: SourceAuthorityScopeRef;
  schema_owner: 'DOC82';
  source_ref: SourceRef;
  authority_class: SourceAuthorityClass;
  authoritative_for: Array<'user_preference' | 'user_instruction' | 'observed_system_event'
    | 'source_self_description' | 'party_position' | 'legal_authority' | 'domain_authority'
    | 'task_execution_record' | 'model_generated_text' | 'unknown'>;
  not_authoritative_for?: string[];
}

/** ABC §4.1 verbatim — 8 classes. */
type SourceAuthorityClass = 'user_direct' | 'primary_source' | 'secondary_source' | 'model_generated'
  | 'system_observed' | 'party_argument' | 'task_output' | 'unknown';
```

**Rule (ABC §4.1, verbatim):** a source is authoritative **only** for the scope declared by `SourceAuthorityScope`. A party brief is primary evidence of *what the party argued*, not primary authority for the legal rule asserted. (`principal_authored` content is `user_direct` class, authoritative_for `user_instruction`/`party_position`-analogous uses — never `legal_authority`; Lock A.)

**Lints:** `source.authority_exceeded_declared_scope` [proposed]; `source.party_argument_used_as_rule_authority` [proposed — the ABC §4.1 brief rule]. **Fixture:** `fixture.source.party_brief_grounds_position_not_rule`.

### §5.4 `EvidenceRecord`

```typescript
/** ABC §4.2 verbatim (refs branded). schema_owner = DOC82 (Owner Map line 57; SM-200); DOC72 stores;
 *  EC writes. Evidence is NOT truth-apt (E0 §6.2 row). */
interface EvidenceRecord extends E0DurableRecord {
  evidence_id: EvidenceRecordRef;
  schema_owner: 'DOC82';
  source_envelope_ref: SourceEnvelopeRef;
  source_segment_refs: SourceSegmentRef[];            // ABC's source_span_refs → §5.2 type
  observed_content_summary: string;
  evidence_kind: 'quoted_text' | 'summarized_source_content' | 'system_observation'
    | 'task_output_record' | 'user_direct_statement' | 'citation_or_authority' | 'metadata_observation';
  evidence_for_ref?: AssertionRef | AssertionCandidateRef | string;   // IssueFrameQuestionRef (DOC83-owned; referenced)
  support_polarity?: 'supporting' | 'contrary' | 'mixed';
  prompt_injection_risk?: 'none' | 'low' | 'medium' | 'high' | 'unresolved';   // ABC §11.6 vocabulary (per-record override of the envelope's)
  extraction_quality_band?: 'high' | 'medium' | 'low' | 'unacceptable';        // ABC §7.11 score_band vocabulary (ExtractionQuality is referenced-only in ABC; the band is the cited value set)
}
```

### §5.5 `EvidenceSupportEdge` (support_relation — ABC §4.2)

```typescript
/** THE support edge. ABC §4.2 verbatim + the E0 §8.2 bitemporal source-span snapshot. schema_owner =
 *  DOC82 (Owner Map line 58; SM-200 — contrary edges MANDATORY, E0 §6.2); DOC72 stores; EC writes. */
interface EvidenceSupportEdge extends E0DurableRecord {
  edge_id: EvidenceSupportEdgeRef;
  schema_owner: 'DOC82';
  evidence_ref: EvidenceRecordRef | SourceSegmentRef | ConsolidatedUnderstandingRef;  // CU allowed ONLY under §7.2 R-CU-1 (underlying spans exist)
  assertion_variant_ref: AssertionVariantRef;
  support_relation: 'supports' | 'contradicts' | 'qualifies' | 'reports' | 'mentions_only';   // ABC §4.2 — 5 values
  support_role: 'primary_authority' | 'secondary_authority' | 'party_argument' | 'user_direct'
    | 'system_observed' | 'model_generated' | 'task_output' | 'unknown';
  support_polarity?: 'supporting' | 'contrary' | 'mixed';
  authority_scope_ref?: SourceAuthorityScopeRef;
  confidence_contribution?: number;
  requires_review: boolean;
  source_region_refs?: SourceRegionRef[];             // ABC §4.3 — extend the edge, no separate grounded-edge type
  visual_grounding_state?: VisualGroundingState;
  parse_quality_sidecar_ref?: SourceParseQualitySidecarRef;
  edge_status: 'active' | 'invalidated' | 'verify_required';   // §8 — the DOC82 plane outcome vocabulary (E0 §12.1 / DOC81 §5.1)
  // ---- bitemporal source-span snapshot (E0 §8.2: "EvidenceSupportEdge carries the valid_time /
  //      transaction_time of the underlying source-span snapshot") ----
  span_snapshot_valid_time_start: string; span_snapshot_valid_time_end?: string;
  span_snapshot_transaction_time: string;
}
```

**Edge rules.** (1) **Span-resolvable:** every supporting/contradicting edge must resolve to spans/regions or a span-backed evidence record — the not-evidence guardrail (§11.2) blocks orientation objects. (2) **Contrary edges are mandatory carriage** (E0 §6.2 SM-200 note): a contradicting edge is never dropped, merged away (ABC §3.5 `accumulate_all`), or filtered before warrant evaluation. (3) **Status is cascade-driven:** `invalidated`/`verify_required` transitions come from §8 (E0 §12.1 required outcome), never ad hoc. (4) A CU `evidence_ref` is lawful only via §7.2 (R-CU-1/R-CU-3).

**Unhappy paths.** *Edge to a revoked source still `active`* → `revocation.support_edge_survives_revoked_source` [canonical — E0 §12.1]. *Snapshot fields absent* → `bitemporal.evidence_edge_missing_source_span_temporal_snapshot` [canonical — Skeletal §11.8]. *Contrary edge suppressed pre-evaluation* → `assertion.contrary_edges_not_accumulated` [proposed]. *mentions_only edge counted as support* → `evidence.mentions_only_counted_as_support` [proposed].

**Lints (Stage 9):** the four above. **Fixtures (Stage 8):** `fixture.evidence.contrary_edge_survives_merge_and_drives_contested`; `fixture.evidence.edge_snapshot_supports_as_of_queries`; `fixture.evidence.mentions_only_never_supports_warrant`.

### §5.6 `ExtractionRouteContext` (route is provenance, not identity)

```typescript
/** ABC §7.4 verbatim (refs branded). schema_owner = DOC82 (Owner Map line 60; SM-201); DOC83 + DOC25
 *  consume; instances flow DOC83→downstream at runtime. Route may drive significance config,
 *  adversarial-source clamps, permitted outputs, policy clamps, memberships, review requirements,
 *  learning tags — route MUST NOT drive canonical identity (ABC §1.2/§7.4). */
interface ExtractionRouteContext extends E0DurableRecord {
  route_context_id: ExtractionRouteContextRef;
  schema_owner: 'DOC82';
  route: 'library_ingestion' | 'corpus_deep_extraction' | 'topic_collection' | 'chat_capture'
    | 'room_capture' | 'project_mode_capture' | 'task_output_extraction' | 'browser_capture'
    | 'note_capture' | 'email_capture' | 'calendar_capture' | 'manual_user_add' | 'nightly_backfill'
    | 'cu_derived' | 'external_llm_carryover';        // ABC §7.4 — 15 routes verbatim
  surface_ref?: string;                                // SurfaceRef (DOC81 §0 brand; referenced)
  initiating_principal: 'user' | 'system' | 'scheduled_task' | 'extraction_agent';
  triggering_directive_ref?: string;                   // TopicCollectionDirectiveRef (DOC83-owned; referenced)
  work_session_ref?: string; work_episode_ref?: string; // DOC83-owned; referenced
  collection_mode: 'do_not_collect' | 'observe_only' | 'extract_candidate'
    | 'extract_durable_eligible' | 'deep_extract';     // ABC §7.4 (DOC81 §7.1 suppression governance gates upstream)
  permitted_output_kinds: string[];                    // ExtractionOutputKind values (DOC83-owned vocabulary; referenced)
  policy_decision_ref: string;                         // MemoryPolicyDecisionRef (DOC81 §3.1; referenced)
  policy_generation_id: PolicyGenerationId;
  corpus_scope_refs?: CorpusOrSourceCollectionRef[];   // PCA Finding 2: "corpus-scope extraction is carried as route metadata … not a new DOC82 container"
  reason_codes: ReasonCodeId[];
}
```

**Lints:** `route.context_drove_canonical_identity` [proposed — ABC §1.2/§7.4 rule: same statement via different routes must produce the same identity signature]; `route.corpus_scope_modeled_as_container` [proposed — Finding 2]. **Fixture:** `fixture.route.same_statement_two_routes_one_assertion` (ABC §1.2 route-independence end-to-end).

### §5.7 Parse-quality consumption (bounds candidate eligibility — ADQ-303 posture)

DOC25 owns `SourceParseQualitySidecar` (SM-207) and the **numeric thresholds** (ADQ-303 — domain-profile-specific; owner DAMS/DOC25; thresholds are **not** set here). DOC82 consumes the sidecar's `downstream_bounds` (ABC §7.11): `max_grounding_state`, `may_support_assertion_candidate`, `may_support_evidence_record`, `may_support_cu`, `requires_review`. **Binding rules (ABC §7.11, verbatim):** a document-derived candidate cannot claim `span_backed` or active support unless parse quality suffices; content-faithfulness failed/unknown/unacceptable caps downstream candidates at review-required or evidence/CU-only; table-derived candidates require verified headers/cell relations; chart-derived numeric claims require verified data points; strikethrough/deletion markup is never current operative text (ABC §7.12 `SemanticFormattingSignal` — DOC25/DOC83 consume; DOC82 §5.7 enforces the support cap).

**Lints (Stage 9):** `source.parse_capped_candidate_claimed_span_backed` [proposed]; `evidence.support_edge_exceeds_parse_quality_bounds` [proposed]; `source.struck_text_supported_assertion` [proposed — ABC §7.12]. **Fixtures (Stage 8):** `fixture.source.failed_faithfulness_caps_candidate`; `fixture.source.struck_text_cannot_support`.

### §5.8 The static supportability posture (ABC §4.4)

The ABC §4.4 supportability table is consumed as the **static-by-object-kind** rule set (a static table, not a per-object enum — ABC §1.4). DOC82-plane rows (verbatim): Assertion/AssertionVariant = `can_ground_truth` (factual yes; evidence only with support edges; must respect warrant); EvidenceRecord = `can_ground_source_specific_truth` (source-specific only; evidence yes, requires source role); ConsolidatedUnderstanding = `can_ground_source_specific_truth` (evidence **only if source spans survive**; no general truth — ADQ-219). Non-DOC82 rows (Library/Corpus/RecentActivityRollup/IssueFrame/TopicLens etc. = `can_orient_only`; proof artifacts/DAMS output/utility ledgers = `cannot_ground_truth`) are honored via the §11.2 not-evidence guardrail. `WarrantEvaluationResult.can_satisfy_evidence_query` (§3.3) implements this table.

---

## §6. The corpus-hierarchy interface (ADQ-202 — RESOLVED; drafted FROM PCA Finding 2 + Locks C/D)

**Source:** ADQ-202 (resolved Stage 4; hierarchy executed at PCA Finding 2 — **this section drafts FROM it**); ADQ-PASS2-02 (DOC87 owns the corpus↔library identity mapping); ABC §6.5 (Library/Corpus not synonymous; dedupe through canonical keys); Owner Map lines 63–65 + DOC87 §2.4 (containers elsewhere); Skeletal §11.13 (decomposition was gated on ADQ-202 — now resolved); ADQ-401/402 (DOC25 completion obligations). **Owner:** DOC82 owns the **interface** (envelope + pointers + consumption contracts) and **NO container schema**.

### §6.1 The 5-layer hierarchy (PCA Finding 2 — the ADQ-202 landing)

| layer | what it is | owner | DOC82's relationship |
|---|---|---|---|
| **Library** | user-visible organizational container (curated set + treatment + access policy) | **DOC87** (container + corpus↔library identity mapping, ADQ-PASS2-02/ADQ-220); DOC26/DOC81 (treatment/access policy) | consumes the identity term as upstream vocabulary; never owns; never names it on the envelope (Lock C/D) |
| **Corpus / SourceCollection / CorpusIndex** | internal ingestion/aggregation behind Libraries — provider profiles, dedupe, corpus-scope | **DOC25** (storage; ADQ-202: internal, NOT a user-facing parallel Library) | consumes corpus provenance via `ExtractionRouteContext.corpus_scope_refs` (§5.6) + envelope provenance refs (§5.1); never owns the container |
| **Source** | one content-deduped source | **DOC25** `SourceArtifact` (the artifact) / **DOC82** `SourceEnvelope` (the discipline interface) | **owns `SourceEnvelope`** (§5.1) — the single gateway |
| **Artifact / Segment** | parsed document + segmentation | **DOC25** (`SourceArtifact`/`ArtifactSegment`/`SourceParseQualitySidecar`) | **owns the pointer types** `SourceRegionRef`/`SourceSegmentRef` (§5.2) + consumes parse-quality bounds (§5.7) |

**The library≠corpus separation (architect-confirmed, PCA "Also confirmed"):** the **user-facing Library** (DOC87/DOC26/DOC81) and the **ingestion Corpus** (DOC25) are DISTINCT objects with distinct owners; neither is renamed into the other; a `LibrarySourceSlice` and a corpus-level view dedupe through canonical source/span/assertion keys before rendering (ABC §6.5 temporary rule — now permanent under this interface).

### §6.2 `LibrarySourceBindingConsumptionContract`

```typescript
/** DOC82's consumption side of DOC25's LibrarySourceBinding (Owner Map line 64 — distinct row from the
 *  DOC25-owned binding schema, line 63; B2 step 6 decomposition). Source-bound discipline flows through
 *  SourceEnvelope; the binding never becomes a truth or authority object. */
interface LibrarySourceBindingConsumptionContract extends E0DurableRecord {
  contract_id: LibrarySourceBindingConsumptionContractRef;
  schema_owner: 'DOC82';
  binding_ref: LibrarySourceBindingRef;        // DOC25-owned
  source_ref: SourceRef;                        // resolves to the §5.1 envelope (one identity)
  consumption_rules: {
    binding_confers_authority: false;           // membership/binding ≠ authority (Skeletal §10.4)
    binding_confers_truth: false;
    envelope_is_sole_source_gateway: true;      // no extraction/evidence path reads a binding directly
  };
  reason_codes: ReasonCodeId[];
}
```

**Cross-doc completion obligations (recorded, owned elsewhere):** **ADQ-402** — DOC73 corpus-source-bindings, `minimum_completion_for_v5 = schema_plus_lints_and_fixtures`, **depends on ADQ-202 (now resolved — unblocked)**; **ADQ-401** — DOC25 file-materialization + provider profiles, `schema_plus_owner_boundary`. Both are DOC25/DOC73-side completions; DOC82 records the dependency direction only. **DR-002** (LibrarySourceBinding/CorpusIndex/SourceCollection Supersession-Matrix rows) stays a logged matrix gap (Import Graph §5.1 footnote) — rows ride the next matrix update; §14.7 carries the discharge pointer.

### §6.3 The no-container rule + lint

DOC82 declares **zero** container schemas. Any DOC82-side declaration of `Library`, `Corpus`, `CorpusIndex`, `SourceCollection`, or `LibrarySourceBinding` fires `source.doc82_redefined_corpus_container` [canonical — Input Deck/PCA]. "Corpus-scope extraction" is route metadata (§5.6), never a DOC82 container. The Skeletal §11.13 gate (`library.decomposition_fragmented_before_adq_202_resolution`) is **discharged by this section** — ADQ-202 is resolved at this charter; the four owners (DOC87 container / DOC25 bindings / DOC82 interface / DOC86-DOC20 UI) may now draft their portions against §6.1.

### §6.4 The Indexed = source-memory posture (PCA Lock C — the consumption stance)

**Lock C (architect-confirmed, 2026-06-08):** **Linked** = accessible on demand (not yet memory) < **Indexed** = the source IS durably in memory — a durable `SourceEnvelope` (DOC82) + DOC25 document intelligence; retrievable, citable, version-comparable; **NO Assertions/CUs mined from it** < **Learned** = Indexed PLUS DOC83 extraction has run → Assertions/CUs in the knowledge graph.

DOC82's posture rules: (1) **"Source in memory" (Indexed or Learned) is DISTINCT from "knowledge mined from it" (Learned only)** — an Indexed source supports retrieval/citation of *the source itself* (source-specific queries via EvidenceRecord paths) but grounds **no** reusable Assertion until extraction runs. (2) Source durability begins at **Indexed** (the envelope is durable); assertion durability begins at **Learned** (the §2 pipeline). (3) The treatment statuses themselves (and their names) are **DOC87/DOC26/DOC81-owned** — DOC82 consumes the posture, never the status vocabulary. (4) ABC §6.6's naming caution ("avoid 'Learned' — implies Library-owned truth") is **discharged by Lock D**: treatment gates *extraction*, the resulting Assertions carry scope+membership inherited from the origin-stamp, and the library confers no truth (Skeletal §10.4) — the architect's later lock (2026-06-08) governs the vocabulary; the concern ABC encoded is enforced structurally rather than by avoiding the word.

**Lints (Stage 9):** `source.indexed_source_grounded_assertion_without_extraction` [proposed — Lock C]; `source.linked_source_treated_as_in_memory` [proposed]. **Fixtures (Stage 8):** `fixture.source.indexed_retrievable_citable_not_mined`; `fixture.source.learned_requires_extraction_run`.

**Cross-charter (§6 roll-up).** DOC87 (Library container + identity mapping + membership edges), DOC25 (corpus storage + bindings + ADQ-401/402 completions), DOC26/DOC81 (treatment/access policy), DOC83 (extraction gate reads treatment at extraction time — Lock D), DOC24 (consumes the corpus↔library mapping at search/onboarding; does not own — ADQ-PASS2-02).

---

## §7. CU consumption (ADQ-219 — RESOLVED = DIRECT CONSUME; drafted FROM PCA Finding 1)

**Source:** ADQ-219 (resolved conditional rule, Stage 4); **PCA Finding 1 (the executed reconciliation — DIRECT CONSUME; adapter dormant→documented-not-built per Lock B)**; ABC §4.5 (the support contract — DOC73-owned per Owner Map line 40); DOC73 Artifact 1 §8.2 + Artifact 3 §9.2 (CU schema; INV-MVC-CU-1); OPA-035 (convergence obligation — **recorded as "convergence found, no adapter activation"**); OBL-D73-N-NOT-EVIDENCE-INV-01 (§10.3). **Owner:** DOC73 owns CU semantics + the `ConsolidatedUnderstandingSupportContract`; **DOC82 owns only this thin consumption binding.**

### §7.1 The reconciliation result (recorded, not re-opened)

PCA Finding 1: DOC73's CU **matches** the source-bound-synthesis contract on both load-bearing axes — (1) source-span backing required (DOC73 INV-MVC-CU-1 non-empty `source_spans` ≡ ABC §4.5 `source_span_refs[]`); (2) never canonical reusable truth (DOC73's span-less fallback is framed "system synthesis; NOT cited as authority for legal work-product" ≡ ABC §4.5's "CU text alone may not support a reusable Assertion"). DOC73's extra richness (compositional reasoning, typed-input roles, aggregated authority, nesting) lives on DOC73's side; DOC82 consumes only the thin contract. **No divergence ⇒ direct consume; OPA-035 NOT triggered** — recorded as *"reconciliation found convergence — no adapter activation."*

### §7.2 The consumption binding (the thin schema) + the three guardrails

```typescript
/** DOC82's binding of the DOC73-owned ConsolidatedUnderstandingSupportContract (ABC §4.5; Owner Map
 *  line 40 — DOC73 owns the contract; DOC82 consumes). One row per CU consumed into the truth plane.
 *  PCA Finding 1 mapping table, formalized. */
interface CuConsumptionBinding extends E0DurableRecord {
  binding_id: CuConsumptionBindingRef;
  schema_owner: 'DOC82';
  cu_ref: ConsolidatedUnderstandingRef;        // reference only — DOC82 NEVER mutates a CU
  display_kind_at_binding: 'synthesis_with_spans' | 'synthesis_summary_no_spans';  // DOC73 §8.2 verbatim enum
  source_segment_refs: SourceSegmentRef[];      // DOC73 source_spans[] mapped per §5.2 (PCA row 2)
  synthesis_quality_band: 'high' | 'medium' | 'low' | 'unacceptable';  // derived from display_kind + extraction state (PCA row 3); feeds §5.7-style eligibility bounding
  can_support_assertion_directly: boolean;      // FORCED false whenever display_kind = synthesis_summary_no_spans (PCA row 4 — no spans ⇒ no support edge, EVER)
  support_conditions?: string[];                // ABC §4.5 passthrough
  cu_supersession_lineage_ref?: VersionedClaimRef;  // DOC73 supersedes-lineage hook (ADQ-223 consumption; §9.1)
}
```

**The three guardrails (PCA Finding 1 — binding; each is a §11 invariant with the full triple):**

- **R-CU-1 (no-spans ⇒ no support):** a `synthesis_summary_no_spans` CU can NEVER back an `EvidenceSupportEdge` or support an Assertion — the legal-work-product safety rule. Lint `cu.no_spans_supported_assertion` [canonical — PCA]. *(Lock A boundary: a principal-authored statement is NOT a span-less CU — the statement IS the span, §3.5; R-CU-1 does not bar it.)*
- **R-CU-2 (CU authority ≠ DOC82 warrant):** DOC73's internal `cu_authority` (aggregation score) is NOT inherited as `EffectiveWarrant`. A CU-derived candidate runs the canonical pipeline on its **source spans**, not DOC73's score. Lint `cu.authority_used_as_warrant` [canonical — PCA].
- **R-CU-3 (CU is synthesis, not evidence):** consuming a CU MUST NOT auto-create an `EvidenceSupportEdge` — the *spans* (via EvidenceRecord) are the evidence, not the CU (ties OBL-D73-N-NOT-EVIDENCE-INV-01, §10.3/§11.2). Lint `cu.consumption_auto_created_support_edge` [proposed].

**Grounding tie-in (ABC §7.10):** a CU-derived candidate is `cu_backed_with_underlying_spans` (eligible) or `cu_backed_without_spans` (**cannot promote to active**, §2.8 T3) — the §7.10 rule and R-CU-1 are the same gate seen from two planes.

**Unhappy paths.** *Span-less CU offered as edge `evidence_ref`* → blocked + `cu.no_spans_supported_assertion`. *cu_authority copied into warrant inputs* → `cu.authority_used_as_warrant`. *CU mutation attempted from DOC82* → `cu.mutated_by_consumer` [proposed]. *Stale CU (DOC73 `supporting_CU_stale` trigger, E0 §2.4)* → staleness propagates to dependent variants (§3.4); never silent.

**Fixtures (Stage 8):** `fixture.cu.no_spans_cannot_support` (R-CU-1); `fixture.cu.authority_not_inherited_as_warrant` (R-CU-2); `fixture.cu.consumption_never_auto_creates_edge` (R-CU-3); `fixture.cu.spanned_cu_supports_via_segment_refs` (the happy path: CU → spans → EvidenceRecord → edge → variant).

### §7.3 Cluster-detection read-model consumption (ADQ-PASS2-01)

`PBEClusterDetectionResult` is **DOC73-owned** (DOC72 stores; EC writes — ADQ-PASS2-01). DOC82 consumes a **minimum read-model projection** (`ClusterDetectionReadModelRef`) as equivalence **hints** into `EquivalenceTest.signals` (§2.3) — hints may propose `semantic_equivalence`; they never approve a merge (ABC §3.3 rule) and never carry warrant. Lint `cu.cluster_hint_auto_merged` [proposed].

### §7.4 The adapter escape hatch (PCA Lock B — DOCUMENTED, NOT BUILT)

> **Escape hatch (one paragraph — the whole of it):** if a future DOC73 revision diverges from the ABC §4.5 source-bound-synthesis contract on either load-bearing axis (span backing; never-reusable-truth), the sanctioned fix is the `SourceBoundSynthesisAdapter` — a wrapper + explicit CU→DOC82 mapping table, classified as a `KnowledgeProjection` wrapper case (E0 §3.6; Owner Map line 39) — raised via a **new ADQ**, with OPA-035's convergence obligation attaching on activation (DOC73 converges OR the architect blesses permanent divergence; a permanent unblessed wrapper is a `code_smell` per ADQ-219 clause 7). Per **Lock B**, this charter carries **no adapter schema body** — the Owner Map line-39 row stays a placeholder pointer, and no dead contract is maintained.

Lint `adapter.silent_ossification_without_convergence_obligation` [canonical — Skeletal §11.7] guards the activation path; `adapter.schema_body_drafted_while_dormant` [proposed] guards Lock B itself.

**Cross-charter (§7 roll-up).** DOC73 (CU semantics + supersession lineage + cluster read-models + `supporting_CU_stale` trigger), DOC83 (`cu_derived` route + `cu_synthesis` origin), DOC84 (CU injection as source-bound synthesis product — `orientation_only` posture absent source-specific query, ABC §3.9/§4.4), OPA-035 (recorded discharge, §14.4).

---

## §8. Source-revocation source-side payload + polarity-aware warrant recompute

**Source:** Owner Map line 95 (the payload — split from DOC81's envelope, line 94 / SM-208 / B3); DOC81 §5.1–§5.3 (the envelope + run + `LastActiveSupportEdgeEvaluation` + the polarity boundary note — consumed); E0 §12.1 (`SourceRevocationCascade` invariant shape; UR-08/09 polarity; the DOC82 plane row); ADQ-304 (last-edge rule); Skeletal §11.9 (monotonicity). **Owner:** DOC82 owns the **source-side payload** + the **warrant recompute (incl. polarity)** + the **re-proof path**; DOC81 owns the envelope; EC executes.

### §8.1 `SourceInvalidationPayload` (resolves DOC81 §5.1 `source_side_payload_ref`)

```typescript
/** The DOC82-owned source-side payload of a CascadingSourceInvalidation (Owner Map line 95).
 *  Names the truth-plane affected set; DOC81's envelope + run orchestrate; EC executes. */
interface SourceInvalidationPayload extends E0DurableRecord {
  payload_id: SourceInvalidationPayloadRef;
  schema_owner: 'DOC82';
  invalidation_ref: string;                       // DOC81 §5.1 CascadingSourceInvalidationRef (envelope)
  source_ref: SourceRef;                          // the revoked identity (§5.1)
  revocation_scope: 'whole_source' | 'segment_subset' | 'version_subset';   // a partial revocation names its subset
  affected_envelope_refs: SourceEnvelopeRef[];
  affected_segment_refs: SourceSegmentRef[];      // when segment-scoped
  affected_evidence_record_refs: EvidenceRecordRef[];
  affected_support_edge_refs: EvidenceSupportEdgeRef[];   // the DOC82 rows of the affected-set manifest (E0 §12.1 R3 §(b)#5)
  affected_variant_refs: AssertionVariantRef[];           // variants whose support set intersects
  required_edge_outcome: 'invalidated' | 'verify_required';  // E0 §12.1 / DOC81 §5.1 doc82_support_edges vocabulary
  recompute_trace_refs: WarrantRecomputeTraceRef[];        // §8.2 — one per affected variant
  ec_receipt_refs: string[];                       // ECReceiptRef (E0 §12.1)
  reason_codes: ReasonCodeId[];                    // DOC82-namespace revocation codes (UR-37 — source-revocation reason codes route to DOC82)
}
```

### §8.2 `WarrantRecomputeTrace` — the polarity-aware recompute (the DOC82 side of DOC81 §5.3)

```typescript
/** The mandatory trace for ANY net-warrant change driven by source removal (E0 §12.1 UR-09;
 *  DOC81 §5.1 polarity_recompute_trace_ref resolves HERE). schema_owner = DOC82; EC executes. */
interface WarrantRecomputeTrace extends E0DurableRecord {
  trace_id: WarrantRecomputeTraceRef;
  schema_owner: 'DOC82';
  variant_ref: AssertionVariantRef;
  triggering_payload_ref: SourceInvalidationPayloadRef;
  removed_edge_refs: EvidenceSupportEdgeRef[];
  removed_edge_polarity: 'supporting' | 'contrary' | 'mixed';
  surviving_support_summary: { supporting: number; contrary: number; indeterminate: number };  // from DOC81 §5.1 LastActiveSupportEdgeEvaluation tri-state inputs
  last_active_support_edge_evaluation_ref: string;   // DOC81 §5.1 LastActiveSupportEdgeEvaluationRef — the denominator proof
  prior_effective_warrant: UseWarrant;
  recomputed_effective_warrant: UseWarrant;
  net_warrant_direction: 'lowered' | 'held' | 'raised';
  raise_justification?: 'contrary_source_removed_from_contradicted_assertion';   // the ONLY lawful raise cause (UR-09 polarity; supported-only scoping)
  lifecycle_consequence: 'none' | 'contested_cleared' | 'retired' | 'audit_only' | 'degraded_only';  // §2.8 T6/T8; ADQ-304
  policy_generation_id: PolicyGenerationId;
  reason_codes: ReasonCodeId[];
}
```

**The recompute rules (binding):**

1. **Supporting-source removal LOWERS** (or holds, when redundant support survives): partial loss → warrant degradation only; **total loss** (DOC81 §5.1 `last_active_support_edge_lost = 'lost'` — every remaining edge provably inactive) → the variant retires or becomes `audit_only` (ADQ-304; §2.8 T8). `indeterminate_fail_closed` → retained-but-degraded, never silent total loss (DOC81 §5.1).
2. **Contrary-source removal MAY RAISE net warrant** — only on a **contradicted** assertion (the supported-only scoping, E0 §12.1/DOC81 §5.3), only via this trace (`net_warrant_direction: 'raised'` requires `raise_justification`), and only as a **DOC82 warrant recompute** — never a DOC81 policy widening (the meet is never widened by a revocation; `PolicyStampRestamp` remains the only policy-widening path).
3. **Re-proof is the only post-revocation eligibility-raising path** for supported content: a fresh `EvidenceSupportEdge` to a non-revoked source (§2.8 T9; Skeletal §11.9). Trigger *emission* (E0 §2.4) never raises; the recompute may, under rule 2 only.
4. **Cascade ordering is DOC81/EC's** (freeze → 5 planes; idempotent monotone-down set-to-floor): DOC82's payload executes within the `doc82_support_edges` plane slot; DOC82 never reorders the cascade.

**Unhappy paths.** *Net warrant changed with no trace* → `revocation.net_warrant_changed_without_recompute_trace` [canonical — E0 §12.1]. *Supporting removal not recomputed* → `revocation.supporting_source_removed_without_recompute` [canonical]. *Contrary removal not recomputed* → `revocation.contrary_source_removed_without_recompute` [canonical]. *Raise without justification / on a supported assertion* → `monotonicity.revocation_raised_eligibility` [canonical — polarity-aware tie, E0 §12.1]. *Edge survives revoked source* → `revocation.support_edge_survives_revoked_source` [canonical].

**Fixtures (Stage 8):** `fixture.revocation.lowers_until_reproof` (DOC81 §5.3 shared); `fixture.revocation.contrary_removal_raises_only_with_recompute_trace` (DOC81 §5.3 shared — the polarity case); `fixture.revocation.last_edge_lost_retires_partial_degrades` (ADQ-304; shared §2.8); `fixture.golden.revoked_source_invalidates_support_membership_delivery_learning_ui` (E0 §12.1 — the 5-plane golden case; DOC82 executes its plane); `fixture.revocation.indeterminate_edge_fails_to_degraded_not_total_loss` (DOC81 §5.1 shared).

**Cross-charter.** DOC81 (envelope/run/denominator-proof — consumed), EC (executes; receipts), DOC87/DOC84/DOC85/DOC86 (sibling planes of the same cascade), E0 §12.1 (invariant shape). The DOC82 reason-code namespace carries the revocation codes (UR-37).

---

## §9. Lineage + projection

### §9.1 The `VersionedClaim → AssertionVariant` lineage table (DR-003; Skeletal §10.8)

**Source:** DR-003 (closed at Stage 5R2 — VersionedClaim stays **DOC73-owned**; DOC82 defines the lineage table); Owner Map lines 41–42 (the charter-required field list, verbatim); Skeletal §10.8 (the two lints); ADQ-223 (DOC82 consumes DOC73's CU supersession lineage — the change-of-mind chain rides `VersionedClaim`/`supersedes`). **Owner:** DOC82 (the table); DOC73 supplies `VersionedClaim` refs.

```typescript
/** One row per legacy VersionedClaim mapped into the truth plane (Owner Map line 42 — the nine
 *  charter-named fields, verbatim). schema_owner = DOC82; DOC73 retains VersionedClaim. */
interface VersionedClaimLineageRow extends E0DurableRecord {
  row_id: VersionedClaimLineageRowRef;
  schema_owner: 'DOC82';
  versioned_claim_ref: VersionedClaimRef;            // DOC73-owned (DR-003)
  source_cu_ref?: ConsolidatedUnderstandingRef;      // DOC73-owned
  source_span_refs: SourceSegmentRef[];              // §5.2 normalization of the claim's spans
  assertion_variant_ref?: AssertionVariantRef;       // absent until migrated (lint below)
  lineage_kind: 'direct_migration' | 'split_into_variants' | 'merged_with_existing'
    | 'transformed_reformulated' | 'reference_only_not_migratable';     // §13.6 confirm-seed values
  preserved_fields: string[];
  lost_or_transformed_fields: string[];
  migration_status: 'pending' | 'migrated' | 'review_required' | 'declined_reference_only';  // §13.6 confirm-seed values
  review_required: boolean;
  supersession_chain_position?: { supersedes_ref?: VersionedClaimRef; superseded_by_ref?: VersionedClaimRef };  // the DOC73 supersedes lineage DOC82 consumes (ADQ-223 minimal-lock consumption — change-of-mind is ALREADY handled by this chain; DOC82 adds no second mechanism)
}
```

**Rules.** (1) The table is the **only** bridge from legacy `VersionedClaim` lineage into the Assertion family — no direct VersionedClaim→Assertion write path exists. (2) A migrated row's variant carries the claim's spans through §5.2 refs (support survives migration or the row is `review_required`). (3) The DOC73 supersession chain is **consumed, not duplicated**: a superseded claim migrating after its successor maps to a `superseded` variant (§2.8 T7), preserving the principal's change-of-mind history (ADQ-223). (4) The table is append-auditable; rows never delete (migration corrections add rows).

**Lints (Stage 9):** `versioned_claim.unmapped_to_assertion_variant` [canonical — Skeletal §10.8]; `versioned_claim.lineage_table_missing` [canonical — Skeletal §10.8]; `versioned_claim.direct_write_bypassing_lineage_table` [proposed]; `versioned_claim.supersession_chain_order_violated` [proposed].

**Fixtures (Stage 8):** `fixture.lineage.every_versioned_claim_mapped_or_flagged`; `fixture.lineage.superseded_claim_lands_as_superseded_variant`; `fixture.lineage.migration_preserves_spans_or_requires_review`.

### §9.2 `KnowledgeProjection` + `KnowledgeProjectionInvalidationPolicy`

**Source:** Owner Map line 140 (DOC82-owned concrete projection axis, Stage 5R2b narrow); E0 §3.6 (`SemanticProjectionContract` umbrella + axis registration — `knowledge` axis → DOC82); Skeletal §11.10 (projection invariants); ABC §2.2 (projection rule — downstream views are projections, never parallel truth). **Owner:** DOC82.

```typescript
/** The knowledge-axis concrete projection (E0 §3.6 SemanticProjectionAxisRegistration:
 *  axis 'knowledge' → KnowledgeProjection, schema_owner DOC82). A derived consumer view over
 *  Assertion/Source-Evidence objects — e.g. a conflict-set projection (§4), a variant-comparison
 *  view, a source-coverage read-model. NEVER truth (E0 §3.6 projection_may_own_truth: false). */
interface KnowledgeProjection extends E0DurableRecord {
  projection_id: KnowledgeProjectionRef;
  schema_owner: 'DOC82';
  axis: 'knowledge';                                  // E0 §3.6
  projection_case: 'conflict_set' | 'variant_comparison' | 'source_coverage' | 'lineage_view'
    | 'source_bound_synthesis_adapter_case';          // the dormant Lock-B case slot (Owner Map line 39 classification; NO body — §7.4)
  source_refs: string[];                              // E0 §3.6 required_fields — the canonical objects projected
  generation_id: string;                              // E0 §3.6
  invalidation_policy: KnowledgeProjectionInvalidationPolicy;
  projection_owner: 'DOC82';
  proof_or_read_model_refs: string[];                 // E0 §3.6
}

interface KnowledgeProjectionInvalidationPolicy {
  invalidate_on: Array<'source_object_mutation' | 'lifecycle_transition' | 'warrant_recompute'
    | 'source_revocation_cascade' | 'embedding_generation_change' | 'policy_generation_change'>;
  rebuild: 'lazy_on_read' | 'eager_on_invalidate';
  staleness_tolerance: 'none' | 'orientation_only_when_stale';
}
```

**Projection invariants (Skeletal §11.10 / E0 §3.6, verbatim posture):** projection never owns truth; MUST carry source refs, generation id, invalidation policy, owner, and proof/read-model refs; `truth_apt? = N` by construction (E0 §6.3). A stale knowledge projection degrades to `orientation_only` or refuses, never serves as current truth.

**Lints (Stage 9):** `projection.used_as_canonical_truth` / `projection.owner_missing` / `projection.missing_invalidation_policy` / `projection.missing_source_refs` [all canonical — E0 §3.6]; `projection.generation_id_missing` [proposed — E0 §3.6]; `projection.knowledge_axis_unregistered` [proposed]. **Fixtures (Stage 8):** `fixture.projection.revocation_invalidates_knowledge_projection` (ties §8 + Skeletal §10.11 DOC86/DOC84 sibling cases); `fixture.projection.stale_projection_degrades_not_serves`.

---

## §10. The 9 OPA Bucket-A obligations (bodies per archived `OPA_V3_18.md`; retargets per `OPA_V4.md` §6)

**Source:** the 9 rows retargeted `→ DOC82` in OPA V4 §6 (lines 97–105) with canonical bodies in archived V3.18 (the DOC81 §13.3 lesson applied — bodies landed from the archive, not guessed). These are litigation-flavored; each lands as a **legal-domain-profile instantiation of a generic DOC82 pattern** (domain-agnostic core; legal is one profile — CLAUDE.md invariant). Field sets below carry exactly the body-named fields; extensions are confirm-seeds (§13.6).

### §10.1 `OBL-D23-A-V6-PROMOTED-CLAIM-MEMORY-KIND-01` (from DOC72) — promoted-claim memory kind

**Body (V3.18 line 5498):** on a `ClaimPromotionRequest` (DOC23 Addenda A §A11.6 Submit-to-Memory-Review), store `target_memory_kind` (**factual_assertion / working_hypothesis / drafting_preference / argument_theory / user_note**) AND `factual_status` (**verified / unverified / not_truth_evaluable**) on the resulting record; downstream queries MUST filter by `factual_status` (evaluable:false claims never appear in factual-grounding contexts).

**Landing:** `target_memory_kind` rides `AssertionCandidate` (§2.4, `TargetMemoryKind` below); `factual_status` rides `Assertion` (§2.1). Non-`factual_assertion` kinds route through DOC83's `AlternativeExtractionRouting` (working_hypothesis → IssueFrame plane; drafting_preference → preference kinds; user_note → not-memory) — the truth plane admits only truth-apt kinds.

```typescript
type TargetMemoryKind = 'factual_assertion' | 'working_hypothesis' | 'drafting_preference' | 'argument_theory' | 'user_note';  // V3.18 body verbatim
```

**Lint:** `assertion.factual_status_not_filterable` [proposed]; `assertion.not_truth_evaluable_in_factual_grounding` [proposed — the body's query rule]. **Fixture:** `fixture.obl.promoted_claim_carries_kind_and_status`.

### §10.2 `OBL-D25-O-SOURCEARTIFACT-01` (from DOC25) — SourceArtifact ownership boundary + the D14 confirmation

**Body (V3.18 line 3624):** DOC25 V2.0+ owns `SourceArtifact`/`ArtifactSegment` schemas (replacing V2's implicit DOC73 ownership; INV-V16-NO-LOCAL-SCHEMA-1).

**D14 resolution (OPA V4 §9 D14 delegated this to the DOC82/E4 charter — CONFIRMED here):** the row stays retargeted **→ DOC82** as the **boundary-discipline obligation**: DOC82's source plane (§5) is the consumer that must hold the boundary (envelope/segment refs only; no artifact schema at DOC82), while **schema ownership itself stays DOC25** (Owner Map lines 53–54 — unchanged). The obligation row lives where the discipline is enforced; the schemas live at DOC25. OPA V4 row-state update (`pending_charter_resolution` → confirmed) is a §14.7 discharge item.

**Lint:** `source.doc82_declared_artifact_or_segment_schema` [proposed — fires with §6.3's container lint family]. **Fixture:** `fixture.obl.artifact_schemas_stay_doc25`.

### §10.3 `OBL-D73-N-NOT-EVIDENCE-INV-01` — the not-evidence guardrail (renamed from ORIENTATION-INV, V3.11)

**Body (V3.18 line 3852):** INV-N-NOT-EVIDENCE-1 + INV-N-NO-CIRCULAR-EVIDENCE-1 — RecentActivityRollup may inform query framing; it **cannot satisfy legal evidence queries** (without it, legal queries get answered from framing context and the authority hierarchy collapses). Acceptance V3-AT-22.

**Landing:** the §11.2 cross-cutting guardrail (orientation/CU/RecentActivityRollup is NOT evidence; no auto `EvidenceSupportEdge`; no circular evidence — synthesis citing synthesis). Wired to ABC §4.4 (`can_orient_only` rows), R-CU-3 (§7.2), ADQ-405 (`can_orient_only` invariant — DOC83's consumption contract), and `WarrantEvaluationResult.can_satisfy_evidence_query` (§3.3).

### §10.4 `OBL-D73-O-COURT-DISPOSITION-OBS-01` — `CourtDispositionObservation`

**Body (V3.18 line 3864):** a structured observation node kind: **ruling, scope_targets[], legal_basis, source_artifact_ref?** — without it, rulings extracted from docket text / minute orders have no schema and downstream reasoning lacks per-defendant scope. Acceptance V3-AT-18 (a docket-text minute order creates the observation **without** a SourceArtifact); V4-AT-31.

```typescript
/** Legal-profile evidence-grade observation (retargeted DOC73→DOC82; the truth plane owns
 *  evidence-bearing observation semantics; DOC83 owns operational observations — ABC §7.14). */
interface CourtDispositionObservation extends E0DurableRecord {
  observation_id: CourtDispositionObservationRef;
  schema_owner: 'DOC82';
  ruling: string;                                   // body field
  ruling_disposition_refs: RulingDispositionRef[];  // §10.8 (depends-on OBL-O-RULING-DISPOSITION-01)
  scope_targets: EntityRef[];                       // body field — per-defendant scope; NON-EMPTY (V4-AT-31)
  legal_basis?: string;                             // body field
  source_artifact_ref?: SourceArtifactRef;          // body field — OPTIONAL (V3-AT-18 docket-text case)
  source_envelope_ref: SourceEnvelopeRef;           // the §5.1 gateway (docket-text observations get an artifact-less envelope)
  observation_lifecycle_state: ObservationLifecycleState;  // §10.9
  evidence_record_ref?: EvidenceRecordRef;          // evidence_kind 'system_observation'/'citation_or_authority' when admitted as evidence
}
```

**Fixture:** `fixture.obl.docket_minute_order_creates_observation_without_artifact` (V3-AT-18).

### §10.5 `OBL-D73-O-FILING-UNIT-VERSION-01` — `FilingUnitVersion`

**Body (V3.18 line 3876):** **version_sequence_number, legal_version_kind precedence, supersession edges** — without versioning, amended filings collapse with the original and queries cite the wrong version. Acceptance V3-AT-17 (sealed_unredacted + public_redacted versions of one filing; a share-link retrieves only public and cannot cite sealed spans); V4-AT-32.

```typescript
/** Legal-profile instantiation of the §5.1 source-version hook. */
interface FilingUnitVersion extends E0DurableRecord {
  version_id: FilingUnitVersionRef;
  schema_owner: 'DOC82';
  filing_unit_ref: FilingUnitRef;                   // §10.6
  source_envelope_ref: SourceEnvelopeRef;           // one envelope per version (version-comparable — Lock C posture)
  version_sequence_number: number;                  // body field
  legal_version_kind: string;                       // body field — precedence vocabulary (e.g. sealed_unredacted, public_redacted, as_filed, amended); value set = §13.6 confirm-seed over the V3-AT-17 named pair
  supersedes_version_ref?: FilingUnitVersionRef;    // body field — supersession edges
  part_visibility_refs: FilingPartVisibilityRef[];  // §10.7
}
```

**Fixtures:** `fixture.obl.sealed_and_public_versions_distinct_and_visibility_gated` (V3-AT-17 — the share-link case is DOC84/DOC81 egress enforcement reading §10.7 visibility); `fixture.obl.amended_filing_supersedes_not_collapses` (V4-AT-32). Cross-version extraction-cost amortization stays DOC73-side (`OBL-D73-O-VERSION-EXTRACTION-COST-V16-01` — not a DOC82 row).

### §10.6 `OBL-D73-O-FILINGUNIT-01` — `FilingUnit` semantics

**Body (V3.18 line 3888):** FilingUnit + legal relationship semantics, **paired with the DOC25 boundary** (DOC25 produces artifacts; the memory plane consumes for legal semantics). Acceptance V3-AT-11 (a PACER bundle correctly segments into multiple ECF sub-documents).

```typescript
/** The legal source unit — groups DOC25 artifacts into one legally-meaningful filing. */
interface FilingUnit extends E0DurableRecord {
  filing_unit_id: FilingUnitRef;
  schema_owner: 'DOC82';
  docket_ref?: DocketRef;
  ecf_or_filing_number?: string;
  constituent_artifact_refs: SourceArtifactRef[];   // DOC25-owned artifacts (the V3-AT-11 sub-documents)
  version_refs: FilingUnitVersionRef[];             // §10.5
  filing_relationship_kind?: string;                // legal relationship semantics (motion/opposition/exhibit-of/…); vocabulary = §13.6 confirm-seed
}
```

**Fixture:** `fixture.obl.pacer_bundle_segments_to_filing_units` (V3-AT-11).

### §10.7 `OBL-O-FILING-PART-VIS-01` — `FilingPartVisibility`

**Body (V3.18 line 4392):** per-part visibility class within a FilingUnit — without it, one sealed exhibit seals the whole unit and public parts cannot expose independently. Acceptance V3-AT-17.

```typescript
interface FilingPartVisibility extends E0DurableRecord {
  visibility_id: FilingPartVisibilityRef;
  schema_owner: 'DOC82';
  filing_unit_ref: FilingUnitRef;
  part_ref: SourceSegmentRef | SourceArtifactRef;   // the part (segment or whole sub-document)
  visibility_class: VisibilityClassRef;             // §5.1 vocabulary (sealed / redacted / public — per the registry; §13 flag 5)
  visibility_basis?: 'sealing_order' | 'redaction' | 'protective_order' | 'public_record';  // §13.6 confirm-seed
}
```

**Rule:** part-level visibility **overrides** the envelope-level class for that part; egress/disclosure enforcement is DOC81/DOC84's (DOC82 carries the facts). **Fixture:** `fixture.obl.sealed_exhibit_does_not_seal_public_parts`.

### §10.8 `OBL-O-RULING-DISPOSITION-01` — `RulingDisposition`

**Body (V3.18 line 4404):** structured fields with **`scope_targets[]` MANDATORY** (an order disposing multiple defendants produces per-defendant dispositions; flattening rejected — V4-AT-31).

```typescript
interface RulingDisposition extends E0DurableRecord {
  disposition_id: RulingDispositionRef;
  schema_owner: 'DOC82';
  ruling_kind: string;                              // granted/denied/granted_in_part/…; vocabulary = §13.6 confirm-seed
  scope_targets: EntityRef[];                       // MANDATORY NON-EMPTY (V4-AT-31; flattening rejected)
  legal_basis?: string;
  source_segment_refs: SourceSegmentRef[];          // span-backed (§5.2)
}
```

**Lint:** `legal.ruling_disposition_scope_targets_empty` [proposed — V4-AT-31]. **Fixture:** `fixture.obl.multi_defendant_order_yields_per_defendant_dispositions` (V4-AT-31).

### §10.9 `OBL-OBSERVATION-LIFECYCLE-01` — the general observation-lifecycle pattern

**Body (V3.18 line 4416):** the observation lifecycle generalizes (CourtDispositionObservation is one instantiation; future observation kinds reuse the pattern). DOC24-side consumption stays external (`OBL-D24-OBSERVATION-LIFECYCLE-V16-01`).

```typescript
/** The general pattern for DOC82 evidence-grade observations (distinct from DOC83's operational
 *  IncidentObservation/FrictionEvent ladder — ABC §7.14 stays DOC83's). States seeded from the ABC
 *  §7.14 stage discipline + §10.4's needs; value set = §13.6 confirm-seed. */
type ObservationLifecycleState = 'observed' | 'corroborated' | 'superseded_by_later_ruling' | 'expired';
```

**Pattern rules:** an observation is source/time-bounded (ABC §4.4 row); it may ground an AssertionCandidate (origin `system_observation`, §2.4) but is never itself reusable truth; supersession follows the court's own later action, not extraction-agent guesswork (the §2.2 safety posture generalized). **Fixture:** `fixture.obl.observation_lifecycle_general_pattern_reused` (V3-AT-18 instantiation).

**§10 roll-up.** All 9 rows land: 1 → §2.1/§2.4 fields; 2 → boundary confirm (§5/§6 + D14); 3 → §11.2 guardrail; 4–9 → the legal-profile object set above, all span-backed through §5 and candidate-fed through §2. Per-row OPA-state updates (`carried` → landed-at-charter) are §14.7 discharge items. The six acceptance tests (V3-AT-11/17/18/22, V4-AT-31/32) map to the named fixtures.

---

## §11. Cross-cutting invariants (runtime gate + Stage-9 lint + Stage-8 negative fixture — the full triple per invariant)

**Source:** Skeletal §11.4 (every named invariant has BOTH a runtime gate and a lint) + §11.9 (monotonicity laws); E0 §12.1 (the cross-family table + UR-48 fixture column — DOC82 rows consumed and completed here); Input Deck (origin-stamp lint; not-evidence guardrail; one-owner). DOC82 adds its member-specific gates per E0 §12.2.

### §11.1 The DOC82 invariants table

| # | invariant | runtime gate (owner / location) | Stage 9 lint | Stage 8 negative fixture |
|---|---|---|---|---|
| I1 | **Warrant monotonicity — bound to DOC81's laws** (E0 §12.1; Skeletal §11.9): membership never raises warrant; learning never exceeds the non-learning ceiling (UR-47); revocation monotone-down until re-proof (polarity-aware, §8); policy meet never widened by DOC82 | DOC82 warrant evaluation (§3.3/§3.6) ignores membership; §2.8 closed machine (no spontaneous transitions); §8 recompute trace; EC executes | `monotonicity.membership_raised_warrant`; `monotonicity.learning_upgraded_warrant_without_evidence`; `monotonicity.revocation_raised_eligibility` [all canonical — E0 §12.1] | `fixture.golden.membership_raised_warrant_fails`; `fixture.golden.learning_upgraded_warrant_beyond_ceiling_fails`; `fixture.revocation.contrary_removal_raises_only_with_recompute_trace` |
| I2 | **The not-evidence guardrail** (`OBL-D73-N-NOT-EVIDENCE-INV-01`, §10.3): orientation/CU/RecentActivityRollup/IssueFrame/NullResult/resume products are NOT evidence; consuming them MUST NOT auto-create an `EvidenceSupportEdge`; no circular evidence (synthesis citing synthesis) | DOC82 edge-creation gate (§5.5 rule 1: span-resolvable only); R-CU-3 (§7.2); DOC83 `can_orient_only` consumption contract (ADQ-405); DOC84 packet check | `cu.consumption_auto_created_support_edge` [proposed]; `revocation.recent_activity_used_as_evidence` [canonical — E0 §12.1]; `evidence.orientation_object_as_support` [proposed]; `evidence.circular_synthesis_support` [proposed] | `fixture.golden.recent_activity_used_as_evidence_fails` (E0 §12.1); `fixture.cu.consumption_never_auto_creates_edge`; `fixture.evidence.synthesis_citing_synthesis_blocked` |
| I3 | **ABC §7.8 anti-overlap** — exactly one disposition enum (DOC83's) + one dedupe-outcome (DOC82's); DOC82 is the resolution authority (Skeletal §10.7; E0 §12.1 row) | DOC82 resolution-authority check at `AssertionResolution` (§2.6) | `assertion.overlapping_resolution_disposition_enum` [canonical] | `fixture.golden.overlapping_disposition_enum_fails` (E0 §12.1) |
| I4 | **The origin-stamp lock** (PCA Lock D): every `AssertionCandidateEmission` carries the originating library/scope membership; the canonical Assertion inherits scope+membership; DOC84 injects by active-scope eligibility, never per-document treatment | DOC82 emission-consumption gate (§2.5 — blocked when absent); DOC83 produces the stamp; DOC84 packet planning reads scope eligibility only | `assertion.emission_missing_origin_scope_membership` [canonical — Input Deck/Lock D] | `fixture.assertion.emission_origin_stamp_required_and_inherited`; `fixture.assertion.multi_treatment_source_extracted_only_in_learned_scope` |
| I5 | **One-owner placement vs ABC §2.1 semantics** (D-SEED-2; §0.2): re-homed schemas defined at DOC82 only; no container/CU/artifact/policy/membership schema declared here; retired Concept Model §17.3 enum never reintroduced (G-2) | charter-structural (this document); Stage 7 authors check the E0 §6 taxonomy first | `supersession.local_schema_redefinition` [canonical — plan §17.2]; `source.doc82_redefined_corpus_container` [canonical]; `supersession.retired_name_used` [canonical] | `fixture.obl.artifact_schemas_stay_doc25`; `fixture.taxonomy.only_assertion_family_is_truth_apt` (E0 §6) |
| I6 | **R-CU-1/2/3** (PCA Finding 1; §7.2): no-spans⇒no-support; cu_authority≠warrant; CU≠evidence | DOC82 edge gate + §7.2 binding (`can_support_assertion_directly` forced false); EC write rejects | `cu.no_spans_supported_assertion` [canonical]; `cu.authority_used_as_warrant` [canonical]; `cu.consumption_auto_created_support_edge` [proposed] | `fixture.cu.no_spans_cannot_support`; `fixture.cu.authority_not_inherited_as_warrant` |
| I7 | **Grounding promotion gate** (ABC §7.10): `model_synthesis_only` / `cu_backed_without_spans` / `ungrounded` never reach `active` | §2.8 T3 gate (`PromotionGateRecord.grounding_state_at_gate`); DOC1 Write Gate | `assertion.ungrounded_candidate_promoted_to_active` [proposed] | `fixture.assertion.ungrounded_cannot_reach_active` |
| I8 | **Write gating reads the floor + mutation_authority** (DOC81 §2.4/§3.2; Input Deck): no durable assertion write under a `fail_closed_candidate` floor or beyond the `mutation_authority` ceiling | §2.6 write-gating rules (a)–(d); EC serialized write + CAS | `assertion.resolution_exceeded_mutation_authority` [proposed]; `ec.dedupe_write_without_generation_revalidation` [canonical — E0 §7.1] | `fixture.assertion.resolution_respects_floor_and_mutation_authority` |
| I9 | **Bitemporal presence** (Skeletal §11.8; E0 §8.2): every Assertion/Variant carries both axes; every support edge carries the span snapshot; envelope axes never collapse into replay order (UR-18) | schema-structural (§2.1/§2.2/§5.5 required fields); EC write validation | `bitemporal.assertion_missing_valid_time`; `bitemporal.assertion_missing_transaction_time`; `bitemporal.evidence_edge_missing_source_span_temporal_snapshot` [all canonical] | `fixture.assertion.bitemporal_axes_present_and_distinct_from_replay_order` |
| I10 | **Embedding comparability + un-merge review** (E0 §8.1; F28; UR-41): same-generation comparisons only; migration-driven splits through review | §2.3 signature/dedupe gates; EC | `embedding.cross_generation_comparison_without_reembed` [canonical]; `embedding.silent_unmerge_on_model_migration` [proposed] | `fixture.assertion.cross_generation_similarity_blocked` |
| I11 | **Qualifier-set mismatch never auto-merges** (ADQ-311 — absolute) | §2.3 equivalence outcome gate; EC dedupe execution | `assertion.qualifier_set_mismatch_auto_merged` [proposed] | `fixture.assertion.qualifier_mismatch_never_auto_merges` |
| I12 | **Safety-class no-auto-supersede** (ABC §3.11) | §2.8 T7 confirmation gate | `assertion.safety_class_auto_superseded` [proposed] | `fixture.assertion.safety_class_supersession_requires_confirmation` |
| I13 | **Contrary edges accumulate, mandatory** (ABC §3.5; SM-200/E0 §6.2) | §2.7 merge reconciliation (`accumulate_all`); §5.5 rule 2 | `assertion.contrary_edges_not_accumulated` [proposed] | `fixture.evidence.contrary_edge_survives_merge_and_drives_contested` |
| I14 | **Indexed ≠ Learned** (PCA Lock C; §6.4): an Indexed source grounds no Assertion until extraction runs | DOC83 extraction admission (treatment gate); DOC82 candidate origin requires a route context from a Learned scope (§2.5 attestation) | `source.indexed_source_grounded_assertion_without_extraction` [proposed] | `fixture.source.indexed_retrievable_citable_not_mined` |
| I15 | **`principal_authored` orients, never cites** (PCA Lock A; §3.5) | §3.3 evaluation + §3.7 domain policy (`citation_requires_authority_classes`); DOC84 render consequence (§3.8) | `warrant.principal_authored_cited_as_authority` [proposed] | `fixture.warrant.principal_authored_orients_never_cites` |

### §11.2 The not-evidence guardrail, stated once (the I2 text)

> **Orientation is not evidence.** RecentActivityRollup (`can_orient_only` — ADQ-405), IssueFrame/IssueFrameUpdate, NullResultMemory (absent its narrow absence-claim allowance — ABC §4.6), TopicLens/Library/Corpus views, ResumeCard/projections (E0 §5.3), DAMS outputs, proof artifacts, utility ledgers, and **CU text without surviving spans** (ABC §4.4) can NEVER be the `evidence_ref` of an `EvidenceSupportEdge`, satisfy an evidence query, or contribute warrant. No consumption path auto-creates a support edge (R-CU-3). **No circular evidence:** a synthesis object citing another synthesis object grounds nothing — support bottoms out in source spans, system observations, or user-direct statements (INV-N-NO-CIRCULAR-EVIDENCE-1, §10.3). Legal evidence queries are satisfied only through the §5 evidence plane under §3.3's `can_satisfy_evidence_query`.

### §11.3 Member obligations (E0 §20 instance)

DOC82's per-member obligation rows (E0 §20; filled per the E0 §15.4 gate): `MemoryCoordinationTrace` obligations — every resolution/dedupe/merge/recompute names `coordination_trace_ref` (§2.5/§2.6); **degraded states DOC82 surfaces** — `scope_unresolved_conservative` (consumed, DOC81 §2.4), `parse_quality_capped` (§5.7), `cu_spanless_orientation_only` (§7.2), `warrant_recompute_pending` (§8.2), `lineage_migration_review_required` (§9.1). Health counters contributed (E0 §9.2 seeds): `contested_assertion_rate`, `warrant_distribution`, `source_revocation_backlog` (DOC82-plane share).

---

## §12. Cross-charter (binds · hands · golden scenario · taxonomy)

### §12.1 What DOC82 binds to (consume-by-reference; §0.3)

E0: §1.6 (shared value types + `E0DurableRecord`), §2.1 (ReasonCode — DOC82 namespace incl. revocation codes per UR-37), §2.2 (DomainProfile + `warrant_policy_ref` → §3.7), §2.4 (degradation triggers + UR-22 carveout → §3.6), §3.3/§3.4 (MFC + trace on every durable write), §3.6 (projection umbrella → §9.2), §4 (proof spine), §5.1/§5.2 (envelope/provenance NAMED concepts), §6 (taxonomy — §12.5), §7 (dependency posture: DOC72 `stable`, DOC73 `partial/reconcile_at_charter`, DOC25 `stable`, EC `partial/moving`), §7.1 (ECSeamContract — CAS + re-gate), §8.1/§8.2/§8.3/§8.5 (conventions), §12.1 (invariants + cascade shape), §13.1 (the four warrant-object slots), §15.4 (gates DOC82 satisfies: UR-08 plane execution → §8; UR-31 knowledge axis → §9.2; `WarrantConsequenceRegistry` → §3.8; ABC §21 Owner Map rows → §14.5; `SourceBoundSynthesisAdapter` convergence → §7 — resolved-no-activation). DOC81: §2.4 (floor), §3.0–§3.2 (meet + `mutation_authority`), §3.4 (stamps/restamps), §3.6 (epoch), §4.2 (disclosure), §4.3 (route policy envelope), §4.4 (`PolicyCappedDAMSInput` — DOC84-facing; DOC82 supplies the warrant facts it caps), §5 (envelope/run/denominator — §8 plugs in), §6.1 (LegalHold — cascade destruction defers), §6.3/§6.4 (monotonicity + re-gate), §8 (traversal policy → §4). External: DOC72/DOC73/DOC25/EC per §0.3.

### §12.2 What DOC82 hands downstream (Import Graph §2.1: `DOC82 → {DOC83, DOC84, DOC85, DOC87}`)

- **→ DOC83 (E5/E6):** the `AssertionCandidateEmission` contract (§2.5 — DOC83 produces instances; OPA-030/DR-008); `AssertionCandidate` (§2.4); `ExtractionRouteContext` (§5.6 — DOC83 consumes + populates); `SourceEnvelope` + parse-bounds consumption (§5.1/§5.7); the disposition seam (§2.5 note — DOC83's enum recommended, DOC82 resolves); the reroute target back to `AlternativeExtractionRouting` (§2.6).
- **→ DOC84 (E7/E8):** Assertion/Variant + lifecycle/staleness/warrant axes for product assembly; `EffectiveWarrant` + `WarrantConsequenceRegistry` language (§3.8 — KDA renders); the ADQ-314 validity facts; `RelationInjectionPolicy` + traversal-gated comparison products (§4); `EvidenceRecord`/`EvidenceSupportEdge` for evidence products; source-sandbox facts (`prompt_injection_risk`, §5.1 — DOC84/DOC24 enforce ABC §11.6 at render); `KnowledgeProjection` (§9.2); `audit_only`/`retired` never deliver (§2.8).
- **→ DOC85 (E9):** assertion lifecycle/resolution outcomes + `PromotionGateRecord` streams (proof-gated learning inputs); false-suppression sampling inputs (Owner Map line 176 — DOC82 assertion outcomes feed it); the learning warrant ceiling (I1; learning adjusts eligibility/staleness, never warrant beyond the non-learning ceiling).
- **→ DOC87 (E_org):** Assertion/Variant/SourceEnvelope as membership **targets** (DOC87 edges point at `assertion_id`/`source_ref`); the origin-stamp fields DOC87 consumes to mint memberships (§2.5); the Lock C posture (§6.4 — treatment statuses are DOC87/DOC26/DOC81's).

### §12.3 The golden scenario (E0 §18) — DOC82-owned steps

DOC82 owns, within the family phase order: **extraction admission → emission → canonical resolution (AssertionResolution + AssertionDedupeOutcome) → durable write** (the §2 pipeline between DOC83's triage and DOC87's membership step), plus the warrant facts every later step reads. **The revocation case (E0 §18 / Skeletal §10.11):** source revocation → DOC81 envelope → §8.1 payload names the DOC82 affected set → edges `invalidated`/`verify_required` → §8.2 recompute (polarity-aware) → ADQ-304 retire-or-degrade → siblings (DOC87/84/85/86) fan out → `fixture.golden.revoked_source_invalidates_support_membership_delivery_learning_ui`. **The policy-change-mid-extraction case (E0 §18; Skeletal §11.3):** `policy_generation_id` changes between Step-0 admission and resolution → DOC83 re-gates at Step 0 (extraction side); DOC82's §2.6 write re-gates at EC (resolution side, OPA-031) → `fixture.golden.policy_change_mid_extraction_regates`. **Degraded states surfaced to the plan:** §11.3's five.

### §12.4 E0 §15.4 gate rows discharged by this charter

| gate (E0 §15.4) | how discharged |
|---|---|
| UR-08 `SourceRevocationCascade` per-plane execution (E3/E4) | §8 (payload + recompute + plane outcome) |
| UR-31 `SemanticProjectionContract` knowledge axis (E3) | §9.2 (`KnowledgeProjection` + invalidation) |
| `WarrantConsequenceRegistry` (E4 blocked; E3 confirm) | §3.8 drafted at DOC82 per E0 §13.1 recommendation; placement confirm = §13 flag 1 |
| `IngestionCostBudget` (E3 blocked; E4 confirm) | §13 flag 2 — recommendation recorded (DOC25/E4 declaration against E0 §10.1); DOC82 declares no schema |
| `SourceBoundSynthesisAdapter` convergence (OPA-035, conditional) | §7.1/§7.4 — convergence found; no activation; adapter documented-not-built (Lock B) |
| Seven ABC §21 Owner Map rows (E3/E4 share) | §14.5 discharge rows for the four DOC82 objects; IngestionCostBudget flagged; ConsideredItemLedger/PromptShellExposure are DOC84's (not ours) |
| ADQ-202 Corpus hierarchy (gates AC-005 completion) | §6 lands the resolution; AC-005/ADQ-404 completion unblocked on the DOC82 side (EC-side work remains EC's) |

### §12.5 Memory-object taxonomy additions (E0 §6 — rows DOC82 confirms/adds)

E0 §6.2 seed rows for Assertion/AssertionVariant/CU/EvidenceRecord/EvidenceSupportEdge/KnowledgeProjection are **confirmed unchanged**. DOC82 adds (same column set; `audit_replay_class` per A11):

| object_family | owner | truth_apt? | source_bound? | durable? | derived_projection? | policy_gated? | delivery_eligible? | ui_visible? | learning_eligible? | audit_replay_class | notes |
|---|---|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|---|
| AssertionCandidate | DOC82 | N | Y | Y | N | Y | N | Y | N | canonical | Staged; never evidence of truth (ABC §7.10); not delivery-eligible pre-resolution |
| AssertionCandidateEmission | DOC82 | N | Y | Y | N | Y | N | Y | N | durable_audit | The E3↔E5 handoff (DR-008); origin-stamp carrier (Lock D) |
| AssertionResolution / AssertionDedupeOutcome | DOC82 | N | N | Y | N | Y | N | Y | Y | durable_audit | Resolution audit pair (§2.6); learning reads outcomes |
| AssertionRelationEdge | DOC82 | N | Y | Y | N | Y | Y | Y | Y | canonical | Traversal-gated (DOC81 §8); DOC72 stores |
| SourceEnvelope | DOC82 | N | Y | Y | N | Y | Y | Y | N | canonical | Durable at Indexed (Lock C); library-agnostic (Lock C/D) |
| SourceAuthorityScope | DOC82 | N | Y | Y | N | Y | N | Y | N | canonical | Authority declaration (ABC §4.1) |
| ExtractionRouteContext | DOC82 | N | Y | Y | N | Y | N | Y | Y | durable_audit | Provenance, not identity (ABC §1.2) |
| WarrantEvaluationResult / PromotionGateRecord | DOC82 | N | N | Y | N | Y | N | Y | Y | durable_audit | Warrant/gate audit records (§3.3/§2.8) |
| SourceInvalidationPayload / WarrantRecomputeTrace | DOC82 | N | Y | Y | N | Y | N | Y | N | durable_audit | The §8 revocation pair |
| VersionedClaimLineageRow | DOC82 | N | Y | Y | N | Y | N | Y | N | durable_audit | DR-003 bridge; append-auditable |
| CuConsumptionBinding | DOC82 | N | Y | Y | N | Y | N | Y | N | durable_audit | The §7.2 thin binding |
| FilingUnit / FilingUnitVersion / FilingPartVisibility / RulingDisposition / CourtDispositionObservation | DOC82 | N | Y | Y | N | Y | Y | Y | N | canonical | Legal-profile source/observation set (§10) |

---

## §13. Open items + architect-review flags (≤5) + confirm-seeds

### §13.1 OPEN_FOR_ARCHITECT_REVIEW (exactly 5)

1. **`WarrantConsequenceRegistry` placement — DOC82/E3 vs DOC80-core registry (inherited: E0 §16.1 item 2).** Drafted at §3.8 per E0 §13.1's recommendation (warrant consequences have a plane: warrant). The core-registry alternative (analogy: the E0 §2.4 trigger registry) remains open for the architect's confirm. If core is preferred, §3.8 moves verbatim; consumers (DOC84/KDA) are unaffected.
2. **`IngestionCostBudget` row choice — DOC25 external-row vs DOC82-seam object (inherited: E0 §16.1 item 1; E0 §15.4 says "E3 blocked, E4 confirm").** Recommendation (matching E0's): **DOC25/E4 declaration against the E0 §10.1 envelope** — ingestion cost stays with the ingestion owner; DOC82 declares **no schema** and records only the seam (§12.4). Architect confirms the external-row mechanics at ratification.
3. **`AssertionStalenessState` value set (§3.4).** No canonical source enumerates the staleness enum; the drafted 4-value set is fragment-cited (`stale_possible` ABC §4.6; `reverify_due` ABC §3.12; `expired_session_bound` ADQ-312; `fresh` zero-state). Confirm, amend, or extend.
4. **`AssertionTemporalProfile` "10 temporal classes" (Owner Map line-36 note) vs ABC §3.8's 7-value `TemporalClass`.** Drafted with ABC's 7 (ABC senior for semantics, DR-001; ABC §3.8 explicitly evicts the three kind-labels from the temporal enum — which is precisely the 10→7 delta). The Owner Map note is read as the pre-split legacy count; **discharge item:** reconcile the line-36 note at the next baseline pass. Architect confirms this reading.
5. **`visibility_class` vocabulary owner — PropA vs DOC82 (§5.1; §10.7).** DOC81 §0 annotates the vocabulary "PropA/DOC82-owned" — a compound that one-owner forbids. Drafted as a versioned `ExternalVocabularyValueRef` with **PropA recommended as vocabulary owner** (classification/sensitivity vocabularies are PropA's pattern — ADQ-308 analogy; DOC81 §2.4 sensitivity_inputs), DOC82 carrying refs only. Architect confirms the owner; either answer changes no DOC82 schema shape.

### §13.2 Architect-confirm seeds (value-constants, NOT open design questions — DOC81 §13.6 pattern)

| seed | location | default (seed) | basis |
|---|---|---|---|
| ADQ-314 validity-table cells | §3.5 | the drafted ✓/F/(✓) grid + 9 rationales | table mandated by ADQ-314; cells are this draft's proposal |
| `principal_authored` framing string | §3.5/§3.8 | "principal's stated understanding — not verified authority" | PCA Lock A; exact tuning is E7's (ADQ-223(c)) |
| Lifecycle transition matrix details (T1–T9 triggers/gates) | §2.8 | as drafted | states verbatim ABC §7.13/ADQ-304; transition wiring is the charter's assembly |
| `AssertionLifecycleRollup.derivation_rule` | §2.8 | `any_contested_else_most_advanced_live_variant` | derived-not-writable posture (E0 §4.2 UR-06 analogy) |
| `ScopeCondition` shape + kinds | §2.2 | drafted 5-kind seed | ABC §3.2 names the field; §3.11 shape analogy |
| `lineage_kind` / `migration_status` value sets | §9.1 | drafted 5/4-value seeds | Owner Map line 42 names the fields, not the values |
| `KnowledgeProjectionInvalidationPolicy.invalidate_on` set | §9.2 | drafted 6 triggers | Skeletal §11.10 invariants; §8/§2.7 events |
| Legal-profile vocabularies (`legal_version_kind`, `ruling_kind`, `filing_relationship_kind`, `visibility_basis`, `ObservationLifecycleState`) | §10 | drafted seeds over the V3-AT/V4-AT-named values | OPA bodies name fields + acceptance pairs; full vocabularies are profile work |
| `DomainProfileWarrantPolicy` per-profile cells (e.g. legal.litigation) | §3.7 | doctrine→`verify_before_use`; principal_authored→`orientation_only`; citation requires `primary_source` | ABC §3.9 downgrade rules + Lock A |
| `source_kind` seed vocabulary | §5.1 | DOC25 V2.0 surface list (corpus/email/browser/chat/demonstration/task_output/autonomous/direct_upload) | DOC25 V2.0 scope statement; DOC25 owns the registry |

### §13.3 ADQ-223 deferred-work note (minimal lock landed — do NOT over-build)

DOC82 lands **only**: the `principal_authored` kind (§3.1), its validity-table row + warrant profile (§3.5), its source posture (§3.5/§5.3), and CU-supersession-lineage consumption (§7.2/§9.1). **Deferred + tracked at ADQ-223:** (a) the provisionality gradient (tentative-vs-settled epistemic sub-kinds or settledness signal at capture) — DOC73 CU revision + a future DOC82 pass; (b) claim-vs-directive delineation at capture — DOC83 `AlternativeExtractionRouting` + the DOC26 Project-Instructions/State-Card split; (c) injection weight + framing-string tuning — E7 (DOC84/KDA); settled-vs-tentative learning — E9 (DOC85). An `architect_stop` follow-up rises only if a sub-problem proves it needs a contract DOC82 cannot defer (ADQ-223 recommended_answer).

---

## §14. Sources + lineage

### §14.1 ADQ landings (every ADQ pinned to E3/E4 → its landing section)

| ADQ | resolution (abbrev.) | landing |
|---|---|---|
| **ADQ-202** | corpus hierarchy behind Libraries; resolved via PCA Finding 2 (5-layer; DOC82 = interface, zero containers) | §6 (whole); §5.6 route metadata; Skeletal §11.13 gate discharged |
| **ADQ-219** | CU reconciliation = DIRECT CONSUME; adapter documented-not-built; OPA-035 not triggered | §7 (whole) |
| **ADQ-314** | (temporal_class, epistemic_kind) validity table; invalid combos flagged at lifecycle transition | §3.5 (table + check point at §2.8) |
| **ADQ-303** | parse-quality numeric thresholds = domain-profile-specific, owner DAMS/DOC25; DOC82 consumes to bound eligibility | §5.7 (consumption posture only) |
| **ADQ-401** (AC-001) | DOC25 file-materialization + provider profiles; `schema_plus_owner_boundary` | §5.1 `materialization_state_ref`; §6.2 obligation note |
| **ADQ-402** (AC-002) | DOC73 corpus-source-bindings; `schema_plus_lints_and_fixtures`; **depends on ADQ-202 — now unblocked** | §6.2 obligation note |
| **ADQ-304** | last-active-support-edge rule (retire/audit_only iff no other lawful edge; partial → degrade) | §8.2 rules 1; §2.8 T8 |
| **ADQ-311** | qualifier_set mismatch never auto-merges (absolute) | §2.3; I11 |
| **ADQ-312** | degradation triggers initial controlled registry (E0 §2.4 home); per-trigger owners | §3.6 consumption |
| **ADQ-223** | principal-authored: DOC82 lands the MINIMAL lock; deeper work deferred | §3.1/§3.5; §13.3 |
| **ADQ-PASS2-01** | PBEClusterDetectionResult: DOC73 owns; DOC82 consumes read-model hints | §7.3 |
| **ADQ-PASS2-02** | corpus↔library identity mapping: DOC87 owns; DOC25 storage; DOC24 consumes | §6.1 (Library row); §6.4 |
| ADQ-201 / ADQ-315 / ADQ-316 / ADQ-405 / ADQ-313 (cross-cutting, pinned elsewhere) | Assertion canonical / traversal policy at E1 / restamp ceilings / can_orient_only / domain registry | §2 vocabulary / §4 / §2.7 restamp note / §11.2 / §3.7 |

### §14.2 The four architect locks (PCA 2026-06-08) — landing confirmation

| lock | landing | status |
|---|---|---|
| **A — `principal_authored`** | §3.1 (kind) + §3.5 (row + warrant profile + source posture) + §3.8 (framing entry) + I15 | landed (minimal; ADQ-223 note §13.3) |
| **B — adapter documented-not-built** | §7.4 (one-paragraph escape hatch; no schema body; Owner Map line 39 stays placeholder) + §9.2 (dormant case slot) | landed |
| **C — Indexed = source-memory** | §6.4 (posture + rules) + §5.1 (durable envelope at Indexed) + I14 | landed |
| **D — extraction origin-stamp** | §2.5 (the stamp block + lint) + §2.2 (variant inheritance) + I4 | landed |

### §14.3 Skeletal §10/§11 + §DOC82 fold-in landings

| Skeletal § | content | landing |
|---|---|---|
| §DOC82 §1 | bitemporal axes on the Assertion family | §2.1/§2.2/§4/§5.5; I9 |
| §DOC82 §2 | source-bound synthesis consumption (ADQ-219) | §7 |
| §10.7 | DOC82↔DOC83 disposition/resolution seam (anti-overlap; resolution authority) | §2.5/§2.6; I3 |
| §10.8 | VersionedClaim lineage table + 2 lints | §9.1 |
| §10.11 | CascadingSourceInvalidation 5-plane fan-out (DOC82 plane) | §8; I1 |
| §10.12 / §14 | taxonomy seed rows (Assertion/Variant/CU/Evidence/SupportEdge) + body | §12.5 |
| §10.14 | embedding-model-migration refs | §2.3; I10 |
| §10.17 | ABC §21 slot-ins (the four DOC82 warrant objects) | §3.3/§3.7/§3.8/§2.8; §14.5 |
| §11.4 | invariant enforcement-point naming (gate + lint + fixture) | §11 (the triple table) |
| §11.8 | bitemporal contract | §2.1; I9 |
| §11.9 | monotonicity laws (warrant/revocation/learning) | §3.6/§8; I1 |
| §11.13 | Library-decomposition ADQ-202 gate | §6.3 (discharged) |
| §18 | golden scenario + revocation + policy-change-mid-extraction cases | §12.3 |

### §14.4 OPA-row landings (the 9 Bucket-A rows + the convergence seam)

| OBL row | landing | note |
|---|---|---|
| `OBL-D23-A-V6-PROMOTED-CLAIM-MEMORY-KIND-01` | §10.1 (→ §2.1/§2.4 fields) | kinds/status verbatim |
| `OBL-D25-O-SOURCEARTIFACT-01` | §10.2 (+§5/§6 boundary) | **D14 confirmed:** obligation at DOC82; schemas stay DOC25 |
| `OBL-D73-N-NOT-EVIDENCE-INV-01` | §10.3 → §11.2 (I2) | incl. no-circular-evidence |
| `OBL-D73-O-COURT-DISPOSITION-OBS-01` | §10.4 | V3-AT-18 artifact-less case honored |
| `OBL-D73-O-FILING-UNIT-VERSION-01` | §10.5 | V3-AT-17/V4-AT-32 fixtures |
| `OBL-D73-O-FILINGUNIT-01` | §10.6 | V3-AT-11 fixture |
| `OBL-O-FILING-PART-VIS-01` | §10.7 | part-level visibility override |
| `OBL-O-RULING-DISPOSITION-01` | §10.8 | scope_targets mandatory (V4-AT-31) |
| `OBL-OBSERVATION-LIFECYCLE-01` | §10.9 | general pattern; DOC24 side stays external |
| **OPA-035** (`SourceBoundSynthesisAdapter` convergence) | §7.1 | **discharged: "reconciliation found convergence — no adapter activation"** |
| OPA-030 (emission handoff) | §2.5 | DR-008 contract drafted |

### §14.5 Owner Map confirmations + discharge rows (charter is read-only on the Owner Map — rows recorded here for the ratification sweep)

**Confirmed as drafted:** lines 26–37 (Assertion family — §2/§3), 39 (adapter placeholder stays placeholder — Lock B), 40 (CU support contract stays DOC73 — §7), 41–42 (VersionedClaim DOC73 / lineage table DOC82 — §9.1), 52–61 (source/evidence — §5), 63–65 (DOC25 bindings/containers consumed — §6), 94–95 (envelope DOC81 / payload DOC82 — §8), 140 (KnowledgeProjection — §9.2). **Rows to ADD at discharge (E0 §13.2 delegation):** `WarrantEvaluationResult` → DOC82 (§3.3); `WarrantConsequenceRegistry` → DOC82 (§3.8; subject to §13 flag 1); `DomainProfileWarrantPolicy` → DOC82 (§3.7); `PromotionGateRecord` → DOC82 (§2.8); plus the §10 legal-profile set (`FilingUnit`/`FilingUnitVersion`/`FilingPartVisibility`/`RulingDisposition`/`CourtDispositionObservation` → DOC82) and the §8 pair (`SourceInvalidationPayload`/`WarrantRecomputeTrace` → DOC82, line-95 expansion). **NOT added:** `IngestionCostBudget` (flag 2 — DOC25/E4 recommended), `ConsideredItemLedger`/`PromptShellExposure` (DOC84 — E0 §13.1). **Note check (flag 4):** line-36 "10 temporal classes" note → reconcile to ABC §3.8's 7. Per E0 §16.1's process note, the four warrant-object dispositions should be **verified against ABC §21 source** at the sweep (ABC §21 was not in the E0 read-list; §3.3/§3.9-§3.10 grounding here is direct).

### §14.6 In-draft dispositions recorded (for the CODEX fidelity audit)

1. **`AssertionCandidateDisposition` placement:** stays DOC83 (Owner Map line 102; Skeletal §10.7); DOC82 references the verified 7-value set (DR-006) on the emission and enforces anti-overlap — the Opening Brief's "defined at DOC82 only" shorthand is implemented as "declared once, at its Owner-Map owner; dedupe outcome at DOC82; anti-overlap gate at DOC82" (§2.5 note).
2. **`authority_class` (UR-22 carveout key):** E0 §2.4 says "owned by DOC82/DOC81"; one-owner resolves to **DOC82** (warrant semantics — §3.6 `WarrantAuthorityClass`); DOC81 consumes.
3. **D14 (`OBL-D25-O-SOURCEARTIFACT-01`):** confirmed at §10.2 (obligation at DOC82; schemas at DOC25).
4. **ABC §6.6 "avoid Learned":** superseded by PCA Lock C's architect-confirmed vocabulary (2026-06-08); ABC's underlying concern (library-owned truth) is enforced structurally by Lock D + Skeletal §10.4 (§6.4 rule 4).
5. **`SourceRef` brand home:** declared at DOC82 (§0.4) as the content-deduped identity — matching DOC81 §0's annotation ("a DOC82/DOC25 source id"); DOC25 owns artifacts/instances behind it.
6. **DR-002:** LibrarySourceBinding/CorpusIndex/SourceCollection matrix rows remain a logged gap (Import Graph §5.1) — not expanded here; rides the next matrix update.

### §14.7 Discharge sweep (ratification-time; Skeletal §10.19 closing-step discipline)

1. Owner Map: add the §14.5 rows; reconcile the line-36 note; keep line 39 placeholder. 2. OPA V4: mark the 9 §6 rows landed-at-charter; resolve D14 `pending_charter_resolution` → confirmed (§10.2); record OPA-035 discharge text (§7.1); OPA-030 contract-drafted. 3. ADQ ledger: mark ADQ-202/219 **executed at E3/E4** (resolutions were Stage-4; execution recorded per PCA); ADQ-314 table created; ADQ-223 minimal lock landed (row stays open for the deferred work). 4. Supersession Matrix: confirm SM-200/201/204/207/208 landings; DR-002 rows at next matrix update. 5. E0 §15.4 gate rows per §12.4. 6. Cross-artifact drift sweep (plan-file §12.3 slice status; Input-Deck pre-condition block → "executed"). 7. The §13.1 flags + §13.2 seeds to the architect-confirm pass.

---

*End of DOC82 E3/E4 charter draft R1. Acceptance self-audit (Commission §4) reported in the drafting-session report; independent CODEX fidelity audit follows per commission.*