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