# Claim/Source Contract Preview - 2026-07-09

## Scope

Read-only contract preview for live approved rich KB proposals fetched from the VPS leoclean profile. This does not write Postgres, does not restart Leo, and does not change runtime behavior.

## Result

### `14fa5ecc-ac7a-41c1-807d-a2e85b936617`

- Status: `approved`
- Proposal type: `attach_evidence`
- Direct apply ready: `false`
- Claim rows needing canonical IDs: `4`
- Source rows needing canonical IDs/deduplication: `5`
- Edge fragments blocked until IDs/mapping exist: `17`
- Evidence fragments blocked until claim/source IDs exist: `9`
- Next action: Do not apply directly. Review a claim/source creation contract in a clone, assign/deduplicate canonical IDs, then rerun strict normalization to produce apply_payload child proposals.

Contract gaps:
- `current_apply_role_cannot_insert_claims_or_sources`: A separate reviewed role/contract for public.claims and public.sources creation.
- `claim_candidates_need_canonical_ids`: Create or deduplicate claim rows, then rewrite edges/evidence using UUIDs.
- `public_claims_has_no_body_or_review_note_columns`: Store those details in public.sources excerpts or add reviewed schema support.
- `public_sources_has_limited_metadata_columns`: Deduplicate sources and decide where provenance metadata is retained.
- `old_claim_supersession_is_many_successors`: Use typed claim_edges for supersession components or introduce an aggregate successor node.
- `concept_map_dependency_has_no_first_class_storage`: Create first-class concept-map storage or keep the concept map as source-backed context.

Claim candidates:
- `capital_allocation_is_civilizational_steering` -> type `structural`, confidence `0.65`, needs canonical id
- `capital_allocation_depends_on_distributed_market_intelligence` -> type `structural`, confidence `0.7`, needs canonical id
- `internet_finance_structural_advantages_capital_allocation` -> type `structural`, confidence `0.45`, needs canonical id
- `internet_finance_is_mechanism_not_telos` -> type `normative/strategic-boundary`, confidence `0.8`, needs canonical id

Source candidates:
- `m3ta_telegram_approval_supersede_split_2026_07_05` -> source_type `dm`, needs dedupe/canonical id
- `kb_existing_hayek_claim_7da4851c` -> source_type `note`, needs dedupe/canonical id
- `hayek_use_of_knowledge_in_society_fee_snapshot` -> source_type `url`, needs dedupe/canonical id
- `rio_belief_capital_allocation_civilizational_infrastructure` -> source_type `note`, needs dedupe/canonical id
- `leo_active_strategy_v2_context` -> source_type `note`, needs dedupe/canonical id

### `ac036c9d-20a0-4ffe-881f-57d6b7bacf22`

- Status: `approved`
- Proposal type: `attach_evidence`
- Direct apply ready: `false`
- Claim rows needing canonical IDs: `3`
- Source rows needing canonical IDs/deduplication: `3`
- Edge fragments blocked until IDs/mapping exist: `6`
- Evidence fragments blocked until claim/source IDs exist: `5`
- Next action: Do not apply directly. Review a claim/source creation contract in a clone, assign/deduplicate canonical IDs, then rerun strict normalization to produce apply_payload child proposals.

Contract gaps:
- `current_apply_role_cannot_insert_claims_or_sources`: A separate reviewed role/contract for public.claims and public.sources creation.
- `claim_candidates_need_canonical_ids`: Create or deduplicate claim rows, then rewrite edges/evidence using UUIDs.
- `public_claims_has_no_body_or_review_note_columns`: Store those details in public.sources excerpts or add reviewed schema support.
- `public_sources_has_limited_metadata_columns`: Deduplicate sources and decide where provenance metadata is retained.

Claim candidates:
- `claim_nodes_need_bodies` -> type `governance/process`, confidence `0.85`, needs canonical id
- `internet_finance_structural_advantages_body_draft` -> type `structural/forecast-like thesis`, confidence `0.45`, needs canonical id
- `hayek_reframed_price_system_distributed_knowledge` -> type `structural/reframing`, confidence `0.8`, needs canonical id

Source candidates:
- `telegram_attachment_teleo_agent_strategy_kernels_2026_06_30` -> source_type `note`, needs dedupe/canonical id
- `telegram_feedback_m3ta_claim_shape_2026_07_05` -> source_type `note`, needs dedupe/canonical id
- `hayek_use_of_knowledge_in_society_fee_snapshot` -> source_type `url`, needs dedupe/canonical id

## Claim Ceiling

This proves the live approved packets can be converted into a row-level contract preview. It does not prove those new claim/source rows should be inserted into canonical production tables without a clone/staging apply rehearsal and a reviewed creation contract.

JSON proof: `/Users/user/Documents/Codex/2026-07-09/019f34eb-d297-72d0-b7e2-b222d5515ab9-load/outputs/claim-source-contract-preview-20260709/claim-source-contract-preview-current.json`
Fetched live proposal bundle: `/Users/user/Documents/Codex/2026-07-09/019f34eb-d297-72d0-b7e2-b222d5515ab9-load/outputs/claim-source-contract-preview-20260709/approved-rich-proposals-live.json`
