S6 E0 DOC80 Adj Card 1.md
Memory Rebuild Docs/Flattening/Reviews/Stage 6 Reviews/Stage 6 E0 Red Teaming/S6 E0 DOC80 Adj Card 1.md
------
# E0 / DOC80-Core — Red-Team Adjudication Card
**Artifact under review:** `Memory Rebuild Docs/Stage_6_Charters/E0_DOC80_Core/Charter_Draft.md` (DOC80 — Memory Control Plane Core, Stage 6 E0, Draft R1; §0–§17, ends §17). **Adjudicator:** Claude Opus 4.8, repo-verified via GitHub (`wbrody/Elnor-Specs@main`). **Commission:** `…/E0_DOC80_Core/E0_Adjudication_Prompt.md`. **Status:** proposal. Every fix is paste-ready and anchored to a `Charter_Draft.md` section. Apply after review; the adjudicator wrote nothing to the spec.
## 0. Header
**Review files adjudicated (2):**
- `…/Stage 6 Reviews/Stage 6 E0 Red Teaming/ChatGPT E0_DOC80_Core_Final_A_Grade_Review.md` — 40 findings (F1–F40) + T1–T20 coverage + 8-patch plan + 40-line ratification checklist.
- `…/Stage 6 Reviews/Stage 6 E0 Red Teaming/Claude Stage 6 EO RT Review 1.md` — 48 items (UR-01–UR-48; incl. 4 CONFIRMED, 4 BETTER_IDEA), repo-verification §2, cross-LLM dedup §8.
**Raw → deduped:** ~90 raw atomic findings (40 + ~44 substantive + 2 self-audit pre-seeds) → **52 adjudicated items**: the UR-## spine (ChatGPT F## fold in), the two self-audit items (SA-A, SA-B), and **5 adjudicator additions** (ADJ-1, ADJ-2, ADJ-3, UR-14b, UR-28b). UR-42–45 carried as a non-blocking BETTER_IDEA annex.
**Disposition vocabulary:** ACCEPT · ACCEPT-WITH-MODIFICATIONS (AWM) · ACCEPT-AS-FIX · REJECT · DEFER-TO-CHARTER(E#) · OPEN_FOR_ARCHITECT_REVIEW (OFAR) · ARCHITECT_STOP. Type tags: BUG / GAP / SUGGESTION / CONFIRMED / BETTER_IDEA / ARCHITECT_STOP.
**Conventions:**
- *Anchors* — each fix names `§X.Y` + a verbatim `REPLACE:`/`INSERT AFTER:` snippet; line numbers are hints only.
- *Global schema conventions (UR-26/27, ACCEPT)* — all proposed blocks assume branded-string IDs with schema prefixes, `snake_case` JSON / `PascalCase` interfaces / `snake_case` enum members (unless source-canonical), RFC3339-UTC timestamps, `sha256` hashes, `schema_version` on durable records. Stated once; applies throughout.
- *Coined-lint rule (binding, Claude §2.5/§8)* — lint names may be coined, but ChatGPT's `adapter.*`/`cu_doc73.*`/`monotonicity.<…>_monotone` tokens are **not** verbatim source → `proposed — Stage 9 confirms`. Canonical source tokens (`learning.utility_without_final_prompt_proof`, `erasure.retired_used_as_erased`, `projection.*`, `revocation.*`) are used **verbatim**.
- *Compactness* — Tier-1 and E0-owned new bodies are written out in full; minor rows give the disposition + anchor + the exact change (or "adopt UR-##/F## block," which is in-repo).
**Severity highlights (CRITICAL):** UR-01, UR-02, UR-03/04, UR-05, UR-07, UR-08/09, UR-31, UR-35, UR-38, UR-46.
**How to use:** apply **all accepted items** (Tiers 1–3 + the 5 additions ≈ **50 edits**) — this is the full revision, not a subset. Tier 4 = items that would be wrong to apply (REJECT) + items owned by a later charter/stage (DEFER), all enrolled in the Deferral Register (§7) so nothing is lost. Two items were genuine architect forks and are now **decided** in-card on "best-spec / conform-to-plan" grounds (UR-37, UR-38); veto at ratification.
**Open `⚠verify` roll-up:** V1 §3.4 trace current fields (UR-20); V2 Skeletal §10.7 = DOC82↔DOC83 seam→§12 (UR-39); V3 Skeletal §10.11/§11.9 wording (UR-08/47); V4 DR-001/Skeletal §3.3 "ABC senior" (UR-01 — ABC §9.2=17 verified directly); V5 §18 as E0 exit criterion (UR-35 — baseline checklist says "body at Stage 6"); V6 SM-060 verbatim row (cross-artifact); V7 phantom DOC8 `importing_member` cell (UR-30/37).
## 1. Section-map diff (outline vs Skeletal §2)
The baseline §2 defines DOC80's intended 21-section map; its own checklist marks §18/§19/§20 as "✓ (body at Stage 6)" — i.e. assigned to *this* charter.
| Baseline §2 intended | Draft location | Status |
| ------------------------------------------------------------ | ------------------------------ | --------------------- |
| §1 purpose/scope · §2 family membership | §0–§1.5 | ✓ |
| §3 owner imports + ext-dep pinning | §7 + §15.2 | ✓ |
| **§4 Shared runtime vocabularies (B10)** | — | **✗ DROPPED (UR-38)** |
| §5 ReasonCode · §6 ContextProduct · §7 PromptShell · §8 EffectiveMemoryPolicy ref | §2.1 · §3.1 · §2.3 · §3.2 | ✓ |
| §9 proof spine · §10 trace · §11 warrant-trigger · §12 domain-profile | §4 + §3.3 · §3.4 · §2.4 · §2.2 | ✓ |
| §13 ext-dep · §14 taxonomy (F#1) · §15 compute-budget · §16 lint suite | §7.4 · §6 · §10.1 · §16.3 | ✓ |
| **§17 Family-wide acceptance standard** | §14 + §15.3 (partial) | **~ PARTIAL (ADJ-3)** |
| **§18 Golden scenario (F#2)** | — | **✗ DROPPED (UR-35)** |
| **§19 Amendment-magnitude (F#3)** | — | **✗ DROPPED (UR-38)** |
| **§20 Per-member obligations (F#4)** | — | **✗ DROPPED (UR-38)** |
| §21 retired-names pointer | §17.3 | ✓ |
**Verdict:** confirms the four silent drops (§4/§18/§19/§20) + one partial (§17); **no other drops**. Everything else is present, re-organized into the draft's §0–§17.
## 2. Master decision index
✓ = ACCEPT/AWM/ACCEPT-AS-FIX · ✗ = REJECT · ~ = DEFER/OFAR/CONFIRMED/ARCHITECT_STOP.
**§A Identity/scope/lifecycle (§1):** UR-29 lifecycle lints (REJECT engine / ACCEPT lints) ~/✓ · UR-40 injection necessary-not-sufficient ✓ **§B Registries (§2):** UR-10 ReasonCode namespace ✓ · UR-37 DOC25 producer (DECIDED ACCEPT) ✓ · UR-11 DomainProfile vector ✓ · UR-13 derived cache-eligibility ✓ · UR-14 warrant-trigger CONFIRMED ~ · **UR-14b richer trigger entry ✓** · UR-22 warrant carveout ✓ **§C Consumption contracts + MFC (§3):** **UR-01 ContextProductKind 17 (P0) ✓** · **UR-02 FinalPromptTruthRef ✓** · **UR-03/04 MFC union+ec_path ✓** · UR-15 plan grammar ✓ · ADJ-1 disposition enum (ABC §9.4) ✓ · UR-16 registry/assembly AWM ✓ · UR-19 ReproducibilityKey ✓ · UR-20 trace correlation ✓ · ADJ-2 instance-ID DOC8→DOC85 ✓ **§D Proof spine (§4):** UR-05 edge-level membership ✓ · UR-06 outcome-derived ✓ · **UR-07 retention classes ✓** · F13 RenderSafetyCheck vocab AWM ✓ **§E NAMED-only (§5):** UR-18 bitemporal AWM ✓ · F19/F20 MME/MPG handoff ✓ · UR-41 embedding un-merge ✓ **§F Classification/ext-dep/ECSeam (§6–§7):** UR-12 ext-dep pins ✓ · UR-17 ECSeamContract ✓ · UR-30 classification table+N12 ✓ **§G Revocation/projection/monotonicity/ops/conventions (§8–§12):** **UR-08 5-plane cascade ✓** · **UR-09 contrary-edge polarity ✓** · UR-47 four laws (largely present) AWM ✓ · UR-48 3-column table ✓ · **UR-31 SemanticProjectionContract ✓** · UR-23 health ✓ · UR-24 quota ✓ · UR-25 background strategy ✓ · UR-26 schema_version ✓ · UR-27 branded IDs ✓ **§H ABC §21/AC/golden/preservation/drift (§13–§17):** UR-33 AC-004/005 ✓ · UR-34 placement (records draft) ✓ · **UR-35 §18 golden scenario ✓** · **UR-46 named-lint inventory ✓** · UR-36 preservation matrix ✓ · UR-32 gate table ✓ · **UR-38 restore §4/§19/§20 (DECIDED ACCEPT) ✓** · ADJ-3 §17 acceptance-standard partial ✓ · UR-21 citation collision ✓ · UR-39 §10.7 mislabel ✓ · F35 drift sweep ✓ · SA-B fold-in arithmetic CONFIRMED-resolved ~ **§I Cross-cutting rejects:** UR-28 meta-schemas ✗ / **UR-28b naming convention ✓** · GPT over-scope bodies ✗ · rename ContextProduct→ContextArtifact ✗ **§J BETTER_IDEA annex:** UR-42–45 (hash-chained proof log / as-of queries / verifiable Inspector / scoped co-counsel export) DEFER ~
## 3. Per-item rows
### §C — Blocking core
**UR-01 — [§3.1] `ContextProductKind` 17-vs-14 source conflict (ACCEPT · BUG · P0).** *Raised:* ChatGPT F1, Claude UR-01, self-audit SA-A (under-claimed as Stage-7 confirm). *Problem:* §3.1 declares 14 kinds "(SM-060)" labelled "illustrative … confirm at Stage 7." **Verified directly:** ABC R0.2 §9.2 enumerates exactly **17**; ABC is senior (DR-001/Skeletal §3.3, ⚠V4) and a target-freeze input; SM-060's "14" has no merge rationale; the draft's names match neither (~88% invented). The "outside the read-list/Stage-7" framing is wrong — the source is in-corpus and E7/E8 bind now. *Disposition:* adopt §9.2's 17; align entry to §9.3; delete §16.1 item 3; patch SM-060 (cross-artifact §8). `REPLACE` the `type ContextProductKind` block + its "illustrative" comment:
```ts
/** Canonical 17-kind registry — ABC R0.2 §9.2 (senior per DR-001/Skeletal §3.3; target-freeze input).
* Supersedes SM-060's stale "14" (no 17→14 merge exists; Round D R0.2 & Concept Model §17 reference but do NOT re-enumerate). */
type ContextProductKind =
| 'assertion_packet' | 'direct_memory_item' | 'topic_notice' | 'topic_slice'
| 'library_notice' | 'library_source_slice' | 'cu_source_bound_synthesis'
| 'recent_work_orientation' | 'issue_frame_orientation' | 'directive_block'
| 'procedure_block' | 'warning_constraint' | 'null_result_notice'
| 'conflict_notice' | 'search_affordance' | 'reference_only_notice' | 'blocked_scope_notice';
```
`REPLACE` `ContextProductDescriptor` with an ABC-§9.3-aligned entry (registry in E0; assembly stays DOC84):
```ts
interface ContextProductRegistryEntry {
kind: ContextProductKind; registry_owner: 'DOC80'; payload_schema_owner: OwnerDocId;
assembly_contract_owner: 'DOC84'; packet_executor: 'DOC24';
role_band: 'constraint'|'assertion'|'source'|'orientation'|'affordance'; // ABC §9.3
allowed_warrants: UseWarrant[]; allowed_support_roles: SupportRole[]; header_fields_required: string[];
default_budget_band: 'xs'|'s'|'m'|'l'; evictable: boolean; degrades_to?: ContextProductKind;
learning_target: 'allowed'|'disallowed'|'manifest_only'; candidate_injectable: boolean;
final_prompt_instance_spine_required: boolean; // ties UR-02 / ABC §9.5
}
```
Update §3.1 prose 14→17; fixture `…registry_has_exactly_14_kinds` → `…_17_kinds`. *Traceability:* ABC §9.2/§9.3 (verified), ADQ-203, SM-060, Owner Map 125–126. *Conflict:* both reviewers' 17 are identical; merged entry uses ABC §9.3 fields. **Do not conflate with SA-B's 14-vs-17** (unrelated, resolved).
**UR-02 — [new §3.5] `FinalPromptTruthRef` not wired (ACCEPT name-only · BUG · blocking E9).** *Raised:* ChatGPT F2, Claude UR-02. *Problem:* §4.1 gates learning on packet assembly, not executed prompt → DOC85 credits trimmed/suppressed/never-injected context. Skeletal §18 already states final-prompt-proof-gated learning; §3.4 already names a `FinalPromptInjectionManifest`. *Disposition:* name the hook; DOC11 owns the body (REJECT ChatGPT's full schema). `INSERT AFTER` §3.4:
```md
### §3.5 FinalPromptTruthRef — NAMED-only E0 hook (Skeletal §18; ADQ-207)
Runtime-truth body owner: DOC11/OpenClaw. E0 names the dependency + binds family invariants.
Carries (Stage7/DOC11 drafts): final_prompt_text_hash, injection-manifest ref, rendered/trimmed/suppressed span refs,
context_product_instance_id spine, prompt_shell_variant refs, DOC11 finalizer ref, runtime session/model-execution ref.
Final-prompt truth is required for executed-prompt render and ANY learning/utility credit; preview/export-only render
may use other proof targets but yields no learning credit.
```
`INSERT` §12.1 row: `| no learning/utility/prompt-shell credit without final-prompt survival | DOC85 eligibility; DOC11 FinalPromptTruthRef at handoff | learning.utility_without_final_prompt_proof |`. Lints: `learning.utility_without_final_prompt_proof` (canonical), + proposed `learning.utility_credit_for_trimmed_span`, `…for_suppressed_span`, `render.context_product_instance_id_lost_before_final_prompt`. *Traceability:* Skeletal §18, ADQ-207, ABC §9.5.
**UR-03/04 — [§3.3] MFC discriminated union + EC attestation-path (ACCEPT · BUG · blocking, Class A).** *Raised:* ChatGPT F3 (union), Claude UR-03/UR-04 (`ec_path`, absent from ChatGPT). *Problem:* §3.3 is one optional-ref interface → can mint a render cert with no proofs; and uniform `issued_by:'EC'` forces every interactive render onto the durable-write commit path. *Disposition:* replace with the union **including `ec_path`** (merged winner); drop per-flow `executor`. `REPLACE` `interface MemoryFlowCertificate {…}`:
```ts
type MemoryFlowKind = 'durable_write'|'render'|'export'|'carryover'|'delegation'|'learning_attribution';
interface BaseMFC { certificate_id: MemoryFlowCertificateId; schema_owner:'DOC80'; issued_by:'EC';
coordination_trace_ref: MemoryCoordinationTraceRef; policy_generation_id: PolicyGenerationId;
effective_policy_ref: EffectiveMemoryPolicyRef; ec_path:'serialized_durable'|'anchored_attestation'; created_at: string; }
interface WithheldMFC extends BaseMFC { outcome:'withheld'; flow_kind: MemoryFlowKind; withheld_reason_code: ReasonCodeId; }
interface DurableWriteMFC extends BaseMFC { outcome:'issued'; flow_kind:'durable_write'; ec_path:'serialized_durable'; mutation_envelope_ref: MemoryMutationEnvelopeRef; }
interface RenderMFC extends BaseMFC { outcome:'issued'; flow_kind:'render'; ec_path:'anchored_attestation'; context_packet_proof_ref: ContextPacketProofRef; render_safety_proof_ref: RenderSafetyProofRef; final_prompt_truth_ref: FinalPromptTruthRefId; }
interface ExportMFC extends BaseMFC { outcome:'issued'; flow_kind:'export'; ec_path:'anchored_attestation'; context_packet_proof_ref: ContextPacketProofRef; export_manifest_ref: ExportManifestRef; final_prompt_truth_ref?: FinalPromptTruthRefId; }
interface CarryoverMFC extends BaseMFC { outcome:'issued'; flow_kind:'carryover'; ec_path:'anchored_attestation'; context_packet_proof_ref: ContextPacketProofRef; carryover_capsule_ref: CarryoverCapsuleRef; }
interface DelegationMFC extends BaseMFC { outcome:'issued'; flow_kind:'delegation'; ec_path:'anchored_attestation'; context_packet_proof_ref: ContextPacketProofRef; delegation_payload_ref: DelegationPayloadRef; }
interface LearningAttributionMFC extends BaseMFC { outcome:'issued'; flow_kind:'learning_attribution'; ec_path:'serialized_durable'; context_packet_proof_ref: ContextPacketProofRef; final_prompt_truth_ref: FinalPromptTruthRefId; learning_signal_ref: LearningSignalRef; }
type MemoryFlowCertificate = WithheldMFC|DurableWriteMFC|RenderMFC|ExportMFC|CarryoverMFC|DelegationMFC|LearningAttributionMFC;
```
`INSERT` §12.1 invariant: *delivery attestations are EC-signed against a read-consistent policy generation and MUST NOT take a write-queue lock.* Lints add: `proof.render_without_memory_flow_certificate`, `proof.learning_attribution_without_memory_flow_certificate`, `proof.withheld_certificate_missing_reason_code`, `proof.flow_kind_required_ref_missing`, `proof.final_prompt_render_missing_final_prompt_truth`, `ec.delivery_attestation_on_serialized_write_path`. *Traceability:* ADQ-207, SM-050, Owner Map 150, Skeletal §10.9/§11.2.
**UR-15 + ADJ-1 — [§3.2] per-product request/disposition grammar + ABC §9.4 enum (ACCEPT · GAP · substantive).** ADJ-1 (missed by both): reviewers coined a 5-value disposition; **ABC §9.4 defines the canonical 7-value `ContextProductDecision.disposition`** — reconcile to it. `INSERT AFTER` `MemoryContextPlan`:
```ts
interface MemoryContextProductRequest { request_id: string; kind: ContextProductKind;
purpose:'answer'|'orientation'|'constraint'|'source_support'|'search_affordance'|'warning'|'carryover';
priority:'must_include'|'high'|'normal'|'low'; allowed_dispositions: ContextProductDecisionDisposition[];
max_budget_band:'xs'|'s'|'m'|'l'; fallback_kind?: ContextProductKind;
required_proofs:('context_packet_proof'|'render_safety_proof'|'memory_flow_certificate'|'final_prompt_truth_ref')[]; }
type ContextProductDecisionDisposition = // ABC §9.4 — canonical (ADJ-1); do NOT coin a parallel set
'inject_inline'|'inject_compact'|'reference_only'|'notice_only'|'search_affordance_only'|'blocked'|'suppressed_manifest_only';
// DOC84 records MemoryContextProductOutcome { request_id; decision_ref /* ABC §9.4 */; reason_codes }
```
`REPLACE` `requested_products: ContextProductKind[]` → `requested_products: MemoryContextProductRequest[]`. Lints: `context_plan.must_include_product_silently_dropped`, `…fallback_kind_not_in_registry`, `…required_proof_missing_for_product`, `…product_request_without_outcome`, `context_plan.disposition_not_in_abc_94_enum` (ADJ-1). Three-plan model (ADQ-209) CONFIRMED. *Traceability:* ADQ-211/209, ABC §9.4 (verified), Owner Map 127–128.
**UR-16 — [§3.1] registry/assembly boundary (AWM · minor).** Add §3.1 note: *`required_inputs_by_kind` lists input object refs only; per-kind assembly bodies are DOC84.* Owner Map 126. **UR-19 — [§3.1] determinism → ReproducibilityKey (ACCEPT · BUG · substantive).** Property ranges over **content + selected-product set**, not an instance-id. `INSERT` a single `ReproducibilityKey {request_input_hash, policy_generation_id, context_product_registry_version, memory_context_plan_version, prompt_shell_variant_id, shell_weight_generation_id, utility_bundle_generation_id, source_generation_id, membership_generation_id, budget_profile_id, domain_profile_id}` referenced by §3.1 determinism + §11.3 replay; invariant: *identical key ⇒ identical content + selected set; any learned weight MUST be a named input.* Lint `determinism.learned_weight_not_named_input`. (Claude UR-19 precision over ChatGPT F10.) **UR-20 — [§3.4] trace turn/session correlation (ACCEPT · GAP · substantive).** `INSERT` into the interface: `session_ref: SessionRef; turn_id: TurnId; request_correlation_id: RequestCorrelationId; parent_trace_ref?: MemoryCoordinationTraceRef;`. Lint `memory_coordination_trace.missing_turn_correlation`. ⚠V1. SM-100, Owner Map 204. **ADJ-2 — [§3.5/§3.1] instance-ID spine DOC8→DOC85 (ACCEPT · GAP).** ABC §9.5 says "BDSM/DOC8 utility attribution must use it"; DOC8 is phantom (ADQ-221) → spine references **DOC85**. Lint `context_product.instance_id_missing_from_learning_attribution`. ABC §9.5 (verified), ADQ-221.
### §D — Proof spine
**UR-05 — [§4.1] edge-level membership proof (ACCEPT · BUG · substantive).** `REPLACE` `membership_eligibility_checked: boolean;` → `membership_eligibility_results: MembershipEligibilityProof[];` + add `included_set_hash: ContentHash; excluded_set_hash: ContentHash;`. `INSERT`:
```ts
type MembershipLifecycleState = 'candidate'|'active'|'blocked'|'removed'|'stale'|'suppressed'|'archived';
interface MembershipEligibilityProof { membership_edge_ref: MemoryMembershipEdgeRef; lifecycle_state: MembershipLifecycleState;
injection_eligible: boolean; gate_owner:'DOC87'|'DOC84'; policy_generation_id: PolicyGenerationId; reason_codes: ReasonCodeId[]; }
```
Lints: `proof.membership_eligibility_boolean_only`, `…injected_membership_without_edge_level_result`, `…lifecycle_not_active`, `…missing_reason_codes`. SM-051, Owner Map 149. **UR-06 — [§4.2] outcome derived from checks_failed (ACCEPT · BUG · substantive).** `INSERT` invariant: *`outcome==='fail'` iff `checks_failed` non-empty; not independently writable.* Lints `render_safety.outcome_not_derived_from_checks`, `…failed_check_did_not_block_render`, `…executed_body_defined_in_doc80`. Owner Map 147–148. **UR-07 — [new §11.4] proof retention classes (ACCEPT · GAP · blocking).** `INSERT AFTER` §11.3:
```ts
type ProofRetentionClass = 'durable_audit_required'|'durable_if_effect_committed'|'transient_allowed_only_if_effect_not_committed'|'derived_rebuildable';
interface ProofArtifactRetentionRule { artifact_type: string; retention_class: ProofRetentionClass; retained_by:'EC'|'DOC11'|'DOC84'|'DOC85'; replay_required: boolean; audit_required: boolean; }
```
Rule: *any proof gating a durable write / final-prompt render / export / carryover / delegation / learning attribution is `durable_audit_required` (canonical, append-only) or referenced by its originating `MemoryMutationEnvelope`.* Lints `proof.gated_effect_without_retained_proof`, `…retention_class_missing`, `…transient_proof_used_for_durable_effect`. Skeletal §11.1, §5.1. **F13 — [§4.2] RenderSafetyCheck vocabulary (AWM · BUG · substantive).** Relabel the "proposed value set" comment → "closed E0 check vocabulary; per-check payload/registry Stage 7"; keep the 6 values; lint `render_safety.provisional_check_used_as_required_contract`. (Names+closes the vocab since E8 binds; defers only registry mechanics — reconciles ChatGPT F13 vs Claude UR-28.)
### §B — Registries
**UR-10 — [§2.1] ReasonCode namespace mechanics (ACCEPT · GAP · high, Class A).** `REPLACE` `type ReasonCodeNamespace = string;` + `ReasonCodeNamespaceAllocation` with lifecycle-bearing versions: namespace `pattern '^[A-Z][A-Z0-9_]{1,31}$'`; `state:'reserved'|'active'|'deprecated'|'retired'|'legacy_reserved'`; `allocated_in: SchemaVersionRef`; `replacement_namespace?`; `legacy_allowed_only?`. Add `pattern`/`introduced_in`/`replacement_reason_code_id` to `ReasonCode`. Lints add: `reason_code.namespace_collision`, `…namespace_state_legacy_emitted_runtime_code`, `…case_pattern_violation`. ADQ-310, SM-213, Owner Map 86. **UR-37 — [§2.1] DOC25 ReasonCode producer (DECIDED ACCEPT · BUG-drift · substantive).** *Decided on best-spec grounds:* the originating doc owns its codes; DOC25 originates parse/materialization/source-revocation conditions, so it is a producer (matches EC/PropA/DOC24/DOC20). Keep DOC25 in §2.1; `INSERT` rationale sentence. The "ungrounded" flag is bookkeeping → **grounding obligation** logged (preservation matrix + OP-A: ratify DOC25 producer; amend Owner Map 86 / ADQ-310). Veto at ratification. ADQ-310. **UR-11 — [§2.2] DomainProfile per-axis vector (ACCEPT · GAP · high, Class C).** `REPLACE` `restrictiveness_rank: number;` with:
```ts
type RestrictivenessLevel = 'open'|'normal'|'restricted'|'highly_restricted'|'blocked';
interface DomainProfileRestrictivenessVector { extraction:RestrictivenessLevel; rendering:RestrictivenessLevel; disclosure:RestrictivenessLevel;
export:RestrictivenessLevel; carryover:RestrictivenessLevel; delegation:RestrictivenessLevel; learning:RestrictivenessLevel; retention:RestrictivenessLevel; source_authority:RestrictivenessLevel; }
// E0 rule: effective = per-axis most-restrictive meet; missing|unknown|incomparable axis ⇒ conservative; multi-axis action allowed only if EVERY touched axis allows. DOC81 owns axis vocabulary/semantics.
```
Lints add: `domain_profile.scalar_rank_used`, `…incomparable_axis_without_fail_closed`. ADQ-313. (DOC81 axis *values* deferred — register §7.) **UR-13 — [§2.3] derived cache eligibility (ACCEPT · SUGGESTION).** Make `kv_cache_eligible` derived: `content_hash && policy_invariant && lifecycle_state==='active'`. Lints `prompt_shell.cache_eligible_without_content_hash`, `…cache_eligible_policy_variant`, `…retired_variant_used_for_new_packet`. ADQ-305. **UR-14 (CONFIRMED) + UR-14b (ACCEPT · SUGGESTION · substantive).** Registry correctly E0-owned (ADQ-312, Owner Map 171). **UR-14b:** extend `WarrantDegradationTrigger` with `allowed_producers: ProducerDocRef[]`, `allowed_consumers: ProducerDocRef[]`, `payload_schema_ref: string`, `introduced_in/deprecated_in?/retired_in?: SchemaVersionRef`, `replacement_trigger_kind?`, `default_reason_code: ReasonCodeId` — governance parity with UR-10. **REJECT** ChatGPT F12's full rewrite beyond this (no capability gain). ADQ-312. **UR-22 — [§2.4] warrant-degradation carveout (ACCEPT · GAP · high).** `INSERT` §2.4 carveout: exempt user-asserted durable facts, authority-fixed content, static facts, fixed legal citations/dates/named entities, user-locked memories, via an `authority_class` field (`user_asserted|authority_fixed|source_derived|inferred`) **owned by DOC82/DOC81**. Lints `warrant_degradation.authority_fixed_fact_degraded`, `…static_fact_degraded`, `…user_locked_memory_degraded`. §1.6 failure mode, Skeletal §11.9.
### §F — Classification / external-dependency / ECSeam
**UR-12 — [§7] ExternalDependencyRecord reproducible pins (ACCEPT · GAP · high, Class A).** Add to the interface: `git_commit_sha: string; hash_algorithm:'sha256'; source_line_ranges: string[]; last_verified_at?: string;`. Lints `external_dependency.hash_algorithm_missing`, `…commit_sha_missing`, `…line_pin_missing`, `…phantom_marked_runtime_import`, `…moving_dependency_without_drift_response`. Skeletal §13/§3.2 (B7). **UR-17 — [§7.1] structured ECSeamContract (ACCEPT · BUG · med-high, Class A).** Convert §7.1 prose to an interface adding explicit `owns_read_model_refresh: true; non_ec_durable_writers_forbidden: true;` alongside the 10 covered items. Lints `ec.non_ec_durable_writer_detected`, `…read_model_refresh_without_ec_receipt`, + canonical `learning.writeback_without_ec_execution`. Skeletal §10.9, OPA-031. (ties UR-04.) **UR-30 — [§6] classification table + N12 (ACCEPT · GAP · medium, Class A).** Add rows for `ContextPacketProof`, `RenderSafetyProof`, `MemoryFlowCertificate`, `MemoryCoordinationTrace`, `MemoryMutationEnvelope`, `MemoryProvenanceGraph`, `PromptShellVariant`, `FinalPromptTruthRef`, `SemanticProjectionContract`+4 projections, `ExternalDependencyRecord`, `MemoryPlaneHealthReadModel`, `MemoryOperationQuota`; add column `audit_replay_class ∈ {canonical, durable_audit, derived, transient, external_ref, named_only}` (fold into canonical/derived). N12: (1) ContextProduct row `varies`→enumerate per kind; (2) normalize `ContentReference` vs `string` ref-types (UR-27); (3) ⚠V7 remove phantom DOC8 `importing_member`. Skeletal §10.12/§14.
### §G — Revocation / projection / monotonicity / ops / conventions
**UR-08 + UR-09 — [§12.1] 5-plane revocation cascade + contrary-edge polarity (ACCEPT · GAP+BUG · high).** `INSERT AFTER` the §12.1 table:
```ts
interface SourceRevocationCascade { // invariant in E0; per-plane execution in DOC82/84/85/86/87
source_ref: SourceRef; revocation_event_ref: MemoryMutationEnvelopeRef;
required_outcomes: { doc82_support_edges:'invalidated'|'verify_required'; doc87_memberships:'restamped'|'removed'|'hidden';
doc84_delivery_artifacts:'invalidated'; doc85_learning_signals:'ineligible_for_future_utility'; doc86_surfaces:'safe_labeled'|'suppressed'; };
ec_receipt_refs: ECReceiptRef[]; reason_codes: ReasonCodeId[]; }
```
`REPLACE` the §12.1 source-revocation row's invariant with *"source revocation triggers cross-plane recompute; net-warrant change is traced (polarity-aware — a contrary-source removal MAY raise net warrant)"* and lint → `revocation.net_warrant_changed_without_recompute_trace`; fix §2.4 `warrant_trigger.raised_eligibility` similarly. Add the **7 canonical revocation lints** verbatim (`revocation.support_edge_survives_revoked_source`, `…membership_survives_revoked_source_without_restamp`, `…carryover_capsule_survives_revoked_source`, `…learning_credit_after_revocation`, `…learning_signal_survives_revoked_source`, `…inspector_leaks_revoked_source`, `…published_view_not_invalidated_after_revocation`) + polarity lints (`…supporting_source_removed_without_recompute`, `…contrary_source_removed_without_recompute`, `…net_warrant_changed_without_recompute_trace`). Skeletal §10.11 (⚠V3), §11.9, ADQ-316. **UR-31 — [new §3.6] define SemanticProjectionContract (ACCEPT · BUG · P1).** Referenced in §1.1/§6.3/§8/§17.3 but never defined; §16.3 has no `projection.*` lints. `INSERT`:
```ts
interface SemanticProjectionContract { schema_owner:'DOC80'; projection_may_own_truth:false;
required_fields:['source_refs','generation_id','invalidation_policy_ref','projection_owner','proof_or_read_model_refs'];
allowed_axes:('delivery'|'ui'|'organization'|'knowledge')[]; }
interface SemanticProjectionAxisRegistration { axis:'delivery'|'ui'|'organization'|'knowledge';
concrete_projection_schema:'DeliveryProjection'|'UIProjection'|'OrganizationProjection'|'KnowledgeProjection';
schema_owner:'DOC82'|'DOC84'|'DOC86'|'DOC87'; canonical_truth_owner: OwnerDocId; invalidation_policy_owner: OwnerDocId; }
```
Update §6.3/§17.3 cross-refs to point here. Lints (canonical): `projection.used_as_canonical_truth`, `…owner_missing`, `…missing_invalidation_policy`, `…missing_source_refs` (+ proposed `…generation_id_missing`). Owner Map 209, Skeletal §11.10. **UR-47 (AWM · GAP) + UR-48 (ACCEPT · SUGGESTION).** §12.1 **already carries all four** monotonicity laws — tighten the learning row to "cannot increase warrant **beyond the non-learning ceiling**"; apply UR-09 polarity. **UR-48:** add a `Stage 8 Negative Fixture` column to §12.1 (it has gate+lint); minimum rows += UR-02/UR-08/UR-31/UR-26. Skeletal §11.9/§11.4. **UR-23 — [§9.1] operational health fields (ACCEPT · GAP · high).** Add to `MemoryPlaneHealthCounter`: `measurement_window`, `generated_at`, `last_successful_refresh_at`, `freshness_status:'fresh'|'stale'|'failed'`, `severity:'info'|'warning'|'degraded'|'blocked'`, `source_trace_refs: MemoryCoordinationTraceRef[]`. Lints `health.counter_window_missing`, `…counter_stale_without_status`, `…counter_missing_last_successful_refresh`. Skeletal §10.15. **UR-24 — [§10.2] quota fields (ACCEPT · GAP · high).** Add per-bound `unit:'items'|'tokens'|'runs'|'seconds'|'bytes'`, `window`, `default_value`, `hard_max`, `enforcement_owner`, `on_exhaustion:'pause'|'degrade'|'queue_for_review'|'suppress_noncritical'|'block'`, `resume_policy_ref`. Lints `quota.unit_missing`, `…window_missing`, `…enforcement_owner_missing`, `…exhaustion_behavior_missing`, `…resume_policy_missing`. Skeletal §10.16. **UR-25 — [§10.3] background strategy (ACCEPT · GAP · med-high, Class C).** `REPLACE` `background_yield_to_hot_path: boolean;` → `background_execution_strategy:'cooperative_chunking'|'worker_thread'|'child_process'|'deferred_queue_only'` + `max_chunk_ms`, `yield_checkpoint_required`, `hot_path_preemption_supported`, `cancellation_checkpoint_required` (E0 names; DOC11/OpenClaw executes). Lint `quota.background_yield_boolean_without_runtime_strategy`. **UR-26 (ACCEPT · GAP · P1) + UR-27 (ACCEPT · GAP · medium).** §8: add `schema_version` field convention + "breaking change requires a named migration plan (Stage 7 owns the plan schema)." Lints `schema.version_missing`, `…migration_plan_required_for_breaking_change`, `…timestamp_not_rfc3339_utc`, `…hash_algorithm_missing`. **REJECT** building `MemorySchemaMigrationPlan` in E0. §8.4: declare branded-IDs + naming/RFC3339/sha256 globally.
### §A — Identity / lifecycle
**UR-29 — [§1.4] lifecycle: keep lints, reject engine (ARCHITECT_STOP-affirmed REJECT engine / ACCEPT lints).** Synthesis §6 collapsed DOC88; do not reopen. `INSERT` §1.4 sentence: *"Retired, stale, suppressed, reference-only, archived, revoked, tombstoned, hard-deleted are not synonyms; downstream contracts must not treat non-erasure states as erased."* Lints (canonical): `erasure.retired_used_as_erased`, `erasure.legal_hold_bypassed_without_adq_resolution`; proposed `stale_is_not_erased`/`suppressed_is_not_erased`/`reference_only_is_not_erased`/`archived_is_not_erased`/`revoked_is_not_hard_deleted`. Synthesis §6, Skeletal §10.2/§10.3. **UR-40 — [§4.1/§12] necessary-not-sufficient (ACCEPT · GAP · low-med).** `INSERT`: *"membership eligibility is necessary, not sufficient — policy and scope still gate independently."*
### §E — NAMED-only
**UR-18 — [§8.2] bitemporal split (AWM · CONFIRMED-hardening).** Add: *"MME (mutation/replay time) and DOC82 assertion/evidence axes (valid/transaction time) are linkable, not collapsed."* Lints already include canonical `bitemporal.evidence_edge_missing_source_span_temporal_snapshot`; add `assertion.bitemporal_axes_missing_transaction_time`/`…valid_time`, `memory_mutation_envelope.valid_time_used_as_replay_order`. Skeletal §11.8. **F19/F20 — [§5.1/§5.2] Stage-7 handoff vocabulary (ACCEPT; keep NAMED-only).** Add to each a handoff checklist — MME: `event_type, aggregate_ref, idempotency_key, causation_id, correlation_id, actor_ref, transaction_time, valid_time, policy_generation_id, proof_refs, reason_codes, replay_order, migration_metadata`; MPG: node/edge kind registries, proof-attachment-for-gated-edges, redaction/retention policy, revoked-source cascade edges. Adopt ChatGPT F19/F20 lists verbatim. No field bodies (Class D). Skeletal §10.5/§10.6. **UR-41 — [§8.1] embedding un-merge (ACCEPT · name).** Add: *"embedding-model migration may require un-merging previously-merged assertions; route through review, never a silent split."*
### §H — ABC §21 / AC / golden scenario / preservation / drift
**UR-38 — [restore §4/§19/§20] (DECIDED ACCEPT · GAP · high).** Conform to the plan (baseline §2 assigns these bodies to Stage 6). `INSERT` three sections:
```md
## §4. Shared runtime vocabularies (Skeletal §4 / B10)
Single home for runtime-only enums/value types used by ≥2 family members; NO process/non-runtime vocab (B10).
Rule: a runtime value type used by two or more members is declared here and referenced, never redefined per-member
(this is what stops E7/E8 minting private runtime vocabulary).
§4.1 Declared shared runtime value types (consolidated from §2–§12): OwnerDocId; ProducerDocRef;
BudgetBand='xs'|'s'|'m'|'l'; LifecycleState='active'|'deprecated'|'retired'; MembershipLifecycleState (UR-05);
branded-ID base + SchemaVersionRef + ContentHash('sha256') + RFC3339-UTC rule (UR-26/27);
ContextProductDecisionDisposition (ABC §9.4 / ADJ-1) declared here, referenced by §3.2.
Lints: runtime_vocab.value_type_redefined_per_member; runtime_vocab.process_vocab_in_runtime_core (B10); runtime_vocab.owner_missing.
[⚠ confirm exact value-type set against §2–§12 usage when finalizing the body.]
## §19. Per-external-doc amendment-magnitude assessment (Skeletal §19 / F-struct #3)
One-line magnitude estimate per §7.4 external dependency (derived from dependency_status):
EC=major(moving); BDSM=moderate(partial, ADQ-221); DOC73=minor–moderate(partial); DOC8=none(phantom, ADQ-221);
DOC26=conditional(aspirational, ADQ-202/404); DOC72/DOC25/DOC24/KDA/DOC11/DOC15/DOC20/DOC23/DOC1/DOC3/PropA=minor(stable).
Lint: external_dependency.amendment_magnitude_missing.
## §20. Per-member obligations tables (Skeletal §20 / F-struct #4)
Each member declares (a) MemoryCoordinationTrace obligations and (b) degraded/blocked states it must handle:
DOC81 → policy/scope decision refs + policy_generation_id | policy_disambiguation_pending; scope_unresolved→conservative
DOC82 → assertion/evidence/resolution refs | contested_assertion; revocation recompute
DOC83 → extraction-plan + candidate refs | extraction re-gate on policy_generation change
DOC84 → packet/manifest/proof refs | proof_artifact_missing; membership_unavailable; degraded_mode (§3.2)
DOC85 → learning_signal + final_prompt_truth refs | learning withheld (no proof / no final-prompt truth)
DOC86 → Inspector read-model refs backed by trace | read-model stale/failed; safe-label on blocked content
DOC87 → membership_mutation refs | membership removed/blocked → suppressed
Lints: member.coordination_trace_obligation_undeclared; member.degraded_states_undeclared.
[Per-member instances completed at E1–E10 — see Deferral Register §7 + gate table.]
```
Update §17.2 to add §4/§18/§19/§20 landing rows. Baseline §2 + completion checklist ("body at Stage 6"), F-struct #2/#3/#4. **UR-35 — [new §18] golden scenario (ACCEPT · BUG · high).** Draft ends §17. `INSERT` `## §18` with the 15-step phase order (request/observation → policy preflight → extraction admission → source materialization → candidate emission → canonical resolution → membership assignment → policy re-check → context-product planning → packet assembly → rendering → final-prompt proof → learning eligibility → UI/Inspector → replay/audit) + fixture taxonomy names (`contract_fixture`, `negative_contract_fixture`, `cross_charter_integration_fixture`, `policy_change_fixture`, `source_revocation_fixture`, `replay_fixture`, `migration_fixture`, `final_prompt_truth_fixture`, `learning_attribution_fixture`, `golden_scenario_fixture`) + negative-fixture names (`fixture.golden.learning_credit_without_final_prompt_truth_fails`, `…revoked_source_invalidates_support_membership_delivery_learning_ui`, `…removed_membership_cannot_inject`, `…non_ec_write_detected`, `…context_product_kind_unknown_blocks_assembly`, `…learned_weight_missing_from_deterministic_input_fails`, `…policy_tighten_between_plan_and_render_blocks_or_restamps`). E0 owns the skeleton; Stage 8 owns bodies. Skeletal §18, F-struct #2. ⚠V5. **UR-46 — [§16.3] preserve synthesis named-lint inventory (ACCEPT · GAP · high).** Add §16.3 subsection split by owner — **(a) DOC80-substance (Stage-9 names):** `learning.utility_without_final_prompt_proof`, `learning.writeback_without_ec_execution`, `erasure.retired_used_as_erased`, `erasure.legal_hold_bypassed_without_adq_resolution`, `assertion.doc82_resolution_missing_doc83_emission_ref`, `assertion.doc83_final_resolution_without_doc82`, `assertion.overlapping_resolution_disposition_enum`, `versioned_claim.lineage_table_missing`, `versioned_claim.unmapped_to_assertion_variant`, `doc15.context_budget_import_missing`, `dynamic_header_ledger.owner_unresolved_at_doc84_charter`, `bitemporal.evidence_edge_missing_source_span_temporal_snapshot`, `revocation.learning_signal_survives_revoked_source`, `fixture.membership.removed_edge_appears_nowhere`; **(b) flatten-governance lints** (`import_graph.*`/`owner_map.*`/`opa.*`) — owned by the flatten-governance suite, NOT E0; acknowledge in the preservation matrix (the `owner_map.*`/`opa.*` ones enforce the F35 sweep); **(c) provenance caveat** — ChatGPT's `adapter.*`/`cu_doc73.*`/`monotonicity.<…>_monotone` tokens are coinage; carry the invariants (UR-47), mark tokens proposed. Synthesis §4 + Skeletal §11.9 (verified §2.5). **UR-36 — [new §17.4] preservation matrix (ACCEPT · GAP→assurance · high).** Add an assurance matrix proving every Stage 5R/5R2/5R2b decision lands/defers/exits — framed as assurance (the 12 must-fixes verified landed). Min rows = the narrow real gaps: UR-01/02/08/09 lints, UR-31, UR-35, UR-46, UR-38. Synthesis §2.3. **UR-32 — [new §15.4] cross-charter gate table (ACCEPT · GAP · high).** Columns Gate | Source | Blocked charters | Required before | Owner | Blocking. Rows: UR-01→E7/E8; UR-02→E8/E9; UR-08→E3/E4/E7/E8/E9/E10; UR-31→E3/E7/E8/E10; ADQ-202→E4/E_org/E10; DOC15 / DOC26 / SourceBoundSynthesisAdapter / DOC85-two-phase / TopicIdentityContract. Adopt merged ChatGPT F32 + Claude UR-32 rows. STAGE_6_CHARTER_INPUT_INDEX. **UR-33 — [§14] AC-004/005 hardening (ACCEPT · GAP · medium).** AC-004 completion = schema + owner + **positive + negative fixture + Stage-9 lint**. AC-005 gated on ADQ-202 **and** ECSeamContract **and** DOC25 materialization/source-binding **and** DOC82 source/evidence. Fold ChatGPT F36 hard-gating + F37 role-based-readiness appendix. ADQ-403/404. **UR-34 — [§13/§16.1] placement (ACCEPT · records draft).** `IngestionCostBudget`=DOC25-primary (declared against DOC80 envelope); `WarrantConsequenceRegistry`=DOC82-primary. Draft §13/§16.1 already disposition these with OFAR alternatives; confirm at E3/E4. **ADJ-3 — [§15.3 or §14.4] family-wide acceptance standard (ACCEPT · GAP · minor) [diff-surfaced].** Add a short subsection restating the family-wide acceptance standard (= flatten-plan §19 + the §15.3 discharge sweep + the §12 invariant gates), since baseline §17 wants a consolidated standard. Skeletal §17. **UR-21 — [§4/§6/§16.3] citation collision (ACCEPT · BUG · low-med).** Disambiguate every bare "Skeletal §N" as `Skeletal-doc §N` vs `DOC80-target §N` (the skeletal doc caps at §11.13; the draft cites §9/§14/§18 target-map sections). **UR-39 — [§17.2] §10.7 mislabel (ACCEPT · BUG · low-med).** Correct the §17.2 §10.7 row from "Proof spine → §4" to the DOC82↔DOC83 disposition seam → §12 (lints `assertion.doc82_resolution_missing_doc83_emission_ref`/`…doc83_final_resolution_without_doc82`). ⚠V2. **F35 — drift sweep (ACCEPT · cross-artifact).** See §8. **SA-A — folds into UR-01** (self-audit confirmed + escalated; the audit under-claimed it as a Stage-7 confirm, reviewers correctly made it P0-now). **SA-B — [§17.2] fold-in arithmetic (CONFIRMED-resolved · no patch).** The live §17.2 already carries the corrected "17 enumerated + §11.3 = 18 rows; '14' = distinct topics" reconciliation; neither reviewer re-litigated it (UR-39 is a different §17.2 issue).
### §I — Rejects (Considered-and-declined, inline)
- **UR-28 — meta-schemas in E0 (REJECT).** `LintRegistryEntry`/`FixtureManifest`/`MemorySchemaMigrationPlan` + JSON-Schema-per-contract → Stages 7/8/9. **UR-28b (ACCEPT):** the lint/fixture *naming convention* lands in E0 — `<domain>.<failure_condition>`; `fixture.<domain>.<scenario>.<expected_result>`; "every error lint has ≥1 Stage-8 negative-fixture handoff." (ChatGPT F39, Claude UR-28.)
- **GPT full bodies (REJECT):** full `FinalPromptTruthRef` field schema (mis-owns DOC11); full lifecycle/erasure state machine (reopens synthesis §6); full `MemorySchemaMigrationPlan`; DOC81 policy-axis enum *values*; DOC84 executed `RenderSafetyProof` body. Direction accepted via UR-02/11/14/26/06.
- **Rename `ContextProduct`→`ContextArtifact` (REJECT).** ABC §9.2 is senior and uses `ContextProduct` (high churn + negative value).
### §J — BETTER_IDEA annex (non-blocking, litigation-relevant; DEFER, recorded §7)
**UR-42** tamper-evident hash-chained proof log (chain-of-custody; pairs w/ UR-07) · **UR-43** "as-of" time-travel queries (bitemporal + MME replay) · **UR-44** click-to-provenance verifiable-memory Inspector (DOC86/E10) · **UR-45** scoped/redacted co-counsel export (`ExportMFC` + per-axis redaction).
## 4. Reviewer-by-reviewer coverage
| Reviewer | Raised | Accepted | Modified | Rejected | Deferred/OFAR | Unique catches | Over-claims / misses |
| ------------------------------ | ------ | -------- | -------- | ---------------------------------- | -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| **ChatGPT 5 Pro** (F1–F40) | 40 | ~26 | ~6 | ~5 (full bodies; rename) | ~3 | the 17-kind ABC source (best catch, verified); final-prompt truth; DomainProfile vector; retention classes; per-product plan; ExternalDependencyRecord pins | over-scope (Stage 7/8/9 + member + collapsed-lifecycle); coined lint tokens (F24/F31); severity over-stated; missed THEME-C/UR-04, UR-19 precision, UR-09 polarity, UR-20, UR-39, UR-41 |
| **Claude Opus 4.8** (UR-01–48) | 48 | ~34 | ~5 | 2 (lifecycle engine; meta-schemas) | ~3 + 4 forward | THEME-C/`ec_path` (UR-04); determinism precision (UR-19); contrary-edge polarity (UR-09); trace correlation (UR-20); authority-fixed degradation (UR-22); §10.7 (UR-39); injection necessary-not-sufficient (UR-40); embedding un-merge (UR-41); citation collision (UR-21); full named-lint inventory + coined-token audit (UR-46/§8); empirical repo-verification (§2) | self-noted v1 under-preservation (fixed via UR-46); Q9/Q10 brutal answers inferred; slightly under-credited that §12.1 already carries all four monotonicity laws (UR-47) |
**Depth bar:** both met it. ChatGPT = high-recall gap detection (trust the *findings*; its additive schema layer over-builds — its own Stage-5R meta-observation replayed here). Claude = reference-grade: repo-verified, pre-deduped ChatGPT, flagged coinage, applied scope discipline, self-audited.
## 5. Value-tier roll-up
**Tier 1 — Critical/blocking:** UR-01, UR-02, UR-03/04, UR-05, UR-07, UR-08/09, UR-31, UR-46, UR-35, UR-38, F35. **Tier 2 — Substantive:** UR-10, UR-11, UR-12, UR-15+ADJ-1, UR-17, UR-19, UR-20, UR-22, UR-23, UR-24, UR-25, UR-26, UR-30, UR-32, UR-33, UR-36, UR-48, F13, UR-14b. **Tier 3 — Minor:** UR-06, UR-13, UR-14 (confirm), UR-16, UR-18, UR-21, UR-27, UR-28b, UR-29 (lints), UR-34, UR-37, UR-39, UR-40, UR-41, ADJ-2, ADJ-3, F19/F20. **Tier 4 — Considered-and-declined (override-able):** the §I rejects (would damage the spec) + the §7 deferrals (owned by later charters/stages — built there, not skipped). Tiers 1–3 are **all applied**; tiering is edit-order, not do-some-skip-some.
## 6. *(verdict moved to §9 to keep §6–§8 contiguous with the commission's tail sections)*
## 7. Deferral register — the spec tracks every deferral; the architect tracks nothing
| Deferred item | Why not in E0 | Owner / landing | Recorded in (pickup trigger) |
| ------------------------------------------------------------ | --------------------------------- | -------------------------- | ---------------------------------------- |
| MemoryMutationEnvelope field body | NAMED-only by plan | Stage 7 | §5.1 handoff + §15.4 gate + §17.4 matrix |
| MemoryProvenanceGraph field body | NAMED-only by plan | Stage 7 | §5.2 handoff (F19/F20) + §15.4 gate |
| ResumeProjection/ResumeCard body | NAMED-only by plan | Stage 7 (surface DOC84/86) | §5.3 + §15.4 gate |
| DOC81 policy-axis enum values | DOC81 owns axis semantics | DOC81 / E1–E2 | §2.2 note + §15.4 gate (UR-11) |
| DOC84 RenderSafetyProof executed body | DOC84 owns execution | DOC84 / E7–E8 | §4.2 note + gate (UR-06) |
| FinalPromptTruthRef runtime body | DOC11/OpenClaw owns runtime truth | DOC11 / Stage 7 | §3.5 handoff + gate (UR-02) |
| Lint/fixture/migration meta-schemas, JSON-Schema-per-contract | Stages 7/8/9 | Stage 7/8/9 | §16.3 convention (UR-28b) + gates |
| §20 per-member obligation instances | filled as each member charters | E1–E10 / E_org | §20 seed + §15.4 gate rows |
| DOC25 ReasonCode-producer grounding | bookkeeping ratification | architect / Owner Map | OP-A candidate + §17.4 matrix (UR-37) |
| F-struct #3/#4 §19/§20 final bodies | first-draft now; refine | E0 ratification | §19/§20 + §17.4 matrix (UR-38) |
| BETTER_IDEA UR-42–45 | forward capability | DOC84/86 + Stage 7+ | §17.4 matrix + §16.2 (forward) |
| ADQ-222 (V5 networking) | does not block Stage 6 | architect / Stage 7 | §1.3 + §16.2 + ADQ ledger |
Mechanism: the §15.4 gate table is the stop a future LLM hits ("do not pass charter E# until X, owner Y"); the §17.4 preservation matrix proves nothing was silently lost; OP-A carries cross-doc obligations; the ADQ ledger carries decisions. No manual tracking required.
## 8. Cross-artifact / discharge implications (do NOT edit these from this card)
- [ ] **`Supersession_Matrix.md` — SM-060:** "14 kinds" → "17 kinds; canonical = ABC R0.2 §9.2; no 17→14 merge." ⚠V6.
- [ ] **`DOC80_Owner_Map.md`:** replace `CognitiveDiff + Resume card` row with `ResumeProjection`/`ResumeCard`; reconcile line 86 ReasonCode producers (DOC25 ratification per UR-37; DOC8 already dropped); confirm line 209 → defined §3.6 (UR-31). Governance lints `owner_map.owner_cell_contains_plus_sign`/`…compound_schema_owner` enforce this.
- [ ] **`STAGE_6_CHARTER_INPUT_INDEX.md`:** add ADQ-313 to the E0 section (Input Deck includes it; index omits it — the draft correctly followed the Deck).
- [ ] **`E0_Red_Team_Review_Prompt.md`:** fix stale synthesis path `…/Red Team Ready/` → `…/Red Team Responses/`.
- [ ] **`Architect_Decision_Queue.md`:** after ratification mark ADQ-203/208/210/211/310/313/403/404 resolved-by-E0; the DOC25 grounding (UR-37) and any residual on F-struct §19/§20 final bodies (UR-38) are logged, not blocking.
- [ ] **`OPA_V4.md`:** 0 rows target DOC80 core (verified — 117 target DOC81–87); confirm DOC80's new contracts support the DOC81–87 obligations; no new OPA rows required by this card (ChatGPT F40's OP-A/SPEC_STATE/ADDENDA_STATE closure runs as workflow housekeeping).
## 9. Verdict
**`E0_NEEDS_REVISION_ROUND` → `STAGE_6_CAN_OPEN_AFTER_PATCH`.** The DOC80-family decomposition and E0's direction are sound (A-/B+); the 12 Stage-5R synthesis must-fixes verifiably landed (not a rebuild, not systemic loss). E0 is not ratifiable as-is because of one P0 source conflict (UR-01, blocks E7/E8), a silent learning bug (UR-02), a defined-but-unenforceable proof spine (UR-03/04/05/07), a collapsed cross-plane cascade with a polarity error (UR-08/09), a named-but-undefined core contract (UR-31), a dropped named-lint inventory (UR-46), an absent §18 (UR-35), and four silent plan-divergences (UR-38 §4/§19/§20 + UR-35 §18). All are surgical, scope-disciplined hardening. No `ARCHITECT_STOP` beyond the affirmed do-not-reopen on the lifecycle engine (UR-29).
**Deliverable = the full revision = every accepted item** (all Tier 1–3 + the 5 additions ≈ **50 E0 edits**). No "minimum" subset. **Two architect forks were decided in-card** on best-spec / conform-to-plan grounds — UR-37 (DOC25 = producer) and UR-38 (restore §4/§19/§20 per the baseline) — both veto-able at ratification. Tier 4 = rejects (would damage the spec) + deferrals (built in their owning stage, enrolled in §7).
**Recommended edit order (ordering only, not a scope cut):** (1) UR-01 ContextProductKind 17 + SM-060; (2) UR-02 FinalPromptTruthRef; (3) UR-03/04 MFC union; (4) UR-08/09 cascade + polarity; (5) UR-31 SemanticProjectionContract; (6) UR-46 named-lint inventory; (7) UR-07 retention classes; (8) UR-05 edge-level membership; (9) UR-35 §18 + UR-38 §4/§19/§20; (10) the §16.3/§17.4/§15.4 registers; (11) the registry + ops hardening (UR-10/11/12/17/23/24/25/26); (12) the minor rows; (13) the §8 cross-artifact sweep.
**Ratification check:** every Tier-1 item applied; both decided forks accepted or overridden; §15.4 gate table + §17.4 preservation matrix present so no deferral is lost; §3.6 SemanticProjectionContract defined; §18 present; §4/§19/§20 restored; SM-060/Owner-Map/index/prompt-path drift swept; no retired names reintroduced.
*End of E0 / DOC80-Core Adjudication Card.*
------
That's the entire card in one document. Save it as `E0_Adjudication_Card.md` in the `Reviews/` folder and route it. Want me to draft the reviewer prompt that points your red-teamers at this card + `Charter_Draft.md` + the baseline, in your usual carryover format — pointing to GitHub paths so they don't need attachments?