phase-loop-runtime 0.2.0__py3-none-any.whl

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 (370) hide show
  1. phase_loop_runtime/__init__.py +20 -0
  2. phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +90 -0
  3. phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +137 -0
  4. phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +510 -0
  5. phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +125 -0
  6. phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +232 -0
  7. phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +247 -0
  8. phase_loop_runtime/_contract_docs/phase-loop/protocol.md +2759 -0
  9. phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +289 -0
  10. phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +47 -0
  11. phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +42 -0
  12. phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +34 -0
  13. phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +29 -0
  14. phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +32 -0
  15. phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +52 -0
  16. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +2 -0
  17. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +16 -0
  18. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +5 -0
  19. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +16 -0
  20. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +2 -0
  21. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +16 -0
  22. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +6 -0
  23. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +16 -0
  24. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +7 -0
  25. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +2 -0
  26. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +16 -0
  27. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +16 -0
  28. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-a.txt +1 -0
  29. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-b.txt +1 -0
  30. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-c.txt +1 -0
  31. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/claimed-results.json +5 -0
  32. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +16 -0
  33. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/manifest.json +16 -0
  34. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/metrics.json +9 -0
  35. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +10 -0
  36. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +16 -0
  37. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +16 -0
  38. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +4 -0
  39. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +1 -0
  40. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/bundle-check.json +8 -0
  41. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +16 -0
  42. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/operator-note.txt +2 -0
  43. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/events-sample.jsonl +3 -0
  44. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +16 -0
  45. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +1 -0
  46. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +13 -0
  47. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +16 -0
  48. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +2 -0
  49. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +16 -0
  50. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +9 -0
  51. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +4 -0
  52. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/console-summary.txt +2 -0
  53. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/manifest.json +16 -0
  54. phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/screenshot-standin.ppm +5 -0
  55. phase_loop_runtime/adoption_bundle.py +273 -0
  56. phase_loop_runtime/advisor_board/CONTRACTS.md +257 -0
  57. phase_loop_runtime/advisor_board/__init__.py +288 -0
  58. phase_loop_runtime/advisor_board/backing.py +137 -0
  59. phase_loop_runtime/advisor_board/backing_omnigent.py +498 -0
  60. phase_loop_runtime/advisor_board/config.py +225 -0
  61. phase_loop_runtime/advisor_board/events.py +115 -0
  62. phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +59 -0
  63. phase_loop_runtime/advisor_board/fixtures.py +91 -0
  64. phase_loop_runtime/advisor_board/harness_mapping.py +125 -0
  65. phase_loop_runtime/advisor_board/matrix.py +146 -0
  66. phase_loop_runtime/advisor_board/observability.py +481 -0
  67. phase_loop_runtime/advisor_board/presets.py +188 -0
  68. phase_loop_runtime/advisor_board/registries.py +309 -0
  69. phase_loop_runtime/advisor_board/resolver.py +253 -0
  70. phase_loop_runtime/advisor_board/schema.py +269 -0
  71. phase_loop_runtime/advisor_board/standin.py +166 -0
  72. phase_loop_runtime/advisor_board/validation.py +159 -0
  73. phase_loop_runtime/agent_runtime_provider.py +676 -0
  74. phase_loop_runtime/baml_modular.py +656 -0
  75. phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +37 -0
  76. phase_loop_runtime/baml_src/dotfiles_c4_document.baml +14 -0
  77. phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +50 -0
  78. phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +16 -0
  79. phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +20 -0
  80. phase_loop_runtime/baml_src/emit_phase_closeout.baml +86 -0
  81. phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +36 -0
  82. phase_loop_runtime/baml_src/verification_evidence.baml +40 -0
  83. phase_loop_runtime/broker.py +181 -0
  84. phase_loop_runtime/build_bundle.py +294 -0
  85. phase_loop_runtime/capability_registry.py +835 -0
  86. phase_loop_runtime/classifier.py +87 -0
  87. phase_loop_runtime/claude_agent_view.py +625 -0
  88. phase_loop_runtime/claude_channel_sidecar.py +1086 -0
  89. phase_loop_runtime/cli.py +2599 -0
  90. phase_loop_runtime/closeout.py +865 -0
  91. phase_loop_runtime/closeout_classifier.py +120 -0
  92. phase_loop_runtime/closeout_evidence_audit.py +112 -0
  93. phase_loop_runtime/closeout_validation.py +144 -0
  94. phase_loop_runtime/closeout_validators.py +203 -0
  95. phase_loop_runtime/consiliency_gates.py +374 -0
  96. phase_loop_runtime/consiliency_ingest.py +399 -0
  97. phase_loop_runtime/consiliency_layout.py +176 -0
  98. phase_loop_runtime/consiliency_scaffold.py +305 -0
  99. phase_loop_runtime/cross_repo_channel.py +331 -0
  100. phase_loop_runtime/discovery.py +2368 -0
  101. phase_loop_runtime/dispatch_lock.py +167 -0
  102. phase_loop_runtime/doc_delta_validator.py +98 -0
  103. phase_loop_runtime/docs_audit.py +285 -0
  104. phase_loop_runtime/docs_freshness.py +468 -0
  105. phase_loop_runtime/docs_surfaces.py +150 -0
  106. phase_loop_runtime/dotfiles_profile_plugin.py +96 -0
  107. phase_loop_runtime/events.py +154 -0
  108. phase_loop_runtime/events_migration.py +96 -0
  109. phase_loop_runtime/evidence_audit.py +1082 -0
  110. phase_loop_runtime/evidence_audit_config.py +172 -0
  111. phase_loop_runtime/fleet_map.py +426 -0
  112. phase_loop_runtime/fleet_metrics.py +298 -0
  113. phase_loop_runtime/fleet_metrics_export.py +196 -0
  114. phase_loop_runtime/git_discipline.py +479 -0
  115. phase_loop_runtime/git_ops.py +122 -0
  116. phase_loop_runtime/git_topology.py +252 -0
  117. phase_loop_runtime/governed_bundle.py +137 -0
  118. phase_loop_runtime/governed_premerge.py +219 -0
  119. phase_loop_runtime/governed_review.py +264 -0
  120. phase_loop_runtime/handoff.py +932 -0
  121. phase_loop_runtime/handoff_path.py +14 -0
  122. phase_loop_runtime/injection.py +740 -0
  123. phase_loop_runtime/install_status.py +88 -0
  124. phase_loop_runtime/lane_scheduler.py +317 -0
  125. phase_loop_runtime/launcher.py +2760 -0
  126. phase_loop_runtime/lease_store.py +553 -0
  127. phase_loop_runtime/maintenance.py +401 -0
  128. phase_loop_runtime/migrate_handoffs.py +201 -0
  129. phase_loop_runtime/models.py +2144 -0
  130. phase_loop_runtime/observability.py +1290 -0
  131. phase_loop_runtime/panel_invoker.py +1638 -0
  132. phase_loop_runtime/phase_loop_drift_audit.py +388 -0
  133. phase_loop_runtime/phase_worktree_executor.py +433 -0
  134. phase_loop_runtime/pipeline_adapter/__init__.py +12 -0
  135. phase_loop_runtime/pipeline_adapter/branch_ops.py +274 -0
  136. phase_loop_runtime/pipeline_adapter/flag.py +55 -0
  137. phase_loop_runtime/pipeline_adapter/markers.py +13 -0
  138. phase_loop_runtime/pipeline_adapter/merge_policy.py +72 -0
  139. phase_loop_runtime/pipeline_adapter/ratification.py +100 -0
  140. phase_loop_runtime/pipeline_adapter/sibling_matcher.py +123 -0
  141. phase_loop_runtime/plan_ir.py +523 -0
  142. phase_loop_runtime/plan_manifest.py +415 -0
  143. phase_loop_runtime/planner_validation.py +176 -0
  144. phase_loop_runtime/profiles.py +462 -0
  145. phase_loop_runtime/prompts.py +365 -0
  146. phase_loop_runtime/provenance.py +165 -0
  147. phase_loop_runtime/publishing.py +339 -0
  148. phase_loop_runtime/py.typed +1 -0
  149. phase_loop_runtime/reconcile.py +1550 -0
  150. phase_loop_runtime/redaction.py +184 -0
  151. phase_loop_runtime/reflection_sync.py +293 -0
  152. phase_loop_runtime/release_guard.py +186 -0
  153. phase_loop_runtime/render.py +432 -0
  154. phase_loop_runtime/repo_validation.py +427 -0
  155. phase_loop_runtime/review_summary.py +150 -0
  156. phase_loop_runtime/roadmap_lint.py +425 -0
  157. phase_loop_runtime/route_log.py +59 -0
  158. phase_loop_runtime/route_policy/__init__.py +11 -0
  159. phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +263 -0
  160. phase_loop_runtime/runner.py +8400 -0
  161. phase_loop_runtime/runtime_paths.py +225 -0
  162. phase_loop_runtime/runtime_projection.py +113 -0
  163. phase_loop_runtime/runtime_resources.py +36 -0
  164. phase_loop_runtime/schema_export.py +292 -0
  165. phase_loop_runtime/schemas/phase_loop_closeout.schema.json +366 -0
  166. phase_loop_runtime/skill_install.py +176 -0
  167. phase_loop_runtime/skill_inventory.py +662 -0
  168. phase_loop_runtime/skill_paths.py +42 -0
  169. phase_loop_runtime/skill_sources_plugin.py +37 -0
  170. phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +1 -0
  171. phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +38 -0
  172. phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +1 -0
  173. phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +38 -0
  174. phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +1 -0
  175. phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +152 -0
  176. phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +1 -0
  177. phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +745 -0
  178. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +33 -0
  179. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +197 -0
  180. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/cleanup_lane_worktrees.sh +103 -0
  181. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +125 -0
  182. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +62 -0
  183. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +127 -0
  184. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +51 -0
  185. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +274 -0
  186. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +62 -0
  187. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +32 -0
  188. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +642 -0
  189. phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +96 -0
  190. phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +1 -0
  191. phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +115 -0
  192. phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +1 -0
  193. phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +439 -0
  194. phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +19 -0
  195. phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +111 -0
  196. phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +193 -0
  197. phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +32 -0
  198. phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +1 -0
  199. phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +334 -0
  200. phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +25 -0
  201. phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +1 -0
  202. phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +776 -0
  203. phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +17 -0
  204. phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +1092 -0
  205. phase_loop_runtime/skills_bundle/claude-run-train/README.md +1 -0
  206. phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +75 -0
  207. phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +1 -0
  208. phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +243 -0
  209. phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +72 -0
  210. phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +1 -0
  211. phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +249 -0
  212. phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +79 -0
  213. phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +1 -0
  214. phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +74 -0
  215. phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +103 -0
  216. phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +1 -0
  217. phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +38 -0
  218. phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +1 -0
  219. phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +38 -0
  220. phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +1 -0
  221. phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +154 -0
  222. phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +1 -0
  223. phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +231 -0
  224. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +33 -0
  225. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +197 -0
  226. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/cleanup_lane_worktrees.sh +103 -0
  227. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +125 -0
  228. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +62 -0
  229. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +127 -0
  230. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +51 -0
  231. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +274 -0
  232. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +62 -0
  233. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +32 -0
  234. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +642 -0
  235. phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +96 -0
  236. phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +1 -0
  237. phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +248 -0
  238. phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +1 -0
  239. phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +150 -0
  240. phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +19 -0
  241. phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +111 -0
  242. phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +193 -0
  243. phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +32 -0
  244. phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +1 -0
  245. phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +119 -0
  246. phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +25 -0
  247. phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +1 -0
  248. phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +307 -0
  249. phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +17 -0
  250. phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +1092 -0
  251. phase_loop_runtime/skills_bundle/codex-run-train/README.md +1 -0
  252. phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +75 -0
  253. phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +1 -0
  254. phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +94 -0
  255. phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +72 -0
  256. phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +1 -0
  257. phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +114 -0
  258. phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +79 -0
  259. phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +1 -0
  260. phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +102 -0
  261. phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +103 -0
  262. phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +1 -0
  263. phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +38 -0
  264. phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +1 -0
  265. phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +38 -0
  266. phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +1 -0
  267. phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +144 -0
  268. phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +1 -0
  269. phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +198 -0
  270. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +33 -0
  271. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +197 -0
  272. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/cleanup_lane_worktrees.sh +103 -0
  273. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +125 -0
  274. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +62 -0
  275. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +127 -0
  276. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +51 -0
  277. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +274 -0
  278. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +62 -0
  279. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +32 -0
  280. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +642 -0
  281. phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +96 -0
  282. phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +1 -0
  283. phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +111 -0
  284. phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +1 -0
  285. phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +147 -0
  286. phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +19 -0
  287. phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +111 -0
  288. phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +193 -0
  289. phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +32 -0
  290. phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +1 -0
  291. phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +119 -0
  292. phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +25 -0
  293. phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +1 -0
  294. phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +217 -0
  295. phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +17 -0
  296. phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +1092 -0
  297. phase_loop_runtime/skills_bundle/gemini-run-train/README.md +1 -0
  298. phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +75 -0
  299. phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +1 -0
  300. phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +87 -0
  301. phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +72 -0
  302. phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +1 -0
  303. phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +109 -0
  304. phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +79 -0
  305. phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +1 -0
  306. phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +98 -0
  307. phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +103 -0
  308. phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +1 -0
  309. phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +38 -0
  310. phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +1 -0
  311. phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +38 -0
  312. phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +1 -0
  313. phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +144 -0
  314. phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +1 -0
  315. phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +196 -0
  316. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +33 -0
  317. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +197 -0
  318. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +103 -0
  319. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +125 -0
  320. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +62 -0
  321. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +127 -0
  322. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +51 -0
  323. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +274 -0
  324. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +62 -0
  325. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +32 -0
  326. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +642 -0
  327. phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +96 -0
  328. phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +1 -0
  329. phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +113 -0
  330. phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +1 -0
  331. phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +147 -0
  332. phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +19 -0
  333. phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +111 -0
  334. phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +193 -0
  335. phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +32 -0
  336. phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +1 -0
  337. phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +119 -0
  338. phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +25 -0
  339. phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +1 -0
  340. phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +211 -0
  341. phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +17 -0
  342. phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +1092 -0
  343. phase_loop_runtime/skills_bundle/opencode-run-train/README.md +1 -0
  344. phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +75 -0
  345. phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +1 -0
  346. phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +87 -0
  347. phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +72 -0
  348. phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +1 -0
  349. phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +109 -0
  350. phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +79 -0
  351. phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +1 -0
  352. phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +98 -0
  353. phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +103 -0
  354. phase_loop_runtime/state.py +156 -0
  355. phase_loop_runtime/state_degradation.py +136 -0
  356. phase_loop_runtime/state_ops.py +676 -0
  357. phase_loop_runtime/train_ledger.py +215 -0
  358. phase_loop_runtime/train_roadmap.py +339 -0
  359. phase_loop_runtime/train_runner.py +1197 -0
  360. phase_loop_runtime/verification_evidence.py +650 -0
  361. phase_loop_runtime/verification_evidence_validator.py +75 -0
  362. phase_loop_runtime/visual_evidence_validator.py +36 -0
  363. phase_loop_runtime/worker_pool.py +123 -0
  364. phase_loop_runtime/worktree_index.py +270 -0
  365. phase_loop_runtime-0.2.0.data/data/share/phase-loop-runtime/protocol/protocol.md +2475 -0
  366. phase_loop_runtime-0.2.0.dist-info/METADATA +106 -0
  367. phase_loop_runtime-0.2.0.dist-info/RECORD +370 -0
  368. phase_loop_runtime-0.2.0.dist-info/WHEEL +5 -0
  369. phase_loop_runtime-0.2.0.dist-info/entry_points.txt +9 -0
  370. phase_loop_runtime-0.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,289 @@
1
+ # Phase-Loop Runtime Boundary
2
+
3
+ This document defines the stable public interface for the phase-loop runtime. Components not listed here are considered internal and subject to change without notice.
4
+
5
+ Path ownership for the dotfiles-hosted harness substrate is recorded in
6
+ `docs/phase-loop/harness-substrate-manifest.md`. This document defines the
7
+ public runtime contract; the substrate manifest defines which dotfiles paths
8
+ downstream repositories may cite.
9
+ IF-0-SUBSTRATE-1 keeps that citation surface limited to runtime code, CLI
10
+ wrappers, bridge skills, shared runner skills, protocol docs, fixtures, tests,
11
+ scripts, and canonical `.phase-loop/**` state.
12
+ The public skill namespace contract is recorded in
13
+ `docs/phase-loop/harness-skill-matrix.md`; it freezes harness workflow names,
14
+ Pi Agent role-style exceptions, direct route compatibility, and the
15
+ governed-pipeline `.pipeline/skills/**` boundary.
16
+
17
+ ## CLI Interface
18
+
19
+ The primary entrypoint is `phase-loop` (aliased as `codex-phase-loop`).
20
+
21
+ ### Commands
22
+
23
+ - `run`: Start or continue phase execution.
24
+ - `resume`: Resume the current phase after a non-terminal exit or blocker.
25
+ - `status`: Show the current phase and loop status.
26
+ - `dry-run`: Parse the roadmap and current plan without executing work.
27
+ - `maintain-skills`: Analyze and propose improvements to harness-local skills based on execution reflections.
28
+ - `sync-skills`: Audit or repair harness-local bridge skills for manual reentry.
29
+ (DECOUPLE: provided by the dotfiles-profile plugin — see the profile-command
30
+ note below — not by the generic runtime.)
31
+ - `state`: Inspect the current durable state.
32
+ - `handoff`: Generate a TUI handoff artifact for the current state.
33
+ - `archive-state`: Move the current state to an archive directory.
34
+ - `monitor`: Poll the runtime state and run notification commands on status changes.
35
+ - `version`: Print the installed phase-loop version. The top-level
36
+ `--version` flag reports the same public version string.
37
+ - `execute <phase>`: Direct bridge invocation for external runners. Supports
38
+ `--bundle <phase-source-bundle.v1>`, `--output <phase_loop_closeout.v1>`,
39
+ and `--mode execute|repair|review`. Unsupported modes and invalid bridge
40
+ inputs are typed non-human contract blockers.
41
+
42
+ #### Profile-command plugin seam (DECOUPLE)
43
+
44
+ The dotfiles-domain commands `adoption-bundle`, `sync-skills`, `build-bundle`, and
45
+ `hotfix` are NOT part of the generic runtime surface. They are registered only when
46
+ a profile plugin is loaded, via the `phase_loop_runtime.profile_commands`
47
+ entry-point group (declared by a profile distribution) or the
48
+ `PHASE_LOOP_PROFILE_PLUGINS` opt-in (a comma-separated list of `module:callable`
49
+ specs). A clean wheel install with no profile plugin exposes none of them; the
50
+ in-tree dotfiles profile is `phase_loop_runtime.dotfiles_profile_plugin`. Profiles
51
+ likewise contribute skill source roots via the `phase_loop_runtime.skill_sources`
52
+ group. This is the seam validated by the DECOUPLE Gate-A clean-room harness.
53
+
54
+ ### Core Flags
55
+
56
+ - `--repo`: Path to the repository (default: `.`).
57
+ - `--roadmap`: Path to the roadmap file.
58
+ - `--phase`: Target phase alias.
59
+ - `--json`: Emit machine-readable JSON output.
60
+ - `--dry-run`: Enable dry-run mode.
61
+
62
+ ### External-Runner Invocation Contract
63
+
64
+ This is the stable contract an external orchestrator (e.g. governed-pipeline)
65
+ binds to when it delegates a phase to the phase-loop backend. The entrypoint
66
+ name, the bridge subcommand, its argument shape, and the in/out schemas are a
67
+ stability-guaranteed surface; changes are versioned, not silent.
68
+
69
+ - **Entrypoint:** the console script `phase-loop` (legacy alias
70
+ `codex-phase-loop`). There is no `dotfiles` command — the runtime ships
71
+ `phase-loop`/`codex-phase-loop` only. Callers SHOULD resolve the entrypoint
72
+ configurably (a documented default of `phase-loop`, overridable via an env var
73
+ such as `PHASE_LOOP_CLI`) rather than hardcoding a command name, so the
74
+ binding survives non-PATH/venv installs, pinned versions, and renames. Do not
75
+ invent a repo-named (`dotfiles`) command.
76
+ - **Bridge command:**
77
+ `phase-loop execute <phase> --bundle <phase-source-bundle.v1> --output <path> [--mode execute|repair|review]`.
78
+ - **Input:** a validated `phase-source-bundle.v1` artifact (`--bundle`). In
79
+ `pipeline_required` mode the bridge fails closed unless the bundle and its
80
+ identity/freshness inputs validate together (see Operating Modes).
81
+ - **Output:** exactly one `phase_loop_closeout.v1` JSON file written to
82
+ `--output`, plus a typed exit code (see Exit Codes). The closeout is the
83
+ structured result; callers read it rather than parsing the event ledger.
84
+ - **Capability / version negotiation:** callers gate on `phase-loop --version`
85
+ (top-level `--version` reports the public version string) against a documented
86
+ version floor before invoking; when the entrypoint is absent or below the
87
+ floor, the caller degrades gracefully (e.g. artifact-only ingestion) instead
88
+ of failing the run.
89
+
90
+ ## Operating Modes
91
+
92
+ Standalone phase-loop use is the default local operator path. `run`, `resume`,
93
+ `status`, `dry-run`, and manual `codex-plan-phase` / `codex-execute-phase`
94
+ workflows remain valid without governed-pipeline, `.pipeline/**`, Portal,
95
+ Greenfield, a source bundle, credentials, Host bootstrap, Shell config, shell
96
+ profile sourcing, SSH setup, MCP gateway setup, generic 1Password setup,
97
+ provider-supplied payloads, or local environment contents. `.phase-loop/` is the
98
+ canonical runtime state surface; `.codex/phase-loop/` is a legacy read fallback
99
+ only when canonical state is absent.
100
+
101
+ `pipeline_optional` runs may consume Pipeline source-bundle metadata when an
102
+ external orchestrator supplies it, but missing Pipeline metadata does not make
103
+ a legacy standalone phase plan invalid.
104
+
105
+ `pipeline_required` direct bridge invocation must fail closed before execution
106
+ unless these inputs validate together: bundle path, bundle SHA-256,
107
+ Pipeline phase id or alias, roadmap identity, protected-source entries,
108
+ protected-source file hashes, and source-bundle freshness. Governed Pipeline
109
+ owns adoption, source-bundle emission, canonical refresh, replan, closeout
110
+ ingest, Greenfield reduction, and Portal projection. Governed-pipeline owns
111
+ canonical source-truth refresh, source-bundle emission,
112
+ protected-source freshness, scheduling, closeout ingest, Greenfield reduction,
113
+ and Portal projection; dotfiles consumes the supplied bundle and emits redacted
114
+ closeout metadata.
115
+ Governed-pipeline also owns canonical spec adoption, archive manifests,
116
+ managed mirror manifests, mirror writes, source-truth reconciliation, canonical
117
+ refresh, replan, and preflight block decisions. Dotfiles may echo validated
118
+ metadata-only adoption roles in closeout, but it does not decide canonical
119
+ adoption, archive membership, mirror refresh, or unmanaged spec promotion.
120
+
121
+ Standalone dotfiles discovery treats root `specs/**` as the default
122
+ human-visible future-spec intake root when no phase plan, source bundle, or
123
+ repo-local config overrides it. Legacy or project-specific seed roots such as
124
+ `Specs/**` are explicit input roots only, not automatic future-spec storage
125
+ roots. See `docs/phase-loop/spec-discovery-roots.md`.
126
+
127
+ ## Python API
128
+
129
+ The following modules under `phase_loop_runtime.*` are considered public:
130
+
131
+ - `phase_loop_runtime.cli`: CLI entrypoint and parser definition.
132
+ - `phase_loop_runtime.discovery`: Roadmap and repository resolution.
133
+ - `phase_loop_runtime.handoff`: TUI handoff generation and metadata.
134
+ - `phase_loop_runtime.models`: Core data models, schemas, and literals.
135
+ - `phase_loop_runtime.maintenance`: Skill maintenance and improvement logic.
136
+ - `phase_loop_runtime.observability`: Notification and monitoring utilities.
137
+ - `phase_loop_runtime.profiles`: Model and effort profile definitions.
138
+ - `phase_loop_runtime.reconcile`: State and roadmap reconciliation.
139
+ - `phase_loop_runtime.render`: Text and JSON rendering for CLI output.
140
+ - `phase_loop_runtime.runtime_paths`: Canonical `.phase-loop/` path helpers and legacy
141
+ `.codex/phase-loop/` read-fallback helpers.
142
+ - `phase_loop_runtime.runner`: The main loop execution engine.
143
+ - `phase_loop_runtime.state_ops`: State inspection and archiving operations.
144
+ - `phase_loop_runtime.state`: Durable state persistence (JSON).
145
+
146
+ ## Artifacts and Paths
147
+
148
+ - `.phase-loop/`: Canonical runtime directory.
149
+ - `.phase-loop/state.json`: Current loop state.
150
+ - `.phase-loop/events.jsonl`: Append-only event ledger.
151
+ - `.phase-loop/runs/<run-id>/`: Artifacts for a specific run.
152
+ - `.codex/phase-loop/`: Legacy compatibility root. It may be read only when
153
+ canonical `.phase-loop/` state is absent; new writes target `.phase-loop/`.
154
+ - `plans/phase-plan-*.md`: Phase-specific execution plans.
155
+ - `specs/phase-plans-*.md`: Multi-phase roadmaps.
156
+ - `specs/**`: Standalone future-spec discovery and advisory intake root unless
157
+ a phase plan, source bundle, or repo-local config overrides it.
158
+ - `Specs/**`: Legacy or project-specific seed input root only when explicitly
159
+ named by a phase plan, source bundle, or repo-local config.
160
+
161
+ ## Scheduler-Owned Lane Inputs
162
+
163
+ The runtime may consume scheduler-owned lane assignment metadata, but does not
164
+ own scheduling, runtime ledger policy, worktree allocation, merge reduction, or
165
+ authority digests. The accepted assignment surface is lane id, wave id,
166
+ worktree path, base SHA, isolation mode, owned files, read-only refs, harness
167
+ route, model, effort, and fallback reason. Greenfield authority refs and
168
+ governed-pipeline scheduling data remain external inputs, not dotfiles-owned
169
+ runtime authority.
170
+
171
+ `--lane-scheduler concurrent` launches scheduler-approved ready waves only
172
+ when every writer is `parallel_safe`, writable ownership is disjoint, reducer
173
+ lanes are excluded, and each writer has a `git_worktree` assignment at the
174
+ current base SHA. `--lane-scheduler serialized` and the default coarse phase
175
+ path remain compatibility modes and may run on the main worktree without
176
+ assignment metadata.
177
+
178
+ Closeout metadata may report lane identity, wave identity, worktree identity,
179
+ verification status, changed paths, source-truth impact categories, advisory
180
+ canonical-refresh reason codes, source-bundle identity, protected-source roles,
181
+ and redacted evidence refs. Evidence refs are artifact paths and digests only;
182
+ raw spec bodies, raw diffs, raw transcripts, credential material, private
183
+ files, local environment contents, and provider tokens are outside the public
184
+ runtime contract.
185
+
186
+ ## Bridge Fixture Boundary
187
+
188
+ Dotfiles owns the native v1 bridge fixtures at
189
+ `vendor/phase-loop-runtime/tests/fixtures/phase_loop_pipeline_bridge/**`. These fixtures are
190
+ metadata-only examples for `phase_loop_closeout.v1` outcomes, including
191
+ complete, blocked, stale source bundle, failed verification, human-required,
192
+ malformed, standalone-no-bundle, and canonical-refresh-recommended cases.
193
+ Native fixture JSON uses nested `automation`, `artifacts`, `verification`,
194
+ `blocker`, `source_bundle`, and `source_truth_impact` objects and does not
195
+ include deprecated root-level v5 automation aliases.
196
+ DFADOPTHINTS fixtures cover standalone unmanaged spec hints,
197
+ pipeline-required adoption roles, managed mirror specs, archive manifests,
198
+ canonical refresh recommendations, and malformed redaction rejection.
199
+
200
+ Governed-pipeline may mirror those fixtures under the downstream mirror location
201
+ `packages/pipeline-runtime/test/fixtures/phase-loop-bridge/` for its own
202
+ ingest tests. That mirror path is a downstream consumer and not a dotfiles write target.
203
+ Governed-pipeline owns mirror updates, closeout ingest, canonical refresh,
204
+ replan, and preflight block decisions; those decisions are governed-pipeline-owned.
205
+
206
+ DFTRUTHSOAK is the final source-truth reconciliation soak for this dotfiles
207
+ runtime boundary. Its evidence surface is local and metadata-only: standalone
208
+ closeout, pipeline-required closeout, stale-input blockers, source-truth
209
+ advisory hints, bridge fixtures, and downstream mirror refs. Portal-facing
210
+ evidence remains governed-pipeline projection metadata, not Portal lifecycle,
211
+ database, or contract writes from dotfiles. Greenfield-facing evidence remains
212
+ path and digest authority refs mediated by governed-pipeline, not Greenfield
213
+ reducer or authority-file writes from dotfiles.
214
+
215
+ ## Skill and Prompt Guardrails
216
+
217
+ Operator skills and generated prompts must preserve standalone dotfiles use:
218
+ planning, execution, bridge, and shared CLI runner workflows remain valid
219
+ without governed-pipeline, Portal, Greenfield, `.pipeline/**`, or a source
220
+ bundle. Pipeline metadata is additive and may be copied into plan frontmatter
221
+ only from a validated source bundle or explicit `pipeline_required` run
222
+ context.
223
+ Harness workflow skill names are governed by
224
+ `docs/phase-loop/harness-skill-matrix.md`. That matrix is the public contract
225
+ for `<harness>-<workflow>` skill names, the Pi Agent role-style exceptions, and
226
+ compatibility for direct Codex, Gemini, OpenCode, and Claude Code `claude -p`
227
+ routes.
228
+ Collaborator consumption of the runtime and harness workflow skill packs is
229
+ documented in `docs/phase-loop/collaborator-bootstrap.md`. That document is the
230
+ install citation surface for downstream repos; it does not expand the runtime
231
+ boundary to host bootstrap, owner dotfiles, personal credentials, terminal
232
+ state, or direct writes to governed-pipeline, Portal, Greenfield, ReGenesis, or
233
+ `.pipeline/**`.
234
+
235
+ Portal and Greenfield examples are governed-pipeline-mediated boundaries:
236
+ Portal projection, governed-pipeline closeout ingest, and Greenfield metadata-only authority refs are not direct dotfiles write targets. Skills and
237
+ prompts must forbid inferred reads or writes to `.pipeline/**`,
238
+ governed-pipeline specs, Portal contracts, Greenfield authority files, private
239
+ evidence, raw data, raw source evidence, credentials, provider-supplied data, and legacy `.codex/phase-loop/` state unless the active plan and source bundle explicitly
240
+ own the exact path or glob.
241
+
242
+ DFPARSOAK is the release-gate exercise of this boundary. Its metadata-only
243
+ `GFPARSOAK` and `GPPARSOAK` inputs cite repo-relative receipt paths and sha256
244
+ digests only. Its local scheduler-owned git-worktree wave records Pi Agent,
245
+ Claude Code CLI, Codex, and Gemini route metadata while keeping redacted
246
+ evidence as handles or hashes and preserving no sibling-repo mutation.
247
+
248
+ ## Exit Codes
249
+
250
+ - `0`: Success (or completion in `run`/`resume`).
251
+ - `1`: General failure or blocked status.
252
+ - `2`: Ambiguous roadmap selection (requires human intervention).
253
+
254
+ ## Completeness for Extraction
255
+
256
+ This inventory represents the full set of public interfaces required for the vendored package `phase-loop-runtime` to operate as a future standalone repository if publication is needed later. Governed-pipeline and other downstream consumers may use the documented CLI, schema, fixture, and state surfaces through the vendored package. Any tool or service consuming phase-loop should limit its integration to these documented surfaces.
257
+ The harness substrate manifest separates those public surfaces from broader
258
+ dotfiles environment normalization such as host bootstrap, shell config,
259
+ terminal config, SSH, generic 1Password setup, MCP gateway setup, and unrelated
260
+ editor config.
261
+ DFFAKESMOKE substrate receipt fields for downstream Pipeline consumption are
262
+ documented in `docs/phase-loop/dffakesmoke-substrate-receipt.md`.
263
+
264
+ The standalone identity must preserve the Python import package `phase_loop_runtime`,
265
+ the neutral `phase-loop` command, and the backward-compatible `codex-phase-loop`
266
+ alias. `phase-loop` and `codex-phase-loop` remain separate entrypoints over the
267
+ same parser; dotfiles bootstrap installs the vendored package in editable mode.
268
+
269
+ Package-like use of the public modules, parser construction, status rendering,
270
+ direct bridge diagnostics, and runtime path helpers must work from
271
+ `vendor/phase-loop-runtime` without shell profile sourcing,
272
+ 1Password, Vercel, Supabase, or other dotfiles-specific credentials, and
273
+ without ambient `~/.codex` state.
274
+
275
+ - **Contract Coverage**: 100% of the `phase_loop_closeout.v1` schema is supported.
276
+ - **CLI Parity**: The CLI provides full lifecycle management (`run`,
277
+ `resume`, `status`, `dry-run`, `maintain-skills`, `sync-skills`, `state`,
278
+ `handoff`, `archive-state`, `monitor`, and `version`) plus deterministic
279
+ direct bridge invocation through `execute <phase>`.
280
+ - **Schema Stability**: All machine-readable artifacts (JSON/JSONL) follow the frozen protocol.
281
+
282
+ ## DFPARSOAK Integrated Soak
283
+
284
+ DFPARSOAK publishes the final integrated substrate receipt at
285
+ `docs/phase-loop/dfparsoak-receipt.md` and the local execution runbook at
286
+ `docs/phase-loop/dfparsoak-runbook.md`. Those artifacts freeze the dotfiles
287
+ side of lane, wave, worktree, harness route, model, effort, fallback, and
288
+ redacted evidence metadata while keeping governed-pipeline as scheduler and
289
+ closeout-ingest authority.
@@ -0,0 +1,47 @@
1
+ # Phase-Loop Spec Discovery Roots
2
+
3
+ Standalone dotfiles phase-loop runs use root `specs/**` as the default
4
+ human-visible future-spec discovery root when no phase plan, source bundle, or
5
+ repo-local config names a different root.
6
+
7
+ Legacy or project-specific seed roots such as `Specs/**` are explicit input
8
+ roots only. They can be cited by a phase plan or validated source bundle as
9
+ seed material, but they are not automatic storage roots for future accepted
10
+ specs. Accepted future specs should normalize toward root `specs/**` for later
11
+ governed-pipeline intake.
12
+
13
+ Governed-pipeline owns canonical spec adoption, `.pipeline/specs/**`,
14
+ archive manifests, managed mirror manifests, mirror writes, source-bundle
15
+ emission, canonical refresh, source-truth reconciliation, replan, and preflight
16
+ block decisions; those decisions are governed-pipeline-owned. Dotfiles may consume validated metadata and echo
17
+ metadata-only adoption roles such as `active_canonical_spec`,
18
+ `managed_mirror_file`, `mirror_manifest`, `archive_manifest`, and
19
+ `unmanaged_spec_input`, but it does not decide whether a spec is canonical,
20
+ archived, mirrored, refreshed, or blocked.
21
+
22
+ Closeout and docs evidence stays metadata-only. Do not include raw spec bodies,
23
+ raw diffs, provider payloads, credentials, local environment values, private
24
+ evidence, or absolute private paths as runtime evidence.
25
+
26
+ Closeout may cite repo-relative spec roots, changed-path categories, SHA-256
27
+ hashes, source-bundle identity, protected-source roles, advisory reason codes,
28
+ and evidence-ref paths. Standalone root `specs/**` changes are advisory
29
+ `unmanaged_spec` future input by default. Managed root mirror and archived spec
30
+ classification comes only from validated source-bundle metadata. Dotfiles emits
31
+ `canonical_refresh_recommended` and reason codes as metadata-only hints;
32
+ governed-pipeline decides whether those hints trigger refresh, mirror, archive,
33
+ replan, or block actions.
34
+
35
+ DFADOPTBRIDGE fixtures apply the same rule to governed-pipeline v11 adoption
36
+ coverage. `dfadoptbridge_unmanaged_spec_input.json` represents root `specs/**`
37
+ as unmanaged spec input metadata, while mirror manifest and archive manifest
38
+ fixtures represent only repo-relative paths, SHA-256 fields, protected-source
39
+ roles, changed-path categories, advisory reason codes, and evidence refs.
40
+
41
+ DFADOPTSOAK keeps that boundary as a release gate. Standalone root `specs/**`
42
+ changes are advisory unmanaged-spec hints. Non-default roots such as `Specs/**`
43
+ remain non-advisory unless a phase plan, validated source bundle, or repo-local
44
+ configuration explicitly names the root. Explicit intake roles such as
45
+ `adapter_configured_intake_root` and `legacy_specs_bundle` classify those
46
+ repo-relative paths as unmanaged spec input metadata only; they do not authorize
47
+ dotfiles to read raw private source bytes or write downstream mirror artifacts.
@@ -0,0 +1,42 @@
1
+ # SUBSTRATESOAK Governed Pipeline v25 Compatibility
2
+
3
+ SUBSTRATESOAK proves compatibility through dotfiles-local fixtures and
4
+ metadata-only closeout examples. The fixture matrix lives at
5
+ `vendor/phase-loop-runtime/tests/fixtures/phase_loop_pipeline_bridge/substratesoak_*.json`,
6
+ and dotfiles owns only the local fixture source plus the tests that validate
7
+ that source.
8
+
9
+ Governed Pipeline owns mirror regeneration. Governed Pipeline owns closeout ingest.
10
+ Dotfiles does not take ownership of downstream mirror refresh,
11
+ canonical adoption, archive, replan, preflight, or Portal projection decisions.
12
+ The compatibility receipt records no sibling repository mutation.
13
+
14
+ ## Metadata Contract
15
+
16
+ Governed Pipeline may consume only metadata fields from the local fixture
17
+ matrix:
18
+
19
+ - pipeline mode
20
+ - source bundle path
21
+ - source bundle SHA-256
22
+ - phase id
23
+ - protected-source roles
24
+ - artifact paths
25
+ - evidence refs
26
+ - changed-path categories
27
+ - verification status
28
+ - blocker class
29
+ - canonical-refresh advisory reason codes
30
+
31
+ Those fields are identifiers, hashes, classifications, or redacted references.
32
+ They are not permission to read source bundle bytes, protected source contents,
33
+ private evidence, or downstream runtime state.
34
+
35
+ ## Boundaries
36
+
37
+ The downstream mirror location
38
+ `packages/pipeline-runtime/test/fixtures/phase-loop-bridge/`, governed-pipeline specs,
39
+ `.pipeline/**`, sibling repositories, Raw evidence, Provider payloads,
40
+ credentials, and local environment values are outside the dotfiles write and
41
+ read boundary for this phase. Governed Pipeline remains the owner for any
42
+ derived mirror copy or closeout ingestion behavior.
@@ -0,0 +1,34 @@
1
+ # SUBSTRATESOAK Portal v40 Projection Boundary
2
+
3
+ Portal v40 display evidence is projection-mediated. Dotfiles may publish only
4
+ Governed Pipeline-mediated metadata for the Portal display path; it does not
5
+ publish Portal runtime output.
6
+
7
+ Allowed display metadata:
8
+
9
+ - phase alias
10
+ - terminal status
11
+ - verification status
12
+ - blocker class
13
+ - human-required flag
14
+ - changed paths
15
+ - artifact refs
16
+ - evidence ref hashes
17
+ - source-bundle identity
18
+ - protected-source roles
19
+ - advisory reason codes
20
+
21
+ The BAML source at
22
+ `vendor/phase-loop-runtime/src/phase_loop_runtime/baml_src/emit_phase_closeout.baml` remains the schema
23
+ authority. This document cites schema-adjacent field names only so the Portal
24
+ projection can stay aligned with Governed Pipeline ingest without creating a
25
+ second schema.
26
+
27
+ ## Denied Dotfiles Outputs
28
+
29
+ Portal routing layer, Portal display layer, database storage, projection payloads,
30
+ lifecycle state, Portal contracts, auth state, Raw evidence, Provider payloads,
31
+ credentials, local environment values, host-specific paths, `.pipeline/**`, and
32
+ legacy .codex/phase-loop/** are outside the SUBSTRATESOAK dotfiles output
33
+ surface. Any Portal-visible value must arrive through Governed Pipeline
34
+ projection using redacted metadata and hashes.
@@ -0,0 +1,29 @@
1
+ # SUBSTRATESOAK ReGenesis v46 Support Surface
2
+
3
+ ReGenesis v46 may cite these dotfiles-owned surfaces:
4
+
5
+ - phase-loop runtime
6
+ - codex-phase-loop alias
7
+ - harness workflow skill packs
8
+ - collaborator bootstrap docs
9
+ - runtime boundary docs
10
+ - substrate manifest docs
11
+ - bridge fixtures
12
+ - metadata-only closeout surfaces
13
+
14
+ The supported adoption path is through Governed Pipeline metadata and fixture
15
+ projection. Dotfiles provides citation material and local compatibility tests;
16
+ Governed Pipeline owns downstream adoption and mirror behavior.
17
+
18
+ ## Out of Scope
19
+
20
+ Full owner dotfiles bootstrap is out of scope. Shell profile sourcing is out of scope.
21
+ SSH setup is out of scope. MCP setup is out of scope. Terminal or Zellij setup is out of scope.
22
+ Generic 1Password setup is out of scope.
23
+
24
+ Sibling repository mutation is out of scope. Direct ReGenesis changes are out of scope.
25
+ Direct Governed Pipeline changes are out of scope. Direct Portal changes are out of scope.
26
+ Direct Greenfield changes are out of scope. .pipeline/** changes are out of scope.
27
+ Raw evidence is out of scope. Provider payloads are out of scope.
28
+ Credentials are out of scope. Local environment values are out of scope.
29
+ Legacy .codex/phase-loop/** changes are out of scope.
@@ -0,0 +1,32 @@
1
+ # SUBSTRATESOAK Reducer Receipt
2
+
3
+ SUBSTRATESOAK reduces SL-0 through SL-3 against IF-0-SUBSTRATESOAK-1:
4
+ cross-repo fixture matrix proves compatibility with Governed Pipeline v25
5
+ without sibling repo mutation.
6
+
7
+ ## Exit Criteria
8
+
9
+ | Criterion | Evidence |
10
+ | --- | --- |
11
+ | Fixture matrix covers standalone, `pipeline_optional`, `pipeline_required`, stale bundle, unmanaged spec hint, closeout complete, verification failed, human-required, and redaction violation cases. | SL-0 fixture matrix and `PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_pipeline_bridge.py -k substratesoak` |
12
+ | Governed Pipeline v25 mirror fixtures can be regenerated by Governed Pipeline and are not written by dotfiles. | SL-1 receipt and `PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_governed.py` |
13
+ | Portal v40 evidence remains metadata-only and projection-mediated through Governed Pipeline. | SL-2 receipt and `PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_portal.py` |
14
+ | ReGenesis v46 docs state supported runtime, skill, fixture, and closeout metadata surfaces. | SL-3 support doc and `PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_docs.py` |
15
+ | The phase writes no sibling repo, governed-pipeline mirror path, Portal, Greenfield, ReGenesis, `.pipeline/**`, credential, Raw evidence, Provider payload, local environment value, private input, ignored output, personal host bootstrap, or legacy `.codex/phase-loop/**` target. | SL-0 through SL-3 negative assertions and grep checks from the phase plan |
16
+ | .phase-loop/ remains the authoritative runner state source for this phase; legacy `.codex/phase-loop/` files are not used to block or supersede canonical state. | This reducer cites canonical runner state only and does not read or mutate legacy state |
17
+
18
+ ## Verification Commands
19
+
20
+ ```bash
21
+ PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_pipeline_bridge.py -k substratesoak
22
+ PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_governed.py
23
+ PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_portal.py
24
+ PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_docs.py
25
+ PYTHONPATH=vendor/phase-loop-runtime/src python -m pytest vendor/phase-loop-runtime/tests/test_phase_loop_pipeline_bridge.py vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_governed.py vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_portal.py vendor/phase-loop-runtime/tests/test_phase_loop_substrate_soak_docs.py
26
+ ```
27
+
28
+ ## IF Gate
29
+
30
+ IF-0-SUBSTRATESOAK-1 is produced when the fixture matrix, Governed Pipeline
31
+ receipt, Portal projection receipt, ReGenesis support doc, and this reducer
32
+ receipt all pass their targeted and whole-phase verification commands.
@@ -0,0 +1,52 @@
1
+ # Verification Evidence Contract
2
+
3
+ VC freezes the additive verification evidence artifact for future runner wiring. Until a later phase consumes it, the only producer is `phase_loop_runtime.verification_evidence.run_verification`.
4
+
5
+ `run_verification(repo, run_dir, commands, suite_command, env_refresh, timeout_s) -> VerificationResult` writes two sibling files under the supplied run directory:
6
+
7
+ - `verification.json`
8
+ - `verification.log`
9
+
10
+ `verification.json` uses schema version 1 and contains exactly these top-level fields:
11
+
12
+ - `schema_version`
13
+ - `run_id`
14
+ - `phase_alias`
15
+ - `commands`
16
+ - `env_refresh`
17
+ - `suite`
18
+ - `started_at`
19
+ - `finished_at`
20
+ - `log_sha256`
21
+
22
+ Each `commands[]` item contains `argv`, `cwd`, `exit_code`, `duration_s`, and `log_offset`. `env_refresh`, when present, contains `triggered`, `manifests`, `install_argv`, and `exit_code`. `suite`, when present, contains `argv`, `exit_code`, and `duration_s`.
23
+
24
+ `verification.log` stores raw combined stdout and stderr from the recorded subprocesses. `log_offset` is the byte offset for each command's output. `log_sha256` is the SHA-256 digest of the final log bytes.
25
+
26
+ The JSON artifact is written atomically by creating a same-directory temporary file and replacing `verification.json`. Re-running identical command inputs rewrites the same artifact shape and log content, except for timestamps and durations.
27
+
28
+ Command failures, missing executables, and timeouts are evidence data. They are represented by nonzero `exit_code` values and do not make `run_verification` raise. Programmer errors, such as a missing repo or a run directory outside the repo, raise before evidence is written.
29
+
30
+ The plan-time validator API is `validate_verification_commands(repo, commands) -> list[ValidationFinding]`. It is read-only and returns structured findings for empty argv, unresolved `argv[0]`, explicit repo-relative path references that do not exist, and cwd/path references that resolve outside the repo.
31
+
32
+ `load_verification_artifact(path)` validates the persisted artifact and returns `VerificationResult`.
33
+
34
+ Evidence marked `evidence: operational` can be recorded for operator inspection, but it cannot mark runner-executed verification as passed. A later runner phase must still reduce actual command exit data before claiming verification success.
35
+
36
+ ## Hotfix Consumers
37
+
38
+ `phase-loop hotfix --init-stub <path>` writes a minimal stub with `objective`
39
+ and `verification_command` fields without creating a run directory.
40
+
41
+ `phase-loop hotfix --reason <text> --plan <stub-path>` is an emergency
42
+ consumer of the same IF-0-VC-1 evidence path. It creates
43
+ `.phase-loop/runs/<ts>-hotfix-<slug>/`, runs dependency-manifest env refresh,
44
+ the stub verification command, and the effective suite command through
45
+ `run_verification`, then validates the resulting artifact before ledger
46
+ closeout. A passed hotfix event must include `work_unit: hotfix`, the redacted
47
+ reason, plan stub, `verification_artifact_path`, `verification_log_path`, and
48
+ the artifact validation summary. A missing, malformed, tampered, or nonzero
49
+ artifact blocks the hotfix closeout instead of reporting `passed`.
50
+
51
+ Use hotfix for a single bounded change with no interface freeze. Anything that
52
+ changes interfaces, roadmap scope, or downstream work uses a roadmap phase.
@@ -0,0 +1,2 @@
1
+ Commands are specific and plausible, but the score series is close enough to
2
+ need operator review before trusting the closeout.
@@ -0,0 +1,16 @@
1
+ {
2
+ "fixture_id": "borderline-mixed-signals",
3
+ "category": "borderline",
4
+ "expected_verdict_class": "uncertain",
5
+ "expected_confidence": 0.56,
6
+ "expected_artifact_characteristics": "Ambiguous evidence with one suspicious metric but concrete command and file details.",
7
+ "sample_artifact_paths": ["mixed.json", "commands.txt"],
8
+ "rationale": "Mixed real and suspicious signals should support threshold tuning.",
9
+ "tier2_signal_summary": {
10
+ "kind": "calibration_borderline",
11
+ "signals": ["one low-variance metric", "specific commands", "distinct files"]
12
+ },
13
+ "estimated_input_tokens": 730,
14
+ "estimated_output_tokens": 215,
15
+ "estimated_cost_usd": 0.0075
16
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "scores": [0.870, 0.871, 0.869, 0.872],
3
+ "changed_files": ["src/a.py", "tests/test_a.py"],
4
+ "commands": ["python3 -m unittest tests.test_a", "git diff --check -- src/a.py tests/test_a.py"]
5
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "fixture_id": "borderline-provider-timeout",
3
+ "category": "borderline",
4
+ "expected_verdict_class": "uncertain",
5
+ "expected_confidence": 0.25,
6
+ "expected_artifact_characteristics": "Ambiguous provider behavior where the wrapper should preserve uncertainty instead of asserting fake.",
7
+ "sample_artifact_paths": ["timeout-note.txt"],
8
+ "rationale": "Timeouts should produce uncertain fallback metadata, not hard classifications.",
9
+ "tier2_signal_summary": {
10
+ "kind": "calibration_borderline",
11
+ "signals": ["provider timeout", "no parsed judgment", "operator review"]
12
+ },
13
+ "estimated_input_tokens": 600,
14
+ "estimated_output_tokens": 190,
15
+ "estimated_cost_usd": 0.0062
16
+ }
@@ -0,0 +1,2 @@
1
+ The provider request timed out after the audit wrapper sent a bounded sample.
2
+ This is operationally ambiguous and should remain uncertain.
@@ -0,0 +1,16 @@
1
+ {
2
+ "fixture_id": "borderline-redacted-summary",
3
+ "category": "borderline",
4
+ "expected_verdict_class": "uncertain",
5
+ "expected_confidence": 0.52,
6
+ "expected_artifact_characteristics": "Ambiguous metadata-only evidence where redaction hides details needed for a decisive judgment.",
7
+ "sample_artifact_paths": ["redacted-summary.json"],
8
+ "rationale": "Redacted summaries can be valid but should not be over-classified without corroboration.",
9
+ "tier2_signal_summary": {
10
+ "kind": "calibration_borderline",
11
+ "signals": ["metadata-only", "redacted details", "operator review"]
12
+ },
13
+ "estimated_input_tokens": 650,
14
+ "estimated_output_tokens": 205,
15
+ "estimated_cost_usd": 0.0067
16
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "phase": "PRIVATECHECK",
3
+ "verification_status": "passed",
4
+ "evidence_refs": ["redacted-metadata:artifact-present", "redacted-metadata:hash-present"],
5
+ "raw_payload_available": false
6
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "fixture_id": "borderline-small-sample",
3
+ "category": "borderline",
4
+ "expected_verdict_class": "uncertain",
5
+ "expected_confidence": 0.48,
6
+ "expected_artifact_characteristics": "Ambiguous evidence with a small sample and insufficient corroborating artifacts.",
7
+ "sample_artifact_paths": ["sample.json"],
8
+ "rationale": "Too little evidence for a hard real or fake classification.",
9
+ "tier2_signal_summary": {
10
+ "kind": "calibration_borderline",
11
+ "signals": ["small sample", "moderate similarity", "limited context"]
12
+ },
13
+ "estimated_input_tokens": 640,
14
+ "estimated_output_tokens": 200,
15
+ "estimated_cost_usd": 0.0068
16
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "checks": [
3
+ {"name": "home", "similarity": 0.91},
4
+ {"name": "settings", "similarity": 0.89}
5
+ ],
6
+ "note": "Only two samples were captured."
7
+ }
@@ -0,0 +1,2 @@
1
+ The evidence is plausible and detailed, but confidence is deliberately below
2
+ the default 0.85 threshold for calibration tuning.