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,42 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
HARNESS_DEFAULT_SKILL_ROOTS: dict[str, Path] = {
|
|
8
|
+
"claude": Path("~/.claude/skills"),
|
|
9
|
+
"codex": Path("~/.codex/skills"),
|
|
10
|
+
"gemini": Path("~/.gemini/skills"),
|
|
11
|
+
"opencode": Path("~/.config/opencode/skills"),
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def current_harness(harness: str | None = None) -> str:
|
|
16
|
+
selected = harness or os.environ.get("PHASE_LOOP_HARNESS") or "codex"
|
|
17
|
+
normalized = selected.strip().lower()
|
|
18
|
+
if normalized not in HARNESS_DEFAULT_SKILL_ROOTS:
|
|
19
|
+
allowed = ", ".join(sorted(HARNESS_DEFAULT_SKILL_ROOTS))
|
|
20
|
+
raise ValueError(f"unsupported phase-loop harness {selected!r}; expected one of: {allowed}")
|
|
21
|
+
return normalized
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def resolve_skill_bundle_root(harness: str | None = None) -> Path:
|
|
25
|
+
override = os.environ.get("PHASE_LOOP_SKILL_BUNDLE")
|
|
26
|
+
if override:
|
|
27
|
+
return Path(override).expanduser()
|
|
28
|
+
return HARNESS_DEFAULT_SKILL_ROOTS[current_harness(harness)].expanduser()
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def resolve_skill_helper_root(harness: str | None = None) -> Path:
|
|
32
|
+
return resolve_skill_bundle_root(harness) / "_shared"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def resolve_handoff_root(repo: Path) -> Path:
|
|
36
|
+
return Path(repo).expanduser().resolve() / ".dev-skills" / "handoffs"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def resolve_reflection_root(skill_name: str, harness: str | None = None) -> Path:
|
|
40
|
+
if not skill_name:
|
|
41
|
+
raise ValueError("skill_name is required")
|
|
42
|
+
return resolve_skill_bundle_root(harness) / skill_name / "reflections"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Dotfiles skill-sources plugin: the per-harness overlay roots for the bundle.
|
|
2
|
+
|
|
3
|
+
DISENTANGLE (EXTRACTSKILLS SL-2) moves the per-harness dotfiles overlay roots
|
|
4
|
+
(``claude-config/claude-skills``, ``codex-config/skills``, ``gemini-config/skills``,
|
|
5
|
+
``opencode-config/skills``) out of the generic runtime's
|
|
6
|
+
``skill_inventory.HARNESS_SOURCE_ROOTS`` constant and behind this provider. The
|
|
7
|
+
generic runtime contributes nothing on its own; these roots appear only when this
|
|
8
|
+
plugin is loaded -- either via the ``phase_loop_runtime.skill_sources`` entry-point
|
|
9
|
+
group (declared in pyproject, live in a real install) or via the explicit
|
|
10
|
+
``PHASE_LOOP_SKILL_SOURCE_PLUGINS`` opt-in used in source-mode runs and tests.
|
|
11
|
+
|
|
12
|
+
The neutral generated bundle is the shared-canonical artifact (it moves to
|
|
13
|
+
agent-harness); these 4 source roots that produce the ``_overrides/`` are the
|
|
14
|
+
dotfiles-OVERLAY and stay in dotfiles, contributed through this seam.
|
|
15
|
+
|
|
16
|
+
This module is the dotfiles *profile* counterpart to ``dotfiles_profile_plugin``:
|
|
17
|
+
it is allowed to depend on dotfiles-domain knowledge. The roots are single-sourced
|
|
18
|
+
from ``build_bundle.DEFAULT_SOURCES`` so the bundle builder and this overlay seam
|
|
19
|
+
never drift apart.
|
|
20
|
+
"""
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def register_skill_sources() -> dict[str, tuple[str, ...]]:
|
|
25
|
+
"""Return the dotfiles per-harness overlay source roots.
|
|
26
|
+
|
|
27
|
+
Single-sourced from ``build_bundle.DEFAULT_SOURCES`` (a ``{harness: path}`` map);
|
|
28
|
+
each path is wrapped as a one-element tuple to match the
|
|
29
|
+
``{harness_target: (root, ...)}`` provider contract consumed by
|
|
30
|
+
:func:`phase_loop_runtime.skill_inventory.iter_skill_source_roots`.
|
|
31
|
+
|
|
32
|
+
Imported lazily to keep ``import phase_loop_runtime.skill_inventory`` clean,
|
|
33
|
+
matching ``dotfiles_profile_plugin.register_profile_commands``.
|
|
34
|
+
"""
|
|
35
|
+
from .build_bundle import DEFAULT_SOURCES
|
|
36
|
+
|
|
37
|
+
return {harness: (path,) for harness, path in DEFAULT_SOURCES.items()}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Harness-specific overlay files for this workflow skill.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-advisor-board
|
|
3
|
+
description: Run a customizable cross-vendor advisor board (formerly advisor-panel; that name remains a working alias) through the agent-harness runtime primitive when a high-stakes change needs independent review evidence.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Advisor Board
|
|
7
|
+
|
|
8
|
+
Use this skill when a plan, implementation diff, release closeout, or other high-stakes artifact needs an independent cross-vendor review board. This skill was formerly named `advisor-panel`; that name still resolves as an alias, so existing instructions that say "advisor-panel" keep working.
|
|
9
|
+
|
|
10
|
+
## Source Of Truth
|
|
11
|
+
|
|
12
|
+
The advisor-board (formerly advisor-panel) implementation is owned by `agent-harness`:
|
|
13
|
+
|
|
14
|
+
- Runtime primitive: `phase_loop_runtime.panel_invoker`
|
|
15
|
+
- Board model: `phase_loop_runtime.advisor_board` (seats, boards, resolver, validation)
|
|
16
|
+
- Entry points: `available_panel_legs`, `invoke_panel`, and `invoke_panel_request` (from a `PanelRequest`)
|
|
17
|
+
- Governed workflow integration: phase-loop governed review/pre-merge paths
|
|
18
|
+
|
|
19
|
+
Do not call dotfiles advisor-panel scripts, copy provider-specific shell scripts, or introduce a separate implementation in the skill body. The skill is a thin operator guide over the runtime primitive.
|
|
20
|
+
|
|
21
|
+
## Use
|
|
22
|
+
|
|
23
|
+
1. Prefer the repo's governed phase-loop path when reviewing phase execution or pre-merge work.
|
|
24
|
+
2. For a standalone smoke or diagnostic, build a metadata-only review artifact and call `phase_loop_runtime.panel_invoker.invoke_panel`.
|
|
25
|
+
3. Require every leg to end with `AGREE`, `PARTIALLY AGREE`, or `DISAGREE`.
|
|
26
|
+
4. Treat `EMPTY`, `TIMEOUT`, `ERROR`, `DEGRADED`, and `UNAVAILABLE` as structured evidence, not successful reviews.
|
|
27
|
+
5. Keep provider API keys out of the environment; the runtime strips known API-key variables and uses local subscription CLIs.
|
|
28
|
+
|
|
29
|
+
## Standalone Smoke Shape
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
from phase_loop_runtime.panel_invoker import available_panel_legs, invoke_panel
|
|
33
|
+
|
|
34
|
+
artifact = "Review artifact with acceptance criteria and verification evidence."
|
|
35
|
+
panel = invoke_panel(artifact, available_panel_legs())
|
|
36
|
+
for leg in panel.legs:
|
|
37
|
+
print(leg.leg, leg.status)
|
|
38
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Harness-specific overlay files for this workflow skill.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-advisor-panel
|
|
3
|
+
description: Run a customizable cross-vendor advisor board (formerly advisor-panel; that name remains a working alias) through the agent-harness runtime primitive when a high-stakes change needs independent review evidence.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Advisor Board
|
|
7
|
+
|
|
8
|
+
Use this skill when a plan, implementation diff, release closeout, or other high-stakes artifact needs an independent cross-vendor review board. This skill was formerly named `advisor-panel`; that name still resolves as an alias, so existing instructions that say "advisor-panel" keep working.
|
|
9
|
+
|
|
10
|
+
## Source Of Truth
|
|
11
|
+
|
|
12
|
+
The advisor-board (formerly advisor-panel) implementation is owned by `agent-harness`:
|
|
13
|
+
|
|
14
|
+
- Runtime primitive: `phase_loop_runtime.panel_invoker`
|
|
15
|
+
- Board model: `phase_loop_runtime.advisor_board` (seats, boards, resolver, validation)
|
|
16
|
+
- Entry points: `available_panel_legs`, `invoke_panel`, and `invoke_panel_request` (from a `PanelRequest`)
|
|
17
|
+
- Governed workflow integration: phase-loop governed review/pre-merge paths
|
|
18
|
+
|
|
19
|
+
Do not call dotfiles advisor-panel scripts, copy provider-specific shell scripts, or introduce a separate implementation in the skill body. The skill is a thin operator guide over the runtime primitive.
|
|
20
|
+
|
|
21
|
+
## Use
|
|
22
|
+
|
|
23
|
+
1. Prefer the repo's governed phase-loop path when reviewing phase execution or pre-merge work.
|
|
24
|
+
2. For a standalone smoke or diagnostic, build a metadata-only review artifact and call `phase_loop_runtime.panel_invoker.invoke_panel`.
|
|
25
|
+
3. Require every leg to end with `AGREE`, `PARTIALLY AGREE`, or `DISAGREE`.
|
|
26
|
+
4. Treat `EMPTY`, `TIMEOUT`, `ERROR`, `DEGRADED`, and `UNAVAILABLE` as structured evidence, not successful reviews.
|
|
27
|
+
5. Keep provider API keys out of the environment; the runtime strips known API-key variables and uses local subscription CLIs.
|
|
28
|
+
|
|
29
|
+
## Standalone Smoke Shape
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
from phase_loop_runtime.panel_invoker import available_panel_legs, invoke_panel
|
|
33
|
+
|
|
34
|
+
artifact = "Review artifact with acceptance criteria and verification evidence."
|
|
35
|
+
panel = invoke_panel(artifact, available_panel_legs())
|
|
36
|
+
for leg in panel.legs:
|
|
37
|
+
print(leg.leg, leg.status)
|
|
38
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Harness-specific overlay files for this workflow skill.
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-execute-detailed
|
|
3
|
+
description: "Harness Code bounded-plan executor for one detailed implementation plan with verification, acceptance reduction, and mandatory reflection closeout."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Harness Execute Detailed
|
|
7
|
+
|
|
8
|
+
Executes one detailed plan artifact produced by `<harness>-plan-detailed`.
|
|
9
|
+
Use this for bounded implementation work where a single Harness Code thread can
|
|
10
|
+
carry the change end to end without phase lanes, lane ownership, or worker
|
|
11
|
+
worktrees.
|
|
12
|
+
|
|
13
|
+
## Core Rules
|
|
14
|
+
|
|
15
|
+
Use `phase_loop_runtime.skill_paths` resolver helpers for harness skill roots,
|
|
16
|
+
handoff roots, helper roots, and reflection roots.
|
|
17
|
+
|
|
18
|
+
- Read the detailed plan artifact before editing.
|
|
19
|
+
- Optionally read `.dev-skills/handoffs/<harness>-plan-detailed/latest.md`
|
|
20
|
+
when no explicit plan path is supplied, and only trust it if `from:` is
|
|
21
|
+
`<harness>-plan-detailed`, the repo fields match the current repo, and the
|
|
22
|
+
artifact path resolves under the current repo root.
|
|
23
|
+
- Preserve user work. Never revert changes you did not make.
|
|
24
|
+
- Use `apply_patch` for manual edits.
|
|
25
|
+
- Keep implementation bounded to the detailed plan's `## Changes` section.
|
|
26
|
+
- Do not add unrelated refactors, speculative validation, or broad cleanup.
|
|
27
|
+
- Treat ignored, private, raw-data, credential, and evidence-source files as
|
|
28
|
+
read-protected unless the detailed plan explicitly allowlists the exact path
|
|
29
|
+
or glob for read access.
|
|
30
|
+
- Git safety invariant: never commit to `main` or a protected branch, never commit from
|
|
31
|
+
a dirty primary checkout, and never commit/push onto a branch this run does not own (a
|
|
32
|
+
shared or pre-existing colleague branch). When executing a plan, publishing a PR from a
|
|
33
|
+
dedicated branch is the default outcome (see the Workflow + "## Publication") unless a
|
|
34
|
+
runner owns closeout, or the user asked for local-only, planning-only, or no-publication
|
|
35
|
+
work, or verification failed. Never merge, force-push, reset, delete a publication
|
|
36
|
+
branch/worktree holding unmerged work, or run other destructive git commands without
|
|
37
|
+
explicit instruction.
|
|
38
|
+
|
|
39
|
+
## Inputs
|
|
40
|
+
|
|
41
|
+
- Plan path: explicit detailed plan artifact, or the latest valid
|
|
42
|
+
`.dev-skills/handoffs/<harness>-plan-detailed/latest.md` artifact.
|
|
43
|
+
- Optional handoff: repo-local handoff from `<harness>-plan-detailed`.
|
|
44
|
+
|
|
45
|
+
## Workflow
|
|
46
|
+
|
|
47
|
+
1. Resolve the repo root and detailed plan artifact.
|
|
48
|
+
2. Run `git status --short --untracked-files=all` and preserve the starting
|
|
49
|
+
dirty-path list for closeout comparison.
|
|
50
|
+
3. Read the plan artifact in full.
|
|
51
|
+
4. Validate that it contains `## Changes`, `## Verification`, and
|
|
52
|
+
`## Acceptance criteria`. If any section is absent or empty, stop with
|
|
53
|
+
`acceptance criterion unmet` and explain the missing section.
|
|
54
|
+
5. Best-effort mark the detailed plan manifest entry as `executing` through
|
|
55
|
+
`phase_loop_runtime.plan_manifest.update_lifecycle` (`plan-manifest append`)
|
|
56
|
+
after plan validation and before source edits. Use `by=<harness>-execute-detailed`
|
|
57
|
+
and metadata that identifies the run and plan artifact. Manifest lifecycle
|
|
58
|
+
failures emit ledger/reflection warnings only and do not abort execution
|
|
59
|
+
during the dual-mode window.
|
|
60
|
+
6. **Establish the safe working tree BEFORE editing** (unless a runner owns closeout — see step 2 / the Git safety invariant): resolve a fresh base ref (`origin/<default-branch>` after fetch, or an explicit merge target; never a stale local `main`) and select the working tree — reuse the current branch only if it is clean, non-protected, AND owned by this run; otherwise (`main`/a protected branch, a shared/foreign branch, or a dirty primary checkout) create a worktree+branch off the base: `git worktree add <path> -b <branch> <base>` under `/mnt/workspace/worktrees/<project>-<branch-slug>` if `/mnt/workspace` exists, else a repo sibling `../<project>-<branch-slug>`. Do ALL editing, the `git status` snapshots, the dirty-path classification, and verification in that tree — never on `main`/protected/dirty/shared. Then apply the `## Changes` section in declared order. For manual edits, use
|
|
61
|
+
`apply_patch`. If a requested edit requires a file not listed in
|
|
62
|
+
`## Changes`, stop and report `dirty worktree from non-plan output` rather
|
|
63
|
+
than expanding scope silently.
|
|
64
|
+
7. Run every command in `## Verification` unless the command is unsafe,
|
|
65
|
+
unavailable, or clearly requires credentials not provided by the plan. Report
|
|
66
|
+
each command with pass/fail status.
|
|
67
|
+
8. Compare the final repository state against every item in
|
|
68
|
+
`## Acceptance criteria`. Mark each item satisfied or unmet.
|
|
69
|
+
9. Run `git status --short --untracked-files=all` again. Classify every dirty
|
|
70
|
+
path as plan-owned, pre-existing unrelated, or non-plan output.
|
|
71
|
+
|
|
72
|
+
## Failure Diagnostics
|
|
73
|
+
|
|
74
|
+
- `verification failed`: a command from `## Verification` failed after one local
|
|
75
|
+
diagnosis and repair attempt, or the failure is outside the detailed plan's
|
|
76
|
+
scope.
|
|
77
|
+
- `acceptance criterion unmet`: a required `## Acceptance criteria` item is not
|
|
78
|
+
satisfied, or the detailed plan lacks `## Changes`, `## Verification`, or
|
|
79
|
+
`## Acceptance criteria`.
|
|
80
|
+
- `dirty worktree from non-plan output`: closeout finds a dirty path that was
|
|
81
|
+
not pre-existing and is not produced by the detailed plan's declared changes.
|
|
82
|
+
- `publication blocked`: a publication precheck failed (no remote / no push auth / no `gh` /
|
|
83
|
+
branch-name collision / push rejected / unresolved base ref), or publishing would otherwise
|
|
84
|
+
require committing to `main`/a protected branch or a branch this run does not own. Verified
|
|
85
|
+
work is preserved locally on a safe branch/worktree; report what blocked the PR.
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
## Runner Verification Evidence
|
|
89
|
+
|
|
90
|
+
Before reporting a successful closeout, require the runner-owned verification artifact. The closeout must name `verification_artifact_path`, quote the artifact summary line, and must not report `verification_status=passed` unless that artifact exists and supports the executed work. Treat dependency-manifest install refresh and the full suite before closeout as runner-enforced expectations, not optional narrative checks. A blocked gate may be re-verdicted only by rerunning the originally specified runner check; proxy evidence requires a roadmap or plan amendment before the verdict changes.
|
|
91
|
+
|
|
92
|
+
## Closeout
|
|
93
|
+
|
|
94
|
+
### Manifest lifecycle
|
|
95
|
+
|
|
96
|
+
During closeout, best-effort call `phase_loop_runtime.plan_manifest.update_lifecycle` with `completed` when verification and acceptance passed, or `failed` when verification failed, acceptance was unmet, or closeout found non-plan output. Include verification metadata, reflection metadata, dirty-path classification, and the final diagnostic in the lifecycle event. Manifest lifecycle failures are non-fatal during the dual-mode window: emit a ledger warning, record the failure in the mandatory reflection, and preserve the existing detailed executor closeout.
|
|
97
|
+
|
|
98
|
+
Before final response, write a reflection for every non-trivial run. Write it to
|
|
99
|
+
`resolve_skill_bundle_root("codex")/<harness>-execute-detailed/reflections/<repo_hash>/<branch_slug>/<run_id>.md`.
|
|
100
|
+
The reflection must include `## Run context` with skill name, ISO timestamp,
|
|
101
|
+
repo, branch, commit, and artifact path, followed by `## What worked`,
|
|
102
|
+
`## What didn't`, and `## Improvements to SKILL.md`. Skip only when no artifact
|
|
103
|
+
was executed, no edit was made, and no decision was made.
|
|
104
|
+
|
|
105
|
+
Final response must include:
|
|
106
|
+
|
|
107
|
+
- detailed plan artifact path;
|
|
108
|
+
- files changed;
|
|
109
|
+
- verification commands with pass/fail status;
|
|
110
|
+
- acceptance criteria with satisfied/unmet status;
|
|
111
|
+
- final dirty-path classification;
|
|
112
|
+
- next action or blocker using the stable failure diagnostics above.
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
## Publication
|
|
116
|
+
|
|
117
|
+
After a verified implementation, publishing a PR from the working tree established in
|
|
118
|
+
Workflow step 6 is the default outcome — under the Git safety invariant in Core Rules.
|
|
119
|
+
Defer entirely if a runner / pipeline owns closeout (a phase-loop-runner-driven or adapter
|
|
120
|
+
run, or an explicit runner-owned-closeout instruction): the runner owns commit and closeout.
|
|
121
|
+
Do NOT infer "runner owns closeout" from `verification_artifact_path` — every closeout
|
|
122
|
+
records it; it does not signal a runner. The following applies for human-invoked plan
|
|
123
|
+
execution.
|
|
124
|
+
|
|
125
|
+
Call `phase_loop_runtime.publishing.publish_from_worktree(repo, owned_paths, draft=<intent>)`
|
|
126
|
+
(IF-0-P1-1 — the runtime publication primitive), supplying the worktree root, the plan's
|
|
127
|
+
owned paths, and the draft/ready intent:
|
|
128
|
+
- `draft=True` when dependencies remain or verification was partial/skipped;
|
|
129
|
+
- `draft=False` when verification is complete (skipped or partial verification never opens
|
|
130
|
+
a ready PR).
|
|
131
|
+
|
|
132
|
+
The primitive performs the complete #28 flow in code, not prose:
|
|
133
|
+
|
|
134
|
+
1. **Preflight.** Confirms the branch is non-protected, non-main, and not in a
|
|
135
|
+
dirty/unowned state; confirms a remote, push auth, and the `gh` CLI. A preflight
|
|
136
|
+
failure returns `{status: "publication_blocked", reason: ...}` — keep the committed
|
|
137
|
+
work on the safe branch/worktree and STOP at publish with `publication blocked`;
|
|
138
|
+
never on `main`/a protected branch, and never imply a PR exists.
|
|
139
|
+
2. **Stage + audit.** Stages only owned paths (`git add -- <paths>`, never `git add -A`),
|
|
140
|
+
audits the staged set (rejects any ignored, private, raw-data, credential, or `.env`
|
|
141
|
+
path; runs `git diff --cached --check`), and fails closed on any violation — path-scoping
|
|
142
|
+
alone does not catch a secret inside an owned file; the read-protection rules and this
|
|
143
|
+
audit are the backstop.
|
|
144
|
+
3. **Commit + push.** Commits the audited diff and pushes without force. A rejected push
|
|
145
|
+
(divergent / non-fast-forward / branch protection) returns `publication_blocked` — never
|
|
146
|
+
force-push or merge to resolve it.
|
|
147
|
+
4. **Open the PR.** `gh pr create --draft` or ready (`--fill`) per the intent flag.
|
|
148
|
+
|
|
149
|
+
Returns `{status: "published", branch, head_sha, pr_url}` on success (IF-0-P1-1; report
|
|
150
|
+
`pr_url` in the final response and include `head_sha` in the handoff for downstream
|
|
151
|
+
consumers). Returns `{status: "publication_blocked", reason: <slug>}` on any violation —
|
|
152
|
+
report `publication blocked` with the reason and stop.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Harness-specific overlay files for this workflow skill.
|