phase-loop-runtime 0.7.15__tar.gz → 0.7.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/PKG-INFO +2 -2
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/README.md +1 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/pyproject.toml +1 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/__init__.py +1 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/CONTRACTS.md +237 -16
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/backing.py +518 -62
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/composition.py +4 -4
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/config.py +99 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/fixtures.py +14 -11
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/harness_mapping.py +25 -12
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/presets.py +10 -8
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/registries.py +2 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/schema.py +1 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/agy_canary_evidence.py +237 -15
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/build_bundle.py +10 -4
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/capability_registry.py +11 -7
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/cli.py +152 -8
- phase_loop_runtime-0.7.17/src/phase_loop_runtime/gemini_heartbeat.py +292 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/launcher.py +21 -12
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/panel_invoker.py +1090 -129
- phase_loop_runtime-0.7.17/src/phase_loop_runtime/president_adapter.py +572 -0
- phase_loop_runtime-0.7.17/src/phase_loop_runtime/president_operation.py +173 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/profiles.py +9 -8
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/roadmap_assumptions.py +2 -2
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/roadmap_lint.py +57 -15
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/runner.py +10 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/sandbox_egress.py +82 -14
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +24 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +24 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +3 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +5 -4
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +24 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +24 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +24 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +24 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +24 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +24 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime.egg-info/PKG-INFO +2 -2
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime.egg-info/SOURCES.txt +16 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_composition.py +1 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_golden.py +2 -2
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_presets.py +10 -10
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_registries.py +10 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_static_import_862.py +2 -2
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_agy_canary_evidence.py +1391 -28
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_autosel.py +2 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_broker_command_builders.py +5 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_broker_staged_tree_delivery.py +51 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_ci_chronology_scope.py +48 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_ci_offload_lock.py +75 -0
- phase_loop_runtime-0.7.17/tests/test_ci_xdist_adoption.py +416 -0
- phase_loop_runtime-0.7.17/tests/test_ci_xdist_witness.py +142 -0
- phase_loop_runtime-0.7.17/tests/test_conform_timing_instrumentation.py +809 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_runtime_imports.py +9 -1
- phase_loop_runtime-0.7.17/tests/test_frozen_blob_batch_parse.py +127 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_gate_fail_open_visibility.py +34 -0
- phase_loop_runtime-0.7.17/tests/test_gemini_heartbeat_bootstrap.py +1288 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_governed_premerge.py +65 -1
- phase_loop_runtime-0.7.17/tests/test_govlean_panel_policy.py +288 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_grok_narrow_reject_231.py +39 -21
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_grokexec.py +17 -8
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_harden_evidence_verifier.py +106 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_launcher_liveness.py +4 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_legible_review_repairs.py +2 -2
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_legible_roadmap_contract.py +21 -21
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_model_class_policy.py +3 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_model_tier_taxonomy.py +4 -4
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_conform_evidence.py +97 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_redaction_separation.py +59 -20
- phase_loop_runtime-0.7.17/tests/test_owned_command_procfs_1003.py +77 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_invoker_spawn.py +4 -4
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_invoker_timeout_argv.py +19 -5
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_native_fill_183.py +18 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_per_leg_model_66.py +6 -6
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_tui_workspace_trust_223.py +99 -4
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_execution_policy.py +6 -2
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_launcher.py +9 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_roadmap_validate.py +213 -4
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_v45_schedharden.py +4 -1
- phase_loop_runtime-0.7.17/tests/test_president_heartbeat_1001.py +338 -0
- phase_loop_runtime-0.7.17/tests/test_president_ladder_config.py +585 -0
- phase_loop_runtime-0.7.17/tests/test_president_wiring.py +1232 -0
- phase_loop_runtime-0.7.17/tests/test_presroute_cli.py +100 -0
- phase_loop_runtime-0.7.17/tests/test_presroute_hardening.py +341 -0
- phase_loop_runtime-0.7.17/tests/test_presroute_landed.py +35 -0
- phase_loop_runtime-0.7.17/tests/test_proc_cpu.py +99 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_public_installer.py +185 -9
- phase_loop_runtime-0.7.17/tests/test_redaction_channel_control_isolation.py +115 -0
- phase_loop_runtime-0.7.17/tests/test_review_monitor_policy.py +1082 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_review_policy_govlean_repairs.py +9 -4
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_roadmap_ownership.py +3 -1
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_roadmap_representation_consistency.py +4 -3
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_sandbox_egress.py +76 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_skill_liveness_contract.py +15 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_skills_canon_parity.py +5 -4
- phase_loop_runtime-0.7.17/tests/test_subscription_scrub_xai_864.py +74 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_tdd_chronology.py +220 -0
- phase_loop_runtime-0.7.15/src/phase_loop_runtime/president_adapter.py +0 -143
- phase_loop_runtime-0.7.15/tests/test_govlean_panel_policy.py +0 -157
- phase_loop_runtime-0.7.15/tests/test_president_wiring.py +0 -689
- phase_loop_runtime-0.7.15/tests/test_proc_cpu.py +0 -45
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/MANIFEST.in +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/protocol/protocol.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/setup.cfg +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/protocol.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_proc_cpu.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-a.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-b.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-c.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/claimed-results.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/metrics.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/bundle-check.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/operator-note.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/events-sample.jsonl +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/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.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/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.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/adoption_bundle.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/__init__.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/backing_omnigent.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/events.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/matrix.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/observability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/research.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/resolver.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/standin.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/advisor_board/validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/agent_runtime_provider.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_modular.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_src/dotfiles_c4_document.baml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_src/emit_phase_closeout.baml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/baml_src/verification_evidence.baml +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/broker.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/classifier.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/claude_agent_view.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/claude_channel_sidecar.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/closeout.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/closeout_classifier.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/closeout_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/closeout_validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/closeout_validators.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/__init__.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/VENDOR.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/consiliency_spec/outside_agent_router.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-route-verdict.schema.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/schemas/outside-agent-submission.schema.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-empty-evidence-refs.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-git-object-id-length.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-missing-digest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-path-traversal.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-raw-payload.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-source-bundle-mismatch.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unknown-producer-identity-posture.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/invalid-unsupported-verdict.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/manifest.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-ambiguity-report.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-implementation-submission.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/_contract/test-vectors/outside-agent/valid-work-request.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/certificate_tier.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/git_grounded_projection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_advisory.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_conform_evidence.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_core.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_imports.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_pin.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_provenance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_real.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_real_output.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_redaction.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_schema.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/conformance/outside_agent_vectors.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/consiliency_gates.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/consiliency_ingest.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/consiliency_layout.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/consiliency_scaffold.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/__init__.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/adapters/__init__.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/adapters/base.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/adapters/claude.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/adapters/codex.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/adapters/outside_agent.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/broker/__init__.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/broker/admission.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/broker/credsep.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/broker/evidence.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/broker/live.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/broker/verbs.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/contracts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/dispatch.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/event_log.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/fencing.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/provider_contracts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/reconcile.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/refresh.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/convergence/status.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/cross_repo_channel.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/declared_identity.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/default_executor_resolver.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/deploy/phase-loop-task-message-broker.service +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/discovery.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/dispatch_lock.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/doc_delta_validator.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/docs_audit.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/docs_freshness.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/docs_surfaces.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/doctor.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/dotfiles_profile_plugin.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/entry_doc_check.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/events.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/events_migration.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/evidence_audit_config.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/executor_availability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fab_canonical.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fab_delta.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fab_gate.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fab_producer.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fab_provenance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fabpub_capability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fabpub_tdd_chronology.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fabreadmit_capability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fleet_map.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fleet_metrics.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/fleet_metrics_export.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/gate_posture.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/git_discipline.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/git_ops.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/git_topology.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/goal_coverage.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/governed_bundle.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/governed_premerge.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/governed_review.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/handoff.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/handoff_path.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/harness_env_signatures.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/injection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/install_status.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/lane_scheduler.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/lease_store.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/legible_evidence.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/maintenance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/migrate_handoffs.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/models.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/observability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/phase_loop_drift_audit.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/phase_worktree_executor.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/pipeline_adapter/__init__.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/pipeline_adapter/branch_ops.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/pipeline_adapter/flag.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/pipeline_adapter/markers.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/pipeline_adapter/merge_policy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/pipeline_adapter/ratification.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/pipeline_adapter/sibling_matcher.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/plan_ir.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/plan_manifest.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/plan_pin_lint.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/planner_validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/producer_manifest.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/prompts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/proof_stages.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/provenance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/publishing.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/py.typed +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/ratification_policy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/reconcile.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/redaction.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/reflection_sync.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/release_guard.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/render.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/repo_validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/review_stage.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/review_summary.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/reviewtruth_native_fill_capability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/roadmap_authority.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/roadmap_ownership.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/roadmap_representation_check.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/roadmap_reseal.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/route_log.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/route_policy/__init__.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/runtime_paths.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/runtime_projection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/runtime_resources.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/sandbox_policy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/sandbox_retention.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/schema_export.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.golden.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/schemas/phase-loop-doctor.v1.schema.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/schemas/phase_loop_closeout.schema.json +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skill_install.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skill_inventory.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skill_paths.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skill_sources_plugin.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/prune_merged_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-run-train/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/state.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/state_degradation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/state_ops.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/task_message_broker.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/task_message_broker_client.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/task_message_resolver.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/tdd_receipts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/train_ledger.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/train_roadmap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/train_runner.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/verification_evidence.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/verification_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/visual_avatar_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/visual_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/worker_pool.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime/worktree_index.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime.egg-info/dependency_links.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime.egg-info/entry_points.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime.egg-info/requires.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/src/phase_loop_runtime.egg-info/top_level.txt +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_acceptance_falsifier_contract.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_advisory_mode.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_alias_install.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_backcompat.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_backing_homebrew.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_backing_omnigent.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_cli_legacy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_concurrency.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_config.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_ingestion.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_integration.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_live_research.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_matrix.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_observability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_research.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_resolver.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_board_schema.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_advisor_twin_alias_legacy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_agent_runtime_provider_cs08.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_branchgov_preflight.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_broker_evidence_schema_drift_789.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_certificate_tier.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_ci_gate_metrics.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_ci_main_red.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_ci_workflow_concurrency.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_claude_json_schema_metaschema_291.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_cli_train_status_45.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_break_glass_cli.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_classifier.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_convergence_fixes.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_exception_vocab.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_gitignored_disposable_186b.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_import_cycle_819.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_new_owned_directory_closes_clean.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_validator_hook.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_closeout_verification_gate.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_codex_effort_max_clamp_49.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_committed_range_diff.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_common_directory_leases_807.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_conformance_golden.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_conftest_isolation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_consiliency_dual_layout.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_consiliency_gates.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_consiliency_ingest.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_consiliency_scaffold.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_console_scripts_are_declared.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_contract_floor_guard_378.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_adapters.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_broker_admission.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_broker_api.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_broker_credsep.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_broker_evidence.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_broker_revocation_race.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_broker_verbs.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_cli_integration.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_coordination_contracts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_dispatch.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_event_contracts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_event_log.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_fencing.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_fixture_contracts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_invalidation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_live_enable.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_provider_contracts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_reconcile.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_refresh.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_seat_lifecycle.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_status.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_convergence_train_integration.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_coordinator_wave_loop.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_cr_fixes_pr220.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_delegated_visual_evidence_91.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_discovery_hygiene_legacy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_dispatch_hold_guard.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_dispatch_lock_cross_roadmap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_dispatch_lock_helper.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_dispatch_lock_reentrancy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_dispatch_lock_same_roadmap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_doc_delta_validator.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_docs_audit.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_docs_freshness.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_doctor_bom.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_dotfiles_tree.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_egress_prefix_crosses_the_broker_thread.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_entry_doc_check.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_execgov.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_execreg_launch_registry.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_execute_phase_handoff_mode.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_execution_policy_tiering.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_executor_availability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_executor_exited_without_closeout_785.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_export_schema.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_activation_promotion.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_canonical_b.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_closeout_crash_safety.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_closeout_wiring.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_delta_c.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_delta_consumer.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_flag_off_recovery_leak_299.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_gate_d.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_producer.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fab_provenance_a.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabpub_admission_compat_789.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabpub_inventory_worktree_lifecycle_789.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabpub_partition_rotation_789d.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabpub_recovery_controls_789.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabpub_rotate_partition_cli_789d.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabpub_shared_epoch.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabpub_zero_history_bootstrap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabreadmit_authority_digest_v2.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fabreadmit_broker.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fleet_map.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fleet_metrics.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_fleet_metrics_export.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_gate_a_wheel_isolation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_gate_parity_244_245.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_gate_posture.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_git_discipline.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_git_grounded_projection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_goal_coverage.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_governed_cross_vendor_floor_358.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_governed_disjointness_model_first.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_governed_e2e.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_governed_gate_crfixes.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_governed_planning_gate.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_governed_premerge_live.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_governed_review.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_govlean_declared_identity.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_govlean_plan_manifest_issue_dispositions.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_govlean_plan_pin_lint.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_govlean_producer_manifest.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_govlean_proof_stages.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_govlean_roadmap_reseal.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_govlean_skill_policy_parity.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_govlean_tdd_receipts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_harden_evidence_producer.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_harden_json_depth_825.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_hotfix_lane.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_injection_skill_failloud.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_lane_ir_override.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_launchspec_golden.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_lease_store.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_lease_store_conformance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_ledger_serialization.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_leg_liveness_monitor.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_legible_evidence.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_live_smoke_gate_executes.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_manifest_per_entry_164.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_model_id_source_guard.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_native_claude_seat_fill.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_native_claude_seat_fill_green.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_nonzero_suite_command_fails_closed.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_observability_alerting.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_advisory.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_advisory_cli.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_advisory_fixtures.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_authority_boundary.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_canonical_corpus.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_contract_drift.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_contract_imports.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_contract_pin.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_core_api.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_provenance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_real_ci.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_real_cli.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_real_output.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_real_runtime.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_redaction.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_release_surface.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_schema_validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_outside_agent_vectors.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_packaged_vector_manifest_pin.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_advisory_mode_63.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_codex_auth_signature_body_252.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_context_refs_114.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_gemini_no_command_preamble.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_invoker.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_invoker_windows_import.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_leg_auth_preflight_64.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_leg_failure_diagnostic.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_streaming_verdicts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_tui_eof_48.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_tui_liveness_188.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_panel_verdict_summary.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_parallel_dispatch_backcompat.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_parallel_dispatch_cli.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_adoption_bundle.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_adoption_bundle_cli.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_baml_dependency.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_baml_end_to_end.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_baml_injection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_baml_modular.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_baml_prompt_taxonomy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_baml_runner_closeout.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_baml_schema_export.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_baml_schema_source.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_branch_divergence_event.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_break_glass_rerun.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_build_bundle.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_classifier.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_agent_view_adapter.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_agent_view_lifecycle.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_channel_hooks.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_channel_mcp.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_channel_security.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_channel_session_launch.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_channel_sidecar.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_channel_smoke_suite.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_claude_route_selection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_cli.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_cli_plugin_load.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_closeout_control_only.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_closeout_event.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_closeout_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_closeout_hardening.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_closeout_owned_dirty_fallback.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_closeout_schema.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_closeout_validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_collaborator_citation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_collaborator_docs.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_collaborator_rollback.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_concurrent_phase_dispatch.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_def4_writer_namespacing.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_dirty_path_classify_phase_owned_tests.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_dirty_path_classify_previous_phase_owned.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_discovery.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_docs.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_dotfiles_schemas.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_dotfiles_sources.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_downstream_governed_pipeline.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_downstream_instruction_scope_readme.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_downstream_portal.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_downstream_regenesis.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_drift_audit.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_dry_run_closeout_guard.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_dry_run_then_run.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_events_migration.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_evidence_audit.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_evidence_audit_runner.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_evidence_audit_tier2.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_evidence_audit_tier3.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_evidence_audit_tuning.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_executor_degradation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_full_phase_mode.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_handoff.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_handoff_migration.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_init.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_injection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_install_status.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_issue_84_explicit_phase.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_lane_harnesses.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_lane_ir.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_lane_ir_fixtures.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_lane_scheduler.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_ledger_debug.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_ledger_dedup.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_live_adapters.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_maintenance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_metrics.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_migration_regressions.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_mixedrun_dispatch.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_mixedrun_matrix.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_mixedrun_observability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_models.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_native_flags.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_parallel_plan_safe.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_pi_executor.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_pipeline_boundaries.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_pipeline_bridge.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_pipeline_bundle.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_pipeline_closeout.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_pipeline_freshness.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_pipeline_mode.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_plan_doc_skip.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_plan_manifest.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_planner_redispatch_when_plan_current.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_planner_validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_policy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_protocol_contract.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_provenance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_reconcile.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_reconcile_blocker_self_clear.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_reconcile_recovery_mode.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_reconcile_to_status_planned_recovery.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_reducers.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_repair_precondition_planned_closeout.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_repair_skipped_when_blocker_cleared.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_roadmap_amendments.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_rotation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_runner.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_runner_closeout_validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_runtime_boundary.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_runtime_decouple.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_runtime_package_data.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_runtime_projection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_schema_flow.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_skill_baml_closeout.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_skill_bridge_contract.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_skill_contract.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_skill_execute_contract.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_skill_install.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_skill_planner_contract.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_smoke_blockers.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_smoke_exhaustion.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_smoke_reentry.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_spurious_completion_rejection.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_start_gate_phase_status.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_start_gate_refuses_cross_phase_dirty.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_state.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_status_transition_events_emitted.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_substrate_soak_docs.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_substrate_soak_governed.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_substrate_soak_portal.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_terminal_summary_mirrors_baml_closeout.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_v22_e2e.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_v22_principles.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_v45_found_contracts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_v45_reconcile.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_v45_sched.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_wave_runner.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_work_unit_observability.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_work_unit_runner.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_work_unit_state.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_loop_worktrees.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_owned_dirty_relaxation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_state_disagreement_312.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_phase_worktree_executor.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_branch_ops_create.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_branch_ops_rebase_conflict.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_branch_ops_refuse_default.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_flag.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_markers.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_merge_policy_parse.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_ratification_event_payload.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_ratification_runner.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_ratification_skipped_standalone.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pipeline_adapter_standalone_regression.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pkg_layout_freeze.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_plan_ir_iter_waves.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pr_readback_789.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_preflight_verification.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_proofgate_attestation_workflow.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_proofgate_cleanup.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_proofgate_isolation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_proofgate_receipts.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_prune_merged_worktrees_script.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_publishing.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_pushflow.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_ratification_policy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_reconcile_manifest_dedup_46.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_reconcile_portability_85c.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_reconcile_tracked_closeout_recovery_90.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_reconcile_verification_log.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_reconcile_visual_avatar_evidence_91.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_reflection_sync.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_release_dispatch_operator_approval_145.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_release_pin_autotrack.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_repo_validation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_review_leg_sandbox.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_review_stage_binding.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_review_stage_board_findings.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_review_staged_tree_authorization.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_review_summary.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_roadmap_authority.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_route_log.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_route_policy_conformance.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_routing_invariants.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_runner_visual_evidence_authoritative_91.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_runtime_adapter_output_720.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_runtime_event_log_hardening_720.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_runtime_procfs_identity_870.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_runtime_state_mirror_agreement.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_sandbox_clone.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_sandbox_policy.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_sandbox_preamble.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_sandbox_retention.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_self_asserted_passed_without_evidence_is_gated.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_sibling_matcher_patterns.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_skill_bundle_pinned.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_skill_install_body_expansion.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_skill_plan_manifest_write.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_skill_sources_seam.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_skills_bundle_drift.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_skills_src_claude_literal_lint.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_spec_conformance_gate.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_specpkgmin_wheel.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_stale_roadmap_dispatch_guard.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_status_read_only_62.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_suite_interpreter_satisfies_requires_python.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_sweep_fleet_worktrees_script.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_sync_skills_apply_failloud.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_task_message_broker.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_task_message_broker_cli.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_task_message_resolver.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_the_real_launch_carries_the_prefix.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_authority_import_811.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_e2e.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_invariants.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_merge.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_order_only_deps_47.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_prebuilt.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_review_authorization.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_roadmap.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_train_runner.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_unattended_release.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_v34_parallel_dispatch_soak.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_validate_plan_doc_docs_lane.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_validate_plan_doc_fail_closed.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_validate_plan_doc_goal_coverage.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_validate_plan_doc_producer_dependency.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_validate_plan_doc_proofgate.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_verification_dotdot_execution_428.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_verification_evidence.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_verification_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_verification_interpreter_guard_221.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_verification_venv_identity_428.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_visual_avatar_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_visual_evidence_validator.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_workerpool_failure_isolation.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_workerpool_parallel.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_workerpool_worktree_alloc.py +0 -0
- {phase_loop_runtime-0.7.15 → phase_loop_runtime-0.7.17}/tests/test_worktree_index.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phase-loop-runtime
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.17
|
|
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
|
|
@@ -49,7 +49,7 @@ To install just this runtime package directly:
|
|
|
49
49
|
|
|
50
50
|
```sh
|
|
51
51
|
pip install phase-loop-runtime # latest compatible release
|
|
52
|
-
pip install phase-loop-runtime==0.7.
|
|
52
|
+
pip install phase-loop-runtime==0.7.17 # …or pin an exact version
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
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.17 # …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.17"
|
|
8
8
|
description = "Harness-neutral phase-loop orchestration runtime and CLI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -95,14 +95,17 @@ equivalence is proven by a test (not asserted in prose).
|
|
|
95
95
|
deferred seat natively and the fill counts only once bound (EC-REVIEWTRUTH-14,
|
|
96
96
|
agent-harness#921) — the host×seat routing rule above.
|
|
97
97
|
- **`VENDOR_API_KEY_VARS`** — the flat `_API_KEY_VARS` tuple re-keyed by vendor
|
|
98
|
-
family; its union equals today's tuple (proven)
|
|
99
|
-
|
|
98
|
+
family; its union equals today's tuple (proven). It is also the api-key INJECTION map.
|
|
99
|
+
`scrub_subscription_env` additionally removes `SUBSCRIPTION_SCRUB_ONLY_VARS`
|
|
100
|
+
(`XAI_API_KEY`, `GROK_CODE_XAI_API_KEY`; agent-harness#864): the api-key variables of the
|
|
101
|
+
subscription-only grok harness, scrubbed but never injectable -- and
|
|
102
|
+
`GROK_SUBSCRIPTION_BLOCKED_ENV_VARS`, grok's endpoint redirects.
|
|
100
103
|
|
|
101
104
|
## IF-0-ABDFREEZE-4 — Back-compat contract · `fixtures.py` + `tests/test_advisor_board_backcompat.py`
|
|
102
105
|
|
|
103
106
|
- The model-first `default` board (`DEFAULT_BOARD`) resolves four vendors in
|
|
104
|
-
`DEFAULT_BOARD_VENDOR_ORDER`: Codex/Sol, Gemini/Flash high, Claude/
|
|
105
|
-
Grok 4.
|
|
107
|
+
`DEFAULT_BOARD_VENDOR_ORDER`: Codex/Sol, Gemini/Flash high, Claude/Opus 5.5, and
|
|
108
|
+
Grok 4.7. The separate legacy `PANEL_LEGS` tuple and explicit `invoke_panel`
|
|
106
109
|
API remain the frozen three-leg Codex/Gemini/Claude boundary.
|
|
107
110
|
- `advisor-panel` stays a working alias of `advisor-board` — the rename + alias is
|
|
108
111
|
ABDRESOLVE; this contract only *states* the invariant.
|
|
@@ -184,24 +187,27 @@ The seven built-in presets (`presets.PRESETS`). Every preset self-validates agai
|
|
|
184
187
|
the real matrix at `load_boards()` time (`tests/test_advisor_board_config.py`,
|
|
185
188
|
`tests/test_advisor_board_integration.py`).
|
|
186
189
|
|
|
187
|
-
- **Review-class =
|
|
188
|
-
review are mid-tier decisions where being wrong is expensive, so the
|
|
189
|
-
boards (`default`, `code-review`, `legal-review`,
|
|
190
|
-
|
|
190
|
+
- **Review-class = Opus 5.5 (for now), decoupled from the implementer.** Pre-merge
|
|
191
|
+
and legal review are mid-tier decisions where being wrong is expensive, so the
|
|
192
|
+
review-class boards (`default`, `code-review`, `legal-review`,
|
|
193
|
+
`legal-strategy-review`) seat Opus 5.5 (`claude-opus-5-5`) on the claude lane — the
|
|
194
|
+
maintainer's review default "for now" (2026-09-23), Fable (`claude-fable-5-1`)
|
|
195
|
+
before that and still selectable — NOT the implementer model
|
|
191
196
|
`profiles.CLAUDE_IMPLEMENTER_MODEL` (`claude-sonnet-5`). `panel_invoker.DEFAULT_LEG_MODELS["claude"]`
|
|
192
197
|
is the SINGLE source of truth for the panel's default claude model: the claude
|
|
193
198
|
leg builder (`_claude_tui_command`) and the Agent-View attempt both read it, so
|
|
194
199
|
the *legacy* `invoke_panel` path AND the live governed gates
|
|
195
200
|
(`governed_review` / `governed_premerge`, which call `invoke_panel` with no model
|
|
196
|
-
override) review on
|
|
201
|
+
override) review on Opus 5.5. `CLAUDE_IMPLEMENTER_MODEL` is untouched — the
|
|
197
202
|
implementer stays Sonnet. The `default` board (`fixtures.DEFAULT_BOARD`) is
|
|
198
|
-
byte-pinned to this
|
|
203
|
+
byte-pinned to this `invoke_panel` panel by the golden proof
|
|
199
204
|
(`tests/test_advisor_board_golden.py`); the sole sanctioned delta stays `seat_key`.
|
|
200
205
|
- **`default` and `code-review` are four-vendor frontier boards.** Gemini uses
|
|
201
|
-
`gemini-3.8-flash` at its `high` ceiling alongside Sol,
|
|
206
|
+
`gemini-3.8-flash` at its `high` ceiling alongside Sol, Opus 5.5, and Grok 4.7;
|
|
202
207
|
`code-review` preserves availability-aware backfill and distinct lenses.
|
|
203
|
-
- **President availability ladder.** Review findings go first to
|
|
204
|
-
|
|
208
|
+
- **President availability ladder.** Review findings go first to the `fable` seat
|
|
209
|
+
(Opus 5.5 by default — the rung names the seat, not the model), then
|
|
210
|
+
Sol, Grok 4.7, and Gemini 3.8 Flash. Descent occurs only for a typed
|
|
205
211
|
`president_unavailable` result, never because a president dissents. The ladder
|
|
206
212
|
is EXECUTED (not merely declared) by every `requires_president` landing policy —
|
|
207
213
|
see ABDPRES below.
|
|
@@ -214,8 +220,8 @@ the real matrix at `load_boards()` time (`tests/test_advisor_board_config.py`,
|
|
|
214
220
|
- **Catch-alls for unmodeled tasks (`general`, `solo`).** So the board library is not
|
|
215
221
|
limited to the pre-modeled domains: `general` is the domain-agnostic top-tier PANEL
|
|
216
222
|
(three frontier vendors — gpt-6-astra/adversarial, gemini-3.8-flash/alternative,
|
|
217
|
-
claude-
|
|
218
|
-
single-MEMBER form (one `claude-
|
|
223
|
+
claude-opus-5-5/completeness — hand it any task + brief), and `solo` is the
|
|
224
|
+
single-MEMBER form (one `claude-opus-5-5` seat) for a quick top-end opinion when a
|
|
219
225
|
panel is overkill. A ONE-seat board validates + resolves through `invoke_board` like
|
|
220
226
|
any other (bare/single seats are supported). Both default to TOP-END models: an
|
|
221
227
|
unanticipated task cannot be assumed low-stakes, so the safe default is frontier —
|
|
@@ -450,7 +456,9 @@ a landing decision. `tests/test_president_wiring.py`.
|
|
|
450
456
|
seated rung with it: the governed caller must receive that as a board result it
|
|
451
457
|
persists, not as an error it never records. Only a caller-contract error
|
|
452
458
|
(`president_round_limit`) propagates as `PresidentPolicyError`.
|
|
453
|
-
- **Execution route
|
|
459
|
+
- **Execution route — SUPERSEDED by ABDPRESROUTE below** (agent-harness#952): a seated
|
|
460
|
+
rung now runs through `public_board_president.v1`. The text of this bullet records the
|
|
461
|
+
pre-PRESROUTE route. `president_adapter.build_president_invoke`
|
|
454
462
|
binds the ladder to a board's seats (`seat_for_rung`: rung alias → seat model →
|
|
455
463
|
harness). An UNSEATED rung answers typed `president_unavailable` (the ladder
|
|
456
464
|
descends). A SEATED rung answers `failed` / `president_execution_route_unavailable`
|
|
@@ -485,3 +493,216 @@ a landing decision. `tests/test_president_wiring.py`.
|
|
|
485
493
|
- **Standalone launchers.** A caller that wants the four-seat board without a
|
|
486
494
|
president passes an explicit `review_policy=ReviewLandingPolicy(required_seats=...,
|
|
487
495
|
requires_president=False)` rather than a president-requiring tier.
|
|
496
|
+
|
|
497
|
+
## ABDPRESROUTE — The president operation · `president_operation.py`, `president_adapter.py`, `advisor_board/backing.py`, `panel_invoker.invoke_board` (IF-0-PRESROUTE-1, Consiliency/agent-harness#952)
|
|
498
|
+
|
|
499
|
+
The president's OWN HARDEN-authorized operation, `public_board_president.v1`, beside —
|
|
500
|
+
never through — the review operation `public_board_review.v1`. Frozen falsifiers:
|
|
501
|
+
`tests/test_president_wiring.py`, `tests/test_govlean_panel_policy.py` (SL-0,
|
|
502
|
+
`content_tdd_receipt.v1`), golden `tests/data/president_ruling_v1.golden.json`.
|
|
503
|
+
|
|
504
|
+
- **Callable.** `president_operation.run_president_operation(*, brief, findings,
|
|
505
|
+
authorization, invoke, max_substantive_rounds) -> PresidentOperationResult(ruling,
|
|
506
|
+
authorization_identity, rung_index, brief_digest, findings_digest)`. It refuses an
|
|
507
|
+
authorization whose `operation` is not exactly `public_board_president.v1`
|
|
508
|
+
(`PresidentPolicyError("president_operation_authorization_mismatch")`) BEFORE any rung
|
|
509
|
+
is invoked, then walks `PRESIDENT_LADDER` through `invoke` with the president prompt
|
|
510
|
+
built from the findings; the brief is digested, not sent.
|
|
511
|
+
- **Digests.** `brief_digest = sha256(brief)`; `findings_digest =
|
|
512
|
+
sha256("\n".join(findings))` in prompt order; lowercase hex. On a board, the brief is
|
|
513
|
+
the composed president prompt `_president_prompt(findings)`.
|
|
514
|
+
- **Completion grammar.** Per-finding `FINDING <id>: BLOCKING|DEFERRED — <reason>`,
|
|
515
|
+
terminal `FORCING DECISION: <decision>` (`_valid_president_grammar`); a launched rung's
|
|
516
|
+
turn is complete when its last line is a non-empty `FORCING DECISION:`
|
|
517
|
+
(`_completion_ok(text, "president")`), never a review verdict.
|
|
518
|
+
- **Authorization.** `backing.prepare_president_isolation_authorization(board, brief)`
|
|
519
|
+
mints `PresidentIsolationAuthorization` (same seal as review isolation;
|
|
520
|
+
`child_credentialless=True`, `child_network_egress=False`, `live_tree_exposed=False`,
|
|
521
|
+
`api_fallback=False`; subscription routes; brief digest; repository identity when the
|
|
522
|
+
launch has one — the operation reads no tree). The adapter revalidates it
|
|
523
|
+
(`revalidate_president_isolation_authorization`) immediately before a rung launches and
|
|
524
|
+
launches that authorization's route; a seat the authorization does not route (Claude
|
|
525
|
+
included) is refused without launching.
|
|
526
|
+
- **Rung routes** (`president_adapter.build_president_invoke(..., monitoring_policy=)`).
|
|
527
|
+
Unseated rung → typed `president_unavailable` (descend). `sol` / `grok` → the brokered
|
|
528
|
+
`_exec_leg` in a throwaway directory, whose only launch is `launch_provider`. `gemini` →
|
|
529
|
+
the broker's acknowledged agy stream with the PRESIDENT's own final instruction (a ruling,
|
|
530
|
+
not a review verdict), launched through `_run_leg_with_liveness` → `launch_provider` and
|
|
531
|
+
decoded by `_broker_gemini_stream_result`; with the agy subscription credential it runs in
|
|
532
|
+
the broker's agy profile, without one in an empty private HOME (no credential of any kind),
|
|
533
|
+
so the provider itself refuses and the failure is typed. `fable` under Claude Code (from the passed `base_env`; the adapter
|
|
534
|
+
falls back to the process environment only when none is passed, so it never spawns a
|
|
535
|
+
second TUI) → a deferred native fill `{"status": "native_fill_deferred", rung,
|
|
536
|
+
brief_digest, findings_digest}`, refused with `president_fill_heartbeat_refused` under
|
|
537
|
+
`heartbeat_only`. `fable` elsewhere → the brokered self-PTY session
|
|
538
|
+
(`_run_claude_tui_session`, tools off, no directory grant). A failed launch is a typed
|
|
539
|
+
`failed` (`president_invocation_failed`, no descent).
|
|
540
|
+
- **Ladder** (EC-PRESROUTE-3). `PRESIDENT_LADDER` is the seat-alias tuple; each alias
|
|
541
|
+
resolves to its vendor's registry PIN through `DEFAULT_REVIEW_SEAT_ALIASES` (where the
|
|
542
|
+
`model-id-source:` markers live). No model id is spelled in the ladder.
|
|
543
|
+
- **Brokered, monitored launch** (agent-harness#1001). Every non-native rung launch runs
|
|
544
|
+
under the isolation a review seat gets: `isolated_network` egress (no retained
|
|
545
|
+
capabilities), a single-use broker capability minted by
|
|
546
|
+
`backing.derive_president_leg_authorization` from the operation's lease
|
|
547
|
+
(`prepare_president_isolation_authorization(..., monitoring_policy=)` registers it;
|
|
548
|
+
`activate_/close_president_isolation_authorization` bracket each launch) carrying the
|
|
549
|
+
PRESIDENT operation identity, and the `ParentUnixBroker` over read-only staged bytes (the
|
|
550
|
+
brief and a fixed president instruction marker). Under `heartbeat_only` the transport runs
|
|
551
|
+
with a `_ReviewMonitor` -- no model-thinking deadline, no silence kill; cancellation (the
|
|
552
|
+
board's `cancel_event`) and owner loss are the only stops -- and the gemini rung uses the
|
|
553
|
+
owned heartbeat agy profile, and the Claude rung hands the broker's quiescence latch to its
|
|
554
|
+
TUI session. A missing canonical repository, an empty egress prefix (always -- the
|
|
555
|
+
authorization declares no network egress) or a cancelled operation
|
|
556
|
+
(`president_operation_cancelled`, which stops the walk) is a typed refusal before any provider
|
|
557
|
+
starts. Under BOUNDED monitoring only, a patched transport or launch site is the in-process
|
|
558
|
+
control seam and is not brokered (never evidence), as for review seats; `heartbeat_only` is
|
|
559
|
+
always brokered.
|
|
560
|
+
- **Configured ladder** (agent-harness#998 follow-up). `PRESIDENT_LADDER` is the BUILT-IN
|
|
561
|
+
order; the effective order is `advisor_board.config.load_president_ladder(repo_dir, *,
|
|
562
|
+
env, path)`: built-in < the user file's `[president] ladder`
|
|
563
|
+
(`$XDG_CONFIG_HOME/agent-harness/advisor-boards.toml`) < the repository's
|
|
564
|
+
`<repo>/.agent-harness/advisor-boards.toml` (`[president]` only; `[[boards]]` there is
|
|
565
|
+
refused). A ladder is a non-empty list of distinct seat aliases or alias-table model ids
|
|
566
|
+
(`validate_president_ladder`); a malformed one or an unknown key is `BoardConfigError`,
|
|
567
|
+
never a silent fall-back. The seam carries it (`build_president_invoke(..., ladder=)`,
|
|
568
|
+
`PresidentInvoke.ladder`); `invoke_president` walks `effective_president_ladder(invoke)`
|
|
569
|
+
(the seam's ladder, else the built-in), and `rung_index` is the rung's position in THAT
|
|
570
|
+
ladder. The phase-loop runner (`_run_legible_panel`), `advisor-board --landing-tier` and
|
|
571
|
+
`invoke_board`'s auto-wired seam load it; a malformed ladder is refused before any seat
|
|
572
|
+
(`president_ladder_invalid` / CLI exit 2). The user layer follows the environment it is
|
|
573
|
+
given: the auto-wired seam reads it from the passed `base_env` (its `XDG_CONFIG_HOME`,
|
|
574
|
+
else its `HOME`; neither ⇒ no user layer), never from the process HOME.
|
|
575
|
+
- **Defer → resume** (EC-PRESROUTE-2). A deferred Fable rung makes `invoke_board` return
|
|
576
|
+
the seats with `PanelResult.needs_native_president` = `{rung, brief_digest,
|
|
577
|
+
findings_digest, prompt}` and no ruling, persisting `president.pending.json`
|
|
578
|
+
(`president.pending.v1`: the request plus the findings and seat verdicts it was built
|
|
579
|
+
from) to `stream_dir`; a deferral without `stream_dir` is refused
|
|
580
|
+
(`president_native_fill_stream_required`). `invoke_board(..., native_president_fill=
|
|
581
|
+
{rung, brief_digest, findings_digest, text})` RESUMES after the same factory /
|
|
582
|
+
revalidation gate and before any seat launches -- no seat is re-run, so seats that would
|
|
583
|
+
word things differently cannot strand the route. The pending request is BOUND to its run
|
|
584
|
+
(resolved-artifact digest, the review-brief digest captured ONCE before any seat runs,
|
|
585
|
+
the board's ordered seat keys, mode, landing policy, president ladder and the seat each
|
|
586
|
+
rung resolves to under the run's `review_seat_aliases`) and the resume
|
|
587
|
+
refuses any difference. A new deferral removes any `president.ruling.json` an earlier
|
|
588
|
+
run left in the stream (after its pending request is written); every persisted ruling
|
|
589
|
+
removes any pending request (so an older request cannot later resume over it). The
|
|
590
|
+
resume and the ruling record resolve the rung through the run's `review_seat_aliases`. The fill is accepted only when that binding matches, the
|
|
591
|
+
stored verdicts are this board's seats in order and re-derive the stored findings, the
|
|
592
|
+
pending rung is this board's natively filled (Claude) rung, the persisted digests
|
|
593
|
+
recompute from the stored findings, the fill's rung and BOTH digests equal them, and the
|
|
594
|
+
text passes the ruling grammar for those findings. An accepted request is CONSUMED (it
|
|
595
|
+
answers once). This guards against a stale or mismatched stream, not a caller who forges
|
|
596
|
+
its own stream directory (the stream is the caller's durable context); otherwise `president_fill_digest_mismatch` (or
|
|
597
|
+
`president_ruling_format_missing` / `president_native_fill_stream_required`) and nothing
|
|
598
|
+
is persisted. The resumed result carries the deferred seats' verdicts (republished to the
|
|
599
|
+
stream) and the ruling. Under Claude Code, `invoke_board` wires the adapter itself when no
|
|
600
|
+
seam is passed -- keyed on the PASSED `base_env` only, never the process environment.
|
|
601
|
+
- **Ruling record** (EC-PRESROUTE-5). Every president ruling a board obtains on a call that
|
|
602
|
+
has a review stream (`stream_dir`; the runner and the CLI always pass one, and the native
|
|
603
|
+
path refuses without one) is written atomically to `<stream_dir>/president.ruling.json`.
|
|
604
|
+
A stream-less call -- which the frozen SL-0 corpus exercises on several president nodes --
|
|
605
|
+
returns its ruling unrecorded, since there is no stream to record it in. Schema
|
|
606
|
+
`president.ruling.v1`:
|
|
607
|
+
`schema`, `authorization_identity` (`public_board_president.v1`), `rung_index`,
|
|
608
|
+
`model_id` (the ruling rung's registry PIN on the board), `format_reask_count`,
|
|
609
|
+
`brief_digest`, `findings_digest`, `forcing_decision`, `finding_rulings`
|
|
610
|
+
(`[{id, disposition, reason}]`). `president_operation.president_ruling_record(result)`
|
|
611
|
+
builds the same shape from a `PresidentOperationResult`.
|
|
612
|
+
- **Override expiry** (EC-PRESROUTE-4). `panel_invoker.enforce_requires_president(tier,
|
|
613
|
+
*, requires_president)` refuses a `plan`/`production_code` landing carrying
|
|
614
|
+
`requires_president=False` (`requires_president_override_refused`); `invoke_board`
|
|
615
|
+
calls it whenever a `landing_tier` is given. The interim ratification note is EXPIRED.
|
|
616
|
+
- **CLI.** `advisor-board --landing-tier <tier>` runs the board under a tier (a president
|
|
617
|
+
tier binds the seam to the driving process's environment);
|
|
618
|
+
`--native-president FILL.json` resumes a deferred rung against the pending request
|
|
619
|
+
under `--native-fill-dir`/`native-fill/president/`.
|
|
620
|
+
|
|
621
|
+
## Review monitoring policy v1 (agent-harness#892)
|
|
622
|
+
|
|
623
|
+
The opt-in policy vocabulary is `bounded | heartbeat_only`; omission is bounded.
|
|
624
|
+
Heartbeat-only permits brokered subscription/homebrew Claude TUI, Codex and
|
|
625
|
+
Grok, plus the qualified Gemini extension below. It permits no timeout overrides,
|
|
626
|
+
capture, research, API fallback, gateway or native host seat. Whole-board
|
|
627
|
+
capability preflight precedes availability, auth, session creation and provider
|
|
628
|
+
dispatch. Missing or changed Gemini capability refuses the requested whole board;
|
|
629
|
+
its membership is never reduced or backfilled to satisfy this policy.
|
|
630
|
+
|
|
631
|
+
The requested/effective policy is bound to the operation lease and minted leg.
|
|
632
|
+
Heartbeat-only admission expires 10 seconds after minting and is single-use;
|
|
633
|
+
complete frame receipt and ownership are checked before inference. Admitted
|
|
634
|
+
model response waiting has no aggregate wall-clock deadline or silence cutoff.
|
|
635
|
+
It makes one attempt, including when that attempt completes empty.
|
|
636
|
+
Cancellation and owner loss retain child/provider/server ownership until
|
|
637
|
+
quiescence; unproven quiescence cannot become successful evidence.
|
|
638
|
+
Private staged inputs and diagnostics are retained when quiescence cannot be
|
|
639
|
+
proven; that retention is failure evidence, not successful cleanup.
|
|
640
|
+
|
|
641
|
+
`review_monitoring.v1` is a separate metadata-only opt-in record: invocation and
|
|
642
|
+
seat position, requested/effective policy, admission window, null model/silence
|
|
643
|
+
deadlines, last observed progress age, observation state, and terminal reason.
|
|
644
|
+
Genuine output within the existing print-read observation interval is
|
|
645
|
+
`progress_observed`; older output or no output is `progress_unobserved`.
|
|
646
|
+
The TUI timestamp is refreshed by novel output lines, review-file growth and
|
|
647
|
+
transcript growth — a startup banner is novel output and refreshes it; only
|
|
648
|
+
repeated cosmetic repaints do not, once the existing novelty detector has seen
|
|
649
|
+
their text. The CPU-tick heartbeat never refreshes it.
|
|
650
|
+
Neither state is a health attestation or permission to terminate. Frozen
|
|
651
|
+
broker request/response keys, status literals, and observer envelopes are unchanged.
|
|
652
|
+
|
|
653
|
+
When staging requires egress isolation, acquisition follows staged-tree and operation
|
|
654
|
+
authorization revalidation. Heartbeat-only holds the network helper lifetime through
|
|
655
|
+
an owner pipe, with no aggregate expiry; owner exit closes both helpers. Provider
|
|
656
|
+
PID ownership is established after network entry but before the capability bounding
|
|
657
|
+
set is emptied. Every launch retains the common provider launch seam and broker
|
|
658
|
+
threads inherit its ContextVar prefix. EgressUnavailable stays DEGRADED with empty
|
|
659
|
+
review text and the exception in detail; sandbox facts describe actual enforcement.
|
|
660
|
+
|
|
661
|
+
### Qualified Gemini extension (agent-harness#905)
|
|
662
|
+
|
|
663
|
+
The Linux x64 subscription `agy` 1.2.10 entry image must match SHA256
|
|
664
|
+
`aea7ed8df1e79b716c0ccd14c7d8086db75b14da535ffb7febdec9a488deff67`.
|
|
665
|
+
The running Python/kernel must support sealed memfds, pidfds and pidfd signaling;
|
|
666
|
+
Python version alone is not a capability check. Unknown images or missing
|
|
667
|
+
capabilities refuse before availability/auth effects. Required bwrap mount/gate
|
|
668
|
+
flags are checked at admission, before inference. Measure help through the
|
|
669
|
+
admitted `agy` filename: the usage line includes that name, while the same
|
|
670
|
+
archive member invoked as `antigravity` produces different help bytes. The
|
|
671
|
+
measured help defines literal `--print-timeout 0` as waiting for completion.
|
|
672
|
+
A quick real completion establishes compatibility; clock controls establish
|
|
673
|
+
that old runtime deadlines and silence cannot terminate a healthy heartbeat-only
|
|
674
|
+
operation.
|
|
675
|
+
|
|
676
|
+
The sealed image and deny-all settings are read-only mounts inside a private
|
|
677
|
+
HOME owned by the existing PID/mount namespace. A private symlink references the
|
|
678
|
+
subscription credential; no credential payload is copied, logged or restored.
|
|
679
|
+
Heartbeat credential lookup uses the supplied scrubbed HOME, recording a process
|
|
680
|
+
HOME fallback truthfully if HOME is absent. Legitimate refresh writes survive.
|
|
681
|
+
The real qualification driver requires an explicit HOME and checks target
|
|
682
|
+
presence before and after, without reading its contents.
|
|
683
|
+
|
|
684
|
+
The broker transports same-session acknowledged input over stdin, with no tree
|
|
685
|
+
attachment, `--add-dir`, permission bypass, retry or native thinking timer. Empty,
|
|
686
|
+
rejected and nonzero-exit streams remain non-votes with fixed diagnostics;
|
|
687
|
+
provider stdout/stderr and arbitrary exception strings are not substituted for
|
|
688
|
+
review prose. Native timeout under zero has a distinct diagnostic. Bounded
|
|
689
|
+
retry timing and supported positive deadline argv remain unchanged; accepted
|
|
690
|
+
Gemini review prose excludes stderr.
|
|
691
|
+
|
|
692
|
+
Namespace init identity is held before execution is released. Cancellation
|
|
693
|
+
reaps before closing a blocked execution gate; abrupt owner death can release
|
|
694
|
+
its EOF gate shortly before the parent-death signal takes effect. There is no
|
|
695
|
+
strict zero-exec claim for abrupt loss. Cleanup requires namespace-init exit
|
|
696
|
+
and corroborating observations, including detached/nested descendants. Failed
|
|
697
|
+
quiescence cannot yield a usable vote. No receipt proves remote billing settlement.
|
|
698
|
+
|
|
699
|
+
`phase-loop-runtime/scripts/qualify_gemini_heartbeat.py` separately qualifies
|
|
700
|
+
completion, cancellation after observed progress, and abrupt owner loss. Its
|
|
701
|
+
receipts bind package source, image/help/profile/helper hashes, inputs, argv,
|
|
702
|
+
monitoring, broker records and local cleanup observations. Helper evidence is
|
|
703
|
+
sampled, not a complete exec audit; the entry image pin does not freeze helper
|
|
704
|
+
images. Directory validation accounts for every attempt in the declared series
|
|
705
|
+
root, rejecting failures, omissions and terminal/admission mismatches. Preserve
|
|
706
|
+
failed series; diagnose a changed candidate before another attempt. Validation
|
|
707
|
+
uses that host's measured helper images. These receipts do not replace the
|
|
708
|
+
historical bounded-success evidence verifier.
|