project-loop-harness 0.4.0__tar.gz → 0.4.3__tar.gz

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