---
phase: 167.1
plan: 01
type: execute
wave: 1
depends_on:
  - 167
files_modified:
  - research/knowledge-hub/knowledge_hub/runtime_read_path_support.py
  - research/knowledge-hub/knowledge_hub/l1_vault_support.py
  - research/knowledge-hub/runtime/scripts/run_l1_contradiction_surface_acceptance.py
  - research/knowledge-hub/tests/test_aitp_service.py
  - research/knowledge-hub/tests/test_runtime_scripts.py
autonomous: false
requirements:
  - REQ-L1CON-03
  - REQ-VERIFY-01
must_haves:
  truths:
    - runtime/read-path surfaces must expose the richer contradiction basis shipped in Phase 167
    - the milestone must close with one dedicated contradiction-aware proof lane
---

<objective>
Expose the richer contradiction row surface across runtime/read-path outputs and
close the milestone with one dedicated contradiction-aware intake proof lane.
</objective>

<tasks>

<task type="auto">
  <name>Task 1: Render richer contradiction summaries on runtime/read-path surfaces</name>
  <files>research/knowledge-hub/knowledge_hub/runtime_read_path_support.py, research/knowledge-hub/tests/test_aitp_service.py</files>
  <read_first>research/knowledge-hub/knowledge_hub/runtime_read_path_support.py, research/knowledge-hub/tests/test_aitp_service.py, .planning/phases/167.1-contradiction-runtime-surface-and-proof-lane/167.1-CONTEXT.md</read_first>
  <action>Upgrade the contradiction rendering on runtime-facing notes so contradiction sections expose comparison basis and side-specific summaries instead of only `detail + ids`. Keep the existing `contradiction_candidates` payload as the single truth source.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_aitp_service.py -k "contradiction_checkpoint_uses_plain_language or persists_l1_conflict_candidates" -q</verify>
</task>

<task type="auto">
  <name>Task 2: Add contradiction parity to the L1 vault source-intake page</name>
  <files>research/knowledge-hub/knowledge_hub/l1_vault_support.py, research/knowledge-hub/tests/test_aitp_service.py</files>
  <read_first>research/knowledge-hub/knowledge_hub/l1_vault_support.py, research/knowledge-hub/tests/test_aitp_service.py, .planning/phases/167.1-contradiction-runtime-surface-and-proof-lane/167.1-CONTEXT.md</read_first>
  <action>Render contradiction rows on the source-intake wiki page so the L1 vault matches the runtime contradiction surface.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_aitp_service.py -k "persists_l1_conflict_candidates" -q</verify>
</task>

<task type="auto">
  <name>Task 3: Add the dedicated contradiction-surface proof lane</name>
  <files>research/knowledge-hub/runtime/scripts/run_l1_contradiction_surface_acceptance.py, research/knowledge-hub/tests/test_runtime_scripts.py</files>
  <read_first>research/knowledge-hub/runtime/scripts/run_l1_assumption_depth_acceptance.py, research/knowledge-hub/tests/test_runtime_scripts.py, .planning/phases/167.1-contradiction-runtime-surface-and-proof-lane/167.1-CONTEXT.md</read_first>
  <action>Create a bounded contradiction-aware acceptance script that reuses the isolated two-source fixture style and proves the richer contradiction surface on runtime/read-path outputs. Add runtime-script coverage so the new proof lane is callable.</action>
  <verify>python research/knowledge-hub/runtime/scripts/run_l1_contradiction_surface_acceptance.py --json</verify>
</task>

<task type="auto">
  <name>Task 4: Run the contradiction runtime parity regression slice</name>
  <files>research/knowledge-hub/tests/test_aitp_service.py, research/knowledge-hub/tests/test_runtime_scripts.py</files>
  <read_first>.planning/phases/167.1-contradiction-runtime-surface-and-proof-lane/167.1-VALIDATION.md</read_first>
  <action>Run the phase validation commands after the contradiction rendering and proof lane land.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_aitp_service.py research/knowledge-hub/tests/test_runtime_scripts.py -k "contradiction or l1_contradiction_surface_acceptance" -q</verify>
</task>

</tasks>
