project-loop-harness 0.4.0__tar.gz → 0.4.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {project_loop_harness-0.4.0/src/project_loop_harness.egg-info → project_loop_harness-0.4.3}/PKG-INFO +86 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/README.md +85 -0
- project_loop_harness-0.4.3/agent-tasks/0141-idle-routing-repair.md +71 -0
- project_loop_harness-0.4.3/agent-tasks/0142-lifecycle-repair-planner.md +172 -0
- project_loop_harness-0.4.3/agent-tasks/0143-terminal-link-repair.md +155 -0
- project_loop_harness-0.4.3/agent-tasks/0144-skill-runtime-provenance.md +192 -0
- project_loop_harness-0.4.3/agent-tasks/0145-structured-validation-diagnostics.md +157 -0
- project_loop_harness-0.4.3/agent-tasks/0145a-integrity-migration-dogfood.md +85 -0
- project_loop_harness-0.4.3/agent-tasks/0145b-v0.4.1-release-preparation.md +57 -0
- project_loop_harness-0.4.3/agent-tasks/0146-work-brief-evidence-contract.md +77 -0
- project_loop_harness-0.4.3/agent-tasks/0147-deterministic-route-recommendation.md +53 -0
- project_loop_harness-0.4.3/agent-tasks/0148-adaptive-policy-resolve-explain.md +52 -0
- project_loop_harness-0.4.3/agent-tasks/0149-route-policy-override-integration.md +47 -0
- project_loop_harness-0.4.3/agent-tasks/0149a-adaptive-entry-dogfood.md +19 -0
- project_loop_harness-0.4.3/agent-tasks/0149b-v0.4.2-release-preparation.md +12 -0
- project_loop_harness-0.4.3/agent-tasks/0150-evidence-set-completeness-contract.md +49 -0
- project_loop_harness-0.4.3/agent-tasks/0151-completion-policy-terminal-preflight.md +51 -0
- project_loop_harness-0.4.3/agent-tasks/0152-next-action-approval-provenance.md +52 -0
- project_loop_harness-0.4.3/agent-tasks/0153-cross-skill-integrity-dogfood.md +51 -0
- project_loop_harness-0.4.3/agent-tasks/0153b-v0.4.3-release-preparation.md +16 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/README.md +44 -1
- project_loop_harness-0.4.3/docs/adaptive-policy-v1.md +92 -0
- project_loop_harness-0.4.3/docs/approval-provenance-v1.md +41 -0
- project_loop_harness-0.4.3/docs/canonical-state-baseline-v0.4.2.md +75 -0
- project_loop_harness-0.4.3/docs/completion-policy-v1.md +91 -0
- project_loop_harness-0.4.3/docs/dogfood/adaptive-entry-v0.4.2.md +97 -0
- project_loop_harness-0.4.3/docs/dogfood/lp-production-cross-skill-review.md +97 -0
- project_loop_harness-0.4.3/docs/dogfood/v0.4.3-cross-skill-integrity.md +108 -0
- project_loop_harness-0.4.3/docs/dogfood-report-v0.4.1-integrity-migration.md +163 -0
- project_loop_harness-0.4.3/docs/evidence/0146-work-brief-validation.md +48 -0
- project_loop_harness-0.4.3/docs/evidence/0147-route-recommendation-validation.md +45 -0
- project_loop_harness-0.4.3/docs/evidence/0148-adaptive-policy-validation.md +36 -0
- project_loop_harness-0.4.3/docs/evidence/0149-route-override-validation.md +49 -0
- project_loop_harness-0.4.3/docs/evidence/0150-evidence-set-validation.md +106 -0
- project_loop_harness-0.4.3/docs/evidence/0151-completion-policy-validation.md +82 -0
- project_loop_harness-0.4.3/docs/evidence/0152-next-action-approval-provenance-validation.md +90 -0
- project_loop_harness-0.4.3/docs/evidence/0152a-agent-mediated-human-approval-validation.md +63 -0
- project_loop_harness-0.4.3/docs/evidence/0153-human-dogfood-approval.md +26 -0
- project_loop_harness-0.4.3/docs/evidence/d0002-autonomous-continuation-validation.md +45 -0
- project_loop_harness-0.4.3/docs/evidence-set-v1.md +88 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/golden-path.md +8 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/growth-plan-v0.2.4-v0.5.md +35 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/implementation-plan.md +53 -3
- project_loop_harness-0.4.3/docs/plan-v0.4.1.md +67 -0
- project_loop_harness-0.4.3/docs/plan-v0.4.2.md +100 -0
- project_loop_harness-0.4.3/docs/plan-v0.4.3.md +120 -0
- project_loop_harness-0.4.3/docs/project-loop-harness-v0.2.3-third-party-review.md +1685 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/recovery-playbook.md +80 -0
- project_loop_harness-0.4.3/docs/release-notes/v0.4.1.md +126 -0
- project_loop_harness-0.4.3/docs/release-notes/v0.4.2.md +120 -0
- project_loop_harness-0.4.3/docs/release-notes/v0.4.3.md +89 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/ADOPTION.md +28 -2
- project_loop_harness-0.4.3/docs/route-recommendation-v1.md +68 -0
- project_loop_harness-0.4.3/docs/work-brief-v1.md +90 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/pyproject.toml +3 -2
- project_loop_harness-0.4.3/src/pcl/__init__.py +1 -0
- project_loop_harness-0.4.3/src/pcl/adaptive_policy.py +404 -0
- project_loop_harness-0.4.3/src/pcl/approval_provenance.py +160 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/cli.py +852 -83
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/commands.py +143 -11
- project_loop_harness-0.4.3/src/pcl/completion_policies.py +272 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/context.py +128 -0
- project_loop_harness-0.4.3/src/pcl/contracts/__init__.py +127 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/contracts/completion_packet.py +50 -1
- project_loop_harness-0.4.3/src/pcl/contracts/completion_policy.py +128 -0
- project_loop_harness-0.4.3/src/pcl/contracts/evidence_set.py +297 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/contracts/handoff_packet.py +42 -2
- project_loop_harness-0.4.3/src/pcl/contracts/policies/adaptive-policy-v1-default.json +48 -0
- project_loop_harness-0.4.3/src/pcl/contracts/route_override.py +131 -0
- project_loop_harness-0.4.3/src/pcl/contracts/route_recommendation.py +136 -0
- project_loop_harness-0.4.3/src/pcl/contracts/schemas/adaptive-policy-resolution-v1.schema.json +33 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/contracts/schemas/completion-packet-v1.schema.json +26 -0
- project_loop_harness-0.4.3/src/pcl/contracts/schemas/completion-policy-v1.schema.json +29 -0
- project_loop_harness-0.4.3/src/pcl/contracts/schemas/evidence-set-v1.schema.json +125 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/contracts/schemas/handoff-packet-v1.schema.json +39 -0
- project_loop_harness-0.4.3/src/pcl/contracts/schemas/route-override-v1.schema.json +39 -0
- project_loop_harness-0.4.3/src/pcl/contracts/schemas/route-recommendation-v1.schema.json +43 -0
- project_loop_harness-0.4.3/src/pcl/contracts/schemas/work-brief-v1.schema.json +93 -0
- project_loop_harness-0.4.3/src/pcl/contracts/work_brief.py +281 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/evidence.py +380 -0
- project_loop_harness-0.4.3/src/pcl/evidence_sets.py +657 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/evidence_show.py +14 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/exporters.py +1 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/finish_execution.py +27 -1
- project_loop_harness-0.4.3/src/pcl/lifecycle_repair.py +492 -0
- project_loop_harness-0.4.3/src/pcl/relationship_repair.py +280 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/renderer.py +45 -2
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/reports.py +51 -10
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/resume.py +55 -2
- project_loop_harness-0.4.3/src/pcl/route_overrides.py +609 -0
- project_loop_harness-0.4.3/src/pcl/routing.py +443 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/start.py +88 -7
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/stories.py +98 -7
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/skills/project-control-loop/SKILL.md +32 -5
- project_loop_harness-0.4.3/src/pcl/validators.py +3025 -0
- project_loop_harness-0.4.3/src/pcl/work_briefs.py +749 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3/src/project_loop_harness.egg-info}/PKG-INFO +86 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/project_loop_harness.egg-info/SOURCES.txt +94 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/baseline_fixture_tools.py +2 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/completion_packet/full.json +2 -2
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/completion_packet/minimal.json +2 -2
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/completion_packet/negative-budget-next-action.json +2 -2
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/completion_packet/negative-critical-proof.json +2 -2
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/completion_packet/negative-passed-result.json +2 -2
- project_loop_harness-0.4.3/tests/fixtures/completion_policy/minimal.json +20 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/complete/reports/completion_verdict.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/complete/reports/coordinate_report.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/complete/reports/report-manifest.json +8 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/complete/reports/responsive_report.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/completion-policy.json +20 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/incomplete/reports/completion_verdict.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/incomplete/reports/coordinate_report.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/incomplete/reports/report-manifest.json +8 -0
- project_loop_harness-0.4.3/tests/fixtures/cross_skill_dogfood/incomplete/reports/responsive_report.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/evidence_set/minimal.json +41 -0
- project_loop_harness-0.4.3/tests/fixtures/evidence_set/report-manifest.json +10 -0
- project_loop_harness-0.4.3/tests/fixtures/evidence_set/visual-check.json +4 -0
- project_loop_harness-0.4.3/tests/fixtures/lifecycle_repair/all_classifications_v1.json +65 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/start_initialized_v1.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/v0.3.1-baseline/snapshots/empty-next-json.json +24 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/empty-validate-strict-json.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/v0.3.1-baseline/snapshots/pcl-help.json +9 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/pcl-version.json +1 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/representative-validate-strict-json.json +1 -0
- project_loop_harness-0.4.3/tests/fixtures/work_brief/minimal.json +43 -0
- project_loop_harness-0.4.3/tests/fixtures/work_brief/negative-embedded-route.json +22 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/mcp/fixtures/wire-transcript.json +1 -1
- project_loop_harness-0.4.3/tests/test_adaptive_policy.py +188 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_audit_log_integrity.py +73 -24
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_cli_init.py +1 -0
- project_loop_harness-0.4.3/tests/test_completion_policy.py +350 -0
- project_loop_harness-0.4.3/tests/test_cross_skill_integrity_dogfood.py +194 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_dashboard.py +1 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_dashboard_data_contract.py +3 -2
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_defects.py +10 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_distribution.py +3 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_evidence_add.py +19 -12
- project_loop_harness-0.4.3/tests/test_evidence_sets.py +413 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_evidence_show.py +38 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_examples.py +4 -1
- project_loop_harness-0.4.3/tests/test_execution_provenance.py +367 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_finish.py +25 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_golden_path.py +1 -1
- project_loop_harness-0.4.3/tests/test_integrity_migration_dogfood.py +165 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_lifecycle.py +2 -2
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_lifecycle_integrity.py +482 -99
- project_loop_harness-0.4.3/tests/test_lifecycle_repair.py +847 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_mcp_server.py +1 -1
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_next_actions.py +92 -10
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_recovery_playbook.py +9 -0
- project_loop_harness-0.4.3/tests/test_route_overrides.py +251 -0
- project_loop_harness-0.4.3/tests/test_route_recommendation.py +222 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_skill_command_examples.py +30 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_start.py +61 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_stories.py +7 -3
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_validation.py +757 -384
- project_loop_harness-0.4.3/tests/test_validation_finding_sources.py +114 -0
- project_loop_harness-0.4.3/tests/test_work_briefs.py +418 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_workflow_executor.py +1 -1
- project_loop_harness-0.4.0/src/pcl/__init__.py +0 -1
- project_loop_harness-0.4.0/src/pcl/contracts/__init__.py +0 -41
- project_loop_harness-0.4.0/src/pcl/validators.py +0 -1783
- project_loop_harness-0.4.0/tests/fixtures/v0.3.1-baseline/snapshots/empty-next-json.json +0 -68
- project_loop_harness-0.4.0/tests/fixtures/v0.3.1-baseline/snapshots/pcl-help.json +0 -9
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/LICENSE +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/MANIFEST.in +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/Makefile +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0001-hardening-cli.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0002-db-migrations.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0003-workflow-runner.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0004-dashboard-renderer.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0005-agent-integration.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0006-codex-plugin.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0007-mcp-server.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0008-loop-lifecycle.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0009-defect-lifecycle.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0010-reporting-evidence.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0011-validation-invariants.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0012-audit-log-integrity.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0013-validation-diagnostics.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0014-escalation-lifecycle.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0015-decision-lifecycle.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0016-escalation-decision-linkage.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0017-next-action-guided-loop.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0018-readme-golden-path.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0019-recovery-playbook.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0020-example-project-refresh.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0021-agent-adapter-contract.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0022-agent-output-validation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0023-codex-exec-adapter-hardening.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0024-claude-manual-adapter-hardening.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0025-generic-shell-adapter.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0026-agent-job-evidence-ingestion.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0027-dashboard-data-contract.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0028-dashboard-evidence-navigation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0029-dashboard-risk-and-blockers.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0030-distribution-readiness.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0031-workflow-proposal-mode.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0032-workflow-proposal-review.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0033-workflow-verifier.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0034-limited-execution-sandbox.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0035-automatic-workflow-executor.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0036-executor-dogfood-workflow.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0037-executor-retry-resume.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0038-story-test-lifecycle.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0039-workflow-yaml-rule-expressions.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0040-test-case-evidence-validation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0041-feature-inspection-commands.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0042-report-coverage-context.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0043-feature-report.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0044-complete-csv-export.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0045-filtered-job-inspection.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0046-feature-status-lifecycle.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0047-feature-coverage-next-action.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0048-migration-status-command.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0049-render-json-artifact-paths.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0050-codex-plugin-package-inventory.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0051-mcp-render-artifact-paths.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0052-lifecycle-failure-job-cleanup.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0053-prompt-job-json-handoff.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0054-human-queue-linkage-cli.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0055-workflow-proposal-list-filter.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0056-sandbox-noop-execution-guard.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0057-executor-no-executable-step-guard.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0058-dogfood-usability-hardening.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0059-checkpoint-review-guidance.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0060-pypi-trusted-publishing.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0061-context-pack-v1.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0062-task-backlog-entity.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0063-structured-verification-rubric.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0064-task-loop-integration.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0065-dashboard-human-decisions.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0066-agent-registry-lease.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0067-context-pack-improvements.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0068-trust-hardening.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0069-explainable-code-context-v0.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0070-human-decision-cockpit.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0071-dogfood-impact-precision.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0072-sensitive-omission.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0073-code-context-module-split.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0074-search-snapshot-consistency.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0075-diff-source-modes.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0076-schema-version-integrity.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0077-index-output-budget-and-impact-noise.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0078-context-pack-code-context-bridge.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0079-receipt-human-summary.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0080-retrieval-eval-gate.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0081-diff-modes-completion.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0082-receipt-relevance-and-age.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0083-required-section-invariant.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0084-source-commands-honesty.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0085-distribution-source-completeness.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0086-command-surface-alignment.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0087-verification-suggestion-ids.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0088-verification-feedback.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0089-dogfood-fixture-propose.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0090-eval-baseline-record-compare.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0091-refresh-command-scope-fidelity.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0092-idempotent-status-transitions.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0093-evidence-add-command.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0094-job-completion-evidence.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0095-supporting-evidence-health.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0096-evidence-add-path-guards.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0097-evidence-durability-design.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0098-field-feedback-next-weight-and-run-report-scope.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0099-evidence-copy-mode.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0100-evidence-task-linking.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0101-evidence-id-allocation-race.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0102-source-drift-health-warning.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0103-security-policy-v02x.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0104-python-ci-matrix.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0105-evidence-copy-observability.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0106-release-checklist.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0107-agent-tasks-backlog-index.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0108-target-bound-code-context-receipts.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0113-evidence-links-table.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0114-source-hash-drift.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0115-context-pack-contract-fixtures.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0116-receipt-link-agreement-validation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0117-markdown-target-refresh-command.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0118-canonical-target-bound-handoff-docs.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0119-context-check-preflight.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0120-pcl-finish-terminal-closeout.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0121-human-gate-japanese-guidance.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0122-feature-coverage-noop.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0123-master-trace-intent-index-contract.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0124-baseline-fixtures-v0-3-1.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0125-mcp-stdio-framing-negotiation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0126-mcp-external-conformance.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0127-transactional-audit-outbox-design.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0128-event-outbox-jsonl-projector.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0129-audit-check-repair-rebuild.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0130-crash-concurrency-test-suite.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0131-guarded-executor-hardening.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0132-master-trace-context-pack-section.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0133-windows-lock-fallback.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0134-completion-packet-v1-contract.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0135-finish-emits-completion-packet.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0136-lite-pcl-start.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0137-handoff-packet-pcl-resume.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0138-kpi-report-surface.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0139-executable-resume-context.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0140-kpi-post-integration-sources.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0140a-skill-cli-contract-parity.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0140b-lifecycle-integrity-gate.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/agent-tasks/0140c-fail-open-check-guard.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/adoption-guide.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/adr/0001-hybrid-state.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/adr/0002-cli-is-the-runtime.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/adr/0003-static-workflows-before-dynamic-workflows.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/adr/ADR-002-transactional-audit-outbox.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/agent-adapter-contract.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/agent-output-template.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/agent-roles.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/architecture.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/code-context.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/completion-packet-v1.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/context-check.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/context-pack.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/crash-concurrency-reliability.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/dashboard-data-contract.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/dashboard-design.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/data-model.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/distribution.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/dogfood-report-v0.4.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/event-outbox-compatibility.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/evidence/0136-pcl-start-demo.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/evidence-durability-design.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/evidence-entry-paths-design.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/feedback/2026-07-06-ax1-moc1-agent-feedback.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/finish.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/handoff-packet-v1.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/master-trace-handoff.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/master-trace-intent-index.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/mcp-compatibility.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/mcp-manual-smoke-runbook.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/pcl-start.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/plan-v0.4.0.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/plh_v0_1_11_review_agenda.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/plh_v0_1_12_review_agenda.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/pypi-publishing.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/release-checklist.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/release-notes/v0.2.4.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/release-notes/v0.3.0.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/release-notes/v0.3.1.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/release-notes/v0.3.3.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/release-notes/v0.4.0.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/releases/v0.3.1-baseline.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/releases/v0.3.3-mcp-stdio.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/00-executive-roadmap.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/01-adaptive-loop-architecture.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/02-contracts-and-data-model.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/03-implementation-plan.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/04-evaluation-and-rollout.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/05-pdm-discussion-guide.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/06-cli-contract-draft.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/07-state-machines-and-events.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/08-repository-integration.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/09-ai-plc-integration-mapping.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/README.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/SOURCE_BASIS.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/VALIDATION_REPORT.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/adr/ADR-001-profile-not-entity.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/adr/ADR-002-transactional-audit-outbox.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/adr/ADR-003-adaptive-policy-axes.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/adr/ADR-004-contract-first-promotion.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0123-release-v0-3-1-baseline.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0124-mcp-stdio-framing-negotiation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0125-mcp-external-conformance.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0126-transactional-audit-outbox-design.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0127-event-outbox-jsonl-projector.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0128-audit-check-repair-rebuild.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0129-crash-concurrency-test-suite.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0130-guarded-executor-hardening.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0131-completion-packet-v1-contract.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0132-finish-emits-completion-packet.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0133-lite-pcl-start.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0134-handoff-packet-pcl-resume.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0135-work-brief-v1-evidence.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0136-deterministic-route-recommendation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0137-adaptive-policy-explain-override.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0138-work-brief-revision-replan.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0139-stale-invalidation-propagation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0140-verifier-provenance-separation.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0141-risk-based-verification-policy.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0142-profile-contract-boundary.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0143-discovery-reference-profile.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0144-decision-proposal-human-selection.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0145-master-trace-handoff-integration.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0146-capability-profile-v0.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0147-budget-profile-incomplete-packet.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0148-context-cache-delta-handoff.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0149-knowledge-proposal-experiment.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0150-cross-model-evaluation-harness.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0151-design-partner-operations.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/0152-adoption-stability-release.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/agent-tasks-proposed/README.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/handoff/ARCHITECTURE_REVIEW_PROMPT.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/handoff/IMPLEMENTATION_AGENT_PROMPT.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/roadmap/integrated/handoff/PDM_REVIEW_PROMPT.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/safety-permissions.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/v0.2.0-plan.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/verification-feedback-design.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/verification-feedback.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/verification-rubric.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/docs/workflow-contract.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/scripts/run_advisory_retrieval_eval.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/scripts/verify_sdist_contracts.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/setup.cfg +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/__main__.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/agents.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/audit.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/checkpoints.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/__init__.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/diff.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/eval.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/impact.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/receipts.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/scan.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/search.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/store.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/summary.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/symbols.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_context/test_hints.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/code_index.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/context_binding.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/context_usage.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/migrations/001_initial.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/migrations/002_tasks.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/migrations/003_agent_registry.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/migrations/004_code_index.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/migrations/005_verification_feedback.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/migrations/006_evidence_task_link.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/migrations/007_evidence_links.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/migrations/008_event_outbox.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db/schema.sql +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/db.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/decisions.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/dispatch.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/errors.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/escalations.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/events.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/guarded_process.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/guards.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/ids.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/init_project.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/kpi_report.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/lifecycle.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/links.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/locales.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/locks.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/mcp_server.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/migrations.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/outbox.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/paths.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/receipt_show.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/redaction.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/registry.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/resources.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/rubric.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/tasks.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/dashboard/dashboard.html +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/project/AGENTS.block.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/project/CLAUDE.block.md +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/project/gitignore.fragment +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/project/pcl.yaml +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/workflows/defect_repair.yaml +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/workflows/executor_smoke.yaml +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/workflows/feature_coverage.yaml +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/templates/workflows/regression_loop.yaml +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/test_faults.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/timeutil.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/token_estimation.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/update_check.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/verification_feedback.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/verifications.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/workflow_executor.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/workflow_proposal_validation.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/workflow_proposals.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/workflow_sandbox.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/workflow_verifier.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/workflow_yaml.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/pcl/workflows.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/project_loop_harness.egg-info/dependency_links.txt +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/project_loop_harness.egg-info/entry_points.txt +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/project_loop_harness.egg-info/requires.txt +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/src/project_loop_harness.egg-info/top_level.txt +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/code_context_summary_v0.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/completion_packet/negative-cases.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/context_pack_code_context_contract_v0.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/context_receipt_v0.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/context_receipt_v0_legacy_string_suggestions.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/handoff_packet/minimal.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/kpi_report_empty_v1.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/master_trace_context_contract_v0.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/retrieval_adversarial_v0.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/retrieval_real_history_v0.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/retrieval_v0.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/context-check-help.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/empty-context-check-json.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/empty-render-json.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/next-help.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/render-help.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/representative-context-check-json.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/representative-next-json.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/representative-render-json.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/fixtures/v0.3.1-baseline/snapshots/validate-help.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/mcp/conftest.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/mcp/fixtures/negative-matrix.json +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/mcp/test_external_conformance.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_advisory_retrieval_eval_script.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_agent_adapter_contract.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_agent_output_validation.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_agents.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_audit_commands.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_baseline_fixtures.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_checkpoints.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_claude_manual_adapter.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_code_context_summary.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_code_index.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_codex_exec_adapter.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_codex_plugin.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_completion_packet_contract.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_completion_packet_package.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_context.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_context_check.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_contract_cli.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_crash_concurrency.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_decisions.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_dispatch.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_escalations.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_event_outbox.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_features.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_generic_shell_adapter.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_guarded_process.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_handoff_packet_contract.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_kpi_report.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_locks.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_migrations.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_pypi_publishing.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_receipt_show.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_registry.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_reports.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_resume.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_rubric.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_tasks.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_update_check.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_validation_diagnostics.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_verification_feedback.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_workflow_proposals.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_workflow_sandbox.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_workflow_verifier.py +0 -0
- {project_loop_harness-0.4.0 → project_loop_harness-0.4.3}/tests/test_workflows.py +0 -0
{project_loop_harness-0.4.0/src/project_loop_harness.egg-info → project_loop_harness-0.4.3}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: project-loop-harness
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
Summary: Local control plane for agentic project development loops
|
|
5
5
|
Author: Project Loop Harness Contributors
|
|
6
6
|
License: MIT
|
|
@@ -245,6 +245,85 @@ Markdown.
|
|
|
245
245
|
See [docs/context-pack.md](docs/context-pack.md) for the contract shape and
|
|
246
246
|
boundaries.
|
|
247
247
|
|
|
248
|
+
## Work Briefs
|
|
249
|
+
|
|
250
|
+
An optional `work-brief/v1` artifact can capture a target's reviewed intent,
|
|
251
|
+
acceptance criteria, constraints, non-goals, and assumptions without changing
|
|
252
|
+
the default `pcl start` path:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
pcl contract validate --type work-brief/v1 work-brief.json --json
|
|
256
|
+
pcl brief add work-brief.json --summary "Reviewed execution input" --dry-run --json
|
|
257
|
+
pcl brief add work-brief.json --summary "Reviewed execution input" --json
|
|
258
|
+
pcl brief review E-0001 --actor "agent:codex" --actor-kind agent \
|
|
259
|
+
--reason "Self-review completed; human gate remains open" --json
|
|
260
|
+
# Normally run by the agent after the human says "approve" in conversation:
|
|
261
|
+
pcl brief approve E-0001 --actor "human:owner" --actor-kind human \
|
|
262
|
+
--recorded-by "agent:codex" --recorder-kind agent \
|
|
263
|
+
--source-kind conversation --source-ref "conversation:<approval-reference>" \
|
|
264
|
+
--reason "Human explicitly approved the presented review packet" --json
|
|
265
|
+
pcl brief show --target task:T-0001 --json
|
|
266
|
+
pcl route recommend --target task:T-0001 --json
|
|
267
|
+
pcl policy explain --target task:T-0001
|
|
268
|
+
pcl route override --target task:T-0001 --profile assure \
|
|
269
|
+
--actor "human:owner" --reason "Require independent review" --dry-run --json
|
|
270
|
+
pcl route override --target task:T-0001 --profile assure \
|
|
271
|
+
--actor "human:owner" --reason "Require independent review" --json
|
|
272
|
+
pcl route current --target task:T-0001 --json
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Brief content is immutable Evidence. Review and approval are separate
|
|
276
|
+
hash-bound events: agent/system review cannot satisfy the human approval gate.
|
|
277
|
+
Task context, resume, and dashboard data expose the factual actor kind, actor,
|
|
278
|
+
recorder, source reference, timestamp, target, and bound hash without treating
|
|
279
|
+
assumptions as facts. Humans normally approve in conversation or Cockpit; the
|
|
280
|
+
agent records that decision through PCL. Direct human CLI use remains a
|
|
281
|
+
compatibility path, not the expected routine UX. See
|
|
282
|
+
[docs/work-brief-v1.md](docs/work-brief-v1.md).
|
|
283
|
+
Deterministic Direct/Discover/Assure recommendation is documented in
|
|
284
|
+
[docs/route-recommendation-v1.md](docs/route-recommendation-v1.md).
|
|
285
|
+
Multi-axis resolution and field-level source rules are documented in
|
|
286
|
+
[docs/adaptive-policy-v1.md](docs/adaptive-policy-v1.md).
|
|
287
|
+
An applied override preserves its original recommendation and policy
|
|
288
|
+
resolution as separate hash-bound Evidence. Task context, completion packets,
|
|
289
|
+
and resume handoffs expose additive references without rewriting historical
|
|
290
|
+
artifacts.
|
|
291
|
+
|
|
292
|
+
## Evidence Sets
|
|
293
|
+
|
|
294
|
+
Use `evidence-set/v1` when one passing artifact is not enough and the target
|
|
295
|
+
must retain which declared reports were included or excluded:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
pcl evidence-set plan --target task:T-0001 --work-root work/lp \
|
|
299
|
+
--manifest work/lp/reports/report-manifest.json \
|
|
300
|
+
--required-kind visual_check \
|
|
301
|
+
--include visual_check=E-0001:acceptance --json
|
|
302
|
+
pcl evidence-set record --target task:T-0001 --work-root work/lp \
|
|
303
|
+
--manifest work/lp/reports/report-manifest.json \
|
|
304
|
+
--required-kind visual_check \
|
|
305
|
+
--include visual_check=E-0001:acceptance \
|
|
306
|
+
--summary "LP verification evidence set" --json
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Planning is read-only. Recording creates immutable, target-linked Evidence and
|
|
310
|
+
keeps known exclusions visible. See
|
|
311
|
+
[docs/evidence-set-v1.md](docs/evidence-set-v1.md).
|
|
312
|
+
|
|
313
|
+
Use a domain-neutral completion policy when a Test must require an external
|
|
314
|
+
JSON verdict rather than merely retain the report set:
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
pcl completion evaluate --policy completion-policy.json \
|
|
318
|
+
--evidence-set E-0003 --test TC-0001 --json
|
|
319
|
+
pcl test pass TC-0001 --summary "Completion contract passed" \
|
|
320
|
+
--evidence-id E-0003 --completion-policy completion-policy.json --json
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
Only allowlisted JSON predicates are evaluated. The Evidence Set must target
|
|
324
|
+
the exact Test, remain complete, and retain matching report hashes. See
|
|
325
|
+
[docs/completion-policy-v1.md](docs/completion-policy-v1.md).
|
|
326
|
+
|
|
248
327
|
## Explainable Code Context
|
|
249
328
|
|
|
250
329
|
Build a local code context snapshot when an agent handoff needs auditable code
|
|
@@ -318,6 +397,12 @@ review/continuation handoff and presumes a change already exists for the target.
|
|
|
318
397
|
}
|
|
319
398
|
```
|
|
320
399
|
|
|
400
|
+
When no active work or real human decision exists, the same schema returns
|
|
401
|
+
`type: "idle"`, `command: null`, `requires_human: false`, and
|
|
402
|
+
`run_policy: "idle"`. If a user has already supplied explicit work, pass that
|
|
403
|
+
literal intent to `pcl start "<intent>"` instead of inventing a Goal title or
|
|
404
|
+
asking for a second approval merely to register it.
|
|
405
|
+
|
|
321
406
|
Use:
|
|
322
407
|
|
|
323
408
|
```bash
|
|
@@ -211,6 +211,85 @@ Markdown.
|
|
|
211
211
|
See [docs/context-pack.md](docs/context-pack.md) for the contract shape and
|
|
212
212
|
boundaries.
|
|
213
213
|
|
|
214
|
+
## Work Briefs
|
|
215
|
+
|
|
216
|
+
An optional `work-brief/v1` artifact can capture a target's reviewed intent,
|
|
217
|
+
acceptance criteria, constraints, non-goals, and assumptions without changing
|
|
218
|
+
the default `pcl start` path:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
pcl contract validate --type work-brief/v1 work-brief.json --json
|
|
222
|
+
pcl brief add work-brief.json --summary "Reviewed execution input" --dry-run --json
|
|
223
|
+
pcl brief add work-brief.json --summary "Reviewed execution input" --json
|
|
224
|
+
pcl brief review E-0001 --actor "agent:codex" --actor-kind agent \
|
|
225
|
+
--reason "Self-review completed; human gate remains open" --json
|
|
226
|
+
# Normally run by the agent after the human says "approve" in conversation:
|
|
227
|
+
pcl brief approve E-0001 --actor "human:owner" --actor-kind human \
|
|
228
|
+
--recorded-by "agent:codex" --recorder-kind agent \
|
|
229
|
+
--source-kind conversation --source-ref "conversation:<approval-reference>" \
|
|
230
|
+
--reason "Human explicitly approved the presented review packet" --json
|
|
231
|
+
pcl brief show --target task:T-0001 --json
|
|
232
|
+
pcl route recommend --target task:T-0001 --json
|
|
233
|
+
pcl policy explain --target task:T-0001
|
|
234
|
+
pcl route override --target task:T-0001 --profile assure \
|
|
235
|
+
--actor "human:owner" --reason "Require independent review" --dry-run --json
|
|
236
|
+
pcl route override --target task:T-0001 --profile assure \
|
|
237
|
+
--actor "human:owner" --reason "Require independent review" --json
|
|
238
|
+
pcl route current --target task:T-0001 --json
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Brief content is immutable Evidence. Review and approval are separate
|
|
242
|
+
hash-bound events: agent/system review cannot satisfy the human approval gate.
|
|
243
|
+
Task context, resume, and dashboard data expose the factual actor kind, actor,
|
|
244
|
+
recorder, source reference, timestamp, target, and bound hash without treating
|
|
245
|
+
assumptions as facts. Humans normally approve in conversation or Cockpit; the
|
|
246
|
+
agent records that decision through PCL. Direct human CLI use remains a
|
|
247
|
+
compatibility path, not the expected routine UX. See
|
|
248
|
+
[docs/work-brief-v1.md](docs/work-brief-v1.md).
|
|
249
|
+
Deterministic Direct/Discover/Assure recommendation is documented in
|
|
250
|
+
[docs/route-recommendation-v1.md](docs/route-recommendation-v1.md).
|
|
251
|
+
Multi-axis resolution and field-level source rules are documented in
|
|
252
|
+
[docs/adaptive-policy-v1.md](docs/adaptive-policy-v1.md).
|
|
253
|
+
An applied override preserves its original recommendation and policy
|
|
254
|
+
resolution as separate hash-bound Evidence. Task context, completion packets,
|
|
255
|
+
and resume handoffs expose additive references without rewriting historical
|
|
256
|
+
artifacts.
|
|
257
|
+
|
|
258
|
+
## Evidence Sets
|
|
259
|
+
|
|
260
|
+
Use `evidence-set/v1` when one passing artifact is not enough and the target
|
|
261
|
+
must retain which declared reports were included or excluded:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
pcl evidence-set plan --target task:T-0001 --work-root work/lp \
|
|
265
|
+
--manifest work/lp/reports/report-manifest.json \
|
|
266
|
+
--required-kind visual_check \
|
|
267
|
+
--include visual_check=E-0001:acceptance --json
|
|
268
|
+
pcl evidence-set record --target task:T-0001 --work-root work/lp \
|
|
269
|
+
--manifest work/lp/reports/report-manifest.json \
|
|
270
|
+
--required-kind visual_check \
|
|
271
|
+
--include visual_check=E-0001:acceptance \
|
|
272
|
+
--summary "LP verification evidence set" --json
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Planning is read-only. Recording creates immutable, target-linked Evidence and
|
|
276
|
+
keeps known exclusions visible. See
|
|
277
|
+
[docs/evidence-set-v1.md](docs/evidence-set-v1.md).
|
|
278
|
+
|
|
279
|
+
Use a domain-neutral completion policy when a Test must require an external
|
|
280
|
+
JSON verdict rather than merely retain the report set:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
pcl completion evaluate --policy completion-policy.json \
|
|
284
|
+
--evidence-set E-0003 --test TC-0001 --json
|
|
285
|
+
pcl test pass TC-0001 --summary "Completion contract passed" \
|
|
286
|
+
--evidence-id E-0003 --completion-policy completion-policy.json --json
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Only allowlisted JSON predicates are evaluated. The Evidence Set must target
|
|
290
|
+
the exact Test, remain complete, and retain matching report hashes. See
|
|
291
|
+
[docs/completion-policy-v1.md](docs/completion-policy-v1.md).
|
|
292
|
+
|
|
214
293
|
## Explainable Code Context
|
|
215
294
|
|
|
216
295
|
Build a local code context snapshot when an agent handoff needs auditable code
|
|
@@ -284,6 +363,12 @@ review/continuation handoff and presumes a change already exists for the target.
|
|
|
284
363
|
}
|
|
285
364
|
```
|
|
286
365
|
|
|
366
|
+
When no active work or real human decision exists, the same schema returns
|
|
367
|
+
`type: "idle"`, `command: null`, `requires_human: false`, and
|
|
368
|
+
`run_policy: "idle"`. If a user has already supplied explicit work, pass that
|
|
369
|
+
literal intent to `pcl start "<intent>"` instead of inventing a Goal title or
|
|
370
|
+
asking for a second approval merely to register it.
|
|
371
|
+
|
|
287
372
|
Use:
|
|
288
373
|
|
|
289
374
|
```bash
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# 0141: Idle routing without a redundant human gate
|
|
2
|
+
|
|
3
|
+
- **Status:** Approved implementation slice
|
|
4
|
+
- **Milestone:** v0.4.1 Integrity Migration
|
|
5
|
+
- **Priority:** P0
|
|
6
|
+
- **Estimated size:** S
|
|
7
|
+
- **Dependencies:** 0136 (`pcl start`), 0140a–0140c (v0.4.0 Integrity Gate)
|
|
8
|
+
|
|
9
|
+
## Problem
|
|
10
|
+
|
|
11
|
+
When a project has no active work, `pcl next` currently recommends a fixed
|
|
12
|
+
`Reach feature coverage` Goal and marks that recommendation as a human
|
|
13
|
+
decision. If a user has already supplied a literal implementation intent, this
|
|
14
|
+
creates a meaningless confirmation round trip. The v0.4.0 `pcl start`
|
|
15
|
+
command is already the guarded entry point for registering that intent.
|
|
16
|
+
|
|
17
|
+
## Goal
|
|
18
|
+
|
|
19
|
+
Represent a genuinely idle project as neutral read-only state, without
|
|
20
|
+
inventing a durable mutation or human approval. Teach agents to pass an
|
|
21
|
+
explicit user intent literally to `pcl start`.
|
|
22
|
+
|
|
23
|
+
## Contract
|
|
24
|
+
|
|
25
|
+
When no active Goal, Task, Defect, Workflow, Decision, Escalation, checkpoint,
|
|
26
|
+
or uncovered Feature action exists, `pcl next --json` returns the ordinary
|
|
27
|
+
guided-action keys with:
|
|
28
|
+
|
|
29
|
+
- `type: "idle"`;
|
|
30
|
+
- `command: null`;
|
|
31
|
+
- `target: null`;
|
|
32
|
+
- `blocking: false`;
|
|
33
|
+
- `requires_human: false`;
|
|
34
|
+
- `safe_to_run: false` because there is no command to execute;
|
|
35
|
+
- `run_policy: "idle"`;
|
|
36
|
+
- factual guidance to call `pcl start "<intent>"` only when explicit intent is
|
|
37
|
+
available.
|
|
38
|
+
|
|
39
|
+
The `command` field remains a string for executable and human-gated actions.
|
|
40
|
+
Its nullability is limited to action shapes that intentionally have no command.
|
|
41
|
+
|
|
42
|
+
## Scope
|
|
43
|
+
|
|
44
|
+
- Replace the terminal fixed-Goal fallback in `src/pcl/commands.py`.
|
|
45
|
+
- Keep `pcl next --explain`, dashboard data, dashboard HTML, MCP output, and
|
|
46
|
+
distribution smoke behavior coherent with the nullable idle command.
|
|
47
|
+
- Update the three byte-identical `project-control-loop` Skill copies.
|
|
48
|
+
- Update direct tests and the generated baseline snapshot with an intentional
|
|
49
|
+
contract-drift note.
|
|
50
|
+
|
|
51
|
+
## Invariants
|
|
52
|
+
|
|
53
|
+
- `pcl next` remains read-only.
|
|
54
|
+
- Real human gates retain their existing priority and fields.
|
|
55
|
+
- Existing active-work, defect, task, workflow, checkpoint, and uncovered
|
|
56
|
+
Feature routing is unchanged.
|
|
57
|
+
- `pcl start` continues to treat intent as literal text and preserves its
|
|
58
|
+
duplicate-active-work guard.
|
|
59
|
+
- No schema migration, dependency, LLM call, agent launch, or remote operation.
|
|
60
|
+
|
|
61
|
+
## Acceptance criteria
|
|
62
|
+
|
|
63
|
+
- A freshly initialized empty project returns the idle contract above.
|
|
64
|
+
- `pcl next --explain` does not print `None` as an executable command.
|
|
65
|
+
- An open Decision still returns the existing human-gated action before idle.
|
|
66
|
+
- Example and fresh-wheel distribution tests expect the idle contract.
|
|
67
|
+
- The current baseline snapshot is regenerated and its intentional delta is
|
|
68
|
+
documented.
|
|
69
|
+
- The canonical Skill copies remain byte-identical.
|
|
70
|
+
- Targeted tests, full `pytest`, `ruff check .`, strict validation, and render
|
|
71
|
+
pass.
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# 0142: Lifecycle repair planner for existing projects
|
|
2
|
+
|
|
3
|
+
- **Status:** Approved implementation slice
|
|
4
|
+
- **Milestone:** v0.4.1 Integrity Migration
|
|
5
|
+
- **Priority:** P1
|
|
6
|
+
- **Estimated size:** L
|
|
7
|
+
- **Dependencies:** 0140b (lifecycle findings and mutation guards), 0141
|
|
8
|
+
- **Parallel-safe with:** none of 0143–0145; this task establishes the repair-plan contract used by 0143 and touches shared CLI/validator surfaces
|
|
9
|
+
- **DB schema:** remains 8
|
|
10
|
+
|
|
11
|
+
## Problem
|
|
12
|
+
|
|
13
|
+
v0.4.0 prevents new false-completion states, but an existing project can still
|
|
14
|
+
contain terminal rows that predate the stronger lifecycle contract. Strict
|
|
15
|
+
validation can identify those rows, yet operators currently have to infer a
|
|
16
|
+
repair sequence from prose errors. Blindly changing statuses or choosing a
|
|
17
|
+
Story, Evidence item, Verification, or human decision would manufacture
|
|
18
|
+
semantics that the harness does not know.
|
|
19
|
+
|
|
20
|
+
## Goal
|
|
21
|
+
|
|
22
|
+
Add a deterministic, wholly read-only lifecycle repair planner. It classifies
|
|
23
|
+
each inconsistent row and shows concrete inspection or later repair commands,
|
|
24
|
+
but owns no mutation path or link mutation service.
|
|
25
|
+
|
|
26
|
+
## CLI contract
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
pcl repair lifecycle [--dry-run] [--json]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- Bare `pcl repair lifecycle` and explicit `--dry-run` are equivalent
|
|
33
|
+
read-only operations.
|
|
34
|
+
- Planning never writes the DB, events/outbox/JSONL, reports, dashboard, copied
|
|
35
|
+
Evidence, or any other file.
|
|
36
|
+
- The command never executes a command string from its own output.
|
|
37
|
+
- All mutation modes belong to task 0143, which consumes this task's public
|
|
38
|
+
action model in one direction.
|
|
39
|
+
|
|
40
|
+
The JSON result uses an additive, versioned `lifecycle-repair-plan/v1` shape:
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"contract_version": "lifecycle-repair-plan/v1",
|
|
45
|
+
"mode": "plan",
|
|
46
|
+
"mutated": false,
|
|
47
|
+
"summary": {
|
|
48
|
+
"structural": 0,
|
|
49
|
+
"semantic": 1,
|
|
50
|
+
"human_review": 0,
|
|
51
|
+
"unsupported": 0
|
|
52
|
+
},
|
|
53
|
+
"actions": [
|
|
54
|
+
{
|
|
55
|
+
"action_id": "LR-0001",
|
|
56
|
+
"finding_code": "test_story_required",
|
|
57
|
+
"classification": "semantic",
|
|
58
|
+
"action_kind": "inspect_story_candidate",
|
|
59
|
+
"sort_key": [1, "test_case", "TC-0001", "inspect_story_candidate", "test_story_required"],
|
|
60
|
+
"entity": {"type": "test_case", "id": "TC-0001"},
|
|
61
|
+
"related": [{"type": "user_story", "id": "US-0001"}],
|
|
62
|
+
"safe_to_apply": false,
|
|
63
|
+
"requires_human": true,
|
|
64
|
+
"command": "pcl story read US-0001 --json",
|
|
65
|
+
"reason": "A Story link requires an explicit operator choice."
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`classification` is a closed public enum with exactly `structural`, `semantic`,
|
|
72
|
+
`human_review`, and `unsupported`. `summary` contains exactly those four count
|
|
73
|
+
keys, including zero values. `action_kind` is a stable public snake-case action
|
|
74
|
+
identifier such as `add_missing_evidence_link`, `inspect_story_candidate`, or
|
|
75
|
+
`record_goal_verification`; consumers must not infer it from prose.
|
|
76
|
+
|
|
77
|
+
Every action publishes its canonical `sort_key` array:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
[classification_rank, entity.type, entity.id, action_kind, finding_code]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The fixed ranks are structural=0, semantic=1, human_review=2, unsupported=3.
|
|
84
|
+
Actions are sorted lexicographically by this array before sequential
|
|
85
|
+
`LR-0001` IDs are assigned. IDs are deterministic within the plan and are not
|
|
86
|
+
persisted domain IDs. An action with no primary entity uses empty strings for
|
|
87
|
+
both entity sort components. Text output uses the same order and four labels.
|
|
88
|
+
|
|
89
|
+
## Structural versus semantic boundary
|
|
90
|
+
|
|
91
|
+
An action is structural only when all source and target IDs already exist and
|
|
92
|
+
the relationship is unambiguous from authoritative stored data. Initial
|
|
93
|
+
supported examples are:
|
|
94
|
+
|
|
95
|
+
- restore a missing `test_case` / `acceptance` `evidence_links` row when the
|
|
96
|
+
terminal Test already stores that same healthy `evidence_id`;
|
|
97
|
+
- restore a missing completion-packet link when the validated packet itself is
|
|
98
|
+
targeted to the same entity and no conflicting target/link exists.
|
|
99
|
+
|
|
100
|
+
The following are always plan-only semantic or human actions, even when only
|
|
101
|
+
one candidate appears to exist:
|
|
102
|
+
|
|
103
|
+
- approve, review, or waive a Story;
|
|
104
|
+
- choose or change a Test-to-Story relationship;
|
|
105
|
+
- choose, create, copy, or replace Evidence;
|
|
106
|
+
- change a lifecycle status;
|
|
107
|
+
- record or approve a Verification;
|
|
108
|
+
- close or reopen a Goal, Feature, Test, Decision, or Escalation;
|
|
109
|
+
- choose between conflicting candidates or reinterpret legacy inline text.
|
|
110
|
+
|
|
111
|
+
An exactly-one Story heuristic is therefore not sufficient for automatic
|
|
112
|
+
linking or approval. Unsupported corruption is reported, not normalized.
|
|
113
|
+
|
|
114
|
+
## Scope
|
|
115
|
+
|
|
116
|
+
- Add `src/pcl/lifecycle_repair.py` and the `pcl repair lifecycle` parser and
|
|
117
|
+
dispatch path.
|
|
118
|
+
- Reuse lifecycle predicates from `src/pcl/validators.py`; do not parse legacy
|
|
119
|
+
validation message strings to discover entities.
|
|
120
|
+
- Add synthetic existing-project fixtures and
|
|
121
|
+
`tests/test_lifecycle_repair.py`.
|
|
122
|
+
- Extend `docs/recovery-playbook.md` with the plan-first migration path.
|
|
123
|
+
|
|
124
|
+
## Invariants
|
|
125
|
+
|
|
126
|
+
- Default and dry-run modes cause zero mutation, including no projector flush
|
|
127
|
+
or generated report.
|
|
128
|
+
- Semantic actions are never auto-executed, auto-approved, or converted to a
|
|
129
|
+
structural action by candidate count.
|
|
130
|
+
- 0142 does not add an apply flag, internal link mutation service, transaction,
|
|
131
|
+
event, or post-repair validation path.
|
|
132
|
+
- No raw SQL or generated HTML becomes an operator repair interface.
|
|
133
|
+
- Existing validation severity policy, same-status no-op behavior, CLI flags,
|
|
134
|
+
and JSON fields remain backward compatible.
|
|
135
|
+
- No migration, dependency, LLM call, agent launch, or remote operation.
|
|
136
|
+
|
|
137
|
+
## Non-goals
|
|
138
|
+
|
|
139
|
+
- Generic database repair or audit-log rebuild (covered by 0129).
|
|
140
|
+
- Any repair application, including unambiguous structural link mutation.
|
|
141
|
+
- Internal/common link mutation services and dedicated link commands; these
|
|
142
|
+
belong to 0143.
|
|
143
|
+
- Post-repair strict-pass orchestration or acceptance; this belongs to 0143.
|
|
144
|
+
- Automatic application of suggested shell commands.
|
|
145
|
+
- Schema-backed generic Verification targets.
|
|
146
|
+
- Enabling enforced lifecycle policy for unrepaired existing projects.
|
|
147
|
+
|
|
148
|
+
## Acceptance criteria
|
|
149
|
+
|
|
150
|
+
- Bare and explicit dry-run produce the same deterministic plan and leave DB,
|
|
151
|
+
event/outbox/JSONL, report, dashboard, and Evidence hashes unchanged.
|
|
152
|
+
- A passing Test with no Story remains a semantic operator action; an
|
|
153
|
+
exactly-one candidate is not linked or approved.
|
|
154
|
+
- A missing link derivable from an existing healthy `test_cases.evidence_id`
|
|
155
|
+
is classified structural and described with a stable `action_kind`, but is
|
|
156
|
+
not applied.
|
|
157
|
+
- Conflicting, missing, drifted, cross-target, or wrong-role Evidence is not
|
|
158
|
+
auto-repaired.
|
|
159
|
+
- `classification` rejects values outside the fixed four-value enum; summary
|
|
160
|
+
always contains exactly the four classification keys.
|
|
161
|
+
- The published sort key, fixed ranks, `action_kind`, and post-sort action IDs
|
|
162
|
+
produce identical output for identical state.
|
|
163
|
+
- Text and JSON output contain the same action classes and concrete IDs; stdout
|
|
164
|
+
remains pure JSON in JSON mode.
|
|
165
|
+
- Targeted tests, full `pytest`, `ruff check .`, strict validation, and render
|
|
166
|
+
pass in an initialized verification project.
|
|
167
|
+
|
|
168
|
+
## Evidence required to close
|
|
169
|
+
|
|
170
|
+
- Before/after hashes and row/event counts proving dry-run zero mutation.
|
|
171
|
+
- JSON fixtures for all four classifications, public action kinds, canonical
|
|
172
|
+
sort keys, zero-filled summary keys, ambiguous cases, and idempotent reruns.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# 0143: Dedicated terminal link repair commands
|
|
2
|
+
|
|
3
|
+
- **Status:** Approved implementation slice
|
|
4
|
+
- **Milestone:** v0.4.1 Integrity Migration
|
|
5
|
+
- **Priority:** P1
|
|
6
|
+
- **Estimated size:** L
|
|
7
|
+
- **Dependencies:** 0142 (repair-plan action model)
|
|
8
|
+
- **Parallel-safe with:** none of 0144–0145; shared `cli.py`, `validators.py`, and Evidence services require a serial merge
|
|
9
|
+
- **DB schema:** remains 8
|
|
10
|
+
|
|
11
|
+
## Problem
|
|
12
|
+
|
|
13
|
+
The v0.4.0 same-status contract deliberately makes repeated terminal commands
|
|
14
|
+
no-ops. Consequently, rerunning `pcl test pass` must not be overloaded to
|
|
15
|
+
repair a missing Story or Evidence link on an existing passing Test. Operators
|
|
16
|
+
need an explicit, narrow, audited path for relationship repair that does not
|
|
17
|
+
replay the lifecycle transition or rewrite historical Evidence.
|
|
18
|
+
|
|
19
|
+
## Goal
|
|
20
|
+
|
|
21
|
+
Add dedicated Test and Evidence link commands that validate the complete
|
|
22
|
+
relationship before mutation, repair links atomically, and leave lifecycle
|
|
23
|
+
status and historical records untouched. Consume the 0142 action model to add
|
|
24
|
+
the only structural apply path for lifecycle repair.
|
|
25
|
+
|
|
26
|
+
## CLI contract
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
pcl test link TC-0001 [--story US-0001] [--evidence-id E-0007] --summary "..."
|
|
30
|
+
pcl evidence link E-0007 --target test_case:TC-0001 --role acceptance --summary "..."
|
|
31
|
+
pcl repair lifecycle --apply-structural [--json]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`pcl test link` requires at least one of `--story` or `--evidence-id`. When both
|
|
35
|
+
are supplied, both changes are validated before one transaction commits. The
|
|
36
|
+
JSON response reports `changed`, before/after relationship values, the event
|
|
37
|
+
ID, and any stable warnings.
|
|
38
|
+
|
|
39
|
+
`pcl evidence link` accepts an existing Evidence ID, a parsed
|
|
40
|
+
`<target-type>:<target-id>` reference, a role, and an audit summary. It is a
|
|
41
|
+
generic link insert only for known schema-8 target types and compatible roles;
|
|
42
|
+
it does not silently update a Test's `evidence_id`. For a terminal Test
|
|
43
|
+
`acceptance` link, the stored Test pointer must already match, otherwise the
|
|
44
|
+
command returns a typed error directing the operator to `pcl test link`.
|
|
45
|
+
|
|
46
|
+
`pcl repair lifecycle --apply-structural` first builds the current
|
|
47
|
+
`lifecycle-repair-plan/v1` plan through 0142, selects only actions with
|
|
48
|
+
`classification: structural` and `safe_to_apply: true`, and dispatches their
|
|
49
|
+
public `action_kind` values through the internal link mutation service owned by
|
|
50
|
+
this task. Unknown action kinds, non-structural actions, or changed
|
|
51
|
+
preconditions fail closed. No command string from the plan is shell-executed.
|
|
52
|
+
|
|
53
|
+
## Validation rules
|
|
54
|
+
|
|
55
|
+
- Test, Story, Evidence, and target IDs must exist before mutation.
|
|
56
|
+
- A Story linked to a Test must belong to the same Feature. A passing Test may
|
|
57
|
+
link only an `approved` or explicitly `waived` Story.
|
|
58
|
+
- Acceptance Evidence for a direct passing Test must be an allowed healthy
|
|
59
|
+
hash-pinned Evidence type and target the same Test.
|
|
60
|
+
- Feature `acceptance` Evidence and completion-packet roles must satisfy the
|
|
61
|
+
existing terminal guard predicates.
|
|
62
|
+
- Completion-packet links require a valid packet whose embedded target matches
|
|
63
|
+
the requested target.
|
|
64
|
+
- Known exclusive target-bound roles reject an existing conflicting target;
|
|
65
|
+
generic supporting links retain their existing many-target behavior.
|
|
66
|
+
- All requested relationships are checked before opening the mutation window,
|
|
67
|
+
then re-checked inside it to prevent a time-of-check/time-of-use repair.
|
|
68
|
+
|
|
69
|
+
## Scope
|
|
70
|
+
|
|
71
|
+
- Add the parser and dispatch paths in `src/pcl/cli.py`.
|
|
72
|
+
- Add one internal relationship mutation service used by `pcl test link`,
|
|
73
|
+
`pcl evidence link`, and structural lifecycle apply. The service may be
|
|
74
|
+
organized through `src/pcl/stories.py` and `src/pcl/evidence.py`, but 0142
|
|
75
|
+
remains read-only and does not import it.
|
|
76
|
+
- Extend `src/pcl/lifecycle_repair.py` only with the explicit
|
|
77
|
+
`--apply-structural` consumer of the already-public 0142 plan model.
|
|
78
|
+
- Keep `src/pcl/validators.py` consistent with the write-side rules.
|
|
79
|
+
- Add direct and regression coverage in `tests/test_stories.py`,
|
|
80
|
+
`tests/test_evidence_add.py`, and lifecycle validation tests where needed.
|
|
81
|
+
- Update recovery documentation and command help examples.
|
|
82
|
+
|
|
83
|
+
## Mutation and event contract
|
|
84
|
+
|
|
85
|
+
- One successful `pcl test link` call uses one transaction and appends one
|
|
86
|
+
`test_links_repaired` event containing old/new Story and Evidence IDs plus
|
|
87
|
+
the operator summary.
|
|
88
|
+
- One successful `pcl evidence link` call uses one transaction and appends one
|
|
89
|
+
`evidence_link_added` event containing Evidence, target, role, and summary.
|
|
90
|
+
- One successful structural plan application re-checks every selected action
|
|
91
|
+
inside one transaction and appends one
|
|
92
|
+
`lifecycle_structural_repair_applied` event containing plan action IDs,
|
|
93
|
+
action kinds, and before/after relationships.
|
|
94
|
+
- Repeating an exact existing relationship returns `changed: false` and adds no
|
|
95
|
+
event or outbox row.
|
|
96
|
+
- Replacing the current Test Evidence pointer does not delete or mutate the
|
|
97
|
+
previous Evidence row or historical `evidence_links`; the event makes the
|
|
98
|
+
pointer change reviewable.
|
|
99
|
+
|
|
100
|
+
## Invariants
|
|
101
|
+
|
|
102
|
+
- `pcl test pass` and every other same-status terminal call remain no-ops; they
|
|
103
|
+
do not acquire hidden repair behavior.
|
|
104
|
+
- Link commands never change status, `created_at`, prior transition events,
|
|
105
|
+
Evidence content/hash, Verification, Decision, or approval state.
|
|
106
|
+
- Any invalid or conflicting input produces a typed error and zero domain,
|
|
107
|
+
event, outbox, or JSONL mutation.
|
|
108
|
+
- A stale structural plan or changed relationship precondition fails with a
|
|
109
|
+
typed error and zero mutation; partial batch repair is not observable.
|
|
110
|
+
- Structural apply never dispatches semantic, human-review, or unsupported
|
|
111
|
+
actions and never executes plan command strings.
|
|
112
|
+
- Every mutation goes through application services and the event outbox; no
|
|
113
|
+
operator-facing raw SQL path is added.
|
|
114
|
+
- JSON changes are additive. Schema 8, dependencies, and legacy flags remain
|
|
115
|
+
unchanged.
|
|
116
|
+
|
|
117
|
+
## Non-goals
|
|
118
|
+
|
|
119
|
+
- Story approval/waiver, Goal verification, or lifecycle status repair.
|
|
120
|
+
- Link deletion, bulk relinking, or automatic conflict resolution.
|
|
121
|
+
- Treating mutable legacy path strings as terminal proof.
|
|
122
|
+
- Generic Verification targets or a schema migration.
|
|
123
|
+
- Changing the 0142 classification/action/sort contract.
|
|
124
|
+
|
|
125
|
+
## Acceptance criteria
|
|
126
|
+
|
|
127
|
+
- A same-Feature approved Story and healthy acceptance Evidence can repair an
|
|
128
|
+
existing passing Test in one audited transaction.
|
|
129
|
+
- Cross-Feature Story, draft/review Story on a passing Test, missing/drifted
|
|
130
|
+
Evidence, incompatible role, packet target mismatch, and exclusive-role
|
|
131
|
+
target conflict each fail with zero mutation.
|
|
132
|
+
- A combined command cannot commit the Story half if Evidence validation fails.
|
|
133
|
+
- `pcl evidence link` refuses to create a half-repaired terminal Test when its
|
|
134
|
+
`evidence_id` pointer differs.
|
|
135
|
+
- Exact reruns are event-free no-ops; changing a Test pointer preserves all old
|
|
136
|
+
Evidence rows and links.
|
|
137
|
+
- Structural apply accepts only recognized structural `action_kind` values,
|
|
138
|
+
is atomic and audited, and is an event-free no-op when the current plan has no
|
|
139
|
+
applicable structural actions.
|
|
140
|
+
- Existing tests prove repeated `pcl test pass` remains a same-status no-op.
|
|
141
|
+
- Repaired direct and Workflow-backed fixtures satisfy the existing lifecycle
|
|
142
|
+
validator without weakening its predicates.
|
|
143
|
+
- After structural apply and explicit operator execution of every semantic or
|
|
144
|
+
human-review action in the supported synthetic fixture,
|
|
145
|
+
`pcl validate --strict --json` passes.
|
|
146
|
+
- Targeted tests, full `pytest`, `ruff check .`, strict validation, and render
|
|
147
|
+
pass.
|
|
148
|
+
|
|
149
|
+
## Evidence required to close
|
|
150
|
+
|
|
151
|
+
- Before/after Test and `evidence_links` JSON plus the single emitted event.
|
|
152
|
+
- Zero-mutation counts/hashes for every rejection case.
|
|
153
|
+
- Same-status and exact-link idempotency regression output.
|
|
154
|
+
- A complete 0142 plan → 0143 structural apply → explicit semantic actions →
|
|
155
|
+
strict-pass transcript.
|