---
phase: 45-runtime-source-intelligence-read-path
plan: 01
type: execute
wave: 1
depends_on:
  - 44-contradiction-and-notation-alignment/44-01
files_modified:
  - research/knowledge-hub/knowledge_hub/runtime_bundle_support.py
  - research/knowledge-hub/knowledge_hub/topic_shell_support.py
  - research/knowledge-hub/tests/test_aitp_service.py
  - research/knowledge-hub/tests/test_runtime_profiles_and_projections.py
  - research/knowledge-hub/tests/test_aitp_cli_e2e.py
autonomous: true
requirements:
  - REQ-L1-03
user_setup: []
must_haves:
  truths:
    - stronger L0/L1 intelligence must show up in runtime/topic read paths, not only in hidden contracts
    - this phase should reuse existing source-intelligence and l1-intake objects rather than inventing more parser debt
    - human-readable runtime surfaces must expose enough detail for later layers to act without reopening raw source files
---

<objective>
Expose the stronger source-intelligence and `L1` conflict-aware intake outputs
through the runtime bundle, topic status, and human-readable runtime note.
</objective>

<context>
@.planning/phases/45-runtime-source-intelligence-read-path/45-CONTEXT.md
@research/knowledge-hub/knowledge_hub/runtime_bundle_support.py
@research/knowledge-hub/knowledge_hub/topic_shell_support.py
@research/knowledge-hub/tests/test_aitp_service.py
@research/knowledge-hub/tests/test_runtime_profiles_and_projections.py
@research/knowledge-hub/tests/test_aitp_cli_e2e.py
</context>

<tasks>

<task type="auto">
  <name>Task 1: Add failing tests for stronger runtime source-intelligence read paths</name>
  <files>research/knowledge-hub/tests/test_aitp_service.py, research/knowledge-hub/tests/test_runtime_profiles_and_projections.py, research/knowledge-hub/tests/test_aitp_cli_e2e.py</files>
  <action>Add failing tests that require runtime/topic read paths to expose source identity, citation/source-neighbor signals, and conflict-aware `L1` intake structure.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_aitp_service.py research/knowledge-hub/tests/test_runtime_profiles_and_projections.py research/knowledge-hub/tests/test_aitp_cli_e2e.py -q</verify>
  <acceptance_criteria>
    - tests fail before implementation
  </acceptance_criteria>
  <done>A real failing contract exists for the stronger runtime read path.</done>
</task>

<task type="auto">
  <name>Task 2: Materialize the stronger source-intelligence read path</name>
  <files>research/knowledge-hub/knowledge_hub/runtime_bundle_support.py, research/knowledge-hub/knowledge_hub/topic_shell_support.py</files>
  <action>Project the stronger source-intelligence and conflict-aware intake outputs into runtime bundle payloads, topic status, and human-readable runtime notes.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_aitp_service.py research/knowledge-hub/tests/test_runtime_profiles_and_projections.py research/knowledge-hub/tests/test_aitp_cli_e2e.py -q</verify>
  <acceptance_criteria>
    - runtime/topic read paths expose the stronger source-intelligence outputs
  </acceptance_criteria>
  <done>The runtime read path now carries the stronger `L0/L1` intelligence.</done>
</task>

<task type="auto">
  <name>Task 3: Re-run the integrated read-path 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 integrated intake/runtime regression slice so Phase `45` lands on a stable baseline.</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 `45` lands on the post-Phase-44 baseline.</done>
</task>

</tasks>
