phase-loop-runtime 0.7.13__tar.gz → 0.7.15__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 (1206) hide show
  1. phase_loop_runtime-0.7.15/MANIFEST.in +7 -0
  2. phase_loop_runtime-0.7.15/PKG-INFO +309 -0
  3. phase_loop_runtime-0.7.15/README.md +279 -0
  4. phase_loop_runtime-0.7.15/protocol/protocol.md +2478 -0
  5. phase_loop_runtime-0.7.15/pyproject.toml +160 -0
  6. phase_loop_runtime-0.7.15/src/phase_loop_runtime/__init__.py +21 -0
  7. phase_loop_runtime-0.7.15/src/phase_loop_runtime/_contract_docs/phase-loop/protocol.md +2799 -0
  8. phase_loop_runtime-0.7.15/src/phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +84 -0
  9. phase_loop_runtime-0.7.15/src/phase_loop_runtime/adoption_bundle.py +272 -0
  10. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/CONTRACTS.md +487 -0
  11. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/__init__.py +373 -0
  12. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/backing.py +1246 -0
  13. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/composition.py +311 -0
  14. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/config.py +299 -0
  15. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +59 -0
  16. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/fixtures.py +104 -0
  17. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/harness_mapping.py +219 -0
  18. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/matrix.py +146 -0
  19. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/presets.py +190 -0
  20. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/registries.py +326 -0
  21. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/resolver.py +250 -0
  22. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/schema.py +355 -0
  23. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/standin.py +166 -0
  24. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/validation.py +159 -0
  25. phase_loop_runtime-0.7.15/src/phase_loop_runtime/agent_runtime_provider.py +675 -0
  26. phase_loop_runtime-0.7.15/src/phase_loop_runtime/agy_canary_evidence.py +8443 -0
  27. phase_loop_runtime-0.7.15/src/phase_loop_runtime/baml_modular.py +662 -0
  28. phase_loop_runtime-0.7.15/src/phase_loop_runtime/build_bundle.py +309 -0
  29. phase_loop_runtime-0.7.15/src/phase_loop_runtime/capability_registry.py +1027 -0
  30. phase_loop_runtime-0.7.15/src/phase_loop_runtime/cli.py +4826 -0
  31. phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_classifier.py +347 -0
  32. phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_validation.py +192 -0
  33. phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_validators.py +551 -0
  34. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/VENDOR.json +1 -0
  35. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/consiliency_spec/outside_agent_router.py +216 -0
  36. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-route-verdict.schema.json +72 -0
  37. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-submission.schema.json +342 -0
  38. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-empty-evidence-refs.json +20 -0
  39. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-git-object-id-length.json +43 -0
  40. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-missing-digest.json +40 -0
  41. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-path-traversal.json +41 -0
  42. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-raw-payload.json +40 -0
  43. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-source-bundle-mismatch.json +39 -0
  44. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unknown-producer-identity-posture.json +42 -0
  45. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unsupported-verdict.json +12 -0
  46. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/manifest.json +112 -0
  47. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-ambiguity-report.json +43 -0
  48. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-implementation-submission.json +40 -0
  49. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-work-request.json +43 -0
  50. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_advisory.py +221 -0
  51. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_conform_evidence.py +1722 -0
  52. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_core.py +174 -0
  53. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_imports.py +187 -0
  54. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_pin.py +48 -0
  55. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_real.py +231 -0
  56. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_real_output.py +91 -0
  57. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_redaction.py +150 -0
  58. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_schema.py +217 -0
  59. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_vectors.py +231 -0
  60. phase_loop_runtime-0.7.15/src/phase_loop_runtime/consiliency_layout.py +662 -0
  61. phase_loop_runtime-0.7.15/src/phase_loop_runtime/consiliency_scaffold.py +304 -0
  62. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/__init__.py +121 -0
  63. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/base.py +239 -0
  64. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/claude.py +14 -0
  65. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/codex.py +14 -0
  66. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/outside_agent.py +36 -0
  67. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/admission.py +607 -0
  68. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/credsep.py +560 -0
  69. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/evidence.py +450 -0
  70. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/live.py +5455 -0
  71. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/verbs.py +680 -0
  72. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/contracts.py +355 -0
  73. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/event_log.py +366 -0
  74. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/fencing.py +182 -0
  75. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/provider_contracts.py +153 -0
  76. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/reconcile.py +273 -0
  77. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/status.py +74 -0
  78. phase_loop_runtime-0.7.15/src/phase_loop_runtime/declared_identity.py +53 -0
  79. phase_loop_runtime-0.7.15/src/phase_loop_runtime/discovery.py +2583 -0
  80. phase_loop_runtime-0.7.15/src/phase_loop_runtime/docs_freshness.py +619 -0
  81. phase_loop_runtime-0.7.15/src/phase_loop_runtime/docs_surfaces.py +164 -0
  82. phase_loop_runtime-0.7.15/src/phase_loop_runtime/doctor.py +584 -0
  83. phase_loop_runtime-0.7.15/src/phase_loop_runtime/entry_doc_check.py +1279 -0
  84. phase_loop_runtime-0.7.15/src/phase_loop_runtime/events.py +170 -0
  85. phase_loop_runtime-0.7.15/src/phase_loop_runtime/evidence_audit_config.py +171 -0
  86. phase_loop_runtime-0.7.15/src/phase_loop_runtime/fab_delta.py +1443 -0
  87. phase_loop_runtime-0.7.15/src/phase_loop_runtime/fab_gate.py +2025 -0
  88. phase_loop_runtime-0.7.15/src/phase_loop_runtime/fabpub_capability.py +1 -0
  89. phase_loop_runtime-0.7.15/src/phase_loop_runtime/fabpub_tdd_chronology.py +1660 -0
  90. phase_loop_runtime-0.7.15/src/phase_loop_runtime/fabreadmit_capability.py +5 -0
  91. phase_loop_runtime-0.7.15/src/phase_loop_runtime/gate_posture.py +181 -0
  92. phase_loop_runtime-0.7.15/src/phase_loop_runtime/goal_coverage.py +411 -0
  93. phase_loop_runtime-0.7.15/src/phase_loop_runtime/governed_premerge.py +525 -0
  94. phase_loop_runtime-0.7.15/src/phase_loop_runtime/governed_review.py +526 -0
  95. phase_loop_runtime-0.7.15/src/phase_loop_runtime/lane_scheduler.py +354 -0
  96. phase_loop_runtime-0.7.15/src/phase_loop_runtime/launcher.py +3901 -0
  97. phase_loop_runtime-0.7.15/src/phase_loop_runtime/legible_evidence.py +2415 -0
  98. phase_loop_runtime-0.7.15/src/phase_loop_runtime/migrate_handoffs.py +200 -0
  99. phase_loop_runtime-0.7.15/src/phase_loop_runtime/models.py +3067 -0
  100. phase_loop_runtime-0.7.15/src/phase_loop_runtime/panel_invoker.py +8240 -0
  101. phase_loop_runtime-0.7.15/src/phase_loop_runtime/phase_loop_drift_audit.py +388 -0
  102. phase_loop_runtime-0.7.15/src/phase_loop_runtime/phase_worktree_executor.py +878 -0
  103. phase_loop_runtime-0.7.15/src/phase_loop_runtime/pipeline_adapter/branch_ops.py +274 -0
  104. phase_loop_runtime-0.7.15/src/phase_loop_runtime/plan_ir.py +547 -0
  105. phase_loop_runtime-0.7.15/src/phase_loop_runtime/plan_manifest.py +3447 -0
  106. phase_loop_runtime-0.7.15/src/phase_loop_runtime/plan_pin_lint.py +97 -0
  107. phase_loop_runtime-0.7.15/src/phase_loop_runtime/president_adapter.py +143 -0
  108. phase_loop_runtime-0.7.15/src/phase_loop_runtime/producer_manifest.py +60 -0
  109. phase_loop_runtime-0.7.15/src/phase_loop_runtime/profiles.py +1010 -0
  110. phase_loop_runtime-0.7.15/src/phase_loop_runtime/prompts.py +365 -0
  111. phase_loop_runtime-0.7.15/src/phase_loop_runtime/proof_stages.py +75 -0
  112. phase_loop_runtime-0.7.15/src/phase_loop_runtime/publishing.py +1226 -0
  113. phase_loop_runtime-0.7.15/src/phase_loop_runtime/ratification_policy.py +313 -0
  114. phase_loop_runtime-0.7.15/src/phase_loop_runtime/reconcile.py +1786 -0
  115. phase_loop_runtime-0.7.15/src/phase_loop_runtime/render.py +546 -0
  116. phase_loop_runtime-0.7.15/src/phase_loop_runtime/review_stage.py +456 -0
  117. phase_loop_runtime-0.7.15/src/phase_loop_runtime/reviewtruth_native_fill_capability.py +10 -0
  118. phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_assumptions.py +802 -0
  119. phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_lint.py +1144 -0
  120. phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_ownership.py +1395 -0
  121. phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_representation_check.py +348 -0
  122. phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_reseal.py +84 -0
  123. phase_loop_runtime-0.7.15/src/phase_loop_runtime/runner.py +13271 -0
  124. phase_loop_runtime-0.7.15/src/phase_loop_runtime/runtime_paths.py +292 -0
  125. phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_egress.py +393 -0
  126. phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_policy.py +343 -0
  127. phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_retention.py +178 -0
  128. phase_loop_runtime-0.7.15/src/phase_loop_runtime/schema_export.py +291 -0
  129. phase_loop_runtime-0.7.15/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.golden.json +96 -0
  130. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skill_install.py +176 -0
  131. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +172 -0
  132. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +172 -0
  133. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +165 -0
  134. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +811 -0
  135. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +197 -0
  136. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +274 -0
  137. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +677 -0
  138. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +115 -0
  139. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +481 -0
  140. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +373 -0
  141. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +808 -0
  142. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +1329 -0
  143. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +112 -0
  144. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +243 -0
  145. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +249 -0
  146. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +74 -0
  147. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +170 -0
  148. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +170 -0
  149. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +252 -0
  150. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +197 -0
  151. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +274 -0
  152. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +677 -0
  153. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +171 -0
  154. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +316 -0
  155. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +1329 -0
  156. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +105 -0
  157. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +162 -0
  158. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +162 -0
  159. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +219 -0
  160. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +197 -0
  161. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +274 -0
  162. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +677 -0
  163. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +168 -0
  164. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +226 -0
  165. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +1329 -0
  166. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +105 -0
  167. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +162 -0
  168. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +162 -0
  169. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +217 -0
  170. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +197 -0
  171. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +274 -0
  172. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +677 -0
  173. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +168 -0
  174. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +220 -0
  175. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +1329 -0
  176. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +105 -0
  177. phase_loop_runtime-0.7.15/src/phase_loop_runtime/tdd_receipts.py +279 -0
  178. phase_loop_runtime-0.7.15/src/phase_loop_runtime/train_ledger.py +427 -0
  179. phase_loop_runtime-0.7.15/src/phase_loop_runtime/train_runner.py +4114 -0
  180. phase_loop_runtime-0.7.15/src/phase_loop_runtime/verification_evidence.py +2375 -0
  181. phase_loop_runtime-0.7.15/src/phase_loop_runtime/worker_pool.py +160 -0
  182. phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/PKG-INFO +309 -0
  183. phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/SOURCES.txt +938 -0
  184. phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/entry_points.txt +11 -0
  185. phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/requires.txt +15 -0
  186. phase_loop_runtime-0.7.15/tests/test_acceptance_falsifier_contract.py +513 -0
  187. phase_loop_runtime-0.7.15/tests/test_advisor_board_advisory_mode.py +301 -0
  188. phase_loop_runtime-0.7.15/tests/test_advisor_board_backcompat.py +161 -0
  189. phase_loop_runtime-0.7.15/tests/test_advisor_board_backing_homebrew.py +483 -0
  190. phase_loop_runtime-0.7.15/tests/test_advisor_board_backing_omnigent.py +772 -0
  191. phase_loop_runtime-0.7.15/tests/test_advisor_board_cli_legacy.py +516 -0
  192. phase_loop_runtime-0.7.15/tests/test_advisor_board_composition.py +1913 -0
  193. phase_loop_runtime-0.7.15/tests/test_advisor_board_golden.py +387 -0
  194. phase_loop_runtime-0.7.15/tests/test_advisor_board_integration.py +352 -0
  195. phase_loop_runtime-0.7.15/tests/test_advisor_board_live_research.py +145 -0
  196. phase_loop_runtime-0.7.15/tests/test_advisor_board_observability.py +391 -0
  197. phase_loop_runtime-0.7.15/tests/test_advisor_board_presets.py +152 -0
  198. phase_loop_runtime-0.7.15/tests/test_advisor_board_registries.py +154 -0
  199. phase_loop_runtime-0.7.15/tests/test_advisor_board_research.py +630 -0
  200. phase_loop_runtime-0.7.15/tests/test_advisor_board_static_import_862.py +207 -0
  201. phase_loop_runtime-0.7.15/tests/test_agy_canary_evidence.py +6691 -0
  202. phase_loop_runtime-0.7.15/tests/test_autosel.py +620 -0
  203. phase_loop_runtime-0.7.15/tests/test_broker_command_builders.py +73 -0
  204. phase_loop_runtime-0.7.15/tests/test_broker_evidence_schema_drift_789.py +424 -0
  205. phase_loop_runtime-0.7.15/tests/test_broker_staged_tree_delivery.py +600 -0
  206. phase_loop_runtime-0.7.15/tests/test_ci_chronology_scope.py +397 -0
  207. phase_loop_runtime-0.7.15/tests/test_ci_gate_metrics.py +100 -0
  208. phase_loop_runtime-0.7.15/tests/test_ci_main_red.py +340 -0
  209. phase_loop_runtime-0.7.15/tests/test_ci_offload_lock.py +206 -0
  210. phase_loop_runtime-0.7.15/tests/test_ci_workflow_concurrency.py +35 -0
  211. phase_loop_runtime-0.7.15/tests/test_claude_json_schema_metaschema_291.py +81 -0
  212. phase_loop_runtime-0.7.15/tests/test_cli_train_status_45.py +155 -0
  213. phase_loop_runtime-0.7.15/tests/test_closeout_classifier.py +470 -0
  214. phase_loop_runtime-0.7.15/tests/test_closeout_import_cycle_819.py +34 -0
  215. phase_loop_runtime-0.7.15/tests/test_closeout_validator_hook.py +186 -0
  216. phase_loop_runtime-0.7.15/tests/test_closeout_verification_gate.py +664 -0
  217. phase_loop_runtime-0.7.15/tests/test_common_directory_leases_807.py +257 -0
  218. phase_loop_runtime-0.7.15/tests/test_conftest_isolation.py +52 -0
  219. phase_loop_runtime-0.7.15/tests/test_console_scripts_are_declared.py +135 -0
  220. phase_loop_runtime-0.7.15/tests/test_contract_floor_guard_378.py +1359 -0
  221. phase_loop_runtime-0.7.15/tests/test_convergence_adapters.py +265 -0
  222. phase_loop_runtime-0.7.15/tests/test_convergence_broker_admission.py +427 -0
  223. phase_loop_runtime-0.7.15/tests/test_convergence_broker_credsep.py +1349 -0
  224. phase_loop_runtime-0.7.15/tests/test_convergence_broker_revocation_race.py +502 -0
  225. phase_loop_runtime-0.7.15/tests/test_convergence_broker_verbs.py +253 -0
  226. phase_loop_runtime-0.7.15/tests/test_convergence_event_log.py +249 -0
  227. phase_loop_runtime-0.7.15/tests/test_convergence_live_enable.py +682 -0
  228. phase_loop_runtime-0.7.15/tests/test_convergence_reconcile.py +185 -0
  229. phase_loop_runtime-0.7.15/tests/test_convergence_runtime_imports.py +496 -0
  230. phase_loop_runtime-0.7.15/tests/test_convergence_status.py +107 -0
  231. phase_loop_runtime-0.7.15/tests/test_convergence_train_integration.py +103 -0
  232. phase_loop_runtime-0.7.15/tests/test_cr_fixes_pr220.py +490 -0
  233. phase_loop_runtime-0.7.15/tests/test_discovery_hygiene_legacy.py +240 -0
  234. phase_loop_runtime-0.7.15/tests/test_dispatch_hold_guard.py +127 -0
  235. phase_loop_runtime-0.7.15/tests/test_dispatch_lock_reentrancy.py +170 -0
  236. phase_loop_runtime-0.7.15/tests/test_docs_audit.py +274 -0
  237. phase_loop_runtime-0.7.15/tests/test_doctor_bom.py +229 -0
  238. phase_loop_runtime-0.7.15/tests/test_dotfiles_tree.py +93 -0
  239. phase_loop_runtime-0.7.15/tests/test_egress_prefix_crosses_the_broker_thread.py +208 -0
  240. phase_loop_runtime-0.7.15/tests/test_entry_doc_check.py +1425 -0
  241. phase_loop_runtime-0.7.15/tests/test_executor_exited_without_closeout_785.py +229 -0
  242. phase_loop_runtime-0.7.15/tests/test_fab_activation_promotion.py +1721 -0
  243. phase_loop_runtime-0.7.15/tests/test_fab_closeout_crash_safety.py +689 -0
  244. phase_loop_runtime-0.7.15/tests/test_fab_delta_c.py +1784 -0
  245. phase_loop_runtime-0.7.15/tests/test_fab_delta_consumer.py +2331 -0
  246. phase_loop_runtime-0.7.15/tests/test_fab_flag_off_recovery_leak_299.py +217 -0
  247. phase_loop_runtime-0.7.15/tests/test_fabpub_admission_compat_789.py +775 -0
  248. phase_loop_runtime-0.7.15/tests/test_fabpub_inventory_worktree_lifecycle_789.py +831 -0
  249. phase_loop_runtime-0.7.15/tests/test_fabpub_partition_rotation_789d.py +5493 -0
  250. phase_loop_runtime-0.7.15/tests/test_fabpub_recovery_controls_789.py +320 -0
  251. phase_loop_runtime-0.7.15/tests/test_fabpub_rotate_partition_cli_789d.py +665 -0
  252. phase_loop_runtime-0.7.15/tests/test_fabpub_shared_epoch.py +4458 -0
  253. phase_loop_runtime-0.7.15/tests/test_fabpub_zero_history_bootstrap.py +582 -0
  254. phase_loop_runtime-0.7.15/tests/test_fabreadmit_authority_digest_v2.py +270 -0
  255. phase_loop_runtime-0.7.15/tests/test_fabreadmit_broker.py +341 -0
  256. phase_loop_runtime-0.7.15/tests/test_fleet_metrics.py +201 -0
  257. phase_loop_runtime-0.7.15/tests/test_gate_a_wheel_isolation.py +145 -0
  258. phase_loop_runtime-0.7.15/tests/test_gate_fail_open_visibility.py +1037 -0
  259. phase_loop_runtime-0.7.15/tests/test_gate_parity_244_245.py +525 -0
  260. phase_loop_runtime-0.7.15/tests/test_goal_coverage.py +590 -0
  261. phase_loop_runtime-0.7.15/tests/test_governed_cross_vendor_floor_358.py +174 -0
  262. phase_loop_runtime-0.7.15/tests/test_governed_planning_gate.py +198 -0
  263. phase_loop_runtime-0.7.15/tests/test_governed_premerge.py +211 -0
  264. phase_loop_runtime-0.7.15/tests/test_governed_premerge_live.py +291 -0
  265. phase_loop_runtime-0.7.15/tests/test_governed_review.py +212 -0
  266. phase_loop_runtime-0.7.15/tests/test_govlean_declared_identity.py +68 -0
  267. phase_loop_runtime-0.7.15/tests/test_govlean_panel_policy.py +157 -0
  268. phase_loop_runtime-0.7.15/tests/test_govlean_plan_manifest_issue_dispositions.py +614 -0
  269. phase_loop_runtime-0.7.15/tests/test_govlean_plan_pin_lint.py +152 -0
  270. phase_loop_runtime-0.7.15/tests/test_govlean_producer_manifest.py +107 -0
  271. phase_loop_runtime-0.7.15/tests/test_govlean_proof_stages.py +78 -0
  272. phase_loop_runtime-0.7.15/tests/test_govlean_roadmap_reseal.py +133 -0
  273. phase_loop_runtime-0.7.15/tests/test_govlean_skill_policy_parity.py +244 -0
  274. phase_loop_runtime-0.7.15/tests/test_govlean_tdd_receipts.py +253 -0
  275. phase_loop_runtime-0.7.15/tests/test_grokexec.py +502 -0
  276. phase_loop_runtime-0.7.15/tests/test_harden_evidence_producer.py +4446 -0
  277. phase_loop_runtime-0.7.15/tests/test_harden_evidence_verifier.py +465 -0
  278. phase_loop_runtime-0.7.15/tests/test_harden_json_depth_825.py +248 -0
  279. phase_loop_runtime-0.7.15/tests/test_injection_skill_failloud.py +145 -0
  280. phase_loop_runtime-0.7.15/tests/test_leg_liveness_monitor.py +393 -0
  281. phase_loop_runtime-0.7.15/tests/test_legible_evidence.py +2052 -0
  282. phase_loop_runtime-0.7.15/tests/test_legible_review_repairs.py +5731 -0
  283. phase_loop_runtime-0.7.15/tests/test_legible_roadmap_contract.py +2664 -0
  284. phase_loop_runtime-0.7.15/tests/test_live_smoke_gate_executes.py +84 -0
  285. phase_loop_runtime-0.7.15/tests/test_model_class_policy.py +210 -0
  286. phase_loop_runtime-0.7.15/tests/test_model_id_source_guard.py +145 -0
  287. phase_loop_runtime-0.7.15/tests/test_model_tier_taxonomy.py +430 -0
  288. phase_loop_runtime-0.7.15/tests/test_native_claude_seat_fill.py +780 -0
  289. phase_loop_runtime-0.7.15/tests/test_native_claude_seat_fill_green.py +201 -0
  290. phase_loop_runtime-0.7.15/tests/test_outside_agent_canonical_corpus.py +377 -0
  291. phase_loop_runtime-0.7.15/tests/test_outside_agent_conform_evidence.py +7003 -0
  292. phase_loop_runtime-0.7.15/tests/test_outside_agent_contract_drift.py +437 -0
  293. phase_loop_runtime-0.7.15/tests/test_outside_agent_contract_imports.py +158 -0
  294. phase_loop_runtime-0.7.15/tests/test_outside_agent_contract_pin.py +22 -0
  295. phase_loop_runtime-0.7.15/tests/test_outside_agent_redaction_separation.py +1001 -0
  296. phase_loop_runtime-0.7.15/tests/test_outside_agent_release_surface.py +355 -0
  297. phase_loop_runtime-0.7.15/tests/test_packaged_vector_manifest_pin.py +66 -0
  298. phase_loop_runtime-0.7.15/tests/test_panel_context_refs_114.py +380 -0
  299. phase_loop_runtime-0.7.15/tests/test_panel_gemini_no_command_preamble.py +73 -0
  300. phase_loop_runtime-0.7.15/tests/test_panel_invoker.py +179 -0
  301. phase_loop_runtime-0.7.15/tests/test_panel_invoker_spawn.py +609 -0
  302. phase_loop_runtime-0.7.15/tests/test_panel_invoker_timeout_argv.py +2381 -0
  303. phase_loop_runtime-0.7.15/tests/test_panel_invoker_windows_import.py +95 -0
  304. phase_loop_runtime-0.7.15/tests/test_panel_leg_failure_diagnostic.py +198 -0
  305. phase_loop_runtime-0.7.15/tests/test_panel_native_fill_183.py +405 -0
  306. phase_loop_runtime-0.7.15/tests/test_panel_per_leg_model_66.py +92 -0
  307. phase_loop_runtime-0.7.15/tests/test_panel_streaming_verdicts.py +214 -0
  308. phase_loop_runtime-0.7.15/tests/test_panel_tui_liveness_188.py +578 -0
  309. phase_loop_runtime-0.7.15/tests/test_phase_loop_adoption_bundle_cli.py +221 -0
  310. phase_loop_runtime-0.7.15/tests/test_phase_loop_cli.py +1379 -0
  311. phase_loop_runtime-0.7.15/tests/test_phase_loop_concurrent_phase_dispatch.py +107 -0
  312. phase_loop_runtime-0.7.15/tests/test_phase_loop_evidence_audit.py +209 -0
  313. phase_loop_runtime-0.7.15/tests/test_phase_loop_execution_policy.py +523 -0
  314. phase_loop_runtime-0.7.15/tests/test_phase_loop_handoff_migration.py +232 -0
  315. phase_loop_runtime-0.7.15/tests/test_phase_loop_lane_ir.py +152 -0
  316. phase_loop_runtime-0.7.15/tests/test_phase_loop_lane_scheduler.py +264 -0
  317. phase_loop_runtime-0.7.15/tests/test_phase_loop_launcher.py +1977 -0
  318. phase_loop_runtime-0.7.15/tests/test_phase_loop_ledger_debug.py +258 -0
  319. phase_loop_runtime-0.7.15/tests/test_phase_loop_ledger_dedup.py +425 -0
  320. phase_loop_runtime-0.7.15/tests/test_phase_loop_models.py +1021 -0
  321. phase_loop_runtime-0.7.15/tests/test_phase_loop_native_flags.py +146 -0
  322. phase_loop_runtime-0.7.15/tests/test_phase_loop_pipeline_bundle.py +363 -0
  323. phase_loop_runtime-0.7.15/tests/test_phase_loop_plan_doc_skip.py +173 -0
  324. phase_loop_runtime-0.7.15/tests/test_phase_loop_plan_manifest.py +232 -0
  325. phase_loop_runtime-0.7.15/tests/test_phase_loop_policy.py +93 -0
  326. phase_loop_runtime-0.7.15/tests/test_phase_loop_protocol_contract.py +725 -0
  327. phase_loop_runtime-0.7.15/tests/test_phase_loop_reconcile_to_status_planned_recovery.py +202 -0
  328. phase_loop_runtime-0.7.15/tests/test_phase_loop_repair_precondition_planned_closeout.py +259 -0
  329. phase_loop_runtime-0.7.15/tests/test_phase_loop_rotation.py +197 -0
  330. phase_loop_runtime-0.7.15/tests/test_phase_loop_runner.py +3781 -0
  331. phase_loop_runtime-0.7.15/tests/test_phase_loop_schema_flow.py +92 -0
  332. phase_loop_runtime-0.7.15/tests/test_phase_loop_smoke_blockers.py +244 -0
  333. phase_loop_runtime-0.7.15/tests/test_phase_loop_smoke_exhaustion.py +68 -0
  334. phase_loop_runtime-0.7.15/tests/test_phase_loop_v45_sched.py +583 -0
  335. phase_loop_runtime-0.7.15/tests/test_phase_loop_v45_schedharden.py +801 -0
  336. phase_loop_runtime-0.7.15/tests/test_phase_loop_work_unit_runner.py +300 -0
  337. phase_loop_runtime-0.7.15/tests/test_phase_state_disagreement_312.py +2088 -0
  338. phase_loop_runtime-0.7.15/tests/test_phase_worktree_executor.py +826 -0
  339. phase_loop_runtime-0.7.15/tests/test_pipeline_adapter_markers.py +49 -0
  340. phase_loop_runtime-0.7.15/tests/test_pr_readback_789.py +351 -0
  341. phase_loop_runtime-0.7.15/tests/test_preflight_verification.py +450 -0
  342. phase_loop_runtime-0.7.15/tests/test_president_wiring.py +689 -0
  343. phase_loop_runtime-0.7.15/tests/test_proofgate_attestation_workflow.py +216 -0
  344. phase_loop_runtime-0.7.15/tests/test_proofgate_cleanup.py +381 -0
  345. phase_loop_runtime-0.7.15/tests/test_proofgate_isolation.py +386 -0
  346. phase_loop_runtime-0.7.15/tests/test_proofgate_receipts.py +446 -0
  347. phase_loop_runtime-0.7.15/tests/test_public_installer.py +232 -0
  348. phase_loop_runtime-0.7.15/tests/test_publishing.py +705 -0
  349. phase_loop_runtime-0.7.15/tests/test_reconcile_portability_85c.py +1131 -0
  350. phase_loop_runtime-0.7.15/tests/test_review_leg_sandbox.py +511 -0
  351. phase_loop_runtime-0.7.15/tests/test_review_policy_govlean_repairs.py +161 -0
  352. phase_loop_runtime-0.7.15/tests/test_review_stage_binding.py +183 -0
  353. phase_loop_runtime-0.7.15/tests/test_review_stage_board_findings.py +337 -0
  354. phase_loop_runtime-0.7.15/tests/test_review_staged_tree_authorization.py +281 -0
  355. phase_loop_runtime-0.7.15/tests/test_roadmap_ownership.py +2650 -0
  356. phase_loop_runtime-0.7.15/tests/test_roadmap_representation_consistency.py +173 -0
  357. phase_loop_runtime-0.7.15/tests/test_routing_invariants.py +140 -0
  358. phase_loop_runtime-0.7.15/tests/test_runtime_adapter_output_720.py +487 -0
  359. phase_loop_runtime-0.7.15/tests/test_runtime_event_log_hardening_720.py +268 -0
  360. phase_loop_runtime-0.7.15/tests/test_runtime_procfs_identity_870.py +114 -0
  361. phase_loop_runtime-0.7.15/tests/test_sandbox_clone.py +521 -0
  362. phase_loop_runtime-0.7.15/tests/test_sandbox_egress.py +717 -0
  363. phase_loop_runtime-0.7.15/tests/test_sandbox_policy.py +392 -0
  364. phase_loop_runtime-0.7.15/tests/test_sandbox_preamble.py +80 -0
  365. phase_loop_runtime-0.7.15/tests/test_sandbox_retention.py +301 -0
  366. phase_loop_runtime-0.7.15/tests/test_skill_liveness_contract.py +276 -0
  367. phase_loop_runtime-0.7.15/tests/test_skill_plan_manifest_write.py +296 -0
  368. phase_loop_runtime-0.7.15/tests/test_skills_bundle_drift.py +128 -0
  369. phase_loop_runtime-0.7.15/tests/test_skills_canon_parity.py +424 -0
  370. phase_loop_runtime-0.7.15/tests/test_spec_conformance_gate.py +202 -0
  371. phase_loop_runtime-0.7.15/tests/test_stale_roadmap_dispatch_guard.py +107 -0
  372. phase_loop_runtime-0.7.15/tests/test_suite_interpreter_satisfies_requires_python.py +208 -0
  373. phase_loop_runtime-0.7.15/tests/test_task_message_broker.py +377 -0
  374. phase_loop_runtime-0.7.15/tests/test_tdd_chronology.py +5942 -0
  375. phase_loop_runtime-0.7.15/tests/test_the_real_launch_carries_the_prefix.py +285 -0
  376. phase_loop_runtime-0.7.15/tests/test_train_authority_import_811.py +39 -0
  377. phase_loop_runtime-0.7.15/tests/test_train_e2e.py +621 -0
  378. phase_loop_runtime-0.7.15/tests/test_train_invariants.py +3545 -0
  379. phase_loop_runtime-0.7.15/tests/test_train_merge.py +3128 -0
  380. phase_loop_runtime-0.7.15/tests/test_train_prebuilt.py +1340 -0
  381. phase_loop_runtime-0.7.15/tests/test_train_review_authorization.py +742 -0
  382. phase_loop_runtime-0.7.15/tests/test_train_roadmap.py +963 -0
  383. phase_loop_runtime-0.7.15/tests/test_train_runner.py +3610 -0
  384. phase_loop_runtime-0.7.15/tests/test_v34_parallel_dispatch_soak.py +207 -0
  385. phase_loop_runtime-0.7.15/tests/test_validate_plan_doc_fail_closed.py +126 -0
  386. phase_loop_runtime-0.7.15/tests/test_validate_plan_doc_goal_coverage.py +177 -0
  387. phase_loop_runtime-0.7.15/tests/test_validate_plan_doc_proofgate.py +365 -0
  388. phase_loop_runtime-0.7.15/tests/test_verification_dotdot_execution_428.py +306 -0
  389. phase_loop_runtime-0.7.15/tests/test_verification_evidence.py +3006 -0
  390. phase_loop_runtime-0.7.15/tests/test_verification_interpreter_guard_221.py +409 -0
  391. phase_loop_runtime-0.7.15/tests/test_verification_venv_identity_428.py +400 -0
  392. phase_loop_runtime-0.7.15/tests/test_workerpool_failure_isolation.py +159 -0
  393. phase_loop_runtime-0.7.15/tests/test_workerpool_parallel.py +73 -0
  394. phase_loop_runtime-0.7.15/tests/test_workerpool_worktree_alloc.py +114 -0
  395. phase_loop_runtime-0.7.13/MANIFEST.in +0 -6
  396. phase_loop_runtime-0.7.13/PKG-INFO +0 -158
  397. phase_loop_runtime-0.7.13/README.md +0 -129
  398. phase_loop_runtime-0.7.13/protocol/protocol.md +0 -2475
  399. phase_loop_runtime-0.7.13/pyproject.toml +0 -143
  400. phase_loop_runtime-0.7.13/src/phase_loop_runtime/__init__.py +0 -21
  401. phase_loop_runtime-0.7.13/src/phase_loop_runtime/_contract_docs/phase-loop/protocol.md +0 -2796
  402. phase_loop_runtime-0.7.13/src/phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +0 -72
  403. phase_loop_runtime-0.7.13/src/phase_loop_runtime/adoption_bundle.py +0 -273
  404. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/CONTRACTS.md +0 -402
  405. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/__init__.py +0 -363
  406. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/backing.py +0 -188
  407. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/composition.py +0 -235
  408. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/config.py +0 -273
  409. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +0 -59
  410. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/fixtures.py +0 -100
  411. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/harness_mapping.py +0 -219
  412. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/matrix.py +0 -146
  413. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/presets.py +0 -188
  414. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/registries.py +0 -321
  415. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/resolver.py +0 -248
  416. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/schema.py +0 -355
  417. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/standin.py +0 -166
  418. phase_loop_runtime-0.7.13/src/phase_loop_runtime/advisor_board/validation.py +0 -159
  419. phase_loop_runtime-0.7.13/src/phase_loop_runtime/agent_runtime_provider.py +0 -676
  420. phase_loop_runtime-0.7.13/src/phase_loop_runtime/baml_modular.py +0 -662
  421. phase_loop_runtime-0.7.13/src/phase_loop_runtime/build_bundle.py +0 -299
  422. phase_loop_runtime-0.7.13/src/phase_loop_runtime/capability_registry.py +0 -1026
  423. phase_loop_runtime-0.7.13/src/phase_loop_runtime/cli.py +0 -3999
  424. phase_loop_runtime-0.7.13/src/phase_loop_runtime/closeout_classifier.py +0 -120
  425. phase_loop_runtime-0.7.13/src/phase_loop_runtime/closeout_validation.py +0 -144
  426. phase_loop_runtime-0.7.13/src/phase_loop_runtime/closeout_validators.py +0 -338
  427. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_advisory.py +0 -208
  428. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_core.py +0 -118
  429. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_imports.py +0 -161
  430. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_pin.py +0 -33
  431. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_real.py +0 -220
  432. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_real_output.py +0 -57
  433. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_redaction.py +0 -123
  434. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_schema.py +0 -123
  435. phase_loop_runtime-0.7.13/src/phase_loop_runtime/conformance/outside_agent_vectors.py +0 -173
  436. phase_loop_runtime-0.7.13/src/phase_loop_runtime/consiliency_layout.py +0 -176
  437. phase_loop_runtime-0.7.13/src/phase_loop_runtime/consiliency_scaffold.py +0 -305
  438. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/__init__.py +0 -110
  439. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/adapters/base.py +0 -52
  440. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/adapters/claude.py +0 -5
  441. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/adapters/codex.py +0 -5
  442. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/adapters/outside_agent.py +0 -9
  443. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/broker/admission.py +0 -56
  444. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/broker/credsep.py +0 -316
  445. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/broker/evidence.py +0 -53
  446. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/broker/live.py +0 -187
  447. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/broker/verbs.py +0 -76
  448. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/contracts.py +0 -133
  449. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/event_log.py +0 -140
  450. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/fencing.py +0 -68
  451. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/provider_contracts.py +0 -151
  452. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/reconcile.py +0 -92
  453. phase_loop_runtime-0.7.13/src/phase_loop_runtime/convergence/status.py +0 -33
  454. phase_loop_runtime-0.7.13/src/phase_loop_runtime/discovery.py +0 -2447
  455. phase_loop_runtime-0.7.13/src/phase_loop_runtime/docs_freshness.py +0 -468
  456. phase_loop_runtime-0.7.13/src/phase_loop_runtime/docs_surfaces.py +0 -150
  457. phase_loop_runtime-0.7.13/src/phase_loop_runtime/doctor.py +0 -582
  458. phase_loop_runtime-0.7.13/src/phase_loop_runtime/events.py +0 -167
  459. phase_loop_runtime-0.7.13/src/phase_loop_runtime/evidence_audit_config.py +0 -172
  460. phase_loop_runtime-0.7.13/src/phase_loop_runtime/fab_delta.py +0 -1443
  461. phase_loop_runtime-0.7.13/src/phase_loop_runtime/fab_gate.py +0 -2026
  462. phase_loop_runtime-0.7.13/src/phase_loop_runtime/gate_posture.py +0 -181
  463. phase_loop_runtime-0.7.13/src/phase_loop_runtime/goal_coverage.py +0 -216
  464. phase_loop_runtime-0.7.13/src/phase_loop_runtime/governed_premerge.py +0 -393
  465. phase_loop_runtime-0.7.13/src/phase_loop_runtime/governed_review.py +0 -281
  466. phase_loop_runtime-0.7.13/src/phase_loop_runtime/lane_scheduler.py +0 -317
  467. phase_loop_runtime-0.7.13/src/phase_loop_runtime/launcher.py +0 -3446
  468. phase_loop_runtime-0.7.13/src/phase_loop_runtime/migrate_handoffs.py +0 -201
  469. phase_loop_runtime-0.7.13/src/phase_loop_runtime/models.py +0 -3053
  470. phase_loop_runtime-0.7.13/src/phase_loop_runtime/panel_invoker.py +0 -4086
  471. phase_loop_runtime-0.7.13/src/phase_loop_runtime/phase_loop_drift_audit.py +0 -388
  472. phase_loop_runtime-0.7.13/src/phase_loop_runtime/phase_worktree_executor.py +0 -433
  473. phase_loop_runtime-0.7.13/src/phase_loop_runtime/pipeline_adapter/branch_ops.py +0 -274
  474. phase_loop_runtime-0.7.13/src/phase_loop_runtime/plan_ir.py +0 -523
  475. phase_loop_runtime-0.7.13/src/phase_loop_runtime/plan_manifest.py +0 -515
  476. phase_loop_runtime-0.7.13/src/phase_loop_runtime/profiles.py +0 -935
  477. phase_loop_runtime-0.7.13/src/phase_loop_runtime/prompts.py +0 -365
  478. phase_loop_runtime-0.7.13/src/phase_loop_runtime/publishing.py +0 -254
  479. phase_loop_runtime-0.7.13/src/phase_loop_runtime/ratification_policy.py +0 -313
  480. phase_loop_runtime-0.7.13/src/phase_loop_runtime/reconcile.py +0 -1766
  481. phase_loop_runtime-0.7.13/src/phase_loop_runtime/render.py +0 -436
  482. phase_loop_runtime-0.7.13/src/phase_loop_runtime/roadmap_lint.py +0 -492
  483. phase_loop_runtime-0.7.13/src/phase_loop_runtime/runner.py +0 -10393
  484. phase_loop_runtime-0.7.13/src/phase_loop_runtime/runtime_paths.py +0 -283
  485. phase_loop_runtime-0.7.13/src/phase_loop_runtime/schema_export.py +0 -292
  486. phase_loop_runtime-0.7.13/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.golden.json +0 -95
  487. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skill_install.py +0 -176
  488. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +0 -80
  489. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +0 -80
  490. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +0 -165
  491. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +0 -791
  492. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +0 -197
  493. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +0 -274
  494. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +0 -673
  495. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +0 -115
  496. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +0 -473
  497. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +0 -352
  498. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +0 -800
  499. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +0 -1222
  500. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +0 -75
  501. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +0 -243
  502. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +0 -249
  503. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +0 -74
  504. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +0 -83
  505. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +0 -83
  506. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +0 -252
  507. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +0 -197
  508. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +0 -274
  509. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +0 -673
  510. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +0 -163
  511. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +0 -308
  512. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +0 -1222
  513. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +0 -75
  514. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +0 -75
  515. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +0 -75
  516. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +0 -219
  517. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +0 -197
  518. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +0 -274
  519. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +0 -673
  520. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +0 -160
  521. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +0 -218
  522. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +0 -1222
  523. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +0 -75
  524. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +0 -75
  525. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +0 -75
  526. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +0 -217
  527. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +0 -197
  528. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +0 -274
  529. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +0 -673
  530. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +0 -160
  531. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +0 -212
  532. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +0 -1222
  533. phase_loop_runtime-0.7.13/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +0 -75
  534. phase_loop_runtime-0.7.13/src/phase_loop_runtime/train_ledger.py +0 -406
  535. phase_loop_runtime-0.7.13/src/phase_loop_runtime/train_runner.py +0 -3208
  536. phase_loop_runtime-0.7.13/src/phase_loop_runtime/verification_evidence.py +0 -1694
  537. phase_loop_runtime-0.7.13/src/phase_loop_runtime/worker_pool.py +0 -123
  538. phase_loop_runtime-0.7.13/src/phase_loop_runtime.egg-info/PKG-INFO +0 -158
  539. phase_loop_runtime-0.7.13/src/phase_loop_runtime.egg-info/SOURCES.txt +0 -810
  540. phase_loop_runtime-0.7.13/src/phase_loop_runtime.egg-info/entry_points.txt +0 -9
  541. phase_loop_runtime-0.7.13/src/phase_loop_runtime.egg-info/requires.txt +0 -14
  542. phase_loop_runtime-0.7.13/tests/test_advisor_board_advisory_mode.py +0 -177
  543. phase_loop_runtime-0.7.13/tests/test_advisor_board_backcompat.py +0 -161
  544. phase_loop_runtime-0.7.13/tests/test_advisor_board_backing_homebrew.py +0 -437
  545. phase_loop_runtime-0.7.13/tests/test_advisor_board_backing_omnigent.py +0 -537
  546. phase_loop_runtime-0.7.13/tests/test_advisor_board_cli_legacy.py +0 -179
  547. phase_loop_runtime-0.7.13/tests/test_advisor_board_composition.py +0 -248
  548. phase_loop_runtime-0.7.13/tests/test_advisor_board_golden.py +0 -377
  549. phase_loop_runtime-0.7.13/tests/test_advisor_board_integration.py +0 -317
  550. phase_loop_runtime-0.7.13/tests/test_advisor_board_live_research.py +0 -145
  551. phase_loop_runtime-0.7.13/tests/test_advisor_board_observability.py +0 -380
  552. phase_loop_runtime-0.7.13/tests/test_advisor_board_presets.py +0 -152
  553. phase_loop_runtime-0.7.13/tests/test_advisor_board_registries.py +0 -134
  554. phase_loop_runtime-0.7.13/tests/test_advisor_board_research.py +0 -627
  555. phase_loop_runtime-0.7.13/tests/test_autosel.py +0 -614
  556. phase_loop_runtime-0.7.13/tests/test_cli_train_status_45.py +0 -100
  557. phase_loop_runtime-0.7.13/tests/test_closeout_classifier.py +0 -86
  558. phase_loop_runtime-0.7.13/tests/test_closeout_validator_hook.py +0 -158
  559. phase_loop_runtime-0.7.13/tests/test_closeout_verification_gate.py +0 -418
  560. phase_loop_runtime-0.7.13/tests/test_convergence_adapters.py +0 -10
  561. phase_loop_runtime-0.7.13/tests/test_convergence_broker_admission.py +0 -8
  562. phase_loop_runtime-0.7.13/tests/test_convergence_broker_credsep.py +0 -721
  563. phase_loop_runtime-0.7.13/tests/test_convergence_broker_verbs.py +0 -82
  564. phase_loop_runtime-0.7.13/tests/test_convergence_event_log.py +0 -43
  565. phase_loop_runtime-0.7.13/tests/test_convergence_live_enable.py +0 -310
  566. phase_loop_runtime-0.7.13/tests/test_convergence_reconcile.py +0 -15
  567. phase_loop_runtime-0.7.13/tests/test_convergence_runtime_imports.py +0 -14
  568. phase_loop_runtime-0.7.13/tests/test_convergence_status.py +0 -10
  569. phase_loop_runtime-0.7.13/tests/test_convergence_train_integration.py +0 -74
  570. phase_loop_runtime-0.7.13/tests/test_cr_fixes_pr220.py +0 -491
  571. phase_loop_runtime-0.7.13/tests/test_discovery_hygiene_legacy.py +0 -176
  572. phase_loop_runtime-0.7.13/tests/test_dispatch_lock_reentrancy.py +0 -142
  573. phase_loop_runtime-0.7.13/tests/test_docs_audit.py +0 -261
  574. phase_loop_runtime-0.7.13/tests/test_doctor_bom.py +0 -205
  575. phase_loop_runtime-0.7.13/tests/test_dotfiles_tree.py +0 -94
  576. phase_loop_runtime-0.7.13/tests/test_fab_activation_promotion.py +0 -1468
  577. phase_loop_runtime-0.7.13/tests/test_fab_closeout_crash_safety.py +0 -689
  578. phase_loop_runtime-0.7.13/tests/test_fab_delta_c.py +0 -1782
  579. phase_loop_runtime-0.7.13/tests/test_fab_delta_consumer.py +0 -937
  580. phase_loop_runtime-0.7.13/tests/test_fleet_metrics.py +0 -201
  581. phase_loop_runtime-0.7.13/tests/test_gate_a_wheel_isolation.py +0 -87
  582. phase_loop_runtime-0.7.13/tests/test_gate_parity_244_245.py +0 -511
  583. phase_loop_runtime-0.7.13/tests/test_goal_coverage.py +0 -442
  584. phase_loop_runtime-0.7.13/tests/test_governed_planning_gate.py +0 -126
  585. phase_loop_runtime-0.7.13/tests/test_governed_premerge.py +0 -154
  586. phase_loop_runtime-0.7.13/tests/test_governed_premerge_live.py +0 -292
  587. phase_loop_runtime-0.7.13/tests/test_governed_review.py +0 -212
  588. phase_loop_runtime-0.7.13/tests/test_grokexec.py +0 -502
  589. phase_loop_runtime-0.7.13/tests/test_injection_skill_failloud.py +0 -146
  590. phase_loop_runtime-0.7.13/tests/test_leg_liveness_monitor.py +0 -181
  591. phase_loop_runtime-0.7.13/tests/test_model_class_policy.py +0 -210
  592. phase_loop_runtime-0.7.13/tests/test_model_id_source_guard.py +0 -133
  593. phase_loop_runtime-0.7.13/tests/test_model_tier_taxonomy.py +0 -431
  594. phase_loop_runtime-0.7.13/tests/test_outside_agent_contract_drift.py +0 -21
  595. phase_loop_runtime-0.7.13/tests/test_outside_agent_contract_imports.py +0 -93
  596. phase_loop_runtime-0.7.13/tests/test_outside_agent_contract_pin.py +0 -19
  597. phase_loop_runtime-0.7.13/tests/test_outside_agent_release_surface.py +0 -207
  598. phase_loop_runtime-0.7.13/tests/test_panel_context_refs_114.py +0 -377
  599. phase_loop_runtime-0.7.13/tests/test_panel_invoker.py +0 -174
  600. phase_loop_runtime-0.7.13/tests/test_panel_invoker_spawn.py +0 -608
  601. phase_loop_runtime-0.7.13/tests/test_panel_invoker_timeout_argv.py +0 -163
  602. phase_loop_runtime-0.7.13/tests/test_panel_invoker_windows_import.py +0 -64
  603. phase_loop_runtime-0.7.13/tests/test_panel_native_fill_183.py +0 -322
  604. phase_loop_runtime-0.7.13/tests/test_panel_per_leg_model_66.py +0 -91
  605. phase_loop_runtime-0.7.13/tests/test_panel_streaming_verdicts.py +0 -213
  606. phase_loop_runtime-0.7.13/tests/test_panel_tui_liveness_188.py +0 -289
  607. phase_loop_runtime-0.7.13/tests/test_phase_loop_adoption_bundle_cli.py +0 -223
  608. phase_loop_runtime-0.7.13/tests/test_phase_loop_cli.py +0 -1379
  609. phase_loop_runtime-0.7.13/tests/test_phase_loop_concurrent_phase_dispatch.py +0 -47
  610. phase_loop_runtime-0.7.13/tests/test_phase_loop_evidence_audit.py +0 -212
  611. phase_loop_runtime-0.7.13/tests/test_phase_loop_execution_policy.py +0 -283
  612. phase_loop_runtime-0.7.13/tests/test_phase_loop_handoff_migration.py +0 -230
  613. phase_loop_runtime-0.7.13/tests/test_phase_loop_lane_ir.py +0 -142
  614. phase_loop_runtime-0.7.13/tests/test_phase_loop_lane_scheduler.py +0 -197
  615. phase_loop_runtime-0.7.13/tests/test_phase_loop_launcher.py +0 -1753
  616. phase_loop_runtime-0.7.13/tests/test_phase_loop_ledger_debug.py +0 -258
  617. phase_loop_runtime-0.7.13/tests/test_phase_loop_ledger_dedup.py +0 -425
  618. phase_loop_runtime-0.7.13/tests/test_phase_loop_models.py +0 -1014
  619. phase_loop_runtime-0.7.13/tests/test_phase_loop_native_flags.py +0 -140
  620. phase_loop_runtime-0.7.13/tests/test_phase_loop_pipeline_bundle.py +0 -364
  621. phase_loop_runtime-0.7.13/tests/test_phase_loop_plan_doc_skip.py +0 -174
  622. phase_loop_runtime-0.7.13/tests/test_phase_loop_plan_manifest.py +0 -233
  623. phase_loop_runtime-0.7.13/tests/test_phase_loop_policy.py +0 -93
  624. phase_loop_runtime-0.7.13/tests/test_phase_loop_protocol_contract.py +0 -726
  625. phase_loop_runtime-0.7.13/tests/test_phase_loop_reconcile_to_status_planned_recovery.py +0 -203
  626. phase_loop_runtime-0.7.13/tests/test_phase_loop_repair_precondition_planned_closeout.py +0 -260
  627. phase_loop_runtime-0.7.13/tests/test_phase_loop_rotation.py +0 -197
  628. phase_loop_runtime-0.7.13/tests/test_phase_loop_runner.py +0 -3718
  629. phase_loop_runtime-0.7.13/tests/test_phase_loop_schema_flow.py +0 -77
  630. phase_loop_runtime-0.7.13/tests/test_phase_loop_smoke_blockers.py +0 -244
  631. phase_loop_runtime-0.7.13/tests/test_phase_loop_smoke_exhaustion.py +0 -68
  632. phase_loop_runtime-0.7.13/tests/test_phase_loop_v45_sched.py +0 -462
  633. phase_loop_runtime-0.7.13/tests/test_phase_loop_v45_schedharden.py +0 -316
  634. phase_loop_runtime-0.7.13/tests/test_phase_loop_work_unit_runner.py +0 -260
  635. phase_loop_runtime-0.7.13/tests/test_phase_worktree_executor.py +0 -361
  636. phase_loop_runtime-0.7.13/tests/test_pipeline_adapter_markers.py +0 -50
  637. phase_loop_runtime-0.7.13/tests/test_preflight_verification.py +0 -252
  638. phase_loop_runtime-0.7.13/tests/test_publishing.py +0 -348
  639. phase_loop_runtime-0.7.13/tests/test_reconcile_portability_85c.py +0 -1112
  640. phase_loop_runtime-0.7.13/tests/test_review_leg_sandbox.py +0 -407
  641. phase_loop_runtime-0.7.13/tests/test_routing_invariants.py +0 -140
  642. phase_loop_runtime-0.7.13/tests/test_skill_plan_manifest_write.py +0 -291
  643. phase_loop_runtime-0.7.13/tests/test_skills_bundle_drift.py +0 -64
  644. phase_loop_runtime-0.7.13/tests/test_skills_canon_parity.py +0 -351
  645. phase_loop_runtime-0.7.13/tests/test_spec_conformance_gate.py +0 -202
  646. phase_loop_runtime-0.7.13/tests/test_suite_interpreter_satisfies_requires_python.py +0 -209
  647. phase_loop_runtime-0.7.13/tests/test_task_message_broker.py +0 -329
  648. phase_loop_runtime-0.7.13/tests/test_train_e2e.py +0 -621
  649. phase_loop_runtime-0.7.13/tests/test_train_invariants.py +0 -1439
  650. phase_loop_runtime-0.7.13/tests/test_train_merge.py +0 -3005
  651. phase_loop_runtime-0.7.13/tests/test_train_prebuilt.py +0 -620
  652. phase_loop_runtime-0.7.13/tests/test_train_roadmap.py +0 -967
  653. phase_loop_runtime-0.7.13/tests/test_train_runner.py +0 -2719
  654. phase_loop_runtime-0.7.13/tests/test_v34_parallel_dispatch_soak.py +0 -159
  655. phase_loop_runtime-0.7.13/tests/test_validate_plan_doc_goal_coverage.py +0 -188
  656. phase_loop_runtime-0.7.13/tests/test_verification_evidence.py +0 -2524
  657. phase_loop_runtime-0.7.13/tests/test_verification_interpreter_guard_221.py +0 -362
  658. phase_loop_runtime-0.7.13/tests/test_workerpool_failure_isolation.py +0 -86
  659. phase_loop_runtime-0.7.13/tests/test_workerpool_parallel.py +0 -47
  660. phase_loop_runtime-0.7.13/tests/test_workerpool_worktree_alloc.py +0 -38
  661. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/setup.cfg +0 -0
  662. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +0 -0
  663. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +0 -0
  664. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +0 -0
  665. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +0 -0
  666. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +0 -0
  667. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +0 -0
  668. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +0 -0
  669. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +0 -0
  670. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +0 -0
  671. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +0 -0
  672. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +0 -0
  673. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +0 -0
  674. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_proc_cpu.py +0 -0
  675. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +0 -0
  676. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +0 -0
  677. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +0 -0
  678. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +0 -0
  679. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +0 -0
  680. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +0 -0
  681. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +0 -0
  682. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +0 -0
  683. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +0 -0
  684. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +0 -0
  685. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +0 -0
  686. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +0 -0
  687. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-a.txt +0 -0
  688. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-b.txt +0 -0
  689. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-c.txt +0 -0
  690. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/claimed-results.json +0 -0
  691. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +0 -0
  692. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/manifest.json +0 -0
  693. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/metrics.json +0 -0
  694. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +0 -0
  695. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +0 -0
  696. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +0 -0
  697. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +0 -0
  698. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +0 -0
  699. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/bundle-check.json +0 -0
  700. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +0 -0
  701. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/operator-note.txt +0 -0
  702. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/events-sample.jsonl +0 -0
  703. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +0 -0
  704. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +0 -0
  705. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +0 -0
  706. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +0 -0
  707. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +0 -0
  708. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +0 -0
  709. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +0 -0
  710. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +0 -0
  711. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/console-summary.txt +0 -0
  712. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/manifest.json +0 -0
  713. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/screenshot-standin.ppm +0 -0
  714. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/backing_omnigent.py +0 -0
  715. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/events.py +0 -0
  716. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/observability.py +0 -0
  717. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/research.py +0 -0
  718. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +0 -0
  719. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_c4_document.baml +0 -0
  720. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +0 -0
  721. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +0 -0
  722. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +0 -0
  723. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/emit_phase_closeout.baml +0 -0
  724. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +0 -0
  725. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/verification_evidence.baml +0 -0
  726. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/broker.py +0 -0
  727. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/classifier.py +0 -0
  728. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/claude_agent_view.py +0 -0
  729. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/claude_channel_sidecar.py +0 -0
  730. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/closeout.py +0 -0
  731. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/closeout_evidence_audit.py +0 -0
  732. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/__init__.py +0 -0
  733. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/certificate_tier.py +0 -0
  734. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/git_grounded_projection.py +0 -0
  735. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_provenance.py +0 -0
  736. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_gates.py +0 -0
  737. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_ingest.py +0 -0
  738. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/adapters/__init__.py +0 -0
  739. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/broker/__init__.py +0 -0
  740. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/dispatch.py +0 -0
  741. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/refresh.py +0 -0
  742. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/cross_repo_channel.py +0 -0
  743. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/default_executor_resolver.py +0 -0
  744. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/deploy/phase-loop-task-message-broker.service +0 -0
  745. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/dispatch_lock.py +0 -0
  746. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/doc_delta_validator.py +0 -0
  747. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/docs_audit.py +0 -0
  748. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/dotfiles_profile_plugin.py +0 -0
  749. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/events_migration.py +0 -0
  750. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/evidence_audit.py +0 -0
  751. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/executor_availability.py +0 -0
  752. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_canonical.py +0 -0
  753. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_producer.py +0 -0
  754. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_provenance.py +0 -0
  755. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_map.py +0 -0
  756. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_metrics.py +0 -0
  757. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_metrics_export.py +0 -0
  758. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_discipline.py +0 -0
  759. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_ops.py +0 -0
  760. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_topology.py +0 -0
  761. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/governed_bundle.py +0 -0
  762. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/handoff.py +0 -0
  763. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/handoff_path.py +0 -0
  764. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/harness_env_signatures.py +0 -0
  765. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/injection.py +0 -0
  766. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/install_status.py +0 -0
  767. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/lease_store.py +0 -0
  768. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/maintenance.py +0 -0
  769. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/observability.py +0 -0
  770. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/__init__.py +0 -0
  771. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/flag.py +0 -0
  772. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/markers.py +0 -0
  773. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/merge_policy.py +0 -0
  774. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/ratification.py +0 -0
  775. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/sibling_matcher.py +0 -0
  776. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/planner_validation.py +0 -0
  777. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/provenance.py +0 -0
  778. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/py.typed +0 -0
  779. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/redaction.py +0 -0
  780. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/reflection_sync.py +0 -0
  781. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/release_guard.py +0 -0
  782. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/repo_validation.py +0 -0
  783. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/review_summary.py +0 -0
  784. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_authority.py +0 -0
  785. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_log.py +0 -0
  786. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_policy/__init__.py +0 -0
  787. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +0 -0
  788. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/runtime_projection.py +0 -0
  789. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/runtime_resources.py +0 -0
  790. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.schema.json +0 -0
  791. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schemas/phase_loop_closeout.schema.json +0 -0
  792. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_inventory.py +0 -0
  793. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_paths.py +0 -0
  794. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_sources_plugin.py +0 -0
  795. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +0 -0
  796. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +0 -0
  797. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +0 -0
  798. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +0 -0
  799. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  800. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  801. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  802. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  803. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  804. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  805. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  806. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  807. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +0 -0
  808. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +0 -0
  809. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +0 -0
  810. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +0 -0
  811. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +0 -0
  812. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  813. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +0 -0
  814. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  815. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +0 -0
  816. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +0 -0
  817. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +0 -0
  818. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +0 -0
  819. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-run-train/README.md +0 -0
  820. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +0 -0
  821. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +0 -0
  822. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +0 -0
  823. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  824. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +0 -0
  825. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +0 -0
  826. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +0 -0
  827. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +0 -0
  828. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +0 -0
  829. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +0 -0
  830. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +0 -0
  831. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  832. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  833. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  834. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  835. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  836. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  837. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  838. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  839. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +0 -0
  840. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +0 -0
  841. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +0 -0
  842. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +0 -0
  843. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +0 -0
  844. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +0 -0
  845. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  846. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +0 -0
  847. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  848. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +0 -0
  849. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +0 -0
  850. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +0 -0
  851. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +0 -0
  852. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +0 -0
  853. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-run-train/README.md +0 -0
  854. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +0 -0
  855. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +0 -0
  856. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +0 -0
  857. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +0 -0
  858. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +0 -0
  859. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  860. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +0 -0
  861. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +0 -0
  862. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +0 -0
  863. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +0 -0
  864. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +0 -0
  865. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +0 -0
  866. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +0 -0
  867. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +0 -0
  868. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  869. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  870. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  871. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  872. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  873. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  874. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  875. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  876. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +0 -0
  877. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +0 -0
  878. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +0 -0
  879. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +0 -0
  880. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +0 -0
  881. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +0 -0
  882. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  883. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +0 -0
  884. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  885. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +0 -0
  886. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +0 -0
  887. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +0 -0
  888. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +0 -0
  889. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +0 -0
  890. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-run-train/README.md +0 -0
  891. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +0 -0
  892. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +0 -0
  893. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +0 -0
  894. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +0 -0
  895. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +0 -0
  896. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  897. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +0 -0
  898. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +0 -0
  899. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +0 -0
  900. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +0 -0
  901. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +0 -0
  902. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +0 -0
  903. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +0 -0
  904. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +0 -0
  905. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  906. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  907. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  908. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  909. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  910. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  911. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  912. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  913. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +0 -0
  914. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +0 -0
  915. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +0 -0
  916. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +0 -0
  917. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +0 -0
  918. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +0 -0
  919. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  920. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +0 -0
  921. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  922. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +0 -0
  923. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +0 -0
  924. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +0 -0
  925. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +0 -0
  926. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +0 -0
  927. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-run-train/README.md +0 -0
  928. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +0 -0
  929. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +0 -0
  930. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +0 -0
  931. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +0 -0
  932. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +0 -0
  933. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  934. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +0 -0
  935. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +0 -0
  936. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +0 -0
  937. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state.py +0 -0
  938. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state_degradation.py +0 -0
  939. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state_ops.py +0 -0
  940. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_broker.py +0 -0
  941. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_broker_client.py +0 -0
  942. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_resolver.py +0 -0
  943. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/train_roadmap.py +0 -0
  944. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/verification_evidence_validator.py +0 -0
  945. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/visual_avatar_evidence_validator.py +0 -0
  946. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/visual_evidence_validator.py +0 -0
  947. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/worktree_index.py +0 -0
  948. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime.egg-info/dependency_links.txt +0 -0
  949. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime.egg-info/top_level.txt +0 -0
  950. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_alias_install.py +0 -0
  951. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_concurrency.py +0 -0
  952. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_config.py +0 -0
  953. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_ingestion.py +0 -0
  954. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_matrix.py +0 -0
  955. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_resolver.py +0 -0
  956. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_schema.py +0 -0
  957. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_advisor_twin_alias_legacy.py +0 -0
  958. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_agent_runtime_provider_cs08.py +0 -0
  959. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_branchgov_preflight.py +0 -0
  960. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_certificate_tier.py +0 -0
  961. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_closeout_break_glass_cli.py +0 -0
  962. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_closeout_convergence_fixes.py +0 -0
  963. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_closeout_exception_vocab.py +0 -0
  964. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_closeout_gitignored_disposable_186b.py +0 -0
  965. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_closeout_new_owned_directory_closes_clean.py +0 -0
  966. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_codex_effort_max_clamp_49.py +0 -0
  967. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_committed_range_diff.py +0 -0
  968. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_conformance_golden.py +0 -0
  969. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_consiliency_dual_layout.py +0 -0
  970. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_consiliency_gates.py +0 -0
  971. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_consiliency_ingest.py +0 -0
  972. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_consiliency_scaffold.py +0 -0
  973. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_broker_api.py +0 -0
  974. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_broker_evidence.py +0 -0
  975. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_cli_integration.py +0 -0
  976. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_coordination_contracts.py +0 -0
  977. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_dispatch.py +0 -0
  978. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_event_contracts.py +0 -0
  979. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_fencing.py +0 -0
  980. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_fixture_contracts.py +0 -0
  981. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_invalidation.py +0 -0
  982. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_provider_contracts.py +0 -0
  983. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_refresh.py +0 -0
  984. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_convergence_seat_lifecycle.py +0 -0
  985. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_coordinator_wave_loop.py +0 -0
  986. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_delegated_visual_evidence_91.py +0 -0
  987. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_cross_roadmap.py +0 -0
  988. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_helper.py +0 -0
  989. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_same_roadmap.py +0 -0
  990. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_doc_delta_validator.py +0 -0
  991. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_docs_freshness.py +0 -0
  992. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_execgov.py +0 -0
  993. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_execreg_launch_registry.py +0 -0
  994. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_execute_phase_handoff_mode.py +0 -0
  995. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_execution_policy_tiering.py +0 -0
  996. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_executor_availability.py +0 -0
  997. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_export_schema.py +0 -0
  998. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_fab_canonical_b.py +0 -0
  999. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_fab_closeout_wiring.py +0 -0
  1000. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_fab_gate_d.py +0 -0
  1001. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_fab_producer.py +0 -0
  1002. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_fab_provenance_a.py +0 -0
  1003. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_fleet_map.py +0 -0
  1004. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_fleet_metrics_export.py +0 -0
  1005. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_gate_posture.py +0 -0
  1006. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_git_discipline.py +0 -0
  1007. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_git_grounded_projection.py +0 -0
  1008. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_governed_disjointness_model_first.py +0 -0
  1009. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_governed_e2e.py +0 -0
  1010. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_governed_gate_crfixes.py +0 -0
  1011. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_grok_narrow_reject_231.py +0 -0
  1012. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_hotfix_lane.py +0 -0
  1013. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_lane_ir_override.py +0 -0
  1014. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_launcher_liveness.py +0 -0
  1015. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_launchspec_golden.py +0 -0
  1016. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_lease_store.py +0 -0
  1017. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_lease_store_conformance.py +0 -0
  1018. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_ledger_serialization.py +0 -0
  1019. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_manifest_per_entry_164.py +0 -0
  1020. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_nonzero_suite_command_fails_closed.py +0 -0
  1021. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_observability_alerting.py +0 -0
  1022. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory.py +0 -0
  1023. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory_cli.py +0 -0
  1024. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory_fixtures.py +0 -0
  1025. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_authority_boundary.py +0 -0
  1026. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_core_api.py +0 -0
  1027. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_provenance.py +0 -0
  1028. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_ci.py +0 -0
  1029. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_cli.py +0 -0
  1030. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_output.py +0 -0
  1031. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_runtime.py +0 -0
  1032. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_redaction.py +0 -0
  1033. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_schema_validation.py +0 -0
  1034. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_vectors.py +0 -0
  1035. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_panel_advisory_mode_63.py +0 -0
  1036. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_panel_codex_auth_signature_body_252.py +0 -0
  1037. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_panel_leg_auth_preflight_64.py +0 -0
  1038. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_panel_tui_eof_48.py +0 -0
  1039. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_panel_tui_workspace_trust_223.py +0 -0
  1040. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_panel_verdict_summary.py +0 -0
  1041. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_parallel_dispatch_backcompat.py +0 -0
  1042. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_parallel_dispatch_cli.py +0 -0
  1043. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_adoption_bundle.py +0 -0
  1044. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_dependency.py +0 -0
  1045. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_end_to_end.py +0 -0
  1046. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_injection.py +0 -0
  1047. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_modular.py +0 -0
  1048. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_prompt_taxonomy.py +0 -0
  1049. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_runner_closeout.py +0 -0
  1050. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_schema_export.py +0 -0
  1051. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_schema_source.py +0 -0
  1052. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_branch_divergence_event.py +0 -0
  1053. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_break_glass_rerun.py +0 -0
  1054. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_build_bundle.py +0 -0
  1055. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_classifier.py +0 -0
  1056. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_agent_view_adapter.py +0 -0
  1057. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_agent_view_lifecycle.py +0 -0
  1058. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_hooks.py +0 -0
  1059. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_mcp.py +0 -0
  1060. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_security.py +0 -0
  1061. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_session_launch.py +0 -0
  1062. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_sidecar.py +0 -0
  1063. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_smoke_suite.py +0 -0
  1064. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_route_selection.py +0 -0
  1065. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_cli_plugin_load.py +0 -0
  1066. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_control_only.py +0 -0
  1067. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_event.py +0 -0
  1068. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_evidence_audit.py +0 -0
  1069. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_hardening.py +0 -0
  1070. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_owned_dirty_fallback.py +0 -0
  1071. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_schema.py +0 -0
  1072. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_validation.py +0 -0
  1073. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_citation.py +0 -0
  1074. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_docs.py +0 -0
  1075. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_rollback.py +0 -0
  1076. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_def4_writer_namespacing.py +0 -0
  1077. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dirty_path_classify_phase_owned_tests.py +0 -0
  1078. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dirty_path_classify_previous_phase_owned.py +0 -0
  1079. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_discovery.py +0 -0
  1080. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_docs.py +0 -0
  1081. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dotfiles_schemas.py +0 -0
  1082. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dotfiles_sources.py +0 -0
  1083. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_governed_pipeline.py +0 -0
  1084. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_instruction_scope_readme.py +0 -0
  1085. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_portal.py +0 -0
  1086. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_regenesis.py +0 -0
  1087. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_drift_audit.py +0 -0
  1088. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dry_run_closeout_guard.py +0 -0
  1089. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dry_run_then_run.py +0 -0
  1090. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_events_migration.py +0 -0
  1091. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_runner.py +0 -0
  1092. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tier2.py +0 -0
  1093. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tier3.py +0 -0
  1094. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tuning.py +0 -0
  1095. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_executor_degradation.py +0 -0
  1096. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_full_phase_mode.py +0 -0
  1097. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_handoff.py +0 -0
  1098. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_init.py +0 -0
  1099. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_injection.py +0 -0
  1100. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_install_status.py +0 -0
  1101. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_issue_84_explicit_phase.py +0 -0
  1102. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_lane_harnesses.py +0 -0
  1103. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_lane_ir_fixtures.py +0 -0
  1104. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_live_adapters.py +0 -0
  1105. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_maintenance.py +0 -0
  1106. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_metrics.py +0 -0
  1107. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_migration_regressions.py +0 -0
  1108. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_dispatch.py +0 -0
  1109. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_matrix.py +0 -0
  1110. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_observability.py +0 -0
  1111. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_parallel_plan_safe.py +0 -0
  1112. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pi_executor.py +0 -0
  1113. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_boundaries.py +0 -0
  1114. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_bridge.py +0 -0
  1115. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_closeout.py +0 -0
  1116. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_freshness.py +0 -0
  1117. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_mode.py +0 -0
  1118. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_planner_redispatch_when_plan_current.py +0 -0
  1119. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_planner_validation.py +0 -0
  1120. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_provenance.py +0 -0
  1121. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile.py +0 -0
  1122. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile_blocker_self_clear.py +0 -0
  1123. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile_recovery_mode.py +0 -0
  1124. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reducers.py +0 -0
  1125. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_repair_skipped_when_blocker_cleared.py +0 -0
  1126. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_roadmap_amendments.py +0 -0
  1127. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_roadmap_validate.py +0 -0
  1128. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runner_closeout_validation.py +0 -0
  1129. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_boundary.py +0 -0
  1130. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_decouple.py +0 -0
  1131. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_package_data.py +0 -0
  1132. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_projection.py +0 -0
  1133. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_baml_closeout.py +0 -0
  1134. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_bridge_contract.py +0 -0
  1135. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_contract.py +0 -0
  1136. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_execute_contract.py +0 -0
  1137. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_install.py +0 -0
  1138. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_planner_contract.py +0 -0
  1139. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_smoke_reentry.py +0 -0
  1140. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_spurious_completion_rejection.py +0 -0
  1141. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_start_gate_phase_status.py +0 -0
  1142. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_start_gate_refuses_cross_phase_dirty.py +0 -0
  1143. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_state.py +0 -0
  1144. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_status_transition_events_emitted.py +0 -0
  1145. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_docs.py +0 -0
  1146. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_governed.py +0 -0
  1147. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_portal.py +0 -0
  1148. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_terminal_summary_mirrors_baml_closeout.py +0 -0
  1149. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v22_e2e.py +0 -0
  1150. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v22_principles.py +0 -0
  1151. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v45_found_contracts.py +0 -0
  1152. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v45_reconcile.py +0 -0
  1153. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_wave_runner.py +0 -0
  1154. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_work_unit_observability.py +0 -0
  1155. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_work_unit_state.py +0 -0
  1156. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_worktrees.py +0 -0
  1157. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_phase_owned_dirty_relaxation.py +0 -0
  1158. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_create.py +0 -0
  1159. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_rebase_conflict.py +0 -0
  1160. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_refuse_default.py +0 -0
  1161. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_flag.py +0 -0
  1162. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_merge_policy_parse.py +0 -0
  1163. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_event_payload.py +0 -0
  1164. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_runner.py +0 -0
  1165. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_skipped_standalone.py +0 -0
  1166. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_standalone_regression.py +0 -0
  1167. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pkg_layout_freeze.py +0 -0
  1168. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_plan_ir_iter_waves.py +0 -0
  1169. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_proc_cpu.py +0 -0
  1170. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_prune_merged_worktrees_script.py +0 -0
  1171. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_pushflow.py +0 -0
  1172. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_ratification_policy.py +0 -0
  1173. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_reconcile_manifest_dedup_46.py +0 -0
  1174. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_reconcile_tracked_closeout_recovery_90.py +0 -0
  1175. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_reconcile_verification_log.py +0 -0
  1176. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_reconcile_visual_avatar_evidence_91.py +0 -0
  1177. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_reflection_sync.py +0 -0
  1178. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_release_dispatch_operator_approval_145.py +0 -0
  1179. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_release_pin_autotrack.py +0 -0
  1180. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_repo_validation.py +0 -0
  1181. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_review_summary.py +0 -0
  1182. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_roadmap_authority.py +0 -0
  1183. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_route_log.py +0 -0
  1184. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_route_policy_conformance.py +0 -0
  1185. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_runner_visual_evidence_authoritative_91.py +0 -0
  1186. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_runtime_state_mirror_agreement.py +0 -0
  1187. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_self_asserted_passed_without_evidence_is_gated.py +0 -0
  1188. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_sibling_matcher_patterns.py +0 -0
  1189. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_skill_bundle_pinned.py +0 -0
  1190. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_skill_install_body_expansion.py +0 -0
  1191. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_skill_sources_seam.py +0 -0
  1192. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_skills_src_claude_literal_lint.py +0 -0
  1193. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_specpkgmin_wheel.py +0 -0
  1194. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_status_read_only_62.py +0 -0
  1195. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_sweep_fleet_worktrees_script.py +0 -0
  1196. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_sync_skills_apply_failloud.py +0 -0
  1197. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_task_message_broker_cli.py +0 -0
  1198. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_task_message_resolver.py +0 -0
  1199. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_train_order_only_deps_47.py +0 -0
  1200. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_unattended_release.py +0 -0
  1201. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_docs_lane.py +0 -0
  1202. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_producer_dependency.py +0 -0
  1203. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_verification_evidence_validator.py +0 -0
  1204. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_visual_avatar_evidence_validator.py +0 -0
  1205. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_visual_evidence_validator.py +0 -0
  1206. {phase_loop_runtime-0.7.13 → phase_loop_runtime-0.7.15}/tests/test_worktree_index.py +0 -0
@@ -0,0 +1,7 @@
1
+ include README.md
2
+ include protocol/protocol.md
3
+ recursive-include src/phase_loop_runtime *.py py.typed
4
+ recursive-include src/phase_loop_runtime/baml_src *.baml
5
+ recursive-include src/phase_loop_runtime/advisor_board *.toml *.md
6
+ recursive-include src/phase_loop_runtime/deploy *.service
7
+ recursive-include src/phase_loop_runtime/conformance/_contract *
@@ -0,0 +1,309 @@
1
+ Metadata-Version: 2.4
2
+ Name: phase-loop-runtime
3
+ Version: 0.7.15
4
+ Summary: Harness-neutral phase-loop orchestration runtime and CLI
5
+ Author-email: ViperJuice <viperjuice@users.noreply.github.com>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/Consiliency/agent-harness
8
+ Project-URL: Repository, https://github.com/Consiliency/agent-harness
9
+ Project-URL: Issues, https://github.com/Consiliency/agent-harness/issues
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Topic :: Software Development :: Build Tools
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ Requires-Dist: detect-secrets==1.5.0
19
+ Requires-Dist: baml-py<0.223,>=0.222
20
+ Requires-Dist: pydantic<3,>=2
21
+ Requires-Dist: PyYAML<7,>=6
22
+ Requires-Dist: consiliency-contract<0.7,>=0.6.5
23
+ Requires-Dist: jsonschema<5,>=4
24
+ Requires-Dist: packaging>=21
25
+ Requires-Dist: websockets<16,>=12
26
+ Requires-Dist: rfc8785<0.2,>=0.1.4
27
+ Requires-Dist: tomli<3,>=2; python_version < "3.11"
28
+ Provides-Extra: visual
29
+ Requires-Dist: Pillow<13,>=10; extra == "visual"
30
+
31
+ # phase-loop-runtime
32
+
33
+ The harness-neutral **phase-loop** orchestration runtime and CLI. It drives the
34
+ roadmap → plan → execute workflow by dispatching each phase to whatever harness you
35
+ choose (Claude / Codex / Gemini / OpenCode); the runtime itself makes no model calls.
36
+ Part of the public [`agent-harness`](https://github.com/Consiliency/agent-harness)
37
+ monorepo (Apache-2.0).
38
+
39
+ ## Install
40
+
41
+ Most users should use the repo's installer (it also installs the workflow skills):
42
+
43
+ ```sh
44
+ git clone https://github.com/Consiliency/agent-harness
45
+ agent-harness/install-agent-harness.sh --harness claude
46
+ ```
47
+
48
+ To install just this runtime package directly:
49
+
50
+ ```sh
51
+ pip install phase-loop-runtime # latest compatible release
52
+ pip install phase-loop-runtime==0.7.15 # …or pin an exact version
53
+ ```
54
+
55
+ To pin a specific tag from source instead, substitute a tag from
56
+ [Releases](https://github.com/Consiliency/agent-harness/releases):
57
+
58
+ ```sh
59
+ uv tool install "git+https://github.com/Consiliency/agent-harness@<TAG>#subdirectory=phase-loop-runtime"
60
+ ```
61
+
62
+ This exposes two console scripts — `phase-loop` and `codex-phase-loop` — both calling
63
+ `phase_loop_runtime.cli:main`. The canonical protocol document ships in the wheel as
64
+ package data and is also installed to `share/phase-loop-runtime/protocol/protocol.md`.
65
+
66
+ ## Contributor test environment
67
+
68
+ From the repository root, install the declared test tools and visual extra, then
69
+ run the packaging and visual-evidence tests with the project environment:
70
+
71
+ ```sh
72
+ uv sync --project phase-loop-runtime --group test --extra visual --python 3.14 --locked
73
+ PYTHONPATH=phase-loop-runtime/src:phase-loop-runtime/tests phase-loop-runtime/.venv/bin/python -m pytest -q phase-loop-runtime/tests/test_outside_agent_contract_drift.py phase-loop-runtime/tests/test_visual_avatar_evidence_validator.py
74
+ ```
75
+
76
+ The test group supplies pytest and package build/install tools, including pip;
77
+ the visual extra supplies Pillow for image decoding. Both are opt-in. The native
78
+ repository-wide interpreter guard includes the dagger subproject's Python 3.14
79
+ floor, which is separate from this runtime package's Python 3.10 minimum and CI's
80
+ interpreter matrix. These commands verify the two selected files; they do not
81
+ establish complete CI equivalence, behavior without Pillow, full-suite acceptance
82
+ or production readiness.
83
+
84
+ ## Python verification environments
85
+
86
+ An explicit `automation.python` pin to a virtual environment preserves that
87
+ environment for bare `python`/`python3` commands and Python pip refresh. The
88
+ interpreter still must satisfy the repository's `requires-python` constraints.
89
+ The verification shim uses an exec launcher so interpreter symlinks retain their
90
+ venv identity and installed packages.
91
+
92
+ During guarded discovery, version probes and verification, relative or empty PATH
93
+ entries anchor to the invoking process's working directory. This deliberately
94
+ changes empty-PATH discovery to search that directory. Missing PATH retains the
95
+ C-library discovery default (with Python's default fallback); guarded execution
96
+ uses that same default instead of its previous trailing-empty cwd search. Entry
97
+ order and duplicates remain intact. Leading `PATH=` overrides
98
+ consumed by the verification command parser anchor to the target repository,
99
+ including overrides equal to the inherited value. Shell payloads and external
100
+ `env` arguments are not parsed. Execution without a constraint or pin is unchanged.
101
+
102
+ Discovery and log metadata preserve the lexical interpreter selection. For
103
+ execution, traversable directory components containing `..` are resolved before
104
+ version probes, launchers, pip refresh and guarded child PATH lookup. The final
105
+ Python executable symlink is retained. This preserves the physical virtual
106
+ environment reached through a symlink/`..` path, even when direct Python startup
107
+ would normalize that spelling to another environment. Recorded pip argv uses
108
+ the execution spelling while the log retains the declared selection. Missing,
109
+ looping, non-directory or inaccessible entries retain their original spelling;
110
+ they cannot become new search directories through normalization. Absolute PATH
111
+ entries without `..` keep their exact strings, including repeated separators.
112
+
113
+ Post-aggregate commands reuse the absolute pinned launcher, while inherited PATH
114
+ anchors to the later invoking process's directory and consumed overrides to the
115
+ repository. They do not reconstruct historical PATH or revalidate every name in
116
+ a reused shim. Without an explicit pin, distinct satisfying `python` and `python3`
117
+ aliases keep their environments; metadata and pip prefer `python3`, then `python`.
118
+ Login profiles and explicit overrides can select another environment. Known
119
+ nested-discovery and diagnostic-redaction test failures remain separate work under
120
+ agent-harness#428; this repair does not establish full-suite success or completion
121
+ of agent-harness#841's dependency repair.
122
+
123
+ ## Publication source audit
124
+
125
+ Normal FABPUB publication can distinguish an existing Python implementation such
126
+ as `credentials.py` from a credential artifact (Consiliency/agent-harness#893).
127
+ The path must be owned, regular Python source in both the frozen parent and staged
128
+ tree, parse and compile without warnings, and contain a top-level function or class. New files,
129
+ data-only files, symlinks, `.env*` and `.key` names do not receive this exception.
130
+ Other source languages remain subject to the existing filename guard.
131
+
132
+ The complete staged blob is scanned with pinned `detect-secrets` 1.5.0 built-in
133
+ detectors. Repository configuration, inline suppressions, filter exemptions and
134
+ online verification are not consulted. Findings and scanner failures block the
135
+ exception without printing matched data. Parsing/compilation warnings reject the
136
+ candidate rather than rendering source lines. No candidate code is executed.
137
+ This heuristic scan is not proof that
138
+ arbitrary or obfuscated secrets are absent; source review is still required.
139
+
140
+ Metadata-only evidence (parent/tree and blob identifiers, content hash and policy
141
+ version) is retained in the local publication checkpoint and checked again on
142
+ recovery against the frozen Git objects. The existing FABPUB tree binding and
143
+ transaction identity are unchanged. Legacy and prebuilt publication do not gain
144
+ the source exception; there is no caller-controlled path allowlist.
145
+
146
+ ## Roadmap validation
147
+
148
+ Lint a phase-plan roadmap spec (required headings, unique aliases, acyclic dependency
149
+ DAG, IF-gate reconciliation, lane-count hints) via the always-installed runtime:
150
+
151
+ ```sh
152
+ phase-loop validate-roadmap specs/phase-plans-v1.md
153
+ # module form — only when phase_loop_runtime is on the ACTIVE python's path (a pip
154
+ # install into your env); under `uv tool install` isolation use the console command:
155
+ python3 -m phase_loop_runtime.roadmap_lint specs/phase-plans-v1.md
156
+ ```
157
+
158
+ Both wrap `phase_loop_runtime.roadmap_lint` (the single source of truth). Exit 0 =
159
+ clean; non-zero prints each issue on stderr.
160
+
161
+ ## Attended agy canary evidence
162
+
163
+ The six `phase-loop agy-canary-*` commands are an opt-in, attended evidence
164
+ pipeline for the Gemini/`agy` review seat. They never add an Antigravity allow
165
+ rule or use a permission-bypass flag. `agy-canary-clean-settings` is the sole
166
+ writer for removing the historical `command(pwd)` rule; it requires a direct,
167
+ mode-0700 child of `/tmp`, a quiescent settings tree, and an exclusive maintenance
168
+ lock. The later probe, prepare, verify, and finalize steps fail closed until an
169
+ attended agy 1.1.13 `stream-json` schema probe has selected a complete authority.
170
+ That probe and every capture-enabled Gemini launch use `/usr/bin/bwrap`, a fresh
171
+ `/tmp`, `/run`, and `/proc`, the fixed `/run/phase-loop-review` stage mapping,
172
+ and a reducer-generated minimal HOME. A missing effective namespace, active
173
+ customization source, unsupported stream schema, or absent direct bootstrap
174
+ attestation blocks the canary rather than falling back to the operator HOME.
175
+
176
+ When `PHASE_LOOP_AGY_CANARY_EVIDENCE_DIR` is set, `advisor-board --json` consumes
177
+ that variable before spawning any seat. The complete board JSON must be written
178
+ through `--agy-canary-private-board-name <basename>` into that private directory;
179
+ stdout contains only the redacted ledger binding. Capture requires exactly one
180
+ resolved Gemini seat and retains the two staged review inputs using descriptor
181
+ relative, no-follow writes. A normal board has no new output field or capture work.
182
+
183
+ ## Workflow skills bundle
184
+
185
+ The runtime also installs the harness-neutral workflow-skills bundle. The skill
186
+ sources live in the [`phase-loop-skills/`](https://github.com/Consiliency/agent-harness/tree/main/phase-loop-skills)
187
+ directory of the monorepo,
188
+ with unprefixed base directories and optional `_overrides/<harness>/` overlays.
189
+
190
+ ```sh
191
+ phase-loop install --harness codex --source <path-to>/phase-loop-skills --copy --dry-run
192
+ phase-loop install --harness codex --source <path-to>/phase-loop-skills --copy --apply
193
+ ```
194
+
195
+ These commands install copies and replace existing managed skill directories.
196
+ Back up customizations before applying. See [Team onboarding](https://github.com/Consiliency/agent-harness/blob/main/docs/TEAM-ONBOARDING.md)
197
+ for provider prerequisites, governance choices and the first-run check.
198
+
199
+ Path resolution is provided by `phase_loop_runtime.skill_paths`, which keeps handoffs
200
+ repo-local, preserves harness-specific reflection roots, and documents the default
201
+ install roots for Claude, Codex, Gemini, and OpenCode.
202
+
203
+ ## Zero-history FABPUB bootstrap
204
+
205
+ When FABPUB is active on a host that has no compatible legacy run-train broker
206
+ ledger, create its persistent authority with a read-only probe followed by an
207
+ explicit apply:
208
+
209
+ ```sh
210
+ phase-loop fabpub-bootstrap --probe \
211
+ --inventory /secure/operator/fabpub-probe.json \
212
+ --worktree /path/to/repo \
213
+ --legacy-root /path/to/declared/ledger/broker \
214
+ --search-root /path/to/workspaces \
215
+ --historical-evidence-root /path/to/standalone/receipt
216
+
217
+ phase-loop fabpub-bootstrap --apply \
218
+ --inventory /secure/operator/fabpub-probe.json \
219
+ --confirm-zero-history
220
+ ```
221
+
222
+ The default authority is
223
+ `$XDG_STATE_HOME/phase-loop/fabpub/authority-v1`, falling back to
224
+ `~/.local/state/phase-loop/fabpub/authority-v1`. Override it with
225
+ `PHASE_LOOP_FABPUB_AUTHORITY_ROOT` or `--authority-root` during the probe.
226
+ Receipts created by apply retain that custom authority location for later
227
+ fresh-process validation; keep the environment override configured when
228
+ onboarding repositories that were not named by the original probe.
229
+ Apply is irreversible and refuses changed bytes, symlinks, live allocator
230
+ state, held generation leases, or an authority owned by another bootstrap.
231
+
232
+ Inventory completeness is bounded to the named worktrees, explicit and
233
+ environment-declared legacy roots, historical-evidence roots, and hashed broker
234
+ directories directly beneath `.train-ledger` directories under each
235
+ `--search-root`. The confirmation attests that no compatible allocator exists
236
+ outside that inspected universe.
237
+ Standalone historical receipts are hashed and left in place; they are not
238
+ silently adopted as current allocator authority.
239
+
240
+ ## Closeout ownership gate & operator break-glass
241
+
242
+ When a phase verifies green but the executor touched files outside the plan's declared
243
+ owned-files globs, the **graduated closeout gate** classifies the beyond-ownership
244
+ remainder (`closeout_classifier.classify_unowned_path`):
245
+
246
+ - SAFE classes (`docs`, `plans`, `handoffs`, `config_nonsource`) auto-commit as a
247
+ recorded `soft` exception.
248
+ - UNSAFE classes (`source`, `ci`, `secrets`, `lockfile`) block with
249
+ `closeout_scope_violation`.
250
+
251
+ The operator escape is `phase-loop run --phase <P> --closeout-allow-unowned "<reason>"`
252
+ (also valid on `resume`/`dry-run`; reason required and non-empty; `--phase` required,
253
+ bounding the override to a single phase). It folds the `source`/`ci`/`lockfile`
254
+ remainder into the closeout commit as a recorded `break_glass` exception carrying the
255
+ reason. **`secrets` are never break-glassable** — a `.env*`/`*.pem`/`secrets/**` path
256
+ blocks regardless of the reason. See `protocol.md` → "Closeout Exceptions".
257
+
258
+ The closeout verdict is runner-authoritative: when the runner rejects a child's
259
+ closeout, the persisted `terminal-summary.json` reflects the runner's blocking verdict
260
+ (the child's self-reported `complete`/`passed` is not overlaid back), preventing a
261
+ stale "complete" summary from reconcile-skipping the work on the next run.
262
+
263
+ ## Conformance library (one library, two roles)
264
+
265
+ `phase_loop_runtime.conformance` is the named, stable, importable surface for the
266
+ deterministic `.consiliency/` conformance evaluator. It is a re-export (not a
267
+ re-implementation) of the same function the actor already runs, so an **external
268
+ CR-fence** — in gp CI, a git-host pre-merge check, anywhere — can import and run
269
+ the identical check:
270
+
271
+ ```python
272
+ from phase_loop_runtime.conformance import scan_consiliency_gates
273
+
274
+ verdict = scan_consiliency_gates("/path/to/repo") # {"status": "passed" | "warn" | "blocked" | "skipped", "gates": {...}, ...}
275
+ ```
276
+
277
+ The surface also exposes the pure cores (`evaluate_git_discipline`,
278
+ `self_heal_partition`, `evaluate_governance_scope`) for consumers that already
279
+ hold the injected facts.
280
+
281
+ **Two roles, one library.** This is meant to be mounted BOTH as the actor-side
282
+ self-check (a pre-PR sanity pass the author runs locally) AND as the
283
+ authoritative CR-fence (the real validator). The actor-side result is **never
284
+ authoritative** — the fence always re-runs the check itself. Because it is the
285
+ same function versioned with the same `consiliency_contract` dependency, the honest
286
+ actor sees exactly the verdict the fence will; a stale or dishonest actor result
287
+ simply does not matter.
288
+
289
+ **Scope.** The surface spans the shape + governance tier and the certificate /
290
+ projection / outside-agent tiers it re-exports (see the module docstring for the
291
+ authoritative tier list). Authority and provenance *verification* remain out of
292
+ scope, delegated downstream.
293
+
294
+ ### `consiliency-ingest --check-only`
295
+
296
+ `--check-only` decouples "run the check" from "is this repo adopted". It is
297
+ strictly read-only (never shapes; ignores `--adopt`). It makes the exit code
298
+ verdict-significant so a pre-PR actor is never misled into reading a no-op — or a
299
+ failing verify — as a pass:
300
+
301
+ | Repo state | mode | exit |
302
+ |---|---|---|
303
+ | adopted, verify clean (or `warn`) | `verify` | `0` |
304
+ | adopted, gate scan `blocked` | `verify` | `1` |
305
+ | un-adopted (no `.consiliency/manifest`) | `not-adopted` | `3` |
306
+ | usage error | — | `2` |
307
+
308
+ The plain (non-`--check-only`) path is unchanged — it keeps the silent green
309
+ `skipped` no-op on an un-adopted repo and its existing exit `0`.
@@ -0,0 +1,279 @@
1
+ # phase-loop-runtime
2
+
3
+ The harness-neutral **phase-loop** orchestration runtime and CLI. It drives the
4
+ roadmap → plan → execute workflow by dispatching each phase to whatever harness you
5
+ choose (Claude / Codex / Gemini / OpenCode); the runtime itself makes no model calls.
6
+ Part of the public [`agent-harness`](https://github.com/Consiliency/agent-harness)
7
+ monorepo (Apache-2.0).
8
+
9
+ ## Install
10
+
11
+ Most users should use the repo's installer (it also installs the workflow skills):
12
+
13
+ ```sh
14
+ git clone https://github.com/Consiliency/agent-harness
15
+ agent-harness/install-agent-harness.sh --harness claude
16
+ ```
17
+
18
+ To install just this runtime package directly:
19
+
20
+ ```sh
21
+ pip install phase-loop-runtime # latest compatible release
22
+ pip install phase-loop-runtime==0.7.15 # …or pin an exact version
23
+ ```
24
+
25
+ To pin a specific tag from source instead, substitute a tag from
26
+ [Releases](https://github.com/Consiliency/agent-harness/releases):
27
+
28
+ ```sh
29
+ uv tool install "git+https://github.com/Consiliency/agent-harness@<TAG>#subdirectory=phase-loop-runtime"
30
+ ```
31
+
32
+ This exposes two console scripts — `phase-loop` and `codex-phase-loop` — both calling
33
+ `phase_loop_runtime.cli:main`. The canonical protocol document ships in the wheel as
34
+ package data and is also installed to `share/phase-loop-runtime/protocol/protocol.md`.
35
+
36
+ ## Contributor test environment
37
+
38
+ From the repository root, install the declared test tools and visual extra, then
39
+ run the packaging and visual-evidence tests with the project environment:
40
+
41
+ ```sh
42
+ uv sync --project phase-loop-runtime --group test --extra visual --python 3.14 --locked
43
+ PYTHONPATH=phase-loop-runtime/src:phase-loop-runtime/tests phase-loop-runtime/.venv/bin/python -m pytest -q phase-loop-runtime/tests/test_outside_agent_contract_drift.py phase-loop-runtime/tests/test_visual_avatar_evidence_validator.py
44
+ ```
45
+
46
+ The test group supplies pytest and package build/install tools, including pip;
47
+ the visual extra supplies Pillow for image decoding. Both are opt-in. The native
48
+ repository-wide interpreter guard includes the dagger subproject's Python 3.14
49
+ floor, which is separate from this runtime package's Python 3.10 minimum and CI's
50
+ interpreter matrix. These commands verify the two selected files; they do not
51
+ establish complete CI equivalence, behavior without Pillow, full-suite acceptance
52
+ or production readiness.
53
+
54
+ ## Python verification environments
55
+
56
+ An explicit `automation.python` pin to a virtual environment preserves that
57
+ environment for bare `python`/`python3` commands and Python pip refresh. The
58
+ interpreter still must satisfy the repository's `requires-python` constraints.
59
+ The verification shim uses an exec launcher so interpreter symlinks retain their
60
+ venv identity and installed packages.
61
+
62
+ During guarded discovery, version probes and verification, relative or empty PATH
63
+ entries anchor to the invoking process's working directory. This deliberately
64
+ changes empty-PATH discovery to search that directory. Missing PATH retains the
65
+ C-library discovery default (with Python's default fallback); guarded execution
66
+ uses that same default instead of its previous trailing-empty cwd search. Entry
67
+ order and duplicates remain intact. Leading `PATH=` overrides
68
+ consumed by the verification command parser anchor to the target repository,
69
+ including overrides equal to the inherited value. Shell payloads and external
70
+ `env` arguments are not parsed. Execution without a constraint or pin is unchanged.
71
+
72
+ Discovery and log metadata preserve the lexical interpreter selection. For
73
+ execution, traversable directory components containing `..` are resolved before
74
+ version probes, launchers, pip refresh and guarded child PATH lookup. The final
75
+ Python executable symlink is retained. This preserves the physical virtual
76
+ environment reached through a symlink/`..` path, even when direct Python startup
77
+ would normalize that spelling to another environment. Recorded pip argv uses
78
+ the execution spelling while the log retains the declared selection. Missing,
79
+ looping, non-directory or inaccessible entries retain their original spelling;
80
+ they cannot become new search directories through normalization. Absolute PATH
81
+ entries without `..` keep their exact strings, including repeated separators.
82
+
83
+ Post-aggregate commands reuse the absolute pinned launcher, while inherited PATH
84
+ anchors to the later invoking process's directory and consumed overrides to the
85
+ repository. They do not reconstruct historical PATH or revalidate every name in
86
+ a reused shim. Without an explicit pin, distinct satisfying `python` and `python3`
87
+ aliases keep their environments; metadata and pip prefer `python3`, then `python`.
88
+ Login profiles and explicit overrides can select another environment. Known
89
+ nested-discovery and diagnostic-redaction test failures remain separate work under
90
+ agent-harness#428; this repair does not establish full-suite success or completion
91
+ of agent-harness#841's dependency repair.
92
+
93
+ ## Publication source audit
94
+
95
+ Normal FABPUB publication can distinguish an existing Python implementation such
96
+ as `credentials.py` from a credential artifact (Consiliency/agent-harness#893).
97
+ The path must be owned, regular Python source in both the frozen parent and staged
98
+ tree, parse and compile without warnings, and contain a top-level function or class. New files,
99
+ data-only files, symlinks, `.env*` and `.key` names do not receive this exception.
100
+ Other source languages remain subject to the existing filename guard.
101
+
102
+ The complete staged blob is scanned with pinned `detect-secrets` 1.5.0 built-in
103
+ detectors. Repository configuration, inline suppressions, filter exemptions and
104
+ online verification are not consulted. Findings and scanner failures block the
105
+ exception without printing matched data. Parsing/compilation warnings reject the
106
+ candidate rather than rendering source lines. No candidate code is executed.
107
+ This heuristic scan is not proof that
108
+ arbitrary or obfuscated secrets are absent; source review is still required.
109
+
110
+ Metadata-only evidence (parent/tree and blob identifiers, content hash and policy
111
+ version) is retained in the local publication checkpoint and checked again on
112
+ recovery against the frozen Git objects. The existing FABPUB tree binding and
113
+ transaction identity are unchanged. Legacy and prebuilt publication do not gain
114
+ the source exception; there is no caller-controlled path allowlist.
115
+
116
+ ## Roadmap validation
117
+
118
+ Lint a phase-plan roadmap spec (required headings, unique aliases, acyclic dependency
119
+ DAG, IF-gate reconciliation, lane-count hints) via the always-installed runtime:
120
+
121
+ ```sh
122
+ phase-loop validate-roadmap specs/phase-plans-v1.md
123
+ # module form — only when phase_loop_runtime is on the ACTIVE python's path (a pip
124
+ # install into your env); under `uv tool install` isolation use the console command:
125
+ python3 -m phase_loop_runtime.roadmap_lint specs/phase-plans-v1.md
126
+ ```
127
+
128
+ Both wrap `phase_loop_runtime.roadmap_lint` (the single source of truth). Exit 0 =
129
+ clean; non-zero prints each issue on stderr.
130
+
131
+ ## Attended agy canary evidence
132
+
133
+ The six `phase-loop agy-canary-*` commands are an opt-in, attended evidence
134
+ pipeline for the Gemini/`agy` review seat. They never add an Antigravity allow
135
+ rule or use a permission-bypass flag. `agy-canary-clean-settings` is the sole
136
+ writer for removing the historical `command(pwd)` rule; it requires a direct,
137
+ mode-0700 child of `/tmp`, a quiescent settings tree, and an exclusive maintenance
138
+ lock. The later probe, prepare, verify, and finalize steps fail closed until an
139
+ attended agy 1.1.13 `stream-json` schema probe has selected a complete authority.
140
+ That probe and every capture-enabled Gemini launch use `/usr/bin/bwrap`, a fresh
141
+ `/tmp`, `/run`, and `/proc`, the fixed `/run/phase-loop-review` stage mapping,
142
+ and a reducer-generated minimal HOME. A missing effective namespace, active
143
+ customization source, unsupported stream schema, or absent direct bootstrap
144
+ attestation blocks the canary rather than falling back to the operator HOME.
145
+
146
+ When `PHASE_LOOP_AGY_CANARY_EVIDENCE_DIR` is set, `advisor-board --json` consumes
147
+ that variable before spawning any seat. The complete board JSON must be written
148
+ through `--agy-canary-private-board-name <basename>` into that private directory;
149
+ stdout contains only the redacted ledger binding. Capture requires exactly one
150
+ resolved Gemini seat and retains the two staged review inputs using descriptor
151
+ relative, no-follow writes. A normal board has no new output field or capture work.
152
+
153
+ ## Workflow skills bundle
154
+
155
+ The runtime also installs the harness-neutral workflow-skills bundle. The skill
156
+ sources live in the [`phase-loop-skills/`](https://github.com/Consiliency/agent-harness/tree/main/phase-loop-skills)
157
+ directory of the monorepo,
158
+ with unprefixed base directories and optional `_overrides/<harness>/` overlays.
159
+
160
+ ```sh
161
+ phase-loop install --harness codex --source <path-to>/phase-loop-skills --copy --dry-run
162
+ phase-loop install --harness codex --source <path-to>/phase-loop-skills --copy --apply
163
+ ```
164
+
165
+ These commands install copies and replace existing managed skill directories.
166
+ Back up customizations before applying. See [Team onboarding](https://github.com/Consiliency/agent-harness/blob/main/docs/TEAM-ONBOARDING.md)
167
+ for provider prerequisites, governance choices and the first-run check.
168
+
169
+ Path resolution is provided by `phase_loop_runtime.skill_paths`, which keeps handoffs
170
+ repo-local, preserves harness-specific reflection roots, and documents the default
171
+ install roots for Claude, Codex, Gemini, and OpenCode.
172
+
173
+ ## Zero-history FABPUB bootstrap
174
+
175
+ When FABPUB is active on a host that has no compatible legacy run-train broker
176
+ ledger, create its persistent authority with a read-only probe followed by an
177
+ explicit apply:
178
+
179
+ ```sh
180
+ phase-loop fabpub-bootstrap --probe \
181
+ --inventory /secure/operator/fabpub-probe.json \
182
+ --worktree /path/to/repo \
183
+ --legacy-root /path/to/declared/ledger/broker \
184
+ --search-root /path/to/workspaces \
185
+ --historical-evidence-root /path/to/standalone/receipt
186
+
187
+ phase-loop fabpub-bootstrap --apply \
188
+ --inventory /secure/operator/fabpub-probe.json \
189
+ --confirm-zero-history
190
+ ```
191
+
192
+ The default authority is
193
+ `$XDG_STATE_HOME/phase-loop/fabpub/authority-v1`, falling back to
194
+ `~/.local/state/phase-loop/fabpub/authority-v1`. Override it with
195
+ `PHASE_LOOP_FABPUB_AUTHORITY_ROOT` or `--authority-root` during the probe.
196
+ Receipts created by apply retain that custom authority location for later
197
+ fresh-process validation; keep the environment override configured when
198
+ onboarding repositories that were not named by the original probe.
199
+ Apply is irreversible and refuses changed bytes, symlinks, live allocator
200
+ state, held generation leases, or an authority owned by another bootstrap.
201
+
202
+ Inventory completeness is bounded to the named worktrees, explicit and
203
+ environment-declared legacy roots, historical-evidence roots, and hashed broker
204
+ directories directly beneath `.train-ledger` directories under each
205
+ `--search-root`. The confirmation attests that no compatible allocator exists
206
+ outside that inspected universe.
207
+ Standalone historical receipts are hashed and left in place; they are not
208
+ silently adopted as current allocator authority.
209
+
210
+ ## Closeout ownership gate & operator break-glass
211
+
212
+ When a phase verifies green but the executor touched files outside the plan's declared
213
+ owned-files globs, the **graduated closeout gate** classifies the beyond-ownership
214
+ remainder (`closeout_classifier.classify_unowned_path`):
215
+
216
+ - SAFE classes (`docs`, `plans`, `handoffs`, `config_nonsource`) auto-commit as a
217
+ recorded `soft` exception.
218
+ - UNSAFE classes (`source`, `ci`, `secrets`, `lockfile`) block with
219
+ `closeout_scope_violation`.
220
+
221
+ The operator escape is `phase-loop run --phase <P> --closeout-allow-unowned "<reason>"`
222
+ (also valid on `resume`/`dry-run`; reason required and non-empty; `--phase` required,
223
+ bounding the override to a single phase). It folds the `source`/`ci`/`lockfile`
224
+ remainder into the closeout commit as a recorded `break_glass` exception carrying the
225
+ reason. **`secrets` are never break-glassable** — a `.env*`/`*.pem`/`secrets/**` path
226
+ blocks regardless of the reason. See `protocol.md` → "Closeout Exceptions".
227
+
228
+ The closeout verdict is runner-authoritative: when the runner rejects a child's
229
+ closeout, the persisted `terminal-summary.json` reflects the runner's blocking verdict
230
+ (the child's self-reported `complete`/`passed` is not overlaid back), preventing a
231
+ stale "complete" summary from reconcile-skipping the work on the next run.
232
+
233
+ ## Conformance library (one library, two roles)
234
+
235
+ `phase_loop_runtime.conformance` is the named, stable, importable surface for the
236
+ deterministic `.consiliency/` conformance evaluator. It is a re-export (not a
237
+ re-implementation) of the same function the actor already runs, so an **external
238
+ CR-fence** — in gp CI, a git-host pre-merge check, anywhere — can import and run
239
+ the identical check:
240
+
241
+ ```python
242
+ from phase_loop_runtime.conformance import scan_consiliency_gates
243
+
244
+ verdict = scan_consiliency_gates("/path/to/repo") # {"status": "passed" | "warn" | "blocked" | "skipped", "gates": {...}, ...}
245
+ ```
246
+
247
+ The surface also exposes the pure cores (`evaluate_git_discipline`,
248
+ `self_heal_partition`, `evaluate_governance_scope`) for consumers that already
249
+ hold the injected facts.
250
+
251
+ **Two roles, one library.** This is meant to be mounted BOTH as the actor-side
252
+ self-check (a pre-PR sanity pass the author runs locally) AND as the
253
+ authoritative CR-fence (the real validator). The actor-side result is **never
254
+ authoritative** — the fence always re-runs the check itself. Because it is the
255
+ same function versioned with the same `consiliency_contract` dependency, the honest
256
+ actor sees exactly the verdict the fence will; a stale or dishonest actor result
257
+ simply does not matter.
258
+
259
+ **Scope.** The surface spans the shape + governance tier and the certificate /
260
+ projection / outside-agent tiers it re-exports (see the module docstring for the
261
+ authoritative tier list). Authority and provenance *verification* remain out of
262
+ scope, delegated downstream.
263
+
264
+ ### `consiliency-ingest --check-only`
265
+
266
+ `--check-only` decouples "run the check" from "is this repo adopted". It is
267
+ strictly read-only (never shapes; ignores `--adopt`). It makes the exit code
268
+ verdict-significant so a pre-PR actor is never misled into reading a no-op — or a
269
+ failing verify — as a pass:
270
+
271
+ | Repo state | mode | exit |
272
+ |---|---|---|
273
+ | adopted, verify clean (or `warn`) | `verify` | `0` |
274
+ | adopted, gate scan `blocked` | `verify` | `1` |
275
+ | un-adopted (no `.consiliency/manifest`) | `not-adopted` | `3` |
276
+ | usage error | — | `2` |
277
+
278
+ The plain (non-`--check-only`) path is unchanged — it keeps the silent green
279
+ `skipped` no-op on an un-adopted repo and its existing exit `0`.