phase-loop-runtime 0.7.14__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 (1119) hide show
  1. phase_loop_runtime-0.7.15/PKG-INFO +309 -0
  2. phase_loop_runtime-0.7.15/README.md +279 -0
  3. phase_loop_runtime-0.7.15/pyproject.toml +160 -0
  4. phase_loop_runtime-0.7.15/src/phase_loop_runtime/__init__.py +21 -0
  5. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/CONTRACTS.md +487 -0
  6. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/__init__.py +373 -0
  7. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/backing.py +1246 -0
  8. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/composition.py +311 -0
  9. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/config.py +299 -0
  10. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +59 -0
  11. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/fixtures.py +104 -0
  12. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/harness_mapping.py +219 -0
  13. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/matrix.py +146 -0
  14. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/presets.py +190 -0
  15. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/registries.py +326 -0
  16. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/resolver.py +250 -0
  17. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/schema.py +355 -0
  18. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/standin.py +166 -0
  19. phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/validation.py +159 -0
  20. phase_loop_runtime-0.7.15/src/phase_loop_runtime/agy_canary_evidence.py +8443 -0
  21. phase_loop_runtime-0.7.15/src/phase_loop_runtime/build_bundle.py +309 -0
  22. phase_loop_runtime-0.7.15/src/phase_loop_runtime/capability_registry.py +1027 -0
  23. phase_loop_runtime-0.7.15/src/phase_loop_runtime/cli.py +4826 -0
  24. phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_classifier.py +347 -0
  25. phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_validation.py +192 -0
  26. phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_validators.py +551 -0
  27. phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_vectors.py +231 -0
  28. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/__init__.py +121 -0
  29. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/base.py +239 -0
  30. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/claude.py +14 -0
  31. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/codex.py +14 -0
  32. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/outside_agent.py +36 -0
  33. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/admission.py +607 -0
  34. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/credsep.py +560 -0
  35. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/evidence.py +450 -0
  36. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/live.py +5455 -0
  37. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/verbs.py +680 -0
  38. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/contracts.py +355 -0
  39. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/event_log.py +366 -0
  40. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/fencing.py +182 -0
  41. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/provider_contracts.py +153 -0
  42. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/reconcile.py +273 -0
  43. phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/status.py +74 -0
  44. phase_loop_runtime-0.7.15/src/phase_loop_runtime/events.py +170 -0
  45. phase_loop_runtime-0.7.15/src/phase_loop_runtime/fab_delta.py +1443 -0
  46. phase_loop_runtime-0.7.15/src/phase_loop_runtime/fabreadmit_capability.py +5 -0
  47. phase_loop_runtime-0.7.15/src/phase_loop_runtime/governed_premerge.py +525 -0
  48. phase_loop_runtime-0.7.15/src/phase_loop_runtime/governed_review.py +526 -0
  49. phase_loop_runtime-0.7.15/src/phase_loop_runtime/lane_scheduler.py +354 -0
  50. phase_loop_runtime-0.7.15/src/phase_loop_runtime/launcher.py +3901 -0
  51. phase_loop_runtime-0.7.15/src/phase_loop_runtime/legible_evidence.py +2415 -0
  52. phase_loop_runtime-0.7.15/src/phase_loop_runtime/models.py +3067 -0
  53. phase_loop_runtime-0.7.15/src/phase_loop_runtime/panel_invoker.py +8240 -0
  54. phase_loop_runtime-0.7.15/src/phase_loop_runtime/phase_worktree_executor.py +878 -0
  55. phase_loop_runtime-0.7.15/src/phase_loop_runtime/plan_ir.py +547 -0
  56. phase_loop_runtime-0.7.15/src/phase_loop_runtime/plan_manifest.py +3447 -0
  57. phase_loop_runtime-0.7.15/src/phase_loop_runtime/president_adapter.py +143 -0
  58. phase_loop_runtime-0.7.15/src/phase_loop_runtime/profiles.py +1010 -0
  59. phase_loop_runtime-0.7.15/src/phase_loop_runtime/prompts.py +365 -0
  60. phase_loop_runtime-0.7.15/src/phase_loop_runtime/publishing.py +1226 -0
  61. phase_loop_runtime-0.7.15/src/phase_loop_runtime/reconcile.py +1786 -0
  62. phase_loop_runtime-0.7.15/src/phase_loop_runtime/render.py +546 -0
  63. phase_loop_runtime-0.7.15/src/phase_loop_runtime/review_stage.py +456 -0
  64. phase_loop_runtime-0.7.15/src/phase_loop_runtime/reviewtruth_native_fill_capability.py +10 -0
  65. phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_assumptions.py +802 -0
  66. phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_ownership.py +1395 -0
  67. phase_loop_runtime-0.7.15/src/phase_loop_runtime/runner.py +13271 -0
  68. phase_loop_runtime-0.7.15/src/phase_loop_runtime/runtime_paths.py +292 -0
  69. phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_egress.py +393 -0
  70. phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_policy.py +343 -0
  71. phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_retention.py +178 -0
  72. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +172 -0
  73. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +172 -0
  74. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +165 -0
  75. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +811 -0
  76. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +677 -0
  77. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +115 -0
  78. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +481 -0
  79. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +373 -0
  80. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +808 -0
  81. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +1329 -0
  82. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +112 -0
  83. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +243 -0
  84. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +249 -0
  85. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +74 -0
  86. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +170 -0
  87. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +170 -0
  88. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +252 -0
  89. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +677 -0
  90. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +1329 -0
  91. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +105 -0
  92. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +162 -0
  93. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +162 -0
  94. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +219 -0
  95. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +677 -0
  96. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +1329 -0
  97. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +105 -0
  98. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +162 -0
  99. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +162 -0
  100. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +677 -0
  101. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +1329 -0
  102. phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +105 -0
  103. phase_loop_runtime-0.7.15/src/phase_loop_runtime/train_runner.py +4114 -0
  104. phase_loop_runtime-0.7.15/src/phase_loop_runtime/verification_evidence.py +2375 -0
  105. phase_loop_runtime-0.7.15/src/phase_loop_runtime/worker_pool.py +160 -0
  106. phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/PKG-INFO +309 -0
  107. phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/SOURCES.txt +938 -0
  108. phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/entry_points.txt +11 -0
  109. phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/requires.txt +15 -0
  110. phase_loop_runtime-0.7.15/tests/test_advisor_board_advisory_mode.py +301 -0
  111. phase_loop_runtime-0.7.15/tests/test_advisor_board_backcompat.py +161 -0
  112. phase_loop_runtime-0.7.15/tests/test_advisor_board_backing_homebrew.py +483 -0
  113. phase_loop_runtime-0.7.15/tests/test_advisor_board_backing_omnigent.py +772 -0
  114. phase_loop_runtime-0.7.15/tests/test_advisor_board_cli_legacy.py +516 -0
  115. phase_loop_runtime-0.7.15/tests/test_advisor_board_composition.py +1913 -0
  116. phase_loop_runtime-0.7.15/tests/test_advisor_board_golden.py +387 -0
  117. phase_loop_runtime-0.7.15/tests/test_advisor_board_integration.py +352 -0
  118. phase_loop_runtime-0.7.15/tests/test_advisor_board_live_research.py +145 -0
  119. phase_loop_runtime-0.7.15/tests/test_advisor_board_observability.py +391 -0
  120. phase_loop_runtime-0.7.15/tests/test_advisor_board_presets.py +152 -0
  121. phase_loop_runtime-0.7.15/tests/test_advisor_board_registries.py +154 -0
  122. phase_loop_runtime-0.7.15/tests/test_advisor_board_research.py +630 -0
  123. phase_loop_runtime-0.7.15/tests/test_advisor_board_static_import_862.py +207 -0
  124. phase_loop_runtime-0.7.15/tests/test_agy_canary_evidence.py +6691 -0
  125. phase_loop_runtime-0.7.15/tests/test_broker_command_builders.py +73 -0
  126. phase_loop_runtime-0.7.15/tests/test_broker_evidence_schema_drift_789.py +424 -0
  127. phase_loop_runtime-0.7.15/tests/test_broker_staged_tree_delivery.py +600 -0
  128. phase_loop_runtime-0.7.15/tests/test_ci_chronology_scope.py +397 -0
  129. phase_loop_runtime-0.7.15/tests/test_ci_gate_metrics.py +100 -0
  130. phase_loop_runtime-0.7.15/tests/test_ci_main_red.py +340 -0
  131. phase_loop_runtime-0.7.15/tests/test_ci_offload_lock.py +206 -0
  132. phase_loop_runtime-0.7.15/tests/test_ci_workflow_concurrency.py +35 -0
  133. phase_loop_runtime-0.7.15/tests/test_cli_train_status_45.py +155 -0
  134. phase_loop_runtime-0.7.15/tests/test_closeout_classifier.py +470 -0
  135. phase_loop_runtime-0.7.15/tests/test_closeout_import_cycle_819.py +34 -0
  136. phase_loop_runtime-0.7.15/tests/test_closeout_validator_hook.py +186 -0
  137. phase_loop_runtime-0.7.15/tests/test_common_directory_leases_807.py +257 -0
  138. phase_loop_runtime-0.7.15/tests/test_conftest_isolation.py +52 -0
  139. phase_loop_runtime-0.7.15/tests/test_console_scripts_are_declared.py +135 -0
  140. phase_loop_runtime-0.7.15/tests/test_convergence_adapters.py +265 -0
  141. phase_loop_runtime-0.7.15/tests/test_convergence_broker_admission.py +427 -0
  142. phase_loop_runtime-0.7.15/tests/test_convergence_broker_credsep.py +1349 -0
  143. phase_loop_runtime-0.7.15/tests/test_convergence_broker_revocation_race.py +502 -0
  144. phase_loop_runtime-0.7.15/tests/test_convergence_broker_verbs.py +253 -0
  145. phase_loop_runtime-0.7.15/tests/test_convergence_event_log.py +249 -0
  146. phase_loop_runtime-0.7.15/tests/test_convergence_live_enable.py +682 -0
  147. phase_loop_runtime-0.7.15/tests/test_convergence_reconcile.py +185 -0
  148. phase_loop_runtime-0.7.15/tests/test_convergence_runtime_imports.py +496 -0
  149. phase_loop_runtime-0.7.15/tests/test_convergence_status.py +107 -0
  150. phase_loop_runtime-0.7.15/tests/test_dispatch_lock_reentrancy.py +170 -0
  151. phase_loop_runtime-0.7.15/tests/test_egress_prefix_crosses_the_broker_thread.py +208 -0
  152. phase_loop_runtime-0.7.15/tests/test_executor_exited_without_closeout_785.py +229 -0
  153. phase_loop_runtime-0.7.15/tests/test_fab_activation_promotion.py +1721 -0
  154. phase_loop_runtime-0.7.15/tests/test_fab_delta_consumer.py +2331 -0
  155. phase_loop_runtime-0.7.15/tests/test_fab_flag_off_recovery_leak_299.py +217 -0
  156. phase_loop_runtime-0.7.15/tests/test_fabpub_admission_compat_789.py +775 -0
  157. phase_loop_runtime-0.7.15/tests/test_fabpub_inventory_worktree_lifecycle_789.py +831 -0
  158. phase_loop_runtime-0.7.15/tests/test_fabpub_partition_rotation_789d.py +5493 -0
  159. phase_loop_runtime-0.7.15/tests/test_fabpub_recovery_controls_789.py +320 -0
  160. phase_loop_runtime-0.7.15/tests/test_fabpub_rotate_partition_cli_789d.py +665 -0
  161. phase_loop_runtime-0.7.15/tests/test_fabpub_zero_history_bootstrap.py +582 -0
  162. phase_loop_runtime-0.7.15/tests/test_fabreadmit_authority_digest_v2.py +270 -0
  163. phase_loop_runtime-0.7.15/tests/test_fabreadmit_broker.py +341 -0
  164. phase_loop_runtime-0.7.15/tests/test_gate_fail_open_visibility.py +1037 -0
  165. phase_loop_runtime-0.7.15/tests/test_goal_coverage.py +590 -0
  166. phase_loop_runtime-0.7.15/tests/test_governed_premerge.py +211 -0
  167. phase_loop_runtime-0.7.15/tests/test_govlean_panel_policy.py +157 -0
  168. phase_loop_runtime-0.7.15/tests/test_grokexec.py +502 -0
  169. phase_loop_runtime-0.7.15/tests/test_harden_evidence_producer.py +4446 -0
  170. phase_loop_runtime-0.7.15/tests/test_harden_evidence_verifier.py +465 -0
  171. phase_loop_runtime-0.7.15/tests/test_harden_json_depth_825.py +248 -0
  172. phase_loop_runtime-0.7.15/tests/test_legible_evidence.py +2052 -0
  173. phase_loop_runtime-0.7.15/tests/test_legible_review_repairs.py +5731 -0
  174. phase_loop_runtime-0.7.15/tests/test_legible_roadmap_contract.py +2664 -0
  175. phase_loop_runtime-0.7.15/tests/test_model_class_policy.py +210 -0
  176. phase_loop_runtime-0.7.15/tests/test_model_id_source_guard.py +145 -0
  177. phase_loop_runtime-0.7.15/tests/test_model_tier_taxonomy.py +430 -0
  178. phase_loop_runtime-0.7.15/tests/test_native_claude_seat_fill.py +780 -0
  179. phase_loop_runtime-0.7.15/tests/test_native_claude_seat_fill_green.py +201 -0
  180. phase_loop_runtime-0.7.15/tests/test_packaged_vector_manifest_pin.py +66 -0
  181. phase_loop_runtime-0.7.15/tests/test_panel_context_refs_114.py +380 -0
  182. phase_loop_runtime-0.7.15/tests/test_panel_invoker.py +179 -0
  183. phase_loop_runtime-0.7.15/tests/test_panel_invoker_spawn.py +609 -0
  184. phase_loop_runtime-0.7.15/tests/test_panel_invoker_timeout_argv.py +2381 -0
  185. phase_loop_runtime-0.7.15/tests/test_panel_native_fill_183.py +405 -0
  186. phase_loop_runtime-0.7.15/tests/test_panel_per_leg_model_66.py +92 -0
  187. phase_loop_runtime-0.7.15/tests/test_panel_streaming_verdicts.py +214 -0
  188. phase_loop_runtime-0.7.15/tests/test_phase_loop_concurrent_phase_dispatch.py +107 -0
  189. phase_loop_runtime-0.7.15/tests/test_phase_loop_execution_policy.py +523 -0
  190. phase_loop_runtime-0.7.15/tests/test_phase_loop_lane_scheduler.py +264 -0
  191. phase_loop_runtime-0.7.15/tests/test_phase_loop_launcher.py +1977 -0
  192. phase_loop_runtime-0.7.15/tests/test_phase_loop_models.py +1021 -0
  193. phase_loop_runtime-0.7.15/tests/test_phase_loop_policy.py +93 -0
  194. phase_loop_runtime-0.7.15/tests/test_phase_loop_runner.py +3781 -0
  195. phase_loop_runtime-0.7.15/tests/test_phase_loop_schema_flow.py +92 -0
  196. phase_loop_runtime-0.7.15/tests/test_phase_loop_v45_sched.py +583 -0
  197. phase_loop_runtime-0.7.15/tests/test_phase_loop_v45_schedharden.py +801 -0
  198. phase_loop_runtime-0.7.15/tests/test_phase_loop_work_unit_runner.py +300 -0
  199. phase_loop_runtime-0.7.15/tests/test_phase_state_disagreement_312.py +2088 -0
  200. phase_loop_runtime-0.7.15/tests/test_phase_worktree_executor.py +826 -0
  201. phase_loop_runtime-0.7.15/tests/test_pr_readback_789.py +351 -0
  202. phase_loop_runtime-0.7.15/tests/test_president_wiring.py +689 -0
  203. phase_loop_runtime-0.7.15/tests/test_proofgate_cleanup.py +381 -0
  204. phase_loop_runtime-0.7.15/tests/test_public_installer.py +232 -0
  205. phase_loop_runtime-0.7.15/tests/test_publishing.py +705 -0
  206. phase_loop_runtime-0.7.15/tests/test_reconcile_portability_85c.py +1131 -0
  207. phase_loop_runtime-0.7.15/tests/test_review_leg_sandbox.py +511 -0
  208. phase_loop_runtime-0.7.15/tests/test_review_policy_govlean_repairs.py +161 -0
  209. phase_loop_runtime-0.7.15/tests/test_review_stage_binding.py +183 -0
  210. phase_loop_runtime-0.7.15/tests/test_review_stage_board_findings.py +337 -0
  211. phase_loop_runtime-0.7.15/tests/test_review_staged_tree_authorization.py +281 -0
  212. phase_loop_runtime-0.7.15/tests/test_roadmap_ownership.py +2650 -0
  213. phase_loop_runtime-0.7.15/tests/test_routing_invariants.py +140 -0
  214. phase_loop_runtime-0.7.15/tests/test_runtime_adapter_output_720.py +487 -0
  215. phase_loop_runtime-0.7.15/tests/test_runtime_event_log_hardening_720.py +268 -0
  216. phase_loop_runtime-0.7.15/tests/test_runtime_procfs_identity_870.py +114 -0
  217. phase_loop_runtime-0.7.15/tests/test_sandbox_clone.py +521 -0
  218. phase_loop_runtime-0.7.15/tests/test_sandbox_egress.py +717 -0
  219. phase_loop_runtime-0.7.15/tests/test_sandbox_policy.py +392 -0
  220. phase_loop_runtime-0.7.15/tests/test_sandbox_preamble.py +80 -0
  221. phase_loop_runtime-0.7.15/tests/test_sandbox_retention.py +301 -0
  222. phase_loop_runtime-0.7.15/tests/test_skill_liveness_contract.py +276 -0
  223. phase_loop_runtime-0.7.15/tests/test_skills_canon_parity.py +424 -0
  224. phase_loop_runtime-0.7.15/tests/test_task_message_broker.py +377 -0
  225. phase_loop_runtime-0.7.15/tests/test_the_real_launch_carries_the_prefix.py +285 -0
  226. phase_loop_runtime-0.7.15/tests/test_train_authority_import_811.py +39 -0
  227. phase_loop_runtime-0.7.15/tests/test_train_invariants.py +3545 -0
  228. phase_loop_runtime-0.7.15/tests/test_train_prebuilt.py +1340 -0
  229. phase_loop_runtime-0.7.15/tests/test_train_review_authorization.py +742 -0
  230. phase_loop_runtime-0.7.15/tests/test_train_runner.py +3610 -0
  231. phase_loop_runtime-0.7.15/tests/test_v34_parallel_dispatch_soak.py +207 -0
  232. phase_loop_runtime-0.7.15/tests/test_validate_plan_doc_fail_closed.py +126 -0
  233. phase_loop_runtime-0.7.15/tests/test_verification_dotdot_execution_428.py +306 -0
  234. phase_loop_runtime-0.7.15/tests/test_verification_interpreter_guard_221.py +409 -0
  235. phase_loop_runtime-0.7.15/tests/test_verification_venv_identity_428.py +400 -0
  236. phase_loop_runtime-0.7.15/tests/test_workerpool_failure_isolation.py +159 -0
  237. phase_loop_runtime-0.7.15/tests/test_workerpool_parallel.py +73 -0
  238. phase_loop_runtime-0.7.15/tests/test_workerpool_worktree_alloc.py +114 -0
  239. phase_loop_runtime-0.7.14/PKG-INFO +0 -187
  240. phase_loop_runtime-0.7.14/README.md +0 -158
  241. phase_loop_runtime-0.7.14/pyproject.toml +0 -147
  242. phase_loop_runtime-0.7.14/src/phase_loop_runtime/__init__.py +0 -21
  243. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/CONTRACTS.md +0 -405
  244. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/__init__.py +0 -363
  245. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/backing.py +0 -188
  246. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/composition.py +0 -235
  247. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/config.py +0 -273
  248. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +0 -59
  249. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/fixtures.py +0 -102
  250. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/harness_mapping.py +0 -219
  251. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/matrix.py +0 -146
  252. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/presets.py +0 -188
  253. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/registries.py +0 -323
  254. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/resolver.py +0 -248
  255. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/schema.py +0 -355
  256. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/standin.py +0 -166
  257. phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/validation.py +0 -159
  258. phase_loop_runtime-0.7.14/src/phase_loop_runtime/agy_canary_evidence.py +0 -8419
  259. phase_loop_runtime-0.7.14/src/phase_loop_runtime/build_bundle.py +0 -305
  260. phase_loop_runtime-0.7.14/src/phase_loop_runtime/capability_registry.py +0 -1026
  261. phase_loop_runtime-0.7.14/src/phase_loop_runtime/cli.py +0 -4406
  262. phase_loop_runtime-0.7.14/src/phase_loop_runtime/closeout_classifier.py +0 -120
  263. phase_loop_runtime-0.7.14/src/phase_loop_runtime/closeout_validation.py +0 -144
  264. phase_loop_runtime-0.7.14/src/phase_loop_runtime/closeout_validators.py +0 -338
  265. phase_loop_runtime-0.7.14/src/phase_loop_runtime/conformance/outside_agent_vectors.py +0 -221
  266. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/__init__.py +0 -110
  267. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/adapters/base.py +0 -51
  268. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/adapters/claude.py +0 -5
  269. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/adapters/codex.py +0 -5
  270. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/adapters/outside_agent.py +0 -9
  271. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/admission.py +0 -206
  272. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/credsep.py +0 -384
  273. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/evidence.py +0 -233
  274. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/live.py +0 -2742
  275. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/verbs.py +0 -574
  276. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/contracts.py +0 -235
  277. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/event_log.py +0 -140
  278. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/fencing.py +0 -182
  279. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/provider_contracts.py +0 -151
  280. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/reconcile.py +0 -92
  281. phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/status.py +0 -33
  282. phase_loop_runtime-0.7.14/src/phase_loop_runtime/events.py +0 -167
  283. phase_loop_runtime-0.7.14/src/phase_loop_runtime/fab_delta.py +0 -1443
  284. phase_loop_runtime-0.7.14/src/phase_loop_runtime/governed_premerge.py +0 -473
  285. phase_loop_runtime-0.7.14/src/phase_loop_runtime/governed_review.py +0 -281
  286. phase_loop_runtime-0.7.14/src/phase_loop_runtime/lane_scheduler.py +0 -317
  287. phase_loop_runtime-0.7.14/src/phase_loop_runtime/launcher.py +0 -3471
  288. phase_loop_runtime-0.7.14/src/phase_loop_runtime/legible_evidence.py +0 -2232
  289. phase_loop_runtime-0.7.14/src/phase_loop_runtime/models.py +0 -3053
  290. phase_loop_runtime-0.7.14/src/phase_loop_runtime/panel_invoker.py +0 -5546
  291. phase_loop_runtime-0.7.14/src/phase_loop_runtime/phase_worktree_executor.py +0 -433
  292. phase_loop_runtime-0.7.14/src/phase_loop_runtime/plan_ir.py +0 -526
  293. phase_loop_runtime-0.7.14/src/phase_loop_runtime/plan_manifest.py +0 -2711
  294. phase_loop_runtime-0.7.14/src/phase_loop_runtime/profiles.py +0 -934
  295. phase_loop_runtime-0.7.14/src/phase_loop_runtime/prompts.py +0 -365
  296. phase_loop_runtime-0.7.14/src/phase_loop_runtime/publishing.py +0 -1086
  297. phase_loop_runtime-0.7.14/src/phase_loop_runtime/reconcile.py +0 -1766
  298. phase_loop_runtime-0.7.14/src/phase_loop_runtime/render.py +0 -483
  299. phase_loop_runtime-0.7.14/src/phase_loop_runtime/roadmap_assumptions.py +0 -792
  300. phase_loop_runtime-0.7.14/src/phase_loop_runtime/runner.py +0 -12684
  301. phase_loop_runtime-0.7.14/src/phase_loop_runtime/runtime_paths.py +0 -283
  302. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +0 -82
  303. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +0 -82
  304. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +0 -165
  305. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +0 -791
  306. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +0 -673
  307. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +0 -115
  308. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +0 -481
  309. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +0 -352
  310. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +0 -808
  311. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +0 -1322
  312. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +0 -75
  313. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +0 -243
  314. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +0 -249
  315. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +0 -74
  316. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +0 -85
  317. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +0 -85
  318. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +0 -252
  319. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +0 -673
  320. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +0 -1322
  321. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +0 -75
  322. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +0 -77
  323. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +0 -77
  324. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +0 -219
  325. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +0 -673
  326. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +0 -1322
  327. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +0 -75
  328. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +0 -77
  329. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +0 -77
  330. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +0 -673
  331. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +0 -1322
  332. phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +0 -75
  333. phase_loop_runtime-0.7.14/src/phase_loop_runtime/train_runner.py +0 -3471
  334. phase_loop_runtime-0.7.14/src/phase_loop_runtime/verification_evidence.py +0 -2268
  335. phase_loop_runtime-0.7.14/src/phase_loop_runtime/worker_pool.py +0 -123
  336. phase_loop_runtime-0.7.14/src/phase_loop_runtime.egg-info/PKG-INFO +0 -187
  337. phase_loop_runtime-0.7.14/src/phase_loop_runtime.egg-info/SOURCES.txt +0 -879
  338. phase_loop_runtime-0.7.14/src/phase_loop_runtime.egg-info/entry_points.txt +0 -9
  339. phase_loop_runtime-0.7.14/src/phase_loop_runtime.egg-info/requires.txt +0 -14
  340. phase_loop_runtime-0.7.14/tests/test_advisor_board_advisory_mode.py +0 -176
  341. phase_loop_runtime-0.7.14/tests/test_advisor_board_backcompat.py +0 -161
  342. phase_loop_runtime-0.7.14/tests/test_advisor_board_backing_homebrew.py +0 -437
  343. phase_loop_runtime-0.7.14/tests/test_advisor_board_backing_omnigent.py +0 -535
  344. phase_loop_runtime-0.7.14/tests/test_advisor_board_cli_legacy.py +0 -179
  345. phase_loop_runtime-0.7.14/tests/test_advisor_board_composition.py +0 -248
  346. phase_loop_runtime-0.7.14/tests/test_advisor_board_golden.py +0 -376
  347. phase_loop_runtime-0.7.14/tests/test_advisor_board_integration.py +0 -315
  348. phase_loop_runtime-0.7.14/tests/test_advisor_board_live_research.py +0 -145
  349. phase_loop_runtime-0.7.14/tests/test_advisor_board_observability.py +0 -380
  350. phase_loop_runtime-0.7.14/tests/test_advisor_board_presets.py +0 -152
  351. phase_loop_runtime-0.7.14/tests/test_advisor_board_registries.py +0 -140
  352. phase_loop_runtime-0.7.14/tests/test_advisor_board_research.py +0 -627
  353. phase_loop_runtime-0.7.14/tests/test_agy_canary_evidence.py +0 -6555
  354. phase_loop_runtime-0.7.14/tests/test_ci_workflow_concurrency.py +0 -27
  355. phase_loop_runtime-0.7.14/tests/test_cli_train_status_45.py +0 -100
  356. phase_loop_runtime-0.7.14/tests/test_closeout_classifier.py +0 -86
  357. phase_loop_runtime-0.7.14/tests/test_closeout_validator_hook.py +0 -158
  358. phase_loop_runtime-0.7.14/tests/test_console_scripts_are_declared.py +0 -93
  359. phase_loop_runtime-0.7.14/tests/test_convergence_adapters.py +0 -10
  360. phase_loop_runtime-0.7.14/tests/test_convergence_broker_admission.py +0 -8
  361. phase_loop_runtime-0.7.14/tests/test_convergence_broker_credsep.py +0 -780
  362. phase_loop_runtime-0.7.14/tests/test_convergence_broker_revocation_race.py +0 -364
  363. phase_loop_runtime-0.7.14/tests/test_convergence_broker_verbs.py +0 -144
  364. phase_loop_runtime-0.7.14/tests/test_convergence_event_log.py +0 -43
  365. phase_loop_runtime-0.7.14/tests/test_convergence_live_enable.py +0 -658
  366. phase_loop_runtime-0.7.14/tests/test_convergence_reconcile.py +0 -15
  367. phase_loop_runtime-0.7.14/tests/test_convergence_runtime_imports.py +0 -14
  368. phase_loop_runtime-0.7.14/tests/test_convergence_status.py +0 -10
  369. phase_loop_runtime-0.7.14/tests/test_dispatch_lock_reentrancy.py +0 -142
  370. phase_loop_runtime-0.7.14/tests/test_fab_activation_promotion.py +0 -1466
  371. phase_loop_runtime-0.7.14/tests/test_fab_delta_consumer.py +0 -937
  372. phase_loop_runtime-0.7.14/tests/test_fab_flag_off_recovery_leak_299.py +0 -120
  373. phase_loop_runtime-0.7.14/tests/test_goal_coverage.py +0 -567
  374. phase_loop_runtime-0.7.14/tests/test_governed_premerge.py +0 -154
  375. phase_loop_runtime-0.7.14/tests/test_govlean_panel_policy.py +0 -157
  376. phase_loop_runtime-0.7.14/tests/test_grokexec.py +0 -502
  377. phase_loop_runtime-0.7.14/tests/test_legible_evidence.py +0 -2044
  378. phase_loop_runtime-0.7.14/tests/test_legible_review_repairs.py +0 -5726
  379. phase_loop_runtime-0.7.14/tests/test_legible_roadmap_contract.py +0 -2652
  380. phase_loop_runtime-0.7.14/tests/test_model_class_policy.py +0 -210
  381. phase_loop_runtime-0.7.14/tests/test_model_id_source_guard.py +0 -133
  382. phase_loop_runtime-0.7.14/tests/test_model_tier_taxonomy.py +0 -430
  383. phase_loop_runtime-0.7.14/tests/test_panel_context_refs_114.py +0 -377
  384. phase_loop_runtime-0.7.14/tests/test_panel_invoker.py +0 -176
  385. phase_loop_runtime-0.7.14/tests/test_panel_invoker_spawn.py +0 -608
  386. phase_loop_runtime-0.7.14/tests/test_panel_invoker_timeout_argv.py +0 -2349
  387. phase_loop_runtime-0.7.14/tests/test_panel_native_fill_183.py +0 -388
  388. phase_loop_runtime-0.7.14/tests/test_panel_per_leg_model_66.py +0 -92
  389. phase_loop_runtime-0.7.14/tests/test_panel_streaming_verdicts.py +0 -213
  390. phase_loop_runtime-0.7.14/tests/test_phase_loop_concurrent_phase_dispatch.py +0 -47
  391. phase_loop_runtime-0.7.14/tests/test_phase_loop_execution_policy.py +0 -283
  392. phase_loop_runtime-0.7.14/tests/test_phase_loop_lane_scheduler.py +0 -197
  393. phase_loop_runtime-0.7.14/tests/test_phase_loop_launcher.py +0 -1753
  394. phase_loop_runtime-0.7.14/tests/test_phase_loop_models.py +0 -1012
  395. phase_loop_runtime-0.7.14/tests/test_phase_loop_policy.py +0 -93
  396. phase_loop_runtime-0.7.14/tests/test_phase_loop_runner.py +0 -3718
  397. phase_loop_runtime-0.7.14/tests/test_phase_loop_schema_flow.py +0 -89
  398. phase_loop_runtime-0.7.14/tests/test_phase_loop_v45_sched.py +0 -461
  399. phase_loop_runtime-0.7.14/tests/test_phase_loop_v45_schedharden.py +0 -316
  400. phase_loop_runtime-0.7.14/tests/test_phase_loop_work_unit_runner.py +0 -260
  401. phase_loop_runtime-0.7.14/tests/test_phase_state_disagreement_312.py +0 -227
  402. phase_loop_runtime-0.7.14/tests/test_phase_worktree_executor.py +0 -361
  403. phase_loop_runtime-0.7.14/tests/test_publishing.py +0 -401
  404. phase_loop_runtime-0.7.14/tests/test_reconcile_portability_85c.py +0 -1112
  405. phase_loop_runtime-0.7.14/tests/test_review_leg_sandbox.py +0 -495
  406. phase_loop_runtime-0.7.14/tests/test_review_policy_govlean_repairs.py +0 -154
  407. phase_loop_runtime-0.7.14/tests/test_routing_invariants.py +0 -140
  408. phase_loop_runtime-0.7.14/tests/test_skills_canon_parity.py +0 -424
  409. phase_loop_runtime-0.7.14/tests/test_task_message_broker.py +0 -329
  410. phase_loop_runtime-0.7.14/tests/test_train_invariants.py +0 -1500
  411. phase_loop_runtime-0.7.14/tests/test_train_prebuilt.py +0 -722
  412. phase_loop_runtime-0.7.14/tests/test_train_runner.py +0 -3453
  413. phase_loop_runtime-0.7.14/tests/test_v34_parallel_dispatch_soak.py +0 -159
  414. phase_loop_runtime-0.7.14/tests/test_verification_interpreter_guard_221.py +0 -362
  415. phase_loop_runtime-0.7.14/tests/test_workerpool_failure_isolation.py +0 -86
  416. phase_loop_runtime-0.7.14/tests/test_workerpool_parallel.py +0 -47
  417. phase_loop_runtime-0.7.14/tests/test_workerpool_worktree_alloc.py +0 -38
  418. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/MANIFEST.in +0 -0
  419. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/protocol/protocol.md +0 -0
  420. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/setup.cfg +0 -0
  421. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +0 -0
  422. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +0 -0
  423. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +0 -0
  424. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +0 -0
  425. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +0 -0
  426. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +0 -0
  427. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/protocol.md +0 -0
  428. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +0 -0
  429. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +0 -0
  430. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +0 -0
  431. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +0 -0
  432. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +0 -0
  433. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +0 -0
  434. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +0 -0
  435. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_proc_cpu.py +0 -0
  436. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +0 -0
  437. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +0 -0
  438. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +0 -0
  439. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +0 -0
  440. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +0 -0
  441. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +0 -0
  442. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +0 -0
  443. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +0 -0
  444. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +0 -0
  445. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +0 -0
  446. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +0 -0
  447. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +0 -0
  448. {phase_loop_runtime-0.7.14 → 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
  449. {phase_loop_runtime-0.7.14 → 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
  450. {phase_loop_runtime-0.7.14 → 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
  451. {phase_loop_runtime-0.7.14 → 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
  452. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +0 -0
  453. {phase_loop_runtime-0.7.14 → 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
  454. {phase_loop_runtime-0.7.14 → 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
  455. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +0 -0
  456. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +0 -0
  457. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +0 -0
  458. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +0 -0
  459. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +0 -0
  460. {phase_loop_runtime-0.7.14 → 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
  461. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +0 -0
  462. {phase_loop_runtime-0.7.14 → 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
  463. {phase_loop_runtime-0.7.14 → 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
  464. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +0 -0
  465. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +0 -0
  466. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +0 -0
  467. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +0 -0
  468. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +0 -0
  469. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +0 -0
  470. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +0 -0
  471. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +0 -0
  472. {phase_loop_runtime-0.7.14 → 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
  473. {phase_loop_runtime-0.7.14 → 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
  474. {phase_loop_runtime-0.7.14 → 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
  475. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/adoption_bundle.py +0 -0
  476. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/backing_omnigent.py +0 -0
  477. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/events.py +0 -0
  478. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/observability.py +0 -0
  479. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/research.py +0 -0
  480. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/agent_runtime_provider.py +0 -0
  481. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_modular.py +0 -0
  482. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +0 -0
  483. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_c4_document.baml +0 -0
  484. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +0 -0
  485. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +0 -0
  486. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +0 -0
  487. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/emit_phase_closeout.baml +0 -0
  488. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +0 -0
  489. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/verification_evidence.baml +0 -0
  490. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/broker.py +0 -0
  491. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/classifier.py +0 -0
  492. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/claude_agent_view.py +0 -0
  493. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/claude_channel_sidecar.py +0 -0
  494. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/closeout.py +0 -0
  495. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/closeout_evidence_audit.py +0 -0
  496. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/__init__.py +0 -0
  497. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/VENDOR.json +0 -0
  498. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/consiliency_spec/outside_agent_router.py +0 -0
  499. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-route-verdict.schema.json +0 -0
  500. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-submission.schema.json +0 -0
  501. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-empty-evidence-refs.json +0 -0
  502. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-git-object-id-length.json +0 -0
  503. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-missing-digest.json +0 -0
  504. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-path-traversal.json +0 -0
  505. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-raw-payload.json +0 -0
  506. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-source-bundle-mismatch.json +0 -0
  507. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unknown-producer-identity-posture.json +0 -0
  508. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unsupported-verdict.json +0 -0
  509. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/manifest.json +0 -0
  510. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-ambiguity-report.json +0 -0
  511. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-implementation-submission.json +0 -0
  512. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-work-request.json +0 -0
  513. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/certificate_tier.py +0 -0
  514. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/git_grounded_projection.py +0 -0
  515. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_advisory.py +0 -0
  516. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_conform_evidence.py +0 -0
  517. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_core.py +0 -0
  518. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_imports.py +0 -0
  519. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_pin.py +0 -0
  520. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_provenance.py +0 -0
  521. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_real.py +0 -0
  522. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_real_output.py +0 -0
  523. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_redaction.py +0 -0
  524. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_schema.py +0 -0
  525. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_gates.py +0 -0
  526. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_ingest.py +0 -0
  527. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_layout.py +0 -0
  528. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_scaffold.py +0 -0
  529. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/adapters/__init__.py +0 -0
  530. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/broker/__init__.py +0 -0
  531. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/dispatch.py +0 -0
  532. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/refresh.py +0 -0
  533. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/cross_repo_channel.py +0 -0
  534. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/declared_identity.py +0 -0
  535. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/default_executor_resolver.py +0 -0
  536. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/deploy/phase-loop-task-message-broker.service +0 -0
  537. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/discovery.py +0 -0
  538. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/dispatch_lock.py +0 -0
  539. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/doc_delta_validator.py +0 -0
  540. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/docs_audit.py +0 -0
  541. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/docs_freshness.py +0 -0
  542. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/docs_surfaces.py +0 -0
  543. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/doctor.py +0 -0
  544. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/dotfiles_profile_plugin.py +0 -0
  545. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/entry_doc_check.py +0 -0
  546. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/events_migration.py +0 -0
  547. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/evidence_audit.py +0 -0
  548. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/evidence_audit_config.py +0 -0
  549. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/executor_availability.py +0 -0
  550. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_canonical.py +0 -0
  551. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_gate.py +0 -0
  552. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_producer.py +0 -0
  553. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_provenance.py +0 -0
  554. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fabpub_capability.py +0 -0
  555. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fabpub_tdd_chronology.py +0 -0
  556. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_map.py +0 -0
  557. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_metrics.py +0 -0
  558. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_metrics_export.py +0 -0
  559. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/gate_posture.py +0 -0
  560. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_discipline.py +0 -0
  561. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_ops.py +0 -0
  562. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_topology.py +0 -0
  563. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/goal_coverage.py +0 -0
  564. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/governed_bundle.py +0 -0
  565. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/handoff.py +0 -0
  566. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/handoff_path.py +0 -0
  567. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/harness_env_signatures.py +0 -0
  568. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/injection.py +0 -0
  569. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/install_status.py +0 -0
  570. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/lease_store.py +0 -0
  571. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/maintenance.py +0 -0
  572. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/migrate_handoffs.py +0 -0
  573. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/observability.py +0 -0
  574. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/phase_loop_drift_audit.py +0 -0
  575. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/__init__.py +0 -0
  576. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/branch_ops.py +0 -0
  577. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/flag.py +0 -0
  578. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/markers.py +0 -0
  579. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/merge_policy.py +0 -0
  580. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/ratification.py +0 -0
  581. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/sibling_matcher.py +0 -0
  582. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/plan_pin_lint.py +0 -0
  583. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/planner_validation.py +0 -0
  584. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/producer_manifest.py +0 -0
  585. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/proof_stages.py +0 -0
  586. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/provenance.py +0 -0
  587. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/py.typed +0 -0
  588. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/ratification_policy.py +0 -0
  589. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/redaction.py +0 -0
  590. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/reflection_sync.py +0 -0
  591. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/release_guard.py +0 -0
  592. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/repo_validation.py +0 -0
  593. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/review_summary.py +0 -0
  594. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_authority.py +0 -0
  595. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_lint.py +0 -0
  596. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_representation_check.py +0 -0
  597. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_reseal.py +0 -0
  598. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_log.py +0 -0
  599. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_policy/__init__.py +0 -0
  600. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +0 -0
  601. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/runtime_projection.py +0 -0
  602. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/runtime_resources.py +0 -0
  603. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schema_export.py +0 -0
  604. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.golden.json +0 -0
  605. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.schema.json +0 -0
  606. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schemas/phase_loop_closeout.schema.json +0 -0
  607. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_install.py +0 -0
  608. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_inventory.py +0 -0
  609. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_paths.py +0 -0
  610. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_sources_plugin.py +0 -0
  611. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +0 -0
  612. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +0 -0
  613. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +0 -0
  614. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +0 -0
  615. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  616. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  617. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  618. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  619. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  620. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  621. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  622. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  623. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +0 -0
  624. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  625. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +0 -0
  626. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +0 -0
  627. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +0 -0
  628. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +0 -0
  629. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +0 -0
  630. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  631. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +0 -0
  632. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  633. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +0 -0
  634. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +0 -0
  635. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +0 -0
  636. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +0 -0
  637. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-run-train/README.md +0 -0
  638. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +0 -0
  639. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +0 -0
  640. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +0 -0
  641. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  642. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +0 -0
  643. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +0 -0
  644. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +0 -0
  645. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +0 -0
  646. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +0 -0
  647. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +0 -0
  648. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +0 -0
  649. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  650. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  651. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  652. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  653. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  654. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  655. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  656. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  657. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +0 -0
  658. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  659. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +0 -0
  660. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +0 -0
  661. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +0 -0
  662. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +0 -0
  663. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +0 -0
  664. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +0 -0
  665. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +0 -0
  666. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  667. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +0 -0
  668. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  669. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +0 -0
  670. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +0 -0
  671. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +0 -0
  672. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +0 -0
  673. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +0 -0
  674. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +0 -0
  675. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-run-train/README.md +0 -0
  676. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +0 -0
  677. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +0 -0
  678. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +0 -0
  679. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +0 -0
  680. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +0 -0
  681. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  682. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +0 -0
  683. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +0 -0
  684. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +0 -0
  685. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +0 -0
  686. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +0 -0
  687. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +0 -0
  688. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +0 -0
  689. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +0 -0
  690. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  691. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  692. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  693. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  694. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  695. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  696. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  697. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  698. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +0 -0
  699. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  700. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +0 -0
  701. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +0 -0
  702. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +0 -0
  703. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +0 -0
  704. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +0 -0
  705. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +0 -0
  706. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +0 -0
  707. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  708. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +0 -0
  709. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  710. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +0 -0
  711. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +0 -0
  712. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +0 -0
  713. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +0 -0
  714. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +0 -0
  715. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +0 -0
  716. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-run-train/README.md +0 -0
  717. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +0 -0
  718. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +0 -0
  719. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +0 -0
  720. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +0 -0
  721. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +0 -0
  722. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  723. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +0 -0
  724. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +0 -0
  725. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +0 -0
  726. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +0 -0
  727. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +0 -0
  728. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +0 -0
  729. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +0 -0
  730. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +0 -0
  731. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +0 -0
  732. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  733. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  734. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  735. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  736. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  737. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  738. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
  739. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  740. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +0 -0
  741. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  742. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +0 -0
  743. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +0 -0
  744. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +0 -0
  745. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +0 -0
  746. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +0 -0
  747. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +0 -0
  748. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +0 -0
  749. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  750. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +0 -0
  751. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  752. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +0 -0
  753. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +0 -0
  754. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +0 -0
  755. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +0 -0
  756. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +0 -0
  757. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +0 -0
  758. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-run-train/README.md +0 -0
  759. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +0 -0
  760. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +0 -0
  761. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +0 -0
  762. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +0 -0
  763. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +0 -0
  764. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  765. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +0 -0
  766. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +0 -0
  767. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +0 -0
  768. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state.py +0 -0
  769. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state_degradation.py +0 -0
  770. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state_ops.py +0 -0
  771. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_broker.py +0 -0
  772. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_broker_client.py +0 -0
  773. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_resolver.py +0 -0
  774. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/tdd_receipts.py +0 -0
  775. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/train_ledger.py +0 -0
  776. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/train_roadmap.py +0 -0
  777. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/verification_evidence_validator.py +0 -0
  778. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/visual_avatar_evidence_validator.py +0 -0
  779. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/visual_evidence_validator.py +0 -0
  780. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/worktree_index.py +0 -0
  781. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime.egg-info/dependency_links.txt +0 -0
  782. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime.egg-info/top_level.txt +0 -0
  783. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_acceptance_falsifier_contract.py +0 -0
  784. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_alias_install.py +0 -0
  785. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_concurrency.py +0 -0
  786. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_config.py +0 -0
  787. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_ingestion.py +0 -0
  788. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_matrix.py +0 -0
  789. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_resolver.py +0 -0
  790. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_schema.py +0 -0
  791. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_twin_alias_legacy.py +0 -0
  792. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_agent_runtime_provider_cs08.py +0 -0
  793. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_autosel.py +0 -0
  794. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_branchgov_preflight.py +0 -0
  795. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_certificate_tier.py +0 -0
  796. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_claude_json_schema_metaschema_291.py +0 -0
  797. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_break_glass_cli.py +0 -0
  798. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_convergence_fixes.py +0 -0
  799. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_exception_vocab.py +0 -0
  800. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_gitignored_disposable_186b.py +0 -0
  801. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_new_owned_directory_closes_clean.py +0 -0
  802. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_verification_gate.py +0 -0
  803. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_codex_effort_max_clamp_49.py +0 -0
  804. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_committed_range_diff.py +0 -0
  805. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_conformance_golden.py +0 -0
  806. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_consiliency_dual_layout.py +0 -0
  807. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_consiliency_gates.py +0 -0
  808. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_consiliency_ingest.py +0 -0
  809. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_consiliency_scaffold.py +0 -0
  810. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_contract_floor_guard_378.py +0 -0
  811. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_broker_api.py +0 -0
  812. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_broker_evidence.py +0 -0
  813. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_cli_integration.py +0 -0
  814. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_coordination_contracts.py +0 -0
  815. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_dispatch.py +0 -0
  816. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_event_contracts.py +0 -0
  817. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_fencing.py +0 -0
  818. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_fixture_contracts.py +0 -0
  819. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_invalidation.py +0 -0
  820. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_provider_contracts.py +0 -0
  821. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_refresh.py +0 -0
  822. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_seat_lifecycle.py +0 -0
  823. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_train_integration.py +0 -0
  824. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_coordinator_wave_loop.py +0 -0
  825. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_cr_fixes_pr220.py +0 -0
  826. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_delegated_visual_evidence_91.py +0 -0
  827. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_discovery_hygiene_legacy.py +0 -0
  828. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dispatch_hold_guard.py +0 -0
  829. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_cross_roadmap.py +0 -0
  830. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_helper.py +0 -0
  831. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_same_roadmap.py +0 -0
  832. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_doc_delta_validator.py +0 -0
  833. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_docs_audit.py +0 -0
  834. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_docs_freshness.py +0 -0
  835. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_doctor_bom.py +0 -0
  836. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dotfiles_tree.py +0 -0
  837. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_entry_doc_check.py +0 -0
  838. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_execgov.py +0 -0
  839. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_execreg_launch_registry.py +0 -0
  840. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_execute_phase_handoff_mode.py +0 -0
  841. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_execution_policy_tiering.py +0 -0
  842. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_executor_availability.py +0 -0
  843. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_export_schema.py +0 -0
  844. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_canonical_b.py +0 -0
  845. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_closeout_crash_safety.py +0 -0
  846. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_closeout_wiring.py +0 -0
  847. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_delta_c.py +0 -0
  848. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_gate_d.py +0 -0
  849. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_producer.py +0 -0
  850. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_provenance_a.py +0 -0
  851. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fabpub_shared_epoch.py +0 -0
  852. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fleet_map.py +0 -0
  853. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fleet_metrics.py +0 -0
  854. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fleet_metrics_export.py +0 -0
  855. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_gate_a_wheel_isolation.py +0 -0
  856. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_gate_parity_244_245.py +0 -0
  857. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_gate_posture.py +0 -0
  858. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_git_discipline.py +0 -0
  859. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_git_grounded_projection.py +0 -0
  860. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_cross_vendor_floor_358.py +0 -0
  861. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_disjointness_model_first.py +0 -0
  862. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_e2e.py +0 -0
  863. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_gate_crfixes.py +0 -0
  864. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_planning_gate.py +0 -0
  865. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_premerge_live.py +0 -0
  866. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_review.py +0 -0
  867. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_declared_identity.py +0 -0
  868. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_plan_manifest_issue_dispositions.py +0 -0
  869. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_plan_pin_lint.py +0 -0
  870. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_producer_manifest.py +0 -0
  871. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_proof_stages.py +0 -0
  872. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_roadmap_reseal.py +0 -0
  873. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_skill_policy_parity.py +0 -0
  874. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_tdd_receipts.py +0 -0
  875. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_grok_narrow_reject_231.py +0 -0
  876. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_hotfix_lane.py +0 -0
  877. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_injection_skill_failloud.py +0 -0
  878. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_lane_ir_override.py +0 -0
  879. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_launcher_liveness.py +0 -0
  880. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_launchspec_golden.py +0 -0
  881. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_lease_store.py +0 -0
  882. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_lease_store_conformance.py +0 -0
  883. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_ledger_serialization.py +0 -0
  884. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_leg_liveness_monitor.py +0 -0
  885. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_live_smoke_gate_executes.py +0 -0
  886. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_manifest_per_entry_164.py +0 -0
  887. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_nonzero_suite_command_fails_closed.py +0 -0
  888. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_observability_alerting.py +0 -0
  889. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory.py +0 -0
  890. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory_cli.py +0 -0
  891. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory_fixtures.py +0 -0
  892. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_authority_boundary.py +0 -0
  893. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_canonical_corpus.py +0 -0
  894. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_conform_evidence.py +0 -0
  895. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_contract_drift.py +0 -0
  896. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_contract_imports.py +0 -0
  897. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_contract_pin.py +0 -0
  898. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_core_api.py +0 -0
  899. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_provenance.py +0 -0
  900. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_ci.py +0 -0
  901. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_cli.py +0 -0
  902. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_output.py +0 -0
  903. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_runtime.py +0 -0
  904. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_redaction.py +0 -0
  905. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_redaction_separation.py +0 -0
  906. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_release_surface.py +0 -0
  907. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_schema_validation.py +0 -0
  908. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_vectors.py +0 -0
  909. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_advisory_mode_63.py +0 -0
  910. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_codex_auth_signature_body_252.py +0 -0
  911. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_gemini_no_command_preamble.py +0 -0
  912. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_invoker_windows_import.py +0 -0
  913. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_leg_auth_preflight_64.py +0 -0
  914. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_leg_failure_diagnostic.py +0 -0
  915. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_tui_eof_48.py +0 -0
  916. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_tui_liveness_188.py +0 -0
  917. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_tui_workspace_trust_223.py +0 -0
  918. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_verdict_summary.py +0 -0
  919. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_parallel_dispatch_backcompat.py +0 -0
  920. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_parallel_dispatch_cli.py +0 -0
  921. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_adoption_bundle.py +0 -0
  922. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_adoption_bundle_cli.py +0 -0
  923. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_dependency.py +0 -0
  924. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_end_to_end.py +0 -0
  925. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_injection.py +0 -0
  926. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_modular.py +0 -0
  927. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_prompt_taxonomy.py +0 -0
  928. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_runner_closeout.py +0 -0
  929. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_schema_export.py +0 -0
  930. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_schema_source.py +0 -0
  931. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_branch_divergence_event.py +0 -0
  932. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_break_glass_rerun.py +0 -0
  933. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_build_bundle.py +0 -0
  934. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_classifier.py +0 -0
  935. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_agent_view_adapter.py +0 -0
  936. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_agent_view_lifecycle.py +0 -0
  937. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_hooks.py +0 -0
  938. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_mcp.py +0 -0
  939. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_security.py +0 -0
  940. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_session_launch.py +0 -0
  941. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_sidecar.py +0 -0
  942. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_smoke_suite.py +0 -0
  943. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_route_selection.py +0 -0
  944. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_cli.py +0 -0
  945. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_cli_plugin_load.py +0 -0
  946. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_control_only.py +0 -0
  947. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_event.py +0 -0
  948. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_evidence_audit.py +0 -0
  949. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_hardening.py +0 -0
  950. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_owned_dirty_fallback.py +0 -0
  951. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_schema.py +0 -0
  952. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_validation.py +0 -0
  953. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_citation.py +0 -0
  954. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_docs.py +0 -0
  955. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_rollback.py +0 -0
  956. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_def4_writer_namespacing.py +0 -0
  957. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dirty_path_classify_phase_owned_tests.py +0 -0
  958. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dirty_path_classify_previous_phase_owned.py +0 -0
  959. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_discovery.py +0 -0
  960. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_docs.py +0 -0
  961. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dotfiles_schemas.py +0 -0
  962. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dotfiles_sources.py +0 -0
  963. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_governed_pipeline.py +0 -0
  964. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_instruction_scope_readme.py +0 -0
  965. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_portal.py +0 -0
  966. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_regenesis.py +0 -0
  967. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_drift_audit.py +0 -0
  968. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dry_run_closeout_guard.py +0 -0
  969. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dry_run_then_run.py +0 -0
  970. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_events_migration.py +0 -0
  971. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit.py +0 -0
  972. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_runner.py +0 -0
  973. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tier2.py +0 -0
  974. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tier3.py +0 -0
  975. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tuning.py +0 -0
  976. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_executor_degradation.py +0 -0
  977. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_full_phase_mode.py +0 -0
  978. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_handoff.py +0 -0
  979. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_handoff_migration.py +0 -0
  980. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_init.py +0 -0
  981. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_injection.py +0 -0
  982. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_install_status.py +0 -0
  983. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_issue_84_explicit_phase.py +0 -0
  984. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_lane_harnesses.py +0 -0
  985. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_lane_ir.py +0 -0
  986. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_lane_ir_fixtures.py +0 -0
  987. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_ledger_debug.py +0 -0
  988. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_ledger_dedup.py +0 -0
  989. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_live_adapters.py +0 -0
  990. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_maintenance.py +0 -0
  991. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_metrics.py +0 -0
  992. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_migration_regressions.py +0 -0
  993. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_dispatch.py +0 -0
  994. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_matrix.py +0 -0
  995. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_observability.py +0 -0
  996. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_native_flags.py +0 -0
  997. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_parallel_plan_safe.py +0 -0
  998. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pi_executor.py +0 -0
  999. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_boundaries.py +0 -0
  1000. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_bridge.py +0 -0
  1001. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_bundle.py +0 -0
  1002. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_closeout.py +0 -0
  1003. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_freshness.py +0 -0
  1004. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_mode.py +0 -0
  1005. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_plan_doc_skip.py +0 -0
  1006. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_plan_manifest.py +0 -0
  1007. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_planner_redispatch_when_plan_current.py +0 -0
  1008. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_planner_validation.py +0 -0
  1009. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_protocol_contract.py +0 -0
  1010. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_provenance.py +0 -0
  1011. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile.py +0 -0
  1012. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile_blocker_self_clear.py +0 -0
  1013. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile_recovery_mode.py +0 -0
  1014. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile_to_status_planned_recovery.py +0 -0
  1015. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reducers.py +0 -0
  1016. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_repair_precondition_planned_closeout.py +0 -0
  1017. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_repair_skipped_when_blocker_cleared.py +0 -0
  1018. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_roadmap_amendments.py +0 -0
  1019. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_roadmap_validate.py +0 -0
  1020. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_rotation.py +0 -0
  1021. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runner_closeout_validation.py +0 -0
  1022. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_boundary.py +0 -0
  1023. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_decouple.py +0 -0
  1024. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_package_data.py +0 -0
  1025. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_projection.py +0 -0
  1026. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_baml_closeout.py +0 -0
  1027. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_bridge_contract.py +0 -0
  1028. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_contract.py +0 -0
  1029. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_execute_contract.py +0 -0
  1030. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_install.py +0 -0
  1031. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_planner_contract.py +0 -0
  1032. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_smoke_blockers.py +0 -0
  1033. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_smoke_exhaustion.py +0 -0
  1034. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_smoke_reentry.py +0 -0
  1035. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_spurious_completion_rejection.py +0 -0
  1036. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_start_gate_phase_status.py +0 -0
  1037. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_start_gate_refuses_cross_phase_dirty.py +0 -0
  1038. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_state.py +0 -0
  1039. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_status_transition_events_emitted.py +0 -0
  1040. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_docs.py +0 -0
  1041. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_governed.py +0 -0
  1042. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_portal.py +0 -0
  1043. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_terminal_summary_mirrors_baml_closeout.py +0 -0
  1044. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v22_e2e.py +0 -0
  1045. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v22_principles.py +0 -0
  1046. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v45_found_contracts.py +0 -0
  1047. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v45_reconcile.py +0 -0
  1048. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_wave_runner.py +0 -0
  1049. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_work_unit_observability.py +0 -0
  1050. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_work_unit_state.py +0 -0
  1051. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_worktrees.py +0 -0
  1052. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_owned_dirty_relaxation.py +0 -0
  1053. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_create.py +0 -0
  1054. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_rebase_conflict.py +0 -0
  1055. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_refuse_default.py +0 -0
  1056. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_flag.py +0 -0
  1057. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_markers.py +0 -0
  1058. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_merge_policy_parse.py +0 -0
  1059. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_event_payload.py +0 -0
  1060. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_runner.py +0 -0
  1061. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_skipped_standalone.py +0 -0
  1062. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_standalone_regression.py +0 -0
  1063. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pkg_layout_freeze.py +0 -0
  1064. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_plan_ir_iter_waves.py +0 -0
  1065. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_preflight_verification.py +0 -0
  1066. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_proc_cpu.py +0 -0
  1067. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_proofgate_attestation_workflow.py +0 -0
  1068. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_proofgate_isolation.py +0 -0
  1069. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_proofgate_receipts.py +0 -0
  1070. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_prune_merged_worktrees_script.py +0 -0
  1071. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pushflow.py +0 -0
  1072. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_ratification_policy.py +0 -0
  1073. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reconcile_manifest_dedup_46.py +0 -0
  1074. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reconcile_tracked_closeout_recovery_90.py +0 -0
  1075. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reconcile_verification_log.py +0 -0
  1076. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reconcile_visual_avatar_evidence_91.py +0 -0
  1077. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reflection_sync.py +0 -0
  1078. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_release_dispatch_operator_approval_145.py +0 -0
  1079. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_release_pin_autotrack.py +0 -0
  1080. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_repo_validation.py +0 -0
  1081. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_review_summary.py +0 -0
  1082. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_roadmap_authority.py +0 -0
  1083. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_roadmap_representation_consistency.py +0 -0
  1084. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_route_log.py +0 -0
  1085. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_route_policy_conformance.py +0 -0
  1086. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_runner_visual_evidence_authoritative_91.py +0 -0
  1087. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_runtime_state_mirror_agreement.py +0 -0
  1088. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_self_asserted_passed_without_evidence_is_gated.py +0 -0
  1089. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_sibling_matcher_patterns.py +0 -0
  1090. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skill_bundle_pinned.py +0 -0
  1091. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skill_install_body_expansion.py +0 -0
  1092. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skill_plan_manifest_write.py +0 -0
  1093. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skill_sources_seam.py +0 -0
  1094. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skills_bundle_drift.py +0 -0
  1095. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skills_src_claude_literal_lint.py +0 -0
  1096. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_spec_conformance_gate.py +0 -0
  1097. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_specpkgmin_wheel.py +0 -0
  1098. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_stale_roadmap_dispatch_guard.py +0 -0
  1099. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_status_read_only_62.py +0 -0
  1100. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_suite_interpreter_satisfies_requires_python.py +0 -0
  1101. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_sweep_fleet_worktrees_script.py +0 -0
  1102. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_sync_skills_apply_failloud.py +0 -0
  1103. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_task_message_broker_cli.py +0 -0
  1104. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_task_message_resolver.py +0 -0
  1105. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_tdd_chronology.py +0 -0
  1106. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_train_e2e.py +0 -0
  1107. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_train_merge.py +0 -0
  1108. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_train_order_only_deps_47.py +0 -0
  1109. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_train_roadmap.py +0 -0
  1110. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_unattended_release.py +0 -0
  1111. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_docs_lane.py +0 -0
  1112. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_goal_coverage.py +0 -0
  1113. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_producer_dependency.py +0 -0
  1114. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_proofgate.py +0 -0
  1115. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_verification_evidence.py +0 -0
  1116. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_verification_evidence_validator.py +0 -0
  1117. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_visual_avatar_evidence_validator.py +0 -0
  1118. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_visual_evidence_validator.py +0 -0
  1119. {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_worktree_index.py +0 -0
@@ -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`.