project-loop-harness 0.4.3__tar.gz → 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {project_loop_harness-0.4.3/src/project_loop_harness.egg-info → project_loop_harness-0.5.0}/PKG-INFO +115 -9
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/README.md +114 -8
- project_loop_harness-0.5.0/agent-tasks/0154-profile-boundary-adr-contract-freeze.md +55 -0
- project_loop_harness-0.5.0/agent-tasks/0155-profile-contract-runtime-and-registry.md +44 -0
- project_loop_harness-0.5.0/agent-tasks/0156-profile-read-only-prepare.md +49 -0
- project_loop_harness-0.5.0/agent-tasks/0157-profile-bundle-validation-dry-run.md +52 -0
- project_loop_harness-0.5.0/agent-tasks/0158-profile-bundle-atomic-ingest.md +61 -0
- project_loop_harness-0.5.0/agent-tasks/0159-decision-proposal-human-selection.md +72 -0
- project_loop_harness-0.5.0/agent-tasks/0160-council-profile-offline-e2e.md +57 -0
- project_loop_harness-0.5.0/agent-tasks/0161-council-dogfood-skill-parity.md +38 -0
- project_loop_harness-0.5.0/agent-tasks/0162-council-evaluation-adoption-gate.md +39 -0
- project_loop_harness-0.5.0/agent-tasks/0163-adoption-first-release-readiness.md +68 -0
- project_loop_harness-0.5.0/agent-tasks/0164-guided-dashboard-review-experience.md +110 -0
- project_loop_harness-0.5.0/agent-tasks/0165-v043-field-feedback-friction.md +97 -0
- project_loop_harness-0.5.0/agent-tasks/0166-local-skill-usage-improvement-loop.md +96 -0
- project_loop_harness-0.5.0/agent-tasks/0167-actionable-skill-usage-retry-signals.md +89 -0
- project_loop_harness-0.5.0/agent-tasks/0168-structured-command-guide.md +99 -0
- project_loop_harness-0.5.0/agent-tasks/0169-dashboard-decision-summary.md +57 -0
- project_loop_harness-0.5.0/agent-tasks/0170-exit-status-aware-skill-usage-friction.md +75 -0
- project_loop_harness-0.5.0/agent-tasks/0171-actionable-finish-timeout-recovery.md +62 -0
- project_loop_harness-0.5.0/agent-tasks/0172-composite-pcl-result-status.md +63 -0
- project_loop_harness-0.5.0/agent-tasks/0173-v050-release-preparation.md +61 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/README.md +39 -1
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/adoption-guide.md +51 -1
- project_loop_harness-0.5.0/docs/command-guide.md +30 -0
- project_loop_harness-0.5.0/docs/council-profile.md +50 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/data-model.md +10 -0
- project_loop_harness-0.5.0/docs/dogfood/v0.5.0-council-profile.md +51 -0
- project_loop_harness-0.5.0/docs/evaluation/v0.5.0-council-evaluation.md +37 -0
- project_loop_harness-0.5.0/docs/evidence/0155-profile-contract-runtime-validation.md +47 -0
- project_loop_harness-0.5.0/docs/evidence/0156-profile-read-only-prepare-validation.md +40 -0
- project_loop_harness-0.5.0/docs/evidence/0157-profile-bundle-dry-run-validation.md +46 -0
- project_loop_harness-0.5.0/docs/evidence/0158-atomic-profile-bundle-ingest-validation.md +55 -0
- project_loop_harness-0.5.0/docs/evidence/0159-profile-decisions-authorization-validation.md +57 -0
- project_loop_harness-0.5.0/docs/evidence/0160-council-discovery-offline-e2e-validation.md +61 -0
- project_loop_harness-0.5.0/docs/evidence/0162-final-verification.md +19 -0
- project_loop_harness-0.5.0/docs/evidence/0162-human-adoption-outcome.md +26 -0
- project_loop_harness-0.5.0/docs/evidence/0163-adoption-first-validation.md +43 -0
- project_loop_harness-0.5.0/docs/evidence/0164-guided-dashboard-codex-remediation.md +62 -0
- project_loop_harness-0.5.0/docs/evidence/0164-guided-dashboard-red-tests.md +25 -0
- project_loop_harness-0.5.0/docs/evidence/0164-guided-dashboard-validation.md +82 -0
- project_loop_harness-0.5.0/docs/evidence/0165-v043-field-feedback-validation.md +70 -0
- project_loop_harness-0.5.0/docs/evidence/0166-local-skill-usage-validation.md +86 -0
- project_loop_harness-0.5.0/docs/evidence/0167-actionable-skill-usage-signals-validation.md +94 -0
- project_loop_harness-0.5.0/docs/evidence/0168-structured-command-guide-validation.md +103 -0
- project_loop_harness-0.5.0/docs/evidence/0169-dashboard-decision-summary-validation.md +44 -0
- project_loop_harness-0.5.0/docs/evidence/0170-exit-status-aware-skill-usage-validation.md +86 -0
- project_loop_harness-0.5.0/docs/evidence/0171-actionable-finish-timeout-recovery-validation.md +78 -0
- project_loop_harness-0.5.0/docs/evidence/0172-composite-pcl-result-status-validation.md +71 -0
- project_loop_harness-0.5.0/docs/evidence/node-finish-utsuro-dogfood.md +19 -0
- project_loop_harness-0.5.0/docs/evidence/node-init-autodetection-dogfood.md +38 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/finish.md +31 -7
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/growth-plan-v0.2.4-v0.5.md +36 -4
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/implementation-plan.md +53 -0
- project_loop_harness-0.5.0/docs/plan-v0.5.0-council-profile.md +397 -0
- project_loop_harness-0.5.0/docs/proposals/council-profile/ADR-005-external-council-profile-boundary.md +93 -0
- project_loop_harness-0.5.0/docs/proposals/council-profile/README.md +18 -0
- project_loop_harness-0.5.0/docs/proposals/council-profile/contract-freeze.md +146 -0
- project_loop_harness-0.5.0/docs/proposals/council-profile/external-runner-spec-v0.md +125 -0
- project_loop_harness-0.5.0/docs/proposals/council-profile/implementation-proposal.md +1014 -0
- project_loop_harness-0.5.0/docs/proposals/council-profile/validation-transcript.md +56 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-notes/v0.4.3.md +10 -4
- project_loop_harness-0.5.0/docs/release-notes/v0.5.0.md +79 -0
- project_loop_harness-0.5.0/docs/reviews/0154-council-contract-freeze-claude-fable-review.md +43 -0
- project_loop_harness-0.5.0/docs/reviews/0155-0157-claude-fable-milestone-review.md +55 -0
- project_loop_harness-0.5.0/docs/reviews/0156-route-binding-claude-fable-advice.md +29 -0
- project_loop_harness-0.5.0/docs/reviews/0158-0160-claude-fable-milestone-review.md +38 -0
- project_loop_harness-0.5.0/docs/reviews/0159-decision-authorization-claude-fable-advice.md +37 -0
- project_loop_harness-0.5.0/docs/reviews/0161-0162-claude-fable-milestone-review.md +41 -0
- project_loop_harness-0.5.0/docs/reviews/0163-adoption-first-claude-fable-review.md +60 -0
- project_loop_harness-0.5.0/docs/reviews/0164-guided-dashboard-codex-final-review.md +66 -0
- project_loop_harness-0.5.0/docs/reviews/0164-guided-dashboard-codex-rereview.md +41 -0
- project_loop_harness-0.5.0/docs/reviews/0164-guided-dashboard-plan-review.md +51 -0
- project_loop_harness-0.5.0/docs/reviews/2026-07-13-business-technical-review.md +109 -0
- project_loop_harness-0.5.0/docs/reviews/plan-v0.5.0-council-profile-review.md +93 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/02-contracts-and-data-model.md +8 -1
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/ADOPTION.md +14 -0
- project_loop_harness-0.5.0/docs/roadmap/priority-reset-2026-07-13.md +44 -0
- project_loop_harness-0.5.0/docs/skill-usage-report.md +91 -0
- project_loop_harness-0.5.0/docs/stability-policy.md +81 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/pyproject.toml +4 -2
- project_loop_harness-0.5.0/src/pcl/__init__.py +1 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/audit.py +84 -1
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/cli.py +550 -1
- project_loop_harness-0.5.0/src/pcl/command_guide.py +351 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/commands.py +225 -6
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/__init__.py +76 -0
- project_loop_harness-0.5.0/src/pcl/contracts/_profile_contract.py +272 -0
- project_loop_harness-0.5.0/src/pcl/contracts/claim_set.py +36 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/completion_packet.py +17 -10
- project_loop_harness-0.5.0/src/pcl/contracts/council_run.py +55 -0
- project_loop_harness-0.5.0/src/pcl/contracts/decision_proposal.py +53 -0
- project_loop_harness-0.5.0/src/pcl/contracts/profile_manifest.py +31 -0
- project_loop_harness-0.5.0/src/pcl/contracts/profile_output_bundle.py +129 -0
- project_loop_harness-0.5.0/src/pcl/contracts/profile_run_request.py +143 -0
- project_loop_harness-0.5.0/src/pcl/contracts/schemas/claim-set-v0.schema.json +204 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/schemas/completion-packet-v1.schema.json +14 -0
- project_loop_harness-0.5.0/src/pcl/contracts/schemas/council-run-v0.schema.json +391 -0
- project_loop_harness-0.5.0/src/pcl/contracts/schemas/decision-proposal-v0.schema.json +264 -0
- project_loop_harness-0.5.0/src/pcl/contracts/schemas/profile-manifest-v1.schema.json +173 -0
- project_loop_harness-0.5.0/src/pcl/contracts/schemas/profile-output-bundle-v1.schema.json +291 -0
- project_loop_harness-0.5.0/src/pcl/contracts/schemas/profile-run-request-v1.schema.json +600 -0
- project_loop_harness-0.5.0/src/pcl/contracts/schemas/verification-plan-v0.schema.json +141 -0
- project_loop_harness-0.5.0/src/pcl/contracts/verification_plan.py +39 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/decisions.py +32 -1
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/errors.py +13 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/events.py +2 -1
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/evidence.py +126 -8
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/evidence_show.py +25 -2
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/finish_execution.py +89 -16
- project_loop_harness-0.5.0/src/pcl/finish_recovery.py +91 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/init_project.py +136 -3
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/locales.py +81 -0
- project_loop_harness-0.5.0/src/pcl/profile_authorization.py +639 -0
- project_loop_harness-0.5.0/src/pcl/profile_bundle_store.py +605 -0
- project_loop_harness-0.5.0/src/pcl/profile_decisions.py +307 -0
- project_loop_harness-0.5.0/src/pcl/profile_fixture_runner.py +380 -0
- project_loop_harness-0.5.0/src/pcl/profile_ingest.py +875 -0
- project_loop_harness-0.5.0/src/pcl/profile_prepare.py +731 -0
- project_loop_harness-0.5.0/src/pcl/profiles/builtin/council.discovery.json +41 -0
- project_loop_harness-0.5.0/src/pcl/profiles/fixtures/council.discovery/scenarios.json +13 -0
- project_loop_harness-0.5.0/src/pcl/profiles.py +170 -0
- project_loop_harness-0.5.0/src/pcl/project_config.py +98 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/renderer.py +295 -2
- project_loop_harness-0.5.0/src/pcl/skill_usage_report.py +1474 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/start.py +3 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/dashboard/dashboard.html +31 -11
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/skills/project-control-loop/SKILL.md +40 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/validators.py +28 -11
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/workflow_sandbox.py +30 -26
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0/src/project_loop_harness.egg-info}/PKG-INFO +115 -9
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/project_loop_harness.egg-info/SOURCES.txt +110 -0
- project_loop_harness-0.5.0/tests/fixtures/profile_bundle/cases.json +29 -0
- project_loop_harness-0.5.0/tests/fixtures/profile_e2e/decision-projection.expected.json +15 -0
- project_loop_harness-0.5.0/tests/fixtures/profile_e2e/run_offline_e2e.py +203 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/start_initialized_v1.json +3 -1
- project_loop_harness-0.5.0/tests/fixtures/v0.3.1-baseline/snapshots/pcl-help.json +9 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/pcl-version.json +1 -1
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/mcp/fixtures/wire-transcript.json +1 -1
- project_loop_harness-0.5.0/tests/test_adoption_docs.py +57 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_cli_init.py +116 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_codex_plugin.py +5 -0
- project_loop_harness-0.5.0/tests/test_command_guide.py +117 -0
- project_loop_harness-0.5.0/tests/test_council_evaluation_cohort.py +49 -0
- project_loop_harness-0.5.0/tests/test_council_profile_proposal_contracts.py +224 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_dashboard.py +409 -2
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_distribution.py +123 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_evidence_add.py +6 -10
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_evidence_show.py +4 -2
- project_loop_harness-0.5.0/tests/test_field_feedback_0165.py +256 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_finish.py +146 -0
- project_loop_harness-0.5.0/tests/test_profile_contracts.py +274 -0
- project_loop_harness-0.5.0/tests/test_profile_fixture_e2e.py +50 -0
- project_loop_harness-0.5.0/tests/test_profile_ingest_dry_run.py +1076 -0
- project_loop_harness-0.5.0/tests/test_profile_prepare.py +470 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_skill_command_examples.py +5 -0
- project_loop_harness-0.5.0/tests/test_skill_usage_report.py +932 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_start.py +31 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_verification_feedback.py +1 -1
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_workflow_sandbox.py +40 -0
- project_loop_harness-0.4.3/src/pcl/__init__.py +0 -1
- project_loop_harness-0.4.3/tests/fixtures/v0.3.1-baseline/snapshots/pcl-help.json +0 -9
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/LICENSE +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/MANIFEST.in +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/Makefile +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0001-hardening-cli.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0002-db-migrations.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0003-workflow-runner.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0004-dashboard-renderer.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0005-agent-integration.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0006-codex-plugin.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0007-mcp-server.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0008-loop-lifecycle.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0009-defect-lifecycle.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0010-reporting-evidence.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0011-validation-invariants.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0012-audit-log-integrity.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0013-validation-diagnostics.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0014-escalation-lifecycle.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0015-decision-lifecycle.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0016-escalation-decision-linkage.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0017-next-action-guided-loop.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0018-readme-golden-path.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0019-recovery-playbook.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0020-example-project-refresh.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0021-agent-adapter-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0022-agent-output-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0023-codex-exec-adapter-hardening.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0024-claude-manual-adapter-hardening.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0025-generic-shell-adapter.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0026-agent-job-evidence-ingestion.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0027-dashboard-data-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0028-dashboard-evidence-navigation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0029-dashboard-risk-and-blockers.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0030-distribution-readiness.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0031-workflow-proposal-mode.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0032-workflow-proposal-review.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0033-workflow-verifier.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0034-limited-execution-sandbox.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0035-automatic-workflow-executor.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0036-executor-dogfood-workflow.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0037-executor-retry-resume.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0038-story-test-lifecycle.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0039-workflow-yaml-rule-expressions.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0040-test-case-evidence-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0041-feature-inspection-commands.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0042-report-coverage-context.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0043-feature-report.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0044-complete-csv-export.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0045-filtered-job-inspection.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0046-feature-status-lifecycle.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0047-feature-coverage-next-action.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0048-migration-status-command.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0049-render-json-artifact-paths.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0050-codex-plugin-package-inventory.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0051-mcp-render-artifact-paths.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0052-lifecycle-failure-job-cleanup.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0053-prompt-job-json-handoff.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0054-human-queue-linkage-cli.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0055-workflow-proposal-list-filter.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0056-sandbox-noop-execution-guard.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0057-executor-no-executable-step-guard.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0058-dogfood-usability-hardening.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0059-checkpoint-review-guidance.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0060-pypi-trusted-publishing.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0061-context-pack-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0062-task-backlog-entity.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0063-structured-verification-rubric.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0064-task-loop-integration.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0065-dashboard-human-decisions.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0066-agent-registry-lease.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0067-context-pack-improvements.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0068-trust-hardening.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0069-explainable-code-context-v0.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0070-human-decision-cockpit.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0071-dogfood-impact-precision.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0072-sensitive-omission.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0073-code-context-module-split.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0074-search-snapshot-consistency.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0075-diff-source-modes.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0076-schema-version-integrity.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0077-index-output-budget-and-impact-noise.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0078-context-pack-code-context-bridge.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0079-receipt-human-summary.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0080-retrieval-eval-gate.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0081-diff-modes-completion.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0082-receipt-relevance-and-age.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0083-required-section-invariant.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0084-source-commands-honesty.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0085-distribution-source-completeness.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0086-command-surface-alignment.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0087-verification-suggestion-ids.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0088-verification-feedback.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0089-dogfood-fixture-propose.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0090-eval-baseline-record-compare.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0091-refresh-command-scope-fidelity.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0092-idempotent-status-transitions.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0093-evidence-add-command.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0094-job-completion-evidence.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0095-supporting-evidence-health.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0096-evidence-add-path-guards.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0097-evidence-durability-design.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0098-field-feedback-next-weight-and-run-report-scope.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0099-evidence-copy-mode.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0100-evidence-task-linking.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0101-evidence-id-allocation-race.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0102-source-drift-health-warning.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0103-security-policy-v02x.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0104-python-ci-matrix.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0105-evidence-copy-observability.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0106-release-checklist.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0107-agent-tasks-backlog-index.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0108-target-bound-code-context-receipts.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0113-evidence-links-table.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0114-source-hash-drift.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0115-context-pack-contract-fixtures.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0116-receipt-link-agreement-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0117-markdown-target-refresh-command.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0118-canonical-target-bound-handoff-docs.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0119-context-check-preflight.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0120-pcl-finish-terminal-closeout.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0121-human-gate-japanese-guidance.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0122-feature-coverage-noop.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0123-master-trace-intent-index-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0124-baseline-fixtures-v0-3-1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0125-mcp-stdio-framing-negotiation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0126-mcp-external-conformance.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0127-transactional-audit-outbox-design.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0128-event-outbox-jsonl-projector.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0129-audit-check-repair-rebuild.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0130-crash-concurrency-test-suite.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0131-guarded-executor-hardening.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0132-master-trace-context-pack-section.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0133-windows-lock-fallback.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0134-completion-packet-v1-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0135-finish-emits-completion-packet.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0136-lite-pcl-start.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0137-handoff-packet-pcl-resume.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0138-kpi-report-surface.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0139-executable-resume-context.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0140-kpi-post-integration-sources.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0140a-skill-cli-contract-parity.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0140b-lifecycle-integrity-gate.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0140c-fail-open-check-guard.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0141-idle-routing-repair.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0142-lifecycle-repair-planner.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0143-terminal-link-repair.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0144-skill-runtime-provenance.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0145-structured-validation-diagnostics.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0145a-integrity-migration-dogfood.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0145b-v0.4.1-release-preparation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0146-work-brief-evidence-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0147-deterministic-route-recommendation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0148-adaptive-policy-resolve-explain.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0149-route-policy-override-integration.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0149a-adaptive-entry-dogfood.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0149b-v0.4.2-release-preparation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0150-evidence-set-completeness-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0151-completion-policy-terminal-preflight.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0152-next-action-approval-provenance.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0153-cross-skill-integrity-dogfood.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/agent-tasks/0153b-v0.4.3-release-preparation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/adaptive-policy-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/adr/0001-hybrid-state.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/adr/0002-cli-is-the-runtime.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/adr/0003-static-workflows-before-dynamic-workflows.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/adr/ADR-002-transactional-audit-outbox.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/agent-adapter-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/agent-output-template.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/agent-roles.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/approval-provenance-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/architecture.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/canonical-state-baseline-v0.4.2.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/code-context.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/completion-packet-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/completion-policy-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/context-check.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/context-pack.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/crash-concurrency-reliability.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/dashboard-data-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/dashboard-design.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/distribution.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/dogfood/adaptive-entry-v0.4.2.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/dogfood/lp-production-cross-skill-review.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/dogfood/v0.4.3-cross-skill-integrity.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/dogfood-report-v0.4.1-integrity-migration.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/dogfood-report-v0.4.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/event-outbox-compatibility.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0136-pcl-start-demo.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0146-work-brief-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0147-route-recommendation-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0148-adaptive-policy-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0149-route-override-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0150-evidence-set-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0151-completion-policy-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0152-next-action-approval-provenance-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0152a-agent-mediated-human-approval-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/0153-human-dogfood-approval.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence/d0002-autonomous-continuation-validation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence-durability-design.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence-entry-paths-design.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/evidence-set-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/feedback/2026-07-06-ax1-moc1-agent-feedback.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/golden-path.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/handoff-packet-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/master-trace-handoff.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/master-trace-intent-index.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/mcp-compatibility.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/mcp-manual-smoke-runbook.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/pcl-start.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/plan-v0.4.0.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/plan-v0.4.1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/plan-v0.4.2.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/plan-v0.4.3.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/plh_v0_1_11_review_agenda.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/plh_v0_1_12_review_agenda.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/project-loop-harness-v0.2.3-third-party-review.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/pypi-publishing.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/recovery-playbook.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-checklist.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-notes/v0.2.4.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-notes/v0.3.0.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-notes/v0.3.1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-notes/v0.3.3.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-notes/v0.4.0.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-notes/v0.4.1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/release-notes/v0.4.2.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/releases/v0.3.1-baseline.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/releases/v0.3.3-mcp-stdio.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/00-executive-roadmap.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/01-adaptive-loop-architecture.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/03-implementation-plan.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/04-evaluation-and-rollout.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/05-pdm-discussion-guide.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/06-cli-contract-draft.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/07-state-machines-and-events.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/08-repository-integration.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/09-ai-plc-integration-mapping.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/README.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/SOURCE_BASIS.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/VALIDATION_REPORT.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/adr/ADR-001-profile-not-entity.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/adr/ADR-002-transactional-audit-outbox.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/adr/ADR-003-adaptive-policy-axes.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/adr/ADR-004-contract-first-promotion.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0123-release-v0-3-1-baseline.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0124-mcp-stdio-framing-negotiation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0125-mcp-external-conformance.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0126-transactional-audit-outbox-design.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0127-event-outbox-jsonl-projector.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0128-audit-check-repair-rebuild.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0129-crash-concurrency-test-suite.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0130-guarded-executor-hardening.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0131-completion-packet-v1-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0132-finish-emits-completion-packet.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0133-lite-pcl-start.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0134-handoff-packet-pcl-resume.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0135-work-brief-v1-evidence.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0136-deterministic-route-recommendation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0137-adaptive-policy-explain-override.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0138-work-brief-revision-replan.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0139-stale-invalidation-propagation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0140-verifier-provenance-separation.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0141-risk-based-verification-policy.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0142-profile-contract-boundary.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0143-discovery-reference-profile.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0144-decision-proposal-human-selection.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0145-master-trace-handoff-integration.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0146-capability-profile-v0.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0147-budget-profile-incomplete-packet.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0148-context-cache-delta-handoff.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0149-knowledge-proposal-experiment.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0150-cross-model-evaluation-harness.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0151-design-partner-operations.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/0152-adoption-stability-release.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/agent-tasks-proposed/README.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/handoff/ARCHITECTURE_REVIEW_PROMPT.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/handoff/IMPLEMENTATION_AGENT_PROMPT.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/roadmap/integrated/handoff/PDM_REVIEW_PROMPT.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/route-recommendation-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/safety-permissions.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/v0.2.0-plan.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/verification-feedback-design.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/verification-feedback.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/verification-rubric.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/work-brief-v1.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/docs/workflow-contract.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/scripts/run_advisory_retrieval_eval.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/scripts/verify_sdist_contracts.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/setup.cfg +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/__main__.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/adaptive_policy.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/agents.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/approval_provenance.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/checkpoints.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/__init__.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/diff.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/eval.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/impact.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/receipts.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/scan.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/search.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/store.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/summary.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/symbols.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_context/test_hints.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/code_index.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/completion_policies.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/context.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/context_binding.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/context_usage.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/completion_policy.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/evidence_set.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/handoff_packet.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/policies/adaptive-policy-v1-default.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/route_override.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/route_recommendation.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/schemas/adaptive-policy-resolution-v1.schema.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/schemas/completion-policy-v1.schema.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/schemas/evidence-set-v1.schema.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/schemas/handoff-packet-v1.schema.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/schemas/route-override-v1.schema.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/schemas/route-recommendation-v1.schema.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/schemas/work-brief-v1.schema.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/contracts/work_brief.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/migrations/001_initial.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/migrations/002_tasks.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/migrations/003_agent_registry.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/migrations/004_code_index.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/migrations/005_verification_feedback.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/migrations/006_evidence_task_link.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/migrations/007_evidence_links.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/migrations/008_event_outbox.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db/schema.sql +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/db.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/dispatch.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/escalations.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/evidence_sets.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/exporters.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/guarded_process.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/guards.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/ids.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/kpi_report.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/lifecycle.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/lifecycle_repair.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/links.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/locks.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/mcp_server.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/migrations.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/outbox.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/paths.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/receipt_show.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/redaction.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/registry.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/relationship_repair.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/reports.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/resources.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/resume.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/route_overrides.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/routing.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/rubric.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/stories.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/tasks.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/project/AGENTS.block.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/project/CLAUDE.block.md +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/project/gitignore.fragment +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/project/pcl.yaml +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/workflows/defect_repair.yaml +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/workflows/executor_smoke.yaml +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/workflows/feature_coverage.yaml +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/templates/workflows/regression_loop.yaml +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/test_faults.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/timeutil.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/token_estimation.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/update_check.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/verification_feedback.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/verifications.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/work_briefs.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/workflow_executor.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/workflow_proposal_validation.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/workflow_proposals.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/workflow_verifier.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/workflow_yaml.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/pcl/workflows.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/project_loop_harness.egg-info/dependency_links.txt +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/project_loop_harness.egg-info/entry_points.txt +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/project_loop_harness.egg-info/requires.txt +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/src/project_loop_harness.egg-info/top_level.txt +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/baseline_fixture_tools.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/code_context_summary_v0.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/completion_packet/full.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/completion_packet/minimal.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/completion_packet/negative-budget-next-action.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/completion_packet/negative-cases.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/completion_packet/negative-critical-proof.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/completion_packet/negative-passed-result.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/completion_policy/minimal.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/context_pack_code_context_contract_v0.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/context_receipt_v0.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/context_receipt_v0_legacy_string_suggestions.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/complete/reports/completion_verdict.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/complete/reports/coordinate_report.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/complete/reports/report-manifest.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/complete/reports/responsive_report.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/completion-policy.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/incomplete/reports/completion_verdict.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/incomplete/reports/coordinate_report.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/incomplete/reports/report-manifest.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/cross_skill_dogfood/incomplete/reports/responsive_report.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/evidence_set/minimal.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/evidence_set/report-manifest.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/evidence_set/visual-check.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/handoff_packet/minimal.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/kpi_report_empty_v1.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/lifecycle_repair/all_classifications_v1.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/master_trace_context_contract_v0.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/retrieval_adversarial_v0.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/retrieval_real_history_v0.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/retrieval_v0.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/context-check-help.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/empty-context-check-json.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/empty-next-json.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/empty-render-json.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/empty-validate-strict-json.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/next-help.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/render-help.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/representative-context-check-json.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/representative-next-json.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/representative-render-json.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/representative-validate-strict-json.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/v0.3.1-baseline/snapshots/validate-help.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/work_brief/minimal.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/fixtures/work_brief/negative-embedded-route.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/mcp/conftest.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/mcp/fixtures/negative-matrix.json +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/mcp/test_external_conformance.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_adaptive_policy.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_advisory_retrieval_eval_script.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_agent_adapter_contract.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_agent_output_validation.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_agents.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_audit_commands.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_audit_log_integrity.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_baseline_fixtures.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_checkpoints.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_claude_manual_adapter.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_code_context_summary.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_code_index.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_codex_exec_adapter.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_completion_packet_contract.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_completion_packet_package.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_completion_policy.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_context.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_context_check.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_contract_cli.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_crash_concurrency.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_cross_skill_integrity_dogfood.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_dashboard_data_contract.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_decisions.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_defects.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_dispatch.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_escalations.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_event_outbox.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_evidence_sets.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_examples.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_execution_provenance.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_features.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_generic_shell_adapter.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_golden_path.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_guarded_process.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_handoff_packet_contract.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_integrity_migration_dogfood.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_kpi_report.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_lifecycle.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_lifecycle_integrity.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_lifecycle_repair.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_locks.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_mcp_server.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_migrations.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_next_actions.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_pypi_publishing.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_receipt_show.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_recovery_playbook.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_registry.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_reports.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_resume.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_route_overrides.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_route_recommendation.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_rubric.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_stories.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_tasks.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_update_check.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_validation.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_validation_diagnostics.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_validation_finding_sources.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_work_briefs.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_workflow_executor.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_workflow_proposals.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_workflow_verifier.py +0 -0
- {project_loop_harness-0.4.3 → project_loop_harness-0.5.0}/tests/test_workflows.py +0 -0
{project_loop_harness-0.4.3/src/project_loop_harness.egg-info → project_loop_harness-0.5.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: project-loop-harness
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Local control plane for agentic project development loops
|
|
5
5
|
Author: Project Loop Harness Contributors
|
|
6
6
|
License: MIT
|
|
@@ -34,23 +34,77 @@ Dynamic: license-file
|
|
|
34
34
|
|
|
35
35
|
# Project Loop Harness
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
> A local, model-neutral control plane that turns an agent's “done” into
|
|
38
|
+
> reviewable Evidence, verification status, residual risk, and a resumable next
|
|
39
|
+
> step.
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
## Understand it in 30 seconds
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
Coding agents are good at producing changes. They are less reliable at
|
|
44
|
+
remembering project state, proving completion, stopping at human decisions, and
|
|
45
|
+
handing work to another session or model.
|
|
42
46
|
|
|
43
|
-
|
|
47
|
+
Project Loop Harness (`pcl`) gives Codex, Claude Code, and similar agents a
|
|
48
|
+
shared local state machine:
|
|
49
|
+
|
|
50
|
+
- SQLite keeps current state; JSONL keeps an auditable event projection.
|
|
51
|
+
- Tests, artifacts, reviews, and completion packets preserve what “done” means.
|
|
52
|
+
- Agents continue routine safe work; humans are asked only for genuine product,
|
|
53
|
+
permission, security, destructive, or external-service decisions.
|
|
54
|
+
- The runtime does not call an LLM and does not depend on one agent vendor.
|
|
55
|
+
|
|
56
|
+
It is designed for people coordinating multiple coding agents, not as another
|
|
57
|
+
single-agent chat wrapper.
|
|
58
|
+
|
|
59
|
+
## Get first value in five minutes
|
|
60
|
+
|
|
61
|
+
### One-time operator setup
|
|
62
|
+
|
|
63
|
+
Install the runtime, inspect the adoption plan, and initialize the repository:
|
|
44
64
|
|
|
45
65
|
```bash
|
|
46
66
|
pipx install project-loop-harness
|
|
47
|
-
|
|
48
|
-
pcl --
|
|
67
|
+
cd /path/to/your-project
|
|
68
|
+
pcl init --dry-run --json
|
|
69
|
+
pcl init
|
|
49
70
|
```
|
|
50
71
|
|
|
72
|
+
`pcl init` retains existing `AGENTS.md`, `CLAUDE.md`, and `.gitignore` content
|
|
73
|
+
and appends its marked instruction block once. It also preserves an existing
|
|
74
|
+
`pcl.yaml` by default. `--force` can replace generated templates such as
|
|
75
|
+
`pcl.yaml`, workflows, the bundled Skill, and dashboard files; it does not
|
|
76
|
+
replace existing project-instruction content. See the
|
|
77
|
+
[Adoption Guide](docs/adoption-guide.md) for the exact file boundary.
|
|
78
|
+
|
|
79
|
+
### After setup, tell the agent the outcome you want
|
|
80
|
+
|
|
81
|
+
Copy this into Cockpit, Codex, Claude Code, or another coding-agent session:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
Read AGENTS.md, CLAUDE.md if present, and pcl.yaml. Use the Project Control
|
|
85
|
+
Loop. Start this goal: <describe the outcome>. Continue every agent-safe next
|
|
86
|
+
action, run the configured checks, preserve evidence, emit a completion packet,
|
|
87
|
+
and close the goal. Do not ask me to run routine pcl commands. Stop only for a
|
|
88
|
+
genuine human decision or external blocker.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The agent owns the routine `pcl start → implementation → finish → close` flow.
|
|
92
|
+
The operator uses the CLI during setup or deliberate maintenance, not to
|
|
93
|
+
manually advance every task.
|
|
94
|
+
|
|
95
|
+
The project remains local-only by default. No telemetry, provider call, cloud
|
|
96
|
+
sync, or automatic GitHub write is enabled by initialization.
|
|
97
|
+
|
|
98
|
+
## Install and inspect in more detail
|
|
99
|
+
|
|
51
100
|
Use `python -m pip install project-loop-harness` when installing inside a
|
|
52
101
|
project-specific virtual environment or CI job instead of exposing the command
|
|
53
|
-
globally.
|
|
102
|
+
globally. Confirm the installed runtime with:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
pcl --version
|
|
106
|
+
pcl --help
|
|
107
|
+
```
|
|
54
108
|
|
|
55
109
|
For unreleased changes, install from a pinned GitHub tag or commit:
|
|
56
110
|
|
|
@@ -85,6 +139,10 @@ advisory warning alongside normal harness health checks. Set
|
|
|
85
139
|
Then ask your coding agent to read `AGENTS.md`, `CLAUDE.md` if present, and
|
|
86
140
|
`pcl.yaml`, run `pcl next --json`, and follow the next safe harness action.
|
|
87
141
|
|
|
142
|
+
Compatibility promises for JSON contracts, typed errors, migrations, and
|
|
143
|
+
internal surfaces are documented in the
|
|
144
|
+
[Alpha Stability Policy](docs/stability-policy.md).
|
|
145
|
+
|
|
88
146
|
## Mental Model
|
|
89
147
|
|
|
90
148
|
```text
|
|
@@ -289,6 +347,39 @@ resolution as separate hash-bound Evidence. Task context, completion packets,
|
|
|
289
347
|
and resume handoffs expose additive references without rewriting historical
|
|
290
348
|
artifacts.
|
|
291
349
|
|
|
350
|
+
## Council Profile (opt-in)
|
|
351
|
+
|
|
352
|
+
Council is an external advisory boundary for ambiguous or high-risk work. It is
|
|
353
|
+
not a model provider, executor, verifier, approval, or replacement for Direct.
|
|
354
|
+
The Core prepares a deterministic request, validates and stores returned bytes,
|
|
355
|
+
and keeps any proposed choice behind a human Decision:
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
pcl --json profile list
|
|
359
|
+
pcl --json profile prepare council.discovery --target task:T-0001 --brief E-0001 \
|
|
360
|
+
--output /tmp/council-request.json
|
|
361
|
+
pcl --json profile fixture-run --request /tmp/council-request.json --status completed \
|
|
362
|
+
--output-dir /tmp/council-output
|
|
363
|
+
pcl --json profile ingest --request /tmp/council-request.json \
|
|
364
|
+
--bundle /tmp/council-output/profile-output-bundle.json --dry-run
|
|
365
|
+
pcl --json profile ingest --request /tmp/council-request.json \
|
|
366
|
+
--bundle /tmp/council-output/profile-output-bundle.json
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Real network or paid execution is outside Core and requires a hash-bound human
|
|
370
|
+
authorization. `pcl profile authorize` only emits an authorized request; it
|
|
371
|
+
never runs a provider. Revoke an authorization through the governed CLI, never
|
|
372
|
+
by editing SQLite:
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
pcl --json profile authorize --revoke EV-XXXXXXXXXXXX --actor "human:owner" \
|
|
376
|
+
--recorded-by "agent:codex" --source-kind cockpit \
|
|
377
|
+
--source-ref "cockpit:<task-id>" --reason "Withdraw provider scope"
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
See [docs/council-profile.md](docs/council-profile.md) for the operator flow,
|
|
381
|
+
privacy boundary, status handling, and adoption constraints.
|
|
382
|
+
|
|
292
383
|
## Evidence Sets
|
|
293
384
|
|
|
294
385
|
Use `evidence-set/v1` when one passing artifact is not enough and the target
|
|
@@ -509,10 +600,14 @@ pcl report run --root /tmp/pcl-demo WR-0001
|
|
|
509
600
|
pcl report feature --root /tmp/pcl-demo F-0001
|
|
510
601
|
pcl report defect --root /tmp/pcl-demo D-0001
|
|
511
602
|
pcl report validation --root /tmp/pcl-demo --strict
|
|
603
|
+
pcl report skill-usage --since 2026-07-01 --json
|
|
512
604
|
pcl render --root /tmp/pcl-demo
|
|
513
605
|
```
|
|
514
606
|
|
|
515
|
-
|
|
607
|
+
Entity and validation reports are written to `.project-loop/reports/`.
|
|
608
|
+
`report skill-usage` is read-only and prints its privacy-safe aggregate to
|
|
609
|
+
stdout unless `--output` is explicit; see [Local Skill usage report](docs/skill-usage-report.md).
|
|
610
|
+
The dashboard writes:
|
|
516
611
|
|
|
517
612
|
```text
|
|
518
613
|
.project-loop/dashboard/dashboard-data.json
|
|
@@ -527,6 +622,17 @@ flag, `pcl render` reads `dashboard.locale` from `pcl.yaml` and then falls back
|
|
|
527
622
|
to English. The locale affects only `dashboard.html`; `dashboard-data.json`
|
|
528
623
|
keys and values stay English for agents and integrations.
|
|
529
624
|
|
|
625
|
+
The dashboard opens with a simple operator view: **Now, Done, Next, Human
|
|
626
|
+
needed, and Risks**. `Done` lists only evidence-backed terminal records; it does
|
|
627
|
+
not turn a status label into a success claim. Counters, commands, queues, and
|
|
628
|
+
entity tables remain available under **Detailed Project Loop information**.
|
|
629
|
+
|
|
630
|
+
Agents should render routinely but present the dashboard only after plan
|
|
631
|
+
approval, at a major milestone, when a human decision blocks progress, and
|
|
632
|
+
after goal closure. When the host provides a visual or file panel, the agent
|
|
633
|
+
opens it and explains what to review; otherwise it provides the generated path.
|
|
634
|
+
The human should not need to remember when to ask for the dashboard.
|
|
635
|
+
|
|
530
636
|
If validation fails or generated artifacts look stale, use [docs/recovery-playbook.md](docs/recovery-playbook.md) before continuing normal work.
|
|
531
637
|
|
|
532
638
|
## Example Projects
|
|
@@ -1,22 +1,76 @@
|
|
|
1
1
|
# Project Loop Harness
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> A local, model-neutral control plane that turns an agent's “done” into
|
|
4
|
+
> reviewable Evidence, verification status, residual risk, and a resumable next
|
|
5
|
+
> step.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
## Understand it in 30 seconds
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
Coding agents are good at producing changes. They are less reliable at
|
|
10
|
+
remembering project state, proving completion, stopping at human decisions, and
|
|
11
|
+
handing work to another session or model.
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
Project Loop Harness (`pcl`) gives Codex, Claude Code, and similar agents a
|
|
14
|
+
shared local state machine:
|
|
15
|
+
|
|
16
|
+
- SQLite keeps current state; JSONL keeps an auditable event projection.
|
|
17
|
+
- Tests, artifacts, reviews, and completion packets preserve what “done” means.
|
|
18
|
+
- Agents continue routine safe work; humans are asked only for genuine product,
|
|
19
|
+
permission, security, destructive, or external-service decisions.
|
|
20
|
+
- The runtime does not call an LLM and does not depend on one agent vendor.
|
|
21
|
+
|
|
22
|
+
It is designed for people coordinating multiple coding agents, not as another
|
|
23
|
+
single-agent chat wrapper.
|
|
24
|
+
|
|
25
|
+
## Get first value in five minutes
|
|
26
|
+
|
|
27
|
+
### One-time operator setup
|
|
28
|
+
|
|
29
|
+
Install the runtime, inspect the adoption plan, and initialize the repository:
|
|
10
30
|
|
|
11
31
|
```bash
|
|
12
32
|
pipx install project-loop-harness
|
|
13
|
-
|
|
14
|
-
pcl --
|
|
33
|
+
cd /path/to/your-project
|
|
34
|
+
pcl init --dry-run --json
|
|
35
|
+
pcl init
|
|
15
36
|
```
|
|
16
37
|
|
|
38
|
+
`pcl init` retains existing `AGENTS.md`, `CLAUDE.md`, and `.gitignore` content
|
|
39
|
+
and appends its marked instruction block once. It also preserves an existing
|
|
40
|
+
`pcl.yaml` by default. `--force` can replace generated templates such as
|
|
41
|
+
`pcl.yaml`, workflows, the bundled Skill, and dashboard files; it does not
|
|
42
|
+
replace existing project-instruction content. See the
|
|
43
|
+
[Adoption Guide](docs/adoption-guide.md) for the exact file boundary.
|
|
44
|
+
|
|
45
|
+
### After setup, tell the agent the outcome you want
|
|
46
|
+
|
|
47
|
+
Copy this into Cockpit, Codex, Claude Code, or another coding-agent session:
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
Read AGENTS.md, CLAUDE.md if present, and pcl.yaml. Use the Project Control
|
|
51
|
+
Loop. Start this goal: <describe the outcome>. Continue every agent-safe next
|
|
52
|
+
action, run the configured checks, preserve evidence, emit a completion packet,
|
|
53
|
+
and close the goal. Do not ask me to run routine pcl commands. Stop only for a
|
|
54
|
+
genuine human decision or external blocker.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The agent owns the routine `pcl start → implementation → finish → close` flow.
|
|
58
|
+
The operator uses the CLI during setup or deliberate maintenance, not to
|
|
59
|
+
manually advance every task.
|
|
60
|
+
|
|
61
|
+
The project remains local-only by default. No telemetry, provider call, cloud
|
|
62
|
+
sync, or automatic GitHub write is enabled by initialization.
|
|
63
|
+
|
|
64
|
+
## Install and inspect in more detail
|
|
65
|
+
|
|
17
66
|
Use `python -m pip install project-loop-harness` when installing inside a
|
|
18
67
|
project-specific virtual environment or CI job instead of exposing the command
|
|
19
|
-
globally.
|
|
68
|
+
globally. Confirm the installed runtime with:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
pcl --version
|
|
72
|
+
pcl --help
|
|
73
|
+
```
|
|
20
74
|
|
|
21
75
|
For unreleased changes, install from a pinned GitHub tag or commit:
|
|
22
76
|
|
|
@@ -51,6 +105,10 @@ advisory warning alongside normal harness health checks. Set
|
|
|
51
105
|
Then ask your coding agent to read `AGENTS.md`, `CLAUDE.md` if present, and
|
|
52
106
|
`pcl.yaml`, run `pcl next --json`, and follow the next safe harness action.
|
|
53
107
|
|
|
108
|
+
Compatibility promises for JSON contracts, typed errors, migrations, and
|
|
109
|
+
internal surfaces are documented in the
|
|
110
|
+
[Alpha Stability Policy](docs/stability-policy.md).
|
|
111
|
+
|
|
54
112
|
## Mental Model
|
|
55
113
|
|
|
56
114
|
```text
|
|
@@ -255,6 +313,39 @@ resolution as separate hash-bound Evidence. Task context, completion packets,
|
|
|
255
313
|
and resume handoffs expose additive references without rewriting historical
|
|
256
314
|
artifacts.
|
|
257
315
|
|
|
316
|
+
## Council Profile (opt-in)
|
|
317
|
+
|
|
318
|
+
Council is an external advisory boundary for ambiguous or high-risk work. It is
|
|
319
|
+
not a model provider, executor, verifier, approval, or replacement for Direct.
|
|
320
|
+
The Core prepares a deterministic request, validates and stores returned bytes,
|
|
321
|
+
and keeps any proposed choice behind a human Decision:
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
pcl --json profile list
|
|
325
|
+
pcl --json profile prepare council.discovery --target task:T-0001 --brief E-0001 \
|
|
326
|
+
--output /tmp/council-request.json
|
|
327
|
+
pcl --json profile fixture-run --request /tmp/council-request.json --status completed \
|
|
328
|
+
--output-dir /tmp/council-output
|
|
329
|
+
pcl --json profile ingest --request /tmp/council-request.json \
|
|
330
|
+
--bundle /tmp/council-output/profile-output-bundle.json --dry-run
|
|
331
|
+
pcl --json profile ingest --request /tmp/council-request.json \
|
|
332
|
+
--bundle /tmp/council-output/profile-output-bundle.json
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Real network or paid execution is outside Core and requires a hash-bound human
|
|
336
|
+
authorization. `pcl profile authorize` only emits an authorized request; it
|
|
337
|
+
never runs a provider. Revoke an authorization through the governed CLI, never
|
|
338
|
+
by editing SQLite:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
pcl --json profile authorize --revoke EV-XXXXXXXXXXXX --actor "human:owner" \
|
|
342
|
+
--recorded-by "agent:codex" --source-kind cockpit \
|
|
343
|
+
--source-ref "cockpit:<task-id>" --reason "Withdraw provider scope"
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
See [docs/council-profile.md](docs/council-profile.md) for the operator flow,
|
|
347
|
+
privacy boundary, status handling, and adoption constraints.
|
|
348
|
+
|
|
258
349
|
## Evidence Sets
|
|
259
350
|
|
|
260
351
|
Use `evidence-set/v1` when one passing artifact is not enough and the target
|
|
@@ -475,10 +566,14 @@ pcl report run --root /tmp/pcl-demo WR-0001
|
|
|
475
566
|
pcl report feature --root /tmp/pcl-demo F-0001
|
|
476
567
|
pcl report defect --root /tmp/pcl-demo D-0001
|
|
477
568
|
pcl report validation --root /tmp/pcl-demo --strict
|
|
569
|
+
pcl report skill-usage --since 2026-07-01 --json
|
|
478
570
|
pcl render --root /tmp/pcl-demo
|
|
479
571
|
```
|
|
480
572
|
|
|
481
|
-
|
|
573
|
+
Entity and validation reports are written to `.project-loop/reports/`.
|
|
574
|
+
`report skill-usage` is read-only and prints its privacy-safe aggregate to
|
|
575
|
+
stdout unless `--output` is explicit; see [Local Skill usage report](docs/skill-usage-report.md).
|
|
576
|
+
The dashboard writes:
|
|
482
577
|
|
|
483
578
|
```text
|
|
484
579
|
.project-loop/dashboard/dashboard-data.json
|
|
@@ -493,6 +588,17 @@ flag, `pcl render` reads `dashboard.locale` from `pcl.yaml` and then falls back
|
|
|
493
588
|
to English. The locale affects only `dashboard.html`; `dashboard-data.json`
|
|
494
589
|
keys and values stay English for agents and integrations.
|
|
495
590
|
|
|
591
|
+
The dashboard opens with a simple operator view: **Now, Done, Next, Human
|
|
592
|
+
needed, and Risks**. `Done` lists only evidence-backed terminal records; it does
|
|
593
|
+
not turn a status label into a success claim. Counters, commands, queues, and
|
|
594
|
+
entity tables remain available under **Detailed Project Loop information**.
|
|
595
|
+
|
|
596
|
+
Agents should render routinely but present the dashboard only after plan
|
|
597
|
+
approval, at a major milestone, when a human decision blocks progress, and
|
|
598
|
+
after goal closure. When the host provides a visual or file panel, the agent
|
|
599
|
+
opens it and explains what to review; otherwise it provides the generated path.
|
|
600
|
+
The human should not need to remember when to ask for the dashboard.
|
|
601
|
+
|
|
496
602
|
If validation fails or generated artifacts look stale, use [docs/recovery-playbook.md](docs/recovery-playbook.md) before continuing normal work.
|
|
497
603
|
|
|
498
604
|
## Example Projects
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 0154: Profile boundary ADR and proposal contract freeze
|
|
2
|
+
|
|
3
|
+
- **Status:** Done; ADR accepted by human owner on 2026-07-12
|
|
4
|
+
- **Milestone:** v0.5.0 Council Profile
|
|
5
|
+
- **Priority:** P0
|
|
6
|
+
- **Size:** M
|
|
7
|
+
- **Dependencies:** 0153b; human Accept/Modify/Reject of the Profile boundary
|
|
8
|
+
- **DB schema:** no change
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
Freeze the model-independent PLH/external-runner boundary and the seven
|
|
13
|
+
artifact shapes before adding runtime Profile behavior.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
- Add ADR-005 and the Council proposal under `docs/proposals/council-profile/`.
|
|
18
|
+
- Add seven proposal schemas plus canonical positive and targeted negative
|
|
19
|
+
fixtures outside the runtime package.
|
|
20
|
+
- Resolve the unshipped `decision-proposal/v0` shape conflict in the integrated
|
|
21
|
+
roadmap and update its example/references atomically.
|
|
22
|
+
- Record canonical JSON/digest, status, path, size, and cross-reference rules.
|
|
23
|
+
- Define request-basis digest and embedded `approval-provenance/v1` binding for
|
|
24
|
+
paid/network authorization without a circular request digest.
|
|
25
|
+
- Freeze exact request-basis exclusions for generated time and context receipt
|
|
26
|
+
age fields while retaining receipt timestamps, source refs, and hashes.
|
|
27
|
+
- Define project fingerprint inputs and confirm only the digest is emitted.
|
|
28
|
+
- Define how `claim-set/v0` classes map to normal Evidence, Verification,
|
|
29
|
+
Decision, Work Brief, residual risk, and completion-packet boundaries.
|
|
30
|
+
- Record the terminology contract: route profile, runner Profile ID, and role
|
|
31
|
+
profile use distinct JSON fields, help text, and error language.
|
|
32
|
+
- Record that MVP is v0.5.0, built-in-only, schema 8, and strict-human-gated.
|
|
33
|
+
|
|
34
|
+
## Invariants
|
|
35
|
+
|
|
36
|
+
- No runtime Profile command, provider code, network, credential, external
|
|
37
|
+
execution, DB migration, or state mutation.
|
|
38
|
+
- No two incompatible shapes remain documented under one contract version.
|
|
39
|
+
- Model judgment is never deterministic proof.
|
|
40
|
+
|
|
41
|
+
## Acceptance
|
|
42
|
+
|
|
43
|
+
1. ADR has an explicit human outcome.
|
|
44
|
+
2. Seven schemas are valid JSON, declare Draft 2020-12, and have canonical
|
|
45
|
+
examples plus a validation transcript. Runtime conformance is implemented
|
|
46
|
+
by 0155 standard-library validators; no dependency is added.
|
|
47
|
+
3. Negative fixtures cover unknown fields, unsupported versions, bad status,
|
|
48
|
+
bad references, and invalid digest/path declarations.
|
|
49
|
+
4. The old decision-proposal draft has a visible supersession note.
|
|
50
|
+
5. Authorized-policy fixtures prove any semantic request change invalidates the
|
|
51
|
+
approval binding.
|
|
52
|
+
6. Candidate and authorized requests built at different wall-clock times have
|
|
53
|
+
the same basis digest when semantic state is unchanged.
|
|
54
|
+
7. Claim-to-proof and terminology mappings have no implicit promotion path.
|
|
55
|
+
8. `ruff check .` and full `pytest` pass without dependency changes.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# 0155: Profile contract runtime and built-in registry
|
|
2
|
+
|
|
3
|
+
- **Status:** Done
|
|
4
|
+
- **Milestone:** v0.5.0 Council Profile
|
|
5
|
+
- **Priority:** P0
|
|
6
|
+
- **Size:** L
|
|
7
|
+
- **Dependencies:** 0154 contract freeze
|
|
8
|
+
- **DB schema:** no change
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
Package standard-library validators and expose a deterministic, non-executable
|
|
13
|
+
registry for the built-in `council.discovery` manifest.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
- Add one current-convention validator module and packaged schema per contract.
|
|
18
|
+
- Export contracts through `src/pcl/contracts/__init__.py`.
|
|
19
|
+
- Add `src/pcl/profiles.py` and a package-data built-in manifest.
|
|
20
|
+
- Add `pcl profile list/show/validate` in text and JSON modes.
|
|
21
|
+
- Use `route_profile`, `runner_profile_id`, and `role_profile` consistently in
|
|
22
|
+
public JSON/help/errors; snapshot help text that explains the distinction.
|
|
23
|
+
- Reject unknown keys/versions, duplicate IDs, invalid capabilities, missing
|
|
24
|
+
package data, and executable hooks.
|
|
25
|
+
- Enforce mediated approval recording: an agent/system recorder of a human
|
|
26
|
+
action requires conversation/Cockpit source provenance and a non-empty
|
|
27
|
+
source ref.
|
|
28
|
+
- Enforce the frozen authorization data-class mapping and provider/cost scope;
|
|
29
|
+
JSON Schema shape conformance alone is insufficient.
|
|
30
|
+
|
|
31
|
+
## Invariants
|
|
32
|
+
|
|
33
|
+
- Built-in only; arbitrary filesystem discovery is unsupported.
|
|
34
|
+
- Manifest is data-only and cannot import or invoke code.
|
|
35
|
+
- No provider SDK, runtime dependency, state mutation, or hidden network call.
|
|
36
|
+
- Discovery and finding order are deterministic.
|
|
37
|
+
|
|
38
|
+
## Acceptance
|
|
39
|
+
|
|
40
|
+
1. Canonical and negative contract fixtures pass manual validators.
|
|
41
|
+
2. list/show/validate have stable JSON and text snapshots.
|
|
42
|
+
3. Wheel/sdist contain every schema and the manifest.
|
|
43
|
+
4. Clean-wheel commands run without source checkout or network.
|
|
44
|
+
5. Existing CLI snapshots and full test suite pass.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 0156: Deterministic read-only Profile request preparation
|
|
2
|
+
|
|
3
|
+
- **Status:** Done
|
|
4
|
+
- **Milestone:** v0.5.0 Council Profile
|
|
5
|
+
- **Priority:** P0
|
|
6
|
+
- **Size:** L
|
|
7
|
+
- **Dependencies:** 0155
|
|
8
|
+
- **DB schema:** no change
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
Build `profile-run-request/v1` from current PLH state without invoking a runner
|
|
13
|
+
or mutating project state.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
- Add `pcl profile prepare <id> --target type:ID [--brief E-ID] [--output]`.
|
|
18
|
+
- Resolve one healthy Work Brief candidate, effective route, adaptive policy,
|
|
19
|
+
context payload, and linked Evidence hashes.
|
|
20
|
+
- Allow an unapproved Brief for Discovery but label it; require `--brief` when
|
|
21
|
+
candidates are ambiguous.
|
|
22
|
+
- Bind manifest, project fingerprint, target, Brief, route/override, policy,
|
|
23
|
+
context, limits, data policy, and request digest.
|
|
24
|
+
- Compute a stable request-basis digest. Without matching authorization,
|
|
25
|
+
paid/network policy returns a candidate request plus `human_required` and
|
|
26
|
+
does not claim permission.
|
|
27
|
+
- Normalize generated time and receipt-age presentation fields using the exact
|
|
28
|
+
0154 pointer list while retaining underlying receipts and source hashes.
|
|
29
|
+
- Compute the project fingerprint from local root/config/schema/Git inputs and
|
|
30
|
+
emit only the digest plus project basename.
|
|
31
|
+
|
|
32
|
+
## Invariants
|
|
33
|
+
|
|
34
|
+
- No SQLite, event, outbox, Evidence, report, dashboard, or route mutation.
|
|
35
|
+
- `--output` writes only the named request file.
|
|
36
|
+
- No absolute project root, dashboard HTML, database, secret, or transcript.
|
|
37
|
+
- Route mismatch fails and points to existing audited override commands.
|
|
38
|
+
|
|
39
|
+
## Acceptance
|
|
40
|
+
|
|
41
|
+
1. Reverse-order data reads and different wall-clock execution produce the same
|
|
42
|
+
basis digest when semantic state is unchanged.
|
|
43
|
+
2. Before/after DB, JSONL, Evidence, report, and dashboard hashes are unchanged.
|
|
44
|
+
3. Missing/ambiguous Brief, route mismatch, approval, and context-budget errors
|
|
45
|
+
are stable and repairable.
|
|
46
|
+
4. Root path and secret sentinels are absent.
|
|
47
|
+
5. Paid/network policy cannot become allowed without a matching authorization
|
|
48
|
+
event; the offline path remains fully usable before 0159.
|
|
49
|
+
6. Targeted and full suites pass.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# 0157: Profile bundle validation and dry-run planner
|
|
2
|
+
|
|
3
|
+
- **Status:** Done
|
|
4
|
+
- **Milestone:** v0.5.0 Council Profile
|
|
5
|
+
- **Priority:** P0
|
|
6
|
+
- **Size:** L
|
|
7
|
+
- **Dependencies:** 0156
|
|
8
|
+
- **DB schema:** no change
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
Validate an externally produced bundle and return a deterministic mutation plan
|
|
13
|
+
without copying files or touching PLH state.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
- Add `pcl profile ingest --request ... --bundle ... --dry-run`.
|
|
18
|
+
- Enforce parse/size limits before schema validation and reject duplicate keys.
|
|
19
|
+
- Validate request/project/target/manifest binding, bundle digest/status,
|
|
20
|
+
listed paths, parents, symlinks, case-fold collisions, files, sizes, hashes,
|
|
21
|
+
contracts, and cross-references.
|
|
22
|
+
- Return exact planned Evidence/link/Decision/event counts and next action.
|
|
23
|
+
- Add valid status fixtures and a comprehensive invalid corpus.
|
|
24
|
+
|
|
25
|
+
## Invariants
|
|
26
|
+
|
|
27
|
+
- Dry-run is entirely read-only and ignores unlisted neighboring files.
|
|
28
|
+
- Verification-plan commands are data and are never executed.
|
|
29
|
+
- Findings and repair guidance are stable and deterministically ordered.
|
|
30
|
+
- `partial`, `budget_exhausted`, and `failed` are never execution-ready.
|
|
31
|
+
|
|
32
|
+
## Acceptance
|
|
33
|
+
|
|
34
|
+
1. Valid fixtures yield stable plans and next actions.
|
|
35
|
+
2. Every invalid fixture fails with zero filesystem/DB/event mutation.
|
|
36
|
+
3. Path traversal, absolute/UNC/drive paths, symlinks, case collisions,
|
|
37
|
+
hash/size drift, bad status, and cross-reference errors are covered.
|
|
38
|
+
4. Bundle/request limits are enforced before expensive parsing/hashing.
|
|
39
|
+
5. Targeted and full suites pass.
|
|
40
|
+
|
|
41
|
+
## Implementation evidence
|
|
42
|
+
|
|
43
|
+
- `src/pcl/profile_ingest.py` validates request/bundle bindings, bounded strict
|
|
44
|
+
JSON, listed artifact bytes, safe paths, contracts, and cross-references.
|
|
45
|
+
- `pcl profile ingest --request ... --bundle ... --dry-run` returns a stable,
|
|
46
|
+
exact mutation plan without copying files or executing runner/verification
|
|
47
|
+
commands.
|
|
48
|
+
- `tests/fixtures/profile_bundle/cases.json` and
|
|
49
|
+
`tests/test_profile_ingest_dry_run.py` cover all six statuses and the invalid
|
|
50
|
+
corpus, with before/after state snapshots.
|
|
51
|
+
- Verification after Claude Fable review fixes: `ruff check .` and `pytest -q`
|
|
52
|
+
(912 passed, 1 skipped).
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# 0158: Atomic Profile bundle Evidence ingest and idempotency
|
|
2
|
+
|
|
3
|
+
- **Status:** Done
|
|
4
|
+
- **Milestone:** v0.5.0 Council Profile
|
|
5
|
+
- **Priority:** P0
|
|
6
|
+
- **Size:** L
|
|
7
|
+
- **Dependencies:** 0157
|
|
8
|
+
- **DB schema:** remain 8; stop if a migration becomes necessary
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
Persist one validated external bundle as immutable target-linked Evidence with
|
|
13
|
+
an outbox event, zero partial mutation, and exact replay idempotency.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
- Add a dedicated directory-bundle staging/copy service for validated external
|
|
18
|
+
inputs without changing the existing permissive adhoc outside-root policy.
|
|
19
|
+
- Re-hash staged bytes before beginning the DB mutation.
|
|
20
|
+
- Insert one `profile_output_bundle` Evidence, target link, and
|
|
21
|
+
`profile_output_ingested` event in one transaction.
|
|
22
|
+
- Store profile/request/bundle metadata in the immutable manifest and event.
|
|
23
|
+
- Implement exact replay and same-ID/different-digest conflict behavior.
|
|
24
|
+
- Require `--accept-failed --summary` to persist a failed bundle.
|
|
25
|
+
- Extend `audit._check_evidence` to detect finalized unreferenced Profile bundle
|
|
26
|
+
directories left by rename-before-commit crashes and return report/quarantine
|
|
27
|
+
guidance without automatic deletion.
|
|
28
|
+
|
|
29
|
+
## Invariants
|
|
30
|
+
|
|
31
|
+
- Rejected or interrupted pre-commit input leaves zero rows/events and no
|
|
32
|
+
staging residue.
|
|
33
|
+
- Existing Evidence semantics and adhoc path restrictions do not weaken.
|
|
34
|
+
- Stored artifacts are immutable and only listed files are authoritative.
|
|
35
|
+
- JSONL projection remains recoverable through the existing outbox/audit path.
|
|
36
|
+
|
|
37
|
+
## Acceptance
|
|
38
|
+
|
|
39
|
+
1. A valid non-human bundle adds exactly one Evidence, one target link, and one
|
|
40
|
+
ingest event.
|
|
41
|
+
2. Exact replay returns original IDs with zero mutation; conflicts fail.
|
|
42
|
+
3. Crash injection covers copy, pre-rename, post-rename/pre-commit, and outbox.
|
|
43
|
+
4. Audit detects Profile temp files and finalized unreferenced bundle
|
|
44
|
+
directories; cleanup remains explicit and never guesses durable state.
|
|
45
|
+
5. Source, wheel, and sdist ingest tests pass without migration/dependency.
|
|
46
|
+
|
|
47
|
+
## Implementation evidence
|
|
48
|
+
|
|
49
|
+
- `src/pcl/profile_bundle_store.py` re-validates staged bytes, copies only
|
|
50
|
+
listed artifacts, atomically publishes one immutable directory, and commits
|
|
51
|
+
one Evidence/link/event/outbox transaction.
|
|
52
|
+
- Exact replay returns the original Evidence/event IDs; same bundle ID with a
|
|
53
|
+
different digest fails closed.
|
|
54
|
+
- Failed bundles require `--accept-failed --summary`; `needs_human` remains
|
|
55
|
+
blocked until task 0159 adds Decision handling.
|
|
56
|
+
- `audit._check_evidence` validates stored hashes and reports staging/finalized
|
|
57
|
+
orphan directories with explicit quarantine/report guidance only.
|
|
58
|
+
- Four process-kill fault points cover copy, pre-rename,
|
|
59
|
+
post-rename/pre-commit, and post-outbox/pre-commit behavior.
|
|
60
|
+
- Verification: `ruff check .`; targeted source/wheel/sdist tests 46 passed;
|
|
61
|
+
full suite 922 passed, 1 skipped.
|