phase-loop-runtime 0.3.0__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/PKG-INFO +49 -2
  2. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/README.md +47 -0
  3. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/pyproject.toml +12 -2
  4. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/__init__.py +2 -1
  5. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +1 -0
  6. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/CONTRACTS.md +61 -4
  7. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/cli.py +125 -0
  8. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/closeout.py +2 -2
  9. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/__init__.py +79 -0
  10. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_advisory.py +208 -0
  11. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_core.py +118 -0
  12. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_imports.py +161 -0
  13. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_pin.py +33 -0
  14. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_provenance.py +146 -0
  15. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_real.py +220 -0
  16. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_real_output.py +57 -0
  17. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_redaction.py +123 -0
  18. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_schema.py +123 -0
  19. phase_loop_runtime-0.5.0/src/phase_loop_runtime/conformance/outside_agent_vectors.py +173 -0
  20. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/consiliency_ingest.py +36 -0
  21. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/discovery.py +2 -0
  22. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/models.py +102 -1
  23. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/panel_invoker.py +320 -23
  24. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/release_guard.py +1 -7
  25. phase_loop_runtime-0.5.0/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +54 -0
  26. phase_loop_runtime-0.5.0/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +54 -0
  27. phase_loop_runtime-0.5.0/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +51 -0
  28. phase_loop_runtime-0.5.0/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +51 -0
  29. phase_loop_runtime-0.5.0/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +51 -0
  30. phase_loop_runtime-0.5.0/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +51 -0
  31. phase_loop_runtime-0.5.0/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +51 -0
  32. phase_loop_runtime-0.5.0/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +51 -0
  33. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime.egg-info/PKG-INFO +49 -2
  34. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime.egg-info/SOURCES.txt +29 -0
  35. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime.egg-info/requires.txt +1 -1
  36. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_backcompat.py +6 -2
  37. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_backing_homebrew.py +2 -0
  38. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_consiliency_ingest.py +116 -0
  39. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_docs_audit.py +18 -0
  40. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_governed_review.py +57 -0
  41. phase_loop_runtime-0.5.0/tests/test_outside_agent_advisory.py +101 -0
  42. phase_loop_runtime-0.5.0/tests/test_outside_agent_advisory_cli.py +98 -0
  43. phase_loop_runtime-0.5.0/tests/test_outside_agent_advisory_fixtures.py +35 -0
  44. phase_loop_runtime-0.5.0/tests/test_outside_agent_authority_boundary.py +89 -0
  45. phase_loop_runtime-0.5.0/tests/test_outside_agent_contract_drift.py +21 -0
  46. phase_loop_runtime-0.5.0/tests/test_outside_agent_contract_imports.py +93 -0
  47. phase_loop_runtime-0.5.0/tests/test_outside_agent_contract_pin.py +19 -0
  48. phase_loop_runtime-0.5.0/tests/test_outside_agent_core_api.py +81 -0
  49. phase_loop_runtime-0.5.0/tests/test_outside_agent_provenance.py +73 -0
  50. phase_loop_runtime-0.5.0/tests/test_outside_agent_real_ci.py +78 -0
  51. phase_loop_runtime-0.5.0/tests/test_outside_agent_real_cli.py +144 -0
  52. phase_loop_runtime-0.5.0/tests/test_outside_agent_real_output.py +83 -0
  53. phase_loop_runtime-0.5.0/tests/test_outside_agent_real_runtime.py +129 -0
  54. phase_loop_runtime-0.5.0/tests/test_outside_agent_redaction.py +93 -0
  55. phase_loop_runtime-0.5.0/tests/test_outside_agent_release_surface.py +207 -0
  56. phase_loop_runtime-0.5.0/tests/test_outside_agent_schema_validation.py +65 -0
  57. phase_loop_runtime-0.5.0/tests/test_outside_agent_vectors.py +77 -0
  58. phase_loop_runtime-0.5.0/tests/test_panel_context_refs_114.py +373 -0
  59. phase_loop_runtime-0.5.0/tests/test_panel_invoker.py +159 -0
  60. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_panel_invoker_spawn.py +53 -0
  61. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_models.py +85 -0
  62. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_pipeline_bundle.py +34 -0
  63. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_runtime_boundary.py +1 -0
  64. phase_loop_runtime-0.3.0/src/phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +0 -46
  65. phase_loop_runtime-0.3.0/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +0 -46
  66. phase_loop_runtime-0.3.0/src/phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +0 -46
  67. phase_loop_runtime-0.3.0/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +0 -46
  68. phase_loop_runtime-0.3.0/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +0 -46
  69. phase_loop_runtime-0.3.0/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +0 -46
  70. phase_loop_runtime-0.3.0/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +0 -46
  71. phase_loop_runtime-0.3.0/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +0 -46
  72. phase_loop_runtime-0.3.0/tests/test_panel_invoker.py +0 -72
  73. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/MANIFEST.in +0 -0
  74. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/protocol/protocol.md +0 -0
  75. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/setup.cfg +0 -0
  76. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +0 -0
  77. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +0 -0
  78. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +0 -0
  79. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +0 -0
  80. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +0 -0
  81. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +0 -0
  82. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/protocol.md +0 -0
  83. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +0 -0
  84. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +0 -0
  85. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +0 -0
  86. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +0 -0
  87. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +0 -0
  88. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +0 -0
  89. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +0 -0
  90. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +0 -0
  91. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +0 -0
  92. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +0 -0
  93. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +0 -0
  94. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +0 -0
  95. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +0 -0
  96. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +0 -0
  97. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +0 -0
  98. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +0 -0
  99. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +0 -0
  100. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +0 -0
  101. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-a.txt +0 -0
  102. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-b.txt +0 -0
  103. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-c.txt +0 -0
  104. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/claimed-results.json +0 -0
  105. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +0 -0
  106. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/manifest.json +0 -0
  107. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/metrics.json +0 -0
  108. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +0 -0
  109. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +0 -0
  110. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +0 -0
  111. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +0 -0
  112. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +0 -0
  113. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/bundle-check.json +0 -0
  114. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +0 -0
  115. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/operator-note.txt +0 -0
  116. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/events-sample.jsonl +0 -0
  117. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +0 -0
  118. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +0 -0
  119. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +0 -0
  120. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +0 -0
  121. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +0 -0
  122. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +0 -0
  123. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +0 -0
  124. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +0 -0
  125. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/console-summary.txt +0 -0
  126. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/manifest.json +0 -0
  127. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/screenshot-standin.ppm +0 -0
  128. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/adoption_bundle.py +0 -0
  129. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/__init__.py +0 -0
  130. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/backing.py +0 -0
  131. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/backing_omnigent.py +0 -0
  132. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/config.py +0 -0
  133. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/events.py +0 -0
  134. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +0 -0
  135. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/fixtures.py +0 -0
  136. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/harness_mapping.py +0 -0
  137. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/matrix.py +0 -0
  138. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/observability.py +0 -0
  139. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/presets.py +0 -0
  140. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/registries.py +0 -0
  141. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/resolver.py +0 -0
  142. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/schema.py +0 -0
  143. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/standin.py +0 -0
  144. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/advisor_board/validation.py +0 -0
  145. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/agent_runtime_provider.py +0 -0
  146. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_modular.py +0 -0
  147. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +0 -0
  148. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_src/dotfiles_c4_document.baml +0 -0
  149. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +0 -0
  150. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +0 -0
  151. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +0 -0
  152. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_src/emit_phase_closeout.baml +0 -0
  153. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +0 -0
  154. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/baml_src/verification_evidence.baml +0 -0
  155. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/broker.py +0 -0
  156. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/build_bundle.py +0 -0
  157. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/capability_registry.py +0 -0
  158. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/classifier.py +0 -0
  159. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/claude_agent_view.py +0 -0
  160. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/claude_channel_sidecar.py +0 -0
  161. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/closeout_classifier.py +0 -0
  162. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/closeout_evidence_audit.py +0 -0
  163. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/closeout_validation.py +0 -0
  164. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/closeout_validators.py +0 -0
  165. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/consiliency_gates.py +0 -0
  166. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/consiliency_layout.py +0 -0
  167. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/consiliency_scaffold.py +0 -0
  168. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/cross_repo_channel.py +0 -0
  169. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/dispatch_lock.py +0 -0
  170. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/doc_delta_validator.py +0 -0
  171. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/docs_audit.py +0 -0
  172. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/docs_freshness.py +0 -0
  173. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/docs_surfaces.py +0 -0
  174. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/dotfiles_profile_plugin.py +0 -0
  175. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/events.py +0 -0
  176. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/events_migration.py +0 -0
  177. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/evidence_audit.py +0 -0
  178. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/evidence_audit_config.py +0 -0
  179. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/fleet_map.py +0 -0
  180. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/fleet_metrics.py +0 -0
  181. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/fleet_metrics_export.py +0 -0
  182. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/gate_posture.py +0 -0
  183. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/git_discipline.py +0 -0
  184. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/git_ops.py +0 -0
  185. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/git_topology.py +0 -0
  186. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/governed_bundle.py +0 -0
  187. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/governed_premerge.py +0 -0
  188. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/governed_review.py +0 -0
  189. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/handoff.py +0 -0
  190. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/handoff_path.py +0 -0
  191. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/injection.py +0 -0
  192. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/install_status.py +0 -0
  193. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/lane_scheduler.py +0 -0
  194. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/launcher.py +0 -0
  195. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/lease_store.py +0 -0
  196. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/maintenance.py +0 -0
  197. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/migrate_handoffs.py +0 -0
  198. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/observability.py +0 -0
  199. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/phase_loop_drift_audit.py +0 -0
  200. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/phase_worktree_executor.py +0 -0
  201. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/pipeline_adapter/__init__.py +0 -0
  202. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/pipeline_adapter/branch_ops.py +0 -0
  203. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/pipeline_adapter/flag.py +0 -0
  204. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/pipeline_adapter/markers.py +0 -0
  205. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/pipeline_adapter/merge_policy.py +0 -0
  206. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/pipeline_adapter/ratification.py +0 -0
  207. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/pipeline_adapter/sibling_matcher.py +0 -0
  208. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/plan_ir.py +0 -0
  209. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/plan_manifest.py +0 -0
  210. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/planner_validation.py +0 -0
  211. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/profiles.py +0 -0
  212. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/prompts.py +0 -0
  213. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/provenance.py +0 -0
  214. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/publishing.py +0 -0
  215. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/py.typed +0 -0
  216. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/reconcile.py +0 -0
  217. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/redaction.py +0 -0
  218. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/reflection_sync.py +0 -0
  219. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/render.py +0 -0
  220. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/repo_validation.py +0 -0
  221. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/review_summary.py +0 -0
  222. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/roadmap_lint.py +0 -0
  223. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/route_log.py +0 -0
  224. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/route_policy/__init__.py +0 -0
  225. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +0 -0
  226. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/runner.py +0 -0
  227. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/runtime_paths.py +0 -0
  228. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/runtime_projection.py +0 -0
  229. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/runtime_resources.py +0 -0
  230. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/schema_export.py +0 -0
  231. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/schemas/phase_loop_closeout.schema.json +0 -0
  232. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skill_install.py +0 -0
  233. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skill_inventory.py +0 -0
  234. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skill_paths.py +0 -0
  235. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skill_sources_plugin.py +0 -0
  236. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +0 -0
  237. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +0 -0
  238. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +0 -0
  239. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +0 -0
  240. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +0 -0
  241. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +0 -0
  242. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  243. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  244. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  245. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  246. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  247. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  248. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  249. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +0 -0
  250. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  251. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +0 -0
  252. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +0 -0
  253. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +0 -0
  254. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +0 -0
  255. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +0 -0
  256. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +0 -0
  257. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +0 -0
  258. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +0 -0
  259. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  260. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +0 -0
  261. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  262. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +0 -0
  263. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +0 -0
  264. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +0 -0
  265. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +0 -0
  266. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +0 -0
  267. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +0 -0
  268. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +0 -0
  269. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-run-train/README.md +0 -0
  270. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +0 -0
  271. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +0 -0
  272. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +0 -0
  273. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +0 -0
  274. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +0 -0
  275. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +0 -0
  276. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  277. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +0 -0
  278. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +0 -0
  279. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +0 -0
  280. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +0 -0
  281. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +0 -0
  282. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +0 -0
  283. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +0 -0
  284. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +0 -0
  285. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +0 -0
  286. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  287. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  288. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  289. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  290. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  291. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  292. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  293. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +0 -0
  294. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  295. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +0 -0
  296. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +0 -0
  297. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +0 -0
  298. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +0 -0
  299. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +0 -0
  300. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +0 -0
  301. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +0 -0
  302. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +0 -0
  303. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  304. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +0 -0
  305. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  306. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +0 -0
  307. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +0 -0
  308. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +0 -0
  309. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +0 -0
  310. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +0 -0
  311. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +0 -0
  312. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +0 -0
  313. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-run-train/README.md +0 -0
  314. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +0 -0
  315. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +0 -0
  316. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +0 -0
  317. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +0 -0
  318. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +0 -0
  319. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +0 -0
  320. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  321. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +0 -0
  322. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +0 -0
  323. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +0 -0
  324. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +0 -0
  325. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +0 -0
  326. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +0 -0
  327. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +0 -0
  328. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +0 -0
  329. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +0 -0
  330. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  331. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  332. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  333. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  334. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  335. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  336. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  337. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +0 -0
  338. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  339. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +0 -0
  340. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +0 -0
  341. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +0 -0
  342. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +0 -0
  343. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +0 -0
  344. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +0 -0
  345. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +0 -0
  346. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +0 -0
  347. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  348. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +0 -0
  349. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  350. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +0 -0
  351. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +0 -0
  352. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +0 -0
  353. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +0 -0
  354. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +0 -0
  355. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +0 -0
  356. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +0 -0
  357. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-run-train/README.md +0 -0
  358. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +0 -0
  359. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +0 -0
  360. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +0 -0
  361. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +0 -0
  362. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +0 -0
  363. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +0 -0
  364. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  365. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +0 -0
  366. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +0 -0
  367. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +0 -0
  368. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +0 -0
  369. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +0 -0
  370. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +0 -0
  371. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +0 -0
  372. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +0 -0
  373. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +0 -0
  374. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +0 -0
  375. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +0 -0
  376. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +0 -0
  377. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +0 -0
  378. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +0 -0
  379. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +0 -0
  380. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +0 -0
  381. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +0 -0
  382. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +0 -0
  383. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +0 -0
  384. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +0 -0
  385. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +0 -0
  386. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +0 -0
  387. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +0 -0
  388. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +0 -0
  389. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +0 -0
  390. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +0 -0
  391. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +0 -0
  392. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +0 -0
  393. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +0 -0
  394. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +0 -0
  395. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +0 -0
  396. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +0 -0
  397. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +0 -0
  398. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +0 -0
  399. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +0 -0
  400. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +0 -0
  401. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-run-train/README.md +0 -0
  402. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +0 -0
  403. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +0 -0
  404. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +0 -0
  405. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +0 -0
  406. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +0 -0
  407. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +0 -0
  408. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +0 -0
  409. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +0 -0
  410. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +0 -0
  411. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +0 -0
  412. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/state.py +0 -0
  413. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/state_degradation.py +0 -0
  414. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/state_ops.py +0 -0
  415. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/train_ledger.py +0 -0
  416. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/train_roadmap.py +0 -0
  417. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/train_runner.py +0 -0
  418. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/verification_evidence.py +0 -0
  419. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/verification_evidence_validator.py +0 -0
  420. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/visual_evidence_validator.py +0 -0
  421. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/worker_pool.py +0 -0
  422. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime/worktree_index.py +0 -0
  423. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime.egg-info/dependency_links.txt +0 -0
  424. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime.egg-info/entry_points.txt +0 -0
  425. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/src/phase_loop_runtime.egg-info/top_level.txt +0 -0
  426. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_advisory_mode.py +0 -0
  427. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_alias_install.py +0 -0
  428. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_backing_omnigent.py +0 -0
  429. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_concurrency.py +0 -0
  430. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_config.py +0 -0
  431. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_golden.py +0 -0
  432. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_ingestion.py +0 -0
  433. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_integration.py +0 -0
  434. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_matrix.py +0 -0
  435. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_observability.py +0 -0
  436. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_presets.py +0 -0
  437. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_registries.py +0 -0
  438. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_resolver.py +0 -0
  439. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_advisor_board_schema.py +0 -0
  440. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_agent_runtime_provider_cs08.py +0 -0
  441. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_branchgov_preflight.py +0 -0
  442. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_cli_train_status_45.py +0 -0
  443. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_closeout_break_glass_cli.py +0 -0
  444. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_closeout_classifier.py +0 -0
  445. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_closeout_convergence_fixes.py +0 -0
  446. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_closeout_exception_vocab.py +0 -0
  447. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_closeout_validator_hook.py +0 -0
  448. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_closeout_verification_gate.py +0 -0
  449. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_codex_effort_max_clamp_49.py +0 -0
  450. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_consiliency_dual_layout.py +0 -0
  451. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_consiliency_gates.py +0 -0
  452. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_consiliency_scaffold.py +0 -0
  453. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_coordinator_wave_loop.py +0 -0
  454. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_dispatch_lock_cross_roadmap.py +0 -0
  455. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_dispatch_lock_helper.py +0 -0
  456. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_dispatch_lock_same_roadmap.py +0 -0
  457. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_doc_delta_validator.py +0 -0
  458. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_docs_freshness.py +0 -0
  459. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_dotfiles_tree.py +0 -0
  460. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_execute_phase_handoff_mode.py +0 -0
  461. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_execution_policy_tiering.py +0 -0
  462. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_export_schema.py +0 -0
  463. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_fleet_map.py +0 -0
  464. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_fleet_metrics.py +0 -0
  465. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_fleet_metrics_export.py +0 -0
  466. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_gate_a_wheel_isolation.py +0 -0
  467. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_gate_posture.py +0 -0
  468. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_git_discipline.py +0 -0
  469. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_governed_disjointness_model_first.py +0 -0
  470. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_governed_e2e.py +0 -0
  471. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_governed_gate_crfixes.py +0 -0
  472. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_governed_planning_gate.py +0 -0
  473. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_governed_premerge.py +0 -0
  474. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_governed_premerge_live.py +0 -0
  475. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_hotfix_lane.py +0 -0
  476. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_injection_skill_failloud.py +0 -0
  477. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_lane_ir_override.py +0 -0
  478. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_launcher_liveness.py +0 -0
  479. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_lease_store.py +0 -0
  480. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_lease_store_conformance.py +0 -0
  481. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_ledger_serialization.py +0 -0
  482. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_model_class_policy.py +0 -0
  483. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_observability_alerting.py +0 -0
  484. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_panel_advisory_mode_63.py +0 -0
  485. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_panel_invoker_timeout_argv.py +0 -0
  486. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_panel_leg_auth_preflight_64.py +0 -0
  487. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_panel_per_leg_model_66.py +0 -0
  488. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_panel_tui_eof_48.py +0 -0
  489. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_panel_verdict_summary.py +0 -0
  490. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_parallel_dispatch_backcompat.py +0 -0
  491. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_parallel_dispatch_cli.py +0 -0
  492. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_adoption_bundle.py +0 -0
  493. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_adoption_bundle_cli.py +0 -0
  494. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_baml_dependency.py +0 -0
  495. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_baml_end_to_end.py +0 -0
  496. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_baml_injection.py +0 -0
  497. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_baml_modular.py +0 -0
  498. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_baml_prompt_taxonomy.py +0 -0
  499. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_baml_runner_closeout.py +0 -0
  500. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_baml_schema_export.py +0 -0
  501. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_baml_schema_source.py +0 -0
  502. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_branch_divergence_event.py +0 -0
  503. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_build_bundle.py +0 -0
  504. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_classifier.py +0 -0
  505. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_agent_view_adapter.py +0 -0
  506. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_agent_view_lifecycle.py +0 -0
  507. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_channel_hooks.py +0 -0
  508. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_channel_mcp.py +0 -0
  509. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_channel_security.py +0 -0
  510. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_channel_session_launch.py +0 -0
  511. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_channel_sidecar.py +0 -0
  512. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_channel_smoke_suite.py +0 -0
  513. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_claude_route_selection.py +0 -0
  514. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_cli.py +0 -0
  515. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_cli_plugin_load.py +0 -0
  516. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_closeout_control_only.py +0 -0
  517. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_closeout_event.py +0 -0
  518. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_closeout_evidence_audit.py +0 -0
  519. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_closeout_hardening.py +0 -0
  520. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_closeout_owned_dirty_fallback.py +0 -0
  521. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_closeout_schema.py +0 -0
  522. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_closeout_validation.py +0 -0
  523. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_collaborator_citation.py +0 -0
  524. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_collaborator_docs.py +0 -0
  525. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_collaborator_rollback.py +0 -0
  526. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_def4_writer_namespacing.py +0 -0
  527. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_dirty_path_classify_phase_owned_tests.py +0 -0
  528. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_dirty_path_classify_previous_phase_owned.py +0 -0
  529. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_discovery.py +0 -0
  530. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_docs.py +0 -0
  531. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_dotfiles_schemas.py +0 -0
  532. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_dotfiles_sources.py +0 -0
  533. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_downstream_governed_pipeline.py +0 -0
  534. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_downstream_instruction_scope_readme.py +0 -0
  535. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_downstream_portal.py +0 -0
  536. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_downstream_regenesis.py +0 -0
  537. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_drift_audit.py +0 -0
  538. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_dry_run_then_run.py +0 -0
  539. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_events_migration.py +0 -0
  540. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_evidence_audit.py +0 -0
  541. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_evidence_audit_runner.py +0 -0
  542. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_evidence_audit_tier2.py +0 -0
  543. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_evidence_audit_tier3.py +0 -0
  544. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_evidence_audit_tuning.py +0 -0
  545. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_execution_policy.py +0 -0
  546. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_executor_degradation.py +0 -0
  547. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_full_phase_mode.py +0 -0
  548. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_handoff.py +0 -0
  549. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_handoff_migration.py +0 -0
  550. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_init.py +0 -0
  551. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_injection.py +0 -0
  552. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_install_status.py +0 -0
  553. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_lane_harnesses.py +0 -0
  554. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_lane_ir.py +0 -0
  555. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_lane_ir_fixtures.py +0 -0
  556. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_lane_scheduler.py +0 -0
  557. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_launcher.py +0 -0
  558. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_ledger_debug.py +0 -0
  559. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_ledger_dedup.py +0 -0
  560. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_live_adapters.py +0 -0
  561. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_maintenance.py +0 -0
  562. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_metrics.py +0 -0
  563. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_migration_regressions.py +0 -0
  564. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_mixedrun_dispatch.py +0 -0
  565. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_mixedrun_matrix.py +0 -0
  566. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_mixedrun_observability.py +0 -0
  567. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_native_flags.py +0 -0
  568. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_parallel_plan_safe.py +0 -0
  569. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_pi_executor.py +0 -0
  570. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_pipeline_boundaries.py +0 -0
  571. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_pipeline_bridge.py +0 -0
  572. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_pipeline_closeout.py +0 -0
  573. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_pipeline_freshness.py +0 -0
  574. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_pipeline_mode.py +0 -0
  575. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_plan_doc_skip.py +0 -0
  576. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_plan_manifest.py +0 -0
  577. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_planner_redispatch_when_plan_current.py +0 -0
  578. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_planner_validation.py +0 -0
  579. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_policy.py +0 -0
  580. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_protocol_contract.py +0 -0
  581. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_provenance.py +0 -0
  582. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_reconcile.py +0 -0
  583. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_reconcile_blocker_self_clear.py +0 -0
  584. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_reconcile_recovery_mode.py +0 -0
  585. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_reconcile_to_status_planned_recovery.py +0 -0
  586. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_reducers.py +0 -0
  587. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_repair_skipped_when_blocker_cleared.py +0 -0
  588. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_roadmap_amendments.py +0 -0
  589. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_roadmap_validate.py +0 -0
  590. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_rotation.py +0 -0
  591. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_runner.py +0 -0
  592. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_runner_closeout_validation.py +0 -0
  593. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_runtime_decouple.py +0 -0
  594. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_runtime_package_data.py +0 -0
  595. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_runtime_projection.py +0 -0
  596. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_schema_flow.py +0 -0
  597. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_skill_baml_closeout.py +0 -0
  598. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_skill_bridge_contract.py +0 -0
  599. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_skill_contract.py +0 -0
  600. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_skill_execute_contract.py +0 -0
  601. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_skill_install.py +0 -0
  602. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_skill_planner_contract.py +0 -0
  603. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_smoke_blockers.py +0 -0
  604. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_smoke_exhaustion.py +0 -0
  605. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_smoke_reentry.py +0 -0
  606. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_spurious_completion_rejection.py +0 -0
  607. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_start_gate_phase_status.py +0 -0
  608. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_start_gate_refuses_cross_phase_dirty.py +0 -0
  609. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_state.py +0 -0
  610. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_status_transition_events_emitted.py +0 -0
  611. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_substrate_soak_docs.py +0 -0
  612. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_substrate_soak_governed.py +0 -0
  613. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_substrate_soak_portal.py +0 -0
  614. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_terminal_summary_mirrors_baml_closeout.py +0 -0
  615. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_v22_e2e.py +0 -0
  616. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_v22_principles.py +0 -0
  617. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_v45_found_contracts.py +0 -0
  618. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_v45_reconcile.py +0 -0
  619. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_v45_sched.py +0 -0
  620. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_v45_schedharden.py +0 -0
  621. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_wave_runner.py +0 -0
  622. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_work_unit_observability.py +0 -0
  623. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_work_unit_runner.py +0 -0
  624. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_work_unit_state.py +0 -0
  625. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_loop_worktrees.py +0 -0
  626. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_owned_dirty_relaxation.py +0 -0
  627. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_phase_worktree_executor.py +0 -0
  628. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_branch_ops_create.py +0 -0
  629. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_branch_ops_rebase_conflict.py +0 -0
  630. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_branch_ops_refuse_default.py +0 -0
  631. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_flag.py +0 -0
  632. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_markers.py +0 -0
  633. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_merge_policy_parse.py +0 -0
  634. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_ratification_event_payload.py +0 -0
  635. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_ratification_runner.py +0 -0
  636. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_ratification_skipped_standalone.py +0 -0
  637. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pipeline_adapter_standalone_regression.py +0 -0
  638. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_pkg_layout_freeze.py +0 -0
  639. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_plan_ir_iter_waves.py +0 -0
  640. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_preflight_verification.py +0 -0
  641. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_publishing.py +0 -0
  642. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_reconcile_manifest_dedup_46.py +0 -0
  643. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_reconcile_verification_log.py +0 -0
  644. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_reflection_sync.py +0 -0
  645. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_repo_validation.py +0 -0
  646. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_review_summary.py +0 -0
  647. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_route_log.py +0 -0
  648. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_route_policy_conformance.py +0 -0
  649. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_routing_invariants.py +0 -0
  650. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_runtime_state_mirror_agreement.py +0 -0
  651. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_sibling_matcher_patterns.py +0 -0
  652. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_skill_bundle_pinned.py +0 -0
  653. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_skill_install_body_expansion.py +0 -0
  654. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_skill_plan_manifest_write.py +0 -0
  655. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_skill_sources_seam.py +0 -0
  656. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_skills_bundle_drift.py +0 -0
  657. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_skills_canon_parity.py +0 -0
  658. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_skills_src_claude_literal_lint.py +0 -0
  659. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_spec_conformance_gate.py +0 -0
  660. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_sync_skills_apply_failloud.py +0 -0
  661. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_train_e2e.py +0 -0
  662. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_train_invariants.py +0 -0
  663. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_train_merge.py +0 -0
  664. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_train_order_only_deps_47.py +0 -0
  665. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_train_roadmap.py +0 -0
  666. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_train_runner.py +0 -0
  667. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_v34_parallel_dispatch_soak.py +0 -0
  668. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_validate_plan_doc_docs_lane.py +0 -0
  669. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_verification_evidence.py +0 -0
  670. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_verification_evidence_validator.py +0 -0
  671. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_visual_evidence_validator.py +0 -0
  672. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_workerpool_failure_isolation.py +0 -0
  673. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_workerpool_parallel.py +0 -0
  674. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/tests/test_workerpool_worktree_alloc.py +0 -0
  675. {phase_loop_runtime-0.3.0 → phase_loop_runtime-0.5.0}/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.3.0
3
+ Version: 0.5.0
4
4
  Summary: Harness-neutral phase-loop orchestration runtime and CLI
5
5
  Author: ViperJuice
6
6
  License-Expression: Apache-2.0
@@ -18,7 +18,7 @@ Description-Content-Type: text/markdown
18
18
  Requires-Dist: baml-py<0.223,>=0.222
19
19
  Requires-Dist: pydantic<3,>=2
20
20
  Requires-Dist: PyYAML<7,>=6
21
- Requires-Dist: consiliency-contract<0.7,>=0.6.3
21
+ Requires-Dist: consiliency-contract<0.7,>=0.6.5
22
22
  Requires-Dist: jsonschema<5,>=4
23
23
  Requires-Dist: tomli<3,>=2; python_version < "3.11"
24
24
 
@@ -104,3 +104,50 @@ The closeout verdict is runner-authoritative: when the runner rejects a child's
104
104
  closeout, the persisted `terminal-summary.json` reflects the runner's blocking verdict
105
105
  (the child's self-reported `complete`/`passed` is not overlaid back), preventing a
106
106
  stale "complete" summary from reconcile-skipping the work on the next run.
107
+
108
+ ## Conformance library (one library, two roles)
109
+
110
+ `phase_loop_runtime.conformance` is the named, stable, importable surface for the
111
+ deterministic `.consiliency/` conformance evaluator. It is a re-export (not a
112
+ re-implementation) of the same function the actor already runs, so an **external
113
+ CR-fence** — in gp CI, a git-host pre-merge check, anywhere — can import and run
114
+ the identical check:
115
+
116
+ ```python
117
+ from phase_loop_runtime.conformance import scan_consiliency_gates
118
+
119
+ verdict = scan_consiliency_gates("/path/to/repo") # {"status": "passed" | "warn" | "blocked" | "skipped", "gates": {...}, ...}
120
+ ```
121
+
122
+ The surface also exposes the pure cores (`evaluate_git_discipline`,
123
+ `self_heal_partition`, `evaluate_governance_scope`) for consumers that already
124
+ hold the injected facts.
125
+
126
+ **Two roles, one library.** This is meant to be mounted BOTH as the actor-side
127
+ self-check (a pre-PR sanity pass the author runs locally) AND as the
128
+ authoritative CR-fence (the real validator). The actor-side result is **never
129
+ authoritative** — the fence always re-runs the check itself. Because it is the
130
+ same function versioned with the same vendored `consiliency_contract`, the honest
131
+ actor sees exactly the verdict the fence will; a stale or dishonest actor result
132
+ simply does not matter.
133
+
134
+ **Scope.** This surface asserts the L0 **shape + governance** tier only. The
135
+ cert-schema tier and authority/provenance verification are explicitly out of
136
+ scope (delegated downstream / to gp).
137
+
138
+ ### `consiliency-ingest --check-only`
139
+
140
+ `--check-only` decouples "run the check" from "is this repo adopted". It is
141
+ strictly read-only (never shapes; ignores `--adopt`). It makes the exit code
142
+ verdict-significant so a pre-PR actor is never misled into reading a no-op — or a
143
+ failing verify — as a pass:
144
+
145
+ | Repo state | mode | exit |
146
+ |---|---|---|
147
+ | adopted, verify clean (or `warn`) | `verify` | `0` |
148
+ | adopted, gate scan `blocked` | `verify` | `1` |
149
+ | un-adopted (no `.consiliency/manifest`) | `not-adopted` | `3` |
150
+ | usage error | — | `2` |
151
+
152
+ The plain (non-`--check-only`) path is unchanged — it keeps the silent green
153
+ `skipped` no-op on an un-adopted repo and its existing exit `0`.
@@ -80,3 +80,50 @@ The closeout verdict is runner-authoritative: when the runner rejects a child's
80
80
  closeout, the persisted `terminal-summary.json` reflects the runner's blocking verdict
81
81
  (the child's self-reported `complete`/`passed` is not overlaid back), preventing a
82
82
  stale "complete" summary from reconcile-skipping the work on the next run.
83
+
84
+ ## Conformance library (one library, two roles)
85
+
86
+ `phase_loop_runtime.conformance` is the named, stable, importable surface for the
87
+ deterministic `.consiliency/` conformance evaluator. It is a re-export (not a
88
+ re-implementation) of the same function the actor already runs, so an **external
89
+ CR-fence** — in gp CI, a git-host pre-merge check, anywhere — can import and run
90
+ the identical check:
91
+
92
+ ```python
93
+ from phase_loop_runtime.conformance import scan_consiliency_gates
94
+
95
+ verdict = scan_consiliency_gates("/path/to/repo") # {"status": "passed" | "warn" | "blocked" | "skipped", "gates": {...}, ...}
96
+ ```
97
+
98
+ The surface also exposes the pure cores (`evaluate_git_discipline`,
99
+ `self_heal_partition`, `evaluate_governance_scope`) for consumers that already
100
+ hold the injected facts.
101
+
102
+ **Two roles, one library.** This is meant to be mounted BOTH as the actor-side
103
+ self-check (a pre-PR sanity pass the author runs locally) AND as the
104
+ authoritative CR-fence (the real validator). The actor-side result is **never
105
+ authoritative** — the fence always re-runs the check itself. Because it is the
106
+ same function versioned with the same vendored `consiliency_contract`, the honest
107
+ actor sees exactly the verdict the fence will; a stale or dishonest actor result
108
+ simply does not matter.
109
+
110
+ **Scope.** This surface asserts the L0 **shape + governance** tier only. The
111
+ cert-schema tier and authority/provenance verification are explicitly out of
112
+ scope (delegated downstream / to gp).
113
+
114
+ ### `consiliency-ingest --check-only`
115
+
116
+ `--check-only` decouples "run the check" from "is this repo adopted". It is
117
+ strictly read-only (never shapes; ignores `--adopt`). It makes the exit code
118
+ verdict-significant so a pre-PR actor is never misled into reading a no-op — or a
119
+ failing verify — as a pass:
120
+
121
+ | Repo state | mode | exit |
122
+ |---|---|---|
123
+ | adopted, verify clean (or `warn`) | `verify` | `0` |
124
+ | adopted, gate scan `blocked` | `verify` | `1` |
125
+ | un-adopted (no `.consiliency/manifest`) | `not-adopted` | `3` |
126
+ | usage error | — | `2` |
127
+
128
+ The plain (non-`--check-only`) path is unchanged — it keeps the silent green
129
+ `skipped` no-op on an un-adopted repo and its existing exit `0`.
@@ -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.3.0"
7
+ version = "0.5.0"
8
8
  description = "Harness-neutral phase-loop orchestration runtime and CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -32,7 +32,17 @@ dependencies = [
32
32
  # < 0.6.2 stays safe; the floor guarantees the teeth are present. Warn-default remains;
33
33
  # human_required is never set. (0.6.0 shipped self-inconsistent version refs -> fixed in
34
34
  # 0.6.1, contract PR #18.)
35
- "consiliency-contract>=0.6.3,<0.7",
35
+ #
36
+ # PIN (PSCAT-PL, roadmap Phase 2B): floor at 0.6.5 -- ships the
37
+ # `protected_source_categories` registry that OWNS the coarse
38
+ # protected_source_category vocabulary (the six pre-existing buckets +
39
+ # `governance_contracts`). phase-loop reads that registry via
40
+ # `consiliency_contract.load_registry` and validates against it as the SoT
41
+ # (models.py `protected_source_categories()`), replacing the hardcoded enum.
42
+ # Registry-present is authoritative; the runtime still degrades to the legacy
43
+ # six-tuple if a caller runs an older contract (no hard crash), but this floor
44
+ # guarantees the contract-owned vocabulary (incl. governance_contracts) is live.
45
+ "consiliency-contract>=0.6.5,<0.7",
36
46
  "jsonschema>=4,<5",
37
47
  # Advisor Board config loader (ABDREG) parses advisor-boards.toml. tomllib is
38
48
  # stdlib on 3.11+; on the 3.10 requires-python floor it is absent, so pull in
@@ -3,6 +3,7 @@
3
3
  __all__ = [
4
4
  "__version__",
5
5
  "cli",
6
+ "conformance",
6
7
  "discovery",
7
8
  "handoff",
8
9
  "maintenance",
@@ -17,4 +18,4 @@ __all__ = [
17
18
  "state_ops",
18
19
  ]
19
20
 
20
- __version__ = "0.3.0"
21
+ __version__ = "0.5.0"
@@ -129,6 +129,7 @@ roots. See `docs/phase-loop/spec-discovery-roots.md`.
129
129
  The following modules under `phase_loop_runtime.*` are considered public:
130
130
 
131
131
  - `phase_loop_runtime.cli`: CLI entrypoint and parser definition.
132
+ - `phase_loop_runtime.conformance`: Named conformance-check surface (the six L0 consiliency gates) for actor-side self-check and the CR-fence.
132
133
  - `phase_loop_runtime.discovery`: Roadmap and repository resolution.
133
134
  - `phase_loop_runtime.handoff`: TUI handoff generation and metadata.
134
135
  - `phase_loop_runtime.models`: Core data models, schemas, and literals.
@@ -264,11 +264,14 @@ building `artifact: str` forces the caller to hold the whole (20k+ token) bundle
264
264
  its own context. `artifact_ref` / `brief_ref` promote that to by-reference ingestion:
265
265
  the caller passes a PATH and the runtime reads it.
266
266
 
267
- - **Entry points.** `invoke_panel`, `invoke_board`, and `invoke_panel_request` accept
268
- keyword-only `artifact_ref: str | Sequence[str] | None` and `brief_ref: str | None`
267
+ - **Entry points.** `invoke_panel` and `invoke_board` accept keyword-only
268
+ `artifact_ref: str | Sequence[str] | None` and `brief_ref: str | None`
269
269
  (default-valued additive extensions to the frozen signatures — back-compat, like
270
- `models` / `max_concurrency`). The artifact is resolved at the TOP of the entry
271
- point so timeout scaling, staging, and metadata all see the resolved content.
270
+ `models` / `max_concurrency`). `invoke_panel_request` consumes
271
+ `PanelRequest.artifact_ref` but deliberately does not define `PanelRequest.brief_ref`
272
+ in this contract; callers that need a custom brief use the direct `invoke_panel` or
273
+ `invoke_board` entry point. The artifact is resolved at the TOP of the entry point
274
+ so timeout scaling, staging, and metadata all see the resolved content.
272
275
  - **`_resolve_artifact(artifact, artifact_ref)`.** `artifact_ref is None` →
273
276
  `artifact or ""` (today's bytes, verbatim). A single path (a bare string OR a
274
277
  one-element sequence) returns the file content VERBATIM — no header — so
@@ -298,6 +301,60 @@ the caller passes a PATH and the runtime reads it.
298
301
  `_exec_leg`; Proof B injects `spawn=`) is untouched;
299
302
  `tests/test_advisor_board_ingestion.py` proves the new path is byte-transparent.
300
303
 
304
+ ## CTXFREEZE — Context references and panel reliability (#114)
305
+
306
+ CTXFREEZE freezes the #114 public contract for downstream implementation and
307
+ documentation phases. It does not claim that `artifact_ref` or `brief_ref` are true
308
+ non-inlining modes: both are read-file-and-inline conveniences that keep bytes out
309
+ of the caller context but still stage raw contents for each leg.
310
+
311
+ - **Ingestion modes and precedence.** `artifact` is inline text. `artifact_ref` is a
312
+ file path, or ordered path sequence, whose contents replace `artifact` when both
313
+ are supplied. `brief_ref` is a file path used only by `invoke_panel` and
314
+ `invoke_board`; it replaces the generated review/advisory instruction file.
315
+ `context_refs` is the only true by-reference mode. `invoke_panel_request` threads
316
+ `PanelRequest.artifact_ref`, `PanelRequest.context_refs`,
317
+ `PanelRequest.context_refs_soft_warn`, and `PanelRequest.timeout_seconds_by_leg`;
318
+ `PanelRequest.brief_ref` is explicitly out of contract for this phase.
319
+ - **True by-reference manifest.** `context_refs` appends a deterministic manifest to
320
+ the already-resolved artifact. Each entry is emitted in caller order and contains a
321
+ JSON-escaped absolute path, byte count, streamed SHA-256 digest, untrusted MIME
322
+ guess, untrusted extension hint, and optional best-effort PDF page count. Raw file
323
+ contents are not written into `review-bundle.md`, prompt text, or the manifest.
324
+ - **Metadata sensitivity.** Absolute pathnames and hashes can disclose sensitive
325
+ project names, customer names, filenames, document structure, and content
326
+ fingerprints even when raw bytes are not inlined. Callers should treat the
327
+ manifest as metadata-bearing, not private-by-construction.
328
+ - **Filesystem boundary.** Paths are interpreted relative to the current process
329
+ working directory when relative and are reported as `Path.resolve()` absolute
330
+ paths. Entries must be regular files at validation time; missing paths,
331
+ directories, devices, and other non-regular files fail closed by default. Symlinks
332
+ are followed only if their resolved target is a regular file under normal OS path
333
+ resolution. The runtime opens the file once to stream size/hash metadata and, for
334
+ PDF-looking files only, may reopen a bounded prefix for page counting; CTXIMPL owns
335
+ any stronger root jail or TOCTOU hardening.
336
+ - **Provider and backing limits.** `context_refs` assumes the selected provider and
337
+ backing can access the same local filesystem path from the leg runtime. Remote,
338
+ sandboxed, or service-backed harnesses may not have local file access even when
339
+ the manifest validates on the caller host.
340
+ - **Soft-warning opt-in.** Missing or unreadable `context_refs` raise `ValueError`
341
+ unless `context_refs_soft_warn=True`. Soft warning logs a warning and emits a
342
+ `MISSING` or `UNREADABLE` entry. The manifest instruction text remains strict:
343
+ a leg must not infer, guess, or fabricate unavailable contents.
344
+ - **Output-boundary claim.** The frozen privacy claim is runtime non-inlining only:
345
+ referenced contents are absent from the staged bundle and prompt produced by this
346
+ runtime path. This is not a global DLP guarantee for provider logs, human-visible
347
+ outputs, handoffs, screenshots, shell commands, or tools the leg chooses to run
348
+ after reading a referenced file. A leg may disclose file contents after it
349
+ intentionally inspects a referenced path unless an output policy forbids that
350
+ disclosure.
351
+ - **Reliability names.** Direct entry points accept `timeouts_by_leg`; `PanelRequest`
352
+ uses `timeout_seconds_by_leg`. Both feed the same per-leg override. Unset legs keep
353
+ input-scaled defaults. The codex and gemini CLI legs retry one fast soft-empty or
354
+ transient-stall result once, guarded by elapsed-time fraction; hard subprocess
355
+ timeouts return timeout status without retry. CTXRELY owns any follow-on reliability
356
+ split beyond these frozen names and retry/timeout invariants.
357
+
301
358
  ## ABDMODE — Purpose-derived default mode + advisory prompt hygiene · `panel_invoker.py` (#107)
302
359
 
303
360
  A board's PURPOSE now selects its default panel MODE automatically, so a domain
@@ -414,6 +414,16 @@ def build_parser() -> argparse.ArgumentParser:
414
414
  action="store_true",
415
415
  help="Consent to shape an unmanaged repo (no-op without this flag when no manifest exists yet).",
416
416
  )
417
+ sub.add_argument(
418
+ "--check-only",
419
+ action="store_true",
420
+ help=(
421
+ "Run the conformance check only; never shape (ignores --adopt). "
422
+ "On an adopted repo this is the verify pass. On an UN-ADOPTED repo "
423
+ "it emits an explicit 'not adopted / nothing to verify' signal and "
424
+ "exits non-zero (3), so a no-op is never mistaken for a pass."
425
+ ),
426
+ )
417
427
  sub.add_argument(
418
428
  "--archetype",
419
429
  action="append",
@@ -660,6 +670,28 @@ def build_parser() -> argparse.ArgumentParser:
660
670
  action="store_true",
661
671
  help="Emit the ledger state as JSON.",
662
672
  )
673
+ outside_agent_sub = subparsers.add_parser(
674
+ "outside-agent-preflight",
675
+ help="Emit advisory metadata-only outside-agent preflight evidence.",
676
+ )
677
+ outside_agent_sub.add_argument("submission_file", metavar="submission-file")
678
+ outside_agent_sub.add_argument("--output", help="Path to write advisory evidence JSON.")
679
+ outside_agent_validate_sub = subparsers.add_parser(
680
+ "outside-agent-validate",
681
+ help="Emit governed-pipeline outside-agent validation verdict JSON.",
682
+ )
683
+ outside_agent_validate_sub.add_argument("submission_file", metavar="submission-file")
684
+ outside_agent_validate_sub.add_argument(
685
+ "--output",
686
+ required=True,
687
+ help="Path to write governed-pipeline validation verdict JSON.",
688
+ )
689
+ outside_agent_validate_sub.add_argument(
690
+ "--submitted-ref",
691
+ action="append",
692
+ default=[],
693
+ help="Repo-relative ref submitted to governed-pipeline; may be repeated.",
694
+ )
663
695
  # DECOUPLE SL-1: dotfiles-domain commands are added here, only when a profile
664
696
  # plugin is installed/opted-in. A clean wheel registers none.
665
697
  _register_profile_commands(subparsers)
@@ -741,6 +773,10 @@ def _main(parser: argparse.ArgumentParser, args: argparse.Namespace, command: st
741
773
  return _run_train_command(parser=parser, args=args)
742
774
  if command == "train-status":
743
775
  return _run_train_status_command(parser=parser, args=args)
776
+ if command == "outside-agent-preflight":
777
+ return _outside_agent_preflight_command(args=args)
778
+ if command == "outside-agent-validate":
779
+ return _outside_agent_validate_command(args=args)
744
780
  if command == "docs-audit":
745
781
  from . import docs_audit
746
782
 
@@ -1118,6 +1154,78 @@ def _main(parser: argparse.ArgumentParser, args: argparse.Namespace, command: st
1118
1154
  return _run_returncode(snapshot, results)
1119
1155
 
1120
1156
 
1157
+ def _outside_agent_preflight_command(args: argparse.Namespace) -> int:
1158
+ from .conformance.outside_agent_advisory import (
1159
+ build_malformed_outside_agent_advisory_evidence,
1160
+ build_outside_agent_advisory_evidence,
1161
+ digest_outside_agent_submission_bytes,
1162
+ serialize_outside_agent_advisory_evidence,
1163
+ )
1164
+
1165
+ submission_path = Path(args.submission_file)
1166
+ try:
1167
+ raw = submission_path.read_bytes()
1168
+ except OSError as exc:
1169
+ evidence = build_malformed_outside_agent_advisory_evidence(
1170
+ input_digest=digest_outside_agent_submission_bytes(str(submission_path).encode("utf-8")),
1171
+ message=f"outside-agent submission JSON could not be read: {exc.__class__.__name__}",
1172
+ )
1173
+ else:
1174
+ try:
1175
+ submission = json.loads(raw.decode("utf-8"))
1176
+ except (UnicodeDecodeError, json.JSONDecodeError):
1177
+ evidence = build_malformed_outside_agent_advisory_evidence(
1178
+ input_digest=digest_outside_agent_submission_bytes(raw),
1179
+ )
1180
+ else:
1181
+ evidence = build_outside_agent_advisory_evidence(submission)
1182
+
1183
+ payload = serialize_outside_agent_advisory_evidence(evidence)
1184
+ text = json.dumps(payload, indent=2, sort_keys=True) + "\n"
1185
+ if args.output:
1186
+ Path(args.output).write_text(text, encoding="utf-8")
1187
+ print(text, end="")
1188
+ return int(evidence.exit_code)
1189
+
1190
+
1191
+ def _outside_agent_validate_command(args: argparse.Namespace) -> int:
1192
+ from .conformance.outside_agent_real import (
1193
+ build_malformed_outside_agent_validation_verdict,
1194
+ build_outside_agent_validation_verdict,
1195
+ )
1196
+ from .conformance.outside_agent_real_output import (
1197
+ digest_outside_agent_validation_bytes,
1198
+ serialize_outside_agent_validation_verdict,
1199
+ )
1200
+
1201
+ submission_path = Path(args.submission_file)
1202
+ try:
1203
+ raw = submission_path.read_bytes()
1204
+ except OSError as exc:
1205
+ validation = build_malformed_outside_agent_validation_verdict(
1206
+ input_digest=digest_outside_agent_validation_bytes(str(submission_path).encode("utf-8")),
1207
+ message=f"outside-agent submission JSON could not be read: {exc.__class__.__name__}",
1208
+ )
1209
+ else:
1210
+ try:
1211
+ submission = json.loads(raw.decode("utf-8"))
1212
+ except (UnicodeDecodeError, json.JSONDecodeError):
1213
+ validation = build_malformed_outside_agent_validation_verdict(
1214
+ input_digest=digest_outside_agent_validation_bytes(raw),
1215
+ )
1216
+ else:
1217
+ validation = build_outside_agent_validation_verdict(
1218
+ submission,
1219
+ submitted_refs=tuple(args.submitted_ref or ()),
1220
+ )
1221
+
1222
+ payload = serialize_outside_agent_validation_verdict(validation)
1223
+ text = json.dumps(payload, indent=2, sort_keys=True) + "\n"
1224
+ Path(args.output).write_text(text, encoding="utf-8")
1225
+ print(text, end="")
1226
+ return int(validation.exit_code)
1227
+
1228
+
1121
1229
  def _parse_lane_ir_override(parser: argparse.ArgumentParser, args: argparse.Namespace, command: str) -> tuple[str, ...]:
1122
1230
  raw = getattr(args, "allow_lane_ir_override", None)
1123
1231
  if raw is None:
@@ -1634,6 +1742,7 @@ def _consiliency_ingest_command(*, repo: Path, args: argparse.Namespace, as_json
1634
1742
  archetypes = tuple(dict.fromkeys(getattr(args, "archetype", None) or ()))
1635
1743
  modifiers = tuple(dict.fromkeys(getattr(args, "modifier", None) or ()))
1636
1744
  baseline_only = bool(getattr(args, "baseline_only", False))
1745
+ check_only = bool(getattr(args, "check_only", False))
1637
1746
  if baseline_only and (archetypes or modifiers):
1638
1747
  print("phase-loop consiliency-ingest: --baseline-only is mutually exclusive with --archetype/--modifier", file=sys.stderr)
1639
1748
  return 2
@@ -1641,6 +1750,7 @@ def _consiliency_ingest_command(*, repo: Path, args: argparse.Namespace, as_json
1641
1750
  result = ingest(
1642
1751
  repo,
1643
1752
  adopt=bool(getattr(args, "adopt", False)),
1753
+ check_only=check_only,
1644
1754
  mode="baseline-only" if baseline_only else "archetyped",
1645
1755
  archetypes=archetypes,
1646
1756
  modifiers=modifiers,
@@ -1658,6 +1768,8 @@ def _consiliency_ingest_command(*, repo: Path, args: argparse.Namespace, as_json
1658
1768
  print(f"phase-loop consiliency-ingest: {result.mode} {result.manifest_path}")
1659
1769
  if result.mode == "skipped":
1660
1770
  print(" no .consiliency/manifest and --adopt was not passed; repo left untouched")
1771
+ if result.mode == "not-adopted":
1772
+ print(" NOT ADOPTED: no .consiliency/manifest -- nothing to verify (a no-op is not a pass)")
1661
1773
  if result.mode == "shape":
1662
1774
  created = (result.scaffold or {}).get("created_paths", [])
1663
1775
  print(f" scaffolded {len(created)} doc(s); proposed governed_set entries: {len(result.governed_set)}")
@@ -1665,6 +1777,19 @@ def _consiliency_ingest_command(*, repo: Path, args: argparse.Namespace, as_json
1665
1777
  print(f" gate scan: {result.gate_scan.get('status')}")
1666
1778
  for finding in result.findings:
1667
1779
  print(f" finding: {finding.get('code')} ({finding.get('path')})")
1780
+ # --check-only makes the exit code verdict-significant, so a pre-PR actor is
1781
+ # never misled into reading a no-op OR a failing verify as a pass:
1782
+ # 3 -> not adopted / nothing to verify (distinct from a pass)
1783
+ # 1 -> adopted but the gate scan is BLOCKED (a real conformance failure)
1784
+ # 0 -> adopted + verify clean (warn stays 0: soft by default)
1785
+ # 2 remains the usage-error code. The plain (non --check-only) path is
1786
+ # UNCHANGED -- it keeps returning 0 exactly as before (see report note on
1787
+ # the pre-existing blocked->0 gap on the plain command).
1788
+ if check_only:
1789
+ if result.mode == "not-adopted":
1790
+ return 3
1791
+ if result.gate_scan is not None and result.gate_scan.get("status") == "blocked":
1792
+ return 1
1668
1793
  return 0
1669
1794
 
1670
1795
 
@@ -15,9 +15,9 @@ from .closeout_validators import (
15
15
  from .models import (
16
16
  PIPELINE_CLOSEOUT_OUTCOMES,
17
17
  PIPELINE_CLOSEOUT_SCHEMA,
18
- PIPELINE_PROTECTED_SOURCE_CATEGORIES,
19
18
  PIPELINE_PROTECTED_SOURCE_LEGACY_ROLES,
20
19
  PIPELINE_PROTECTED_SOURCE_ROLES,
20
+ protected_source_categories,
21
21
  SPEC_DELTA_CLOSEOUT_SCHEMA,
22
22
  SPEC_DELTA_DECISIONS,
23
23
  DirtyPathClassification,
@@ -625,7 +625,7 @@ def phase_loop_closeout_diagnostic(payload: Mapping[str, Any] | None) -> dict[st
625
625
  return {"kind": "malformed_closeout", "message": "closeout source_bundle.protected_sources entries must be objects"}
626
626
  category = item.get("category")
627
627
  role = item.get("role")
628
- if category not in PIPELINE_PROTECTED_SOURCE_CATEGORIES:
628
+ if category not in protected_source_categories():
629
629
  return {"kind": "malformed_closeout", "message": "closeout source_bundle protected source has invalid category"}
630
630
  if role is not None and role not in PIPELINE_PROTECTED_SOURCE_ROLES and role not in PIPELINE_PROTECTED_SOURCE_LEGACY_ROLES:
631
631
  return {"kind": "malformed_closeout", "message": "closeout source_bundle protected source has invalid role"}
@@ -0,0 +1,79 @@
1
+ """``phase_loop_runtime.conformance`` -- the named conformance surface.
2
+
3
+ This package preserves the existing public ``.consiliency/`` conformance
4
+ imports while providing a namespace for outside-agent contract pin helpers.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ from ..consiliency_gates import (
9
+ CONSILIENCY_GATES_ENV,
10
+ CONSILIENCY_GATES_MODES,
11
+ DEFAULT_CONSILIENCY_GATES_MODE,
12
+ resolve_consiliency_gates_mode,
13
+ scan_consiliency_gates,
14
+ )
15
+ from ..consiliency_ingest import evaluate_governance_scope
16
+ from ..git_discipline import evaluate_git_discipline, self_heal_partition
17
+ from .outside_agent_core import (
18
+ OutsideAgentBlocker,
19
+ OutsideAgentConformanceVerdict,
20
+ OutsideAgentEvidenceRef,
21
+ OutsideAgentSubmissionKind,
22
+ OutsideAgentVerdictStatus,
23
+ validate_outside_agent_submission,
24
+ )
25
+ from .outside_agent_advisory import (
26
+ OutsideAgentAdvisoryEvidence,
27
+ OutsideAgentAdvisoryExitCode,
28
+ build_outside_agent_advisory_evidence,
29
+ serialize_outside_agent_advisory_evidence,
30
+ )
31
+ from .outside_agent_imports import (
32
+ OutsideAgentContractError,
33
+ load_outside_agent_contract_pin,
34
+ )
35
+ from .outside_agent_pin import (
36
+ EXPECTED_OUTSIDE_AGENT_CONTRACT_PIN,
37
+ OutsideAgentContractPin,
38
+ )
39
+ from .outside_agent_real import (
40
+ OutsideAgentSubmittedRef,
41
+ OutsideAgentValidationExitCode,
42
+ OutsideAgentValidationVerdict,
43
+ build_outside_agent_validation_verdict,
44
+ )
45
+ from .outside_agent_real_output import (
46
+ digest_outside_agent_validation_bytes,
47
+ serialize_outside_agent_validation_verdict,
48
+ )
49
+
50
+ __all__ = [
51
+ "scan_consiliency_gates",
52
+ "resolve_consiliency_gates_mode",
53
+ "CONSILIENCY_GATES_ENV",
54
+ "CONSILIENCY_GATES_MODES",
55
+ "DEFAULT_CONSILIENCY_GATES_MODE",
56
+ "evaluate_git_discipline",
57
+ "self_heal_partition",
58
+ "evaluate_governance_scope",
59
+ "OutsideAgentBlocker",
60
+ "OutsideAgentConformanceVerdict",
61
+ "OutsideAgentEvidenceRef",
62
+ "OutsideAgentSubmissionKind",
63
+ "OutsideAgentVerdictStatus",
64
+ "validate_outside_agent_submission",
65
+ "OutsideAgentAdvisoryEvidence",
66
+ "OutsideAgentAdvisoryExitCode",
67
+ "build_outside_agent_advisory_evidence",
68
+ "serialize_outside_agent_advisory_evidence",
69
+ "OutsideAgentContractError",
70
+ "load_outside_agent_contract_pin",
71
+ "EXPECTED_OUTSIDE_AGENT_CONTRACT_PIN",
72
+ "OutsideAgentContractPin",
73
+ "OutsideAgentSubmittedRef",
74
+ "OutsideAgentValidationExitCode",
75
+ "OutsideAgentValidationVerdict",
76
+ "build_outside_agent_validation_verdict",
77
+ "digest_outside_agent_validation_bytes",
78
+ "serialize_outside_agent_validation_verdict",
79
+ ]