Pre_Charter_Analysis_ADQ202_ADQ219.md
Memory Rebuild Docs/Stage_6_Charters/E3_E4_DOC82_Knowledge_Source_Evidence/Pre_Charter_Analysis_ADQ202_ADQ219.md
# E3/E4 (DOC82) — Pre-Charter Analysis: the two drafting-gating pre-conditions
**Date:** 2026-06-08 · **Author:** Cowork orchestrator (architect-supervised) · **For:** Will's confirmation before the DOC82 drafting commission.
**Purpose:** the Stage-6 index pins two items as "must resolve BEFORE drafting" DOC82 — ADQ-202 (corpus hierarchy) and ADQ-219 (CU reconciliation). **Both were already RESOLVED by the architect at the Stage 4 gate (2026-05-25)** as `batch_for_architect` items; what remained was *executing* the resolutions at this charter — laying out the concrete corpus hierarchy, and performing the actual DOC73-CU-vs-source-bound-synthesis comparison to pick the direct-consume-vs-adapter path. This document does that execution and presents two findings for your confirmation. Sources read: ADQ ledger 202/219/PASS2-02, ABC R0.2 §4.5, DOC73 Artifact 1 §8.2 + Artifact 3 §9.2/§9.5 (the CU schema), the Owner Map / Import Graph.
---
## PART 1 — ADQ-219: DOC73 ConsolidatedUnderstanding reconciliation
### The resolved framework (ADQ-219, Stage 4)
DOC73 owns CU semantics; DOC80/DOC82 must NOT redefine CU and treats it as **source-bound synthesis only, never canonical reusable truth** (reusable truth runs through the AssertionCandidate→Assertion pipeline). **If** DOC73's CU matches the source-bound-synthesis contract → **consume directly**. **If** it diverges → use the `SourceBoundSynthesisAdapter` wrapper + a CU→DOC82 mapping table. The charter performs the reconciliation and finalizes the path before drafting; escalate to `architect_stop` only if a wrapper can't cleanly absorb the divergence; OPA-035 = the convergence obligation if the adapter activates.
### The comparison (the actual reconciliation)
**ABC R0.2 §4.5 `ConsolidatedUnderstandingSupportContract`** (the contract DOC82 needs): `{ cu_ref, source_span_refs[], synthesis_quality, can_support_assertion_directly (default false), support_conditions? }`. Rule: *CU may be injected as source-bound synthesis; CU text alone may not support a reusable Assertion unless the support edge points to source spans / EvidenceRecords / an explicitly source-backed CU component.*
**DOC73's actual CU** (Artifact 1 §8.2 + Artifact 3 §9.2): `ConsolidatedUnderstanding = { …, source_spans: SourceSpan[], display_kind: "synthesis_with_spans" | "synthesis_summary_no_spans", … }`. Invariant **INV-MVC-CU-1**: creation MUST include non-empty `source_spans` (kernel rejects empty) — the span-less fallback (`synthesis_summary_no_spans`, triggers T1–T3) is renderable but explicitly framed "system synthesis; source spans unavailable" and **"NOT cited as authority for legal work-product."** CU is a *compositional reasoning structure* (typed inputs, essential/supporting roles, nested, authority via aggregation).
### FINDING 1 — DIRECT CONSUME (the adapter stays DORMANT). No divergence; OPA-035 not triggered.
DOC73's CU semantics **match** the source-bound-synthesis contract on the two load-bearing axes:
1. **Source-span backing required** — DOC73 INV-MVC-CU-1 (non-empty `source_spans`) ≡ ABC §4.5 `source_span_refs[]`. Exact match.
2. **Never canonical reusable truth** — DOC73 frames the span-less state as non-authority "system synthesis" ≡ ABC's "CU text alone may not support a reusable Assertion." Exact match in spirit and in the legal-work-product framing (which is *your* first use case).
DOC73's CU is *richer* than the bare contract (compositional reasoning, typed-input roles, aggregated authority, nesting) — but that richness lives entirely on **DOC73's side** and DOC82 does not need it: DOC82 consumes only the thin §4.5 contract. Extra producer-side structure is not "divergence"; divergence would be a *conflict* on the two axes above, and there is none. **So the wrapper is unnecessary** — activating `SourceBoundSynthesisAdapter` here would trigger OPA-035's convergence obligation and (per ADQ-219 clause 7) a permanent unblessed wrapper is a `code_smell`. Direct consume is both correct and the lower-debt path.
**DOC82's CU consumption contract (what the charter formalizes — a thin binding, ~1 schema):**
| ABC §4.5 field | bound from DOC73 | DOC82 rule |
|---|---|---|
| `cu_ref` | CU node id | reference only; DOC82 never mutates a CU |
| `source_span_refs[]` | DOC73 `source_spans[]` (when `synthesis_with_spans`) | the support backing; map to DOC82 `SourceSegmentRef`/`SourceRegionRef` |
| `synthesis_quality` | derived from DOC73 `display_kind` + extraction state | feeds candidate-eligibility bounding (like parse-quality) |
| `can_support_assertion_directly` | **forced `false` whenever `display_kind = synthesis_summary_no_spans`** | no spans ⇒ no support edge can be built from this CU, ever |
**Three boundary rules the charter must state (the guardrails that keep direct-consume safe):**
- **R-CU-1 (no-spans ⇒ no support):** a `synthesis_summary_no_spans` CU can NEVER back an `EvidenceSupportEdge` or support an Assertion (lint `cu.no_spans_supported_assertion`). This is also the litigation safety rule (no span-less synthesis cited as authority).
- **R-CU-2 (CU authority ≠ DOC82 warrant):** DOC73's internal `cu_authority` (aggregation) is NOT inherited as DOC82 `EffectiveWarrant`. A CU reaching an Assertion runs the canonical AssertionCandidate→warrant ladder on its *source spans*, not on DOC73's authority score (lint `cu.authority_used_as_warrant`).
- **R-CU-3 (CU is synthesis, not evidence):** consuming a CU MUST NOT auto-create an `EvidenceSupportEdge` (ties the not-evidence guardrail `OBL-D73-N-NOT-EVIDENCE-INV-01`). A CU points to spans; the *spans* (via EvidenceRecord) are the evidence, not the CU.
- **Escape hatch preserved:** the `SourceBoundSynthesisAdapter` schema stays *defined but inactive* (dormant), so if a future DOC73 revision diverges, the wrapper is ready without a re-architecture — exactly the ADQ-219 design intent.
---
## PART 2 — ADQ-202: the corpus hierarchy
### The resolved principle (ADQ-202 + ADQ-PASS2-02, Stage 4)
Internal deep-ingestion structures (**Corpus / SourceCollection / CorpusIndex**) sit **BEHIND** user-visible **Libraries** — do NOT make Corpus a user-facing parallel Library. Keep enough internal hierarchy for provider profiles, source bindings, dedupe, and corpus-scope extraction. **DOC87** owns the canonical corpus↔library *identity mapping* + Library-as-organizational-container (ADQ-220/PASS2-02); **DOC25** owns the corpus *storage* side (CorpusIndex / SourceCollection); **DOC24** consumes the mapping at search/onboarding but does not own it.
### FINDING 2 — the concrete 5-layer hierarchy + DOC82's interface (DOC82 owns NO container)
The layout consistent with the resolved principle:
| Layer | What it is | Owner | DOC82's relationship |
|---|---|---|---|
| **Library** | user-visible organizational container | **DOC87** (organization/membership) | consumes the library↔corpus identity term as upstream vocabulary; never owns |
| **Corpus / SourceCollection / CorpusIndex** | internal ingestion/aggregation (behind Libraries) — provider profiles, dedupe, corpus-scope | **DOC25** (storage) | consumes corpus provenance via `ExtractionRouteContext` (DOC82-owned route metadata) + `LibrarySourceBindingConsumptionContract`; never owns the container |
| **Source** | one source within a corpus | **DOC25** `SourceArtifact` (the artifact) / **DOC82** `SourceEnvelope` (the source-bound discipline interface) | **DOC82 owns `SourceEnvelope`** — the single interface carrying source ref/kind/authority/visibility/parse-quality/injection-risk/materialization |
| **Artifact / Segment** | parsed document + segmentation | **DOC25** (`SourceArtifact` / `ArtifactSegment` / `SourceParseQualitySidecar`) | **DOC82 owns the pointer types** `SourceRegionRef` / `SourceSegmentRef` (refs INTO DOC25 artifacts) + consumes parse-quality to bound candidate eligibility |
**DOC82's role in the hierarchy is the *interface*, not the *containers*.** DOC82 owns: `SourceEnvelope` (the one source-bound-discipline gateway), the pointer types (`SourceRegionRef`/`SourceSegmentRef`), `SourceAuthorityScope`/`Class`, `ExtractionRouteContext` (route = provenance, not identity — carries the corpus/source lineage as metadata), and the consumption contracts (`LibrarySourceBindingConsumptionContract`). It owns **none** of the container schemas (Library→DOC87; Corpus/CorpusIndex/SourceCollection/LibrarySourceBinding→DOC25). "Corpus-scope extraction" is carried as route metadata on `ExtractionRouteContext`, not a new DOC82 container.
**What the charter formalizes for ADQ-202:** the `SourceEnvelope` schema (with its corpus/source provenance fields referencing DOC25/DOC87 by id), the two pointer types, the `LibrarySourceBindingConsumptionContract`, and the cross-doc obligations (DOC25 corpus-source-bindings completion = ADQ-402 `schema_plus_lints_and_fixtures`, depends on this; DOC25 materialization = ADQ-401). **No container redefinition** — the lint `source.doc82_redefined_corpus_container` guards it.
---
## What this LOCKS for the drafting commission (the charter can now assume)
1. **CU = direct consume** via the thin §4.5 contract; adapter dormant; the three R-CU guardrails; OPA-035 not triggered (recorded as "reconciliation found convergence — no adapter activation").
2. **Corpus hierarchy = the 5-layer stack above**; DOC82 owns the `SourceEnvelope` interface + pointers + consumption contracts, zero containers; ADQ-402/401 land as cross-doc completion obligations; the no-redefine lint.
3. Both findings keep DOC82 within its one-owner boundary (truth + the source-bound interface), with DOC25 (storage/parsing), DOC73 (CU semantics), DOC87 (containers/identity) cleanly referenced.
---
## ARCHITECT DISCUSSION RESOLUTIONS (2026-06-08 — these AMEND Findings 1 & 2; they govern the draft)
The architect discussion produced four refinements that supersede the bare findings above:
**A — `principal_authored` source kind (amends Finding 1).** The architect's own authoritative-but-not-citable statements (esp. legal statements of law) are NOT "system synthesis without spans" (R-CU-1) — they are **first-class sources where the author is the principal** (the span IS the statement). The charter adds **`principal_authored` as a recognized `epistemic_kind`** with an **"orient / hypothesize, do NOT cite as controlling authority"** warrant profile in the `(temporal_class, epistemic_kind)` validity table (ADQ-314): injectable as orientation, framed to the model as "principal's stated understanding," but `UseWarrant` for brief-citation = insufficient (requires external authority). This is the **minimal lock**; the deeper provisionality/claim-vs-directive/weight work is **deferred + tracked at ADQ-223** (do not over-build it here).
**B — Adapter is DOCUMENTED, not BUILT (amends Finding 1).** Per the architect, do NOT carry a dead `SourceBoundSynthesisAdapter` schema body. The charter keeps a **one-paragraph escape-hatch note** only ("if DOC73's CU ever diverges from the §4.5 contract, the sanctioned fix is a wrapper + mapping table raised via a new ADQ"); the Owner Map row stays a placeholder pointer, not a maintained schema. No remnants.
**C — Indexed = source-memory (amends the corpus/treatment framing).** DOC26's "Indexed is not a memory lane" is imprecise. Correct model (architect-confirmed): **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) — but **no Assertions/CUs mined from it**; **Learned** = Indexed PLUS DOC83 extraction has run → Assertions/CUs in the knowledge graph. The charter must treat "source is in memory" (Indexed/Learned both) as DISTINCT from "knowledge mined from it" (Learned only). The treatment statuses themselves are **DOC87/DOC26/DOC81** (membership + access/treatment policy), NOT DOC82.
**D — Extraction origin-stamp lock (the load-bearing charter requirement; resolves the multi-treatment injection question).** A source can be **Learned in Library A** and merely **Indexed in Library B** (same source, multi-membership, different treatment). To keep DOC84 injection simple, **treatment is an extraction-time gate, not an injection-time gate**: when extraction runs over a Learned library, the **`AssertionCandidateEmission`** (DOC82 contract, DOC83-produced) MUST carry the **originating library/scope membership**, so the resulting canonical Assertion inherits the correct scope (DOC81) + membership (DOC87). 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 is handled by the DOC81 cross-matter machinery (relevance, not direct injection). **Lint:** `assertion.emission_missing_origin_scope_membership`. This is the lock that makes multi-treatment coherent — the charter MUST land it on `AssertionCandidateEmission`.
**Also confirmed:** Finding 2's "DOC82 owns the interface, not the containers" stands, with the explicit separation that the **user-facing Library** (DOC87/DOC26/DOC81 — curated set + treatment + access policy) is DISTINCT from the **ingestion Corpus** (DOC25 — provider profiles / dedup / corpus-scope); `SourceEnvelope` must be **library-agnostic + multi-membership-safe** (one content-deduped source identity, many memberships). Finding 1's direct-consume + R-CU-1/2/3 guardrails stand.
**Status: both pre-conditions RESOLVED + the four refinements locked. Cleared to commission the DOC82 draft.**