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