phase-loop-runtime 0.6.2__tar.gz → 0.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (724) hide show
  1. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/MANIFEST.in +1 -0
  2. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/PKG-INFO +3 -1
  3. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/pyproject.toml +6 -1
  4. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/__init__.py +1 -1
  5. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/CONTRACTS.md +13 -0
  6. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/__init__.py +2 -0
  7. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/composition.py +63 -8
  8. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/config.py +20 -2
  9. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/capability_registry.py +156 -4
  10. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/cli.py +409 -27
  11. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/closeout_validators.py +80 -1
  12. phase_loop_runtime-0.7.1/src/phase_loop_runtime/default_executor_resolver.py +315 -0
  13. phase_loop_runtime-0.7.1/src/phase_loop_runtime/deploy/phase-loop-task-message-broker.service +29 -0
  14. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/discovery.py +53 -9
  15. phase_loop_runtime-0.7.1/src/phase_loop_runtime/dispatch_lock.py +264 -0
  16. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/doctor.py +116 -0
  17. phase_loop_runtime-0.7.1/src/phase_loop_runtime/executor_availability.py +128 -0
  18. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/gate_posture.py +46 -0
  19. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/governed_review.py +20 -3
  20. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/handoff.py +95 -0
  21. phase_loop_runtime-0.7.1/src/phase_loop_runtime/harness_env_signatures.py +206 -0
  22. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/injection.py +33 -1
  23. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/launcher.py +903 -423
  24. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/models.py +58 -3
  25. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/panel_invoker.py +287 -19
  26. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/plan_manifest.py +114 -14
  27. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/profiles.py +17 -0
  28. phase_loop_runtime-0.7.1/src/phase_loop_runtime/ratification_policy.py +313 -0
  29. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/reconcile.py +94 -28
  30. phase_loop_runtime-0.7.1/src/phase_loop_runtime/release_guard.py +442 -0
  31. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/runner.py +567 -24
  32. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.golden.json +18 -2
  33. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.schema.json +18 -2
  34. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +14 -10
  35. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +14 -10
  36. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +30 -10
  37. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +37 -12
  38. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +34 -16
  39. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +38 -15
  40. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +34 -9
  41. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +34 -9
  42. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +7 -1
  43. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +13 -1
  44. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +2 -1
  45. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +2 -1
  46. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +12 -8
  47. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +12 -8
  48. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +7 -1
  49. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +13 -1
  50. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +2 -1
  51. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +2 -1
  52. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +12 -8
  53. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +12 -8
  54. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +7 -1
  55. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +13 -1
  56. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +2 -1
  57. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +2 -1
  58. phase_loop_runtime-0.7.1/src/phase_loop_runtime/task_message_broker.py +294 -0
  59. phase_loop_runtime-0.7.1/src/phase_loop_runtime/task_message_broker_client.py +276 -0
  60. phase_loop_runtime-0.7.1/src/phase_loop_runtime/task_message_resolver.py +490 -0
  61. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/worktree_index.py +70 -2
  62. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime.egg-info/PKG-INFO +3 -1
  63. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime.egg-info/SOURCES.txt +34 -0
  64. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime.egg-info/requires.txt +2 -0
  65. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_backcompat.py +6 -2
  66. phase_loop_runtime-0.7.1/tests/test_advisor_board_cli_legacy.py +179 -0
  67. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_composition.py +79 -1
  68. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_config.py +33 -1
  69. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_golden.py +3 -1
  70. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_integration.py +3 -1
  71. phase_loop_runtime-0.7.1/tests/test_advisor_twin_alias_legacy.py +58 -0
  72. phase_loop_runtime-0.7.1/tests/test_autosel.py +614 -0
  73. phase_loop_runtime-0.7.1/tests/test_discovery_hygiene_legacy.py +176 -0
  74. phase_loop_runtime-0.7.1/tests/test_dispatch_lock_reentrancy.py +142 -0
  75. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_doctor_bom.py +7 -0
  76. phase_loop_runtime-0.7.1/tests/test_execgov.py +381 -0
  77. phase_loop_runtime-0.7.1/tests/test_execreg_launch_registry.py +199 -0
  78. phase_loop_runtime-0.7.1/tests/test_executor_availability.py +151 -0
  79. phase_loop_runtime-0.7.1/tests/test_grokexec.py +471 -0
  80. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_launcher_liveness.py +39 -0
  81. phase_loop_runtime-0.7.1/tests/test_launchspec_golden.py +58 -0
  82. phase_loop_runtime-0.7.1/tests/test_manifest_per_entry_164.py +243 -0
  83. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_invoker_spawn.py +73 -0
  84. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_invoker_timeout_argv.py +12 -1
  85. phase_loop_runtime-0.7.1/tests/test_panel_streaming_verdicts.py +213 -0
  86. phase_loop_runtime-0.7.1/tests/test_phase_loop_break_glass_rerun.py +378 -0
  87. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_closeout_owned_dirty_fallback.py +63 -0
  88. phase_loop_runtime-0.7.1/tests/test_phase_loop_concurrent_phase_dispatch.py +47 -0
  89. phase_loop_runtime-0.7.1/tests/test_phase_loop_dry_run_closeout_guard.py +94 -0
  90. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_handoff.py +70 -0
  91. phase_loop_runtime-0.7.1/tests/test_phase_loop_issue_84_explicit_phase.py +113 -0
  92. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_policy.py +1 -1
  93. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_reconcile.py +30 -0
  94. phase_loop_runtime-0.7.1/tests/test_phase_loop_repair_precondition_planned_closeout.py +260 -0
  95. phase_loop_runtime-0.7.1/tests/test_pushflow.py +294 -0
  96. phase_loop_runtime-0.7.1/tests/test_ratification_policy.py +280 -0
  97. phase_loop_runtime-0.7.1/tests/test_release_dispatch_operator_approval_145.py +213 -0
  98. phase_loop_runtime-0.7.1/tests/test_review_leg_sandbox.py +195 -0
  99. phase_loop_runtime-0.7.1/tests/test_status_read_only_62.py +300 -0
  100. phase_loop_runtime-0.7.1/tests/test_task_message_broker.py +329 -0
  101. phase_loop_runtime-0.7.1/tests/test_task_message_broker_cli.py +529 -0
  102. phase_loop_runtime-0.7.1/tests/test_task_message_resolver.py +441 -0
  103. phase_loop_runtime-0.7.1/tests/test_unattended_release.py +188 -0
  104. phase_loop_runtime-0.6.2/src/phase_loop_runtime/dispatch_lock.py +0 -167
  105. phase_loop_runtime-0.6.2/src/phase_loop_runtime/release_guard.py +0 -180
  106. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/README.md +0 -0
  107. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/protocol/protocol.md +0 -0
  108. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/setup.cfg +0 -0
  109. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +0 -0
  110. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +0 -0
  111. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +0 -0
  112. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +0 -0
  113. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +0 -0
  114. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +0 -0
  115. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/protocol.md +0 -0
  116. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +0 -0
  117. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +0 -0
  118. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +0 -0
  119. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +0 -0
  120. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +0 -0
  121. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +0 -0
  122. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +0 -0
  123. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_proc_cpu.py +0 -0
  124. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +0 -0
  125. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +0 -0
  126. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +0 -0
  127. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +0 -0
  128. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +0 -0
  129. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +0 -0
  130. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +0 -0
  131. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +0 -0
  132. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +0 -0
  133. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +0 -0
  134. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +0 -0
  135. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +0 -0
  136. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-a.txt +0 -0
  137. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-b.txt +0 -0
  138. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-c.txt +0 -0
  139. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/claimed-results.json +0 -0
  140. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +0 -0
  141. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/manifest.json +0 -0
  142. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/metrics.json +0 -0
  143. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +0 -0
  144. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +0 -0
  145. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +0 -0
  146. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +0 -0
  147. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +0 -0
  148. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/bundle-check.json +0 -0
  149. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +0 -0
  150. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/operator-note.txt +0 -0
  151. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/events-sample.jsonl +0 -0
  152. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +0 -0
  153. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +0 -0
  154. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +0 -0
  155. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +0 -0
  156. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +0 -0
  157. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +0 -0
  158. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +0 -0
  159. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +0 -0
  160. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/console-summary.txt +0 -0
  161. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/manifest.json +0 -0
  162. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/screenshot-standin.ppm +0 -0
  163. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/adoption_bundle.py +0 -0
  164. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/backing.py +0 -0
  165. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/backing_omnigent.py +0 -0
  166. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/events.py +0 -0
  167. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +0 -0
  168. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/fixtures.py +0 -0
  169. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/harness_mapping.py +0 -0
  170. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/matrix.py +0 -0
  171. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/observability.py +0 -0
  172. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/presets.py +0 -0
  173. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/registries.py +0 -0
  174. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/resolver.py +0 -0
  175. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/schema.py +0 -0
  176. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/standin.py +0 -0
  177. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/advisor_board/validation.py +0 -0
  178. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/agent_runtime_provider.py +0 -0
  179. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_modular.py +0 -0
  180. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +0 -0
  181. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_src/dotfiles_c4_document.baml +0 -0
  182. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +0 -0
  183. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +0 -0
  184. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +0 -0
  185. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_src/emit_phase_closeout.baml +0 -0
  186. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +0 -0
  187. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/baml_src/verification_evidence.baml +0 -0
  188. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/broker.py +0 -0
  189. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/build_bundle.py +0 -0
  190. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/classifier.py +0 -0
  191. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/claude_agent_view.py +0 -0
  192. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/claude_channel_sidecar.py +0 -0
  193. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/closeout.py +0 -0
  194. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/closeout_classifier.py +0 -0
  195. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/closeout_evidence_audit.py +0 -0
  196. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/closeout_validation.py +0 -0
  197. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/__init__.py +0 -0
  198. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/certificate_tier.py +0 -0
  199. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/git_grounded_projection.py +0 -0
  200. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_advisory.py +0 -0
  201. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_core.py +0 -0
  202. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_imports.py +0 -0
  203. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_pin.py +0 -0
  204. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_provenance.py +0 -0
  205. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_real.py +0 -0
  206. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_real_output.py +0 -0
  207. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_redaction.py +0 -0
  208. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_schema.py +0 -0
  209. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/conformance/outside_agent_vectors.py +0 -0
  210. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/consiliency_gates.py +0 -0
  211. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/consiliency_ingest.py +0 -0
  212. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/consiliency_layout.py +0 -0
  213. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/consiliency_scaffold.py +0 -0
  214. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/cross_repo_channel.py +0 -0
  215. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/doc_delta_validator.py +0 -0
  216. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/docs_audit.py +0 -0
  217. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/docs_freshness.py +0 -0
  218. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/docs_surfaces.py +0 -0
  219. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/dotfiles_profile_plugin.py +0 -0
  220. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/events.py +0 -0
  221. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/events_migration.py +0 -0
  222. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/evidence_audit.py +0 -0
  223. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/evidence_audit_config.py +0 -0
  224. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/fleet_map.py +0 -0
  225. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/fleet_metrics.py +0 -0
  226. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/fleet_metrics_export.py +0 -0
  227. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/git_discipline.py +0 -0
  228. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/git_ops.py +0 -0
  229. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/git_topology.py +0 -0
  230. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/governed_bundle.py +0 -0
  231. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/governed_premerge.py +0 -0
  232. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/handoff_path.py +0 -0
  233. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/install_status.py +0 -0
  234. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/lane_scheduler.py +0 -0
  235. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/lease_store.py +0 -0
  236. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/maintenance.py +0 -0
  237. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/migrate_handoffs.py +0 -0
  238. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/observability.py +0 -0
  239. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/phase_loop_drift_audit.py +0 -0
  240. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/phase_worktree_executor.py +0 -0
  241. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/pipeline_adapter/__init__.py +0 -0
  242. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/pipeline_adapter/branch_ops.py +0 -0
  243. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/pipeline_adapter/flag.py +0 -0
  244. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/pipeline_adapter/markers.py +0 -0
  245. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/pipeline_adapter/merge_policy.py +0 -0
  246. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/pipeline_adapter/ratification.py +0 -0
  247. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/pipeline_adapter/sibling_matcher.py +0 -0
  248. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/plan_ir.py +0 -0
  249. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/planner_validation.py +0 -0
  250. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/prompts.py +0 -0
  251. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/provenance.py +0 -0
  252. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/publishing.py +0 -0
  253. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/py.typed +0 -0
  254. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/redaction.py +0 -0
  255. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/reflection_sync.py +0 -0
  256. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/render.py +0 -0
  257. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/repo_validation.py +0 -0
  258. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/review_summary.py +0 -0
  259. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/roadmap_lint.py +0 -0
  260. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/route_log.py +0 -0
  261. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/route_policy/__init__.py +0 -0
  262. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +0 -0
  263. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/runtime_paths.py +0 -0
  264. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/runtime_projection.py +0 -0
  265. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/runtime_resources.py +0 -0
  266. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/schema_export.py +0 -0
  267. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/schemas/phase_loop_closeout.schema.json +0 -0
  268. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skill_install.py +0 -0
  269. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skill_inventory.py +0 -0
  270. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skill_paths.py +0 -0
  271. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skill_sources_plugin.py +0 -0
  272. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +0 -0
  273. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +0 -0
  274. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +0 -0
  275. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +0 -0
  276. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +0 -0
  277. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  278. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  279. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  280. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  281. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  282. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  283. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  284. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  285. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +0 -0
  286. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  287. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +0 -0
  288. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +0 -0
  289. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +0 -0
  290. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +0 -0
  291. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +0 -0
  292. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +0 -0
  293. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +0 -0
  294. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  295. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +0 -0
  296. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  297. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +0 -0
  298. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +0 -0
  299. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +0 -0
  300. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +0 -0
  301. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +0 -0
  302. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-run-train/README.md +0 -0
  303. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +0 -0
  304. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +0 -0
  305. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +0 -0
  306. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +0 -0
  307. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +0 -0
  308. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +0 -0
  309. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  310. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +0 -0
  311. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +0 -0
  312. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +0 -0
  313. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +0 -0
  314. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +0 -0
  315. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +0 -0
  316. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +0 -0
  317. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +0 -0
  318. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  319. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  320. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  321. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  322. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  323. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  324. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  325. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  326. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +0 -0
  327. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  328. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +0 -0
  329. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +0 -0
  330. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +0 -0
  331. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +0 -0
  332. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +0 -0
  333. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +0 -0
  334. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +0 -0
  335. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  336. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +0 -0
  337. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  338. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +0 -0
  339. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +0 -0
  340. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +0 -0
  341. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +0 -0
  342. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +0 -0
  343. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-run-train/README.md +0 -0
  344. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +0 -0
  345. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +0 -0
  346. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +0 -0
  347. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +0 -0
  348. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +0 -0
  349. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +0 -0
  350. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  351. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +0 -0
  352. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +0 -0
  353. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +0 -0
  354. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +0 -0
  355. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +0 -0
  356. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +0 -0
  357. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +0 -0
  358. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +0 -0
  359. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  360. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  361. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  362. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  363. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  364. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  365. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  366. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  367. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +0 -0
  368. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  369. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +0 -0
  370. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +0 -0
  371. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +0 -0
  372. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +0 -0
  373. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +0 -0
  374. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +0 -0
  375. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +0 -0
  376. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  377. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +0 -0
  378. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  379. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +0 -0
  380. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +0 -0
  381. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +0 -0
  382. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +0 -0
  383. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +0 -0
  384. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-run-train/README.md +0 -0
  385. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +0 -0
  386. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +0 -0
  387. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +0 -0
  388. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +0 -0
  389. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +0 -0
  390. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +0 -0
  391. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  392. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +0 -0
  393. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +0 -0
  394. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +0 -0
  395. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +0 -0
  396. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +0 -0
  397. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +0 -0
  398. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +0 -0
  399. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +0 -0
  400. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  401. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  402. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  403. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  404. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  405. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  406. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  407. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  408. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +0 -0
  409. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  410. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +0 -0
  411. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +0 -0
  412. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +0 -0
  413. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +0 -0
  414. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +0 -0
  415. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +0 -0
  416. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +0 -0
  417. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  418. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +0 -0
  419. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  420. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +0 -0
  421. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +0 -0
  422. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +0 -0
  423. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +0 -0
  424. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +0 -0
  425. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-run-train/README.md +0 -0
  426. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +0 -0
  427. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +0 -0
  428. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +0 -0
  429. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +0 -0
  430. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +0 -0
  431. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +0 -0
  432. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  433. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +0 -0
  434. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +0 -0
  435. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +0 -0
  436. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/state.py +0 -0
  437. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/state_degradation.py +0 -0
  438. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/state_ops.py +0 -0
  439. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/train_ledger.py +0 -0
  440. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/train_roadmap.py +0 -0
  441. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/train_runner.py +0 -0
  442. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/verification_evidence.py +0 -0
  443. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/verification_evidence_validator.py +0 -0
  444. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/visual_evidence_validator.py +0 -0
  445. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime/worker_pool.py +0 -0
  446. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime.egg-info/dependency_links.txt +0 -0
  447. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime.egg-info/entry_points.txt +0 -0
  448. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/src/phase_loop_runtime.egg-info/top_level.txt +0 -0
  449. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_advisory_mode.py +0 -0
  450. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_alias_install.py +0 -0
  451. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_backing_homebrew.py +0 -0
  452. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_backing_omnigent.py +0 -0
  453. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_concurrency.py +0 -0
  454. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_ingestion.py +0 -0
  455. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_matrix.py +0 -0
  456. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_observability.py +0 -0
  457. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_presets.py +0 -0
  458. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_registries.py +0 -0
  459. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_resolver.py +0 -0
  460. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_advisor_board_schema.py +0 -0
  461. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_agent_runtime_provider_cs08.py +0 -0
  462. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_branchgov_preflight.py +0 -0
  463. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_certificate_tier.py +0 -0
  464. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_cli_train_status_45.py +0 -0
  465. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_closeout_break_glass_cli.py +0 -0
  466. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_closeout_classifier.py +0 -0
  467. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_closeout_convergence_fixes.py +0 -0
  468. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_closeout_exception_vocab.py +0 -0
  469. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_closeout_validator_hook.py +0 -0
  470. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_closeout_verification_gate.py +0 -0
  471. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_codex_effort_max_clamp_49.py +0 -0
  472. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_conformance_golden.py +0 -0
  473. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_consiliency_dual_layout.py +0 -0
  474. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_consiliency_gates.py +0 -0
  475. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_consiliency_ingest.py +0 -0
  476. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_consiliency_scaffold.py +0 -0
  477. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_coordinator_wave_loop.py +0 -0
  478. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_dispatch_lock_cross_roadmap.py +0 -0
  479. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_dispatch_lock_helper.py +0 -0
  480. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_dispatch_lock_same_roadmap.py +0 -0
  481. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_doc_delta_validator.py +0 -0
  482. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_docs_audit.py +0 -0
  483. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_docs_freshness.py +0 -0
  484. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_dotfiles_tree.py +0 -0
  485. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_execute_phase_handoff_mode.py +0 -0
  486. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_execution_policy_tiering.py +0 -0
  487. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_export_schema.py +0 -0
  488. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_fleet_map.py +0 -0
  489. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_fleet_metrics.py +0 -0
  490. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_fleet_metrics_export.py +0 -0
  491. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_gate_a_wheel_isolation.py +0 -0
  492. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_gate_posture.py +0 -0
  493. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_git_discipline.py +0 -0
  494. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_git_grounded_projection.py +0 -0
  495. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_governed_disjointness_model_first.py +0 -0
  496. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_governed_e2e.py +0 -0
  497. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_governed_gate_crfixes.py +0 -0
  498. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_governed_planning_gate.py +0 -0
  499. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_governed_premerge.py +0 -0
  500. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_governed_premerge_live.py +0 -0
  501. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_governed_review.py +0 -0
  502. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_hotfix_lane.py +0 -0
  503. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_injection_skill_failloud.py +0 -0
  504. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_lane_ir_override.py +0 -0
  505. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_lease_store.py +0 -0
  506. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_lease_store_conformance.py +0 -0
  507. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_ledger_serialization.py +0 -0
  508. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_leg_liveness_monitor.py +0 -0
  509. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_model_class_policy.py +0 -0
  510. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_model_id_source_guard.py +0 -0
  511. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_observability_alerting.py +0 -0
  512. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_advisory.py +0 -0
  513. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_advisory_cli.py +0 -0
  514. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_advisory_fixtures.py +0 -0
  515. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_authority_boundary.py +0 -0
  516. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_contract_drift.py +0 -0
  517. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_contract_imports.py +0 -0
  518. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_contract_pin.py +0 -0
  519. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_core_api.py +0 -0
  520. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_provenance.py +0 -0
  521. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_real_ci.py +0 -0
  522. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_real_cli.py +0 -0
  523. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_real_output.py +0 -0
  524. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_real_runtime.py +0 -0
  525. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_redaction.py +0 -0
  526. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_release_surface.py +0 -0
  527. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_schema_validation.py +0 -0
  528. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_outside_agent_vectors.py +0 -0
  529. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_advisory_mode_63.py +0 -0
  530. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_context_refs_114.py +0 -0
  531. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_invoker.py +0 -0
  532. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_leg_auth_preflight_64.py +0 -0
  533. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_per_leg_model_66.py +0 -0
  534. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_tui_eof_48.py +0 -0
  535. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_panel_verdict_summary.py +0 -0
  536. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_parallel_dispatch_backcompat.py +0 -0
  537. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_parallel_dispatch_cli.py +0 -0
  538. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_adoption_bundle.py +0 -0
  539. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_adoption_bundle_cli.py +0 -0
  540. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_baml_dependency.py +0 -0
  541. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_baml_end_to_end.py +0 -0
  542. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_baml_injection.py +0 -0
  543. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_baml_modular.py +0 -0
  544. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_baml_prompt_taxonomy.py +0 -0
  545. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_baml_runner_closeout.py +0 -0
  546. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_baml_schema_export.py +0 -0
  547. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_baml_schema_source.py +0 -0
  548. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_branch_divergence_event.py +0 -0
  549. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_build_bundle.py +0 -0
  550. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_classifier.py +0 -0
  551. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_agent_view_adapter.py +0 -0
  552. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_agent_view_lifecycle.py +0 -0
  553. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_channel_hooks.py +0 -0
  554. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_channel_mcp.py +0 -0
  555. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_channel_security.py +0 -0
  556. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_channel_session_launch.py +0 -0
  557. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_channel_sidecar.py +0 -0
  558. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_channel_smoke_suite.py +0 -0
  559. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_claude_route_selection.py +0 -0
  560. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_cli.py +0 -0
  561. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_cli_plugin_load.py +0 -0
  562. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_closeout_control_only.py +0 -0
  563. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_closeout_event.py +0 -0
  564. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_closeout_evidence_audit.py +0 -0
  565. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_closeout_hardening.py +0 -0
  566. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_closeout_schema.py +0 -0
  567. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_closeout_validation.py +0 -0
  568. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_collaborator_citation.py +0 -0
  569. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_collaborator_docs.py +0 -0
  570. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_collaborator_rollback.py +0 -0
  571. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_def4_writer_namespacing.py +0 -0
  572. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_dirty_path_classify_phase_owned_tests.py +0 -0
  573. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_dirty_path_classify_previous_phase_owned.py +0 -0
  574. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_discovery.py +0 -0
  575. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_docs.py +0 -0
  576. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_dotfiles_schemas.py +0 -0
  577. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_dotfiles_sources.py +0 -0
  578. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_downstream_governed_pipeline.py +0 -0
  579. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_downstream_instruction_scope_readme.py +0 -0
  580. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_downstream_portal.py +0 -0
  581. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_downstream_regenesis.py +0 -0
  582. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_drift_audit.py +0 -0
  583. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_dry_run_then_run.py +0 -0
  584. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_events_migration.py +0 -0
  585. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_evidence_audit.py +0 -0
  586. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_evidence_audit_runner.py +0 -0
  587. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_evidence_audit_tier2.py +0 -0
  588. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_evidence_audit_tier3.py +0 -0
  589. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_evidence_audit_tuning.py +0 -0
  590. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_execution_policy.py +0 -0
  591. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_executor_degradation.py +0 -0
  592. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_full_phase_mode.py +0 -0
  593. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_handoff_migration.py +0 -0
  594. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_init.py +0 -0
  595. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_injection.py +0 -0
  596. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_install_status.py +0 -0
  597. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_lane_harnesses.py +0 -0
  598. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_lane_ir.py +0 -0
  599. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_lane_ir_fixtures.py +0 -0
  600. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_lane_scheduler.py +0 -0
  601. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_launcher.py +0 -0
  602. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_ledger_debug.py +0 -0
  603. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_ledger_dedup.py +0 -0
  604. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_live_adapters.py +0 -0
  605. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_maintenance.py +0 -0
  606. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_metrics.py +0 -0
  607. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_migration_regressions.py +0 -0
  608. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_mixedrun_dispatch.py +0 -0
  609. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_mixedrun_matrix.py +0 -0
  610. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_mixedrun_observability.py +0 -0
  611. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_models.py +0 -0
  612. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_native_flags.py +0 -0
  613. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_parallel_plan_safe.py +0 -0
  614. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_pi_executor.py +0 -0
  615. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_pipeline_boundaries.py +0 -0
  616. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_pipeline_bridge.py +0 -0
  617. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_pipeline_bundle.py +0 -0
  618. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_pipeline_closeout.py +0 -0
  619. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_pipeline_freshness.py +0 -0
  620. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_pipeline_mode.py +0 -0
  621. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_plan_doc_skip.py +0 -0
  622. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_plan_manifest.py +0 -0
  623. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_planner_redispatch_when_plan_current.py +0 -0
  624. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_planner_validation.py +0 -0
  625. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_protocol_contract.py +0 -0
  626. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_provenance.py +0 -0
  627. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_reconcile_blocker_self_clear.py +0 -0
  628. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_reconcile_recovery_mode.py +0 -0
  629. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_reconcile_to_status_planned_recovery.py +0 -0
  630. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_reducers.py +0 -0
  631. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_repair_skipped_when_blocker_cleared.py +0 -0
  632. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_roadmap_amendments.py +0 -0
  633. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_roadmap_validate.py +0 -0
  634. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_rotation.py +0 -0
  635. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_runner.py +0 -0
  636. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_runner_closeout_validation.py +0 -0
  637. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_runtime_boundary.py +0 -0
  638. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_runtime_decouple.py +0 -0
  639. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_runtime_package_data.py +0 -0
  640. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_runtime_projection.py +0 -0
  641. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_schema_flow.py +0 -0
  642. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_skill_baml_closeout.py +0 -0
  643. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_skill_bridge_contract.py +0 -0
  644. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_skill_contract.py +0 -0
  645. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_skill_execute_contract.py +0 -0
  646. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_skill_install.py +0 -0
  647. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_skill_planner_contract.py +0 -0
  648. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_smoke_blockers.py +0 -0
  649. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_smoke_exhaustion.py +0 -0
  650. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_smoke_reentry.py +0 -0
  651. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_spurious_completion_rejection.py +0 -0
  652. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_start_gate_phase_status.py +0 -0
  653. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_start_gate_refuses_cross_phase_dirty.py +0 -0
  654. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_state.py +0 -0
  655. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_status_transition_events_emitted.py +0 -0
  656. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_substrate_soak_docs.py +0 -0
  657. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_substrate_soak_governed.py +0 -0
  658. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_substrate_soak_portal.py +0 -0
  659. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_terminal_summary_mirrors_baml_closeout.py +0 -0
  660. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_v22_e2e.py +0 -0
  661. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_v22_principles.py +0 -0
  662. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_v45_found_contracts.py +0 -0
  663. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_v45_reconcile.py +0 -0
  664. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_v45_sched.py +0 -0
  665. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_v45_schedharden.py +0 -0
  666. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_wave_runner.py +0 -0
  667. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_work_unit_observability.py +0 -0
  668. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_work_unit_runner.py +0 -0
  669. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_work_unit_state.py +0 -0
  670. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_loop_worktrees.py +0 -0
  671. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_owned_dirty_relaxation.py +0 -0
  672. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_phase_worktree_executor.py +0 -0
  673. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_branch_ops_create.py +0 -0
  674. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_branch_ops_rebase_conflict.py +0 -0
  675. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_branch_ops_refuse_default.py +0 -0
  676. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_flag.py +0 -0
  677. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_markers.py +0 -0
  678. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_merge_policy_parse.py +0 -0
  679. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_ratification_event_payload.py +0 -0
  680. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_ratification_runner.py +0 -0
  681. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_ratification_skipped_standalone.py +0 -0
  682. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pipeline_adapter_standalone_regression.py +0 -0
  683. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_pkg_layout_freeze.py +0 -0
  684. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_plan_ir_iter_waves.py +0 -0
  685. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_preflight_verification.py +0 -0
  686. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_proc_cpu.py +0 -0
  687. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_prune_merged_worktrees_script.py +0 -0
  688. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_publishing.py +0 -0
  689. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_reconcile_manifest_dedup_46.py +0 -0
  690. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_reconcile_verification_log.py +0 -0
  691. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_reflection_sync.py +0 -0
  692. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_release_pin_autotrack.py +0 -0
  693. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_repo_validation.py +0 -0
  694. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_review_summary.py +0 -0
  695. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_route_log.py +0 -0
  696. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_route_policy_conformance.py +0 -0
  697. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_routing_invariants.py +0 -0
  698. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_runtime_state_mirror_agreement.py +0 -0
  699. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_sibling_matcher_patterns.py +0 -0
  700. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_skill_bundle_pinned.py +0 -0
  701. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_skill_install_body_expansion.py +0 -0
  702. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_skill_plan_manifest_write.py +0 -0
  703. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_skill_sources_seam.py +0 -0
  704. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_skills_bundle_drift.py +0 -0
  705. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_skills_canon_parity.py +0 -0
  706. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_skills_src_claude_literal_lint.py +0 -0
  707. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_spec_conformance_gate.py +0 -0
  708. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_sweep_fleet_worktrees_script.py +0 -0
  709. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_sync_skills_apply_failloud.py +0 -0
  710. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_train_e2e.py +0 -0
  711. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_train_invariants.py +0 -0
  712. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_train_merge.py +0 -0
  713. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_train_order_only_deps_47.py +0 -0
  714. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_train_roadmap.py +0 -0
  715. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_train_runner.py +0 -0
  716. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_v34_parallel_dispatch_soak.py +0 -0
  717. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_validate_plan_doc_docs_lane.py +0 -0
  718. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_verification_evidence.py +0 -0
  719. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_verification_evidence_validator.py +0 -0
  720. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_visual_evidence_validator.py +0 -0
  721. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_workerpool_failure_isolation.py +0 -0
  722. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_workerpool_parallel.py +0 -0
  723. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_workerpool_worktree_alloc.py +0 -0
  724. {phase_loop_runtime-0.6.2 → phase_loop_runtime-0.7.1}/tests/test_worktree_index.py +0 -0
@@ -3,3 +3,4 @@ include protocol/protocol.md
3
3
  recursive-include src/phase_loop_runtime *.py py.typed
4
4
  recursive-include src/phase_loop_runtime/baml_src *.baml
5
5
  recursive-include src/phase_loop_runtime/advisor_board *.toml *.md
6
+ recursive-include src/phase_loop_runtime/deploy *.service
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phase-loop-runtime
3
- Version: 0.6.2
3
+ Version: 0.7.1
4
4
  Summary: Harness-neutral phase-loop orchestration runtime and CLI
5
5
  Author: ViperJuice
6
6
  License-Expression: Apache-2.0
@@ -21,6 +21,8 @@ Requires-Dist: PyYAML<7,>=6
21
21
  Requires-Dist: consiliency-contract<0.7,>=0.6.5
22
22
  Requires-Dist: jsonschema<5,>=4
23
23
  Requires-Dist: packaging>=21
24
+ Requires-Dist: websockets<16,>=12
25
+ Requires-Dist: rfc8785<0.2,>=0.1.4
24
26
  Requires-Dist: tomli<3,>=2; python_version < "3.11"
25
27
 
26
28
  # phase-loop-runtime
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "phase-loop-runtime" # PyPI dist name; NOT "agent-harness" (an unrelated third-party PyPI project)
7
- version = "0.6.2"
7
+ version = "0.7.1"
8
8
  description = "Harness-neutral phase-loop orchestration runtime and CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -50,6 +50,10 @@ dependencies = [
50
50
  # and its transitive packaging — is not present); the doctor still degrades to
51
51
  # `unknown` rather than crash if it is somehow absent.
52
52
  "packaging>=21",
53
+ # Governed task-message resolver: authenticated Codex app-server transport
54
+ # plus contract-identical RFC 8785 approval-body hashing.
55
+ "websockets>=12,<16",
56
+ "rfc8785>=0.1.4,<0.2",
53
57
  # Advisor Board config loader (ABDREG) parses advisor-boards.toml. tomllib is
54
58
  # stdlib on 3.11+; on the 3.10 requires-python floor it is absent, so pull in
55
59
  # the tomli backport there (import shim in advisor_board/config.py).
@@ -107,6 +111,7 @@ phase_loop_runtime = [
107
111
  "_contract_docs/**",
108
112
  "_test_fixtures/**",
109
113
  "skills_bundle/**",
114
+ "deploy/*.service",
110
115
  # advisor_board ships its frozen config-format fixture + contract doc so a
111
116
  # pinned install resolves them via importlib.resources (ABDFREEZE).
112
117
  "advisor_board/fixtures/*.toml",
@@ -18,4 +18,4 @@ __all__ = [
18
18
  "state_ops",
19
19
  ]
20
20
 
21
- __version__ = "0.6.2"
21
+ __version__ = "0.7.1"
@@ -255,6 +255,19 @@ the golden proves byte-identity):
255
255
  `claude` seats) now runs two concurrent same-lane CLI/PTY sessions — a scenario this
256
256
  fan-out newly enables and nothing yet tests. The `default` board has one claude seat,
257
257
  so it is unaffected.
258
+ - **Opt-in streaming delivery (REVIEWGOV IF-0-REVIEWGOV-2).** `_run_legs_ordered` (and
259
+ the `invoke_panel` / `invoke_board` entry points) take optional, keyword-only,
260
+ default-`None` `on_leg_complete` (a per-leg callback) and `stream_dir` /
261
+ `review_dir` (incremental per-leg verdict files). When BOTH are `None` the path is
262
+ byte-for-byte the historical one — block on the futures in submission order — so the
263
+ golden is untouched. When EITHER is set, results are collected via `as_completed` so
264
+ each leg is delivered the MOMENT it lands (callback + a `leg-<i>-<label>.verdict.json`
265
+ file written into the dir), while the **consolidated return is still re-sorted to
266
+ submission order** (`result[i]` ↔ `items[i]`). The side-channel is **fail-open**: a
267
+ raising callback or an unwritable dir is swallowed (logged), never breaking the pool
268
+ or failing a leg. Proven by a SINGLE shared out-of-order-completion fixture used by
269
+ both the default-ordering (golden) and fast-before-slow (streaming) tests, so the
270
+ golden cannot pass trivially.
258
271
 
259
272
  ## ABDREF — "Reference, don't inline" ingestion · `panel_invoker._resolve_artifact` / `_resolve_brief`
260
273
 
@@ -86,6 +86,7 @@ from .composition import (
86
86
  BoardIndependence,
87
87
  board_independence,
88
88
  compose_review_board,
89
+ default_board_auth_ok,
89
90
  )
90
91
  from .presets import (
91
92
  CODE_REVIEW_BOARD,
@@ -229,6 +230,7 @@ __all__ = [
229
230
  "get_preset",
230
231
  # composition (availability-aware 4-vendor board)
231
232
  "compose_review_board",
233
+ "default_board_auth_ok",
232
234
  "board_independence",
233
235
  "BoardIndependence",
234
236
  "LENS_CYCLE",
@@ -72,9 +72,33 @@ def _seat_for(vendor: str, lens: str) -> Seat:
72
72
  return Seat(model=spec["model"], effort=spec["effort"], harness=spec["harness"], lens=lens)
73
73
 
74
74
 
75
+ def default_board_auth_ok(vendor: str) -> bool:
76
+ """Production auth gate for a board vendor (REVIEWGOV-W1 / #151).
77
+
78
+ Reuses the executor's OWN cached, timeout-bounded, fail-closed ``auth_ok`` — the
79
+ closure ``capability_registry`` binds onto each record, which wraps
80
+ ``executor_availability.auth_ok_for`` over that record's
81
+ ``auth_preflight_probes`` (the same probes ``run_auth_preflight`` uses). So the
82
+ board's auth verdict is single-sourced with the dispatch path's, cached across
83
+ the board's seats, and never re-implements probing. A board vendor with no
84
+ registered capability record, or whose gate raises, fails CLOSED (treated as
85
+ unauthed → dropped → backfilled). The board vendors (grok/claude/codex/gemini)
86
+ map 1:1 onto executor names. Import is function-local to avoid the
87
+ ``advisor_board`` ↔ ``capability_registry`` import cycle."""
88
+ from ..capability_registry import capability_registry
89
+
90
+ try:
91
+ gate = capability_registry().get(vendor)
92
+ auth_ok = getattr(gate, "auth_ok", None) if gate is not None else None
93
+ return bool(auth_ok()) if auth_ok is not None else False
94
+ except Exception:
95
+ return False
96
+
97
+
75
98
  def compose_review_board(
76
99
  *,
77
100
  is_available: Callable[[str], bool] | None = None,
101
+ auth_ok: Callable[[str], bool] | None = None,
78
102
  target: int = DEFAULT_TARGET_SEATS,
79
103
  floor: int = FLOOR_SEATS,
80
104
  name: str = "code-review",
@@ -82,19 +106,49 @@ def compose_review_board(
82
106
  ) -> Board:
83
107
  """Compose the availability-aware review board.
84
108
 
85
- ``is_available(vendor) -> bool`` decides which vendors are up; it defaults to
86
- the advisor-board's canonical PATH probe
87
- (``DEFAULT_HARNESS_REGISTRY.is_available``) so composition is registration-
88
- driven and grok is probed exactly like codex/gemini/claude. Inject it in tests
89
- to simulate 4/3/2/1 vendors up.
109
+ A vendor is seated only when it is BOTH reachable AND authenticated —
110
+ composition gates on ``is_available ∧ auth_ok`` (REVIEWGOV IF-0-REVIEWGOV-1 /
111
+ #151). A PATH-present-but-unauthenticated vendor (e.g. a ``grok`` binary on PATH
112
+ with no logged-in session) is treated as **down**: it is dropped and its seat is
113
+ backfilled onto an authenticated vendor with a distinct lens, exactly like a
114
+ PATH-absent vendor. This closes the hole where the board composed on PATH alone
115
+ and seated a vendor whose leg would then fail-closed to DEGRADED.
116
+
117
+ ``is_available(vendor) -> bool`` decides reachability; it defaults to the
118
+ advisor-board's canonical PATH probe (``DEFAULT_HARNESS_REGISTRY.is_available``)
119
+ so composition is registration-driven and grok is probed exactly like
120
+ codex/gemini/claude.
121
+
122
+ ``auth_ok(vendor) -> bool`` decides authentication; it defaults to
123
+ ``default_board_auth_ok`` (the cached, timeout-bounded, fail-closed
124
+ ``auth_ok_for`` gate), so the production default is genuinely auth-aware.
125
+
126
+ **Test affordance (documented coupling, not the general contract):** when
127
+ ``is_available`` is INJECTED but ``auth_ok`` is not, auth defaults to
128
+ pass-through (every vendor treated authed) so an availability-SIMULATION caller
129
+ fully owns the gate and never shells out to the real auth probe. Inject
130
+ ``auth_ok`` explicitly to simulate the auth dimension. The all-vendors-up static
131
+ presets (``presets.CODE_REVIEW_BOARD``, ``resolver._STANDIN_CODE_REVIEW``) rely
132
+ on this so their module-import composition stays hermetic. Any NON-test caller
133
+ that injects ``is_available`` alone therefore opts OUT of auth gating — pass
134
+ ``auth_ok`` (e.g. ``default_board_auth_ok``) to keep it.
90
135
 
91
136
  Returns a ``Board`` of exactly ``target`` seats whenever ≥1 vendor is available
92
- (never fewer than ``floor``); an empty board only when NO vendor is available.
137
+ and authed (never fewer than ``floor``); an empty board only when NO vendor is
138
+ both up and authed.
93
139
  """
94
140
  if target < floor:
95
141
  raise ValueError(f"target {target} is below the floor {floor}")
96
- probe = is_available if is_available is not None else DEFAULT_HARNESS_REGISTRY.is_available
97
- available = [v for v in _VENDOR_ORDER if probe(v)]
142
+ avail_probe = is_available if is_available is not None else DEFAULT_HARNESS_REGISTRY.is_available
143
+ if auth_ok is not None:
144
+ auth_probe = auth_ok
145
+ elif is_available is not None:
146
+ # Injected availability owns the gate: auth defaults to pass-through so a
147
+ # simulation caller never shells out (see docstring test affordance).
148
+ auth_probe = lambda _vendor: True # noqa: E731
149
+ else:
150
+ auth_probe = default_board_auth_ok
151
+ available = [v for v in _VENDOR_ORDER if avail_probe(v) and auth_probe(v)]
98
152
  if not available:
99
153
  # Nothing to compose — the caller's run degrades wholesale. (The floor is a
100
154
  # count of INDEPENDENT reviewers to seat on AVAILABLE vendors; with zero up
@@ -174,6 +228,7 @@ def board_independence(board: Board) -> BoardIndependence:
174
228
 
175
229
  __all__ = [
176
230
  "compose_review_board",
231
+ "default_board_auth_ok",
177
232
  "LENS_CYCLE",
178
233
  "DEFAULT_TARGET_SEATS",
179
234
  "FLOOR_SEATS",
@@ -31,7 +31,7 @@ except ModuleNotFoundError: # Python 3.10 — the requires-python floor
31
31
  import tomli as tomllib # type: ignore[no-redef]
32
32
 
33
33
  from .validation import SeatValidationError, validate_board
34
- from .composition import compose_review_board
34
+ from .composition import compose_review_board, default_board_auth_ok
35
35
  from .presets import DEFAULT_BOARD_NAME, PRESETS
36
36
  from .schema import (
37
37
  AUTH_LANES,
@@ -168,6 +168,7 @@ def load_boards(
168
168
  matrix: Any | None = None,
169
169
  validate: bool = True,
170
170
  is_available: "Callable[[str], bool] | None" = None,
171
+ auth_ok: "Callable[[str], bool] | None" = None,
171
172
  ) -> BoardConfig:
172
173
  """Load the board config, layering user boards over the built-in presets.
173
174
 
@@ -185,6 +186,16 @@ def load_boards(
185
186
  availability view is single-sourced) and otherwise defaults to the advisor-
186
187
  board PATH probe. Composition happens BEFORE the user overlay, so a
187
188
  user-defined ``code-review`` board still wins.
189
+
190
+ ``auth_ok(vendor) -> bool`` (REVIEWGOV-W1 / #151) additionally gates the
191
+ composed ``code-review`` board on AUTHENTICATION so a PATH-present-but-unauthed
192
+ vendor is dropped and backfilled. When omitted it defaults to
193
+ ``composition.default_board_auth_ok`` — the cached, timeout-bounded, fail-closed
194
+ ``auth_ok_for`` gate — so the LIVE convening path is genuinely auth-aware (the
195
+ real fix for #151). The gate only runs for vendors that pass the availability
196
+ (PATH) probe, so a host with no vendor CLI installed short-circuits without
197
+ shelling out. Inject ``auth_ok`` (e.g. ``lambda _v: True``) to isolate the
198
+ availability dimension in a test.
188
199
  """
189
200
  boards: dict[str, Board] = dict(PRESETS)
190
201
  default_board = DEFAULT_BOARD_NAME
@@ -193,7 +204,14 @@ def load_boards(
193
204
  compose_probe = is_available
194
205
  if compose_probe is None and matrix is not None:
195
206
  compose_probe = getattr(getattr(matrix, "harnesses", None), "is_available", None)
196
- composed_review = compose_review_board(is_available=compose_probe)
207
+ # #151: the LIVE convening path is auth-aware by DEFAULT — a PATH-present but
208
+ # unauthenticated vendor is dropped and backfilled. Pass an explicit ``auth_ok``
209
+ # so the composer never falls through to its is_available-injected pass-through
210
+ # affordance (which exists only for the static presets / simulation tests). The
211
+ # gate short-circuits for vendors that fail the availability probe, so a host
212
+ # with no vendor CLI never shells out.
213
+ compose_auth = auth_ok if auth_ok is not None else default_board_auth_ok
214
+ composed_review = compose_review_board(is_available=compose_probe, auth_ok=compose_auth)
197
215
  boards[composed_review.name] = composed_review
198
216
 
199
217
  cfg_path = path if path is not None else board_config_path(env)
@@ -122,6 +122,9 @@ DEFAULT_CAPABILITY_REGISTRY = {
122
122
  subagent_posture="native",
123
123
  live_available=True,
124
124
  dry_run_available=True,
125
+ # tty-only: the claude leg drives the interactive TUI and needs a real
126
+ # controlling terminal, so it must never be auto-picked headlessly.
127
+ headless_launchable=False,
125
128
  live_proof_gate="disposable_proof_required",
126
129
  promotion_status="proof_gated",
127
130
  promotion_requirements=(
@@ -241,6 +244,52 @@ DEFAULT_CAPABILITY_REGISTRY = {
241
244
  output_capture_format="terminal_summary",
242
245
  default_model_profiles={action: _ACTION_DEFAULT_PROFILES[action] for action in ("roadmap", "plan", "execute", "repair", "review")},
243
246
  ),
247
+ "grok": ExecutorCapabilityRecord(
248
+ executor="grok",
249
+ supported_actions=("roadmap", "plan", "execute", "repair", "review"),
250
+ # GROKEXEC: grok runs headless (`grok -p`) with `--output-format plain`, so
251
+ # like the agy/gemini leg it has NO structured-output flag on this path (the
252
+ # closeout is prompt-injected + text-parsed). Its permission model is
253
+ # all-or-nothing per-run (`--permission-mode`), so `explicit_approval_controls`
254
+ # is dropped, mirroring gemini. `skill_bundle_injection` is ALSO dropped: grok
255
+ # ships no bespoke phase-loop skill bundle, so it is driven purely by the
256
+ # staged context file (`context_file_instructions`) — claiming bundle injection
257
+ # would be dishonest (no grok-* skills exist to inject).
258
+ capabilities=(
259
+ "live_launch",
260
+ "dry_run",
261
+ "inline_instructions",
262
+ "context_file_instructions",
263
+ ),
264
+ strengths=("xAI-family reasoning model", "context-file friendly", "authenticated local CLI"),
265
+ # grok write actions auto-approve via `--permission-mode bypassPermissions`;
266
+ # `review` is HARD read-only via a `--tools` allow-list of read/search
267
+ # built-ins only (headless grok auto-approves writes regardless of
268
+ # permission-mode/sandbox, so tool restriction is the only real lever).
269
+ limits=(
270
+ "requires local grok CLI subscription auth",
271
+ "grok headless auto-approves writes; write actions run bypassPermissions, review is read-only via a read-only --tools allow-list",
272
+ "grok --output-format plain emits no structured JSON; closeout is prompt-injected and text-parsed",
273
+ ),
274
+ injection_mode="context_file",
275
+ permission_posture="explicit",
276
+ subagent_posture="limited",
277
+ live_available=True,
278
+ dry_run_available=True,
279
+ live_proof_gate="disposable_proof_required",
280
+ promotion_status="proof_gated",
281
+ promotion_requirements=(
282
+ "fake harness parity regression proof",
283
+ "disposable live roadmap proof",
284
+ "launch.json",
285
+ "terminal-summary.json",
286
+ ),
287
+ auth_preflight_mode="metadata_only",
288
+ auth_preflight_probes=("grok --version", "grok --help"),
289
+ timeout_posture="runner_managed",
290
+ output_capture_format="terminal_summary",
291
+ default_model_profiles={action: _ACTION_DEFAULT_PROFILES[action] for action in ("roadmap", "plan", "execute", "repair", "review")},
292
+ ),
244
293
  "opencode": ExecutorCapabilityRecord(
245
294
  executor="opencode",
246
295
  supported_actions=("roadmap", "plan", "execute", "repair", "review"),
@@ -354,6 +403,8 @@ DEFAULT_CAPABILITY_REGISTRY = {
354
403
  subagent_posture="none",
355
404
  live_available=False,
356
405
  dry_run_available=True,
406
+ # No headless launch surface at all (operator handoff, not a spawned CLI).
407
+ headless_launchable=False,
357
408
  promotion_status="manual_only",
358
409
  promotion_requirements=("manual import", "shared automation handoff"),
359
410
  timeout_posture="unknown",
@@ -436,6 +487,18 @@ DEFAULT_PROVIDER_POLICY_CAPABILITIES = {
436
487
  "thinkingConfig.thinkingLevel is carried by custom aliases and is not exposed as a CLI flag.",
437
488
  ),
438
489
  ),
490
+ "grok": ProviderPolicyCapability(
491
+ provider="xai",
492
+ executor="grok",
493
+ supported_work_units=_ALL_WORK_UNITS,
494
+ supported_efforts=_ALL_EFFORTS,
495
+ unsupported_policy_behavior=_FAIL_CLOSED,
496
+ default_effort="medium",
497
+ effort_map={effort: effort for effort in _ALL_EFFORTS},
498
+ notes=(
499
+ "grok's `--reasoning-effort` CLI flag accepts a superset of NORMALIZED_EFFORT_LEVELS (its own set adds `none`), so every normalized effort passes through directly with no clamp.",
500
+ ),
501
+ ),
439
502
  "gemini-api": ProviderPolicyCapability(
440
503
  provider="gemini-api-openai-compatible",
441
504
  executor="command",
@@ -508,8 +571,74 @@ DEFAULT_PROVIDER_POLICY_CAPABILITIES = {
508
571
  }
509
572
 
510
573
 
574
+ _BOUND_CAPABILITY_REGISTRY: dict[str, ExecutorCapabilityRecord] | None = None
575
+
576
+
577
+ def _provider_backing_for(executor: str):
578
+ """EXECREG (IF-0-EXECREG-1): the ``provider_backing`` seam hook, wired to the
579
+ ``AgentRuntimeProvider`` seam (``agent_runtime_provider.py``). The registry maps
580
+ each executor to its ``AgentRuntimeProvider`` backing; none is registered yet,
581
+ so every executor resolves to ``None`` — nullable, no behavior change. A future
582
+ backing swap (TUI -> official API, per north-star Principle 3) is a binding here,
583
+ not a dispatch edit. Function-local import keeps this off the module import path
584
+ (and out of any cycle)."""
585
+ from .agent_runtime_provider import AgentRuntimeProvider
586
+
587
+ # executor -> registered AgentRuntimeProvider backing (empty until B5/backings land).
588
+ provider_registry: dict[str, AgentRuntimeProvider] = {}
589
+ return provider_registry.get(executor)
590
+
591
+
592
+ def _bind_capability_records(
593
+ base: dict[str, ExecutorCapabilityRecord]
594
+ ) -> dict[str, ExecutorCapabilityRecord]:
595
+ """Attach the EXECREG callables to each base record. Function-local imports
596
+ break the launcher<->capability_registry import cycle (launcher imports this
597
+ module at top level). The cache/memo for auth/availability lives in
598
+ ``executor_availability`` (module level), never on the frozen record."""
599
+ from .launcher import LAUNCH_COMMAND_BUILDERS, SESSION_TRANSCRIPT_HOOKS
600
+ from .executor_availability import auth_ok_for, is_executor_available
601
+
602
+ bound: dict[str, ExecutorCapabilityRecord] = {}
603
+ for name, record in base.items():
604
+ bound[name] = record.bind_runtime(
605
+ build_command=LAUNCH_COMMAND_BUILDERS.get(name),
606
+ is_available=(lambda executor=name: is_executor_available(executor)),
607
+ auth_ok=(
608
+ lambda executor=name, probes=record.auth_preflight_probes: auth_ok_for(
609
+ executor, probes
610
+ )
611
+ ),
612
+ provider_backing=_provider_backing_for(name),
613
+ # EXECREG session-preservation seam: a metadata-only transcript hook per
614
+ # executor (registry-driven, like build_command). Only executors that
615
+ # persist a discoverable session (grok) register one; the rest resolve
616
+ # to None — dormant until AUTOSEL/observability wires them.
617
+ get_session_transcript=SESSION_TRANSCRIPT_HOOKS.get(name),
618
+ )
619
+ return bound
620
+
621
+
622
+ _BOUND_CACHE_SOURCE: dict[str, ExecutorCapabilityRecord] | None = None
623
+
624
+
511
625
  def capability_registry() -> dict[str, ExecutorCapabilityRecord]:
512
- return DEFAULT_CAPABILITY_REGISTRY
626
+ """The executor capability registry, with EXECREG runtime callables bound onto
627
+ each record (``build_command`` / ``is_available`` / ``auth_ok`` /
628
+ ``provider_backing`` / ``get_session_transcript``). Bound lazily and cached
629
+ keyed on the identity of ``DEFAULT_CAPABILITY_REGISTRY`` — so the binding cost is
630
+ paid once in the common case, but a test (or any caller) that REPLACES
631
+ ``DEFAULT_CAPABILITY_REGISTRY`` (e.g. ``patch(..., patched_registry)``) is
632
+ honored: the identity changes, so the cache rebinds against the new source
633
+ instead of returning a stale snapshot. Metadata is identical to the source
634
+ (record equality is unaffected — the callables are ClassVar bindings, not
635
+ fields)."""
636
+ global _BOUND_CAPABILITY_REGISTRY, _BOUND_CACHE_SOURCE
637
+ source = DEFAULT_CAPABILITY_REGISTRY
638
+ if _BOUND_CAPABILITY_REGISTRY is None or _BOUND_CACHE_SOURCE is not source:
639
+ _BOUND_CAPABILITY_REGISTRY = _bind_capability_records(source)
640
+ _BOUND_CACHE_SOURCE = source
641
+ return _BOUND_CAPABILITY_REGISTRY
513
642
 
514
643
 
515
644
  def provider_policy_capabilities() -> dict[str, ProviderPolicyCapability]:
@@ -633,7 +762,18 @@ def resolve_dispatch_decision(
633
762
  operator: DispatchHints | None = None,
634
763
  plan: DispatchHints | None = None,
635
764
  roadmap: DispatchHints | None = None,
765
+ default_executor: str | None = None,
636
766
  ) -> DispatchDecision:
767
+ # AUTOSEL (IF-0-AUTOSEL-2): ``default_executor`` replaces the bare codex seed.
768
+ # It is the PRIMARY ``preferred`` only when no operator/plan/roadmap hint names
769
+ # one; when a preferred hint IS set the seed is demoted to a TRAILING fallback
770
+ # candidate (last in ``candidate_order``). ``None`` reproduces legacy behavior
771
+ # exactly (seed = ``default_executor_for_action(action)`` == codex in both roles),
772
+ # so callers that set ``preferred_executors`` explicitly (repair pivot, work-unit
773
+ # rotation, delegation broker) are unaffected — they pass ``None`` and the trailing
774
+ # candidate stays legacy codex. The runner only passes a non-None seed when there
775
+ # is NO preferred hint, so an AUTOSEL pick never displaces an operator's choice.
776
+ seed_default = default_executor or default_executor_for_action(action)
637
777
  registry = registry or capability_registry()
638
778
  if action == "maintain-skills":
639
779
  return DispatchDecision(
@@ -648,9 +788,9 @@ def resolve_dispatch_decision(
648
788
  allowed = merged.allowed_executors or tuple(
649
789
  executor for executor, record in registry.items() if action in record.supported_actions
650
790
  )
651
- preferred = merged.preferred_executors or (default_executor_for_action(action),)
791
+ preferred = merged.preferred_executors or (seed_default,)
652
792
  fallback = tuple(executor for executor in merged.fallback_executors if executor not in preferred)
653
- candidate_order = _dedupe((*preferred, *fallback, *allowed, default_executor_for_action(action)))
793
+ candidate_order = _dedupe((*preferred, *fallback, *allowed, seed_default))
654
794
  considered: list[str] = []
655
795
  degraded = active_degraded_executors(repo) if repo is not None and not dry_run else set()
656
796
  degraded_viable: list[str] = []
@@ -665,6 +805,7 @@ def resolve_dispatch_decision(
665
805
  tuple(considered),
666
806
  "disabled_executor",
667
807
  f"Dispatch policy rejected `{executor}` for `{action}` because it is disabled by hints.",
808
+ seed_default=seed_default,
668
809
  )
669
810
  continue
670
811
  if executor not in allowed:
@@ -675,6 +816,7 @@ def resolve_dispatch_decision(
675
816
  tuple(considered),
676
817
  "executor_not_allowed",
677
818
  f"Dispatch policy rejected `{executor}` for `{action}` because it is outside the allowed executor set.",
819
+ seed_default=seed_default,
678
820
  )
679
821
  continue
680
822
  record = registry.get(executor)
@@ -686,6 +828,7 @@ def resolve_dispatch_decision(
686
828
  tuple(considered),
687
829
  "unsupported_action",
688
830
  f"Dispatch policy rejected `{executor}` for `{action}` because the registry does not support that action.",
831
+ seed_default=seed_default,
689
832
  )
690
833
  continue
691
834
  missing = tuple(capability for capability in merged.required_capabilities if capability not in record.capabilities)
@@ -697,6 +840,7 @@ def resolve_dispatch_decision(
697
840
  tuple(considered),
698
841
  "missing_required_capabilities",
699
842
  f"Dispatch policy rejected `{executor}` for `{action}` because it lacks required capabilities: {', '.join(missing)}.",
843
+ seed_default=seed_default,
700
844
  )
701
845
  continue
702
846
  if dry_run:
@@ -710,6 +854,7 @@ def resolve_dispatch_decision(
710
854
  tuple(considered),
711
855
  "live_launch_unavailable",
712
856
  f"Dispatch policy selected `{executor}` for `{action}`, but that executor is currently dry-run-only.",
857
+ seed_default=seed_default,
713
858
  )
714
859
  if executor in preferred and fallback:
715
860
  continue
@@ -738,6 +883,7 @@ def resolve_dispatch_decision(
738
883
  tuple(considered or candidate_order),
739
884
  "all_candidates_session_degraded",
740
885
  f"Dispatch policy could not resolve a live executor for `{action}` because all otherwise viable candidates are session-degraded.",
886
+ seed_default=seed_default,
741
887
  )
742
888
 
743
889
  return _blocked_decision(
@@ -746,6 +892,7 @@ def resolve_dispatch_decision(
746
892
  tuple(considered or candidate_order),
747
893
  "no_allowed_executor",
748
894
  f"Dispatch policy could not resolve an executor for `{action}` with the current hints and registry.",
895
+ seed_default=seed_default,
749
896
  )
750
897
 
751
898
 
@@ -818,12 +965,17 @@ def _blocked_decision(
818
965
  considered: tuple[str, ...],
819
966
  blocked_reason: str,
820
967
  blocked_summary: str,
968
+ *,
969
+ seed_default: str | None = None,
821
970
  ) -> DispatchDecision:
971
+ # AUTOSEL: the reported preferred set must match the seed actually resolved
972
+ # (grok CR #1) — an AUTOSEL seed of e.g. grok must not be reported as codex on
973
+ # a blocked decision. ``None`` reproduces the legacy codex default.
822
974
  return DispatchDecision(
823
975
  action=action,
824
976
  selected_executor=None,
825
977
  source=merged.source,
826
- preferred_executors=merged.preferred_executors or (default_executor_for_action(action),),
978
+ preferred_executors=merged.preferred_executors or (seed_default or default_executor_for_action(action),),
827
979
  allowed_executors=merged.allowed_executors,
828
980
  fallback_executors=merged.fallback_executors,
829
981
  disabled_executors=merged.disabled_executors,