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.
- phase_loop_runtime/__init__.py +20 -0
- phase_loop_runtime/_contract_docs/phase-loop/extraction-readiness.md +90 -0
- phase_loop_runtime/_contract_docs/phase-loop/granular-execution-policy.md +137 -0
- phase_loop_runtime/_contract_docs/phase-loop/harness-capability-matrix.md +510 -0
- phase_loop_runtime/_contract_docs/phase-loop/harness-skill-matrix.md +125 -0
- phase_loop_runtime/_contract_docs/phase-loop/harness-substrate-manifest.md +232 -0
- phase_loop_runtime/_contract_docs/phase-loop/pi-loop-control.md +247 -0
- phase_loop_runtime/_contract_docs/phase-loop/protocol.md +2759 -0
- phase_loop_runtime/_contract_docs/phase-loop/runtime-boundary.md +289 -0
- phase_loop_runtime/_contract_docs/phase-loop/spec-discovery-roots.md +47 -0
- phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-governed-pipeline.md +42 -0
- phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-portal-projection.md +34 -0
- phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-regenesis.md +29 -0
- phase_loop_runtime/_contract_docs/phase-loop/substrate-soak-report.md +32 -0
- phase_loop_runtime/_contract_docs/runtime/verification-evidence-contract.md +52 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/commands.txt +2 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-mixed-signals/mixed.json +5 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-provider-timeout/timeout-note.txt +2 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-redacted-summary/redacted-summary.json +6 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-small-sample/sample.json +7 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/edge.txt +2 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/borderline/borderline-threshold-edge/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-a.txt +1 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-b.txt +1 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-duplicate-png/shot-c.txt +1 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/claimed-results.json +5 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-missing-references/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-subtle-low-variance/metrics.json +9 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/findings.md +10 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-templated-prose/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/scores.json +4 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-fake/fake-uniform-scores/summary.txt +1 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/bundle-check.json +8 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-adoption-bundle/operator-note.txt +2 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/events-sample.jsonl +3 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-handoff-ledger/receipt.txt +1 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/evidence.json +13 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-runner-diff/summary.txt +2 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/matrix.json +9 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-test-matrix/notes.md +4 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/console-summary.txt +2 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/manifest.json +16 -0
- phase_loop_runtime/_test_fixtures/evidence-audit-calibration/known-real/real-ui-screenshot-standin/screenshot-standin.ppm +5 -0
- phase_loop_runtime/adoption_bundle.py +273 -0
- phase_loop_runtime/advisor_board/CONTRACTS.md +257 -0
- phase_loop_runtime/advisor_board/__init__.py +288 -0
- phase_loop_runtime/advisor_board/backing.py +137 -0
- phase_loop_runtime/advisor_board/backing_omnigent.py +498 -0
- phase_loop_runtime/advisor_board/config.py +225 -0
- phase_loop_runtime/advisor_board/events.py +115 -0
- phase_loop_runtime/advisor_board/fixtures/advisor-boards.example.toml +59 -0
- phase_loop_runtime/advisor_board/fixtures.py +91 -0
- phase_loop_runtime/advisor_board/harness_mapping.py +125 -0
- phase_loop_runtime/advisor_board/matrix.py +146 -0
- phase_loop_runtime/advisor_board/observability.py +481 -0
- phase_loop_runtime/advisor_board/presets.py +188 -0
- phase_loop_runtime/advisor_board/registries.py +309 -0
- phase_loop_runtime/advisor_board/resolver.py +253 -0
- phase_loop_runtime/advisor_board/schema.py +269 -0
- phase_loop_runtime/advisor_board/standin.py +166 -0
- phase_loop_runtime/advisor_board/validation.py +159 -0
- phase_loop_runtime/agent_runtime_provider.py +676 -0
- phase_loop_runtime/baml_modular.py +656 -0
- phase_loop_runtime/baml_src/dotfiles_adoption_manifest.baml +37 -0
- phase_loop_runtime/baml_src/dotfiles_c4_document.baml +14 -0
- phase_loop_runtime/baml_src/dotfiles_plan_manifest.baml +50 -0
- phase_loop_runtime/baml_src/dotfiles_runtime_projection.baml +16 -0
- phase_loop_runtime/baml_src/dotfiles_task_catalog.baml +20 -0
- phase_loop_runtime/baml_src/emit_phase_closeout.baml +86 -0
- phase_loop_runtime/baml_src/evaluate_suspected_fake_evidence.baml +36 -0
- phase_loop_runtime/baml_src/verification_evidence.baml +40 -0
- phase_loop_runtime/broker.py +181 -0
- phase_loop_runtime/build_bundle.py +294 -0
- phase_loop_runtime/capability_registry.py +835 -0
- phase_loop_runtime/classifier.py +87 -0
- phase_loop_runtime/claude_agent_view.py +625 -0
- phase_loop_runtime/claude_channel_sidecar.py +1086 -0
- phase_loop_runtime/cli.py +2599 -0
- phase_loop_runtime/closeout.py +865 -0
- phase_loop_runtime/closeout_classifier.py +120 -0
- phase_loop_runtime/closeout_evidence_audit.py +112 -0
- phase_loop_runtime/closeout_validation.py +144 -0
- phase_loop_runtime/closeout_validators.py +203 -0
- phase_loop_runtime/consiliency_gates.py +374 -0
- phase_loop_runtime/consiliency_ingest.py +399 -0
- phase_loop_runtime/consiliency_layout.py +176 -0
- phase_loop_runtime/consiliency_scaffold.py +305 -0
- phase_loop_runtime/cross_repo_channel.py +331 -0
- phase_loop_runtime/discovery.py +2368 -0
- phase_loop_runtime/dispatch_lock.py +167 -0
- phase_loop_runtime/doc_delta_validator.py +98 -0
- phase_loop_runtime/docs_audit.py +285 -0
- phase_loop_runtime/docs_freshness.py +468 -0
- phase_loop_runtime/docs_surfaces.py +150 -0
- phase_loop_runtime/dotfiles_profile_plugin.py +96 -0
- phase_loop_runtime/events.py +154 -0
- phase_loop_runtime/events_migration.py +96 -0
- phase_loop_runtime/evidence_audit.py +1082 -0
- phase_loop_runtime/evidence_audit_config.py +172 -0
- phase_loop_runtime/fleet_map.py +426 -0
- phase_loop_runtime/fleet_metrics.py +298 -0
- phase_loop_runtime/fleet_metrics_export.py +196 -0
- phase_loop_runtime/git_discipline.py +479 -0
- phase_loop_runtime/git_ops.py +122 -0
- phase_loop_runtime/git_topology.py +252 -0
- phase_loop_runtime/governed_bundle.py +137 -0
- phase_loop_runtime/governed_premerge.py +219 -0
- phase_loop_runtime/governed_review.py +264 -0
- phase_loop_runtime/handoff.py +932 -0
- phase_loop_runtime/handoff_path.py +14 -0
- phase_loop_runtime/injection.py +740 -0
- phase_loop_runtime/install_status.py +88 -0
- phase_loop_runtime/lane_scheduler.py +317 -0
- phase_loop_runtime/launcher.py +2760 -0
- phase_loop_runtime/lease_store.py +553 -0
- phase_loop_runtime/maintenance.py +401 -0
- phase_loop_runtime/migrate_handoffs.py +201 -0
- phase_loop_runtime/models.py +2144 -0
- phase_loop_runtime/observability.py +1290 -0
- phase_loop_runtime/panel_invoker.py +1638 -0
- phase_loop_runtime/phase_loop_drift_audit.py +388 -0
- phase_loop_runtime/phase_worktree_executor.py +433 -0
- phase_loop_runtime/pipeline_adapter/__init__.py +12 -0
- phase_loop_runtime/pipeline_adapter/branch_ops.py +274 -0
- phase_loop_runtime/pipeline_adapter/flag.py +55 -0
- phase_loop_runtime/pipeline_adapter/markers.py +13 -0
- phase_loop_runtime/pipeline_adapter/merge_policy.py +72 -0
- phase_loop_runtime/pipeline_adapter/ratification.py +100 -0
- phase_loop_runtime/pipeline_adapter/sibling_matcher.py +123 -0
- phase_loop_runtime/plan_ir.py +523 -0
- phase_loop_runtime/plan_manifest.py +415 -0
- phase_loop_runtime/planner_validation.py +176 -0
- phase_loop_runtime/profiles.py +462 -0
- phase_loop_runtime/prompts.py +365 -0
- phase_loop_runtime/provenance.py +165 -0
- phase_loop_runtime/publishing.py +339 -0
- phase_loop_runtime/py.typed +1 -0
- phase_loop_runtime/reconcile.py +1550 -0
- phase_loop_runtime/redaction.py +184 -0
- phase_loop_runtime/reflection_sync.py +293 -0
- phase_loop_runtime/release_guard.py +186 -0
- phase_loop_runtime/render.py +432 -0
- phase_loop_runtime/repo_validation.py +427 -0
- phase_loop_runtime/review_summary.py +150 -0
- phase_loop_runtime/roadmap_lint.py +425 -0
- phase_loop_runtime/route_log.py +59 -0
- phase_loop_runtime/route_policy/__init__.py +11 -0
- phase_loop_runtime/route_policy/fixtures/route_selection.golden.json +263 -0
- phase_loop_runtime/runner.py +8400 -0
- phase_loop_runtime/runtime_paths.py +225 -0
- phase_loop_runtime/runtime_projection.py +113 -0
- phase_loop_runtime/runtime_resources.py +36 -0
- phase_loop_runtime/schema_export.py +292 -0
- phase_loop_runtime/schemas/phase_loop_closeout.schema.json +366 -0
- phase_loop_runtime/skill_install.py +176 -0
- phase_loop_runtime/skill_inventory.py +662 -0
- phase_loop_runtime/skill_paths.py +42 -0
- phase_loop_runtime/skill_sources_plugin.py +37 -0
- phase_loop_runtime/skills_bundle/claude-advisor-board/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-advisor-board/SKILL.md +38 -0
- phase_loop_runtime/skills_bundle/claude-advisor-panel/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-advisor-panel/SKILL.md +38 -0
- phase_loop_runtime/skills_bundle/claude-execute-detailed/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-execute-detailed/SKILL.md +152 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/SKILL.md +745 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/allocate_worktree_name.sh +33 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/audit_lane_file_touches.py +197 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/cleanup_lane_worktrees.sh +103 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/parent_tree_leakage_check.sh +125 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/post_merge_import_smoke.sh +62 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/pre_merge_destructiveness_check.sh +127 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/resolve_branch_from_sha.sh +51 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/state.py +274 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/sweep_stale_worktrees.sh +62 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/team_teardown.sh +32 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/validate_plan_doc.py +642 -0
- phase_loop_runtime/skills_bundle/claude-execute-phase/scripts/verify_harness.sh +96 -0
- phase_loop_runtime/skills_bundle/claude-phase-loop/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-phase-loop/SKILL.md +115 -0
- phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/SKILL.md +439 -0
- phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/assets/review_prompt.md +19 -0
- phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/parallelization-heuristics.md +111 -0
- phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/references/roadmap-template.md +193 -0
- phase_loop_runtime/skills_bundle/claude-phase-roadmap-builder/scripts/validate_roadmap.py +32 -0
- phase_loop_runtime/skills_bundle/claude-plan-detailed/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-plan-detailed/SKILL.md +334 -0
- phase_loop_runtime/skills_bundle/claude-plan-detailed/assets/review_prompt.md +25 -0
- phase_loop_runtime/skills_bundle/claude-plan-phase/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-plan-phase/SKILL.md +776 -0
- phase_loop_runtime/skills_bundle/claude-plan-phase/assets/review_prompt.md +17 -0
- phase_loop_runtime/skills_bundle/claude-plan-phase/scripts/validate_plan_doc.py +1092 -0
- phase_loop_runtime/skills_bundle/claude-run-train/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-run-train/SKILL.md +75 -0
- phase_loop_runtime/skills_bundle/claude-skill-editor/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-skill-editor/SKILL.md +243 -0
- phase_loop_runtime/skills_bundle/claude-skill-editor/assets/editor_prompt.md +72 -0
- phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/SKILL.md +249 -0
- phase_loop_runtime/skills_bundle/claude-skill-improvement-planner/assets/aggregator_prompt.md +79 -0
- phase_loop_runtime/skills_bundle/claude-task-contextualizer/README.md +1 -0
- phase_loop_runtime/skills_bundle/claude-task-contextualizer/SKILL.md +74 -0
- phase_loop_runtime/skills_bundle/claude-task-contextualizer/references/task-templates.md +103 -0
- phase_loop_runtime/skills_bundle/codex-advisor-board/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-advisor-board/SKILL.md +38 -0
- phase_loop_runtime/skills_bundle/codex-advisor-panel/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-advisor-panel/SKILL.md +38 -0
- phase_loop_runtime/skills_bundle/codex-execute-detailed/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-execute-detailed/SKILL.md +154 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/SKILL.md +231 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/allocate_worktree_name.sh +33 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/audit_lane_file_touches.py +197 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/cleanup_lane_worktrees.sh +103 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/parent_tree_leakage_check.sh +125 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/post_merge_import_smoke.sh +62 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/pre_merge_destructiveness_check.sh +127 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/resolve_branch_from_sha.sh +51 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/state.py +274 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/sweep_stale_worktrees.sh +62 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/team_teardown.sh +32 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/validate_plan_doc.py +642 -0
- phase_loop_runtime/skills_bundle/codex-execute-phase/scripts/verify_harness.sh +96 -0
- phase_loop_runtime/skills_bundle/codex-phase-loop/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-phase-loop/SKILL.md +248 -0
- phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/SKILL.md +150 -0
- phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/assets/review_prompt.md +19 -0
- phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/parallelization-heuristics.md +111 -0
- phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/references/roadmap-template.md +193 -0
- phase_loop_runtime/skills_bundle/codex-phase-roadmap-builder/scripts/validate_roadmap.py +32 -0
- phase_loop_runtime/skills_bundle/codex-plan-detailed/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-plan-detailed/SKILL.md +119 -0
- phase_loop_runtime/skills_bundle/codex-plan-detailed/assets/review_prompt.md +25 -0
- phase_loop_runtime/skills_bundle/codex-plan-phase/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-plan-phase/SKILL.md +307 -0
- phase_loop_runtime/skills_bundle/codex-plan-phase/assets/review_prompt.md +17 -0
- phase_loop_runtime/skills_bundle/codex-plan-phase/scripts/validate_plan_doc.py +1092 -0
- phase_loop_runtime/skills_bundle/codex-run-train/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-run-train/SKILL.md +75 -0
- phase_loop_runtime/skills_bundle/codex-skill-editor/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-skill-editor/SKILL.md +94 -0
- phase_loop_runtime/skills_bundle/codex-skill-editor/assets/editor_prompt.md +72 -0
- phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/SKILL.md +114 -0
- phase_loop_runtime/skills_bundle/codex-skill-improvement-planner/assets/aggregator_prompt.md +79 -0
- phase_loop_runtime/skills_bundle/codex-task-contextualizer/README.md +1 -0
- phase_loop_runtime/skills_bundle/codex-task-contextualizer/SKILL.md +102 -0
- phase_loop_runtime/skills_bundle/codex-task-contextualizer/references/task-templates.md +103 -0
- phase_loop_runtime/skills_bundle/gemini-advisor-board/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-advisor-board/SKILL.md +38 -0
- phase_loop_runtime/skills_bundle/gemini-advisor-panel/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-advisor-panel/SKILL.md +38 -0
- phase_loop_runtime/skills_bundle/gemini-execute-detailed/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-execute-detailed/SKILL.md +144 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/SKILL.md +198 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/allocate_worktree_name.sh +33 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/audit_lane_file_touches.py +197 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/cleanup_lane_worktrees.sh +103 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/parent_tree_leakage_check.sh +125 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/post_merge_import_smoke.sh +62 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/pre_merge_destructiveness_check.sh +127 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/resolve_branch_from_sha.sh +51 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/state.py +274 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/sweep_stale_worktrees.sh +62 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/team_teardown.sh +32 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/validate_plan_doc.py +642 -0
- phase_loop_runtime/skills_bundle/gemini-execute-phase/scripts/verify_harness.sh +96 -0
- phase_loop_runtime/skills_bundle/gemini-phase-loop/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-phase-loop/SKILL.md +111 -0
- phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/SKILL.md +147 -0
- phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/assets/review_prompt.md +19 -0
- phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/parallelization-heuristics.md +111 -0
- phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/references/roadmap-template.md +193 -0
- phase_loop_runtime/skills_bundle/gemini-phase-roadmap-builder/scripts/validate_roadmap.py +32 -0
- phase_loop_runtime/skills_bundle/gemini-plan-detailed/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-plan-detailed/SKILL.md +119 -0
- phase_loop_runtime/skills_bundle/gemini-plan-detailed/assets/review_prompt.md +25 -0
- phase_loop_runtime/skills_bundle/gemini-plan-phase/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-plan-phase/SKILL.md +217 -0
- phase_loop_runtime/skills_bundle/gemini-plan-phase/assets/review_prompt.md +17 -0
- phase_loop_runtime/skills_bundle/gemini-plan-phase/scripts/validate_plan_doc.py +1092 -0
- phase_loop_runtime/skills_bundle/gemini-run-train/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-run-train/SKILL.md +75 -0
- phase_loop_runtime/skills_bundle/gemini-skill-editor/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-skill-editor/SKILL.md +87 -0
- phase_loop_runtime/skills_bundle/gemini-skill-editor/assets/editor_prompt.md +72 -0
- phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/SKILL.md +109 -0
- phase_loop_runtime/skills_bundle/gemini-skill-improvement-planner/assets/aggregator_prompt.md +79 -0
- phase_loop_runtime/skills_bundle/gemini-task-contextualizer/README.md +1 -0
- phase_loop_runtime/skills_bundle/gemini-task-contextualizer/SKILL.md +98 -0
- phase_loop_runtime/skills_bundle/gemini-task-contextualizer/references/task-templates.md +103 -0
- phase_loop_runtime/skills_bundle/opencode-advisor-board/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-advisor-board/SKILL.md +38 -0
- phase_loop_runtime/skills_bundle/opencode-advisor-panel/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-advisor-panel/SKILL.md +38 -0
- phase_loop_runtime/skills_bundle/opencode-execute-detailed/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-execute-detailed/SKILL.md +144 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/SKILL.md +196 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/allocate_worktree_name.sh +33 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/audit_lane_file_touches.py +197 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/cleanup_lane_worktrees.sh +103 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/parent_tree_leakage_check.sh +125 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/post_merge_import_smoke.sh +62 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/pre_merge_destructiveness_check.sh +127 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/resolve_branch_from_sha.sh +51 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/state.py +274 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/sweep_stale_worktrees.sh +62 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/team_teardown.sh +32 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/validate_plan_doc.py +642 -0
- phase_loop_runtime/skills_bundle/opencode-execute-phase/scripts/verify_harness.sh +96 -0
- phase_loop_runtime/skills_bundle/opencode-phase-loop/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-phase-loop/SKILL.md +113 -0
- phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/SKILL.md +147 -0
- phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/assets/review_prompt.md +19 -0
- phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/parallelization-heuristics.md +111 -0
- phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/references/roadmap-template.md +193 -0
- phase_loop_runtime/skills_bundle/opencode-phase-roadmap-builder/scripts/validate_roadmap.py +32 -0
- phase_loop_runtime/skills_bundle/opencode-plan-detailed/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-plan-detailed/SKILL.md +119 -0
- phase_loop_runtime/skills_bundle/opencode-plan-detailed/assets/review_prompt.md +25 -0
- phase_loop_runtime/skills_bundle/opencode-plan-phase/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-plan-phase/SKILL.md +211 -0
- phase_loop_runtime/skills_bundle/opencode-plan-phase/assets/review_prompt.md +17 -0
- phase_loop_runtime/skills_bundle/opencode-plan-phase/scripts/validate_plan_doc.py +1092 -0
- phase_loop_runtime/skills_bundle/opencode-run-train/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-run-train/SKILL.md +75 -0
- phase_loop_runtime/skills_bundle/opencode-skill-editor/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-skill-editor/SKILL.md +87 -0
- phase_loop_runtime/skills_bundle/opencode-skill-editor/assets/editor_prompt.md +72 -0
- phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/SKILL.md +109 -0
- phase_loop_runtime/skills_bundle/opencode-skill-improvement-planner/assets/aggregator_prompt.md +79 -0
- phase_loop_runtime/skills_bundle/opencode-task-contextualizer/README.md +1 -0
- phase_loop_runtime/skills_bundle/opencode-task-contextualizer/SKILL.md +98 -0
- phase_loop_runtime/skills_bundle/opencode-task-contextualizer/references/task-templates.md +103 -0
- phase_loop_runtime/state.py +156 -0
- phase_loop_runtime/state_degradation.py +136 -0
- phase_loop_runtime/state_ops.py +676 -0
- phase_loop_runtime/train_ledger.py +215 -0
- phase_loop_runtime/train_roadmap.py +339 -0
- phase_loop_runtime/train_runner.py +1197 -0
- phase_loop_runtime/verification_evidence.py +650 -0
- phase_loop_runtime/verification_evidence_validator.py +75 -0
- phase_loop_runtime/visual_evidence_validator.py +36 -0
- phase_loop_runtime/worker_pool.py +123 -0
- phase_loop_runtime/worktree_index.py +270 -0
- phase_loop_runtime-0.2.0.data/data/share/phase-loop-runtime/protocol/protocol.md +2475 -0
- phase_loop_runtime-0.2.0.dist-info/METADATA +106 -0
- phase_loop_runtime-0.2.0.dist-info/RECORD +370 -0
- phase_loop_runtime-0.2.0.dist-info/WHEEL +5 -0
- phase_loop_runtime-0.2.0.dist-info/entry_points.txt +9 -0
- phase_loop_runtime-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,510 @@
|
|
|
1
|
+
# Phase-Loop Harness Capability Matrix
|
|
2
|
+
|
|
3
|
+
PROMOTE finalizes the operator-facing maturity story for Codex, Claude Code /
|
|
4
|
+
ThawedCode, Gemini CLI, OpenCode, Pi Agent, and the generic command adapter as of
|
|
5
|
+
2026-04-27. This matrix now serves as the frozen operator contract that
|
|
6
|
+
follows the v6 live-proof ledger: preserve the earlier probe-backed notes,
|
|
7
|
+
compare each harness against the same lifecycle fields, and keep registry
|
|
8
|
+
promotion claims separate from operator-facing maturity labels so public docs
|
|
9
|
+
do not imply broader autonomous support than the disposable live proof actually
|
|
10
|
+
established. Authenticated disposable live proof remains opt-in through
|
|
11
|
+
`scripts/smoke-phase-loop-live-adapters`, while cheap checks and offline smoke
|
|
12
|
+
stay the default verification path. The v6 proof ledger lives at
|
|
13
|
+
`docs/phase-loop/claude-code-v6-live-proof.md`.
|
|
14
|
+
|
|
15
|
+
## Maturity Labels
|
|
16
|
+
|
|
17
|
+
| Surface | Maturity | Operator note |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| Codex | Live-supported | Full disposable live proof is supported, but active Codex-thread runs may intentionally skip the nested Codex live slice; run that proof from a normal shell session. |
|
|
20
|
+
| Claude Code | Proof-blocked | `PROMOTE` keeps autonomous Claude closeout conservative even after `LIVEPROOF` and `CTXBUNDLE`; manual reentry and manual-import closeout remain supported. |
|
|
21
|
+
| Gemini CLI | Live-supported | Shared state and closeout contracts are verified; trust posture remains visible in launch metadata. |
|
|
22
|
+
| OpenCode | Live-supported | Shared state and closeout contracts are verified; permission posture remains explicit in launch metadata. |
|
|
23
|
+
| Pi Agent | Live-supported | Preferred simple-lane child runner using repo-local `phase-loop-pi/**` and `pi-config/**`; no global scheduler, ledger, worktree allocation, or merge-reducer authority. |
|
|
24
|
+
| Generic `command` adapter | Experimental | Opt-in wrapper only, context-file delivery only, and not promoted as a first-class live harness. |
|
|
25
|
+
| ThawedCode-specific automation | Manual-only | Grouped with Claude for docs and manual imports, but not independently proven as a separate autonomous adapter. |
|
|
26
|
+
|
|
27
|
+
### Claude Support Slices
|
|
28
|
+
|
|
29
|
+
| Claude slice | Maturity | Operator note |
|
|
30
|
+
| --- | --- | --- |
|
|
31
|
+
| `claude_solo` | `proof-blocked` | Default non-interactive Claude launch path. Auth is healthy, but disposable autonomous closeout still lacks a fully green proof run. |
|
|
32
|
+
| `claude_delegated_worker` | `proof-blocked` | Runner-brokered Claude child work stays proof-blocked until the same closeout contract is proven under child execution. |
|
|
33
|
+
| `claude_subagent` | `experimental` | Native subagents are governed and bounded, but remain an internal Claude collaboration mode rather than a promoted cross-harness worker path. |
|
|
34
|
+
| `claude_agent_team` | `experimental` | Native teams stay opt-in, env-gated, and evidence-gated. `PHASE_LOOP_ENABLE_CLAUDE_TEAM_LIVE_TEST` only enables disposable proof, not general promotion. |
|
|
35
|
+
|
|
36
|
+
## Parity Vocabulary
|
|
37
|
+
|
|
38
|
+
PROFILEDOC adds the v8 default profile story without changing maturity labels:
|
|
39
|
+
roadmap and phase planning are high or xhigh-capable, lane execution and repair
|
|
40
|
+
are medium, and reducer/review/verify work is high. Gemini CLI follows the
|
|
41
|
+
GEMPROBE decision `gemini_cli_config_unverified_but_usable`: normal
|
|
42
|
+
phase-loop use targets built-in Gemini CLI routing aliases (`pro` for
|
|
43
|
+
planning/review, `auto` for execution/repair), while explicit proof runs may
|
|
44
|
+
use run-local user-scope `modelConfigs.customAliases` that carry
|
|
45
|
+
`thinkingConfig.thinkingLevel`. Model provenance and phase-loop metrics stay
|
|
46
|
+
recorded in launch metadata and `.phase-loop/metrics.jsonl`.
|
|
47
|
+
|
|
48
|
+
PARITY freezes two different vocabularies and they must not be conflated:
|
|
49
|
+
|
|
50
|
+
| Contract surface | Frozen labels | Meaning |
|
|
51
|
+
| --- | --- | --- |
|
|
52
|
+
| Operator maturity | `live-supported`, `proof-blocked`, `experimental`, `manual-only` | What the docs may claim operators can trust today. |
|
|
53
|
+
| Registry promotion | `live`, `proof_gated`, `manual_only` | What the shared code may advertise for autonomous selection and promotion logic. |
|
|
54
|
+
| Failure reduction | `adapter_failure`, `phase_failure` | Whether the executor path failed to satisfy the contract or the requested phase work itself failed inside the contract. |
|
|
55
|
+
| Blocker posture | `human_required`, `repairable_non_human` | Whether a real operator action is required or the runner should route back through repair/planning. |
|
|
56
|
+
|
|
57
|
+
For this closeout, Claude stays operator-`proof-blocked` and registry
|
|
58
|
+
`promotion_status=proof_gated`. Within Claude, `claude_solo` and
|
|
59
|
+
`claude_delegated_worker` remain `proof-blocked`, while `claude_subagent` and
|
|
60
|
+
`claude_agent_team` remain operator `experimental` and registry
|
|
61
|
+
`promotion_status=proof_gated`. Gemini CLI and OpenCode remain operator
|
|
62
|
+
`live-supported` with registry `promotion_status=live`. The generic `command`
|
|
63
|
+
adapter stays operator `experimental` and registry `manual_only`.
|
|
64
|
+
|
|
65
|
+
## Frozen Lifecycle Matrix
|
|
66
|
+
|
|
67
|
+
Every harness comparison below is reduced against the same operator fields:
|
|
68
|
+
|
|
69
|
+
| Lifecycle field | What the row must answer |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| Launch entrypoint | Non-interactive command shape and required invocation posture |
|
|
72
|
+
| Auth preflight | Metadata-only login or subscription probe and blocker reduction |
|
|
73
|
+
| Prompt / context delivery | Whether workflow context arrives as prompt-only, inline, context-file, or manual delivery |
|
|
74
|
+
| Process lifecycle | Child supervision, timeout posture, and cleanup expectations |
|
|
75
|
+
| Output capture | Durable logs or structured response surfaces available to the runner |
|
|
76
|
+
| Heartbeat / observability | Evidence available while the child is still running |
|
|
77
|
+
| Terminal summary / closeout | Whether the executor reduces back into the shared `automation:` and `terminal-summary.json` contract |
|
|
78
|
+
| Manual reentry | Artifact-led recovery expectations after blocked or incomplete autonomous runs |
|
|
79
|
+
|
|
80
|
+
## Shared Matrix Fields
|
|
81
|
+
|
|
82
|
+
Each harness section still records the probe-backed details that explain the
|
|
83
|
+
frozen lifecycle claims:
|
|
84
|
+
|
|
85
|
+
| Field | Meaning |
|
|
86
|
+
| --- | --- |
|
|
87
|
+
| Prompt input | How the harness accepts a non-interactive prompt or instruction body |
|
|
88
|
+
| CWD selection | How the harness chooses the working directory or workspace root |
|
|
89
|
+
| Model flags | CLI flags or config surfaces for model selection |
|
|
90
|
+
| Reasoning / effort flags | Explicit reasoning or effort controls when documented or probed |
|
|
91
|
+
| Permission / approval flags | Approval, sandbox, or tool-permission controls |
|
|
92
|
+
| Streaming / log behavior | Structured output, stream output, or log-oriented surfaces |
|
|
93
|
+
| Exit-code semantics | Whether the surfaced contract documents or exposes process return status |
|
|
94
|
+
| Context / skill / instruction injection | Native ways to inject instructions, skills, rules, policies, or prompt files |
|
|
95
|
+
| Installed-skill discovery / install paths | Current documented or repo-local skill discovery and install paths |
|
|
96
|
+
|
|
97
|
+
`CTXDELIV` freezes shared delivery vocabulary for all adapters as
|
|
98
|
+
`prompt_only`, `inline`, `stdin`, `context_file`, and `manual`. When a harness
|
|
99
|
+
uses `context_file`, the runner writes `.codex/phase-loop/runs/<run-id>/context.md`
|
|
100
|
+
beside `launch.json` and records only redacted metadata such as
|
|
101
|
+
`context_path`, `context_sha256`, `expected_skill_pack`,
|
|
102
|
+
`skill_bundle_sha256`, and `fallback_mode`.
|
|
103
|
+
|
|
104
|
+
DFHARNESSPOLICY freezes harness selection defaults: simple bounded
|
|
105
|
+
scheduler-assigned lane execution defaults to Pi Agent, Claude/Anthropic model
|
|
106
|
+
lanes default to Claude Code CLI unless policy explicitly selects a Pi-wrapped
|
|
107
|
+
Claude route with an override reason, and Codex/Gemini fallback routes remain
|
|
108
|
+
CLI-based and reason-coded. `manual` and generic `command` routes stay
|
|
109
|
+
non-default unless selected by operator, roadmap, or phase-plan policy.
|
|
110
|
+
|
|
111
|
+
## Safe Metadata-Only Auth and Subscription Probes
|
|
112
|
+
|
|
113
|
+
`LIVEBASE` freezes auth preflight as metadata-only probing. Live child launch
|
|
114
|
+
must not depend on API keys for Claude Code, Gemini CLI, or OpenCode; the proof
|
|
115
|
+
bar is an authenticated local CLI or subscription session that can be checked
|
|
116
|
+
without mutating repo state.
|
|
117
|
+
|
|
118
|
+
| Harness | Safe probe contract | Blocker reduction if missing |
|
|
119
|
+
| --- | --- | --- |
|
|
120
|
+
| Claude Code / ThawedCode | `claude --version`, `claude --help`, and metadata-only `claude auth status` to confirm the CLI exists, exposes the documented non-interactive contract, and is logged into a subscription-backed local session. | `account_or_billing_setup` |
|
|
121
|
+
| Gemini CLI | `gemini --version` plus `gemini --help` or another help-only surface to confirm the installed CLI and current approval/output flags. | `account_or_billing_setup` |
|
|
122
|
+
| OpenCode | `opencode --version`, `opencode run --help`, and `opencode agent list` to confirm the installed CLI, scripted surface, and current agent inventory without mutating repo state. | `account_or_billing_setup` |
|
|
123
|
+
| Pi Agent | `pi --version` and `pi --help` to confirm the installed CLI and help surface without reading provider credentials or mutating repo state. | `account_or_billing_setup` |
|
|
124
|
+
|
|
125
|
+
These probes are intentionally metadata-only. Launch metadata may record command
|
|
126
|
+
availability, auth/help-surface presence, selected maturity, blocker class,
|
|
127
|
+
profile source, override reason, fallback applied, and fallback reason. It must
|
|
128
|
+
not record raw command stdout, raw command stderr, secrets, local environment
|
|
129
|
+
values, OAuth material, raw provider payloads, or credential payloads. Later
|
|
130
|
+
live-adapter phases may add stronger disposable proof, but they must not switch
|
|
131
|
+
to API-key execution or quietly broaden auth preflight into a mutating login
|
|
132
|
+
flow.
|
|
133
|
+
|
|
134
|
+
## Pipeline Bridge Boundary
|
|
135
|
+
|
|
136
|
+
The Pipeline bridge proof is fake and local by default. Governed Pipeline owns
|
|
137
|
+
roadmap-wide orchestration, bundle refresh, closeout ingest, Portal lifecycle
|
|
138
|
+
state, and `pipeline.definition.json`; dotfiles handles one delegated phase and
|
|
139
|
+
preserves the harness lifecycle contract for that phase. Pipeline-aware runs
|
|
140
|
+
may carry `phase-source-bundle.v1` metadata into planning and export
|
|
141
|
+
`phase_loop_closeout.v1` with redacted evidence refs. DFFAKESMOKE records the
|
|
142
|
+
local substrate receipt at `docs/phase-loop/dffakesmoke-substrate-receipt.md`
|
|
143
|
+
and uses `vendor/phase-loop-runtime/tests/fixtures/phase_loop_fake_smoke/matrix.json` to name the fake
|
|
144
|
+
success, failure, default-dispatch, smoke-wrapper, and receipt proof matrix.
|
|
145
|
+
`phase_loop_closeout.v1` after execution, but standalone phase-loop operation
|
|
146
|
+
stays supported without Pipeline metadata or `.pipeline/**` state.
|
|
147
|
+
|
|
148
|
+
Migration triage follows the same boundary: stale protected-source evidence
|
|
149
|
+
routes to Pipeline bundle refresh, while local closeout, dispatch, smoke, or
|
|
150
|
+
runner-contract failures route to dotfiles repair. Authenticated live harness
|
|
151
|
+
smokes continue to require explicit environment gates; the Pipeline bridge
|
|
152
|
+
proof does not make live Pipeline execution a default prerequisite.
|
|
153
|
+
|
|
154
|
+
Skill examples must keep Portal contracts, Portal projection, Greenfield
|
|
155
|
+
authority files, and Greenfield metadata-only authority refs mediated through
|
|
156
|
+
governed-pipeline closeout ingest. They are not direct dotfiles write targets,
|
|
157
|
+
and standalone dotfiles use remains valid without Pipeline metadata. No harness
|
|
158
|
+
may infer writes to `.pipeline/**`, governed-pipeline specs, Portal contracts,
|
|
159
|
+
Greenfield authority files, private evidence, raw data, raw evidence,
|
|
160
|
+
credentials, provider payloads, or legacy `.codex/phase-loop/` state without
|
|
161
|
+
an active plan and source bundle that explicitly own the exact path or glob.
|
|
162
|
+
|
|
163
|
+
DFTRUTHSOAK keeps the same boundary for the final truth soak: standalone
|
|
164
|
+
dotfiles closeout proof, pipeline-required closeout proof, stale-input
|
|
165
|
+
blockers, source-truth advisory hints, bridge fixtures, and downstream mirror
|
|
166
|
+
refs are valid evidence. Portal-facing proof is projection metadata owned by
|
|
167
|
+
governed-pipeline, and Greenfield-facing proof is metadata-only authority refs
|
|
168
|
+
owned by governed-pipeline. Neither surface promotes Portal or Greenfield
|
|
169
|
+
writes from dotfiles.
|
|
170
|
+
|
|
171
|
+
## Codex
|
|
172
|
+
|
|
173
|
+
Maturity: `live-supported`
|
|
174
|
+
|
|
175
|
+
| Field | Current finding |
|
|
176
|
+
| --- | --- |
|
|
177
|
+
| Prompt input | `codex exec [PROMPT]` accepts a prompt argument; if the prompt is omitted or `-` is used, stdin is read and appended as a `<stdin>` block when both are present. Local probe: `codex exec --help 2>&1 | sed -n '1,220p'`. |
|
|
178
|
+
| CWD selection | `codex exec -C <DIR>` selects the working root, and `--add-dir <DIR>` adds writable directories beside the primary workspace. Local probe: `codex exec --help 2>&1 | sed -n '1,220p'`. |
|
|
179
|
+
| Model flags | `codex exec --model <MODEL>` and `--profile <CONFIG_PROFILE>` are available. Local probe: `codex exec --help 2>&1 | sed -n '1,220p'`. |
|
|
180
|
+
| Reasoning / effort flags | The current local CLI surface does not expose a dedicated `--effort` flag on `codex exec`; the current runner sets reasoning via `-c model_reasoning_effort="..."` against config. Local probe: `codex exec --help 2>&1 | sed -n '1,220p'`; repo-local source inspection: `sed -n '1,240p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. |
|
|
181
|
+
| Permission / approval flags | `codex exec --sandbox <read-only|workspace-write|danger-full-access>`, `--full-auto`, and `--dangerously-bypass-approvals-and-sandbox` are available. Local probe: `codex exec --help 2>&1 | sed -n '1,220p'`. Official doc: the Codex CLI docs describe approval modes and scripting with `exec`, but the exact adapter-safe flags in this repo should still be taken from the probed CLI help because the current runner uses them directly. Source: <https://developers.openai.com/codex/cli>. |
|
|
182
|
+
| Streaming / log behavior | `codex exec --json` emits JSONL events and `--output-last-message <FILE>` writes the final message to a file. Local probe: `codex exec --help 2>&1 | sed -n '1,220p'`. |
|
|
183
|
+
| Exit-code semantics | The CLI help does not document detailed exit-code semantics beyond standard process completion; the runner currently trusts the child process return code surfaced by Python subprocess calls. Local probe: `codex exec --help 2>&1 | sed -n '1,220p'`; repo-local source inspection: `sed -n '1,240p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. |
|
|
184
|
+
| Context / skill / instruction injection | The current repo injects workflow intent by building prompt strings such as `codex-plan-phase ...` and `codex-execute-phase ...`; there is no separate adapter abstraction yet. Repo-local source inspection: `sed -n '1,260p' vendor/phase-loop-runtime/src/phase_loop_runtime/prompts.py` and `sed -n '1,260p' vendor/phase-loop-runtime/src/phase_loop_runtime/runner.py`. |
|
|
185
|
+
| Installed-skill discovery / install paths | Repo-local docs and bootstrap install Codex workflow skills under `~/.codex/skills/`, with shared skills mirrored from `shared/skills/` and Codex-private workflow skills from `codex-config/skills/`. Repo-local source inspection: `sed -n '1,260p' README.md`, `sed -n '1,240p' claude-config/AGENTS.md`, and `sed -n '1240,1395p' bootstrap.sh`. Official doc: the Codex CLI setup page documents install and sign-in but not repo-specific skill deployment. Source: <https://developers.openai.com/codex/cli>. |
|
|
186
|
+
|
|
187
|
+
## Claude Code / ThawedCode
|
|
188
|
+
|
|
189
|
+
Maturity: Claude Code is `proof-blocked` for autonomous live dispatch until the
|
|
190
|
+
authenticated non-interactive planning smoke completes; ThawedCode-specific
|
|
191
|
+
automation remains `manual-only` until independently proven.
|
|
192
|
+
|
|
193
|
+
`BASELINE` adds the 2026-06-18 route policy freeze without changing runtime
|
|
194
|
+
behavior. The validated facts are: normal `claude -p` worked under Claude Code
|
|
195
|
+
subscription auth; `--bare -p` failed without API-key or helper auth; fakechat
|
|
196
|
+
Channel ingress and reply worked without spawning `claude -p`; and remote
|
|
197
|
+
permission relay remains unproven. `IF-0-BASELINE-1` therefore freezes the
|
|
198
|
+
Claude route policy as Channel-first for managed local sessions, Agent View for
|
|
199
|
+
async dispatch, and `claude -p` only as a compatibility route when the task
|
|
200
|
+
explicitly accepts one-shot and billing-sensitive execution.
|
|
201
|
+
|
|
202
|
+
`CHANNEL` adds the repo-local local-only proof surface for that replacement
|
|
203
|
+
direction. `IF-0-CHANNEL-1` freezes the harness event envelope as
|
|
204
|
+
`{event_id, session_id, sender, content, attachments, created_at, ack_policy}`:
|
|
205
|
+
the loopback sidecar generates `event_id` once, preserves it through delivery
|
|
206
|
+
and acknowledgement state, keeps `sender` non-secret, restricts attachments to
|
|
207
|
+
metadata refs, and uses `ack_policy=tool_ack_required`. `IF-0-CHANNEL-2`
|
|
208
|
+
freezes the Channel tool payload as
|
|
209
|
+
`{event_id, status, text, artifacts, error, final}` with `status` limited to
|
|
210
|
+
`received`, `working`, `blocked`, `done`, or `error`; `final=true` acknowledges
|
|
211
|
+
delivery only after the sidecar records a matching `reply` or `status` tool
|
|
212
|
+
call. The proof remains loopback-only, does not use `claude -p`, and leaves
|
|
213
|
+
permission relay explicitly deferred to `PERMISSION`. On this host, the offline
|
|
214
|
+
contract checks, dry-run proof, and live acknowledgement proof pass under
|
|
215
|
+
Claude Code 2.1.181 with normal Claude Max subscription auth. The proved launch
|
|
216
|
+
shape is
|
|
217
|
+
`claude --dangerously-load-development-channels server:phase-loop-channel --allowedTools mcp__phase-loop-channel__reply,mcp__phase-loop-channel__status --model sonnet`.
|
|
218
|
+
The Claude-facing channel process uses the MCP SDK over stdio, polls the Python
|
|
219
|
+
loopback sidecar, emits `notifications/claude/channel`, and records delivery
|
|
220
|
+
only after Claude calls the hyphenated MCP tool identifier
|
|
221
|
+
`mcp__phase-loop-channel__status` or `mcp__phase-loop-channel__reply`.
|
|
222
|
+
|
|
223
|
+
`DFCHCONTRACT` freezes the metadata-only Claude route result that governed
|
|
224
|
+
adapters mirror before route behavior changes. `IF-0-DFCHCONTRACT-1` is:
|
|
225
|
+
`{route, session_id, event_id, status, text, artifacts, auth_posture, billing_posture, trust_state, permission_state, warnings, evidence_refs}`.
|
|
226
|
+
Route is limited to `claude_channel`, `claude_agent_view`, or `claude_print`.
|
|
227
|
+
`auth_posture` records `subscription_local`, `api_key`, or `unknown`;
|
|
228
|
+
`billing_posture` records `subscription_included`, `api_key_billed`,
|
|
229
|
+
`usage_credit`, or `unknown` and is never inferred from command success alone.
|
|
230
|
+
The local governed default remains `claude_channel`; `claude_agent_view` is the
|
|
231
|
+
async route; `claude_print` is billing-sensitive compatibility and must not be
|
|
232
|
+
used as a silent fallback from a failed Channel preflight. `IF-0-DFCHCONTRACT-2`
|
|
233
|
+
keeps `phase_loop_closeout.v1` governed-compatible through nested
|
|
234
|
+
`verification.status` and `source_bundle.pipeline_mode`. The fixture
|
|
235
|
+
`vendor/phase-loop-runtime/tests/fixtures/phase_loop_pipeline_bridge/dfchcontract_claude_route_evidence.json`
|
|
236
|
+
is the dotfiles-owned mirror target for governed-pipeline v25.
|
|
237
|
+
|
|
238
|
+
`PERMISSION` adds the local-only security envelope for that Channel route.
|
|
239
|
+
`IF-0-PERMISSION-1` freezes permission requests as
|
|
240
|
+
`{request_id, session_id, tool_name, description, input_preview, risk_class, requested_at}`
|
|
241
|
+
and permission verdicts as
|
|
242
|
+
`{request_id, verdict, actor, reason, decided_at}` with `verdict` limited to
|
|
243
|
+
`allow` or `deny`. The sidecar accepts only non-secret `input_preview` metadata
|
|
244
|
+
and rejects raw tool input payload fields. When a local bearer token is
|
|
245
|
+
configured, harness message writes and permission verdict writes require
|
|
246
|
+
`Authorization: Bearer <token>`; missing auth fails with 401 and wrong tokens
|
|
247
|
+
fail with 403. Sender allowlists fail closed before a message can be enqueued.
|
|
248
|
+
Verdict audit entries preserve `{request_id, session_id, verdict, actor, reason, decided_at}`
|
|
249
|
+
and never serialize raw tool inputs or bearer tokens. The Channel plugin
|
|
250
|
+
declares permission relay support while preserving `experimental.claude/channel`
|
|
251
|
+
and the hyphenated `mcp__phase-loop-channel__reply` /
|
|
252
|
+
`mcp__phase-loop-channel__status` tools. Permission notifications contain only
|
|
253
|
+
`request_id`, `tool_name`, `description`, `input_preview`, `risk_class`, and
|
|
254
|
+
`requested_at`, and instruct operators to route allow/deny decisions through
|
|
255
|
+
the authenticated local harness endpoint instead of raw terminal control.
|
|
256
|
+
Remote non-loopback transport and broader workspace trust changes remain
|
|
257
|
+
explicit non-goals for this phase.
|
|
258
|
+
|
|
259
|
+
`SESSION` adds the managed local session layer without changing the route
|
|
260
|
+
policy. `IF-0-SESSION-1` freezes `GET /sessions` as
|
|
261
|
+
`{"sessions": [...]}` where each session record contains
|
|
262
|
+
`{session_id, adapter, cwd, state, auth_posture, trust_state, channel_health, last_event_id, last_reply_at, permission_state}`.
|
|
263
|
+
The `claude_channel` adapter records non-secret launch metadata before
|
|
264
|
+
dispatch, keeps `state` to `disconnected`, `starting`, `ready`, `blocked`,
|
|
265
|
+
`stopped`, or `stale`, and keeps `channel_health` to `disconnected`,
|
|
266
|
+
`starting`, `ready`, `blocked`, or `stopped`. Channel replies update
|
|
267
|
+
`last_event_id`, `last_reply_at`, and ready or blocked health; permission audit
|
|
268
|
+
events update `permission_state` without exposing raw tool input, bearer
|
|
269
|
+
tokens, or local environment values.
|
|
270
|
+
|
|
271
|
+
The managed launch wrapper preserves the proved Channel command shape
|
|
272
|
+
(`server:phase-loop-channel` with the hyphenated
|
|
273
|
+
`mcp__phase-loop-channel__reply` and `mcp__phase-loop-channel__status` tool
|
|
274
|
+
identifiers) and preflights workspace trust, repo-local `.mcp.json` trust
|
|
275
|
+
posture including `pmcp` pending approval, Claude auth posture, and hidden
|
|
276
|
+
Channel support before dispatch. Notification, Stop, and UserPromptSubmit hooks
|
|
277
|
+
fan out metadata-only hook events to the sidecar when
|
|
278
|
+
`PHASE_LOOP_CHANNEL_SIDECAR_URL` and a session id are present, while preserving
|
|
279
|
+
the existing Zellij notification and clear behavior when no sidecar is active.
|
|
280
|
+
Cleanup now recognizes stale managed Channel session processes while retaining
|
|
281
|
+
the protected harness process allowlist.
|
|
282
|
+
|
|
283
|
+
`HARDEN` packages that Channel path as a repeatable local install contract.
|
|
284
|
+
`IF-0-HARDEN-1` freezes
|
|
285
|
+
`claude-config/plugins/phase-loop-channel/.claude-plugin/plugin.json`,
|
|
286
|
+
`package.json`, `bun.lock`, the plugin README, root README, ONBOARDING, and
|
|
287
|
+
`scripts/launch-claude-channel-session --dry-run --json` as the clean-machine
|
|
288
|
+
setup surface. The dry-run reports
|
|
289
|
+
`{session_id, adapter, cwd, state, auth_posture, trust_state, channel_health, command, plugin_dir}`
|
|
290
|
+
without secrets and preserves `server:phase-loop-channel` plus the hyphenated
|
|
291
|
+
`mcp__phase-loop-channel__reply` and
|
|
292
|
+
`mcp__phase-loop-channel__status` tool identifiers. Generated dependency trees
|
|
293
|
+
such as `node_modules` remain install output, not package contract files.
|
|
294
|
+
|
|
295
|
+
`IF-0-HARDEN-2` keeps the sidecar local-only by default. Remote client posture
|
|
296
|
+
stays blocked unless explicit bearer-token or equivalent harness auth plus
|
|
297
|
+
sender allowlist policy exists before message, reply/status, or
|
|
298
|
+
permission-verdict writes. Permission audit entries remain
|
|
299
|
+
`{request_id, session_id, verdict, actor, reason, decided_at}`; redaction tests
|
|
300
|
+
cover bearer tokens, local env values, raw tool input, OAuth/keychain payloads,
|
|
301
|
+
terminal transcripts, and provider payload fields.
|
|
302
|
+
|
|
303
|
+
`IF-0-HARDEN-3` freezes the operator smoke story: offline Channel dry-run,
|
|
304
|
+
opt-in live Channel ingress/reply proof, opt-in permission-relay proof, Agent
|
|
305
|
+
View blocked/completed lifecycle checks, and `claude -p` print compatibility.
|
|
306
|
+
Each smoke reports skipped, blocked, or passed with a non-secret summary.
|
|
307
|
+
Fakechat remains validation tooling only and is not promoted to shared default
|
|
308
|
+
Claude settings.
|
|
309
|
+
|
|
310
|
+
`BG` adds Agent View as a secondary async Claude Code path and freezes
|
|
311
|
+
`IF-0-BG-1`. The adapter lists background sessions with
|
|
312
|
+
`claude agents --json --all` and reduces each record to non-secret
|
|
313
|
+
`AgentViewSession` metadata:
|
|
314
|
+
`{id, session_id, cwd, kind, state, status, name, started_at, pid}`. State
|
|
315
|
+
reduction is limited to `running`, `done`, `blocked`, `stopped`, `failed`, and `unknown`;
|
|
316
|
+
unknown CLI states are retained as unknown metadata instead of being treated as
|
|
317
|
+
success. Agent View launch preparation builds `claude --bg` commands only after
|
|
318
|
+
workspace and repo-local `.mcp.json` trust preflights pass, including
|
|
319
|
+
`pmcp_pending_approval`; trust or unsupported launch posture is reported as a
|
|
320
|
+
structured blocker and never silently falls back to `claude -p`.
|
|
321
|
+
|
|
322
|
+
Agent View treats `claude logs <id>` as human-readable operator text, not a
|
|
323
|
+
stable machine-state API. The adapter exposes command builders for
|
|
324
|
+
`claude attach <id>`, `claude stop <id>`, and `claude rm <id>` without parsing
|
|
325
|
+
terminal output as a contract. Stopped and done sessions are eligible for
|
|
326
|
+
documented `claude rm <id>` cleanup, while blocked records are not force-removed
|
|
327
|
+
by list or status operations; if `claude rm` refuses a blocked record, the
|
|
328
|
+
adapter reports an operator-visible blocker summary and does not mark the
|
|
329
|
+
session deleted. BG does not promote Agent View to the default Claude route,
|
|
330
|
+
does not parse `~/.claude/jobs` as the primary API, and does not change the
|
|
331
|
+
Channel-first policy for managed local sessions.
|
|
332
|
+
|
|
333
|
+
`DFSMOKE` closes the migration baseline for operator routing. The primary local
|
|
334
|
+
route is `PHASE_LOOP_CLAUDE_ROUTE=channel` with
|
|
335
|
+
`PHASE_LOOP_CLAUDE_CHANNEL_URL` and `PHASE_LOOP_CHANNEL_SESSION_ID` or
|
|
336
|
+
`PHASE_LOOP_CLAUDE_CHANNEL_SESSION_ID`; this preserves
|
|
337
|
+
subscription-authenticated local Claude Code sessions and blocks on failed
|
|
338
|
+
Channel preflight. The async route is `PHASE_LOOP_CLAUDE_ROUTE=agent_view` and
|
|
339
|
+
uses Agent View / `claude --bg` lifecycle metadata. The CI or one-shot route is
|
|
340
|
+
`PHASE_LOOP_CLAUDE_ROUTE=print`, is billing-sensitive `claude -p`
|
|
341
|
+
compatibility, and must be selected explicitly. Emergency PTY/tmux control is a
|
|
342
|
+
manual fallback for legacy TUI sessions only, not the first-class control plane.
|
|
343
|
+
|
|
344
|
+
`MIGRATE` may consume `IF-0-SESSION-1` and `IF-0-BG-1` only after BG
|
|
345
|
+
verification passes and dirty paths are limited to the BG owned files. SESSION
|
|
346
|
+
does not migrate phase-loop Claude dispatch, does not remove the existing local
|
|
347
|
+
notification path, does not broaden remote transport, and does not write
|
|
348
|
+
secrets.
|
|
349
|
+
|
|
350
|
+
`CLIRESEARCH` on 2026-04-27 froze
|
|
351
|
+
`docs/phase-loop/claude-code-v6-research.md` as the current v6 Claude baseline.
|
|
352
|
+
That artifact and `docs/phase-loop/claude-code-v6-live-proof.md` are the
|
|
353
|
+
source of truth for the local CLI probe ledger, official doc coverage, PMCP /
|
|
354
|
+
Context7 replay notes, teammate-mode reconciliation, the disposable live-proof
|
|
355
|
+
results, and the risk table consumed by `CLAEXEC`, `PLUGINPACK`, `TEAMGOV`,
|
|
356
|
+
`TASKLEDGER`, `DELEGATE`, and `LIVEPROOF`. `PROMOTE` reduces those inputs into
|
|
357
|
+
four support slices and keeps only the currently defensible claims published.
|
|
358
|
+
|
|
359
|
+
`TEAMGOV` now freezes a second-layer posture inside the Claude adapter:
|
|
360
|
+
`solo`, `subagent`, and `agent_team` execution modes are tracked separately in
|
|
361
|
+
launch metadata. `PROMOTE` adds a fourth operator-facing slice,
|
|
362
|
+
`claude_delegated_worker`, for runner-brokered Claude child work. `solo`
|
|
363
|
+
remains the launch default; `subagent` and `agent_team` stay operator
|
|
364
|
+
`experimental`, require a team-safe phase-plan ownership assessment, and keep
|
|
365
|
+
task-list or teammate controls denied by default until `TASKLEDGER` and
|
|
366
|
+
`LIVEPROOF` add stronger observability and proof. Runner-brokered Claude child
|
|
367
|
+
work stays proof-blocked until the same autonomous closeout contract is proven
|
|
368
|
+
under child execution.
|
|
369
|
+
|
|
370
|
+
| Field | Current finding |
|
|
371
|
+
| --- | --- |
|
|
372
|
+
| Prompt input | Claude Code defaults to interactive mode and uses `-p, --print` for non-interactive output. The runner keeps explicit `PHASE_LOOP_CLAUDE_ROUTE=print` compatibility with `claude -p --verbose --output-format stream-json`, sends Channel route prompts through the local sidecar, and builds Agent View async prompts with `claude --bg`. Print is billing-sensitive compatibility and never a silent fallback from Channel or Agent View failure. Local probe: `claude --help 2>&1 | grep -nE -- '--print|--output-format|--permission-mode|--plugin-dir|--worktree|--add-dir|--effort|--model|--system-prompt|--append-system-prompt'`. Official doc: Anthropic documents `--print` as the non-interactive surface. Source: <https://code.claude.com/docs/en/cli-reference>. |
|
|
373
|
+
| CWD selection | The CLI exposes `--add-dir <directories...>` for additional tool access and `-w, --worktree [name]` for a new git worktree session. Local probe: `claude --help 2>&1 | grep -nE -- '--print|--output-format|--permission-mode|--plugin-dir|--worktree|--add-dir|--effort|--model|--system-prompt|--append-system-prompt'`. Official doc: Anthropic documents both `--add-dir` and `--worktree`. Source: <https://code.claude.com/docs/en/cli-reference>. |
|
|
374
|
+
| Model flags | `claude --model <model>` is available. Local probe: `claude --help 2>&1 | grep -nE -- '--print|--output-format|--permission-mode|--plugin-dir|--worktree|--add-dir|--effort|--model|--system-prompt|--append-system-prompt'`. Official doc: Anthropic documents `--model`. Source: <https://code.claude.com/docs/en/cli-reference>. |
|
|
375
|
+
| Reasoning / effort flags | `claude --effort <low|medium|high|xhigh|max>` is available. Local probe: `claude --help 2>&1 | grep -nE -- '--print|--output-format|--permission-mode|--plugin-dir|--worktree|--add-dir|--effort|--model|--system-prompt|--append-system-prompt'`. Official doc: Anthropic documents the flag in current CLI reference. Source: <https://code.claude.com/docs/en/cli-reference>. |
|
|
376
|
+
| Permission / approval flags | `--permission-mode` supports `acceptEdits`, `auto`, `bypassPermissions`, `default`, `dontAsk`, and `plan`; `--dangerously-skip-permissions` also exists in current local help. Local probe: `claude --help 2>&1 | sed -n '1,120p'`. Official doc: Anthropic documents `--permission-mode`; current repo execution should still probe the live CLI before locking exact values. Source: <https://code.claude.com/docs/en/cli-reference>. |
|
|
377
|
+
| Streaming / log behavior | `--output-format <text|json|stream-json>` and `--input-format <text|stream-json>` are documented for print mode. The current runner uses `--output-format stream-json`; downstream reduction consumes the streamed events and closeout text rather than relying on Channel ingress for this compatibility route. Local probe: `claude --help 2>&1 | sed -n '1,120p'`. Official doc: Anthropic documents both surfaces. Source: <https://code.claude.com/docs/en/cli-reference>. |
|
|
378
|
+
| Exit-code semantics | The current official CLI reference enumerates print-mode output formats but does not publish a detailed exit-code contract for automation in the surfaced page reviewed here. Mark as unknown pending a stronger vendor guarantee. |
|
|
379
|
+
| Context / skill / instruction injection | Claude Code supports `--system-prompt`, `--append-system-prompt`, `--plugin-dir`, `--agents`, `--settings`, and `--mcp-config`; `--bare` explicitly says skills still resolve via `/skill-name` when present, but the 2026-06-18 validation keeps bare mode outside the subscription-auth route. The current runner materializes a run-local bundle, passes `--plugin-dir`, `--settings`, inline `--agents` JSON, `--mcp-config`, `--tools`, `--disallowedTools`, `--add-dir`, `--model`, `--effort`, and optional `--json-schema`, and records only redacted bundle-path and hash metadata. Local probe: `claude --help 2>&1 | sed -n '1,120p'`; repo-local source inspection: `build_claude_command(...)`, `_resolve_command_context(...)`, `_claude_bundle_paths(...)`, and `_claude_context_prompt(...)` in `vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. Official docs: Anthropic documents plugin-directory, dynamic `--agents` JSON, and plugin component layout. Sources: <https://code.claude.com/docs/en/cli-usage>, <https://code.claude.com/docs/en/plugins-reference>. |
|
|
380
|
+
| Installed-skill discovery / install paths | Repo-local docs install Claude workflow skills at `~/.claude/skills/`, shared skills from `shared/skills/`, and Claude-private workflow skills from `claude-config/claude-skills/`. Repo-local source inspection: `sed -n '1,260p' README.md`, `sed -n '1,240p' claude-config/AGENTS.md`, and `sed -n '1240,1395p' bootstrap.sh`. ThawedCode status: no separate official ThawedCode CLI documentation was found during this phase, so downstream work should treat ThawedCode as an unverified Claude-compatible variant rather than a separately cleared adapter contract. |
|
|
381
|
+
|
|
382
|
+
Current permission mapping remains a compatibility-launch inventory item:
|
|
383
|
+
`_claude_permission_mode(...)` maps review to `plan`, execute and repair to
|
|
384
|
+
`bypassPermissions`, other actions to `acceptEdits`, and explicit
|
|
385
|
+
`bypass_approvals` to `bypassPermissions` plus
|
|
386
|
+
`--dangerously-skip-permissions`. BASELINE records this behavior for later
|
|
387
|
+
route-policy work and does not endorse broadening it.
|
|
388
|
+
|
|
389
|
+
DOCSCLOSE authenticated proof on 2026-04-26 confirmed `claude auth status`
|
|
390
|
+
with a subscription-backed local session, then observed the disposable
|
|
391
|
+
`claude-plan-phase` child produce no closeout before the runner timeout. This
|
|
392
|
+
is a live-dispatch proof blocker, not an auth blocker; keep Claude manual TUI
|
|
393
|
+
reentry and manual imports available through the shared state ledger.
|
|
394
|
+
|
|
395
|
+
### Frozen Claude Failure Inventory
|
|
396
|
+
|
|
397
|
+
The proof-blocking Claude cases are explicit parity failures, not vague
|
|
398
|
+
warnings:
|
|
399
|
+
|
|
400
|
+
| Failure case | Frozen reduction |
|
|
401
|
+
| --- | --- |
|
|
402
|
+
| Non-interactive timeout before closeout | `adapter_failure` plus operator `proof-blocked`; route to repair instead of describing the phase as complete. |
|
|
403
|
+
| Empty or unusable output capture | `adapter_failure`; the runner must not treat an empty log or malformed JSON body as success. |
|
|
404
|
+
| Missing `automation:` block | `adapter_failure` and repairable non-human blocker because the child did not emit the shared closeout contract. |
|
|
405
|
+
| Missing terminal summary | `adapter_failure` and repairable non-human blocker because closeout and monitor surfaces are incomplete. |
|
|
406
|
+
| Stale handoff or state after repair | `adapter_failure` until a repair flow writes fresh shared artifacts that supersede the stale ones. |
|
|
407
|
+
|
|
408
|
+
## Gemini CLI
|
|
409
|
+
|
|
410
|
+
Maturity: `live-supported`
|
|
411
|
+
|
|
412
|
+
| Field | Current finding |
|
|
413
|
+
| --- | --- |
|
|
414
|
+
| Prompt input | Gemini CLI defaults to interactive mode and uses `-p, --prompt` for non-interactive headless mode; positional query arguments remain interactive by default. Local probe: `gemini --help 2>&1 | sed -n '1,220p'`. Official doc: Gemini CLI configuration docs describe non-interactive output and currently mark `--prompt` as deprecated in favor of positional arguments, which means adapter work must pin to the live CLI it launches. Source: <https://geminicli.com/docs/reference/configuration/>. |
|
|
415
|
+
| CWD selection | `-w, --worktree` creates a new git worktree session, and `--include-directories` expands the workspace. Headless disposable runs also need `--skip-trust` or equivalent workspace trust configuration; otherwise Gemini overrides approval mode and exits before the run starts. Local probe: `gemini --help 2>&1 | sed -n '1,220p'` plus a disposable `gemini -p ... --approval-mode plan --output-format json` smoke. Official doc: current configuration docs describe extension and output surfaces; the local help is the authoritative probe for the present launcher-ready flags. Source: <https://geminicli.com/docs/reference/configuration/>. |
|
|
416
|
+
| Model flags | `gemini --model <model>` is available. Local probe: `gemini --help 2>&1 | sed -n '1,220p'`. Official doc: Gemini CLI configuration documents `--model`. Source: <https://geminicli.com/docs/reference/configuration/>. |
|
|
417
|
+
| Reasoning / effort flags | No dedicated reasoning-effort flag was documented or probed in the current CLI surface reviewed here. Plan/read-only behavior exists via `--approval-mode plan` and planning tools, but that is not equivalent to a model reasoning knob. Local probe: `gemini --help 2>&1 | sed -n '1,220p'`. Official doc: Gemini planning tools document read-only plan mode. Source: <https://geminicli.com/docs/tools/planning/>. |
|
|
418
|
+
| Permission / approval flags | `--approval-mode <default|auto_edit|yolo|plan>`, `--sandbox`, and deprecated `--allowed-tools` exist; the policy engine ties rules to approval modes. Local probe: `gemini --help 2>&1 | sed -n '1,220p'`. Official doc: Gemini policy-engine docs describe approval modes, including `plan`. Source: <https://geminicli.com/docs/reference/policy-engine/>. |
|
|
419
|
+
| Streaming / log behavior | `--output-format <text|json|stream-json>` is available. Local disposable smoke on 2026-04-26 showed `json` returning a top-level `response` string after warning prelude lines, and `stream-json` emitting assistant `message` deltas before a final `result` record. Official doc: Gemini configuration documents `text`, `json`, and `stream-json`. Source: <https://geminicli.com/docs/reference/configuration/>. |
|
|
420
|
+
| Exit-code semantics | The reviewed Gemini docs and help output do not publish an adapter-safe exit-code contract beyond normal process completion. Mark as unknown. |
|
|
421
|
+
| Context / skill / instruction injection | Gemini supports policy injection via `--policy` and `--admin-policy`, plus extension selection via `--extensions`. Skills are a native surface and load on demand once activated. Local probe: `gemini --help 2>&1 | sed -n '1,220p'; gemini skills --help 2>&1 | sed -n '1,220p'; gemini extensions --help 2>&1 | sed -n '1,220p'`. Official doc: Gemini skills docs describe user, workspace, and extension skill tiers, and extension docs describe extension-based packaging. Sources: <https://geminicli.com/docs/cli/skills/>, <https://geminicli.com/extensions/about/>. |
|
|
422
|
+
| Installed-skill discovery / install paths | Official doc: Gemini discovers workspace skills from `.gemini/skills/` or `.agents/skills/`, user skills from `~/.gemini/skills/` or `~/.agents/skills/`, and extension skills from installed extensions. Source: <https://geminicli.com/docs/cli/skills/>. Repo-local docs and bootstrap deploy Gemini workflow skills to `~/.gemini/skills/` from `gemini-config/skills/`, and shared skills to both `~/.gemini/skills/` and `~/.agents/skills/`. Repo-local source inspection: `sed -n '1,260p' README.md`, `sed -n '1,240p' claude-config/AGENTS.md`, and `sed -n '1240,1395p' bootstrap.sh`. |
|
|
423
|
+
|
|
424
|
+
## OpenCode
|
|
425
|
+
|
|
426
|
+
Maturity: `live-supported`
|
|
427
|
+
|
|
428
|
+
| Field | Current finding |
|
|
429
|
+
| --- | --- |
|
|
430
|
+
| Prompt input | `opencode run [message..]` is the non-interactive command surface in the currently installed CLI. Local probe: `opencode run --help 2>&1 | sed -n '1,220p'`. Official doc: the OpenCode CLI docs describe `opencode run` as the command surface for scripted use. Source: <https://opencode.ai/docs/cli/>. |
|
|
431
|
+
| CWD selection | `opencode run --dir <path>` selects the directory, and `--attach` can target a running server. Local probe: `opencode run --help 2>&1 | sed -n '1,220p'`. Official doc: OpenCode CLI docs document `--attach`; the local help exposes `--dir` in the currently installed build. Source: <https://opencode.ai/docs/cli/>. |
|
|
432
|
+
| Model flags | `opencode run --model <provider/model>` is available. Local probe: `opencode run --help 2>&1 | sed -n '1,220p'`. Official doc: OpenCode CLI docs and model docs use the `provider/model` form. Sources: <https://opencode.ai/docs/cli/>, <https://opencode.ai/docs/models>. |
|
|
433
|
+
| Reasoning / effort flags | `opencode run --variant <provider-specific reasoning effort, e.g. high, max, minimal>` exists in the installed CLI. Local probe: `opencode run --help 2>&1 | sed -n '1,220p'`. Official doc: the reviewed docs show model selection but do not yet surface a stable generic reasoning-variant contract for automation; treat `--variant` as probe-backed, not doc-frozen. |
|
|
434
|
+
| Permission / approval flags | `--dangerously-skip-permissions` exists in the current CLI; OpenCode config and agent docs define permission states such as `allow`, `ask`, and `deny`, and current defaults are permissive unless config narrows them. The phase-loop live adapter therefore records permission posture explicitly and fails closed unless the runner intentionally opts into the permissive path. Local probes: `opencode run --help 2>&1 | sed -n '1,220p'` and `opencode agent list`. Official docs: OpenCode config and permissions docs define the permission model and default allow posture. Sources: <https://opencode.ai/docs/config/>, <https://opencode.ai/docs/permissions/>. |
|
|
435
|
+
| Streaming / log behavior | `opencode run --format <default|json>` exposes formatted vs raw JSON event output; `--print-logs` sends logs to stderr. Local probe: `opencode run --help 2>&1 | sed -n '1,220p'`. Official doc: OpenCode CLI docs document JSON formatting for scripted output. Source: <https://opencode.ai/docs/cli/>. |
|
|
436
|
+
| Exit-code semantics | The reviewed docs do not publish a detailed non-interactive exit-code contract. Mark as unknown. |
|
|
437
|
+
| Context / skill / instruction injection | OpenCode config supports `instructions` files, agent markdown/config files, and prompt files such as `prompt: {file:...}` for agents. The live phase-loop adapter keeps the prompt body minimal and points the child at run-local `.codex/phase-loop/runs/<run-id>/context.md`, treating repo-sourced injected context as authoritative and installed-skill drift as warning-only metadata. Local probes: `opencode agent --help 2>&1 | sed -n '1,220p'` and repo-local source inspection of `vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. Official docs: config and agents docs cover instruction files, prompt files, and markdown agents. Sources: <https://opencode.ai/docs/config/>, <https://opencode.ai/docs/agents/>. |
|
|
438
|
+
| Installed-skill discovery / install paths | Official doc: OpenCode discovers skills from `.opencode/skills/`, `~/.config/opencode/skills/`, `.claude/skills/`, `~/.claude/skills/`, `.agents/skills/`, and `~/.agents/skills/`, walking upward to the git worktree for project-local paths. Source: <https://opencode.ai/docs/skills>. Repo-local docs and bootstrap deploy OpenCode workflow skills to `~/.config/opencode/skills/` from `opencode-config/skills/`, while shared skills are mirrored into both `~/.config/opencode/skills/` and `~/.agents/skills/`. Repo-local source inspection: `sed -n '1,260p' README.md`, `sed -n '1,240p' claude-config/AGENTS.md`, and `sed -n '1240,1395p' bootstrap.sh`. |
|
|
439
|
+
|
|
440
|
+
## Generic Command Adapter
|
|
441
|
+
|
|
442
|
+
Maturity: `experimental`
|
|
443
|
+
|
|
444
|
+
| Field | Current finding |
|
|
445
|
+
| --- | --- |
|
|
446
|
+
| Prompt input | `CMDENTRY` freezes the public generic surface as an explicit `--executor command` path plus `--command-name` and `--command-template`. The current implementation supports only `context_file` delivery: the template must include `{context_file}` so the runner can deliver the repo-sourced workflow bundle without inlining raw context into argv. Repo-local source inspection: `sed -n '1,260p' vendor/phase-loop-runtime/src/phase_loop_runtime/cli.py` and `sed -n '260,520p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. |
|
|
447
|
+
| CWD selection | The runner keeps cwd runner-owned and records it as `wrapped_cwd` in `launch.json`; templates may reference `{cwd}` or `{repo}`, but the adapter still launches from the selected repo root instead of inventing a separate workspace model. Repo-local source inspection: `sed -n '260,520p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py` and `sed -n '40,110p' vendor/phase-loop-runtime/src/phase_loop_runtime/observability.py`. |
|
|
448
|
+
| Model flags | The adapter does not define a universal model flag, but the template may opt into `{model}` when the wrapped command understands one. Unsupported placeholders fail closed. Repo-local source inspection: `sed -n '260,520p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. |
|
|
449
|
+
| Reasoning / effort flags | The template may opt into `{effort}` when the wrapped command exposes a reasoning control. No cross-command effort contract is implied beyond explicit placeholder substitution. Repo-local source inspection: `sed -n '260,520p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. |
|
|
450
|
+
| Permission / approval flags | The generic adapter does not normalize wrapped-command approval semantics. Permission posture remains `manual`, keeping the runner's safety policy explicit and preventing the adapter from pretending arbitrary subprocesses are first-class live harnesses. Repo-local source inspection: `sed -n '1,220p' vendor/phase-loop-runtime/src/phase_loop_runtime/capability_registry.py`. |
|
|
451
|
+
| Streaming / log behavior | Current local source uses `subprocess.run(..., capture_output=True, text=True, check=False)` for no-log execution and `subprocess.Popen(..., stdout=PIPE, stderr=STDOUT, text=True)` for log streaming. Repo-local source inspection: `sed -n '1,240p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. Official doc: Python subprocess docs define `run`, `Popen`, and `returncode` behavior. Source: <https://docs.python.org/3.11/library/subprocess.html>. |
|
|
452
|
+
| Exit-code semantics | Current local source trusts child `returncode`; Python docs state that `Popen.returncode` is initially `None` and is set once termination is detected. Repo-local source inspection: `sed -n '1,240p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`. Official doc: Python subprocess docs define `returncode`. Source: <https://docs.python.org/3.11/library/subprocess.html>. |
|
|
453
|
+
| Context / skill / instruction injection | The frozen generic contract is repo-sourced context-file delivery only. Launch metadata records `command_adapter_name`, `command_template`, `wrapped_cwd`, `context_path`, and `context_sha256`; unsupported command shapes such as missing `{context_file}` or unsupported placeholders block before launch. Repo-local source inspection: `sed -n '1,260p' shared/phase-loop/protocol.md`, `sed -n '260,520p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`, and `sed -n '340,760p' vendor/phase-loop-runtime/src/phase_loop_runtime/runner.py`. |
|
|
454
|
+
| Installed-skill discovery / install paths | Not applicable generically. The command adapter receives the repo-sourced workflow bundle directly and does not claim any installed-skill contract for the wrapped command. |
|
|
455
|
+
|
|
456
|
+
## Local Probe Inventory
|
|
457
|
+
|
|
458
|
+
All local claims above come from metadata-only help, version, path, or source-inspection commands:
|
|
459
|
+
|
|
460
|
+
| Probe | Purpose |
|
|
461
|
+
| --- | --- |
|
|
462
|
+
| `git status --short -- plans/phase-plan-v5-PROMOTE.md` | Confirmed the `PROMOTE` plan artifact was staged before execution. |
|
|
463
|
+
| `test ! -e docs/phase-loop/harness-capability-matrix.md && rg -n "build_codex_command|codex-plan-phase|codex-execute-phase|codex-phase-roadmap-builder|codex-phase-loop|subprocess\\.run|Popen" vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py vendor/phase-loop-runtime/src/phase_loop_runtime/prompts.py vendor/phase-loop-runtime/src/phase_loop_runtime/runner.py README.md bootstrap.sh` | Confirmed the current runner is still Codex-specific and the target artifact did not yet exist. |
|
|
464
|
+
| `rg -n "~/.claude/skills|~/.codex/skills|~/.config/opencode/skills|~/.gemini/skills|shared/skills|claude-config/claude-skills|codex-config/skills|opencode-config/skills|gemini-config/skills" README.md bootstrap.sh claude-config/AGENTS.md codex-config/shared/runtime-state.md claude-config/shared/runtime-state.md opencode-config/shared/runtime-state.md gemini-config/shared/runtime-state.md` | Reduced repo-local skill install and runtime-state paths. |
|
|
465
|
+
| `codex --version`, `claude --version`, `gemini --version`, `opencode --version` | Captured installed CLI versions. |
|
|
466
|
+
| `codex exec --help 2>&1 | sed -n '1,220p'` | Captured the current non-interactive Codex adapter surface. |
|
|
467
|
+
| `claude --help 2>&1 | sed -n '1,120p'` and `claude --help 2>&1 | grep -nE -- '--print|--output-format|--permission-mode|--plugin-dir|--worktree|--add-dir|--effort|--model|--system-prompt|--append-system-prompt'` | Captured the current Claude Code non-interactive, permission, and prompt-injection surfaces. |
|
|
468
|
+
| `gemini --help 2>&1 | sed -n '1,220p'`, `gemini skills --help 2>&1 | sed -n '1,220p'`, and `gemini extensions --help 2>&1 | sed -n '1,220p'` | Captured Gemini CLI headless, policy, skills, and extension surfaces. |
|
|
469
|
+
| `opencode run --help 2>&1 | sed -n '1,220p'` and `opencode agent --help 2>&1 | sed -n '1,220p'` | Captured OpenCode run, formatting, permission-skip, directory, and agent-management surfaces. |
|
|
470
|
+
| `sed -n '1,260p' README.md`, `sed -n '1,240p' claude-config/AGENTS.md`, `sed -n '1,220p' codex-config/shared/runtime-state.md`, `sed -n '1,220p' claude-config/shared/runtime-state.md`, `sed -n '1,220p' opencode-config/shared/runtime-state.md`, `sed -n '1,220p' gemini-config/shared/runtime-state.md`, and `sed -n '1240,1395p' bootstrap.sh` | Reduced repo-local skill deployment, discovery, and runtime-state paths. |
|
|
471
|
+
| `sed -n '1,240p' vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py`, `sed -n '1,260p' vendor/phase-loop-runtime/src/phase_loop_runtime/prompts.py`, and `sed -n '1,260p' vendor/phase-loop-runtime/src/phase_loop_runtime/runner.py` | Confirmed the current runner still hardcodes Codex command construction and prompt wording. |
|
|
472
|
+
|
|
473
|
+
## Adapter Constraints and Known Limits
|
|
474
|
+
|
|
475
|
+
1. `vendor/phase-loop-runtime/src/phase_loop_runtime/launcher.py` and `vendor/phase-loop-runtime/src/phase_loop_runtime/runner.py` are still Codex-only because launch construction flows through `build_codex_command(...)`; ADAPTER must introduce a neutral executor interface before any non-Codex launch is real.
|
|
476
|
+
2. `vendor/phase-loop-runtime/src/phase_loop_runtime/prompts.py` is also Codex-only because the built prompt bodies literally emit `codex-phase-roadmap-builder`, `codex-plan-phase`, `codex-execute-phase`, and `codex-phase-loop` command strings. PROTOCOL can standardize outputs first, but ADAPTER and INJECT must stop assuming the child understands Codex skill names.
|
|
477
|
+
3. `README.md` and `bootstrap.sh` already distinguish shared private skills from harness-private workflow skills. INJECT should preserve that split instead of flattening all harnesses into one install root.
|
|
478
|
+
4. Gemini and OpenCode both have native skill ecosystems, but they are not contract-compatible with Codex workflow skill names. INJECT should model these as separate delivery modes: native skill discovery where supported, inline or file-based instruction fallback otherwise.
|
|
479
|
+
5. Claude Code currently has a documented non-interactive `--print` path plus prompt and plugin injection surfaces, but the DOCSCLOSE disposable planning smoke timed out before closeout. Operator docs should keep `claude_solo` and `claude_delegated_worker` proof-blocked until that verifier passes, while treating `claude_subagent` and `claude_agent_team` as governed experimental slices and keeping ThawedCode-specific automation manual-only unless a later phase verifies it directly.
|
|
480
|
+
6. IF-0-BASELINE-1 freezes Claude routing policy for downstream work: Channel-first for managed local sessions, Agent View for async dispatch, and `claude -p` only as the explicit compatibility route when one-shot and billing-sensitive execution is acceptable.
|
|
481
|
+
7. OpenCode currently defaults to permissive permissions unless config narrows them, while Codex, Claude Code, and Gemini expose more explicit command-line approval toggles. CAPREG should treat permission posture as part of capability selection instead of assuming one safe default across harnesses.
|
|
482
|
+
8. The generic command adapter is not ready for promotion beyond an experimental wrapper until a later roadmap proves how prompt text, cwd, model selection, approval posture, and observability remain constrained across arbitrary commands.
|
|
483
|
+
## Shared Compatibility Fixtures
|
|
484
|
+
|
|
485
|
+
As of `XREPOFIXTURE`, a set of canonical JSON fixtures is available for validating any phase-loop harness or adapter against the `phase_loop_closeout.v1` schema.
|
|
486
|
+
|
|
487
|
+
### Usage in Validation
|
|
488
|
+
|
|
489
|
+
All harnesses (Codex, Claude, Gemini, OpenCode, and Generic) can be tested against these scenarios:
|
|
490
|
+
- **Location**: `vendor/phase-loop-runtime/tests/fixtures/phase_loop_pipeline_bridge/`
|
|
491
|
+
- **Scenarios**: `complete`, `blocked`, `stale_input`, `failed_verification`, `human_required`.
|
|
492
|
+
|
|
493
|
+
These fixtures serve as the shared truth for cross-repo compatibility and should be the first point of validation for any new adapter or protocol change.
|
|
494
|
+
|
|
495
|
+
## DFPROMPTSYNC Readiness
|
|
496
|
+
|
|
497
|
+
Prompt and skill surfaces consume the DFPROMPTSYNC receipts at
|
|
498
|
+
`docs/phase-loop/dfpromptsync-contract-map.md` and
|
|
499
|
+
`docs/phase-loop/dfpromptsync-readiness.md`. Harness examples may cite schema
|
|
500
|
+
names, assignment fields, fixture paths, artifact refs, and digests, but must
|
|
501
|
+
not include raw secrets, raw transcripts, raw diffs, raw provider payloads,
|
|
502
|
+
credential file contents, local env values, or prompt-only containment claims.
|
|
503
|
+
|
|
504
|
+
## DFPARSOAK Integrated Soak
|
|
505
|
+
|
|
506
|
+
The integrated soak consumes `docs/phase-loop/dfparsoak-receipt.md` and
|
|
507
|
+
`docs/phase-loop/dfparsoak-runbook.md`. The route matrix covers Pi Agent
|
|
508
|
+
default, Claude Code CLI exception, Codex CLI fallback, and Gemini CLI
|
|
509
|
+
fallback with model, effort, policy source, fallback reason, lane, wave,
|
|
510
|
+
worktree, and redacted evidence metadata.
|