---
phase: 148-hypothesis-branch-routing-surface
plan: 01
type: execute
wave: 1
depends_on:
  - v1.73-closure
files_modified:
  - schemas/research-question.schema.json
  - research/knowledge-hub/runtime/schemas/progressive-disclosure-runtime-bundle.schema.json
  - research/knowledge-hub/knowledge_hub/topic_shell_support.py
  - research/knowledge-hub/knowledge_hub/runtime_read_path_support.py
  - research/knowledge-hub/knowledge_hub/kernel_markdown_renderers.py
  - research/knowledge-hub/knowledge_hub/runtime_bundle_support.py
  - research/knowledge-hub/knowledge_hub/topic_replay.py
  - research/knowledge-hub/runtime/scripts/run_hypothesis_branch_routing_acceptance.py
  - research/knowledge-hub/tests/test_hypothesis_branch_routing_contracts.py
  - research/knowledge-hub/tests/test_runtime_scripts.py
  - research/knowledge-hub/tests/test_topic_replay.py
  - research/knowledge-hub/tests/test_schema_contracts.py
  - research/knowledge-hub/README.md
  - research/knowledge-hub/runtime/README.md
  - research/knowledge-hub/runtime/AITP_TEST_RUNBOOK.md
autonomous: true
requirements:
  - REQ-HROUTE-01
  - REQ-HROUTE-02
  - REQ-HROUTE-03
  - REQ-VERIFY-01
must_haves:
  truths:
    - extend the existing `competing_hypotheses` rows instead of inventing a disconnected branch ledger
    - keep the first slice bounded to declarative hypothesis routing visibility rather than automatic branch spawning
    - coexist with innovation-direction steering, deferred candidates, and follow-up subtopics instead of replacing them
---

<objective>
Make hypothesis-to-branch routing explicit on the active topic surface so
operators can see how each competing hypothesis maps to the current topic,
deferred parking, or a follow-up branch without reconstructing that routing
from separate runtime artifacts.
</objective>

<tasks>

<task type="auto">
  <name>Task 1: Add hypothesis branch-routing metadata to the question/runtime surfaces</name>
  <files>schemas/research-question.schema.json, research/knowledge-hub/runtime/schemas/progressive-disclosure-runtime-bundle.schema.json, research/knowledge-hub/knowledge_hub/topic_shell_support.py, research/knowledge-hub/knowledge_hub/runtime_read_path_support.py, research/knowledge-hub/knowledge_hub/kernel_markdown_renderers.py, research/knowledge-hub/knowledge_hub/runtime_bundle_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 routing surface on each competing hypothesis row, with bounded route kind and target summary visibility through status/replay.</action>
  <verify>python -m pytest research/knowledge-hub/tests/test_hypothesis_branch_routing_contracts.py -q</verify>
  <acceptance_criteria>
    - each competing hypothesis can declare a bounded route kind and target summary
    - runtime/replay surfaces expose the active branch hypothesis plus parked routes explicitly
    - the routing surface coexists with steering, deferred parking, and follow-up subtopics
  </acceptance_criteria>
  <done>The question-level hypothesis routing 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_hypothesis_branch_routing_acceptance.py, research/knowledge-hub/tests/test_runtime_scripts.py, research/knowledge-hub/tests/test_topic_replay.py, research/knowledge-hub/tests/test_schema_contracts.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 hypothesis-routing surface is testable and discoverable.</action>
  <verify>python research/knowledge-hub/runtime/scripts/run_hypothesis_branch_routing_acceptance.py --json</verify>
  <acceptance_criteria>
    - docs and runbook reference the hypothesis-branch-routing acceptance lane
    - isolated acceptance proves one hypothesis can stay local while others route to deferred/follow-up surfaces on a temp kernel root
  </acceptance_criteria>
  <done>Phase `148` is ready to execute and verify.</done>
</task>

</tasks>
