---
phase: 44-contradiction-and-notation-alignment
plan: 01
type: execute
wave: 1
depends_on:
  - 43-assumption-and-regime-intake/43-01
files_modified:
  - research/knowledge-hub/knowledge_hub/source_intelligence.py
  - research/knowledge-hub/knowledge_hub/topic_shell_support.py
  - research/knowledge-hub/knowledge_hub/kernel_markdown_renderers.py
  - schemas/research-question.schema.json
  - research/knowledge-hub/tests/test_aitp_service.py
  - research/knowledge-hub/tests/test_schema_contracts.py
  - research/knowledge-hub/tests/test_topic_start_regressions.py
autonomous: true
requirements:
  - REQ-L1-02
user_setup: []
must_haves:
  truths:
    - L1 intake must surface contradiction candidates explicitly instead of hiding them in prose summaries
    - notation-alignment tension must be durable enough for later layers to inspect
    - this phase is still intake-focused, not the broader runtime read-path expansion
---

<objective>
Wire contradiction candidates and notation-alignment tension into `L1` intake so
research contracts expose honest intake conflicts before later layers start
building on them.
</objective>

<context>
@.planning/phases/44-contradiction-and-notation-alignment/44-CONTEXT.md
@research/knowledge-hub/knowledge_hub/source_intelligence.py
@research/knowledge-hub/knowledge_hub/topic_shell_support.py
@research/knowledge-hub/knowledge_hub/kernel_markdown_renderers.py
@research/knowledge-hub/tests/test_aitp_service.py
@research/knowledge-hub/tests/test_schema_contracts.py
@research/knowledge-hub/tests/test_topic_start_regressions.py
</context>

<tasks>

<task type="auto">
  <name>Task 1: Add failing tests for contradiction and notation-alignment intake</name>
  <files>research/knowledge-hub/tests/test_aitp_service.py, research/knowledge-hub/tests/test_schema_contracts.py, research/knowledge-hub/tests/test_topic_start_regressions.py</files>
  <action>Add failing tests that require contradiction candidates and notation-alignment tension to persist through intake materialization.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_aitp_service.py research/knowledge-hub/tests/test_schema_contracts.py research/knowledge-hub/tests/test_topic_start_regressions.py -q</verify>
  <acceptance_criteria>
    - tests fail before implementation
  </acceptance_criteria>
  <done>A real failing contract exists for contradiction-aware intake.</done>
</task>

<task type="auto">
  <name>Task 2: Materialize contradiction and notation-alignment intake surfaces</name>
  <files>research/knowledge-hub/knowledge_hub/source_intelligence.py, research/knowledge-hub/knowledge_hub/topic_shell_support.py, research/knowledge-hub/knowledge_hub/kernel_markdown_renderers.py, schemas/research-question.schema.json</files>
  <action>Wire the existing source-intelligence detectors into research-contract materialization and human-readable intake notes.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_aitp_service.py research/knowledge-hub/tests/test_schema_contracts.py research/knowledge-hub/tests/test_topic_start_regressions.py -q</verify>
  <acceptance_criteria>
    - contradiction and notation-alignment intake become durable and reviewable
  </acceptance_criteria>
  <done>The `L1` layer now exposes conflict-aware intake structure.</done>
</task>

<task type="auto">
  <name>Task 3: Re-run the integrated intake regression slice</name>
  <files>research/knowledge-hub/tests/test_aitp_service.py, research/knowledge-hub/tests/test_aitp_cli.py, research/knowledge-hub/tests/test_aitp_cli_e2e.py, research/knowledge-hub/tests/test_runtime_profiles_and_projections.py, research/knowledge-hub/tests/test_schema_contracts.py, research/knowledge-hub/tests/test_topic_start_regressions.py</files>
  <action>Re-run the intake-focused regression slice so Phase `44` lands on a stable baseline without regressing Phase `43`.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_aitp_service.py research/knowledge-hub/tests/test_aitp_cli.py research/knowledge-hub/tests/test_aitp_cli_e2e.py research/knowledge-hub/tests/test_runtime_profiles_and_projections.py research/knowledge-hub/tests/test_schema_contracts.py research/knowledge-hub/tests/test_topic_start_regressions.py -q</verify>
  <acceptance_criteria>
    - the integrated regression slice exits 0
  </acceptance_criteria>
  <done>Phase `44` lands on the post-Phase-43 intake baseline.</done>
</task>

</tasks>
