phase-loop-runtime 0.7.24__tar.gz → 0.7.25__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.24/src/phase_loop_runtime.egg-info → phase_loop_runtime-0.7.25}/PKG-INFO +2 -2
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/README.md +1 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/pyproject.toml +1 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/__init__.py +1 -1
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/_proc_cpu.py +57 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/CONTRACTS.md +38 -5
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/backing.py +21 -16
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/composition.py +5 -5
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/config.py +18 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +2 -2
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/fixtures.py +12 -12
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/presets.py +21 -21
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/agent_view_cleanup.py +97 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/agy_canary_evidence.py +85 -5
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/agy_integrity.py +70 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/claude_agent_view.py +4 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/cli.py +19 -14
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/adapters/base.py +31 -8
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/broker/live.py +98 -22
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/broker/verbs.py +172 -8
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/executor_availability.py +4 -3
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/falsifier.py +1 -4
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/gemini_heartbeat.py +6 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/governed_bundle.py +4 -5
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/launcher.py +113 -29
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/lease_supervisor.py +11 -4
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/legible_evidence.py +1 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/panel_invoker.py +1449 -499
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/panel_reply.py +225 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/president_adapter.py +2 -2
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/publishing.py +128 -9
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/review_stage.py +127 -29
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/roadmap_assumptions.py +2 -2
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/runner.py +5 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/sandbox_egress.py +70 -26
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/seat_credentials.py +8 -2
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/seat_jail.py +69 -2
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/seat_jail_apparmor.py +146 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/seat_jail_autoqualify.py +12 -0
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/seat_keyring_exec.py +137 -0
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/seat_seccomp.py +45 -0
- {phase_loop_runtime-0.7.24/src/phase_loop_runtime/skills_bundle/codex-execute-phase → phase_loop_runtime-0.7.25/src/phase_loop_runtime/skills_bundle/claude-execute-phase}/scripts/cleanup_lane_worktrees.sh +21 -2
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +106 -0
- {phase_loop_runtime-0.7.24/src/phase_loop_runtime/skills_bundle/gemini-execute-phase → phase_loop_runtime-0.7.25/src/phase_loop_runtime/skills_bundle/codex-execute-phase}/scripts/cleanup_lane_worktrees.sh +21 -2
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +106 -0
- {phase_loop_runtime-0.7.24/src/phase_loop_runtime/skills_bundle/claude-execute-phase → phase_loop_runtime-0.7.25/src/phase_loop_runtime/skills_bundle/gemini-execute-phase}/scripts/cleanup_lane_worktrees.sh +21 -2
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +106 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +21 -2
- phase_loop_runtime-0.7.25/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +106 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25/src/phase_loop_runtime.egg-info}/PKG-INFO +2 -2
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime.egg-info/SOURCES.txt +47 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_advisory_cli_802.py +2 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_backcompat.py +2 -2
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_backing_homebrew.py +11 -21
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_golden.py +6 -6
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_presets.py +26 -26
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_static_import_862.py +12 -8
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_agent_cli_scratch_inventory_1147.py +66 -38
- phase_loop_runtime-0.7.25/tests/test_agent_view_cleanup.py +119 -0
- phase_loop_runtime-0.7.25/tests/test_agy_static_integrity.py +150 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_autosel.py +19 -10
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ci_xdist_adoption.py +1 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_generated_outputs.py +24 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_egress_prefix_crosses_the_broker_thread.py +20 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabpub_admission_compat_789.py +1 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabpub_partition_rotation_789d.py +3 -0
- phase_loop_runtime-0.7.25/tests/test_fabpub_sealed_head_recovery_1296.py +591 -0
- phase_loop_runtime-0.7.25/tests/test_finding_F002.py +28 -0
- phase_loop_runtime-0.7.25/tests/test_finding_F004.py +23 -0
- phase_loop_runtime-0.7.25/tests/test_finding_F005.py +18 -0
- phase_loop_runtime-0.7.25/tests/test_gemini_credential_expiry_parse.py +45 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_gemini_heartbeat_bootstrap.py +66 -57
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_gemini_heartbeat_filesystem_view.py +87 -69
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_harden_evidence_producer.py +119 -1
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_harden_evidence_verifier.py +6 -0
- phase_loop_runtime-0.7.25/tests/test_launch_audit_exemption_scope_1282.py +27 -0
- phase_loop_runtime-0.7.25/tests/test_launch_audit_inventory.py +121 -0
- phase_loop_runtime-0.7.25/tests/test_launch_audit_live_marker_1282.py +50 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_launcher_liveness.py +18 -11
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_leg_liveness_monitor.py +18 -3
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_legible_roadmap_contract.py +6 -6
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_owned_command_procfs_1003.py +5 -4
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_claude_review_output.py +101 -14
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_invoker_spawn.py +47 -4
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_invoker_timeout_argv.py +115 -55
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_leg_auth_preflight_64.py +14 -14
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_leg_status_detail_1096.py +5 -3
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_per_leg_model_66.py +2 -8
- phase_loop_runtime-0.7.25/tests/test_panel_reply.py +200 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_tui_eof_48.py +16 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_tui_liveness_188.py +34 -13
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_tui_workspace_trust_223.py +33 -10
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_president_heartbeat_1001.py +60 -13
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_president_ladder_config.py +16 -8
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_president_wiring.py +18 -3
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_presroute_hardening.py +6 -11
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_proc_cpu.py +33 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_qualified_agy_image_set.py +5 -2
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_review_monitor_policy.py +162 -87
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_review_policy_govlean_repairs.py +6 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_review_seat_stall_1176.py +90 -28
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sandbox_egress.py +3 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sandbox_placement.py +8 -4
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sandbox_staging_1147.py +26 -40
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_scratch_runtime_audit_1147.py +41 -14
- phase_loop_runtime-0.7.25/tests/test_seat_admin_cleanup.py +48 -0
- phase_loop_runtime-0.7.25/tests/test_seat_caller_ancestry.py +156 -0
- phase_loop_runtime-0.7.25/tests/test_seat_caller_owner.py +156 -0
- phase_loop_runtime-0.7.25/tests/test_seat_credential_refresh.py +189 -0
- phase_loop_runtime-0.7.25/tests/test_seat_egress_rules.py +138 -0
- phase_loop_runtime-0.7.25/tests/test_seat_executor_review.py +224 -0
- phase_loop_runtime-0.7.25/tests/test_seat_host_git.py +313 -0
- phase_loop_runtime-0.7.25/tests/test_seat_host_path_links.py +81 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_host_uid_1098.py +95 -66
- phase_loop_runtime-0.7.25/tests/test_seat_io.py +63 -0
- phase_loop_runtime-0.7.25/tests/test_seat_ipc.py +95 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_jail.py +19 -0
- phase_loop_runtime-0.7.25/tests/test_seat_jail_apparmor.py +122 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_jail_autoqualify.py +4 -0
- phase_loop_runtime-0.7.25/tests/test_seat_journal_collection.py +233 -0
- phase_loop_runtime-0.7.25/tests/test_seat_keyring.py +343 -0
- phase_loop_runtime-0.7.25/tests/test_seat_keyring_order_control.py +66 -0
- phase_loop_runtime-0.7.25/tests/test_seat_launch_guard.py +31 -0
- phase_loop_runtime-0.7.25/tests/test_seat_output_rewrite_1282.py +41 -0
- phase_loop_runtime-0.7.25/tests/test_seat_owner_composition.py +78 -0
- phase_loop_runtime-0.7.25/tests/test_seat_owner_notices.py +50 -0
- phase_loop_runtime-0.7.25/tests/test_seat_owner_round1_1282.py +149 -0
- phase_loop_runtime-0.7.25/tests/test_seat_owner_setup_clock_1282.py +86 -0
- phase_loop_runtime-0.7.25/tests/test_seat_owner_view.py +314 -0
- phase_loop_runtime-0.7.25/tests/test_seat_profiles.py +266 -0
- phase_loop_runtime-0.7.25/tests/test_seat_qualification_host_context.py +68 -0
- phase_loop_runtime-0.7.25/tests/test_seat_reference_inventory.py +65 -0
- phase_loop_runtime-0.7.25/tests/test_seat_review_base_unavailable.py +41 -0
- phase_loop_runtime-0.7.25/tests/test_seat_review_output_redaction.py +56 -0
- phase_loop_runtime-0.7.25/tests/test_seat_review_refusals.py +40 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_sandbox_permissions.py +7 -6
- phase_loop_runtime-0.7.25/tests/test_seat_tool_approvals.py +27 -0
- phase_loop_runtime-0.7.25/tests/test_seat_transcript_io.py +226 -0
- phase_loop_runtime-0.7.25/tests/test_seat_tui_owner_refusal.py +34 -0
- phase_loop_runtime-0.7.25/tests/test_the_real_launch_carries_the_prefix.py +362 -0
- phase_loop_runtime-0.7.25/tests/test_worktree_cleanup_dirty_gate.py +143 -0
- phase_loop_runtime-0.7.24/src/phase_loop_runtime/_proc_cpu.py +0 -57
- phase_loop_runtime-0.7.24/src/phase_loop_runtime/seat_keyring_exec.py +0 -55
- phase_loop_runtime-0.7.24/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +0 -62
- phase_loop_runtime-0.7.24/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +0 -62
- phase_loop_runtime-0.7.24/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +0 -62
- phase_loop_runtime-0.7.24/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +0 -62
- phase_loop_runtime-0.7.24/tests/test_the_real_launch_carries_the_prefix.py +0 -285
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/MANIFEST.in +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/protocol/protocol.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/setup.cfg +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_baml_worker.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/protocol.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-a.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-b.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-c.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/claimed-results.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/metrics.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/bundle-check.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/operator-note.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/events-sample.jsonl +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/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.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/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.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/adoption_bundle.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/__init__.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/advisory_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/backing_omnigent.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/events.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/harness_mapping.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/matrix.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/observability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/registries.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/research.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/resolver.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/schema.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/standin.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/advisor_board/validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/agent_runtime_provider.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/agy_provenance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/agy_qualification.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/agy_watch.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_modular.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/dotfiles_c4_document.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/emit_phase_closeout.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/phase_loop_bridge.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/baml_src/verification_evidence.baml +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/broker.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/build_bundle.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/capability_registry.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/classifier.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/claude_channel_sidecar.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/closeout.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/closeout_classifier.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/closeout_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/closeout_validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/closeout_validators.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/__init__.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/VENDOR.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/consiliency_spec/outside_agent_router.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-route-verdict.schema.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-submission.schema.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-empty-evidence-refs.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-git-object-id-length.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-missing-digest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-path-traversal.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-raw-payload.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-source-bundle-mismatch.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unknown-producer-identity-posture.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unsupported-verdict.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/manifest.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-ambiguity-report.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-implementation-submission.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-work-request.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/certificate_tier.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/git_grounded_projection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_advisory.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_conform_evidence.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_core.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_imports.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_pin.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_provenance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_real.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_real_output.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_redaction.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_schema.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/conformance/outside_agent_vectors.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/consiliency_gates.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/consiliency_ingest.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/consiliency_layout.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/consiliency_scaffold.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/__init__.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/adapters/__init__.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/adapters/claude.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/adapters/codex.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/adapters/outside_agent.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/broker/__init__.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/broker/admission.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/broker/credsep.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/broker/evidence.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/contracts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/dispatch.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/event_log.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/fencing.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/provider_contracts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/reconcile.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/refresh.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/convergence/status.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/credential_redaction.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/cross_repo_channel.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/declared_identity.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/default_executor_resolver.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/deploy/phase-loop-task-message-broker.service +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/discovery.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/dispatch_lock.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/doc_delta_validator.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/docs_audit.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/docs_freshness.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/docs_surfaces.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/doctor.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/dotfiles_profile_plugin.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/entry_doc_check.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/events.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/events_migration.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/evidence_audit_config.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fab_canonical.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fab_delta.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fab_gate.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fab_producer.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fab_provenance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fabpub_capability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fabpub_tdd_chronology.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fabreadmit_capability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fleet_map.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fleet_metrics.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/fleet_metrics_export.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/gate_posture.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/generated_outputs.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/git_discipline.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/git_ops.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/git_topology.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/goal_coverage.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/governed_premerge.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/governed_review.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/handoff.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/handoff_path.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/harness_env_signatures.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/injection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/install_status.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/lane_scheduler.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/lease_store.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/maintenance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/migrate_handoffs.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/models.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/observability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/phase_loop_drift_audit.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/phase_worktree_executor.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/pipeline_adapter/__init__.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/pipeline_adapter/branch_ops.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/pipeline_adapter/flag.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/pipeline_adapter/markers.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/pipeline_adapter/merge_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/pipeline_adapter/ratification.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/pipeline_adapter/sibling_matcher.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/plan_ir.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/plan_manifest.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/plan_pin_lint.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/planner_validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/president_operation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/producer_manifest.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/profiles.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/prompts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/proof_stages.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/provenance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/py.typed +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/ratification_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/reconcile.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/redaction.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/reflection_sync.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/release_guard.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/render.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/repo_validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/review_summary.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/reviewtruth_native_fill_capability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/roadmap_authority.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/roadmap_lint.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/roadmap_ownership.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/roadmap_representation_check.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/roadmap_reseal.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/route_log.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/route_policy/__init__.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/runtime_paths.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/runtime_projection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/runtime_resources.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/sandbox_placement.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/sandbox_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/sandbox_retention.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/schema_export.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.golden.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.schema.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/schemas/phase_loop_closeout.schema.json +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/seat_jail_qualification.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/seat_preflight.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/seat_uid.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skill_install.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skill_inventory.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skill_paths.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skill_sources_plugin.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/state.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/state_degradation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/state_ops.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/task_message_broker.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/task_message_broker_client.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/task_message_resolver.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/tdd_receipts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/train_ledger.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/train_review_packet.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/train_roadmap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/train_runner.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/verification_evidence.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/verification_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/visual_avatar_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/visual_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/worker_pool.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime/worktree_index.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime.egg-info/dependency_links.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime.egg-info/entry_points.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime.egg-info/requires.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/src/phase_loop_runtime.egg-info/top_level.txt +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_acceptance_falsifier_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_advisory_mode.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_alias_install.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_backing_omnigent.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_cli_legacy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_composition.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_concurrency.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_config.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_ingestion.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_integration.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_live_research.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_matrix.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_observability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_registries.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_research.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_resolver.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_board_schema.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_advisor_twin_alias_legacy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_agent_runtime_provider_cs08.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_agy_canary_evidence.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_agy_self_qualification.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_agy_single_event_transport_1175.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_branchgov_preflight.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_broker_command_builders.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_broker_evidence_schema_drift_789.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_broker_staged_tree_delivery.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_certificate_tier.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ci_chronology_scope.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ci_gate_metrics.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ci_main_red.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ci_offload_lock.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ci_quarantine.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ci_workflow_concurrency.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ci_xdist_witness.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_claude_json_schema_metaschema_291.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_cli_train_status_45.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_break_glass_cli.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_classifier.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_convergence_fixes.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_exception_vocab.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_gitignored_disposable_186b.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_import_cycle_819.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_new_owned_directory_closes_clean.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_validator_hook.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_closeout_verification_gate.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_codex_effort_max_clamp_49.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_committed_range_diff.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_common_directory_leases_807.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_conform_timing_instrumentation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_conformance_golden.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_conftest_isolation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_consiliency_dual_layout.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_consiliency_gates.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_consiliency_ingest.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_consiliency_scaffold.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_console_scripts_are_declared.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_contract_floor_guard_378.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_adapters.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_broker_admission.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_broker_api.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_broker_credsep.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_broker_evidence.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_broker_revocation_race.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_broker_verbs.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_cli_integration.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_coordination_contracts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_dispatch.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_event_contracts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_event_log.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_fencing.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_fixture_contracts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_invalidation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_live_enable.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_provider_contracts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_reconcile.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_refresh.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_runtime_imports.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_seat_lifecycle.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_status.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_convergence_train_integration.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_coordinator_wave_loop.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_cr_fixes_pr220.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_credential_redaction_shapes.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_delegated_visual_evidence_91.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_discovery_hygiene_legacy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_dispatch_hold_guard.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_dispatch_lock_cross_roadmap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_dispatch_lock_helper.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_dispatch_lock_reentrancy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_dispatch_lock_same_roadmap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_doc_delta_validator.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_docs_audit.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_docs_freshness.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_doctor_bom.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_dotfiles_tree.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_entry_doc_check.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_execfind_falsifier.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_execfind_governed_promotion.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_execgov.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_execreg_launch_registry.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_execute_phase_handoff_mode.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_execution_policy_tiering.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_executor_availability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_executor_exited_without_closeout_785.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_export_schema.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_activation_promotion.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_canonical_b.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_closeout_crash_safety.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_closeout_wiring.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_delta_c.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_delta_consumer.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_flag_off_recovery_leak_299.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_gate_d.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_producer.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fab_provenance_a.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabpub_bootstrap_writer_lock_1115.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabpub_inventory_worktree_lifecycle_789.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabpub_recovery_controls_789.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabpub_rotate_partition_cli_789d.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabpub_shared_epoch.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabpub_zero_history_bootstrap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabreadmit_authority_digest_v2.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fabreadmit_broker.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_finding_F001.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fleet_map.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fleet_metrics.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_fleet_metrics_export.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_frozen_blob_batch_parse.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_gate_a_wheel_isolation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_gate_fail_open_visibility.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_gate_parity_244_245.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_gate_posture.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_git_discipline.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_git_grounded_projection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_goal_coverage.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_governed_cross_vendor_floor_358.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_governed_disjointness_model_first.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_governed_e2e.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_governed_gate_crfixes.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_governed_planning_gate.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_governed_premerge.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_governed_premerge_live.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_governed_review.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_declared_identity.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_panel_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_plan_manifest_issue_dispositions.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_plan_pin_lint.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_producer_manifest.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_proof_stages.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_roadmap_reseal.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_skill_policy_parity.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_govlean_tdd_receipts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_grok_narrow_reject_231.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_grokexec.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_harden_json_depth_825.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_hotfix_lane.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_injection_skill_failloud.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_lane_ir_override.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_launcher_exec_supervisor.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_launchspec_golden.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_lease_store.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_lease_store_conformance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ledger_serialization.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_legible_evidence.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_legible_review_repairs.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_live_smoke_gate_executes.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_local_check.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_manifest_per_entry_164.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_model_class_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_model_id_source_guard.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_model_tier_taxonomy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_native_claude_seat_fill.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_native_claude_seat_fill_green.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_native_fill_refusal_cause.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_nonzero_suite_command_fails_closed.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_observability_alerting.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_advisory.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_advisory_cli.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_advisory_fixtures.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_authority_boundary.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_canonical_corpus.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_conform_evidence.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_contract_drift.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_contract_imports.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_contract_pin.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_core_api.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_provenance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_real_ci.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_real_cli.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_real_output.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_real_runtime.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_redaction.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_redaction_separation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_release_surface.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_schema_validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_outside_agent_vectors.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_packaged_vector_manifest_pin.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_advisory_mode_63.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_codex_auth_signature_body_252.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_context_refs_114.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_doc_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_gemini_no_command_preamble.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_invoker.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_invoker_windows_import.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_lanes.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_leg_failure_diagnostic.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_lens_delivery.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_native_fill_183.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_streaming_verdicts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_panel_verdict_summary.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_parallel_dispatch_backcompat.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_parallel_dispatch_cli.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_adoption_bundle.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_adoption_bundle_cli.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_dependency.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_end_to_end.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_injection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_modular.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_prompt_taxonomy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_runner_closeout.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_schema_export.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_schema_source.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_v1_callers.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_v1_runtime.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_baml_v1_supervisor_slot.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_branch_divergence_event.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_break_glass_rerun.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_build_bundle.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_classifier.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_agent_view_adapter.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_agent_view_dispatch_409.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_agent_view_lifecycle.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_channel_hooks.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_channel_mcp.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_channel_security.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_channel_session_launch.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_channel_sidecar.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_channel_smoke_suite.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_claude_route_selection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_cli.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_cli_plugin_load.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_closeout_control_only.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_closeout_event.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_closeout_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_closeout_hardening.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_closeout_owned_dirty_fallback.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_closeout_schema.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_closeout_validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_collaborator_citation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_collaborator_docs.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_collaborator_rollback.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_concurrent_phase_dispatch.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_def4_writer_namespacing.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_dirty_path_classify_phase_owned_tests.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_dirty_path_classify_previous_phase_owned.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_discovery.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_docs.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_dotfiles_schemas.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_dotfiles_sources.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_downstream_governed_pipeline.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_downstream_instruction_scope_readme.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_downstream_portal.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_downstream_regenesis.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_drift_audit.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_dry_run_closeout_guard.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_dry_run_then_run.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_events_migration.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_evidence_audit_runner.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_evidence_audit_tier2.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_evidence_audit_tier3.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_evidence_audit_tuning.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_execution_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_executor_degradation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_full_phase_mode.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_handoff.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_handoff_migration.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_init.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_injection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_install_status.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_issue_84_explicit_phase.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_lane_harnesses.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_lane_ir.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_lane_ir_fixtures.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_lane_scheduler.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_launcher.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_ledger_debug.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_ledger_dedup.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_live_adapters.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_maintenance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_metrics.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_migration_regressions.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_mixedrun_dispatch.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_mixedrun_matrix.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_mixedrun_observability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_models.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_native_flags.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_parallel_plan_safe.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_pi_executor.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_pipeline_boundaries.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_pipeline_bridge.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_pipeline_bundle.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_pipeline_closeout.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_pipeline_freshness.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_pipeline_mode.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_plan_doc_skip.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_plan_manifest.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_planner_redispatch_when_plan_current.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_planner_validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_protocol_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_provenance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_reconcile.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_reconcile_blocker_self_clear.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_reconcile_recovery_mode.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_reconcile_to_status_planned_recovery.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_reducers.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_repair_precondition_planned_closeout.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_repair_skipped_when_blocker_cleared.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_roadmap_amendments.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_roadmap_validate.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_rotation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_runner.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_runner_closeout_validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_runtime_boundary.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_runtime_decouple.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_runtime_package_data.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_runtime_projection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_schema_flow.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_skill_baml_closeout.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_skill_bridge_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_skill_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_skill_execute_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_skill_install.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_skill_planner_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_smoke_blockers.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_smoke_exhaustion.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_smoke_reentry.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_spurious_completion_rejection.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_start_gate_phase_status.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_start_gate_refuses_cross_phase_dirty.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_state.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_status_transition_events_emitted.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_substrate_soak_docs.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_substrate_soak_governed.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_substrate_soak_portal.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_terminal_summary_mirrors_baml_closeout.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_v22_e2e.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_v22_principles.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_v45_found_contracts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_v45_reconcile.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_v45_sched.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_v45_schedharden.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_wave_runner.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_work_unit_observability.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_work_unit_runner.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_work_unit_state.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_loop_worktrees.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_owned_dirty_relaxation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_state_disagreement_312.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_phase_worktree_executor.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_branch_ops_create.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_branch_ops_rebase_conflict.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_branch_ops_refuse_default.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_flag.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_markers.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_merge_policy_parse.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_ratification_event_payload.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_ratification_runner.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_ratification_skipped_standalone.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pipeline_adapter_standalone_regression.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pkg_layout_freeze.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_plan_ir_iter_waves.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_plan_manifest_append_order_1174.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r2_F001.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r2_F002.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r2_F003.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r2_F004.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r4_F001.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r4_F002.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r4_F003.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r5_F001.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r6_F001.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r7_F001.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr1161_r9_F002.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pr_readback_789.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_preflight_verification.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_presroute_cli.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_presroute_landed.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_proofgate_attestation_workflow.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_proofgate_cleanup.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_proofgate_isolation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_proofgate_receipts.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_prune_merged_worktrees_script.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_public_installer.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_publishing.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_pushflow.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_qualify_network_owner.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_ratification_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_reconcile_manifest_dedup_46.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_reconcile_portability_85c.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_reconcile_tracked_closeout_recovery_90.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_reconcile_verification_log.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_reconcile_visual_avatar_evidence_91.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_redaction_channel_control_isolation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_redaction_main_coverage_cases.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_reflection_sync.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_release_dispatch_operator_approval_145.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_release_pin_autotrack.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_repo_validation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_review_leg_sandbox.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_review_stage_binding.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_review_stage_board_findings.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_review_staged_tree_authorization.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_review_summary.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_roadmap_authority.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_roadmap_ownership.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_roadmap_representation_consistency.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_route_log.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_route_policy_conformance.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_routing_invariants.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_runner_visual_evidence_authoritative_91.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_runtime_adapter_output_720.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_runtime_event_log_hardening_720.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_runtime_procfs_identity_870.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_runtime_state_mirror_agreement.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sandbox_clone.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sandbox_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sandbox_preamble.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sandbox_retention.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_credentials.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_jail_live_d8.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_launch_helpers_trusted.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_login_wait_a3_1166.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_login_wait_board_context_r12.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_notices.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_seat_preflight_1204.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_self_asserted_passed_without_evidence_is_gated.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sibling_matcher_patterns.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_skill_bundle_pinned.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_skill_install_body_expansion.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_skill_liveness_contract.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_skill_plan_manifest_write.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_skill_sources_seam.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_skills_bundle_drift.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_skills_canon_parity.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_skills_src_claude_literal_lint.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_spec_conformance_gate.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_specpkgmin_wheel.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_stale_roadmap_dispatch_guard.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_status_read_only_62.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_subscription_scrub_xai_864.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_suite_interpreter_satisfies_requires_python.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sweep_fleet_worktrees_script.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_sync_skills_apply_failloud.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_task_message_broker.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_task_message_broker_cli.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_task_message_resolver.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_tdd_chronology.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_authority_import_811.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_e2e.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_invariants.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_merge.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_order_only_deps_47.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_prebuilt.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_review_authorization.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_review_monitoring_policy.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_review_packet.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_roadmap.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_train_runner.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_unattended_release.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_v34_parallel_dispatch_soak.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_validate_plan_doc_docs_lane.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_validate_plan_doc_fail_closed.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_validate_plan_doc_goal_coverage.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_validate_plan_doc_producer_dependency.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_validate_plan_doc_proofgate.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_verification_dotdot_execution_428.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_verification_evidence.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_verification_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_verification_interpreter_guard_221.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_verification_venv_identity_428.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_verify_qualified_agy_route_core.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_visual_avatar_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_visual_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_workerpool_failure_isolation.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_workerpool_parallel.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_workerpool_worktree_alloc.py +0 -0
- {phase_loop_runtime-0.7.24 → phase_loop_runtime-0.7.25}/tests/test_worktree_index.py +0 -0
{phase_loop_runtime-0.7.24/src/phase_loop_runtime.egg-info → phase_loop_runtime-0.7.25}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phase-loop-runtime
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.25
|
|
4
4
|
Summary: Harness-neutral phase-loop orchestration runtime and CLI
|
|
5
5
|
Author-email: ViperJuice <viperjuice@users.noreply.github.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -50,7 +50,7 @@ To install just this runtime package directly:
|
|
|
50
50
|
|
|
51
51
|
```sh
|
|
52
52
|
pip install phase-loop-runtime # latest compatible release
|
|
53
|
-
pip install phase-loop-runtime==0.7.
|
|
53
|
+
pip install phase-loop-runtime==0.7.25 # …or pin an exact version
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
To pin a specific tag from source instead, substitute a tag from
|
|
@@ -19,7 +19,7 @@ To install just this runtime package directly:
|
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
21
|
pip install phase-loop-runtime # latest compatible release
|
|
22
|
-
pip install phase-loop-runtime==0.7.
|
|
22
|
+
pip install phase-loop-runtime==0.7.25 # …or pin an exact version
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
To pin a specific tag from source instead, substitute a tag from
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "phase-loop-runtime" # PyPI dist name; NOT "agent-harness" (an unrelated third-party PyPI project)
|
|
7
|
-
version = "0.7.
|
|
7
|
+
version = "0.7.25"
|
|
8
8
|
description = "Harness-neutral phase-loop orchestration runtime and CLI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"""Linux CPU observations for a process group and its descendants.
|
|
2
|
+
|
|
3
|
+
Owner wrappers can start a child in another session. Include that child tree
|
|
4
|
+
when sampling the leg. Missing /proc data yields zero; CPU activity alone does
|
|
5
|
+
not establish completion or grant heartbeat-only termination authority.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _pgrp_and_ticks(pid: int) -> tuple[int, int]:
|
|
13
|
+
"""Return ``(process_group_id, utime+stime)`` for ``pid`` from /proc/<pid>/stat.
|
|
14
|
+
|
|
15
|
+
The ``comm`` field (2nd) is wrapped in parens and may itself contain spaces or
|
|
16
|
+
parens, so parse the fixed fields AFTER the last ``)``: from there field 3
|
|
17
|
+
(state) is index 0, so pgrp (field 5) = index 2, utime (14) = index 11, and
|
|
18
|
+
stime (15) = index 12.
|
|
19
|
+
"""
|
|
20
|
+
with open(f"/proc/{pid}/stat", encoding="ascii", errors="replace") as fh:
|
|
21
|
+
data = fh.read()
|
|
22
|
+
after = data[data.rfind(")") + 2 :].split()
|
|
23
|
+
pgrp = int(after[2])
|
|
24
|
+
return pgrp, int(after[11]) + int(after[12])
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def group_cpu_ticks(leader_pid: int) -> int:
|
|
28
|
+
"""Sum observed ticks for the group and children, including new sessions."""
|
|
29
|
+
samples = {}
|
|
30
|
+
try:
|
|
31
|
+
entries = os.listdir("/proc")
|
|
32
|
+
except OSError:
|
|
33
|
+
return 0
|
|
34
|
+
for entry in entries:
|
|
35
|
+
if not entry.isdigit():
|
|
36
|
+
continue
|
|
37
|
+
try:
|
|
38
|
+
with open(f"/proc/{entry}/stat", encoding="ascii", errors="replace") as fh:
|
|
39
|
+
data = fh.read()
|
|
40
|
+
fields = data[data.rfind(")") + 2 :].split()
|
|
41
|
+
samples[int(entry)] = (int(fields[1]), int(fields[2]),
|
|
42
|
+
int(fields[11]) + int(fields[12]))
|
|
43
|
+
except (OSError, ValueError, IndexError):
|
|
44
|
+
continue # process exited mid-scan, or an unreadable/odd stat line
|
|
45
|
+
members = {pid for pid, (_, group, _) in samples.items() if group == leader_pid}
|
|
46
|
+
if leader_pid in samples:
|
|
47
|
+
members.add(leader_pid)
|
|
48
|
+
children = {}
|
|
49
|
+
for pid, (parent, _, _) in samples.items():
|
|
50
|
+
children.setdefault(parent, []).append(pid)
|
|
51
|
+
pending = list(members)
|
|
52
|
+
while pending:
|
|
53
|
+
for child in children.get(pending.pop(), ()):
|
|
54
|
+
if child not in members:
|
|
55
|
+
members.add(child)
|
|
56
|
+
pending.append(child)
|
|
57
|
+
return sum(samples[pid][2] for pid in members)
|
|
@@ -28,8 +28,8 @@ equivalence is proven by a test (not asserted in prose).
|
|
|
28
28
|
the **agy/gemini leg where effort is embedded in the model-name string**
|
|
29
29
|
(`render_gemini_model`, panel_invoker.py:1016). Built-3 lanes are concrete;
|
|
30
30
|
breadth lanes raise `EffortMappingError` until ABDREG/ABDHOME/ABDOMNI.
|
|
31
|
-
|
|
32
|
-
`-c model_reasoning_effort=
|
|
31
|
+
Default round-trip (proven): claude→`--effort high`, codex→
|
|
32
|
+
`-c model_reasoning_effort=high`, Gemini Flash→`gemini-3.8-flash-medium`;
|
|
33
33
|
explicit legacy Pro display names remain compatible.
|
|
34
34
|
- **Seat identity for result re-keying** — `Seat.seat_key` is a stable LABEL over
|
|
35
35
|
every distinguishing field (lane, model, effort, lens), so lens-only-different
|
|
@@ -899,8 +899,10 @@ set `gemini_heartbeat.QUALIFIED_IMAGES`: 1.2.11 SHA256
|
|
|
899
899
|
`ce6fdd9e7621ee9ac6eedaa337731ca1f235e412ff57cf9eabcd2aa23b3576ca`, 1.2.14 SHA256
|
|
900
900
|
`0d0d3eba22daf29504dd290151c7ed9a4d33b0c6aa0acfc5da27bc3b01d2f029`, 1.2.15 SHA256
|
|
901
901
|
`5f9c16b286895f8f7fdecd423883ca256a85077b8acf9a6bc1111761d34df164`, 1.2.16 SHA256
|
|
902
|
-
`a759ce7c7a235d9b6c281a25ead97cbbf2e92314a3ffd224e2f9144f3fae7a86
|
|
903
|
-
`c54ef90651a8646ae67334d39212c81f5946feec373ad6aa335f9ef401662bc5
|
|
902
|
+
`a759ce7c7a235d9b6c281a25ead97cbbf2e92314a3ffd224e2f9144f3fae7a86`, 1.2.17 SHA256
|
|
903
|
+
`c54ef90651a8646ae67334d39212c81f5946feec373ad6aa335f9ef401662bc5`, 1.3.0 SHA256
|
|
904
|
+
`19be6af38f7beeaa0db415df9297e314ab3d33fdd6f853434d49f88819bc68e4` or 1.3.1 SHA256
|
|
905
|
+
`ce1bdaed3201bb84f35d69d2773caec4f18af52af00e8c25f6cace07e4359615`. Each member
|
|
904
906
|
carries its measured help digest and has its own qualification record; the
|
|
905
907
|
evidence catalog and the runtime set must name exactly the same members.
|
|
906
908
|
The running Python/kernel must support sealed memfds, pidfds and pidfd signaling;
|
|
@@ -1213,7 +1215,8 @@ are recorded on agent-harness#1132.
|
|
|
1213
1215
|
- **On a pass:** the seat stays jailed, and its mode reports `qualified_now`.
|
|
1214
1216
|
- **On a failure, or a run that cannot happen (a cached failure included):** the seat is
|
|
1215
1217
|
DEGRADED and NOT RUN with `seat_jail_qualification_failed` and a typed reason
|
|
1216
|
-
(`prerequisite_missing`, `store_unsafe`, `falsifiers_failed`, `timeout` or
|
|
1218
|
+
(`prerequisite_missing`, `store_unsafe`, `uid_switch_denied`, `falsifiers_failed`, `timeout` or
|
|
1219
|
+
`error`),
|
|
1217
1220
|
each with a literal fix (plan amendment A3b supersedes A2's sealed fallback).
|
|
1218
1221
|
- **The failure cache:** failures are cached per host, digest and layout for
|
|
1219
1222
|
`PHASE_LOOP_SEAT_JAIL_QUALIFY_RETRY_S` (default 3600 s). A lock timeout is not cached.
|
|
@@ -1328,6 +1331,36 @@ are recorded on agent-harness#1132.
|
|
|
1328
1331
|
stage root, opened `O_NOFOLLOW|O_DIRECTORY` component by component, and owned by a
|
|
1329
1332
|
subordinate uid.
|
|
1330
1333
|
|
|
1334
|
+
## SEATOWNER — The seat-launch owner (agent-harness#1222)
|
|
1335
|
+
|
|
1336
|
+
Every review seat, the president and executor `review` start through one owner,
|
|
1337
|
+
`panel_invoker.launch_owned`. A jailed Claude seat (SEATJAIL) launches through its jail
|
|
1338
|
+
instead, and the jail is that launch's owner.
|
|
1339
|
+
|
|
1340
|
+
- **Credentials, the narrowest each CLI runs with.** No seat receives a refresh token.
|
|
1341
|
+
- **Claude:** the one SEATJAIL decision. That is the bound override, else the login's
|
|
1342
|
+
access token. It is delivered through the drained pipe named by
|
|
1343
|
+
`CLAUDE_CODE_OAUTH_TOKEN_FILE_DESCRIPTOR`.
|
|
1344
|
+
- **Gemini and Grok:** an access-token-only copy.
|
|
1345
|
+
- **Codex:** the auth file with its refresh token's value emptied. The key and the id
|
|
1346
|
+
token stay, because the CLI sends no bearer without them (measured).
|
|
1347
|
+
- **Every copy:** it sits in the seat's private home, and its secret values are
|
|
1348
|
+
redacted from the seat's output.
|
|
1349
|
+
- **Refusals.** Each owner refusal is a closed detail code and a `seat_jail.NOTICES`
|
|
1350
|
+
entry, with what happened, why and a fix line (`seat_owner_unavailable`,
|
|
1351
|
+
`seat_filtered_egress_unavailable`, `seat_keyring_unavailable`, ...).
|
|
1352
|
+
- **The Claude journal.** The host collects the exact session journal through retained
|
|
1353
|
+
handles, after the provider has been cleaned up, and validates it before any approval.
|
|
1354
|
+
- **Refused on both routes:** a new user turn, a max-token continuation, an unmatched
|
|
1355
|
+
`tool_use`, partial JSONL, or a missing final answer.
|
|
1356
|
+
- **A completed tool cycle is accepted:** every `tool_use` has its `tool_result`.
|
|
1357
|
+
- **A journaled `isApiErrorMessage` record** is never an answer or a continuation. The
|
|
1358
|
+
answer parser (agent-harness#1194) decides the turn.
|
|
1359
|
+
- **The route's own answer rule:**
|
|
1360
|
+
- the president requires a terminal turn;
|
|
1361
|
+
- on the review route, a completed answer outlives a later stray error.
|
|
1362
|
+
- **A refusal or cancellation keeps no partial journal on the host.**
|
|
1363
|
+
|
|
1331
1364
|
## ABDFALSIFY — Executable review findings (IF-0-EXECFIND-1)
|
|
1332
1365
|
|
|
1333
1366
|
An optional `falsifier` attachment names one `FindingFalsifier` with
|
|
@@ -483,12 +483,15 @@ class ParentUnixBroker:
|
|
|
483
483
|
):
|
|
484
484
|
raise ValueError("broker canonical repository authority is not probeable")
|
|
485
485
|
try:
|
|
486
|
-
|
|
487
|
-
|
|
486
|
+
from ..review_stage import host_git
|
|
487
|
+
|
|
488
|
+
listed = host_git(
|
|
489
|
+
self.canonical_repo, "ls-files", "-z", check=True,
|
|
488
490
|
text=True,
|
|
491
|
+
stdout=subprocess.PIPE,
|
|
489
492
|
stderr=subprocess.DEVNULL,
|
|
490
493
|
timeout=3,
|
|
491
|
-
).split("\0")
|
|
494
|
+
).stdout.split("\0")
|
|
492
495
|
probe_file = next(
|
|
493
496
|
(
|
|
494
497
|
self.canonical_repo / relative
|
|
@@ -498,7 +501,7 @@ class ParentUnixBroker:
|
|
|
498
501
|
),
|
|
499
502
|
None,
|
|
500
503
|
)
|
|
501
|
-
except (OSError, subprocess.SubprocessError):
|
|
504
|
+
except (OSError, ValueError, subprocess.SubprocessError):
|
|
502
505
|
probe_file = None
|
|
503
506
|
if probe_file is None:
|
|
504
507
|
raise ValueError("broker canonical repository authority is not probeable")
|
|
@@ -696,7 +699,7 @@ class ParentUnixBroker:
|
|
|
696
699
|
runtime_binds: list[str] = ["--ro-bind", "/usr", "/usr"]
|
|
697
700
|
for runtime in ("/lib", "/lib64"):
|
|
698
701
|
if Path(runtime).exists(): runtime_binds.extend(("--ro-bind", runtime, runtime))
|
|
699
|
-
argv = [str(bwrap),"--unshare-all","--die-with-parent","--new-session","--clearenv",*runtime_binds,"--dir","/run","--ro-bind",str(self.
|
|
702
|
+
argv = [str(bwrap),"--unshare-all","--die-with-parent","--new-session","--clearenv",*runtime_binds,"--dir","/run","--dir","/run/phase-loop-broker","--ro-bind",str(self.path),"/run/phase-loop-broker/intended-inference.sock","--ro-bind",str(self.staged_dir),"/run/phase-loop-review","--tmpfs","/tmp","--proc","/proc","--dev","/dev","--setenv","PATH","/usr/bin","--setenv","PYTHONNOUSERSITE","1","--setenv","PYTHONDONTWRITEBYTECODE","1",str(python),"-I","-S","-c",code]
|
|
700
703
|
error: list[BaseException] = []
|
|
701
704
|
child: list[tuple[subprocess.Popen[bytes], int]] = []
|
|
702
705
|
def serve() -> None:
|
|
@@ -882,18 +885,18 @@ def _staged_tree_digest(canonical_repo_authority: Path | str | None) -> str | No
|
|
|
882
885
|
authorization that permits NO staged tree rather than one asserting a digest
|
|
883
886
|
it could not compute.
|
|
884
887
|
"""
|
|
885
|
-
from ..review_stage import review_tree_manifest_sha256
|
|
888
|
+
from ..review_stage import host_git, review_tree_manifest_sha256
|
|
886
889
|
|
|
887
890
|
# Normalize to the SAME git toplevel `_canonical_review_repo_authority` resolves
|
|
888
891
|
# at spawn. Digesting an unnormalized path would bind a different tree than the
|
|
889
892
|
# one actually staged, and the mismatch would only surface as a refusal at launch.
|
|
890
893
|
candidate = Path(canonical_repo_authority) if canonical_repo_authority is not None else Path.cwd()
|
|
891
894
|
try:
|
|
892
|
-
root =
|
|
893
|
-
|
|
894
|
-
text=True, stderr=subprocess.DEVNULL, timeout=3,
|
|
895
|
-
).strip()
|
|
896
|
-
except (OSError, subprocess.SubprocessError):
|
|
895
|
+
root = host_git(
|
|
896
|
+
candidate, "rev-parse", "--show-toplevel", check=True,
|
|
897
|
+
text=True, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, timeout=3,
|
|
898
|
+
).stdout.strip()
|
|
899
|
+
except (OSError, ValueError, subprocess.SubprocessError):
|
|
897
900
|
return None
|
|
898
901
|
if not root:
|
|
899
902
|
return None
|
|
@@ -912,16 +915,18 @@ def _staged_tree_digest(canonical_repo_authority: Path | str | None) -> str | No
|
|
|
912
915
|
|
|
913
916
|
|
|
914
917
|
def _canonical_repo_digest(canonical_repo_authority: Path | str | None) -> str:
|
|
918
|
+
from ..review_stage import host_git
|
|
919
|
+
|
|
915
920
|
candidate = Path(canonical_repo_authority) if canonical_repo_authority is not None else Path.cwd()
|
|
916
921
|
try:
|
|
917
|
-
root =
|
|
918
|
-
|
|
922
|
+
root = host_git(
|
|
923
|
+
candidate, "rev-parse", "--show-toplevel", check=True,
|
|
919
924
|
text=True,
|
|
925
|
+
stdout=subprocess.PIPE,
|
|
920
926
|
stderr=subprocess.DEVNULL,
|
|
921
927
|
timeout=3,
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
except (OSError, subprocess.SubprocessError):
|
|
928
|
+
).stdout.strip()
|
|
929
|
+
except (OSError, ValueError, subprocess.SubprocessError):
|
|
925
930
|
raise ValueError("HARDEN review has no canonical repository authority") from None
|
|
926
931
|
if not root:
|
|
927
932
|
raise ValueError("HARDEN review has no canonical repository authority")
|
|
@@ -88,13 +88,13 @@ def _uses_production_composition_probe(
|
|
|
88
88
|
)
|
|
89
89
|
|
|
90
90
|
# Ideal per-vendor seat, in deterministic composition order. Each vendor runs at
|
|
91
|
-
#
|
|
91
|
+
# the panel default effort with a distinct primary lens.
|
|
92
92
|
_VENDOR_ORDER: tuple[str, ...] = ("grok", "claude", "codex", "gemini")
|
|
93
93
|
_VENDOR_SEAT: dict[str, dict[str, str]] = {
|
|
94
|
-
"grok": {"model": "grok-4.7", "harness": "grok", "effort": "
|
|
95
|
-
"claude": {"model": "claude-opus-5-5", "harness": "claude", "effort": "
|
|
96
|
-
"codex": {"model": "gpt-6-astra", "harness": "codex", "effort": "
|
|
97
|
-
"gemini": {"model": "gemini-3.8-flash", "harness": "gemini", "effort": "
|
|
94
|
+
"grok": {"model": "grok-4.7", "harness": "grok", "effort": "high", "lens": "adversarial"},
|
|
95
|
+
"claude": {"model": "claude-opus-5-5", "harness": "claude", "effort": "high", "lens": "correctness"},
|
|
96
|
+
"codex": {"model": "gpt-6-astra", "harness": "codex", "effort": "high", "lens": "red-team"},
|
|
97
|
+
"gemini": {"model": "gemini-3.8-flash", "harness": "gemini", "effort": "medium", "lens": "alternative-approach"},
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
# Distinct lenses the backfill cycles through (each vendor's primary lens is drawn
|
|
@@ -31,6 +31,7 @@ from collections.abc import Mapping
|
|
|
31
31
|
from dataclasses import dataclass
|
|
32
32
|
from pathlib import Path
|
|
33
33
|
import re
|
|
34
|
+
import subprocess
|
|
34
35
|
from typing import Any, Callable
|
|
35
36
|
|
|
36
37
|
try: # Python 3.11+
|
|
@@ -311,6 +312,7 @@ def load_president_ladder(
|
|
|
311
312
|
*,
|
|
312
313
|
env: Mapping[str, str] | None = None,
|
|
313
314
|
path: Path | None = None,
|
|
315
|
+
review_base: bool = False,
|
|
314
316
|
) -> tuple[str, ...]:
|
|
315
317
|
"""The effective president fallback order, first rung first.
|
|
316
318
|
|
|
@@ -331,7 +333,22 @@ def load_president_ladder(
|
|
|
331
333
|
ladder = _parse_president(user, str(user_path)) or ladder
|
|
332
334
|
if repo_dir is not None:
|
|
333
335
|
repo_path = repo_board_config_path(repo_dir)
|
|
334
|
-
|
|
336
|
+
if review_base:
|
|
337
|
+
from ..review_stage import trusted_review_control
|
|
338
|
+
|
|
339
|
+
try:
|
|
340
|
+
content = trusted_review_control(Path(repo_dir), REPO_CONFIG_RELATIVE_PATH)
|
|
341
|
+
repo = tomllib.loads(content.decode("utf-8")) if content is not None else None
|
|
342
|
+
except ValueError as exc:
|
|
343
|
+
if str(exc) != "review_base_unavailable":
|
|
344
|
+
raise BoardConfigError(f"{repo_path} has no readable base configuration") from exc
|
|
345
|
+
# No main commit to read it from: the candidate's own copy is never trusted,
|
|
346
|
+
# so the repository layer is not in force (the user and built-in ladders are).
|
|
347
|
+
repo = None
|
|
348
|
+
except (OSError, UnicodeError, subprocess.SubprocessError) as exc:
|
|
349
|
+
raise BoardConfigError(f"{repo_path} has no readable base configuration") from exc
|
|
350
|
+
else:
|
|
351
|
+
repo = _load_toml(repo_path)
|
|
335
352
|
if repo is not None:
|
|
336
353
|
_reject_unknown(repo.keys(), _KNOWN_REPO_TOP_KEYS, str(repo_path))
|
|
337
354
|
ladder = _parse_president(repo, str(repo_path)) or ladder
|
|
@@ -18,8 +18,8 @@ default_board = "default"
|
|
|
18
18
|
# [agy]
|
|
19
19
|
# self_qualification = false
|
|
20
20
|
|
|
21
|
-
#
|
|
22
|
-
# Its three seats, in panel-leg order, render to
|
|
21
|
+
# This explicit example overrides the built-in default board, keeping higher effort.
|
|
22
|
+
# Its three seats, in panel-leg order, render to these CLI invocations:
|
|
23
23
|
# codex gpt-6-astra effort=max -> -c model_reasoning_effort=xhigh
|
|
24
24
|
# gemini "Gemini 3.1 Pro" effort=high -> model "Gemini 3.1 Pro (High)"
|
|
25
25
|
# claude claude-sonnet-5 effort=max -> --effort max
|
|
@@ -27,23 +27,23 @@ DEFAULT_BOARD_VENDOR_ORDER: tuple[str, ...] = ("codex", "gemini", "claude", "gro
|
|
|
27
27
|
# The default board's four seats — model-first, effort split out of the model
|
|
28
28
|
# name. These reconstruct ``DEFAULT_LEG_MODELS`` under
|
|
29
29
|
# ``harness_mapping.render_seat_invocation``:
|
|
30
|
-
# codex gpt-6-astra + effort
|
|
31
|
-
# gemini gemini-3.8-flash + effort
|
|
32
|
-
# claude claude-opus-5-5 + effort
|
|
33
|
-
# grok grok-4.7 + effort
|
|
30
|
+
# codex gpt-6-astra + effort high -> ``-c model_reasoning_effort=high``
|
|
31
|
+
# gemini gemini-3.8-flash + effort medium -> model ``gemini-3.8-flash-medium``
|
|
32
|
+
# claude claude-opus-5-5 + effort high -> ``--effort high``
|
|
33
|
+
# grok grok-4.7 + effort high -> ``--reasoning-effort high``
|
|
34
34
|
#
|
|
35
35
|
# The claude seat runs Opus 5.5 (``claude-opus-5-5``), the maintainer's review default
|
|
36
36
|
# "for now" (2026-09-23; Fable ``claude-fable-5-1`` before that), not the implementer
|
|
37
37
|
# model ``claude-sonnet-5``. It keeps the review-policy seat NAME ``fable``. This is
|
|
38
38
|
# byte-pinned to ``panel_invoker.DEFAULT_LEG_MODELS["claude"]`` by the golden proof.
|
|
39
39
|
DEFAULT_SEATS: tuple[Seat, ...] = (
|
|
40
|
-
Seat(model="gpt-6-astra", effort="
|
|
40
|
+
Seat(model="gpt-6-astra", effort="high", harness="codex", lens="red-team",
|
|
41
41
|
auth=AUTH_SUBSCRIPTION, backing=BACKING_HOMEBREW),
|
|
42
|
-
Seat(model="gemini-3.8-flash", effort="
|
|
42
|
+
Seat(model="gemini-3.8-flash", effort="medium", harness="gemini", lens="alternative-approach",
|
|
43
43
|
auth=AUTH_SUBSCRIPTION, backing=BACKING_HOMEBREW),
|
|
44
|
-
Seat(model="claude-opus-5-5", effort="
|
|
44
|
+
Seat(model="claude-opus-5-5", effort="high", harness="claude", lens="correctness",
|
|
45
45
|
auth=AUTH_SUBSCRIPTION, backing=BACKING_HOMEBREW),
|
|
46
|
-
Seat(model="grok-4.7", effort="
|
|
46
|
+
Seat(model="grok-4.7", effort="high", harness="grok", lens="adversarial",
|
|
47
47
|
auth=AUTH_SUBSCRIPTION, backing=BACKING_HOMEBREW),
|
|
48
48
|
)
|
|
49
49
|
|
|
@@ -58,15 +58,15 @@ DEFAULT_BOARD: Board = Board(
|
|
|
58
58
|
# back-compat test against the live ``panel_invoker`` constants).
|
|
59
59
|
DEFAULT_SEAT_RENDERED_MODEL: dict[str, str] = {
|
|
60
60
|
"codex": "gpt-6-astra",
|
|
61
|
-
"gemini": "gemini-3.8-flash-
|
|
61
|
+
"gemini": "gemini-3.8-flash-medium",
|
|
62
62
|
"claude": "claude-opus-5-5",
|
|
63
63
|
"grok": "grok-4.7",
|
|
64
64
|
}
|
|
65
65
|
DEFAULT_SEAT_EFFORT_ARGS: dict[str, tuple[str, ...]] = {
|
|
66
|
-
"codex": ("-c", "model_reasoning_effort=
|
|
66
|
+
"codex": ("-c", "model_reasoning_effort=high"),
|
|
67
67
|
"gemini": (),
|
|
68
|
-
"claude": ("--effort", "
|
|
69
|
-
"grok": ("--reasoning-effort", "
|
|
68
|
+
"claude": ("--effort", "high"),
|
|
69
|
+
"grok": ("--reasoning-effort", "high"),
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
# Canonical (model x harness) pairs ABDREG's matrix + ABDRESOLVE's validation test
|
|
@@ -7,7 +7,7 @@ Nine built-in presets, each a named, purpose-tagged, open-ended seat list:
|
|
|
7
7
|
board defines the canonical four-vendor review seats (the claude seat
|
|
8
8
|
on Opus 5.5, ``claude-opus-5-5``).
|
|
9
9
|
* ``code-review`` — the 4-vendor cross-vendor board (grok / claude / codex /
|
|
10
|
-
gemini) at
|
|
10
|
+
gemini) at default effort, distinct lenses, composed
|
|
11
11
|
availability-aware (``composition.compose_review_board``).
|
|
12
12
|
* ``brainstorm`` — multi-vendor divergent thinking, lens-differentiated.
|
|
13
13
|
* ``doc-edit`` — a lighter documentation-editing board.
|
|
@@ -39,8 +39,8 @@ from .composition import compose_review_board
|
|
|
39
39
|
from .fixtures import DEFAULT_BOARD
|
|
40
40
|
from .schema import Board, Seat
|
|
41
41
|
|
|
42
|
-
# code-review: review-class = the 4-vendor cross-vendor board, each vendor at
|
|
43
|
-
#
|
|
42
|
+
# code-review: review-class = the 4-vendor cross-vendor board, each vendor at default
|
|
43
|
+
# effort with a DISTINCT lens (grok=adversarial, claude=correctness,
|
|
44
44
|
# codex=red-team, gemini=alternative-approach). This is the IDEAL (all-vendors-up)
|
|
45
45
|
# shape; the live panel composes it AVAILABILITY-AWARE via
|
|
46
46
|
# ``composition.compose_review_board`` — down vendors are backfilled with distinct
|
|
@@ -57,9 +57,9 @@ BRAINSTORM_BOARD: Board = Board(
|
|
|
57
57
|
name="brainstorm",
|
|
58
58
|
purpose="brainstorm",
|
|
59
59
|
seats=(
|
|
60
|
-
Seat(model="claude-sonnet-5", effort="
|
|
61
|
-
Seat(model="gpt-6-astra", effort="
|
|
62
|
-
Seat(model="gemini-3.8-flash", effort="
|
|
60
|
+
Seat(model="claude-sonnet-5", effort="medium", harness="claude", lens="adversarial"),
|
|
61
|
+
Seat(model="gpt-6-astra", effort="medium", harness="codex", lens="supportive"),
|
|
62
|
+
Seat(model="gemini-3.8-flash", effort="medium", harness="gemini", lens="lateral"),
|
|
63
63
|
),
|
|
64
64
|
)
|
|
65
65
|
|
|
@@ -68,8 +68,8 @@ DOC_EDIT_BOARD: Board = Board(
|
|
|
68
68
|
name="doc-edit",
|
|
69
69
|
purpose="doc-edit",
|
|
70
70
|
seats=(
|
|
71
|
-
Seat(model="claude-sonnet-5", effort="
|
|
72
|
-
Seat(model="gpt-6-astra", effort="
|
|
71
|
+
Seat(model="claude-sonnet-5", effort="low", harness="claude", lens="copyedit"),
|
|
72
|
+
Seat(model="gpt-6-astra", effort="low", harness="codex", lens="structure"),
|
|
73
73
|
),
|
|
74
74
|
)
|
|
75
75
|
|
|
@@ -87,9 +87,9 @@ LEGAL_REVIEW_BOARD: Board = Board(
|
|
|
87
87
|
name="legal-review",
|
|
88
88
|
purpose="legal-review",
|
|
89
89
|
seats=(
|
|
90
|
-
Seat(model="gpt-6-astra", effort="
|
|
91
|
-
Seat(model="gemini-3.8-flash", effort="
|
|
92
|
-
Seat(model="claude-opus-5-5", effort="
|
|
90
|
+
Seat(model="gpt-6-astra", effort="high", harness="codex", lens="opposing-counsel"),
|
|
91
|
+
Seat(model="gemini-3.8-flash", effort="medium", harness="gemini", lens="risk-liability"),
|
|
92
|
+
Seat(model="claude-opus-5-5", effort="high", harness="claude", lens="authority-verification"),
|
|
93
93
|
),
|
|
94
94
|
)
|
|
95
95
|
|
|
@@ -99,9 +99,9 @@ LEGAL_STRATEGY_REVIEW_BOARD: Board = Board(
|
|
|
99
99
|
name="legal-strategy-review",
|
|
100
100
|
purpose="legal-strategy-review",
|
|
101
101
|
seats=(
|
|
102
|
-
Seat(model="gpt-6-astra", effort="
|
|
103
|
-
Seat(model="gemini-3.8-flash", effort="
|
|
104
|
-
Seat(model="claude-opus-5-5", effort="
|
|
102
|
+
Seat(model="gpt-6-astra", effort="high", harness="codex", lens="red-team"),
|
|
103
|
+
Seat(model="gemini-3.8-flash", effort="medium", harness="gemini", lens="alternatives"),
|
|
104
|
+
Seat(model="claude-opus-5-5", effort="high", harness="claude", lens="downside-ethics"),
|
|
105
105
|
),
|
|
106
106
|
)
|
|
107
107
|
|
|
@@ -111,9 +111,9 @@ LEGAL_BRAINSTORM_BOARD: Board = Board(
|
|
|
111
111
|
name="legal-brainstorm",
|
|
112
112
|
purpose="legal-brainstorm",
|
|
113
113
|
seats=(
|
|
114
|
-
Seat(model="claude-sonnet-5", effort="
|
|
115
|
-
Seat(model="gpt-6-astra", effort="
|
|
116
|
-
Seat(model="gemini-3.8-flash", effort="
|
|
114
|
+
Seat(model="claude-sonnet-5", effort="medium", harness="claude", lens="aggressive"),
|
|
115
|
+
Seat(model="gpt-6-astra", effort="medium", harness="codex", lens="conservative"),
|
|
116
|
+
Seat(model="gemini-3.8-flash", effort="medium", harness="gemini", lens="creative"),
|
|
117
117
|
),
|
|
118
118
|
)
|
|
119
119
|
|
|
@@ -131,9 +131,9 @@ GENERAL_BOARD: Board = Board(
|
|
|
131
131
|
name="general",
|
|
132
132
|
purpose="general",
|
|
133
133
|
seats=(
|
|
134
|
-
Seat(model="gpt-6-astra", effort="
|
|
135
|
-
Seat(model="gemini-3.8-flash", effort="
|
|
136
|
-
Seat(model="claude-opus-5-5", effort="
|
|
134
|
+
Seat(model="gpt-6-astra", effort="high", harness="codex", lens="adversarial"),
|
|
135
|
+
Seat(model="gemini-3.8-flash", effort="medium", harness="gemini", lens="alternative"),
|
|
136
|
+
Seat(model="claude-opus-5-5", effort="high", harness="claude", lens="completeness"),
|
|
137
137
|
),
|
|
138
138
|
)
|
|
139
139
|
|
|
@@ -143,7 +143,7 @@ SOLO_BOARD: Board = Board(
|
|
|
143
143
|
name="solo",
|
|
144
144
|
purpose="general",
|
|
145
145
|
seats=(
|
|
146
|
-
Seat(model="claude-opus-5-5", effort="
|
|
146
|
+
Seat(model="claude-opus-5-5", effort="high", harness="claude", lens="completeness"),
|
|
147
147
|
),
|
|
148
148
|
)
|
|
149
149
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Stop a finished Claude Agent View background session once its closeout is verified.
|
|
2
|
+
|
|
3
|
+
A `claude --bg` session that reaches `done` is not stopped by Claude Code: its Remote Control
|
|
4
|
+
(bridge) session stays open in the app until `claude stop <id>`, and only that clean shutdown
|
|
5
|
+
archives it. The phase-loop launch route waits for `done` and reads the final message but never
|
|
6
|
+
stopped the session, so every finished executor run stayed in the app's session panel until it
|
|
7
|
+
was archived by hand. Measured on Ubuntu 26.04 (Claude Code 2.1.289): the session reached `done`
|
|
8
|
+
with no archive; `claude stop <id>` logged `Archive ... status=200` and kept the conversation.
|
|
9
|
+
|
|
10
|
+
The rule (maintainer, 2026-10-06): never archive before the harness has verified that the
|
|
11
|
+
session produced its required output. The verifier is the closeout's schema verification with
|
|
12
|
+
the required data: the BAML parse plus the `PhaseLoopCloseoutV1` validators, which the runner
|
|
13
|
+
reports as a `native_closeout_payload` and nothing else produces. A session whose closeout is
|
|
14
|
+
missing, malformed, or not evaluated (a BAML worker outage) is left running and visible so it can
|
|
15
|
+
be inspected. `stop` keeps the conversation (`claude attach <id>` and `--resume` still work);
|
|
16
|
+
`remove` is never used.
|
|
17
|
+
|
|
18
|
+
Never raises: cleanup is a tidy-up and must not change a run's outcome.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import logging
|
|
24
|
+
import os
|
|
25
|
+
import re
|
|
26
|
+
from pathlib import Path
|
|
27
|
+
from typing import Any, Mapping
|
|
28
|
+
|
|
29
|
+
from .claude_agent_view import ClaudeAgentViewAdapter
|
|
30
|
+
|
|
31
|
+
#: Set to a true value to leave finished sessions running (for debugging a run in the app).
|
|
32
|
+
KEEP_ENV = "PHASE_LOOP_KEEP_AGENT_VIEW_SESSIONS"
|
|
33
|
+
_LOG = logging.getLogger(__name__)
|
|
34
|
+
_SESSION_ID = re.compile(r"[0-9A-Za-z][0-9A-Za-z._-]{2,63}")
|
|
35
|
+
_PLACEHOLDER_IDS = frozenset({"preflight", "unknown", "none"})
|
|
36
|
+
_TRUE = frozenset({"1", "true", "yes", "on"})
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def verified_session_id(result: Any, child_automation: Mapping[str, Any] | None) -> tuple[str | None, str]:
|
|
40
|
+
"""``(session_id, reason)``: the id to stop, or ``None`` and the reason it is not eligible.
|
|
41
|
+
|
|
42
|
+
Eligible only when the launch was an Agent View route that finished ``done`` AND the
|
|
43
|
+
closeout it produced passed schema verification with the required data."""
|
|
44
|
+
if getattr(result, "dry_run", False):
|
|
45
|
+
return None, "dry_run"
|
|
46
|
+
if getattr(result, "claude_route", None) != "claude_agent_view":
|
|
47
|
+
return None, "not_agent_view"
|
|
48
|
+
route = getattr(result, "claude_route_result", None)
|
|
49
|
+
if not isinstance(route, dict):
|
|
50
|
+
return None, "no_route_result"
|
|
51
|
+
if route.get("status") != "done":
|
|
52
|
+
return None, "route_not_done"
|
|
53
|
+
session_id = route.get("session_id")
|
|
54
|
+
if not isinstance(session_id, str) or session_id in _PLACEHOLDER_IDS or not _SESSION_ID.fullmatch(session_id):
|
|
55
|
+
return None, "no_session_id"
|
|
56
|
+
lifecycles = [a for a in route.get("artifacts") or ()
|
|
57
|
+
if isinstance(a, dict) and a.get("kind") == "claude_agent_view_lifecycle"]
|
|
58
|
+
if not lifecycles or lifecycles[0].get("state") != "done" or lifecycles[0].get("session_id") != session_id:
|
|
59
|
+
return None, "lifecycle_not_done"
|
|
60
|
+
automation = child_automation or {}
|
|
61
|
+
if automation.get("baml_worker_outage"):
|
|
62
|
+
return None, "closeout_not_evaluated"
|
|
63
|
+
if automation.get("automation_parse_error") or automation.get("native_closeout_extraction_failure"):
|
|
64
|
+
return None, "closeout_not_verified"
|
|
65
|
+
payload = automation.get("native_closeout_payload")
|
|
66
|
+
if not isinstance(payload, dict) or not payload:
|
|
67
|
+
return None, "closeout_not_verified"
|
|
68
|
+
return session_id, "verified"
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def stop_verified_session(
|
|
72
|
+
result: Any,
|
|
73
|
+
child_automation: Mapping[str, Any] | None,
|
|
74
|
+
*,
|
|
75
|
+
cwd: str | Path | None = None,
|
|
76
|
+
adapter: ClaudeAgentViewAdapter | None = None,
|
|
77
|
+
environ: Mapping[str, str] | None = None,
|
|
78
|
+
) -> dict[str, object]:
|
|
79
|
+
"""Stop the launch's Agent View session if (and only if) its closeout was verified.
|
|
80
|
+
|
|
81
|
+
Returns ``{"session_id", "action", "reason"}``; ``action`` is ``stopped``, ``kept`` or
|
|
82
|
+
``stop_failed``. Never raises."""
|
|
83
|
+
try:
|
|
84
|
+
session_id, reason = verified_session_id(result, child_automation)
|
|
85
|
+
if session_id is None:
|
|
86
|
+
return {"session_id": None, "action": "kept", "reason": reason}
|
|
87
|
+
env = os.environ if environ is None else environ
|
|
88
|
+
if str(env.get(KEEP_ENV, "")).strip().lower() in _TRUE:
|
|
89
|
+
return {"session_id": session_id, "action": "kept", "reason": "kept_by_environment"}
|
|
90
|
+
stopped = (adapter if adapter is not None else ClaudeAgentViewAdapter()).stop(session_id, cwd=cwd)
|
|
91
|
+
if getattr(stopped, "stop_result", None) != "stopped":
|
|
92
|
+
_LOG.warning("agent-view session %s verified but `claude stop` did not stop it", session_id)
|
|
93
|
+
return {"session_id": session_id, "action": "stop_failed", "reason": "stop_command_failed"}
|
|
94
|
+
return {"session_id": session_id, "action": "stopped", "reason": "verified"}
|
|
95
|
+
except Exception as exc: # cleanup never changes a run's outcome
|
|
96
|
+
_LOG.warning("agent-view session cleanup failed (%s)", type(exc).__name__)
|
|
97
|
+
return {"session_id": None, "action": "stop_failed", "reason": type(exc).__name__}
|