---
phase: 147-research-question-competing-hypotheses-surface
plan: 01
type: execute
wave: 1
depends_on:
  - v1.72-closure
files_modified:
  - research/knowledge-hub/knowledge_hub/topic_shell_support.py
  - research/knowledge-hub/knowledge_hub/kernel_markdown_renderers.py
  - research/knowledge-hub/knowledge_hub/runtime_read_path_support.py
  - research/knowledge-hub/knowledge_hub/topic_replay.py
  - research/knowledge-hub/runtime/scripts/run_competing_hypotheses_acceptance.py
  - research/knowledge-hub/tests/test_competing_hypotheses_contracts.py
  - research/knowledge-hub/tests/test_runtime_scripts.py
  - research/knowledge-hub/tests/test_topic_replay.py
  - research/knowledge-hub/README.md
  - research/knowledge-hub/runtime/README.md
  - research/knowledge-hub/runtime/AITP_TEST_RUNBOOK.md
autonomous: true
requirements:
  - REQ-HYP-01
  - REQ-HYP-02
  - REQ-HYP-03
  - REQ-VERIFY-01
must_haves:
  truths:
    - extend the research-question/runtime surfaces instead of inventing a disconnected hypothesis registry
    - keep the first slice bounded to explicit question-level hypothesis visibility
    - coexist with deferred candidates and follow-up subtopics instead of replacing them
---

<objective>
Make multiple plausible bounded answers first-class on the active topic surface
so operators can see the current hypothesis competition without reconstructing
it from deferred execution artifacts alone.
</objective>

<tasks>

<task type="auto">
  <name>Task 1: Add competing hypotheses to the question/runtime surfaces</name>
  <files>research/knowledge-hub/knowledge_hub/topic_shell_support.py, research/knowledge-hub/knowledge_hub/kernel_markdown_renderers.py, research/knowledge-hub/knowledge_hub/runtime_read_path_support.py, research/knowledge-hub/knowledge_hub/topic_replay.py</files>
  <read_first>research/knowledge-hub/knowledge_hub/topic_shell_support.py</read_first>
  <action>Add one explicit `competing_hypotheses` surface to the research-question/runtime path, with bounded status and evidence visibility.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_competing_hypotheses_contracts.py -q</verify>
  <acceptance_criteria>
    - multiple hypotheses are visible at the question/runtime layer
    - the surface coexists with deferred candidates and follow-up subtopics
    - replay/read paths surface the active hypothesis competition explicitly
  </acceptance_criteria>
  <done>The question-level hypothesis surface is durable and operator-visible.</done>
</task>

<task type="auto">
  <name>Task 2: Add isolated acceptance and docs</name>
  <files>research/knowledge-hub/runtime/scripts/run_competing_hypotheses_acceptance.py, research/knowledge-hub/tests/test_runtime_scripts.py, research/knowledge-hub/tests/test_topic_replay.py, research/knowledge-hub/README.md, research/knowledge-hub/runtime/README.md, research/knowledge-hub/runtime/AITP_TEST_RUNBOOK.md</files>
  <read_first>research/knowledge-hub/tests/test_topic_replay.py</read_first>
  <action>Add one isolated acceptance lane and align docs so the multi-hypothesis surface is testable and discoverable.</action>
  <verify>python research/knowledge-hub/runtime/scripts/run_competing_hypotheses_acceptance.py --json</verify>
  <acceptance_criteria>
    - docs and runbook reference the competing-hypotheses acceptance lane
    - isolated acceptance proves the question-level hypothesis surface on a temp kernel root
  </acceptance_criteria>
  <done>Phase `147` is ready to execute and verify.</done>
</task>

</tasks>
