DOC80_Skeletal_Target_Baseline.md
Memory Rebuild Docs/Flattening/Execution Ledger/Stage_5R3/baseline_snapshot/DOC80_Skeletal_Target_Baseline.md
ELNOR REPO READER TEXT MIRROR
Original path: Memory Rebuild Docs/Flattening/Execution Ledger/Stage_5R3/baseline_snapshot/DOC80_Skeletal_Target_Baseline.md
Source repo: /Users/OpenClaw1/Elnor/Elnor Specs
Git branch: main
Git commit: dbaa25962edc11ab30e8d4ca1715f9ae5bf77331
Generated: 2026-06-09T01:23:58.539Z
---
# DOC80 — Memory Control Plane — Skeletal Target Baseline
**Repository:** github.com/wbrody/Elnor-Specs — branch `main`
**Document status:** `target-baseline` (skeletal architecture; full spec drafted slice-by-slice at Stages 6–10).
**Versioning discipline:** git-native — stable filename, no version suffix, status header above (per Patch B5). Git history is the version record.
**Governing plan:** [`Flatten_and_Unify_Plan.md`](../../Flattening/Current%20Flattening%20Plan/Flatten_and_Unify_Plan_V2_1c.md) (plan §18 governs this stage).
**Review tier:** architect / red-team mandatory (per runbook §14).
**Round:** Stage 5R (Stage 5 review patches applied 2026-05-26).
This file produces the skeletal architecture plan §18 requires before any slice charter is approved:
1. **Spec family membership** — the complete list of DOC80 family members (D-SEED-1: spec family; D-SEED-2: real owner doc).
2. **Section map** — what each member covers, mapped to plan §12 slices.
3. **Owner boundaries** — what DOC80 family owns vs what stays at adjacent owner docs.
4. **Per-schema ownership handoff** — for every memory schema currently defined in DOC72/DOC24/DOC73, state whether the DOC80 family takes ownership or ownership stays put.
5. **Required lints** — pointer to plan §17 lint suite, plus DOC80-family-specific lints (including the proof-spine and membership lint families added at Stage 5R).
6. **Required fixtures** — pointer to plan §14 + Stage 6 fixture work; also names the end-to-end round-trip golden scenario added at Stage 5R.
7. **OP-A candidate placeholder** — pointer to `OP_A_Candidate_Disposition.md`.
Companion files:
- [DOC80_Import_Graph.md](../Import%20Graph/DOC80_Import_Graph.md)
- [DOC80_Owner_Map.md](../Owner%20Map/DOC80_Owner_Map.md)
- [DOC80_Retired_Names.md](../Retired%20Names/DOC80_Retired_Names.md)
---
## 0. Skeletal architecture decisions consumed
### 0.1 Seed decisions consumed (not re-asked)
- **D-SEED-1 (resolved):** DOC80 is a **spec family**, not a single document.
- **D-SEED-2 (resolved):** the DOC80 family is a **real owner doc in the ELNOR hierarchy** (members DOC80, DOC81, …).
- **D-SEED-3 (resolved):** archived / parked / lineage material is **out of active scope**.
- **D-SEED-4 (resolved):** operations / meta documents are **out of source scope**.
### 0.2 Stage 4 architect-resolved decisions consumed
All 41 Stage 4 ADQs are resolved. Architecturally load-bearing items: ADQ-201 (Assertion canonical), ADQ-203/211 (ContextProduct + MemoryContextPlan registries in DOC80 core), ADQ-204/205 (TopicLens + TopicCollectionDirective placement), ADQ-206 (IssueFrame as workbench), ADQ-207 (MemoryFlowCertificate mandatory), ADQ-208 (PromptShellRegistry in DOC80 core), ADQ-209 (three-plan model), ADQ-210 (DOC80 Memory Control Plane name), ADQ-219 (CU/DOC73 conditional rule), ADQ-302 (FrictionPattern criteria), ADQ-305 (DynamicHeaderLedger hash-pinned + policy-invariant), ADQ-310 (ReasonCode registry in DOC80 core), ADQ-312 (warrant-degradation triggers — initial controlled registry; producers per owner), ADQ-313 (domain profile registry), ADQ-405 (RecentActivityRollup with `can_orient_only` invariant), among others.
### 0.3 Stage 5R architect-resolved decisions consumed
- **ADQ-220 (resolved — RR round 1, 2026-05-26):** Membership/Organization has no coherent home in the 7-member family. **Resolution: add an 8th member, DOC87 — Memory Organization & Membership.** See §1, §4.7, and the membership-edge lints/fixtures sections.
- **ADQ-221 (resolved — Stage 5R inter-round, 2026-05-26):** BDSM `dependency_status = partial` (BDSM v6.5 Draft v0.3.1 is well-drafted but incomplete; will be revised alongside the new DOC80 memory system); DOC8 = capability-mining input only (skeleton sketch; useful concepts but needs rewrite). Specific BDSM surfaces DOC85 may consume are deferred to the DOC85/E9 charter, where DOC85 drafting coordinates with BDSM revision.
### 0.4 Stage 5R reviewer-reliability guardrails consumed (binding)
Per the round-1 Claude-synthesizer review §1, the following are binding regardless of any other review text:
- **G-1** — the lockstep mapping (E1+E2→DOC81, E3+E4→DOC82, E7+E8→DOC84) is verified correct. No member boundary is redrawn at Stage 5R **except** the deliberate, architect-approved addition of DOC87.
- **G-2** — `AssertionCandidateDisposition` is the **7-value ABC §7.8 enum**. The four discontinued values from the superseded Concept Model §17.3 11-value enum stay retired. The capabilities they implied are preserved via `AlternativeExtractionRouting` (DOC83 — renamed from `NonAssertionExtractionOutcome` at Stage 5R2b) — see B9 / §4.3 / §11.11.
- **G-3** — the import-graph cycle is `DOC81 → DOC84 → DOC86 → DOC81`. Fixed at Stage 5R Patch B1 by replacing the upward edge `DOC86 → DOC81` with the correct-direction edge `DOC81 → DOC86`.
- **G-4** — no `ARCHITECT_STOP` raised at Stage 5R. Adding DOC87 is consistent with D-SEED-1 and D-SEED-2.
---
## 1. Spec family membership
The DOC80 family has **8 members** after Stage 5R (DOC87 added to resolve ADQ-220).
| member | scope | plan §12 slice(s) | one-line purpose |
|---|---|---|---|
| **DOC80** | Memory Control Plane Core / Contracts | **E0** (cross-cutting) | The one canonical home for shared schemas, vocabularies, the proof spine, the ContextProduct registry, the PromptShellRegistry, the ReasonCode registry, the warrant-degradation-trigger registry, the domain-profile registry, the `ExternalDependencyRecord`, MemoryCoordinationTrace, the memory-object taxonomy table, the cross-cutting lint suite. Everything else in the family imports from DOC80. |
| **DOC81** | Scope and Policy Plane | **E1 + E2** (lockstep) | ScopeBoundary topology + dimensional MemoryPolicyDecision + EffectiveMemoryPolicy meet + PolicyObligation + PolicyStamp + EpisodePolicyEpoch + ScopeResolutionResult. EC executes; PropA contributes. |
| **DOC82** | Canonical Knowledge Objects + Source / Evidence | **E3 + E4** (lockstep) | Assertion family (Assertion / AssertionVariant / AssertionCandidate / AssertionResolution + AssertionDedupeOutcome + full lifecycle/state machine — see B9), EvidenceRecord, EvidenceSupportEdge, SourceEnvelope, ExtractionRouteContext, ConsolidatedUnderstanding **consumption contract** (DOC73 owns CU semantics per ADQ-219). ABC R0.2 is senior to the Concept Model per DR-001. |
| **DOC83** | Extraction Spine + Temporal / Working-State | **E5 + E6** | Extraction routing up to **`AssertionCandidateEmission`** (the E3↔E5 handoff object, B9; `schema_owner = DOC82`, produced-by DOC83), `AlternativeExtractionRouting` (B9; carries directive/procedure/CU-component/evaluation paths — renamed from `NonAssertionExtractionOutcome` at Stage 5R2b; see §11.11), `ExtractionContextPlan`, IssueFrame + IssueFrameUpdate / WorkingStateEvent, RecentActivityRollup consumption (per ADQ-405), IncidentObservation / FrictionEvent / FrictionPattern, NullResultMemory, TopicCollectionDirective (references DOC87 Topic identity — lateral import). |
| **DOC84** | Runtime Delivery + Prompt Shells / Render Safety / Proof | **E7 + E8** (lockstep) | DAMS V5 attenuator seam (PolicyCappedDAMSInput), DOC24 packet integration, KDA rendering integration, ContextProduct *assembly* (DOC80 owns registry; DOC84 owns assembly contract), MemoryContextPlan *consumption* (DOC80 owns contract; DOC84 implements), PromptShellVariant runtime selection, RenderSafetyProof execution, MemoryCoordinationTrace runtime threading, pipeline park/resume semantics for PolicyDisambiguationRequest. **Consumes DOC87 membership; does not own it.** |
| **DOC85** | Memory Learning — substantive specification (rescoped at Stage 5R per Patch B6) | **E9** | Owns: learning architecture, learning targets, learning proof-gating, the write-back path (route through EC; proof-gated via DOC80 core), friction promotion criteria producers, warrant-degradation-trigger *producers* (registry lives in DOC80 core). Consumes BDSM (v6.5 Draft v0.3.1, `partial` per ADQ-221 — DOC85 drafting at E9 coordinates with BDSM revision); treats legacy DOC8 as capability-mining input only. |
| **DOC86** | UI / Inspector / SearchAffordance | **E10** | UserContextSurfacePlan, VisibleContextActionSpec, HiddenContextRef, InspectorVisibilityPlan, SearchAffordance (state machine + Preflight + ExecutionMode), NullResultNotice route control, Round D UI surfaces, AvailabilityDisposition / BlockedScopeNotice / ReferenceOnlyNotice, **renders DOC87 membership** (does not own it; does not own `TopicActivationState` — that lives in DOC87). |
| **DOC87** | Memory Organization & Membership (added at Stage 5R per ADQ-220) | **new slice inserted between E6 and E7** | Owns: `MemoryMembershipEdge`, `MembershipLifecycleState`, `MembershipSource`, `MembershipInvalidationPolicy`, membership candidate/confirmed/removed/blocked/stale states, the membership invariants, `TopicLens` organization semantics, `TopicActivationState` (the Topic *lifecycle*), the Topic object, Library-as-organizational-container. Containers owned elsewhere (Episode/IssueFrame → DOC83, Entity → DOC72, Project-mode → DOC20) keep their owners; DOC87 owns only the membership *edge into* them. |
**Total members: 8.** No "as needed" placeholders.
### 1.1 Split rationale by owner boundary
- **DOC80 = the one core/contracts member.** Exactly one member owns shared schemas, vocabularies (runtime only — process vocab moved out at B10), proof spine, registries (ReasonCode, ContextProduct, PromptShellRegistry, warrant-degradation-trigger, domain-profile), `MemoryCoordinationTrace`, the memory-object taxonomy table (B-struct), the family-wide compute-budget envelope (B9), `ExternalDependencyRecord` (B7). Other members import from core.
- **DOC81 = Scope + Policy together.** Plan §12.2 lockstep — scope identifies, policy decides. One owner.
- **DOC82 = Knowledge + Source-Evidence together.** Plan §12.3 lockstep — EvidenceSupportEdge depends on the source-span / SourceEnvelope contracts. Per B9 also owns the **full Assertion lifecycle/state machine** (candidate → variant → resolution → promotion → dedupe outcome); DOC83 owns extraction routing only up to `AssertionCandidateEmission` (B9 handoff).
- **DOC83 = Extraction Spine + Temporal/Working-State.** Not lockstep, but pipeline-adjacent. Cannot host the Assertion lifecycle (B9 fix).
- **DOC84 = Delivery + Prompt/Proof.** Plan §12.5 lockstep. **Consumes DOC87 membership for ContextProduct planning; does not own it.**
- **DOC85 = Learning (substantive).** Rescoped at B6. Owns architecture + write-back path + warrant-degradation-trigger producers (registry in core). Consumes BDSM v6.5 Draft v0.3.1 as partial substrate (Stage 5R2c — ADQ-221 resolved 2026-05-26: BDSM `dependency_status = partial`; specific surface contracts named at E9 charter).
- **DOC86 = UI / Inspector / Search.** Renders membership (DOC87 owns); renders TopicActivationState (DOC87 owns).
- **DOC87 = Organization / Membership.** Membership is upstream of both DOC84 (delivery) and DOC86 (rendering); cannot live inside either. Knowledge-internal edges (AssertionRelationEdge, EvidenceSupportEdge) stay in DOC82; DOC87 owns container-membership edges only.
Plan §12 slice list is amended at Stage 5R to insert the organization/membership slice between extraction (E6) and delivery (E7).
### 1.1-bis DOC83 rationale strengthening (Stage 5R2b per Claude R1 A1 SUGGESTION)
DOC83 is the only member that fuses two non-lockstep slices (E5 Extraction + E6 Temporal/Working-State). The rationale: the AssertionCandidate pipeline (E5) feeds IssueFrame / RecentActivityRollup state (E6) and consumes from the canonical-knowledge family (E3) — putting them in one member keeps the lifecycle in one owner-boundary without crossing into evidence-edge territory. **Future-split candidate**: if E5 or E6 grows large enough at Stage 7 drafting that the owner-boundary needs splitting, DOC83 is the most-likely candidate for a future split into DOC83a (extraction) + DOC83b (temporal) — this is recorded for future-architect awareness, not as a current decision.
### 1.2 One-owner rule (Stage 5R fundamental)
Per Patch B3 + the Owner Map's foundational rule (and resolving Stage 4's lingering ambiguity):
- **Every schema has exactly one `schema_owner`.** A compound-owner appearance is a symptom: two distinct schemas mislabeled as one. Resolve by splitting the row into two named schemas, each with one owner (e.g. `RecentActivityRollup` vs `RecentActivityRollupConsumptionContract`).
- **Secondary relationships use a closed verb set:** `stores` / `executes` / `generates` / `consumes`. These are not ownership.
- **Placement rule = domain membership.** `schema_owner` is the member that owns that schema's plane. DOC80 core holds a schema **only** when it has no plane — registries, the proof spine, shared vocabulary, MemoryCoordinationTrace, **OR a cross-cutting *contract* whose implementation is owned downstream** (Stage 5R2b extension per Claude R1 B2 GAP — e.g., `MemoryContextPlan` contract at DOC80 core / `MemoryContextPlan` implementation at DOC84; `EffectiveMemoryPolicy` contract reference at DOC80 core / schema wholly at DOC81; `ContextProduct` registry at DOC80 core / assembly contract at DOC84). The lint `owner_map.core_holds_planeful_schema` fires only if a schema in core has a clear plane AND isn't a registry/proof/vocabulary/trace/cross-cutting-contract.
- **"Consumed by multiple members" → lateral imports**, never core-hoisting.
- Lint `owner_map.compound_schema_owner` fires on any row that violates this.
---
## 2. Section map per family member
### DOC80 — Core / Contracts (E0)
```text
§1. Purpose, scope, non-goals
§2. Family membership (DOC80–DOC87)
§3. Owner-doc imports + external-dependency pinning (ExternalDependencyRecord, B7)
§4. Shared runtime vocabularies (B10 — process vocab removed)
§4.1 (runtime-only enums and value types declared here; non-runtime vocab lives in process docs)
§5. ReasonCode registry (ADQ-310)
§6. ContextProduct registry (ADQ-203 — DOC80 owns registry; DOC84 owns assembly contract)
§7. PromptShellRegistry + PromptShellVariant + PromptShellLearningContract (ADQ-208)
§8. EffectiveMemoryPolicy CONTRACT — note moved per Patch B4: `EffectiveMemoryPolicy` itself is wholly owned by DOC81 (SM-013 / Round D §1.5). DOC80 core holds only the cross-cutting *consumption protocol* reference, not the schema.
§9. Proof spine
§9.1 ContextPacketProof
§9.2 RenderSafetyProof
§9.3 MemoryFlowCertificate (mandatory for durable write / render / export / carryover / delegation / learning attribution — ADQ-207)
§9.4 Failure-mode → proof-artifact → lint mapping table (B8)
§10. MemoryCoordinationTrace
§11. Warrant-degradation-trigger registry (B8 / II-5; producers live in DOC85)
§12. Domain-profile registry (ADQ-313 / B11)
§13. External dependency pinning (B7 — `ExternalDependencyRecord` with `source_freeze_ref`, `repo_path`, `content_hash`, `header_version`, `dependency_status`, `drift_response`; one record per external dependency in §3.2)
§14. Memory-object taxonomy table (F-struct #1 — columns: object name, schema_owner, storage, writer, durability class, proof obligation; one row per canonical object; the single index Stage 7 charters check against)
§15. Family-wide compute-budget envelope (B9 #d — declared in core; each member declares its hot-path cost)
§16. Cross-cutting lint suite (plan §17 + proof.* family + ownership lints from §1.2)
§17. Family-wide acceptance standard (plan §19)
§18. End-to-end round-trip golden scenario (F-struct #2 — names every object touched in this canonical phase order: **source observation → scope/policy preflight (ABC §7.7 Step 0 — policy GATES extraction, not after) → extraction admission → extraction route / source prep → AssertionCandidateEmission → canonical resolution (AssertionResolution + AssertionDedupeOutcome) → membership proposal/confirmation (DOC87) → policy re-check for use/delivery → context product planning (DOC80 registry + DOC84 assembly) → DOC24/KDA rendering → final prompt proof (ContextPacketProof + RenderSafetyProof + MemoryFlowCertificate) → learning eligibility (DOC85, proof-gated) → UI/Inspector explanation (DOC86, backed by MemoryCoordinationTrace). Stage 5R2 phase-order correction per synthesis fold-in: policy precedes extraction, not the reverse. Stage 5R2 also adds: a revocation case (source revocation cascade across DOC82 evidence + DOC87 membership + DOC84 carryover + DOC85 learning + DOC86 inspector) and a policy-change-mid-extraction case (must re-gate at resolution/write per OPA-031 ECSeamContract).** Integration test for the family.
§19. Per-external-doc amendment-magnitude assessment (F-struct #3 — one-line estimate per external dependency)
§20. Per-member obligations tables (F-struct #4 — each member declares MemoryCoordinationTrace obligations and degraded/blocked states)
§21. Retired names (pointer to DOC80_Retired_Names.md)
```
### DOC81 — Scope and Policy Plane (E1 + E2)
```text
§1. Scope plane (ScopeIdentityRoot / ScopeEquivalenceBinding / ScopeContainerRelation / ScopeBoundary / ScopeAffinity / ScopeResolutionResult / ScopePopulationHealth)
§2. Policy plane (MemoryPolicyDecision dimensional / EffectiveMemoryPolicy — SM-013, Round D §1.5 / PolicyMembraneDecision / PolicyObligation / PolicyStamp+Scope+Invalidation / PolicyDisambiguationRequest / EpisodePolicyEpoch)
§3. Coordination (capability/disclosure meet separation per Round D §1.6; ExtractionRoutePolicyEnvelope; PolicyCappedDAMSInput)
§4. Fail-closed rules (Round D §3.6)
§5. CascadingSourceInvalidation envelope (B3 split: envelope here; source-side payload in DOC82; execution of write in EC)
§6. DOC81 → DOC86 export (Patch B1): PolicyStamp + EffectiveMemoryPolicy reference + disclosure_class + restamp eligibility + safe-label constraints flow downward to UI member
§7. Lints (policy lint suite from plan §17.4 + scope lints + capability/disclosure lints)
```
### DOC82 — Canonical Knowledge Objects + Source / Evidence (E3 + E4)
```text
§1. Truth-apt object family — FULL Assertion lifecycle owned here (B9):
§1.1 Assertion
§1.2 AssertionVariant
§1.3 AssertionCandidate
§1.4 AssertionResolution + AssertionDedupeOutcome (ABC §7.8 orthogonal axes)
§1.5 AssertionMergeOperation / Reconciliation / Split / Unmerge
§1.6 AssertionRelationEdge (B3 split: schema here; storage at DOC72; write by EC)
§1.7 AssertionIdentitySignature
§1.8 AssertionLifecycleState + AssertionStalenessState + AssertionTemporalProfile + EpistemicKind + UseWarrant + WarrantEvaluationInput + EffectiveWarrant + SafetyClass + AssertionPrecondition
§1.9 AssertionCandidateEmission (B9 handoff object — produced by DOC83, owned here)
**Precedence note (per F6 / DR-001):** ABC R0.2 is senior to the Concept Model. Stage 7 charters must not reintroduce superseded Concept Model definitions.
§2. Source-bound synthesis consumption (per ADQ-219 — DOC73 owns CU; DOC82 consumes directly or via `SourceBoundSynthesisAdapter` wrapper — renamed from `SourceBoundSynthesisProjection` at Stage 5R2b; see §11.7 and §11.11)
§3. Source plane (SourceEnvelope, SourceArtifact ref / ArtifactSegment ref (DOC25-owned), SourceRegionRef/SourceSegmentRef, VisualGroundingState)
§4. Evidence plane (EvidenceRecord, EvidenceSupportEdge, SourceAuthorityScope+Class)
§5. Parse quality (SourceParseQualitySidecar consumption from DOC25, SemanticFormattingSignal)
§6. Extraction routing (ExtractionRouteContext)
§7. Equivalence + identity (EquivalenceTest, ClaimNature for namespaced contexts)
§8. CascadingSourceInvalidation source-side payload (B3 split — see DOC81 §5 for envelope and EC for execution)
§9. Lints
```
### DOC83 — Extraction Spine + Temporal / Working-State (E5 + E6)
```text
§1. Extraction spine — UP TO candidate emission only (B9):
§1.1 ExtractionContextPlan
§1.2 ExtractionResult + ExtractionSidecarKind + ExtractionOutputKind
(provenance note per F7: ExtractionOutputKind / ExtractionSidecarKind / ExtractionRoutePolicyEnvelope derive from ABC §7 + Round D extraction policy; not Concept Model §17.3)
§1.3 AssertionCandidateDisposition (ABC §7.8 7-value enum; SM-202)
§1.4 AlternativeExtractionRouting (B9 / F-3 — carries directive_candidate, procedure_candidate, cu_component_handling, evaluation_path; re-homes the four removed enum values' capabilities. Renamed from `NonAssertionExtractionOutcome` at Stage 5R2b for semantic clarity — see §11.11)
§1.5 CandidateOrigin + GroundingState
§1.6 ABC §7.7 12-step (Steps 0–11) normative classification decision tree — one-pass; no candidate is re-classified through the tree twice (Stage 5R2b correction — was incorrectly described as "Six-step" in Stage 5R; verified directly against ABC R0.2 §7.7 source 2026-05-27)
§1.7 Emit `AssertionCandidateEmission` (handoff to DOC82; B9 — DOC83 produces, DOC82 owns)
§1.8 ReviewQueueEntry + ReviewQueueBatch (auto-archive = suppress, not delete — ADQ-306)
§2. Working state
§2.1 IssueFrame (workbench — ADQ-206)
§2.2 IssueFrameUpdate / WorkingStateEvent
§2.3 WorkEpisode + EpisodeSegment (B3 split: lifecycle here; generation contract referenced from DOC73 if real)
§2.4 RecentActivityRollup CONSUMPTION CONTRACT (B3 split: DOC73 generates; DOC83 owns consumption + can_orient_only invariant + lints; ADQ-405)
§2.5 IncidentObservation
§2.6 FrictionEvent + FrictionPattern (promotion: ≥2 events OR 1 authoritative — ADQ-302; producers route through AssertionCandidate pipeline)
§3. NullResultMemory (with population/version/access-set proof)
§4. TopicCollectionDirective + TopicCollectionDirectiveBudget (stays in DOC83; references DOC87's Topic identity via lateral import DOC83 → DOC87)
§5. Lints
```
### DOC84 — Runtime Delivery + Prompt / Proof (E7 + E8)
```text
§1. Context products
§1.1 ContextProduct ASSEMBLY CONTRACT (B3 split: registry at DOC80 §6; assembly here)
§1.2 MemoryMembershipEdge CONSUMPTION (DOC87 owns the schema; DOC84 consumes it)
§1.3 SemanticProjection + ProjectionInvalidationPolicy
§2. MemoryContextPlan implementation (B3 split: contract at DOC80; implementation here)
§3. DAMS V5 substrate
§3.1 DAMS attenuator (substrate only — SM-020)
§3.2 AttenuatorContributor + ResolvedAttenuator
§3.3 PolicyCappedDAMSInput consumption
§3.4 contamination_risk threshold veto (B3 split: threshold rule at DOC81; computation here)
§3.5 HotPathCostBudget (declared against DOC80 §15 family-wide envelope)
§3.6 DAMS attenuator formula — candidate tanh formulation, test-vector-gated (ADQ-301)
§4. DOC24 packet integration (PacketInjectionManifest / CandidateInjectionManifest / FinalPromptInjectionManifest consumption; ContextAssemblyTrace)
§5. KDA rendering integration (KdaManifestPatch consumption; RenderBundle / PromptTextPackage consumption)
§6. Render safety
§6.1 RenderSafetyProof EXECUTION (B3 split: contract at DOC80 §9.2; execution here)
§6.2 DynamicHeaderLedger (per F3 — owner resolved against ADQ-305; recorded here)
§6.3 PriorDeliveryLedger + PriorDeliveryLedgerEntry
§6.4 MemoryContextPlanDeterminismInputs
§7. PromptShell runtime (consumes DOC80 §7 registry)
§8. SearchAffordance runtime eligibility (B3 split: surface contracts at DOC86; runtime eligibility here)
§9. CarryoverCapsule
§10. CognitiveDiff + Resume card
§11. Pipeline park/resume semantics (F-async — when PolicyDisambiguationRequest interrupts in-flight context assembly, name the suspended-pipeline state; resume path)
§12. Lints
```
### DOC85 — Memory Learning (E9) — rescoped at Stage 5R per Patch B6
```text
§1. Learning architecture
§1.1 Learning targets enum (Adjudication Delta §1.16): storage / extraction / classification / organization / scope-resolution / injection / UI / prompt-shell
§1.2 Learning write-back path (B9 / II-4: DOC85 owns the path; EC executes the durable write; proof-gated via DOC80 §9)
§2. Final-prompt-proof gating (ADQ-207 + SM-050 — no learning signal flows without proof)
§3. Warrant-degradation-trigger PRODUCERS (B8 / II-5; the registry lives in DOC80 §11)
§4. Friction promotion producers (consumes from DOC83 §2.5–2.6; promotes via AssertionCandidate per ADQ-302)
§5. BDSM consumption (ADQ-221 resolved — BDSM `dependency_status = partial`; v6.5 Draft v0.3.1 is the operative source; revised alongside DOC85 drafting at E9; specific surface contracts named in E9 charter where DOC85 drafting coordinates with BDSM revision work. Legacy DOC8 is **capability-mining input only**, NOT a runtime dependency — no row anywhere in this family may say "DOC8 computes," "DOC8 executes," "DOC8 owns runtime learning," or treat DOC8 as a current owner; lint `doc85.runtime_dependency_on_legacy_doc8` enforces.)
§6. False-suppression sampling
§7. Lints
```
### DOC86 — UI / Inspector / SearchAffordance (E10)
```text
§1. UserContextSurfacePlan
§1.1 VisibleContextActionSpec (every visible action: ECCommandRef + RegisteredRouteRef + degraded_noop_receipt_kind)
§1.2 HiddenContextRef
§1.3 VisibleIndicator
§2. InspectorVisibilityPlan (policy-gated inspect; backed by MemoryCoordinationTrace)
§3. SearchAffordance surface contracts (B3 split: surface here; runtime eligibility in DOC84 §8)
§3.1 SearchAffordancePreflight
§3.2 SearchAffordanceExecutionMode
§3.3 NullResultNotice route control
§4. Round D UI surfaces (review queue card, policy restamp panel, blocked-item explanation panel, privacy banner, Project quarantine chip, cross-project search expansion chip, task handoff scope-envelope confirmation, Topic Notice / Library Notice / Search More)
§5. SafeLabelPolicy + approved vocabulary registry (PropA/EC maintain vocab; UI consumes — ADQ-308)
§6. AvailabilityDisposition + BlockedScopeNotice + ReferenceOnlyNotice
§7. Membership rendering (consumes DOC87) — command-closed controls (add/remove/pin/reject/confirm); does NOT own MemoryMembershipEdge or TopicActivationState
§8. DOC81 → DOC86 import (B1): consume PolicyStamp + EffectiveMemoryPolicy refs + disclosure_class + restamp eligibility + safe-label constraints
§9. Lints (Round D UI lints + ui.* lint suite)
```
### DOC87 — Memory Organization & Membership (NEW slice between E6 and E7)
```text
§1. Membership family
§1.1 MemoryMembershipEdge (schema_owner = DOC87; storage = DOC72; write = EC; consumers = DOC83 / DOC84 / DOC86)
§1.2 MembershipLifecycleState (candidate / confirmed / pinned / rule-matched / removed / blocked / stale)
§1.3 MembershipSource (user-pinned / rule-matched / extraction-suggested / Project-mode / Library / etc.)
§1.4 MembershipInvalidationPolicy
§1.5 Membership invariants:
(a) membership confers no truth authority
(b) membership confers no policy override
(c) membership confers no source support
(d) a candidate membership is not a confirmed membership
(e) a removed or blocked edge must never reach injection
§2. Organizational containers
§2.1 Topic object (DOC87 owns identity; DOC86 renders)
§2.2 TopicLens organization semantics
§2.3 TopicActivationState (DOC87 owns the LIFECYCLE — latent_cluster / suggested_review / auto_created_lens / user_confirmed_topic / collection_enabled / paused / archived; DOC86 renders)
§2.4 Library-as-organizational-container (DOC87 owns container; LibrarySourceBinding / CorpusIndex / SourceCollection → DOC82 / DOC25; Library UI → DOC86 / DOC20)
§2.5 Episode / IssueFrame containers (Episode and IssueFrame OBJECTS owned at DOC83; DOC87 owns only the membership EDGES into them)
§2.6 Entity container (Entity OBJECT owned at DOC72; DOC87 owns only the membership EDGE into it)
§2.7 Project-mode container (Project-mode OBJECT owned at DOC20; DOC87 owns only the membership EDGE into it)
§3. Read-model contracts
§3.1 Organization read-model: list memberships of a container, list containers of a member
§3.2 Membership inspection (backed by MemoryCoordinationTrace)
§4. Consumers (lateral imports, not ownership)
§4.1 DOC83 → DOC87: Topic identity (TopicCollectionDirective references)
§4.2 DOC84 ← DOC87: membership consumption for ContextProduct planning
§4.3 DOC86 ← DOC87: membership rendering + Topic / Library UI
§4.4 DOC72 stores graph payload (membership edges as graph records)
§4.5 EC executes durable membership writes
§5. Membership lints (added at Stage 5R)
membership.edge_owned_by_delivery
membership.edge_used_as_truth_authority
membership.edge_bypasses_policy
membership.edge_confirmed_without_EC_write
membership.candidate_rendered_as_confirmed
membership.removed_or_blocked_edge_used_for_injection
membership.ui_control_without_command_closure
membership.library_membership_used_as_source_authority
membership.project_membership_used_as_scope_override
membership.edge_defines_non_membership_relation
§6. Membership fixtures (named here; bodies in the DOC87 charter at Stage 6)
fixture.membership.user_pinned_topic_renders_and_topic_slice_eligible
fixture.membership.rule_matched_stays_candidate_until_approved_and_policy_cleared
fixture.membership.library_gives_source_context_not_truth_authority
fixture.membership.project_biases_retrieval_only_when_mode_and_policy_permit
fixture.membership.project_off_retrieval_still_works
fixture.membership.removed_edge_appears_nowhere
fixture.membership.blocked_edge_hidden_or_safe_labeled
fixture.membership.topic_collection_directive_proposes_only
```
---
## 3. Owner boundaries
### 3.1 What DOC80 family owns (consolidated)
Per the 8-member section maps above. Key additions at Stage 5R: `MemoryMembershipEdge` (DOC87, not DOC84); the warrant-degradation-trigger registry (DOC80 core, not DOC85); the domain-profile registry (DOC80 core, ADQ-313); `ExternalDependencyRecord` (DOC80 core, B7); the memory-object taxonomy table (DOC80 core, F-struct #1); the family-wide compute-budget envelope (DOC80 core, B9); `AlternativeExtractionRouting` (DOC83, B9 — renamed from `NonAssertionExtractionOutcome` at Stage 5R2b; see §11.11); `AssertionCandidateEmission` (DOC82 owns, DOC83 produces, B9). Stage 5R2b additions: `SemanticProjectionContract` (DOC80 core, umbrella) + 4 narrowed projections (DeliveryProjection / UIProjection / OrganizationProjection / KnowledgeProjection); `SourceBoundSynthesisAdapter` (DOC82 wrapper-only — renamed from `SourceBoundSynthesisProjection`; see §11.7 / §11.11).
### 3.2 What DOC80 family explicitly does NOT own
- **DOC72** owns: six-dimensional knowledge graph topology + procedural taxonomy + standing-procedure / skill / task escalation + graph storage of Assertion family + Entity object.
- **DOC73** owns: ConsolidatedUnderstanding semantics (ADQ-219) + RecentActivityRollup generation semantics (ADQ-405; DOC83 owns consumption contract).
- **DOC25** owns: SourceArtifact, ArtifactSegment, materialization state, parse-quality scoring, prompt-injection isolation, `LibrarySourceBinding` (part of decomposed "Library" per ADQ-220 / B2 step 6).
- **DOC24** owns: packet assembly mechanics, Packet Inspector. DOC80 defines the ContextProduct registry + MemoryContextPlan contract; DOC24 assembles.
- **KDA** owns: KdaManifestPatch, deterministic rendering, RenderBundle assembly.
- **BDSM / DOC8** (Stage 5R2c — text corrected; ADQ-221 was resolved 2026-05-26 inter-round, not pending). BDSM `dependency_status = partial` (operative source: BDSM v6.5 Draft v0.3.1; revised alongside DOC85 drafting at E9). DOC8 = capability-mining input only (skeleton sketch; useful concepts but needs rewrite); NOT a runtime dependency.
- **EC** owns: durable Assertion writes, durable membership writes, policy enforcement, ScopeResolutionResult computation, SearchAffordancePreflight policy check.
- **PropA** owns: policy rule input; namespaced ReasonCode producers (within DOC80 registry namespace).
- **DOC1** owns: Write Gate (promotion approval).
- **DOC11** owns: final runtime truth (OpenClaw native session).
- **DOC3** owns: procedural memory / skill lifecycle.
- **DOC9 (self-repair)** — DOC80 family **does NOT own DOC9** (F4 — explicit disclaimer). No active seam in this skeleton; if future work introduces one, it routes through the DOC80 core proof spine.
- **DOC15** owns: Cognitive Infrastructure Layer. DOC80 family imports the memory-touching seams.
- **DOC20** owns: Project-mode + Project / Library / Inspector UI implementation. DOC86 consumes Round D UI surfaces; DOC20 implements panels.
- **DOC23** owns: task graph execution + ClaimExtractorOutput. DOC83 consumes via ExtractionRouteContext.
- **DOC26** — UnifiedWorkspaceLibrary / Project Mode Control Surface is **aspirational** (AC-005 + ADQ-404). The DOC80 family imports nothing from DOC26 by default; if Stage 6 work surfaces a real dependency, it becomes a new OPA row. (F4 citation correction — earlier "AC-005 / ADQ-404" was the right basis; the wording is corrected here so the relationship is clear: the dependency is conditional on ADQ-202 / ADQ-404 resolution, not unconditional.)
External-dependency pinning per B7: each external doc listed in §3.2 receives an `ExternalDependencyRecord` (defined in DOC80 §13). Per-doc amendment-magnitude assessment in DOC80 §19 (F-struct #3).
### 3.3 Round D / ABC R0.2 — absorbed; ABC senior per DR-001 (with Stage 5R2b scoping note)
**Stage 5R2b scoping (per Claude R1 B2 GAP):** "ABC R0.2 senior" applies to ABC's *semantics* (identity / relation / warrant / disposition / merge / dedupe behavior). **D-SEED-2 deliberately overrides ABC §2.1's owner-table *placement* of memory schemas.** ABC §2.1 assigns Assertion / AssertionVariant to DOC72 and EvidenceRecord / EvidenceSupportEdge to the DOC73/DAMS seam; the DOC80 family re-homes those schemas to DOC82 per D-SEED-2 ("memory schemas have one authoritative home rather than staying scattered"). Stage 7 charter authors MUST treat ABC §2.1 as authoritative for *semantics*, NOT for *placement* — DOC80_Owner_Map.md is the canonical placement source.
Both target-package files (ABC R0.2 + Round D R0.2) are absorbed into DOC80 family content. ABC R0.2 is senior to the Concept Model and DAMS V5 Outline (Conflict Register DR-001). Stage 7 charters must not reintroduce superseded Concept Model definitions; the F6 precedence note is also embedded at DOC82 §1.
---
## 4. Per-schema ownership handoff
For full row-by-row detail see [`DOC80_Owner_Map.md`](../Owner%20Map/DOC80_Owner_Map.md). Below is the high-level handoff narrative.
### 4.1 From DOC72
- **Assertion family + AssertionVariant + AssertionCandidate + AssertionResolution + AssertionDedupeOutcome + AssertionRelationEdge + AssertionMerge ops + AssertionLifecycleState** → **DOC82** owns the full lifecycle and state machine (B9). DOC72 stores graph payload. EC executes writes. DOC72 amended to defer.
- **EvidenceRecord + EvidenceSupportEdge** → DOC82 owns; DOC72 stores; EC executes.
- **Procedural taxonomy + standing-procedure / skill / task escalation** → DOC72 retains (crown-jewel family). DOC83 references procedural lifecycle seams.
- **IssueFrame + IssueFrameUpdate / WorkingStateEvent** → DOC83 owns workbench; DOC72 amended to defer.
- **IncidentObservation + FrictionEvent + FrictionPattern** → DOC83 owns.
- **NullResultMemory** → DOC83 owns the freshness contract.
- **Entity** → DOC72 retains the object; DOC87 owns the membership edge into Entity.
- **MemoryMembershipEdge** → **DOC87 owns** (Stage 5R per ADQ-220); DOC72 stores graph payload; EC writes.
### 4.2 From DOC73
- **ConsolidatedUnderstanding** → DOC73 retains semantics (ADQ-219). DOC82 consumes directly OR via `SourceBoundSynthesisAdapter` wrapper (renamed from `SourceBoundSynthesisProjection` at Stage 5R2b — see §11.7 convergence obligation and §11.11 rename table).
- **VersionedClaim** — pending disposition per F2 (see Conflict / Disagreement Register DR-003 — matrix has no SM row; either map to AssertionVariant via lineage table OR assign a `schema_owner`).
- **RecentActivityRollup** → cross-owner: DOC73 generation; DOC83 consumption contract + can_orient_only invariant + lints (ADQ-405). B3 split: `RecentActivityRollup` (DOC73 generation-side) vs `RecentActivityRollupConsumptionContract` (DOC83 consumer-side).
- **Source-bound synthesis discipline** → DOC73 retains.
- **WorkEpisode** → DOC83 lifecycle; DOC73 generation if real.
### 4.3 From DOC24
- **MemoryContextPlan** → DOC80 core owns the contract (ADQ-211); DOC84 implements. (B3 split + B4 citation note: ADQ-211 covers MemoryContextPlan; `EffectiveMemoryPolicy` is wholly DOC81 per SM-013 / Round D §1.5.)
- **ContextProduct** → DOC80 core owns the registry (ADQ-203); DOC84 owns the assembly contract; DOC24 executes assembly.
- **RenderBundle + PromptTextPackage** → DOC24 + KDA retain; DOC84 consumes via render contract.
- **PacketInjectionManifest + CandidateInjectionManifest + FinalPromptInjectionManifest** → DOC24 retains; DOC84 consumes.
- **Packet Inspector** → DOC24 retains; DOC86 has the UI seam.
- **PromptShellVariant** → DOC80 core owns the registry (ADQ-208); DOC24 / KDA / DOC85 consume.
- **Final-prompt proof** → DOC80 core owns the contracts (ContextPacketProof + RenderSafetyProof); DOC24 + KDA + DOC11 execute. Failure-mode → proof-artifact → lint mapping in DOC80 §9.4 (B8).
- **DynamicHeaderLedger** → owner per ADQ-305 resolution; recorded in DOC80_Owner_Map.md and DOC84 §6.2. If ADQ-305 itself reveals ambiguity, see Conflict Register DR-004.
### 4.4 From DOC25 (consumed, not handed off)
DOC25 retains SourceArtifact, ArtifactSegment, materialization state, parse-quality scoring. DOC82 imports via SourceEnvelope. DOC87 imports `LibrarySourceBinding` (part of the decomposed "Library" — see B2 step 6).
### 4.5 Stays at original owner
DOC8/BDSM (Stage 5R2c — ADQ-221 resolved 2026-05-26: BDSM `dependency_status = partial`; DOC8 = capability-mining input only, NOT a runtime dependency), KDA, EC, PropA, DOC1, DOC11, DOC3, DOC20, DOC23 — all retain their respective ownership; DOC80 family imports only.
### 4.6 Matrix-gap dispositions (Stage 5R2c — all resolved; see §10.8 for full text)
- **WorkSession** — RESOLVED at Stage 5R2 (DR-005 closed): retained as light temporal grouping under DOC83 (working-state); not user-visible by default; WorkEpisode remains the coherent work unit. Lint: `worksession.disposition_unresolved_at_doc83_charter`. See §10.8.
- **VersionedClaim** — RESOLVED at Stage 5R2 (DR-003 closed): stays DOC73-owned (legacy lineage); DOC82 defines `VersionedClaim → AssertionVariant` lineage table. Lints: `versioned_claim.unmapped_to_assertion_variant`; `versioned_claim.lineage_table_missing`. See §10.8.
- **SM-040 (Library/Corpus intermixed)** — added to Retired Names at F1; matrix gap logged at DR-002.
- **SM-202 carry-forward** — RESOLVED at Stage 5R2 (DR-006 re-opened + corrected): SM-202 row now reflects the verified ABC §7.8 7-value disposition enum + orthogonal AssertionDedupeOutcome. Stage 5R2b renamed re-home schema `NonAssertionExtractionOutcome` → `AlternativeExtractionRouting` (DOC83).
### 4.7 DOC87 ownership (added at Stage 5R)
- `MemoryMembershipEdge` (was incorrectly at DOC84 in round-1 Stage 5; moved to DOC87)
- `MembershipLifecycleState`, `MembershipSource`, `MembershipInvalidationPolicy`
- `TopicLens` organization semantics (was at DOC86)
- `TopicActivationState` (the *lifecycle* — was at DOC86; DOC86 retains *rendering* only)
- Topic object identity
- Library-as-organizational-container
**Does NOT own:** truth (DOC82), source/corpus artifacts (DOC25/DOC73/DOC82), extraction (DOC83), `TopicCollectionDirective` / `TopicCollectionDirectiveBudget` (stay in DOC83 — lateral import to DOC87's Topic identity), policy/scope (DOC81), delivery/prompt products (DOC84), learning (DOC85), UI rendering (DOC86/DOC20), Project *mode* (DOC20), durable writes (EC), graph storage (DOC72).
---
## 5. Required lints (DOC80 family) — Stage 5R additions
DOC80 §16 cross-cutting lint suite now includes (in addition to plan §17):
- **proof.\* family** (B8 — failure-mode → proof-artifact → lint mapping in DOC80 §9.4):
- `proof.durable_write_without_memory_flow_certificate`
- `proof.render_without_context_packet_proof`
- `proof.render_without_render_safety_proof`
- `proof.export_without_memory_flow_certificate`
- `proof.carryover_without_memory_flow_certificate`
- `proof.delegation_without_memory_flow_certificate`
- `proof.learning_signal_without_context_packet_proof`
- **owner_map.compound_schema_owner** (B3 / §1.2)
- **core.process_vocabulary_in_runtime_object** (B10)
- **membership.\* family** (B2 / DOC87 §5) — 10 lints listed in DOC87 §5
- **external_dependency.unpinned** (B7 — ExternalDependencyRecord must exist for every external dependency in §3.2)
- **external_dependency.drift_unhandled** (B7 — `drift_response` must be defined)
- **compute_budget.member_cost_undeclared** (B9 — each member declares its hot-path cost against DOC80 §15 envelope)
---
## 6. Required fixtures (DOC80 family) — Stage 5R additions
In addition to plan §14 + Stage 6 charter fixtures:
- **End-to-end round-trip golden scenario** (F-struct #2) — to be named in DOC80 §18, drafted at Stage 6.
- **Membership fixtures** (DOC87 §6 — 8 named fixtures, bodies in DOC87 charter).
---
## 7. OP-A candidates — Stage 5R additions
The existing 24 OP-A candidate rows in `OP_A_Candidate_Disposition.md` are augmented at Stage 5R with (B2 step 12 + B9 #b):
- **OPA-025 — DOC72 ↔ DOC87**: graph storage of MemoryMembershipEdge
- **OPA-026 — EC ↔ DOC87**: durable membership write
- **OPA-027 — DOC84 ↔ DOC87**: membership consumption for ContextProduct planning
- **OPA-028 — DOC83 ↔ DOC87**: membership candidate emission from extraction
- **OPA-029 — DOC86 ↔ DOC87**: membership rendering + Topic / Library UI
- **OPA-030 — DOC83 ↔ DOC82**: AssertionCandidateEmission handoff (B9)
Stage 6 charter authoring adds per-slice OP-A sweeps.
---
## 8. Stage 5R self-audit
| audit item | result |
|---|---|
| All 11 BLOCKERS (B1-B11) applied | ✓ |
| All 8 FOLD-INS (F1-F7 + F-async + F-struct) applied | ✓ |
| Reviewer guardrails G-1 through G-4 honored | ✓ (no re-slicing; retired enums stay retired; cycle fixed exactly as named; no ARCHITECT_STOP) |
| Family member count 7 → 8 propagated | ✓ throughout §1, §2, §4 |
| Import-graph cycle fixed | ✓ via Import Graph patch B1 + this baseline DOC81→DOC86 / DOC86→DOC81 reversal |
| Contract/impl split eliminated; one-owner rule stated | ✓ §1.2 |
| ABC R0.2 senior note added per DR-001 | ✓ §3.3 + DOC82 §1 |
| External dependency pinning added | ✓ §13 + lints |
| Proof-spine lint family added | ✓ §16 + DOC80 §9.4 |
| Warrant-degradation-trigger registry in core | ✓ §11 (was at DOC85) |
| Domain-profile registry in core | ✓ §12 |
| Process vocabulary removed from runtime core | ✓ §4 + B10 lint |
| Memory-object taxonomy table named | ✓ §14 (body at Stage 6) |
| Family-wide compute-budget envelope | ✓ §15 |
| End-to-end golden scenario | ✓ §18 (body at Stage 6) |
| Per-external-doc amendment-magnitude | ✓ §19 (body at Stage 6) |
| Per-member obligations tables | ✓ §20 (body at Stage 6) |
| ADQ-220 recorded as resolved | ✓ §0.3 + Architect Decision Queue update |
| ADQ-221 recorded as open at charter-gate tier | ✓ §0.3 + Architect Decision Queue update |
| Conflict / Disagreement Register entries logged for matrix-related findings | ✓ DR-002 through DR-006 (see Conflict Register) |
---
## 9. Companion files
- [`DOC80_Import_Graph.md`](../Import%20Graph/DOC80_Import_Graph.md)
- [`DOC80_Owner_Map.md`](../Owner%20Map/DOC80_Owner_Map.md)
- [`DOC80_Retired_Names.md`](../Retired%20Names/DOC80_Retired_Names.md)
---
## 10. Stage 5R2 additions (2026-05-27) — must-fix items + fold-ins
The following statements, contracts, and named concepts are added at Stage 5R2 per the round-2 red-team synthesis (`Memory Rebuild Docs/Flattening/Reviews/Red Team Responses/DOC80_Stage_5R_Red_Team_Reviews_and_Synthesis.md`, §4 must-fix items + §5 fold-ins). They are added here at the skeletal level so Stage 6 charters consume them; schema bodies (for the *named* concepts that don't already have full schemas — `MemoryMutationEnvelope`, `MemoryProvenanceGraph`) are Stage 7 charter material.
### 10.1 V5 non-goal (DOC80 §1, synthesis must-fix #12)
> **DOC80 V5 is local-first, single-principal, single-node, single-EC-writer unless a later spec explicitly extends it. Multi-device sync, cross-user memory, mobile sync, shared Project writes, and remote write authority are out of scope for V5.** Durable objects nevertheless carry stable IDs / generation refs (AssertionIdentitySignature, policy_generation_id, EpisodePolicyEpoch, MemoryCoordinationTrace) sufficient for future replay and conflict-detection analysis if V5 is later extended.
### 10.2 Manual-deletion sentence (DOC80 §1, synthesis must-fix #12)
> **EC can delete any memory object on request.** A memory object that is not reachable for retrieval/injection is, by the same token, not reachable for use — unreachability is self-limiting. Hard destruction is a manually-driven append-an-event; automated destruction-cascade machinery is NOT in scope for V5 (architect adjudication 2026-05-27: degradation, not destruction, is the privileged-clawback default).
### 10.3 DOC81 `LegalHoldState` (synthesis fold-in §5)
DOC81 adds a `LegalHoldState` flag (`{held, not_held}` with scope) and the family-wide invariant: **every automated destructive job MUST check `LegalHoldState` before acting, and MUST skip held objects.** Destructive jobs known to exist outside DOC80 (DOC72 §42 nightly graph cleanup / entropy / semantic-folding; DOC23 task-output retention/expiry; DOC25 source-deletion / materialization-clearing) honor the flag via OPA-033. Hard destruction itself remains manual.
### 10.4 DOC81 / DOC87 non-overlap invariant (synthesis fold-in §5)
> `ScopeContainerRelation` (DOC81) is policy/scope topology. `MemoryMembershipEdge` (DOC87) is organization. **Membership does NOT imply scope containment; scope containment does NOT imply UI membership; membership does NOT imply access permission, source authority, or truth authority.** Lints: `membership_edge_used_as_scope_container_relation`; `scope_container_relation_used_as_ui_membership`; `membership_edge_used_as_policy_authority`; `membership_edge_used_as_source_authority`; `membership_edge_used_as_truth_authority`.
### 10.5 `MemoryMutationEnvelope` — NAMED concept (synthesis fold-in §5, schema body deferred to Stage 7)
Cross-cutting concept named at Stage 5R2 (full schema body is Stage 7 charter material): a shared event-sourced mutation wrapper for durable writes, membership changes, source invalidation, policy restamps, delivery proofs, and learning write-back. Carries: actor, policy epoch, source epoch, transaction time, valid time, idempotency key, proof refs, rollback/invalidation refs. Subsumes the EC concurrency-revalidation rule from OPA-031. **Stage 5R2 lands the name; Stage 7 drafts the schema.**
### 10.6 `MemoryProvenanceGraph` — NAMED concept (synthesis fold-in §5, schema body deferred to Stage 7)
Cross-cutting concept named at Stage 5R2 (full schema body is Stage 7 charter material): a durable PROV-style provenance graph from `SourceArtifact → ExtractionResult → AssertionCandidateEmission → Assertion/Edge/Membership → ContextProduct → final prompt → learning signal`. Distinct from `MemoryCoordinationTrace` (per-request); the provenance graph is the durable cross-request artifact. **Stage 5R2 lands the name; Stage 7 drafts the schema.**
### 10.7 DOC82 ↔ DOC83 disposition / resolution seam (synthesis must-fix #6)
The seam is stated explicitly here at Stage 5R2 (do **NOT** relocate `AssertionCandidateDisposition`; it stays at DOC83):
> **DOC83 owns extraction triage and candidate emission.** DOC83 emits a *recommended* `AssertionCandidateDisposition` (ABC §7.8 7-value enum, verified at Stage 5R2 — see DR-006 corrected resolution) as part of `AssertionCandidateEmission`.
>
> **DOC82 owns `AssertionCandidate`, `AssertionResolution`, `AssertionDedupeOutcome`, and the ABC §7.8 anti-overlap rule.** DOC82 is the canonical resolution authority. Because DOC82 owns resolution, ABC §7.8's "do not allow multiple overlapping resolution/disposition enums" rule is enforced by DOC82.
>
> Lints: `assertion.overlapping_resolution_disposition_enum`; `assertion.doc83_final_resolution_without_doc82`; `assertion.doc82_resolution_missing_doc83_emission_ref`.
### 10.8 VersionedClaim + WorkSession resolutions (synthesis must-fix #8)
- **VersionedClaim:** stays DOC73-owned (legacy lineage); DOC82 defines a `VersionedClaim → AssertionVariant` lineage table. Charter requirements: `versioned_claim_ref`, `source_cu_ref`, `source_span_refs`, `assertion_variant_ref`, `lineage_kind`, `preserved_fields`, `lost_or_transformed_fields`, `migration_status`, `review_required`. Lints: `versioned_claim.unmapped_to_assertion_variant`; `versioned_claim.lineage_table_missing`. **DR-003 closed at Stage 5R2.**
- **WorkSession:** retained as a light temporal grouping under DOC83 (working-state); not user-visible by default; WorkEpisode remains the coherent work unit; EpisodeSegment remains the finer boundary. Lint: `worksession.disposition_unresolved_at_doc83_charter`. **DR-005 disposition recorded at Stage 5R2.**
### 10.9 `ECSeamContract` (synthesis must-fix #9 — see OPA-031)
EC is marked `dependency_status = partial / moving` in DOC80 §13 `ExternalDependencyRecord`. The `ECSeamContract` covers: durable write execution (Assertion / membership / learning write-back / policy enforcement / scope resolution / command execution / source revocation execution / audit + replay / transaction ordering / compare-and-swap or `dedupe_basis_generation_id` optimistic-concurrency token / policy-generation re-gating). See OPA-031 for the full contract obligations. Lints: `ec.dependency_not_marked_partial_or_moving`; `ec.durable_write_without_ec_execution`; `ec.dedupe_write_without_generation_revalidation`; `ec.policy_generation_changed_without_regate`; `ec.learning_writeback_without_ec_execution`; `proof.durable_write_by_non_ec_actor`.
### 10.10 DOC87 charter ordering / conflict / idempotency prerequisite (synthesis fold-in §5)
The DOC87 charter cannot write fixtures without membership transition ordering, conflict resolution, and idempotency. These prerequisites are named here at Stage 5R2 as charter-input obligations: DOC87 must declare its membership transitions as `MemoryMutationEnvelope` instances (§10.5), with explicit transition-ordering rules and idempotency keys. Tracked via OPA-032 + new charter-input OP-A row at Stage 6.
### 10.11 CascadingSourceInvalidation fan-out — 5-plane verification (synthesis fold-in §5)
The existing `CascadingSourceInvalidation` primitive (SM-208, split per B3) MUST fan out to all five planes affected by source revocation:
- DOC82 support edges → invalidated / verify_required
- DOC87 source-derived memberships → restamped / removed / hidden
- DOC84 PriorDeliveryLedger + CarryoverCapsule → invalidated
- DOC85 learning signals → ineligible for future utility
- DOC86 Inspector → safe-labels or suppresses per disclosure policy
EC executes durable writes / receipts. Lints: `revocation.support_edge_survives_revoked_source`; `revocation.membership_survives_revoked_source_without_restamp`; `revocation.carryover_capsule_survives_revoked_source`; `revocation.learning_credit_after_revocation`; `revocation.inspector_leaks_revoked_source`; `revocation.published_view_not_invalidated_after_revocation`. **The wiring check is a Stage 6 charter obligation per fold-in.**
### 10.12 Memory-object classification table (synthesis fold-in §5; cross-ref §14)
DOC80 §14 already names the memory-object taxonomy table (F-struct #1). Stage 5R2 confirms the column set (no premature `network_compatibility_required?`): `object_family / owner / truth_apt? / source_bound? / durable? / derived-projection? / policy_gated? / delivery_eligible? / ui_visible? / learning_eligible? / notes`. Seed rows include Assertion, AssertionVariant, ConsolidatedUnderstanding (DOC73 consumed by DOC82), EvidenceRecord, EvidenceSupportEdge, MemoryMembershipEdge (DOC87), TopicLens (DOC87), TopicCollectionDirective (DOC83), IssueFrame, RecentActivityRollup (DOC73 generation / DOC83 consumption), NullResultMemory, ContextProduct, ResumeCard (renamed from CognitiveDiff — see §10.13), LearningSignal. **Stage 6 fills in the table body.**
### 10.13 `CognitiveDiff` → `ResumeProjection` / `ResumeCard` rename (synthesis fold-in §5)
Demote `CognitiveDiff` to `ResumeProjection` / `ResumeCard`. Definition: a derived presentation over IssueFrame, RecentActivityRollup, PriorDeliveryLedger, MemoryCoordinationTrace, and DOC87 membership. **NOT truth-bearing; NOT evidence; invalidated when source refs invalidate.** Lints: `cognitive_diff.canonical_without_architect_approval`; `resume_card_used_as_evidence`.
### 10.14 Embedding-model-migration refs (synthesis fold-in §5)
`AssertionIdentitySignature` and any `semantic_equivalence` dedupe MUST record `embedding_model_ref` and `embedding_generation_id` where embeddings contribute to equivalence/similarity. Embedding-model migration invalidates or rechecks: semantic-equivalence dedupe results, related projections, vector indexes, and affected retrieval hints. Lints: `embedding.semantic_equivalence_without_model_generation`; `embedding.model_migration_without_dedupe_recheck_plan`.
### 10.15 Observability / health seam (synthesis fold-in §5)
DOC80 core owns the health-signal vocabulary; EC / Q owns `MemoryPlaneHealthReadModel` with DOC80 member contributions. Seed counters: `source_revocation_backlog`, `membership_restamp_backlog`, `policy_restamp_failures`, `proof_artifact_missing_count`, `topic_future_watch_budget_exhausted`, `search_affordance_preflight_failure_count`, `learning_signal_suppression_count`, `review_queue_depth`, `contested_assertion_rate`, `warrant_distribution`. Lint: `member.missing_health_counters`.
### 10.16 Scale / quota assumptions (synthesis fold-in §5)
Extend `FamilyWideComputeBudget` (DOC80 §15) toward a `MemoryOperationQuota` with: `max_topic_future_watch_runs`, `max_review_queue_backlog`, `max_source_invalidation_fanout_per_cycle`, `max_learning_replay_per_window`, `max_search_affordance_prefetch`, `max_membership_restamp_batch_size`, `max_revocation_cascade_batch_size`, `background_yield_to_hot_path`. Lints: `quota.topic_future_watch_unbounded`; `quota.review_queue_unbounded`; `quota.source_revocation_fanout_unbounded`; `quota.membership_restamp_unbounded`; `quota.learning_replay_unbounded`.
### 10.17 ABC §21 normalization-object placement check (synthesis fold-in §5)
Stage 6 charter input — verify/add Owner Map rows for: `WarrantEvaluationResult` (likely DOC82 §1.8 — Claude's round-1 F2 also flagged), `WarrantConsequenceRegistry`, `DomainProfileWarrantPolicy`, `IngestionCostBudget`, `PromotionGateRecord`, `ConsideredItemLedger`, `PromptShellExposure`. Anything missing should be slotted; nothing requires a new family member.
### 10.18 ADQ-221 drift sweep (synthesis must-fix #10(b))
Stage 5R2 swept all skeletal/Owner Map/Import Graph prose for "BDSM pending" and "DOC8 runtime" language and updated to reflect ADQ-221's resolved status (BDSM partial / DOC8 capability-mining only). The DOC85 §5 language was tightened (this file, above) and the Owner Map BDSM/DOC8 rows were updated. Lints: `doc85.runtime_dependency_on_legacy_doc8`; `doc85.learning_computation_owned_by_phantom_doc8`.
### 10.19 Process discipline — cross-artifact drift sweep (synthesis must-fix #10(c))
Stage 5R revealed that patches landed in the four primary artifacts but not in OP-A, the plan file, the ADQ register/RUN_STATE prose, or SM-202. This is a generic pattern, not a one-time bug. **New Stage 5R2 closing-step discipline:** after every artifact patch, sweep dependent companion files for consistency:
- OP-A Candidate Disposition (every owner change → check OP-A rows)
- Owner Map placeholder rows (every resolved DR → clear placeholder)
- Plan file §12 slice list (every family-membership change → amend plan)
- ADQ status references in skeletal and Owner Map prose
- Supersession Matrix + Retired Names + Owner Map citations (every enum/name change → reconcile all three)
- Any prose that asserts an architectural fact whose canonical home is a different file — verify the canonical file matches
Future patch rounds run this sweep as a closing step before claiming completion. This is a structural defense, not just a one-time reconciliation.
---
## 11. Stage 5R2b additions (2026-05-27) — audit-gap fixes from underlying reviews
The synthesis at §4/§5 distilled the multi-reviewer findings into 12 must-fix + 13 fold-in items (all landed in §10 above). An audit against the underlying Claude / ChatGPT / Codex reviews surfaced 22 additional items the synthesis didn't roll up. Will (architect) authorized all of them on 2026-05-27. They land here.
### 11.1 Recovery / replay seam (per Claude R2 A-1 GAP + ChatGPT §7)
DOC80 family does NOT own backup/recovery/corruption-recovery but depends on it. The seam is named here at Stage 5R2b:
> Recovery / replay is **EC + DOC72 + DOC25 owned**, with DOC80-family rebuild hooks. DOC80 members MUST classify their artifacts as `canonical` (durable, replay source) or `derived` (projection, rebuilt from canonical). Every derived DOC80-family artifact names its rebuild sources. Every durable DOC80-family mutation is represented in EC's replay/audit sources. **Replay-completeness invariant:** for any durable Assertion / AssertionVariant / MemoryMembershipEdge / EvidenceSupportEdge / PolicyStamp / learning signal in the system, the EC audit log contains the originating `MemoryMutationEnvelope` event sufficient to rebuild the canonical state by replay.
Lints: `recovery.derived_artifact_without_rebuild_source`; `recovery.proof_artifact_missing_canonical_ref`; `recovery.membership_edge_without_replay_source`; `recovery.learning_signal_without_replay_or_audit_source`; `recovery.replay_completeness_invariant_violated`.
### 11.2 Consistency / concurrency / ordering model (per Claude R2 A-5 + Codex R2 A-5 GAP)
Added to DOC80 §1 (Purpose / scope / non-goals) as a named assumption:
> **Consistency model (V5):** single-node, single-EC-writer, single-principal (per V5 non-goal §10.1). EC's serialized write is the ordering authority. Concurrent submissions from multiple chat windows / scheduled runs / background jobs serialize through EC; `AssertionDedupeOutcome` is revalidated against current state inside EC's serialized write (compare-and-swap via `dedupe_basis_generation_id`, per OPA-031 `ECSeamContract`). Mutation ordering at the family level is provided by `MemoryMutationEnvelope` (Stage 7 schema body), which carries `transaction_time` and `valid_time` (see §11.8 bitemporal). No eventual consistency / CRDT semantics in V5; deferred to V6+ if multi-device sync is later approved (ADQ-222).
### 11.3 EpisodePolicyEpoch extraction-side policy-generation re-gate (per Claude R2 B-2 GAP)
ABC §7.7 Step 0 gates extraction at the start of the triage tree. **Stage 5R2b rule:** if `policy_generation_id` changes between extraction admission (Step 0) and `AssertionResolution` (Step 11 / EC durable write), the candidate MUST be re-gated at Step 0 with the new policy generation. EC's `ECSeamContract` (OPA-031) covers the resolution/write side; this rule covers the extraction-start-to-resolution span. Owner: DOC83 (extraction triage) + DOC81 (policy-generation boundary).
Lints: `extraction.policy_generation_changed_without_step_0_regate`; `policy.extraction_started_under_obsolete_policy_generation`.
### 11.4 Invariant enforcement-point naming (per Codex R2 B-3 GAP)
Each named invariant in the family must have BOTH a runtime gate (the decision point that prevents violation) AND a Stage 9 lint. Stage 5R2b records the runtime gate owner for the load-bearing invariants:
| invariant | runtime gate (owner / location) | Stage 9 lint |
|---|---|---|
| `can_orient_only` (RecentActivityRollup) | DOC83 RecentActivityRollupConsumptionContract; DOC84 packet assembly check | `revocation.recent_activity_used_as_evidence` |
| removed/blocked membership edge never reaches injection | DOC87 MembershipLifecycleState gate at DOC84 ContextProduct planning; DOC84 packet-assembly check | `membership.removed_or_blocked_edge_used_for_injection` |
| no learning signal without proof | DOC85 learning-signal eligibility check; DOC11 ContextPacketProof presence at handoff | `proof.learning_signal_without_context_packet_proof` |
| DAMS eligibility ceiling never exceeded | EC `PolicyCappedDAMSInput` construction at DOC81; DOC84 DAMS substrate enforcement | `dams.eligibility_ceiling_violation` |
| EC is sole durable writer | EC write API; all non-EC writers blocked at the seam | `proof.durable_write_by_non_ec_actor` |
| ABC §7.8 anti-overlap (no duplicate resolution/disposition enums) | DOC82 resolution-authority check at AssertionResolution | `assertion.overlapping_resolution_disposition_enum` |
| `LegalHoldState` honored by destructive jobs | DOC81 LegalHoldState query at every destructive-job invocation (DOC72 §42 / DOC23 / DOC25) | `legal_hold.destructive_job_skipped_check` |
Stage 6 charters add member-specific runtime-gate owners for any invariants not in this table.
### 11.5 DOC15 import seam check (per ChatGPT §3.22)
DOC15 (Cognitive Infrastructure Layer) may have injection hierarchy, token budgets, context assembly, and memory/context/self-learning audit material that affects more than DOC86. Stage 6 charter input — verify DOC15 import seams:
- **DOC84 ← DOC15** for injection hierarchy, token budgets, context assembly constraints (if still operative — verify against DOC15's current draft).
- **DOC85 ← DOC15** ONLY if learning signals or CIL learning interfaces remain relevant after E9 reconciliation with BDSM v6.5.
- **DOC86 ← DOC15** for UI / control surfaces (already in Import Graph §3).
Lint: `doc15.context_budget_import_missing`.
### 11.6 DOC26 citation check (per ChatGPT §3.23)
DOC26 (`UnifiedWorkspaceLibrary`) is cited as `aspirational; conditional on ADQ-202 / ADQ-404`. Stage 6 charter input — verify DOC26 is a real current owner doc and the cited authorization exists. If valid: pin via `ExternalDependencyRecord`. If invalid: remove the import or mark `parked`. Lint: `import_graph.invalid_authorization_citation`.
### 11.7 SourceBoundSynthesisAdapter (renamed from SourceBoundSynthesisProjection) — convergence obligation (per Claude R1 B2 SUGGESTION)
If the conditional `SourceBoundSynthesisAdapter` (renamed at §11.11 below) activates at E3/E4 reconciliation (i.e., DOC73 CU semantics diverge from the source-bound-synthesis contract), Stage 5R2b adds a **convergence obligation**:
> Adapter activation creates an OP-A obligation (tracked as OPA-035 in OP_A_Candidate_Disposition.md) requiring EITHER (a) DOC73 to converge to the source-bound-synthesis contract within a stated timeframe, OR (b) architect to bless permanent divergence via a new ADQ. Without one of those two outcomes, the adapter cannot silently ossify into a permanent local redefinition.
Lint: `adapter.silent_ossification_without_convergence_obligation`.
### 11.8 Bitemporal axes on Assertion (per Claude R2 D-2 BETTER_IDEA — confirmed by architect)
DOC82 §1 Assertion family carries explicit bitemporal axes: `valid_time` (when the asserted proposition holds in the world) and `transaction_time` (when the system recorded the assertion). This enables time-window warrant degradation, litigation-support queries ("what did I know about X as of date D"), and audit-trail integrity.
> **Bitemporal contract:** every Assertion / AssertionVariant carries `valid_time_start` / `valid_time_end` (in-world validity, possibly open-ended) and `transaction_time_start` / `transaction_time_end` (system-record validity, closed by superseding mutations). `EvidenceSupportEdge` carries the valid_time / transaction_time of the underlying source-span snapshot. `MemoryMutationEnvelope` (§10.5 Stage 5R2 / Stage 7 schema body) propagates transaction_time as its `transaction_time` field and valid_time as a payload field. Stage 7 owns the field-level schema.
Lints (named now; enforcement at Stage 9): `bitemporal.assertion_missing_valid_time`; `bitemporal.assertion_missing_transaction_time`; `bitemporal.evidence_edge_missing_source_span_temporal_snapshot`.
### 11.9 Monotonicity / algebraic invariants (per Claude R2 D-3 + Codex R2 D-3)
Stated as algebraic laws at Stage 5R2b (enforcement landing in Stage 9 lints + Stage 6 charter fixtures):
> **Membership monotonicity:** membership never increases truth or warrant. `MembershipLifecycleState` transitions cannot raise an Assertion's warrant.
>
> **Policy monotonicity:** policy may only narrow without an explicit `PolicyStampRestamp`. EffectiveMemoryPolicy meets monotonically restrict; restamp is the ONLY widening path; restamp cannot grant access beyond original ceilings (ADQ-316).
>
> **Source revocation monotonicity:** source revocation monotonically lowers eligibility until re-proof. `CascadingSourceInvalidation` cannot raise warrant; only re-proof through a fresh `EvidenceSupportEdge` to a non-revoked source can.
>
> **Learning monotonicity:** learning cannot upgrade warrant without canonical evidence. DOC85 learning signals adjust eligibility / staleness; they do NOT bypass the AssertionCandidate pipeline. Warrant transitions are a closed labeled state machine; no spontaneous transitions.
>
> **Injection-eligibility totality:** `injection_eligible: MembershipLifecycleState → bool` is a total function; `{removed, blocked}` always map to `false`; this is structural, not lint-only.
Lints: `monotonicity.membership_raised_warrant`; `monotonicity.policy_widened_without_restamp`; `monotonicity.revocation_raised_eligibility`; `monotonicity.learning_upgraded_warrant_without_evidence`; `injection_eligibility.non_total_function`.
### 11.10 SemanticProjection narrowing (per ChatGPT §3.19)
`SemanticProjection` is too broad to live in one place. Stage 5R2b narrows by plane (Owner Map rows added at §11.13 below):
- `SemanticProjectionContract` — **DOC80 core** (cross-family contract if cross-plane projections are needed; otherwise unused).
- `DeliveryProjection` — **DOC84** (ContextProduct-side projections of canonical objects).
- `UIProjection` — **DOC86** (UserContextSurfacePlan-side projections).
- `OrganizationProjection` — **DOC87** (TopicLens / Library-as-container / membership projections).
- `KnowledgeProjection` + `SourceBoundSynthesisAdapter` — **DOC82** (CU consumption + source-bound projections).
> **Projection invariants:** projection never owns truth; projection MUST carry source refs, generation id, invalidation policy, projection owner, and proof/read-model refs.
Lints: `projection.used_as_canonical_truth`; `projection.owner_missing`; `projection.missing_invalidation_policy`; `projection.missing_source_refs`.
### 11.11 Renames (per Claude R2 D-4 SUGGESTION)
Two Stage 5R-era names are renamed at Stage 5R2b. The skeletal sections / Owner Map / Retired Names / OP-A are updated to use the new names; the old names are added to the retired-name table with allowed historical context = "Stage 5R lineage only."
| old name | new name | reason |
|---|---|---|
| `NonAssertionExtractionOutcome` | `AlternativeExtractionRouting` | The old name was negation-named and confusingly overlapped with ABC §7.5's `ExtractionOutputKind` (which is the output-kind enum). The new name is positive, clearly identifies this as a *routing* decision (DOC83 routes triage outputs that are not `assertion_candidate`), and is distinct in role from `ExtractionOutputKind`. Relationship: `AlternativeExtractionRouting` is the routing decision; `ExtractionOutputKind` is the output-kind enum each candidate is bucketed into. The retired Concept Model §17.3 4-value capabilities (`directive_candidate`, `procedure_candidate`, `cu_component_handling`, `evaluation_path`) re-home via `AlternativeExtractionRouting` at DOC83. |
| `SourceBoundSynthesisProjection` | `SourceBoundSynthesisAdapter` | The old name's "Projection" suffix overloaded with `SemanticProjection` family (derived views). This object is NOT a derived view — it's a *conditional compatibility adapter* between DOC73's CU and DOC82's source-bound-synthesis contract, activated only if DOC73 reconciliation surfaces divergence (per ADQ-219). "Adapter" conveys the compat-shim role. |
Both renames cascade to: skeletal baseline §1, §2, §4, §10; `DOC80_Owner_Map.md` schema rows; `DOC80_Retired_Names.md` (old names added as lineage-only); `OP_A_Candidate_Disposition.md` references; Supersession Matrix (no change needed — SM-005 references the wrapper concept generically); skeletal §11.7 convergence obligation.
### 11.12 DOC85 charter explicitly two-phase (per Claude R2 E-1 GAP)
DOC85's E9 charter cannot be finalized in one pass: ADQ-221 explicitly defers "specific BDSM surfaces DOC85 may consume" to the charter, and BDSM v6.5 Draft v0.3.1 is itself being revised alongside DOC85. Stage 5R2b records the two-phase structure:
> **DOC85 E9 charter is explicitly two-phase:**
> - **Phase 1 (Stage 6, with the other charters):** charter the learning architecture, write-back path, proof-gating, warrant-degradation-trigger producers, friction-promotion producers. DO NOT name specific BDSM surface contracts.
> - **Phase 2 (after BDSM v6.5 next revision):** name the specific BDSM surfaces DOC85 consumes; this happens once BDSM revision aligns with the DOC80 family architecture. May be a Stage 6 patch or a Stage 7 charter addendum.
>
> DOC85 E9 charter SHOULD be sequenced last among the Stage 6 charters to maximize the BDSM-revision coordination window.
### 11.13 Library decomposition gated on ADQ-202 (per Claude R1 D2 SUGGESTION)
The Library 4-way decomposition (DOC87 container + DOC25 LibrarySourceBinding/CorpusIndex/SourceCollection + DOC82 SourceEnvelope seam + DOC86/DOC20 UI) is authorized at Stage 5R (SM-040) but the actual Corpus hierarchy remains open at ADQ-202. **Stage 5R2b explicit gating:** the four owners may not fragment their portions before E4 charter authoring (when ADQ-202 resolves). Stage 6 sequencing: ADQ-202 resolves at or before E4; DOC87 organization-slice drafting AFTER ADQ-202; DOC25 / DOC82 / DOC86 / DOC20 amendments AFTER ADQ-202.
Lint: `library.decomposition_fragmented_before_adq_202_resolution`.