phase-loop-runtime 0.7.14__tar.gz → 0.7.15__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- phase_loop_runtime-0.7.15/PKG-INFO +309 -0
- phase_loop_runtime-0.7.15/README.md +279 -0
- phase_loop_runtime-0.7.15/pyproject.toml +160 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/__init__.py +21 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/CONTRACTS.md +487 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/__init__.py +373 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/backing.py +1246 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/composition.py +311 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/config.py +299 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +59 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/fixtures.py +104 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/harness_mapping.py +219 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/matrix.py +146 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/presets.py +190 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/registries.py +326 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/resolver.py +250 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/schema.py +355 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/standin.py +166 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/advisor_board/validation.py +159 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/agy_canary_evidence.py +8443 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/build_bundle.py +309 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/capability_registry.py +1027 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/cli.py +4826 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_classifier.py +347 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_validation.py +192 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/closeout_validators.py +551 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/conformance/outside_agent_vectors.py +231 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/__init__.py +121 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/base.py +239 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/claude.py +14 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/codex.py +14 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/adapters/outside_agent.py +36 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/admission.py +607 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/credsep.py +560 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/evidence.py +450 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/live.py +5455 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/broker/verbs.py +680 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/contracts.py +355 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/event_log.py +366 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/fencing.py +182 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/provider_contracts.py +153 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/reconcile.py +273 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/convergence/status.py +74 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/events.py +170 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/fab_delta.py +1443 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/fabreadmit_capability.py +5 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/governed_premerge.py +525 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/governed_review.py +526 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/lane_scheduler.py +354 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/launcher.py +3901 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/legible_evidence.py +2415 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/models.py +3067 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/panel_invoker.py +8240 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/phase_worktree_executor.py +878 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/plan_ir.py +547 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/plan_manifest.py +3447 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/president_adapter.py +143 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/profiles.py +1010 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/prompts.py +365 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/publishing.py +1226 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/reconcile.py +1786 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/render.py +546 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/review_stage.py +456 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/reviewtruth_native_fill_capability.py +10 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_assumptions.py +802 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/roadmap_ownership.py +1395 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/runner.py +13271 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/runtime_paths.py +292 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_egress.py +393 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_policy.py +343 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/sandbox_retention.py +178 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +172 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +172 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +165 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +811 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +677 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +115 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +481 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +373 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +808 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +1329 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +112 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +243 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +249 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +74 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +170 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +170 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +252 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +677 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +1329 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +105 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +162 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +162 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +219 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +677 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +1329 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +105 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +162 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +162 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +677 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +1329 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +105 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/train_runner.py +4114 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/verification_evidence.py +2375 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/worker_pool.py +160 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/PKG-INFO +309 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/SOURCES.txt +938 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/entry_points.txt +11 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime.egg-info/requires.txt +15 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_advisory_mode.py +301 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_backcompat.py +161 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_backing_homebrew.py +483 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_backing_omnigent.py +772 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_cli_legacy.py +516 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_composition.py +1913 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_golden.py +387 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_integration.py +352 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_live_research.py +145 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_observability.py +391 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_presets.py +152 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_registries.py +154 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_research.py +630 -0
- phase_loop_runtime-0.7.15/tests/test_advisor_board_static_import_862.py +207 -0
- phase_loop_runtime-0.7.15/tests/test_agy_canary_evidence.py +6691 -0
- phase_loop_runtime-0.7.15/tests/test_broker_command_builders.py +73 -0
- phase_loop_runtime-0.7.15/tests/test_broker_evidence_schema_drift_789.py +424 -0
- phase_loop_runtime-0.7.15/tests/test_broker_staged_tree_delivery.py +600 -0
- phase_loop_runtime-0.7.15/tests/test_ci_chronology_scope.py +397 -0
- phase_loop_runtime-0.7.15/tests/test_ci_gate_metrics.py +100 -0
- phase_loop_runtime-0.7.15/tests/test_ci_main_red.py +340 -0
- phase_loop_runtime-0.7.15/tests/test_ci_offload_lock.py +206 -0
- phase_loop_runtime-0.7.15/tests/test_ci_workflow_concurrency.py +35 -0
- phase_loop_runtime-0.7.15/tests/test_cli_train_status_45.py +155 -0
- phase_loop_runtime-0.7.15/tests/test_closeout_classifier.py +470 -0
- phase_loop_runtime-0.7.15/tests/test_closeout_import_cycle_819.py +34 -0
- phase_loop_runtime-0.7.15/tests/test_closeout_validator_hook.py +186 -0
- phase_loop_runtime-0.7.15/tests/test_common_directory_leases_807.py +257 -0
- phase_loop_runtime-0.7.15/tests/test_conftest_isolation.py +52 -0
- phase_loop_runtime-0.7.15/tests/test_console_scripts_are_declared.py +135 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_adapters.py +265 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_broker_admission.py +427 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_broker_credsep.py +1349 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_broker_revocation_race.py +502 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_broker_verbs.py +253 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_event_log.py +249 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_live_enable.py +682 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_reconcile.py +185 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_runtime_imports.py +496 -0
- phase_loop_runtime-0.7.15/tests/test_convergence_status.py +107 -0
- phase_loop_runtime-0.7.15/tests/test_dispatch_lock_reentrancy.py +170 -0
- phase_loop_runtime-0.7.15/tests/test_egress_prefix_crosses_the_broker_thread.py +208 -0
- phase_loop_runtime-0.7.15/tests/test_executor_exited_without_closeout_785.py +229 -0
- phase_loop_runtime-0.7.15/tests/test_fab_activation_promotion.py +1721 -0
- phase_loop_runtime-0.7.15/tests/test_fab_delta_consumer.py +2331 -0
- phase_loop_runtime-0.7.15/tests/test_fab_flag_off_recovery_leak_299.py +217 -0
- phase_loop_runtime-0.7.15/tests/test_fabpub_admission_compat_789.py +775 -0
- phase_loop_runtime-0.7.15/tests/test_fabpub_inventory_worktree_lifecycle_789.py +831 -0
- phase_loop_runtime-0.7.15/tests/test_fabpub_partition_rotation_789d.py +5493 -0
- phase_loop_runtime-0.7.15/tests/test_fabpub_recovery_controls_789.py +320 -0
- phase_loop_runtime-0.7.15/tests/test_fabpub_rotate_partition_cli_789d.py +665 -0
- phase_loop_runtime-0.7.15/tests/test_fabpub_zero_history_bootstrap.py +582 -0
- phase_loop_runtime-0.7.15/tests/test_fabreadmit_authority_digest_v2.py +270 -0
- phase_loop_runtime-0.7.15/tests/test_fabreadmit_broker.py +341 -0
- phase_loop_runtime-0.7.15/tests/test_gate_fail_open_visibility.py +1037 -0
- phase_loop_runtime-0.7.15/tests/test_goal_coverage.py +590 -0
- phase_loop_runtime-0.7.15/tests/test_governed_premerge.py +211 -0
- phase_loop_runtime-0.7.15/tests/test_govlean_panel_policy.py +157 -0
- phase_loop_runtime-0.7.15/tests/test_grokexec.py +502 -0
- phase_loop_runtime-0.7.15/tests/test_harden_evidence_producer.py +4446 -0
- phase_loop_runtime-0.7.15/tests/test_harden_evidence_verifier.py +465 -0
- phase_loop_runtime-0.7.15/tests/test_harden_json_depth_825.py +248 -0
- phase_loop_runtime-0.7.15/tests/test_legible_evidence.py +2052 -0
- phase_loop_runtime-0.7.15/tests/test_legible_review_repairs.py +5731 -0
- phase_loop_runtime-0.7.15/tests/test_legible_roadmap_contract.py +2664 -0
- phase_loop_runtime-0.7.15/tests/test_model_class_policy.py +210 -0
- phase_loop_runtime-0.7.15/tests/test_model_id_source_guard.py +145 -0
- phase_loop_runtime-0.7.15/tests/test_model_tier_taxonomy.py +430 -0
- phase_loop_runtime-0.7.15/tests/test_native_claude_seat_fill.py +780 -0
- phase_loop_runtime-0.7.15/tests/test_native_claude_seat_fill_green.py +201 -0
- phase_loop_runtime-0.7.15/tests/test_packaged_vector_manifest_pin.py +66 -0
- phase_loop_runtime-0.7.15/tests/test_panel_context_refs_114.py +380 -0
- phase_loop_runtime-0.7.15/tests/test_panel_invoker.py +179 -0
- phase_loop_runtime-0.7.15/tests/test_panel_invoker_spawn.py +609 -0
- phase_loop_runtime-0.7.15/tests/test_panel_invoker_timeout_argv.py +2381 -0
- phase_loop_runtime-0.7.15/tests/test_panel_native_fill_183.py +405 -0
- phase_loop_runtime-0.7.15/tests/test_panel_per_leg_model_66.py +92 -0
- phase_loop_runtime-0.7.15/tests/test_panel_streaming_verdicts.py +214 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_concurrent_phase_dispatch.py +107 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_execution_policy.py +523 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_lane_scheduler.py +264 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_launcher.py +1977 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_models.py +1021 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_policy.py +93 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_runner.py +3781 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_schema_flow.py +92 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_v45_sched.py +583 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_v45_schedharden.py +801 -0
- phase_loop_runtime-0.7.15/tests/test_phase_loop_work_unit_runner.py +300 -0
- phase_loop_runtime-0.7.15/tests/test_phase_state_disagreement_312.py +2088 -0
- phase_loop_runtime-0.7.15/tests/test_phase_worktree_executor.py +826 -0
- phase_loop_runtime-0.7.15/tests/test_pr_readback_789.py +351 -0
- phase_loop_runtime-0.7.15/tests/test_president_wiring.py +689 -0
- phase_loop_runtime-0.7.15/tests/test_proofgate_cleanup.py +381 -0
- phase_loop_runtime-0.7.15/tests/test_public_installer.py +232 -0
- phase_loop_runtime-0.7.15/tests/test_publishing.py +705 -0
- phase_loop_runtime-0.7.15/tests/test_reconcile_portability_85c.py +1131 -0
- phase_loop_runtime-0.7.15/tests/test_review_leg_sandbox.py +511 -0
- phase_loop_runtime-0.7.15/tests/test_review_policy_govlean_repairs.py +161 -0
- phase_loop_runtime-0.7.15/tests/test_review_stage_binding.py +183 -0
- phase_loop_runtime-0.7.15/tests/test_review_stage_board_findings.py +337 -0
- phase_loop_runtime-0.7.15/tests/test_review_staged_tree_authorization.py +281 -0
- phase_loop_runtime-0.7.15/tests/test_roadmap_ownership.py +2650 -0
- phase_loop_runtime-0.7.15/tests/test_routing_invariants.py +140 -0
- phase_loop_runtime-0.7.15/tests/test_runtime_adapter_output_720.py +487 -0
- phase_loop_runtime-0.7.15/tests/test_runtime_event_log_hardening_720.py +268 -0
- phase_loop_runtime-0.7.15/tests/test_runtime_procfs_identity_870.py +114 -0
- phase_loop_runtime-0.7.15/tests/test_sandbox_clone.py +521 -0
- phase_loop_runtime-0.7.15/tests/test_sandbox_egress.py +717 -0
- phase_loop_runtime-0.7.15/tests/test_sandbox_policy.py +392 -0
- phase_loop_runtime-0.7.15/tests/test_sandbox_preamble.py +80 -0
- phase_loop_runtime-0.7.15/tests/test_sandbox_retention.py +301 -0
- phase_loop_runtime-0.7.15/tests/test_skill_liveness_contract.py +276 -0
- phase_loop_runtime-0.7.15/tests/test_skills_canon_parity.py +424 -0
- phase_loop_runtime-0.7.15/tests/test_task_message_broker.py +377 -0
- phase_loop_runtime-0.7.15/tests/test_the_real_launch_carries_the_prefix.py +285 -0
- phase_loop_runtime-0.7.15/tests/test_train_authority_import_811.py +39 -0
- phase_loop_runtime-0.7.15/tests/test_train_invariants.py +3545 -0
- phase_loop_runtime-0.7.15/tests/test_train_prebuilt.py +1340 -0
- phase_loop_runtime-0.7.15/tests/test_train_review_authorization.py +742 -0
- phase_loop_runtime-0.7.15/tests/test_train_runner.py +3610 -0
- phase_loop_runtime-0.7.15/tests/test_v34_parallel_dispatch_soak.py +207 -0
- phase_loop_runtime-0.7.15/tests/test_validate_plan_doc_fail_closed.py +126 -0
- phase_loop_runtime-0.7.15/tests/test_verification_dotdot_execution_428.py +306 -0
- phase_loop_runtime-0.7.15/tests/test_verification_interpreter_guard_221.py +409 -0
- phase_loop_runtime-0.7.15/tests/test_verification_venv_identity_428.py +400 -0
- phase_loop_runtime-0.7.15/tests/test_workerpool_failure_isolation.py +159 -0
- phase_loop_runtime-0.7.15/tests/test_workerpool_parallel.py +73 -0
- phase_loop_runtime-0.7.15/tests/test_workerpool_worktree_alloc.py +114 -0
- phase_loop_runtime-0.7.14/PKG-INFO +0 -187
- phase_loop_runtime-0.7.14/README.md +0 -158
- phase_loop_runtime-0.7.14/pyproject.toml +0 -147
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/__init__.py +0 -21
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/CONTRACTS.md +0 -405
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/__init__.py +0 -363
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/backing.py +0 -188
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/composition.py +0 -235
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/config.py +0 -273
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +0 -59
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/fixtures.py +0 -102
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/harness_mapping.py +0 -219
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/matrix.py +0 -146
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/presets.py +0 -188
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/registries.py +0 -323
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/resolver.py +0 -248
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/schema.py +0 -355
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/standin.py +0 -166
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/advisor_board/validation.py +0 -159
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/agy_canary_evidence.py +0 -8419
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/build_bundle.py +0 -305
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/capability_registry.py +0 -1026
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/cli.py +0 -4406
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/closeout_classifier.py +0 -120
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/closeout_validation.py +0 -144
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/closeout_validators.py +0 -338
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/conformance/outside_agent_vectors.py +0 -221
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/__init__.py +0 -110
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/adapters/base.py +0 -51
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/adapters/claude.py +0 -5
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/adapters/codex.py +0 -5
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/adapters/outside_agent.py +0 -9
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/admission.py +0 -206
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/credsep.py +0 -384
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/evidence.py +0 -233
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/live.py +0 -2742
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/broker/verbs.py +0 -574
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/contracts.py +0 -235
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/event_log.py +0 -140
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/fencing.py +0 -182
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/provider_contracts.py +0 -151
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/reconcile.py +0 -92
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/convergence/status.py +0 -33
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/events.py +0 -167
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/fab_delta.py +0 -1443
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/governed_premerge.py +0 -473
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/governed_review.py +0 -281
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/lane_scheduler.py +0 -317
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/launcher.py +0 -3471
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/legible_evidence.py +0 -2232
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/models.py +0 -3053
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/panel_invoker.py +0 -5546
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/phase_worktree_executor.py +0 -433
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/plan_ir.py +0 -526
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/plan_manifest.py +0 -2711
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/profiles.py +0 -934
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/prompts.py +0 -365
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/publishing.py +0 -1086
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/reconcile.py +0 -1766
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/render.py +0 -483
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/roadmap_assumptions.py +0 -792
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/runner.py +0 -12684
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/runtime_paths.py +0 -283
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +0 -82
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +0 -82
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +0 -165
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +0 -791
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +0 -673
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +0 -115
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +0 -481
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +0 -352
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +0 -808
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +0 -1322
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +0 -75
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +0 -243
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +0 -249
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +0 -74
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +0 -85
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +0 -85
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +0 -252
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +0 -673
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +0 -1322
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +0 -75
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +0 -77
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +0 -77
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +0 -219
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +0 -673
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +0 -1322
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +0 -75
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +0 -77
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +0 -77
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +0 -673
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +0 -1322
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +0 -75
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/train_runner.py +0 -3471
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/verification_evidence.py +0 -2268
- phase_loop_runtime-0.7.14/src/phase_loop_runtime/worker_pool.py +0 -123
- phase_loop_runtime-0.7.14/src/phase_loop_runtime.egg-info/PKG-INFO +0 -187
- phase_loop_runtime-0.7.14/src/phase_loop_runtime.egg-info/SOURCES.txt +0 -879
- phase_loop_runtime-0.7.14/src/phase_loop_runtime.egg-info/entry_points.txt +0 -9
- phase_loop_runtime-0.7.14/src/phase_loop_runtime.egg-info/requires.txt +0 -14
- phase_loop_runtime-0.7.14/tests/test_advisor_board_advisory_mode.py +0 -176
- phase_loop_runtime-0.7.14/tests/test_advisor_board_backcompat.py +0 -161
- phase_loop_runtime-0.7.14/tests/test_advisor_board_backing_homebrew.py +0 -437
- phase_loop_runtime-0.7.14/tests/test_advisor_board_backing_omnigent.py +0 -535
- phase_loop_runtime-0.7.14/tests/test_advisor_board_cli_legacy.py +0 -179
- phase_loop_runtime-0.7.14/tests/test_advisor_board_composition.py +0 -248
- phase_loop_runtime-0.7.14/tests/test_advisor_board_golden.py +0 -376
- phase_loop_runtime-0.7.14/tests/test_advisor_board_integration.py +0 -315
- phase_loop_runtime-0.7.14/tests/test_advisor_board_live_research.py +0 -145
- phase_loop_runtime-0.7.14/tests/test_advisor_board_observability.py +0 -380
- phase_loop_runtime-0.7.14/tests/test_advisor_board_presets.py +0 -152
- phase_loop_runtime-0.7.14/tests/test_advisor_board_registries.py +0 -140
- phase_loop_runtime-0.7.14/tests/test_advisor_board_research.py +0 -627
- phase_loop_runtime-0.7.14/tests/test_agy_canary_evidence.py +0 -6555
- phase_loop_runtime-0.7.14/tests/test_ci_workflow_concurrency.py +0 -27
- phase_loop_runtime-0.7.14/tests/test_cli_train_status_45.py +0 -100
- phase_loop_runtime-0.7.14/tests/test_closeout_classifier.py +0 -86
- phase_loop_runtime-0.7.14/tests/test_closeout_validator_hook.py +0 -158
- phase_loop_runtime-0.7.14/tests/test_console_scripts_are_declared.py +0 -93
- phase_loop_runtime-0.7.14/tests/test_convergence_adapters.py +0 -10
- phase_loop_runtime-0.7.14/tests/test_convergence_broker_admission.py +0 -8
- phase_loop_runtime-0.7.14/tests/test_convergence_broker_credsep.py +0 -780
- phase_loop_runtime-0.7.14/tests/test_convergence_broker_revocation_race.py +0 -364
- phase_loop_runtime-0.7.14/tests/test_convergence_broker_verbs.py +0 -144
- phase_loop_runtime-0.7.14/tests/test_convergence_event_log.py +0 -43
- phase_loop_runtime-0.7.14/tests/test_convergence_live_enable.py +0 -658
- phase_loop_runtime-0.7.14/tests/test_convergence_reconcile.py +0 -15
- phase_loop_runtime-0.7.14/tests/test_convergence_runtime_imports.py +0 -14
- phase_loop_runtime-0.7.14/tests/test_convergence_status.py +0 -10
- phase_loop_runtime-0.7.14/tests/test_dispatch_lock_reentrancy.py +0 -142
- phase_loop_runtime-0.7.14/tests/test_fab_activation_promotion.py +0 -1466
- phase_loop_runtime-0.7.14/tests/test_fab_delta_consumer.py +0 -937
- phase_loop_runtime-0.7.14/tests/test_fab_flag_off_recovery_leak_299.py +0 -120
- phase_loop_runtime-0.7.14/tests/test_goal_coverage.py +0 -567
- phase_loop_runtime-0.7.14/tests/test_governed_premerge.py +0 -154
- phase_loop_runtime-0.7.14/tests/test_govlean_panel_policy.py +0 -157
- phase_loop_runtime-0.7.14/tests/test_grokexec.py +0 -502
- phase_loop_runtime-0.7.14/tests/test_legible_evidence.py +0 -2044
- phase_loop_runtime-0.7.14/tests/test_legible_review_repairs.py +0 -5726
- phase_loop_runtime-0.7.14/tests/test_legible_roadmap_contract.py +0 -2652
- phase_loop_runtime-0.7.14/tests/test_model_class_policy.py +0 -210
- phase_loop_runtime-0.7.14/tests/test_model_id_source_guard.py +0 -133
- phase_loop_runtime-0.7.14/tests/test_model_tier_taxonomy.py +0 -430
- phase_loop_runtime-0.7.14/tests/test_panel_context_refs_114.py +0 -377
- phase_loop_runtime-0.7.14/tests/test_panel_invoker.py +0 -176
- phase_loop_runtime-0.7.14/tests/test_panel_invoker_spawn.py +0 -608
- phase_loop_runtime-0.7.14/tests/test_panel_invoker_timeout_argv.py +0 -2349
- phase_loop_runtime-0.7.14/tests/test_panel_native_fill_183.py +0 -388
- phase_loop_runtime-0.7.14/tests/test_panel_per_leg_model_66.py +0 -92
- phase_loop_runtime-0.7.14/tests/test_panel_streaming_verdicts.py +0 -213
- phase_loop_runtime-0.7.14/tests/test_phase_loop_concurrent_phase_dispatch.py +0 -47
- phase_loop_runtime-0.7.14/tests/test_phase_loop_execution_policy.py +0 -283
- phase_loop_runtime-0.7.14/tests/test_phase_loop_lane_scheduler.py +0 -197
- phase_loop_runtime-0.7.14/tests/test_phase_loop_launcher.py +0 -1753
- phase_loop_runtime-0.7.14/tests/test_phase_loop_models.py +0 -1012
- phase_loop_runtime-0.7.14/tests/test_phase_loop_policy.py +0 -93
- phase_loop_runtime-0.7.14/tests/test_phase_loop_runner.py +0 -3718
- phase_loop_runtime-0.7.14/tests/test_phase_loop_schema_flow.py +0 -89
- phase_loop_runtime-0.7.14/tests/test_phase_loop_v45_sched.py +0 -461
- phase_loop_runtime-0.7.14/tests/test_phase_loop_v45_schedharden.py +0 -316
- phase_loop_runtime-0.7.14/tests/test_phase_loop_work_unit_runner.py +0 -260
- phase_loop_runtime-0.7.14/tests/test_phase_state_disagreement_312.py +0 -227
- phase_loop_runtime-0.7.14/tests/test_phase_worktree_executor.py +0 -361
- phase_loop_runtime-0.7.14/tests/test_publishing.py +0 -401
- phase_loop_runtime-0.7.14/tests/test_reconcile_portability_85c.py +0 -1112
- phase_loop_runtime-0.7.14/tests/test_review_leg_sandbox.py +0 -495
- phase_loop_runtime-0.7.14/tests/test_review_policy_govlean_repairs.py +0 -154
- phase_loop_runtime-0.7.14/tests/test_routing_invariants.py +0 -140
- phase_loop_runtime-0.7.14/tests/test_skills_canon_parity.py +0 -424
- phase_loop_runtime-0.7.14/tests/test_task_message_broker.py +0 -329
- phase_loop_runtime-0.7.14/tests/test_train_invariants.py +0 -1500
- phase_loop_runtime-0.7.14/tests/test_train_prebuilt.py +0 -722
- phase_loop_runtime-0.7.14/tests/test_train_runner.py +0 -3453
- phase_loop_runtime-0.7.14/tests/test_v34_parallel_dispatch_soak.py +0 -159
- phase_loop_runtime-0.7.14/tests/test_verification_interpreter_guard_221.py +0 -362
- phase_loop_runtime-0.7.14/tests/test_workerpool_failure_isolation.py +0 -86
- phase_loop_runtime-0.7.14/tests/test_workerpool_parallel.py +0 -47
- phase_loop_runtime-0.7.14/tests/test_workerpool_worktree_alloc.py +0 -38
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/MANIFEST.in +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/protocol/protocol.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/setup.cfg +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/protocol.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_proc_cpu.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-a.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-b.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-c.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/claimed-results.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/metrics.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/bundle-check.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/operator-note.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/events-sample.jsonl +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/console-summary.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/screenshot-standin.ppm +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/adoption_bundle.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/backing_omnigent.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/events.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/observability.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/advisor_board/research.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/agent_runtime_provider.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_modular.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_c4_document.baml +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/emit_phase_closeout.baml +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/baml_src/verification_evidence.baml +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/broker.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/classifier.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/claude_agent_view.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/claude_channel_sidecar.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/closeout.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/closeout_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/__init__.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/VENDOR.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/consiliency_spec/outside_agent_router.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-route-verdict.schema.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-submission.schema.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-empty-evidence-refs.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-git-object-id-length.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-missing-digest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-path-traversal.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-raw-payload.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-source-bundle-mismatch.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unknown-producer-identity-posture.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unsupported-verdict.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/manifest.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-ambiguity-report.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-implementation-submission.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-work-request.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/certificate_tier.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/git_grounded_projection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_advisory.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_conform_evidence.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_core.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_imports.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_pin.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_provenance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_real.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_real_output.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_redaction.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/conformance/outside_agent_schema.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_gates.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_ingest.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_layout.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/consiliency_scaffold.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/adapters/__init__.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/broker/__init__.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/dispatch.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/convergence/refresh.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/cross_repo_channel.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/declared_identity.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/default_executor_resolver.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/deploy/phase-loop-task-message-broker.service +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/discovery.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/dispatch_lock.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/doc_delta_validator.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/docs_audit.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/docs_freshness.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/docs_surfaces.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/doctor.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/dotfiles_profile_plugin.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/entry_doc_check.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/events_migration.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/evidence_audit_config.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/executor_availability.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_canonical.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_gate.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_producer.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fab_provenance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fabpub_capability.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fabpub_tdd_chronology.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_map.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_metrics.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/fleet_metrics_export.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/gate_posture.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_discipline.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_ops.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/git_topology.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/goal_coverage.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/governed_bundle.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/handoff.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/handoff_path.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/harness_env_signatures.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/injection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/install_status.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/lease_store.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/maintenance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/migrate_handoffs.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/observability.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/phase_loop_drift_audit.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/__init__.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/branch_ops.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/flag.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/markers.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/merge_policy.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/ratification.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/pipeline_adapter/sibling_matcher.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/plan_pin_lint.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/planner_validation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/producer_manifest.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/proof_stages.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/provenance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/py.typed +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/ratification_policy.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/redaction.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/reflection_sync.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/release_guard.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/repo_validation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/review_summary.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_authority.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_lint.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_representation_check.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/roadmap_reseal.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_log.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_policy/__init__.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/runtime_projection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/runtime_resources.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schema_export.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.golden.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.schema.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/schemas/phase_loop_closeout.schema.json +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_install.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_inventory.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_paths.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skill_sources_plugin.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state_degradation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/state_ops.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_broker.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_broker_client.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/task_message_resolver.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/tdd_receipts.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/train_ledger.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/train_roadmap.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/verification_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/visual_avatar_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/visual_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime/worktree_index.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime.egg-info/dependency_links.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/src/phase_loop_runtime.egg-info/top_level.txt +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_acceptance_falsifier_contract.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_alias_install.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_concurrency.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_config.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_ingestion.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_matrix.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_resolver.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_board_schema.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_advisor_twin_alias_legacy.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_agent_runtime_provider_cs08.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_autosel.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_branchgov_preflight.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_certificate_tier.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_claude_json_schema_metaschema_291.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_break_glass_cli.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_convergence_fixes.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_exception_vocab.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_gitignored_disposable_186b.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_new_owned_directory_closes_clean.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_closeout_verification_gate.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_codex_effort_max_clamp_49.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_committed_range_diff.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_conformance_golden.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_consiliency_dual_layout.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_consiliency_gates.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_consiliency_ingest.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_consiliency_scaffold.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_contract_floor_guard_378.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_broker_api.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_broker_evidence.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_cli_integration.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_coordination_contracts.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_dispatch.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_event_contracts.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_fencing.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_fixture_contracts.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_invalidation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_provider_contracts.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_refresh.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_seat_lifecycle.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_convergence_train_integration.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_coordinator_wave_loop.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_cr_fixes_pr220.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_delegated_visual_evidence_91.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_discovery_hygiene_legacy.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dispatch_hold_guard.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_cross_roadmap.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_helper.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dispatch_lock_same_roadmap.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_doc_delta_validator.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_docs_audit.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_docs_freshness.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_doctor_bom.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_dotfiles_tree.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_entry_doc_check.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_execgov.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_execreg_launch_registry.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_execute_phase_handoff_mode.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_execution_policy_tiering.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_executor_availability.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_export_schema.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_canonical_b.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_closeout_crash_safety.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_closeout_wiring.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_delta_c.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_gate_d.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_producer.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fab_provenance_a.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fabpub_shared_epoch.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fleet_map.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fleet_metrics.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_fleet_metrics_export.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_gate_a_wheel_isolation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_gate_parity_244_245.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_gate_posture.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_git_discipline.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_git_grounded_projection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_cross_vendor_floor_358.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_disjointness_model_first.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_e2e.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_gate_crfixes.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_planning_gate.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_premerge_live.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_governed_review.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_declared_identity.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_plan_manifest_issue_dispositions.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_plan_pin_lint.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_producer_manifest.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_proof_stages.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_roadmap_reseal.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_skill_policy_parity.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_govlean_tdd_receipts.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_grok_narrow_reject_231.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_hotfix_lane.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_injection_skill_failloud.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_lane_ir_override.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_launcher_liveness.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_launchspec_golden.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_lease_store.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_lease_store_conformance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_ledger_serialization.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_leg_liveness_monitor.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_live_smoke_gate_executes.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_manifest_per_entry_164.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_nonzero_suite_command_fails_closed.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_observability_alerting.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory_cli.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_advisory_fixtures.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_authority_boundary.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_canonical_corpus.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_conform_evidence.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_contract_drift.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_contract_imports.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_contract_pin.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_core_api.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_provenance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_ci.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_cli.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_output.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_real_runtime.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_redaction.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_redaction_separation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_release_surface.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_schema_validation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_outside_agent_vectors.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_advisory_mode_63.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_codex_auth_signature_body_252.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_gemini_no_command_preamble.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_invoker_windows_import.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_leg_auth_preflight_64.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_leg_failure_diagnostic.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_tui_eof_48.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_tui_liveness_188.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_tui_workspace_trust_223.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_panel_verdict_summary.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_parallel_dispatch_backcompat.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_parallel_dispatch_cli.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_adoption_bundle.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_adoption_bundle_cli.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_dependency.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_end_to_end.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_injection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_modular.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_prompt_taxonomy.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_runner_closeout.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_schema_export.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_baml_schema_source.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_branch_divergence_event.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_break_glass_rerun.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_build_bundle.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_classifier.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_agent_view_adapter.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_agent_view_lifecycle.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_hooks.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_mcp.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_security.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_session_launch.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_sidecar.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_channel_smoke_suite.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_claude_route_selection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_cli.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_cli_plugin_load.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_control_only.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_event.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_hardening.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_owned_dirty_fallback.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_schema.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_closeout_validation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_citation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_docs.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_collaborator_rollback.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_def4_writer_namespacing.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dirty_path_classify_phase_owned_tests.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dirty_path_classify_previous_phase_owned.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_discovery.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_docs.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dotfiles_schemas.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dotfiles_sources.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_governed_pipeline.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_instruction_scope_readme.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_portal.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_downstream_regenesis.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_drift_audit.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dry_run_closeout_guard.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_dry_run_then_run.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_events_migration.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_runner.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tier2.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tier3.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_evidence_audit_tuning.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_executor_degradation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_full_phase_mode.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_handoff.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_handoff_migration.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_init.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_injection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_install_status.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_issue_84_explicit_phase.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_lane_harnesses.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_lane_ir.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_lane_ir_fixtures.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_ledger_debug.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_ledger_dedup.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_live_adapters.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_maintenance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_metrics.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_migration_regressions.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_dispatch.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_matrix.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_mixedrun_observability.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_native_flags.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_parallel_plan_safe.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pi_executor.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_boundaries.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_bridge.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_bundle.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_closeout.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_freshness.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_pipeline_mode.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_plan_doc_skip.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_plan_manifest.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_planner_redispatch_when_plan_current.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_planner_validation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_protocol_contract.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_provenance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile_blocker_self_clear.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile_recovery_mode.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reconcile_to_status_planned_recovery.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_reducers.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_repair_precondition_planned_closeout.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_repair_skipped_when_blocker_cleared.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_roadmap_amendments.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_roadmap_validate.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_rotation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runner_closeout_validation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_boundary.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_decouple.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_package_data.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_runtime_projection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_baml_closeout.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_bridge_contract.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_contract.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_execute_contract.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_install.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_skill_planner_contract.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_smoke_blockers.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_smoke_exhaustion.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_smoke_reentry.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_spurious_completion_rejection.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_start_gate_phase_status.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_start_gate_refuses_cross_phase_dirty.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_state.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_status_transition_events_emitted.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_docs.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_governed.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_substrate_soak_portal.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_terminal_summary_mirrors_baml_closeout.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v22_e2e.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v22_principles.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v45_found_contracts.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_v45_reconcile.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_wave_runner.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_work_unit_observability.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_work_unit_state.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_loop_worktrees.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_phase_owned_dirty_relaxation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_create.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_rebase_conflict.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_branch_ops_refuse_default.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_flag.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_markers.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_merge_policy_parse.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_event_payload.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_runner.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_ratification_skipped_standalone.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pipeline_adapter_standalone_regression.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pkg_layout_freeze.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_plan_ir_iter_waves.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_preflight_verification.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_proc_cpu.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_proofgate_attestation_workflow.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_proofgate_isolation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_proofgate_receipts.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_prune_merged_worktrees_script.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_pushflow.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_ratification_policy.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reconcile_manifest_dedup_46.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reconcile_tracked_closeout_recovery_90.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reconcile_verification_log.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reconcile_visual_avatar_evidence_91.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_reflection_sync.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_release_dispatch_operator_approval_145.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_release_pin_autotrack.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_repo_validation.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_review_summary.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_roadmap_authority.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_roadmap_representation_consistency.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_route_log.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_route_policy_conformance.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_runner_visual_evidence_authoritative_91.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_runtime_state_mirror_agreement.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_self_asserted_passed_without_evidence_is_gated.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_sibling_matcher_patterns.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skill_bundle_pinned.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skill_install_body_expansion.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skill_plan_manifest_write.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skill_sources_seam.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skills_bundle_drift.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_skills_src_claude_literal_lint.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_spec_conformance_gate.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_specpkgmin_wheel.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_stale_roadmap_dispatch_guard.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_status_read_only_62.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_suite_interpreter_satisfies_requires_python.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_sweep_fleet_worktrees_script.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_sync_skills_apply_failloud.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_task_message_broker_cli.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_task_message_resolver.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_tdd_chronology.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_train_e2e.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_train_merge.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_train_order_only_deps_47.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_train_roadmap.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_unattended_release.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_docs_lane.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_goal_coverage.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_producer_dependency.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_validate_plan_doc_proofgate.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_verification_evidence.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_verification_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_visual_avatar_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_visual_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.14 → phase_loop_runtime-0.7.15}/tests/test_worktree_index.py +0 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: phase-loop-runtime
|
|
3
|
+
Version: 0.7.15
|
|
4
|
+
Summary: Harness-neutral phase-loop orchestration runtime and CLI
|
|
5
|
+
Author-email: ViperJuice <viperjuice@users.noreply.github.com>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/Consiliency/agent-harness
|
|
8
|
+
Project-URL: Repository, https://github.com/Consiliency/agent-harness
|
|
9
|
+
Project-URL: Issues, https://github.com/Consiliency/agent-harness/issues
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
Requires-Dist: detect-secrets==1.5.0
|
|
19
|
+
Requires-Dist: baml-py<0.223,>=0.222
|
|
20
|
+
Requires-Dist: pydantic<3,>=2
|
|
21
|
+
Requires-Dist: PyYAML<7,>=6
|
|
22
|
+
Requires-Dist: consiliency-contract<0.7,>=0.6.5
|
|
23
|
+
Requires-Dist: jsonschema<5,>=4
|
|
24
|
+
Requires-Dist: packaging>=21
|
|
25
|
+
Requires-Dist: websockets<16,>=12
|
|
26
|
+
Requires-Dist: rfc8785<0.2,>=0.1.4
|
|
27
|
+
Requires-Dist: tomli<3,>=2; python_version < "3.11"
|
|
28
|
+
Provides-Extra: visual
|
|
29
|
+
Requires-Dist: Pillow<13,>=10; extra == "visual"
|
|
30
|
+
|
|
31
|
+
# phase-loop-runtime
|
|
32
|
+
|
|
33
|
+
The harness-neutral **phase-loop** orchestration runtime and CLI. It drives the
|
|
34
|
+
roadmap → plan → execute workflow by dispatching each phase to whatever harness you
|
|
35
|
+
choose (Claude / Codex / Gemini / OpenCode); the runtime itself makes no model calls.
|
|
36
|
+
Part of the public [`agent-harness`](https://github.com/Consiliency/agent-harness)
|
|
37
|
+
monorepo (Apache-2.0).
|
|
38
|
+
|
|
39
|
+
## Install
|
|
40
|
+
|
|
41
|
+
Most users should use the repo's installer (it also installs the workflow skills):
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
git clone https://github.com/Consiliency/agent-harness
|
|
45
|
+
agent-harness/install-agent-harness.sh --harness claude
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
To install just this runtime package directly:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
pip install phase-loop-runtime # latest compatible release
|
|
52
|
+
pip install phase-loop-runtime==0.7.15 # …or pin an exact version
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
To pin a specific tag from source instead, substitute a tag from
|
|
56
|
+
[Releases](https://github.com/Consiliency/agent-harness/releases):
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
uv tool install "git+https://github.com/Consiliency/agent-harness@<TAG>#subdirectory=phase-loop-runtime"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This exposes two console scripts — `phase-loop` and `codex-phase-loop` — both calling
|
|
63
|
+
`phase_loop_runtime.cli:main`. The canonical protocol document ships in the wheel as
|
|
64
|
+
package data and is also installed to `share/phase-loop-runtime/protocol/protocol.md`.
|
|
65
|
+
|
|
66
|
+
## Contributor test environment
|
|
67
|
+
|
|
68
|
+
From the repository root, install the declared test tools and visual extra, then
|
|
69
|
+
run the packaging and visual-evidence tests with the project environment:
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
uv sync --project phase-loop-runtime --group test --extra visual --python 3.14 --locked
|
|
73
|
+
PYTHONPATH=phase-loop-runtime/src:phase-loop-runtime/tests phase-loop-runtime/.venv/bin/python -m pytest -q phase-loop-runtime/tests/test_outside_agent_contract_drift.py phase-loop-runtime/tests/test_visual_avatar_evidence_validator.py
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The test group supplies pytest and package build/install tools, including pip;
|
|
77
|
+
the visual extra supplies Pillow for image decoding. Both are opt-in. The native
|
|
78
|
+
repository-wide interpreter guard includes the dagger subproject's Python 3.14
|
|
79
|
+
floor, which is separate from this runtime package's Python 3.10 minimum and CI's
|
|
80
|
+
interpreter matrix. These commands verify the two selected files; they do not
|
|
81
|
+
establish complete CI equivalence, behavior without Pillow, full-suite acceptance
|
|
82
|
+
or production readiness.
|
|
83
|
+
|
|
84
|
+
## Python verification environments
|
|
85
|
+
|
|
86
|
+
An explicit `automation.python` pin to a virtual environment preserves that
|
|
87
|
+
environment for bare `python`/`python3` commands and Python pip refresh. The
|
|
88
|
+
interpreter still must satisfy the repository's `requires-python` constraints.
|
|
89
|
+
The verification shim uses an exec launcher so interpreter symlinks retain their
|
|
90
|
+
venv identity and installed packages.
|
|
91
|
+
|
|
92
|
+
During guarded discovery, version probes and verification, relative or empty PATH
|
|
93
|
+
entries anchor to the invoking process's working directory. This deliberately
|
|
94
|
+
changes empty-PATH discovery to search that directory. Missing PATH retains the
|
|
95
|
+
C-library discovery default (with Python's default fallback); guarded execution
|
|
96
|
+
uses that same default instead of its previous trailing-empty cwd search. Entry
|
|
97
|
+
order and duplicates remain intact. Leading `PATH=` overrides
|
|
98
|
+
consumed by the verification command parser anchor to the target repository,
|
|
99
|
+
including overrides equal to the inherited value. Shell payloads and external
|
|
100
|
+
`env` arguments are not parsed. Execution without a constraint or pin is unchanged.
|
|
101
|
+
|
|
102
|
+
Discovery and log metadata preserve the lexical interpreter selection. For
|
|
103
|
+
execution, traversable directory components containing `..` are resolved before
|
|
104
|
+
version probes, launchers, pip refresh and guarded child PATH lookup. The final
|
|
105
|
+
Python executable symlink is retained. This preserves the physical virtual
|
|
106
|
+
environment reached through a symlink/`..` path, even when direct Python startup
|
|
107
|
+
would normalize that spelling to another environment. Recorded pip argv uses
|
|
108
|
+
the execution spelling while the log retains the declared selection. Missing,
|
|
109
|
+
looping, non-directory or inaccessible entries retain their original spelling;
|
|
110
|
+
they cannot become new search directories through normalization. Absolute PATH
|
|
111
|
+
entries without `..` keep their exact strings, including repeated separators.
|
|
112
|
+
|
|
113
|
+
Post-aggregate commands reuse the absolute pinned launcher, while inherited PATH
|
|
114
|
+
anchors to the later invoking process's directory and consumed overrides to the
|
|
115
|
+
repository. They do not reconstruct historical PATH or revalidate every name in
|
|
116
|
+
a reused shim. Without an explicit pin, distinct satisfying `python` and `python3`
|
|
117
|
+
aliases keep their environments; metadata and pip prefer `python3`, then `python`.
|
|
118
|
+
Login profiles and explicit overrides can select another environment. Known
|
|
119
|
+
nested-discovery and diagnostic-redaction test failures remain separate work under
|
|
120
|
+
agent-harness#428; this repair does not establish full-suite success or completion
|
|
121
|
+
of agent-harness#841's dependency repair.
|
|
122
|
+
|
|
123
|
+
## Publication source audit
|
|
124
|
+
|
|
125
|
+
Normal FABPUB publication can distinguish an existing Python implementation such
|
|
126
|
+
as `credentials.py` from a credential artifact (Consiliency/agent-harness#893).
|
|
127
|
+
The path must be owned, regular Python source in both the frozen parent and staged
|
|
128
|
+
tree, parse and compile without warnings, and contain a top-level function or class. New files,
|
|
129
|
+
data-only files, symlinks, `.env*` and `.key` names do not receive this exception.
|
|
130
|
+
Other source languages remain subject to the existing filename guard.
|
|
131
|
+
|
|
132
|
+
The complete staged blob is scanned with pinned `detect-secrets` 1.5.0 built-in
|
|
133
|
+
detectors. Repository configuration, inline suppressions, filter exemptions and
|
|
134
|
+
online verification are not consulted. Findings and scanner failures block the
|
|
135
|
+
exception without printing matched data. Parsing/compilation warnings reject the
|
|
136
|
+
candidate rather than rendering source lines. No candidate code is executed.
|
|
137
|
+
This heuristic scan is not proof that
|
|
138
|
+
arbitrary or obfuscated secrets are absent; source review is still required.
|
|
139
|
+
|
|
140
|
+
Metadata-only evidence (parent/tree and blob identifiers, content hash and policy
|
|
141
|
+
version) is retained in the local publication checkpoint and checked again on
|
|
142
|
+
recovery against the frozen Git objects. The existing FABPUB tree binding and
|
|
143
|
+
transaction identity are unchanged. Legacy and prebuilt publication do not gain
|
|
144
|
+
the source exception; there is no caller-controlled path allowlist.
|
|
145
|
+
|
|
146
|
+
## Roadmap validation
|
|
147
|
+
|
|
148
|
+
Lint a phase-plan roadmap spec (required headings, unique aliases, acyclic dependency
|
|
149
|
+
DAG, IF-gate reconciliation, lane-count hints) via the always-installed runtime:
|
|
150
|
+
|
|
151
|
+
```sh
|
|
152
|
+
phase-loop validate-roadmap specs/phase-plans-v1.md
|
|
153
|
+
# module form — only when phase_loop_runtime is on the ACTIVE python's path (a pip
|
|
154
|
+
# install into your env); under `uv tool install` isolation use the console command:
|
|
155
|
+
python3 -m phase_loop_runtime.roadmap_lint specs/phase-plans-v1.md
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Both wrap `phase_loop_runtime.roadmap_lint` (the single source of truth). Exit 0 =
|
|
159
|
+
clean; non-zero prints each issue on stderr.
|
|
160
|
+
|
|
161
|
+
## Attended agy canary evidence
|
|
162
|
+
|
|
163
|
+
The six `phase-loop agy-canary-*` commands are an opt-in, attended evidence
|
|
164
|
+
pipeline for the Gemini/`agy` review seat. They never add an Antigravity allow
|
|
165
|
+
rule or use a permission-bypass flag. `agy-canary-clean-settings` is the sole
|
|
166
|
+
writer for removing the historical `command(pwd)` rule; it requires a direct,
|
|
167
|
+
mode-0700 child of `/tmp`, a quiescent settings tree, and an exclusive maintenance
|
|
168
|
+
lock. The later probe, prepare, verify, and finalize steps fail closed until an
|
|
169
|
+
attended agy 1.1.13 `stream-json` schema probe has selected a complete authority.
|
|
170
|
+
That probe and every capture-enabled Gemini launch use `/usr/bin/bwrap`, a fresh
|
|
171
|
+
`/tmp`, `/run`, and `/proc`, the fixed `/run/phase-loop-review` stage mapping,
|
|
172
|
+
and a reducer-generated minimal HOME. A missing effective namespace, active
|
|
173
|
+
customization source, unsupported stream schema, or absent direct bootstrap
|
|
174
|
+
attestation blocks the canary rather than falling back to the operator HOME.
|
|
175
|
+
|
|
176
|
+
When `PHASE_LOOP_AGY_CANARY_EVIDENCE_DIR` is set, `advisor-board --json` consumes
|
|
177
|
+
that variable before spawning any seat. The complete board JSON must be written
|
|
178
|
+
through `--agy-canary-private-board-name <basename>` into that private directory;
|
|
179
|
+
stdout contains only the redacted ledger binding. Capture requires exactly one
|
|
180
|
+
resolved Gemini seat and retains the two staged review inputs using descriptor
|
|
181
|
+
relative, no-follow writes. A normal board has no new output field or capture work.
|
|
182
|
+
|
|
183
|
+
## Workflow skills bundle
|
|
184
|
+
|
|
185
|
+
The runtime also installs the harness-neutral workflow-skills bundle. The skill
|
|
186
|
+
sources live in the [`phase-loop-skills/`](https://github.com/Consiliency/agent-harness/tree/main/phase-loop-skills)
|
|
187
|
+
directory of the monorepo,
|
|
188
|
+
with unprefixed base directories and optional `_overrides/<harness>/` overlays.
|
|
189
|
+
|
|
190
|
+
```sh
|
|
191
|
+
phase-loop install --harness codex --source <path-to>/phase-loop-skills --copy --dry-run
|
|
192
|
+
phase-loop install --harness codex --source <path-to>/phase-loop-skills --copy --apply
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
These commands install copies and replace existing managed skill directories.
|
|
196
|
+
Back up customizations before applying. See [Team onboarding](https://github.com/Consiliency/agent-harness/blob/main/docs/TEAM-ONBOARDING.md)
|
|
197
|
+
for provider prerequisites, governance choices and the first-run check.
|
|
198
|
+
|
|
199
|
+
Path resolution is provided by `phase_loop_runtime.skill_paths`, which keeps handoffs
|
|
200
|
+
repo-local, preserves harness-specific reflection roots, and documents the default
|
|
201
|
+
install roots for Claude, Codex, Gemini, and OpenCode.
|
|
202
|
+
|
|
203
|
+
## Zero-history FABPUB bootstrap
|
|
204
|
+
|
|
205
|
+
When FABPUB is active on a host that has no compatible legacy run-train broker
|
|
206
|
+
ledger, create its persistent authority with a read-only probe followed by an
|
|
207
|
+
explicit apply:
|
|
208
|
+
|
|
209
|
+
```sh
|
|
210
|
+
phase-loop fabpub-bootstrap --probe \
|
|
211
|
+
--inventory /secure/operator/fabpub-probe.json \
|
|
212
|
+
--worktree /path/to/repo \
|
|
213
|
+
--legacy-root /path/to/declared/ledger/broker \
|
|
214
|
+
--search-root /path/to/workspaces \
|
|
215
|
+
--historical-evidence-root /path/to/standalone/receipt
|
|
216
|
+
|
|
217
|
+
phase-loop fabpub-bootstrap --apply \
|
|
218
|
+
--inventory /secure/operator/fabpub-probe.json \
|
|
219
|
+
--confirm-zero-history
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
The default authority is
|
|
223
|
+
`$XDG_STATE_HOME/phase-loop/fabpub/authority-v1`, falling back to
|
|
224
|
+
`~/.local/state/phase-loop/fabpub/authority-v1`. Override it with
|
|
225
|
+
`PHASE_LOOP_FABPUB_AUTHORITY_ROOT` or `--authority-root` during the probe.
|
|
226
|
+
Receipts created by apply retain that custom authority location for later
|
|
227
|
+
fresh-process validation; keep the environment override configured when
|
|
228
|
+
onboarding repositories that were not named by the original probe.
|
|
229
|
+
Apply is irreversible and refuses changed bytes, symlinks, live allocator
|
|
230
|
+
state, held generation leases, or an authority owned by another bootstrap.
|
|
231
|
+
|
|
232
|
+
Inventory completeness is bounded to the named worktrees, explicit and
|
|
233
|
+
environment-declared legacy roots, historical-evidence roots, and hashed broker
|
|
234
|
+
directories directly beneath `.train-ledger` directories under each
|
|
235
|
+
`--search-root`. The confirmation attests that no compatible allocator exists
|
|
236
|
+
outside that inspected universe.
|
|
237
|
+
Standalone historical receipts are hashed and left in place; they are not
|
|
238
|
+
silently adopted as current allocator authority.
|
|
239
|
+
|
|
240
|
+
## Closeout ownership gate & operator break-glass
|
|
241
|
+
|
|
242
|
+
When a phase verifies green but the executor touched files outside the plan's declared
|
|
243
|
+
owned-files globs, the **graduated closeout gate** classifies the beyond-ownership
|
|
244
|
+
remainder (`closeout_classifier.classify_unowned_path`):
|
|
245
|
+
|
|
246
|
+
- SAFE classes (`docs`, `plans`, `handoffs`, `config_nonsource`) auto-commit as a
|
|
247
|
+
recorded `soft` exception.
|
|
248
|
+
- UNSAFE classes (`source`, `ci`, `secrets`, `lockfile`) block with
|
|
249
|
+
`closeout_scope_violation`.
|
|
250
|
+
|
|
251
|
+
The operator escape is `phase-loop run --phase <P> --closeout-allow-unowned "<reason>"`
|
|
252
|
+
(also valid on `resume`/`dry-run`; reason required and non-empty; `--phase` required,
|
|
253
|
+
bounding the override to a single phase). It folds the `source`/`ci`/`lockfile`
|
|
254
|
+
remainder into the closeout commit as a recorded `break_glass` exception carrying the
|
|
255
|
+
reason. **`secrets` are never break-glassable** — a `.env*`/`*.pem`/`secrets/**` path
|
|
256
|
+
blocks regardless of the reason. See `protocol.md` → "Closeout Exceptions".
|
|
257
|
+
|
|
258
|
+
The closeout verdict is runner-authoritative: when the runner rejects a child's
|
|
259
|
+
closeout, the persisted `terminal-summary.json` reflects the runner's blocking verdict
|
|
260
|
+
(the child's self-reported `complete`/`passed` is not overlaid back), preventing a
|
|
261
|
+
stale "complete" summary from reconcile-skipping the work on the next run.
|
|
262
|
+
|
|
263
|
+
## Conformance library (one library, two roles)
|
|
264
|
+
|
|
265
|
+
`phase_loop_runtime.conformance` is the named, stable, importable surface for the
|
|
266
|
+
deterministic `.consiliency/` conformance evaluator. It is a re-export (not a
|
|
267
|
+
re-implementation) of the same function the actor already runs, so an **external
|
|
268
|
+
CR-fence** — in gp CI, a git-host pre-merge check, anywhere — can import and run
|
|
269
|
+
the identical check:
|
|
270
|
+
|
|
271
|
+
```python
|
|
272
|
+
from phase_loop_runtime.conformance import scan_consiliency_gates
|
|
273
|
+
|
|
274
|
+
verdict = scan_consiliency_gates("/path/to/repo") # {"status": "passed" | "warn" | "blocked" | "skipped", "gates": {...}, ...}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
The surface also exposes the pure cores (`evaluate_git_discipline`,
|
|
278
|
+
`self_heal_partition`, `evaluate_governance_scope`) for consumers that already
|
|
279
|
+
hold the injected facts.
|
|
280
|
+
|
|
281
|
+
**Two roles, one library.** This is meant to be mounted BOTH as the actor-side
|
|
282
|
+
self-check (a pre-PR sanity pass the author runs locally) AND as the
|
|
283
|
+
authoritative CR-fence (the real validator). The actor-side result is **never
|
|
284
|
+
authoritative** — the fence always re-runs the check itself. Because it is the
|
|
285
|
+
same function versioned with the same `consiliency_contract` dependency, the honest
|
|
286
|
+
actor sees exactly the verdict the fence will; a stale or dishonest actor result
|
|
287
|
+
simply does not matter.
|
|
288
|
+
|
|
289
|
+
**Scope.** The surface spans the shape + governance tier and the certificate /
|
|
290
|
+
projection / outside-agent tiers it re-exports (see the module docstring for the
|
|
291
|
+
authoritative tier list). Authority and provenance *verification* remain out of
|
|
292
|
+
scope, delegated downstream.
|
|
293
|
+
|
|
294
|
+
### `consiliency-ingest --check-only`
|
|
295
|
+
|
|
296
|
+
`--check-only` decouples "run the check" from "is this repo adopted". It is
|
|
297
|
+
strictly read-only (never shapes; ignores `--adopt`). It makes the exit code
|
|
298
|
+
verdict-significant so a pre-PR actor is never misled into reading a no-op — or a
|
|
299
|
+
failing verify — as a pass:
|
|
300
|
+
|
|
301
|
+
| Repo state | mode | exit |
|
|
302
|
+
|---|---|---|
|
|
303
|
+
| adopted, verify clean (or `warn`) | `verify` | `0` |
|
|
304
|
+
| adopted, gate scan `blocked` | `verify` | `1` |
|
|
305
|
+
| un-adopted (no `.consiliency/manifest`) | `not-adopted` | `3` |
|
|
306
|
+
| usage error | — | `2` |
|
|
307
|
+
|
|
308
|
+
The plain (non-`--check-only`) path is unchanged — it keeps the silent green
|
|
309
|
+
`skipped` no-op on an un-adopted repo and its existing exit `0`.
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# phase-loop-runtime
|
|
2
|
+
|
|
3
|
+
The harness-neutral **phase-loop** orchestration runtime and CLI. It drives the
|
|
4
|
+
roadmap → plan → execute workflow by dispatching each phase to whatever harness you
|
|
5
|
+
choose (Claude / Codex / Gemini / OpenCode); the runtime itself makes no model calls.
|
|
6
|
+
Part of the public [`agent-harness`](https://github.com/Consiliency/agent-harness)
|
|
7
|
+
monorepo (Apache-2.0).
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
Most users should use the repo's installer (it also installs the workflow skills):
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
git clone https://github.com/Consiliency/agent-harness
|
|
15
|
+
agent-harness/install-agent-harness.sh --harness claude
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
To install just this runtime package directly:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
pip install phase-loop-runtime # latest compatible release
|
|
22
|
+
pip install phase-loop-runtime==0.7.15 # …or pin an exact version
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
To pin a specific tag from source instead, substitute a tag from
|
|
26
|
+
[Releases](https://github.com/Consiliency/agent-harness/releases):
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
uv tool install "git+https://github.com/Consiliency/agent-harness@<TAG>#subdirectory=phase-loop-runtime"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
This exposes two console scripts — `phase-loop` and `codex-phase-loop` — both calling
|
|
33
|
+
`phase_loop_runtime.cli:main`. The canonical protocol document ships in the wheel as
|
|
34
|
+
package data and is also installed to `share/phase-loop-runtime/protocol/protocol.md`.
|
|
35
|
+
|
|
36
|
+
## Contributor test environment
|
|
37
|
+
|
|
38
|
+
From the repository root, install the declared test tools and visual extra, then
|
|
39
|
+
run the packaging and visual-evidence tests with the project environment:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
uv sync --project phase-loop-runtime --group test --extra visual --python 3.14 --locked
|
|
43
|
+
PYTHONPATH=phase-loop-runtime/src:phase-loop-runtime/tests phase-loop-runtime/.venv/bin/python -m pytest -q phase-loop-runtime/tests/test_outside_agent_contract_drift.py phase-loop-runtime/tests/test_visual_avatar_evidence_validator.py
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The test group supplies pytest and package build/install tools, including pip;
|
|
47
|
+
the visual extra supplies Pillow for image decoding. Both are opt-in. The native
|
|
48
|
+
repository-wide interpreter guard includes the dagger subproject's Python 3.14
|
|
49
|
+
floor, which is separate from this runtime package's Python 3.10 minimum and CI's
|
|
50
|
+
interpreter matrix. These commands verify the two selected files; they do not
|
|
51
|
+
establish complete CI equivalence, behavior without Pillow, full-suite acceptance
|
|
52
|
+
or production readiness.
|
|
53
|
+
|
|
54
|
+
## Python verification environments
|
|
55
|
+
|
|
56
|
+
An explicit `automation.python` pin to a virtual environment preserves that
|
|
57
|
+
environment for bare `python`/`python3` commands and Python pip refresh. The
|
|
58
|
+
interpreter still must satisfy the repository's `requires-python` constraints.
|
|
59
|
+
The verification shim uses an exec launcher so interpreter symlinks retain their
|
|
60
|
+
venv identity and installed packages.
|
|
61
|
+
|
|
62
|
+
During guarded discovery, version probes and verification, relative or empty PATH
|
|
63
|
+
entries anchor to the invoking process's working directory. This deliberately
|
|
64
|
+
changes empty-PATH discovery to search that directory. Missing PATH retains the
|
|
65
|
+
C-library discovery default (with Python's default fallback); guarded execution
|
|
66
|
+
uses that same default instead of its previous trailing-empty cwd search. Entry
|
|
67
|
+
order and duplicates remain intact. Leading `PATH=` overrides
|
|
68
|
+
consumed by the verification command parser anchor to the target repository,
|
|
69
|
+
including overrides equal to the inherited value. Shell payloads and external
|
|
70
|
+
`env` arguments are not parsed. Execution without a constraint or pin is unchanged.
|
|
71
|
+
|
|
72
|
+
Discovery and log metadata preserve the lexical interpreter selection. For
|
|
73
|
+
execution, traversable directory components containing `..` are resolved before
|
|
74
|
+
version probes, launchers, pip refresh and guarded child PATH lookup. The final
|
|
75
|
+
Python executable symlink is retained. This preserves the physical virtual
|
|
76
|
+
environment reached through a symlink/`..` path, even when direct Python startup
|
|
77
|
+
would normalize that spelling to another environment. Recorded pip argv uses
|
|
78
|
+
the execution spelling while the log retains the declared selection. Missing,
|
|
79
|
+
looping, non-directory or inaccessible entries retain their original spelling;
|
|
80
|
+
they cannot become new search directories through normalization. Absolute PATH
|
|
81
|
+
entries without `..` keep their exact strings, including repeated separators.
|
|
82
|
+
|
|
83
|
+
Post-aggregate commands reuse the absolute pinned launcher, while inherited PATH
|
|
84
|
+
anchors to the later invoking process's directory and consumed overrides to the
|
|
85
|
+
repository. They do not reconstruct historical PATH or revalidate every name in
|
|
86
|
+
a reused shim. Without an explicit pin, distinct satisfying `python` and `python3`
|
|
87
|
+
aliases keep their environments; metadata and pip prefer `python3`, then `python`.
|
|
88
|
+
Login profiles and explicit overrides can select another environment. Known
|
|
89
|
+
nested-discovery and diagnostic-redaction test failures remain separate work under
|
|
90
|
+
agent-harness#428; this repair does not establish full-suite success or completion
|
|
91
|
+
of agent-harness#841's dependency repair.
|
|
92
|
+
|
|
93
|
+
## Publication source audit
|
|
94
|
+
|
|
95
|
+
Normal FABPUB publication can distinguish an existing Python implementation such
|
|
96
|
+
as `credentials.py` from a credential artifact (Consiliency/agent-harness#893).
|
|
97
|
+
The path must be owned, regular Python source in both the frozen parent and staged
|
|
98
|
+
tree, parse and compile without warnings, and contain a top-level function or class. New files,
|
|
99
|
+
data-only files, symlinks, `.env*` and `.key` names do not receive this exception.
|
|
100
|
+
Other source languages remain subject to the existing filename guard.
|
|
101
|
+
|
|
102
|
+
The complete staged blob is scanned with pinned `detect-secrets` 1.5.0 built-in
|
|
103
|
+
detectors. Repository configuration, inline suppressions, filter exemptions and
|
|
104
|
+
online verification are not consulted. Findings and scanner failures block the
|
|
105
|
+
exception without printing matched data. Parsing/compilation warnings reject the
|
|
106
|
+
candidate rather than rendering source lines. No candidate code is executed.
|
|
107
|
+
This heuristic scan is not proof that
|
|
108
|
+
arbitrary or obfuscated secrets are absent; source review is still required.
|
|
109
|
+
|
|
110
|
+
Metadata-only evidence (parent/tree and blob identifiers, content hash and policy
|
|
111
|
+
version) is retained in the local publication checkpoint and checked again on
|
|
112
|
+
recovery against the frozen Git objects. The existing FABPUB tree binding and
|
|
113
|
+
transaction identity are unchanged. Legacy and prebuilt publication do not gain
|
|
114
|
+
the source exception; there is no caller-controlled path allowlist.
|
|
115
|
+
|
|
116
|
+
## Roadmap validation
|
|
117
|
+
|
|
118
|
+
Lint a phase-plan roadmap spec (required headings, unique aliases, acyclic dependency
|
|
119
|
+
DAG, IF-gate reconciliation, lane-count hints) via the always-installed runtime:
|
|
120
|
+
|
|
121
|
+
```sh
|
|
122
|
+
phase-loop validate-roadmap specs/phase-plans-v1.md
|
|
123
|
+
# module form — only when phase_loop_runtime is on the ACTIVE python's path (a pip
|
|
124
|
+
# install into your env); under `uv tool install` isolation use the console command:
|
|
125
|
+
python3 -m phase_loop_runtime.roadmap_lint specs/phase-plans-v1.md
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Both wrap `phase_loop_runtime.roadmap_lint` (the single source of truth). Exit 0 =
|
|
129
|
+
clean; non-zero prints each issue on stderr.
|
|
130
|
+
|
|
131
|
+
## Attended agy canary evidence
|
|
132
|
+
|
|
133
|
+
The six `phase-loop agy-canary-*` commands are an opt-in, attended evidence
|
|
134
|
+
pipeline for the Gemini/`agy` review seat. They never add an Antigravity allow
|
|
135
|
+
rule or use a permission-bypass flag. `agy-canary-clean-settings` is the sole
|
|
136
|
+
writer for removing the historical `command(pwd)` rule; it requires a direct,
|
|
137
|
+
mode-0700 child of `/tmp`, a quiescent settings tree, and an exclusive maintenance
|
|
138
|
+
lock. The later probe, prepare, verify, and finalize steps fail closed until an
|
|
139
|
+
attended agy 1.1.13 `stream-json` schema probe has selected a complete authority.
|
|
140
|
+
That probe and every capture-enabled Gemini launch use `/usr/bin/bwrap`, a fresh
|
|
141
|
+
`/tmp`, `/run`, and `/proc`, the fixed `/run/phase-loop-review` stage mapping,
|
|
142
|
+
and a reducer-generated minimal HOME. A missing effective namespace, active
|
|
143
|
+
customization source, unsupported stream schema, or absent direct bootstrap
|
|
144
|
+
attestation blocks the canary rather than falling back to the operator HOME.
|
|
145
|
+
|
|
146
|
+
When `PHASE_LOOP_AGY_CANARY_EVIDENCE_DIR` is set, `advisor-board --json` consumes
|
|
147
|
+
that variable before spawning any seat. The complete board JSON must be written
|
|
148
|
+
through `--agy-canary-private-board-name <basename>` into that private directory;
|
|
149
|
+
stdout contains only the redacted ledger binding. Capture requires exactly one
|
|
150
|
+
resolved Gemini seat and retains the two staged review inputs using descriptor
|
|
151
|
+
relative, no-follow writes. A normal board has no new output field or capture work.
|
|
152
|
+
|
|
153
|
+
## Workflow skills bundle
|
|
154
|
+
|
|
155
|
+
The runtime also installs the harness-neutral workflow-skills bundle. The skill
|
|
156
|
+
sources live in the [`phase-loop-skills/`](https://github.com/Consiliency/agent-harness/tree/main/phase-loop-skills)
|
|
157
|
+
directory of the monorepo,
|
|
158
|
+
with unprefixed base directories and optional `_overrides/<harness>/` overlays.
|
|
159
|
+
|
|
160
|
+
```sh
|
|
161
|
+
phase-loop install --harness codex --source <path-to>/phase-loop-skills --copy --dry-run
|
|
162
|
+
phase-loop install --harness codex --source <path-to>/phase-loop-skills --copy --apply
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
These commands install copies and replace existing managed skill directories.
|
|
166
|
+
Back up customizations before applying. See [Team onboarding](https://github.com/Consiliency/agent-harness/blob/main/docs/TEAM-ONBOARDING.md)
|
|
167
|
+
for provider prerequisites, governance choices and the first-run check.
|
|
168
|
+
|
|
169
|
+
Path resolution is provided by `phase_loop_runtime.skill_paths`, which keeps handoffs
|
|
170
|
+
repo-local, preserves harness-specific reflection roots, and documents the default
|
|
171
|
+
install roots for Claude, Codex, Gemini, and OpenCode.
|
|
172
|
+
|
|
173
|
+
## Zero-history FABPUB bootstrap
|
|
174
|
+
|
|
175
|
+
When FABPUB is active on a host that has no compatible legacy run-train broker
|
|
176
|
+
ledger, create its persistent authority with a read-only probe followed by an
|
|
177
|
+
explicit apply:
|
|
178
|
+
|
|
179
|
+
```sh
|
|
180
|
+
phase-loop fabpub-bootstrap --probe \
|
|
181
|
+
--inventory /secure/operator/fabpub-probe.json \
|
|
182
|
+
--worktree /path/to/repo \
|
|
183
|
+
--legacy-root /path/to/declared/ledger/broker \
|
|
184
|
+
--search-root /path/to/workspaces \
|
|
185
|
+
--historical-evidence-root /path/to/standalone/receipt
|
|
186
|
+
|
|
187
|
+
phase-loop fabpub-bootstrap --apply \
|
|
188
|
+
--inventory /secure/operator/fabpub-probe.json \
|
|
189
|
+
--confirm-zero-history
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The default authority is
|
|
193
|
+
`$XDG_STATE_HOME/phase-loop/fabpub/authority-v1`, falling back to
|
|
194
|
+
`~/.local/state/phase-loop/fabpub/authority-v1`. Override it with
|
|
195
|
+
`PHASE_LOOP_FABPUB_AUTHORITY_ROOT` or `--authority-root` during the probe.
|
|
196
|
+
Receipts created by apply retain that custom authority location for later
|
|
197
|
+
fresh-process validation; keep the environment override configured when
|
|
198
|
+
onboarding repositories that were not named by the original probe.
|
|
199
|
+
Apply is irreversible and refuses changed bytes, symlinks, live allocator
|
|
200
|
+
state, held generation leases, or an authority owned by another bootstrap.
|
|
201
|
+
|
|
202
|
+
Inventory completeness is bounded to the named worktrees, explicit and
|
|
203
|
+
environment-declared legacy roots, historical-evidence roots, and hashed broker
|
|
204
|
+
directories directly beneath `.train-ledger` directories under each
|
|
205
|
+
`--search-root`. The confirmation attests that no compatible allocator exists
|
|
206
|
+
outside that inspected universe.
|
|
207
|
+
Standalone historical receipts are hashed and left in place; they are not
|
|
208
|
+
silently adopted as current allocator authority.
|
|
209
|
+
|
|
210
|
+
## Closeout ownership gate & operator break-glass
|
|
211
|
+
|
|
212
|
+
When a phase verifies green but the executor touched files outside the plan's declared
|
|
213
|
+
owned-files globs, the **graduated closeout gate** classifies the beyond-ownership
|
|
214
|
+
remainder (`closeout_classifier.classify_unowned_path`):
|
|
215
|
+
|
|
216
|
+
- SAFE classes (`docs`, `plans`, `handoffs`, `config_nonsource`) auto-commit as a
|
|
217
|
+
recorded `soft` exception.
|
|
218
|
+
- UNSAFE classes (`source`, `ci`, `secrets`, `lockfile`) block with
|
|
219
|
+
`closeout_scope_violation`.
|
|
220
|
+
|
|
221
|
+
The operator escape is `phase-loop run --phase <P> --closeout-allow-unowned "<reason>"`
|
|
222
|
+
(also valid on `resume`/`dry-run`; reason required and non-empty; `--phase` required,
|
|
223
|
+
bounding the override to a single phase). It folds the `source`/`ci`/`lockfile`
|
|
224
|
+
remainder into the closeout commit as a recorded `break_glass` exception carrying the
|
|
225
|
+
reason. **`secrets` are never break-glassable** — a `.env*`/`*.pem`/`secrets/**` path
|
|
226
|
+
blocks regardless of the reason. See `protocol.md` → "Closeout Exceptions".
|
|
227
|
+
|
|
228
|
+
The closeout verdict is runner-authoritative: when the runner rejects a child's
|
|
229
|
+
closeout, the persisted `terminal-summary.json` reflects the runner's blocking verdict
|
|
230
|
+
(the child's self-reported `complete`/`passed` is not overlaid back), preventing a
|
|
231
|
+
stale "complete" summary from reconcile-skipping the work on the next run.
|
|
232
|
+
|
|
233
|
+
## Conformance library (one library, two roles)
|
|
234
|
+
|
|
235
|
+
`phase_loop_runtime.conformance` is the named, stable, importable surface for the
|
|
236
|
+
deterministic `.consiliency/` conformance evaluator. It is a re-export (not a
|
|
237
|
+
re-implementation) of the same function the actor already runs, so an **external
|
|
238
|
+
CR-fence** — in gp CI, a git-host pre-merge check, anywhere — can import and run
|
|
239
|
+
the identical check:
|
|
240
|
+
|
|
241
|
+
```python
|
|
242
|
+
from phase_loop_runtime.conformance import scan_consiliency_gates
|
|
243
|
+
|
|
244
|
+
verdict = scan_consiliency_gates("/path/to/repo") # {"status": "passed" | "warn" | "blocked" | "skipped", "gates": {...}, ...}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
The surface also exposes the pure cores (`evaluate_git_discipline`,
|
|
248
|
+
`self_heal_partition`, `evaluate_governance_scope`) for consumers that already
|
|
249
|
+
hold the injected facts.
|
|
250
|
+
|
|
251
|
+
**Two roles, one library.** This is meant to be mounted BOTH as the actor-side
|
|
252
|
+
self-check (a pre-PR sanity pass the author runs locally) AND as the
|
|
253
|
+
authoritative CR-fence (the real validator). The actor-side result is **never
|
|
254
|
+
authoritative** — the fence always re-runs the check itself. Because it is the
|
|
255
|
+
same function versioned with the same `consiliency_contract` dependency, the honest
|
|
256
|
+
actor sees exactly the verdict the fence will; a stale or dishonest actor result
|
|
257
|
+
simply does not matter.
|
|
258
|
+
|
|
259
|
+
**Scope.** The surface spans the shape + governance tier and the certificate /
|
|
260
|
+
projection / outside-agent tiers it re-exports (see the module docstring for the
|
|
261
|
+
authoritative tier list). Authority and provenance *verification* remain out of
|
|
262
|
+
scope, delegated downstream.
|
|
263
|
+
|
|
264
|
+
### `consiliency-ingest --check-only`
|
|
265
|
+
|
|
266
|
+
`--check-only` decouples "run the check" from "is this repo adopted". It is
|
|
267
|
+
strictly read-only (never shapes; ignores `--adopt`). It makes the exit code
|
|
268
|
+
verdict-significant so a pre-PR actor is never misled into reading a no-op — or a
|
|
269
|
+
failing verify — as a pass:
|
|
270
|
+
|
|
271
|
+
| Repo state | mode | exit |
|
|
272
|
+
|---|---|---|
|
|
273
|
+
| adopted, verify clean (or `warn`) | `verify` | `0` |
|
|
274
|
+
| adopted, gate scan `blocked` | `verify` | `1` |
|
|
275
|
+
| un-adopted (no `.consiliency/manifest`) | `not-adopted` | `3` |
|
|
276
|
+
| usage error | — | `2` |
|
|
277
|
+
|
|
278
|
+
The plain (non-`--check-only`) path is unchanged — it keeps the silent green
|
|
279
|
+
`skipped` no-op on an un-adopted repo and its existing exit `0`.
|