oacp-cli 0.4.6__tar.gz → 0.5.1__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 (483) hide show
  1. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/CHANGELOG.md +48 -0
  2. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/PKG-INFO +13 -16
  3. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/QUICKSTART.md +16 -10
  4. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/README.md +11 -14
  5. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/SPEC.md +2 -3
  6. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/doctor.md +5 -1
  7. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/memory-context.md +2 -2
  8. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/autonomy.md +148 -16
  9. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/inbox_outbox.md +15 -35
  10. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/message_signing.md +2 -2
  11. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/org_memory.md +210 -48
  12. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/runtime_capabilities.md +5 -3
  13. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/session_init.md +19 -9
  14. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/README.md +5 -4
  15. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/oacp/cli.py +120 -12
  16. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/pyproject.toml +3 -13
  17. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/_oacp_constants.py +1 -1
  18. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/autonomy_gate.py +1 -1
  19. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/claude_envelope_hook.py +3 -3
  20. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/codex_session_init.py +16 -52
  21. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/envelope_compiler.py +446 -37
  22. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/finalize_autonomy_record.py +279 -17
  23. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/oacp_doctor.py +22 -646
  24. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/preflight.py +121 -6
  25. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/record_autonomy_outcome.py +1 -1
  26. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/send_inbox_message.py +2 -2
  27. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/setup_runtime.py +254 -61
  28. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/write_event.py +1 -1
  29. oacp_cli-0.5.1/tests/conformance/autonomy/records/cancelled_missing_actor.yaml +45 -0
  30. oacp_cli-0.5.1/tests/conformance/autonomy/records/clean_terminal_cancelled.yaml +46 -0
  31. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/expected_findings.yaml +7 -0
  32. oacp_cli-0.5.1/tests/conformance/autonomy/records/invalid_live_clock_adjustment.yaml +54 -0
  33. oacp_cli-0.5.1/tests/conformance/autonomy/records/pause_and_clock_adjustment.yaml +85 -0
  34. oacp_cli-0.5.1/tests/conformance/autonomy/records/two_clock_adjustments.yaml +100 -0
  35. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/README.md +24 -2
  36. oacp_cli-0.5.1/tests/conformance/envelope/expected/adapter_detection_failed.yaml +27 -0
  37. oacp_cli-0.5.1/tests/conformance/envelope/expected/adapter_expected_missing.yaml +28 -0
  38. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +8 -0
  39. oacp_cli-0.5.1/tests/conformance/envelope/expected/unsupported_runtime_codex.yaml +27 -0
  40. oacp_cli-0.5.1/tests/conformance/memory_layout/README.md +23 -0
  41. oacp_cli-0.5.1/tests/conformance/memory_layout/canonical_memory_gitignore.txt +9 -0
  42. oacp_cli-0.5.1/tests/conformance/memory_layout/layout.yaml +71 -0
  43. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_autonomy_conformance_fixtures.py +1 -1
  44. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_autonomy_gate.py +1 -1
  45. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_claude_envelope_hook.py +1 -1
  46. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_codex_session_init.py +18 -30
  47. oacp_cli-0.5.1/tests/test_envelope_compiler.py +1142 -0
  48. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_envelope_conformance_fixtures.py +56 -3
  49. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_envelope_public_admission.py +20 -3
  50. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_finalize_autonomy_record.py +333 -0
  51. oacp_cli-0.5.1/tests/test_memory_layout_fixture.py +207 -0
  52. oacp_cli-0.5.1/tests/test_memory_shim.py +135 -0
  53. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_cli.py +111 -6
  54. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_doctor.py +20 -140
  55. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_package_content.py +100 -5
  56. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_preflight.py +96 -0
  57. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_readme_commands.py +2 -2
  58. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_record_autonomy_outcome.py +2 -1
  59. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_setup_runtime.py +515 -16
  60. oacp_cli-0.4.6/docs/protocol/cross_runtime_sync.md +0 -117
  61. oacp_cli-0.4.6/scripts/init_org_memory.py +0 -150
  62. oacp_cli-0.4.6/scripts/memory_archive_common.py +0 -67
  63. oacp_cli-0.4.6/scripts/memory_cli.py +0 -193
  64. oacp_cli-0.4.6/scripts/memory_sync.py +0 -584
  65. oacp_cli-0.4.6/scripts/promote_to_archive.py +0 -106
  66. oacp_cli-0.4.6/scripts/restore_from_archive.py +0 -96
  67. oacp_cli-0.4.6/scripts/retention.py +0 -407
  68. oacp_cli-0.4.6/templates/org-memory/decisions.md +0 -5
  69. oacp_cli-0.4.6/templates/org-memory/events/.gitkeep +0 -0
  70. oacp_cli-0.4.6/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -11
  71. oacp_cli-0.4.6/templates/org-memory/recent.md +0 -17
  72. oacp_cli-0.4.6/templates/org-memory/rules.md +0 -5
  73. oacp_cli-0.4.6/tests/conformance/org_memory/README.md +0 -22
  74. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/expected.yaml +0 -5
  75. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/.hidden/2026/08/20260825-alice-abc12345.md +0 -14
  76. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -14
  77. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-ABCD.md +0 -14
  78. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825_alice_abc12345.md +0 -14
  79. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/09/20260825-alice-def12345.md +0 -14
  80. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/20260825-alice-abc12345.md +0 -14
  81. oacp_cli-0.4.6/tests/conformance/org_memory/cases/empty_store/expected.yaml +0 -2
  82. oacp_cli-0.4.6/tests/conformance/org_memory/cases/empty_store/org-memory/debriefs/.gitkeep +0 -0
  83. oacp_cli-0.4.6/tests/conformance/org_memory/cases/missing_debriefs_dir/expected.yaml +0 -5
  84. oacp_cli-0.4.6/tests/conformance/org_memory/cases/missing_debriefs_dir/org-memory/recent.md +0 -1
  85. oacp_cli-0.4.6/tests/conformance/org_memory/cases/staging_artifact/expected.yaml +0 -5
  86. oacp_cli-0.4.6/tests/conformance/org_memory/cases/staging_artifact/org-memory/debriefs/demo-project/2026/08/.stage.20260825-alice-77xx88yy.md.a1b2c3 +0 -1
  87. oacp_cli-0.4.6/tests/conformance/org_memory/cases/staging_artifact/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -14
  88. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/expected.yaml +0 -2
  89. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/.gitkeep +0 -0
  90. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/Demo_Project/2026/08/20260825-bob-ops-9f00aa11.md +0 -14
  91. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -14
  92. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/demo.project/2026/07/20260701-Alice_2.dev-00aa11bb.md +0 -14
  93. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/other-project/2026/12/20261203-bob-9e0d44aa.md +0 -14
  94. oacp_cli-0.4.6/tests/test_envelope_compiler.py +0 -490
  95. oacp_cli-0.4.6/tests/test_init_org_memory.py +0 -46
  96. oacp_cli-0.4.6/tests/test_memory_archive.py +0 -445
  97. oacp_cli-0.4.6/tests/test_memory_sync.py +0 -331
  98. oacp_cli-0.4.6/tests/test_org_memory_doctor.py +0 -195
  99. oacp_cli-0.4.6/tests/test_retention.py +0 -268
  100. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.gitattributes +0 -0
  101. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.github/workflows/auto-estimate.yml +0 -0
  102. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.github/workflows/ci.yml +0 -0
  103. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.github/workflows/release.yml +0 -0
  104. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.gitignore +0 -0
  105. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/CONTRIBUTING.md +0 -0
  106. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/LICENSE +0 -0
  107. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/Makefile +0 -0
  108. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/SECURITY.md +0 -0
  109. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/from-claude-p.md +0 -0
  110. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/adoption.md +0 -0
  111. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/prompt_caching.md +0 -0
  112. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/setup.md +0 -0
  113. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/unified_skill_spec.md +0 -0
  114. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/versioning.md +0 -0
  115. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/img/oacp-cli-demo.png +0 -0
  116. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/img/oacp-filesystem-tree.png +0 -0
  117. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/img/oacp-fleet-thread.png +0 -0
  118. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/agent_profiles.md +0 -0
  119. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/agent_safety_defaults.md +0 -0
  120. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/credential_scoping.md +0 -0
  121. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/dispatch_states.yaml +0 -0
  122. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/mcp_integration.md +0 -0
  123. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  124. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/packet_states.yaml +0 -0
  125. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/review_loop.md +0 -0
  126. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/skills_manifest.yaml +0 -0
  127. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/task_negotiation.md +0 -0
  128. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/decisions.md +0 -0
  129. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
  130. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
  131. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
  132. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
  133. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
  134. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
  135. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/recent.md +0 -0
  136. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/rules.md +0 -0
  137. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/projects/parcel-api/memory/archive/2026-05-21-csv-export-timeouts.md +0 -0
  138. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
  139. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
  140. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
  141. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
  142. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/quickstart/README.md +0 -0
  143. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/oacp/__init__.py +0 -0
  144. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/oacp/envelope_hook.py +0 -0
  145. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/_oacp_env.py +0 -0
  146. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/add_agent.py +0 -0
  147. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/agent_profile.py +0 -0
  148. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/check_quality_gate.py +0 -0
  149. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/gen_readme_commands.py +0 -0
  150. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/handoff_schema.py +0 -0
  151. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/init_packet.sh +0 -0
  152. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/init_project_workspace.py +0 -0
  153. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/key_cli.py +0 -0
  154. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/message_signing.py +0 -0
  155. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/message_verify.py +0 -0
  156. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/oacp_inbox.py +0 -0
  157. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/oacp_watch.py +0 -0
  158. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/policy_signing.py +0 -0
  159. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/trust_cli.py +0 -0
  160. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/trust_root.py +0 -0
  161. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/update_workspace.sh +0 -0
  162. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/validate_agent_card.py +0 -0
  163. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/validate_message.py +0 -0
  164. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/agent_card.template.yaml +0 -0
  165. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/agent_profile.template.yaml +0 -0
  166. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/agent_status.template.yaml +0 -0
  167. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/checkpoint.template.md +0 -0
  168. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/claude/agents/role_agent.template.md +0 -0
  169. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/claude/rules/guardrail.template.md +0 -0
  170. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/findings_packet.template.yaml +0 -0
  171. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/github_actions_quality_gate.yaml +0 -0
  172. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/guardrails/coding_standards.template.md +0 -0
  173. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/guardrails/safe_commands.template.md +0 -0
  174. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/guardrails/secrets_rules.template.md +0 -0
  175. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/handoff_packet.template.yaml +0 -0
  176. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/inbox_message.template.yaml +0 -0
  177. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/manual_validation.template.md +0 -0
  178. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/merge_decision.template.md +0 -0
  179. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/receiver_config.template.yaml +0 -0
  180. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/review_packet.template.md +0 -0
  181. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/roles/role_baseline.template.md +0 -0
  182. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/roles/role_definition.template.yaml +0 -0
  183. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/runtime_capabilities.yaml +0 -0
  184. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/skills_manifest.template.yaml +0 -0
  185. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/test_packet.template.md +0 -0
  186. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/README.md +0 -0
  187. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
  188. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
  189. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
  190. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
  191. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
  192. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +0 -0
  193. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_conflict.yaml +0 -0
  194. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +0 -0
  195. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_reuse.yaml +0 -0
  196. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +0 -0
  197. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +0 -0
  198. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/review_live_head_mismatch.yaml +0 -0
  199. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/review_live_head_prefix.yaml +0 -0
  200. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
  201. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_addressed_accepted.yaml +0 -0
  202. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_grant_addressed_types.yaml +0 -0
  203. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_grant_approved.yaml +0 -0
  204. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_grant_denied_later.yaml +0 -0
  205. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_grant_denied_postmessage.yaml +0 -0
  206. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
  207. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
  208. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
  209. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
  210. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
  211. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
  212. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
  213. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
  214. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
  215. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
  216. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
  217. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +0 -0
  218. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
  219. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +0 -0
  220. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +0 -0
  221. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +0 -0
  222. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +0 -0
  223. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +0 -0
  224. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +0 -0
  225. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
  226. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
  227. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
  228. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
  229. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
  230. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
  231. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +0 -0
  232. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
  233. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
  234. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
  235. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
  236. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
  237. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
  238. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
  239. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
  240. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +0 -0
  241. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
  242. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
  243. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
  244. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
  245. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
  246. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
  247. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
  248. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
  249. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
  250. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
  251. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
  252. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
  253. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
  254. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
  255. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
  256. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
  257. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
  258. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
  259. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
  260. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
  261. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/pause_classification_designed.yaml +0 -0
  262. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/pause_classification_mixed.yaml +0 -0
  263. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/pause_classification_undeclared.yaml +0 -0
  264. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/pause_classification_unplanned.yaml +0 -0
  265. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
  266. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
  267. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
  268. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
  269. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_accepted_auto_continues.yaml +0 -0
  270. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_disabled_pauses.yaml +0 -0
  271. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_drift_pauses.yaml +0 -0
  272. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_expired_pauses.yaml +0 -0
  273. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_head_mismatch_records.yaml +0 -0
  274. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_later_round_pauses.yaml +0 -0
  275. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_missing_approval_pauses.yaml +0 -0
  276. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_prefix_head_records.yaml +0 -0
  277. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_repeated_addressed_round_exceeded.yaml +0 -0
  278. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_revoke_before_processing_pauses.yaml +0 -0
  279. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_revoked_pauses.yaml +0 -0
  280. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
  281. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +0 -0
  282. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
  283. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
  284. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
  285. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
  286. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
  287. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/ledger_replay/corpus.yaml +0 -0
  288. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
  289. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
  290. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
  291. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
  292. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
  293. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
  294. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
  295. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
  296. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/declaration_error_admission.yaml +0 -0
  297. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
  298. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
  299. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
  300. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
  301. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
  302. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
  303. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
  304. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
  305. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
  306. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
  307. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
  308. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
  309. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
  310. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
  311. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
  312. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
  313. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
  314. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
  315. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/pause_classification_designed.yaml +0 -0
  316. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/pause_classification_mixed.yaml +0 -0
  317. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/pause_classification_undeclared.yaml +0 -0
  318. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/pause_classification_unplanned.yaml +0 -0
  319. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
  320. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
  321. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
  322. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
  323. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_addressed_round3.yaml +0 -0
  324. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_cross_pr.yaml +0 -0
  325. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_head_mismatch.yaml +0 -0
  326. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_prefix_head.yaml +0 -0
  327. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_request.yaml +0 -0
  328. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_round4.yaml +0 -0
  329. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_unapproved.yaml +0 -0
  330. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
  331. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
  332. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
  333. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +0 -0
  334. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
  335. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
  336. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
  337. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
  338. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
  339. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
  340. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
  341. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
  342. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
  343. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/README.md +0 -0
  344. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/admission_outcome_replaced_by_clear.yaml +0 -0
  345. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +0 -0
  346. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/breached_empty_fields.yaml +0 -0
  347. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/clean_terminal_done.yaml +0 -0
  348. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/duplicate_live_a.yaml +0 -0
  349. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/duplicate_live_b.yaml +0 -0
  350. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +0 -0
  351. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +0 -0
  352. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +0 -0
  353. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +0 -0
  354. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +0 -0
  355. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +0 -0
  356. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +0 -0
  357. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +0 -0
  358. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +0 -0
  359. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +0 -0
  360. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +0 -0
  361. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/serialized_wave_item.yaml +0 -0
  362. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +0 -0
  363. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +0 -0
  364. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_missing_successor.yaml +0 -0
  365. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_successor_live.yaml +0 -0
  366. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +0 -0
  367. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +0 -0
  368. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
  369. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/configs/malformed.yaml +0 -0
  370. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
  371. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
  372. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
  373. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
  374. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
  375. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
  376. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
  377. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
  378. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
  379. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
  380. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
  381. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
  382. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/README.md +0 -0
  383. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/configs/enforce.yaml +0 -0
  384. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/configs/off.yaml +0 -0
  385. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/configs/warn.yaml +0 -0
  386. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
  387. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
  388. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
  389. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
  390. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
  391. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
  392. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
  393. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
  394. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
  395. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
  396. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
  397. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
  398. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
  399. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/README.md +0 -0
  400. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
  401. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
  402. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
  403. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
  404. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
  405. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
  406. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
  407. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
  408. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
  409. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
  410. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
  411. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
  412. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
  413. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
  414. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
  415. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
  416. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
  417. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
  418. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
  419. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
  420. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
  421. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
  422. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/keys/alice.json +0 -0
  423. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/keys/bob.json +0 -0
  424. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/keys/carol.json +0 -0
  425. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
  426. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
  427. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
  428. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
  429. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
  430. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
  431. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
  432. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
  433. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
  434. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
  435. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
  436. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
  437. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
  438. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
  439. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
  440. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
  441. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
  442. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
  443. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
  444. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
  445. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
  446. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
  447. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
  448. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
  449. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
  450. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
  451. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
  452. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
  453. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/regen_fixtures.py +0 -0
  454. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_add_agent.py +0 -0
  455. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_agent_profile.py +0 -0
  456. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_audit_corpus_boundary.py +0 -0
  457. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_audit_record_conformance.py +0 -0
  458. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_autonomy_ledger_replay.py +0 -0
  459. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_default_envelope.py +0 -0
  460. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_expected_pauses.py +0 -0
  461. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_github_workflows.py +0 -0
  462. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_handoff_schema.py +0 -0
  463. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_inbox_verify.py +0 -0
  464. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_init_project_workspace.py +0 -0
  465. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_intake_conformance.py +0 -0
  466. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_message_signing.py +0 -0
  467. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_message_verify.py +0 -0
  468. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_constants.py +0 -0
  469. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_env.py +0 -0
  470. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_inbox.py +0 -0
  471. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_watch.py +0 -0
  472. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_packaged_status_template.py +0 -0
  473. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_policy_signing.py +0 -0
  474. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_review_loop.py +0 -0
  475. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_send_inbox_message.py +0 -0
  476. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_signing_conformance.py +0 -0
  477. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_spec_version.py +0 -0
  478. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_trust_root.py +0 -0
  479. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_update_workspace.py +0 -0
  480. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_validate_agent_card.py +0 -0
  481. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_validate_message.py +0 -0
  482. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_workspace_discovery.py +0 -0
  483. {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_write_event.py +0 -0
@@ -7,6 +7,52 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.5.1] - 2026-09-11
11
+
12
+ ### Added
13
+
14
+ - Attributed work-clock deductions for multiple excluded intervals, including human-directed time away ([contract](docs/protocol/autonomy.md#threshold-exceeded-checkpoint)).
15
+ - Cancellation receipts that close admitted tasks while preserving partial delivery and pause history ([contract](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
16
+ - Envelope compilation stamps the enforcement it resolved: `hooks` only when the receiver's adapter is present, `none` with a reason otherwise ([contract](docs/protocol/autonomy.md#enforcement-recording)).
17
+
18
+ ### Changed
19
+
20
+ - Protocol contract stamp `spec_version` moves to `0.5.1` ([contract version](docs/protocol/autonomy.md#contract-version)).
21
+ - `oacp retention` no longer prunes: the engine is parked outside the kernel and the subcommand prints where it went until its removal in 0.5.3 ([inbox/outbox](docs/protocol/inbox_outbox.md#message-history-retention)).
22
+ - `oacp write-event` execs `agent-memory event write` when the installed tool serves it, falling back to the bundled script until its removal in 0.5.2 ([README](README.md#commands)).
23
+ - The exec path prints `published:`/`idempotent:` where the bundled script prints `OK:` ([README](README.md#commands)).
24
+ - `oacp session-init --pull-memory` is a no-op that names the memory tool's own SessionStart hook, until its removal in 0.5.3 ([codex](docs/protocol/session_init.md#codex)).
25
+
26
+ ### Fixed
27
+
28
+ - The sync allowlist anchors `.gitignore` and `.oacp-memory-repo` to the home root, matching the memory tool's golden byte for byte ([memory layout](docs/protocol/org_memory.md#the-sync-allowlist)).
29
+ - Preflight's conflict-marker check flags the diff3 `|||||||` base marker ([preflight](scripts/preflight.py)).
30
+
31
+ ## [0.5.0] - 2026-09-09
32
+
33
+ ### Added
34
+
35
+ - Memory-layout conformance fixture pinning the layout grammar and sync allowlist ([fixture](tests/conformance/memory_layout/README.md)).
36
+ - `oacp doctor` reports the installed `agent-memory` version and defers memory-home checks to it ([doctor guide](docs/guides/doctor.md)).
37
+ - Preflight and wheel guards fail when a kernel module or the wheel ships the memory engine ([lean kernel](docs/protocol/org_memory.md#conformance)).
38
+
39
+ ### Changed
40
+
41
+ - The org-memory doc becomes the three-tier memory layout spec the kernel scaffolds against ([memory layout](docs/protocol/org_memory.md#layout)).
42
+ - `oacp memory` and `oacp org-memory` delegate to the `agent-memory` CLI until their removal in 0.5.2 ([README](README.md#commands)).
43
+ - `oacp setup` no longer installs memory hooks and retires the ones it generated; `agent-memory setup` replaces them ([quickstart](QUICKSTART.md)).
44
+ - `oacp session-init --pull-memory` delegates to `agent-memory`, reporting `disabled` when absent ([codex](docs/protocol/session_init.md#codex)).
45
+
46
+ ### Removed
47
+
48
+ - `docs/protocol/cross_runtime_sync.md`; its durable-memory half moved to the layout spec ([layout](docs/protocol/org_memory.md#per-project-tier)).
49
+ - The bundled memory engine and org-memory doctor category, shipped as `agent-memory-cli` ([agent-memory](https://github.com/kiloloop/agent-memory)).
50
+ - `oacp doctor --memory`; the memory home is checked by `agent-memory doctor` ([doctor guide](docs/guides/doctor.md)).
51
+
52
+ ### Fixed
53
+
54
+ - `oacp setup codex` regenerates its managed `SessionStart` hook but never creates one ([codex startup](docs/protocol/session_init.md#codex)).
55
+
10
56
  ## [0.4.6] - 2026-09-05
11
57
 
12
58
  ### Added
@@ -843,6 +889,8 @@ The central debrief store is the headline change: every agent's full end-of-sess
843
889
  - Checkout step in github-release workflow job (#19)
844
890
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
845
891
 
892
+ [0.5.1]: https://github.com/kiloloop/oacp/compare/v0.5.0...v0.5.1
893
+ [0.5.0]: https://github.com/kiloloop/oacp/compare/v0.4.6...v0.5.0
846
894
  [0.4.6]: https://github.com/kiloloop/oacp/compare/v0.4.5...v0.4.6
847
895
  [0.4.5]: https://github.com/kiloloop/oacp/compare/v0.4.4...v0.4.5
848
896
  [0.4.4]: https://github.com/kiloloop/oacp/compare/v0.4.3...v0.4.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: oacp-cli
3
- Version: 0.4.6
3
+ Version: 0.5.1
4
4
  Summary: Open Agent Coordination Protocol CLI for file-based multi-agent workflows
5
5
  Project-URL: Homepage, https://github.com/kiloloop/oacp
6
6
  Project-URL: Repository, https://github.com/kiloloop/oacp
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Topic :: Software Development
22
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
23
  Requires-Python: >=3.9.2
24
- Requires-Dist: pyyaml>=6.0
24
+ Requires-Dist: pyyaml>=6.0.1
25
25
  Provides-Extra: crypto
26
26
  Requires-Dist: cryptography>=50.0.0; extra == 'crypto'
27
27
  Description-Content-Type: text/markdown
@@ -261,14 +261,14 @@ uv tool install .
261
261
  | `oacp agent` | Manage global agent profiles (init, sync, show, list) |
262
262
  | `oacp inbox` | List pending inbox messages |
263
263
  | `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
264
- | `oacp retention` | Prune project message history by age and count |
265
- | `oacp memory` | Archive, restore, or sync memory files |
264
+ | `oacp retention` | Parked: engine archived outside the kernel; advisory shim until 0.5.3 |
265
+ | `oacp memory` | Run agent-memory (sync, archive, restore); shim until 0.5.2 |
266
266
  | `oacp session-init` | Verify Codex startup inputs and emit SessionStart context |
267
267
  | `oacp setup` | Generate runtime-specific config files in a repo |
268
268
  | `oacp send` | Send a protocol-compliant inbox message |
269
269
  | `oacp key` | Generate and inspect message-signing keys |
270
270
  | `oacp trust` | Import, inspect, and revoke trust-root entries (catalog + pins) |
271
- | `oacp org-memory` | Initialize org-level memory at $OACP_HOME/org-memory/ |
271
+ | `oacp org-memory` | Run agent-memory org (init); shim until 0.5.2 |
272
272
  | `oacp write-event` | Write an event to org-memory/events/ |
273
273
  | `oacp autonomy-outcome` | Record a human approval/decline in an autonomy audit |
274
274
  | `oacp autonomy-finalize` | Record checkpoints and terminal states in an autonomy audit |
@@ -287,9 +287,9 @@ uv tool install .
287
287
 
288
288
  **`oacp watch`**: `--agent`, repeatable `--project`, `--all-projects`, `--json`, `--since` (default `now`), `--state-id <id>` for per-subscriber cursors, `--show-archived`
289
289
 
290
- **`oacp doctor`**: `--fix` (auto-fix safe issues), `--memory`, `--json`, `-o/--output`
290
+ **`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
291
291
 
292
- **`oacp memory`**: `init [--remote URL]`, `clone <URL> [--force]`, `pull`, `push`, `disable`, `archive <project> <file>`, `restore <project> <file>`
292
+ **`oacp memory`** / **`oacp org-memory`**: exec shims for [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install agent-memory-cli`): argv passes through, `--oacp-dir` becomes `--home`, `oacp memory init` runs `agent-memory enable`. Kept through 0.5.1, removed in 0.5.2; call `agent-memory` directly.
293
293
 
294
294
  </details>
295
295
 
@@ -369,15 +369,12 @@ $OACP_HOME/projects/<project>/
369
369
  └── workspace.json # Project metadata
370
370
  ```
371
371
 
372
- Optionally, `oacp org-memory init` creates org-level shared memory:
373
-
374
- ```
375
- $OACP_HOME/org-memory/
376
- ├── recent.md # Rolling summary, retrieved on demand
377
- ├── decisions.md # Org-wide decisions
378
- ├── rules.md # Standing conventions
379
- └── events/ # Timestamped event entries
380
- ```
372
+ Org-level shared memory and cross-machine sync are the memory tool's:
373
+ [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install
374
+ agent-memory-cli`) scaffolds `$OACP_HOME/org-memory/` (`agent-memory org init`),
375
+ syncs the home (`enable`, `pull`, `push`), checks it (`agent-memory doctor`), and
376
+ installs the runtime startup hook (`agent-memory setup <runtime>`). The layout it
377
+ implements is the kernel's [memory layout spec](docs/protocol/org_memory.md).
381
378
 
382
379
  Init loads the four active project memory files. Org memory is retrieved on
383
380
  demand; syncing it to disk does not load it into context. See
@@ -89,9 +89,14 @@ This creates or updates:
89
89
 
90
90
  - `.claude/agents/my-first-project.md`
91
91
  - `.claude/skills/`
92
- - `.claude/hooks/oacp-memory-pull.sh`
93
92
  - `.claude/settings.json`
94
93
 
94
+ Memory sync and its startup hook are the memory tool's: install
95
+ [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install
96
+ agent-memory-cli`) and run `agent-memory setup claude`. A regeneration of
97
+ `oacp setup` retires the memory hooks earlier kernels wrote, by exact command
98
+ and digest, and leaves anything you edited in place.
99
+
95
100
  For other supported runtimes, use the same shape:
96
101
 
97
102
  ```bash
@@ -101,20 +106,21 @@ oacp setup gemini --project my-first-project
101
106
  ```
102
107
 
103
108
  Codex setup creates or merges `.codex/hooks.json` with one startup-only hook.
104
- Review and trust it with `/hooks`; it runs memory pull and startup verification
105
- sequentially. If hooks are unavailable, run the manual fallback:
109
+ Review and trust it with `/hooks`; it runs the startup verification. If hooks
110
+ are unavailable, run the manual fallback:
106
111
 
107
112
  ```bash
108
- oacp session-init --pull-memory --project my-first-project
113
+ oacp session-init --project my-first-project
109
114
  ```
110
115
 
111
- Memory pull synchronizes files on disk. The init manifest names the protocol
112
- files and four project memory files to read into context; org memory is
113
- retrieved on demand. See [memory context](docs/guides/memory-context.md) for
114
- retrieval and existing-installation guidance.
116
+ The init manifest names the protocol files and four project memory files to
117
+ read into context; org memory is retrieved on demand. Syncing the home is
118
+ `agent-memory pull` (its `setup codex` hook runs it at startup). See
119
+ [memory context](docs/guides/memory-context.md) for retrieval and
120
+ existing-installation guidance.
115
121
 
116
122
  Runtime setup does not install an automatic memory push. Publish durable memory
117
- explicitly during wrap-up with `oacp memory push`.
123
+ explicitly during wrap-up with `agent-memory push`.
118
124
 
119
125
  Cursor support is scaffold-only until Cursor-owned rules land. Cursor sessions
120
126
  must set `OACP_RUNTIME=cursor` or pass `--from` explicitly when sending messages.
@@ -226,7 +232,7 @@ checks the project workspace, inboxes, schemas, and agent status files.
226
232
  ## What's Next?
227
233
 
228
234
  - **Review loop** — Set up structured code review between agents. See [docs/protocol/review_loop.md](docs/protocol/review_loop.md).
229
- - **Durable memory** — Learn how agents share knowledge across sessions. See [docs/protocol/cross_runtime_sync.md](docs/protocol/cross_runtime_sync.md).
235
+ - **Durable memory** — Learn how agents share knowledge across sessions and machines. See [docs/protocol/org_memory.md](docs/protocol/org_memory.md).
230
236
  - **Safety defaults** — Understand the baseline safety rules. See [docs/protocol/agent_safety_defaults.md](docs/protocol/agent_safety_defaults.md).
231
237
  - **Full protocol** — Read the complete specification in [SPEC.md](SPEC.md).
232
238
  - **Adoption guide** — Minimum, recommended, and full adoption paths. See [docs/guides/adoption.md](docs/guides/adoption.md).
@@ -233,14 +233,14 @@ uv tool install .
233
233
  | `oacp agent` | Manage global agent profiles (init, sync, show, list) |
234
234
  | `oacp inbox` | List pending inbox messages |
235
235
  | `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
236
- | `oacp retention` | Prune project message history by age and count |
237
- | `oacp memory` | Archive, restore, or sync memory files |
236
+ | `oacp retention` | Parked: engine archived outside the kernel; advisory shim until 0.5.3 |
237
+ | `oacp memory` | Run agent-memory (sync, archive, restore); shim until 0.5.2 |
238
238
  | `oacp session-init` | Verify Codex startup inputs and emit SessionStart context |
239
239
  | `oacp setup` | Generate runtime-specific config files in a repo |
240
240
  | `oacp send` | Send a protocol-compliant inbox message |
241
241
  | `oacp key` | Generate and inspect message-signing keys |
242
242
  | `oacp trust` | Import, inspect, and revoke trust-root entries (catalog + pins) |
243
- | `oacp org-memory` | Initialize org-level memory at $OACP_HOME/org-memory/ |
243
+ | `oacp org-memory` | Run agent-memory org (init); shim until 0.5.2 |
244
244
  | `oacp write-event` | Write an event to org-memory/events/ |
245
245
  | `oacp autonomy-outcome` | Record a human approval/decline in an autonomy audit |
246
246
  | `oacp autonomy-finalize` | Record checkpoints and terminal states in an autonomy audit |
@@ -259,9 +259,9 @@ uv tool install .
259
259
 
260
260
  **`oacp watch`**: `--agent`, repeatable `--project`, `--all-projects`, `--json`, `--since` (default `now`), `--state-id <id>` for per-subscriber cursors, `--show-archived`
261
261
 
262
- **`oacp doctor`**: `--fix` (auto-fix safe issues), `--memory`, `--json`, `-o/--output`
262
+ **`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
263
263
 
264
- **`oacp memory`**: `init [--remote URL]`, `clone <URL> [--force]`, `pull`, `push`, `disable`, `archive <project> <file>`, `restore <project> <file>`
264
+ **`oacp memory`** / **`oacp org-memory`**: exec shims for [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install agent-memory-cli`): argv passes through, `--oacp-dir` becomes `--home`, `oacp memory init` runs `agent-memory enable`. Kept through 0.5.1, removed in 0.5.2; call `agent-memory` directly.
265
265
 
266
266
  </details>
267
267
 
@@ -341,15 +341,12 @@ $OACP_HOME/projects/<project>/
341
341
  └── workspace.json # Project metadata
342
342
  ```
343
343
 
344
- Optionally, `oacp org-memory init` creates org-level shared memory:
345
-
346
- ```
347
- $OACP_HOME/org-memory/
348
- ├── recent.md # Rolling summary, retrieved on demand
349
- ├── decisions.md # Org-wide decisions
350
- ├── rules.md # Standing conventions
351
- └── events/ # Timestamped event entries
352
- ```
344
+ Org-level shared memory and cross-machine sync are the memory tool's:
345
+ [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install
346
+ agent-memory-cli`) scaffolds `$OACP_HOME/org-memory/` (`agent-memory org init`),
347
+ syncs the home (`enable`, `pull`, `push`), checks it (`agent-memory doctor`), and
348
+ installs the runtime startup hook (`agent-memory setup <runtime>`). The layout it
349
+ implements is the kernel's [memory layout spec](docs/protocol/org_memory.md).
353
350
 
354
351
  Init loads the four active project memory files. Org memory is retrieved on
355
352
  demand; syncing it to disk does not load it into context. See
@@ -23,7 +23,7 @@ documents ship inside the `oacp-cli` wheel.
23
23
  | [`docs/protocol/inbox_outbox.md`](docs/protocol/inbox_outbox.md) | Wire format including the signed `auth` trailer; directory layout; message types; lifecycle — a processed inbound message is archived to `inbox/archive/` by digest-checked, no-clobber move (never deleted), and an intake rejection is quarantined to `dead_letter/`; threading, broadcast, expiry, retention. |
24
24
  | [`docs/protocol/message_signing.md`](docs/protocol/message_signing.md) | Trust root and receiver pins, verify modes (`off` / `warn` / `enforce`), receiver audit stamping, policy-file signing, key management, rotation and revocation, signing conformance. |
25
25
  | [`docs/protocol/autonomy.md`](docs/protocol/autonomy.md) | Receiver autonomy: config and task profiles, the four-gate admission evaluator and hard stops, audit records (admission ledger, human outcomes, terminal finalization), threshold checkpoints and re-authorization, scope-envelope enforcement, continuation grants. |
26
- | [`docs/protocol/org_memory.md`](docs/protocol/org_memory.md) | Org-level memory: directory structure, event file schema, the debrief store, permission model and lifecycle. |
26
+ | [`docs/protocol/org_memory.md`](docs/protocol/org_memory.md) | Memory layout: the per-project, org, and cross-machine tiers — paths, files, who writes what, the event and debrief schemas, the sync marker and allowlist. |
27
27
 
28
28
  ## Userland documents
29
29
 
@@ -36,7 +36,6 @@ receiver must verify.
36
36
  | [`docs/protocol/task_negotiation.md`](docs/protocol/task_negotiation.md) | Propose / accept / counter-propose handshake for splitting work between agents. |
37
37
  | [`docs/protocol/multi_agent_shared_workspace.md`](docs/protocol/multi_agent_shared_workspace.md) | Shared-folder implementation → QA → deployment handoff with batched findings and signoff. |
38
38
  | [`docs/protocol/session_init.md`](docs/protocol/session_init.md) | Runtime-agnostic session-start sequence and failure handling. |
39
- | [`docs/protocol/cross_runtime_sync.md`](docs/protocol/cross_runtime_sync.md) | Keeping context consistent across runtimes: durable memory, handoff messages, review artifacts. |
40
39
  | [`docs/protocol/runtime_capabilities.md`](docs/protocol/runtime_capabilities.md) | Static capability declarations, dynamic `status.yaml`, health-check contract, agent cards. |
41
40
  | [`docs/protocol/agent_profiles.md`](docs/protocol/agent_profiles.md) | Two-tier identity: global agent profiles and project-level agent cards. |
42
41
  | [`docs/protocol/agent_safety_defaults.md`](docs/protocol/agent_safety_defaults.md) | Baseline git, staging, inbox, credential, and scope rules every agent follows. |
@@ -49,7 +48,7 @@ Guides — [`docs/guides/setup.md`](docs/guides/setup.md),
49
48
  [`versioning.md`](docs/guides/versioning.md),
50
49
  [`unified_skill_spec.md`](docs/guides/unified_skill_spec.md) — and the
51
50
  executable conformance fixtures under [`tests/conformance/`](tests/conformance/)
52
- (autonomy, signing, intake, envelope) round out the set. Runtime-specific skills
51
+ (autonomy, signing, intake, envelope, memory layout) round out the set. Runtime-specific skills
53
52
  that operate the protocol live in the companion
54
53
  [oacp-skills](https://github.com/kiloloop/oacp-skills) repository.
55
54
 
@@ -27,6 +27,7 @@ Verifies that required and optional CLI tools are installed and reachable on `PA
27
27
  | `ruff` | No | Python linter (optional, used in preflight) |
28
28
  | `shellcheck` | No | Shell script linter (optional) |
29
29
  | `pyyaml` | No | PyYAML library (needed for YAML validation) |
30
+ | `agent-memory` | No | Memory tool (`agent-memory-cli`); the row reports its version and hands memory-home checks to `agent-memory doctor` |
30
31
 
31
32
  ### 2. Workspace
32
33
 
@@ -103,6 +104,8 @@ $ oacp doctor
103
104
  [+] ruff — ruff 0.8.1
104
105
  [-] shellcheck — not installed (optional)
105
106
  Install: brew install shellcheck
107
+ [-] agent-memory — not installed
108
+ Install: pip install agent-memory-cli
106
109
  [+] pyyaml — available
107
110
 
108
111
  No issues found.
@@ -120,6 +123,7 @@ $ oacp doctor --project my-project
120
123
  [+] ruff — ruff 0.8.1
121
124
  [-] shellcheck — not installed (optional)
122
125
  Install: brew install shellcheck
126
+ [+] agent-memory — agent-memory 0.1.0 (run agent-memory doctor)
123
127
  [+] pyyaml — available
124
128
 
125
129
  [+] Workspace
@@ -181,6 +185,7 @@ The exit code reflects the overall result:
181
185
  | `pyyaml — not importable` | `pip install pyyaml` |
182
186
  | `ruff — not installed` | `pip install ruff` (optional, for linting) |
183
187
  | `shellcheck — not installed` | `brew install shellcheck` (optional, for shell script linting) |
188
+ | `agent-memory — not installed` | `pip install agent-memory-cli` (optional; `agent-memory doctor` then checks the memory home) |
184
189
 
185
190
  ### Workspace
186
191
 
@@ -220,7 +225,6 @@ oacp doctor --project <name> # full workspace + agent checks
220
225
  oacp doctor --json # machine-readable JSON output
221
226
  oacp doctor --project <name> --json # full checks in JSON format
222
227
  oacp doctor --project <name> --fix # auto-fix safe issues (missing inbox dirs, missing/stale status.yaml)
223
- oacp doctor --memory # advisory checks for OACP_HOME memory git sync
224
228
  oacp doctor -o report.txt # save report to file
225
229
  ```
226
230
 
@@ -18,7 +18,7 @@ protocol files and those four project files, then emits a manifest. The agent
18
18
  still performs the ordered reads; verification does not inject their contents.
19
19
  Missing project files are reported under the existing degraded-init behavior.
20
20
 
21
- `oacp memory pull` synchronizes the memory repository on disk, including org
21
+ `agent-memory pull` synchronizes the memory repository on disk, including org
22
22
  memory and its history. A successful pull does not add those files to model
23
23
  context. Keep any configured pull before project-memory reads so those reads
24
24
  use the refreshed files. Sync selection and context selection are independent;
@@ -35,7 +35,7 @@ a hook that the project has disabled.
35
35
  others. Read applicable standing rules and decisions before the actions
36
36
  they govern, such as release, review authority, or architecture work.
37
37
  2. If cross-machine sync is configured, the task needs current shared facts,
38
- and local freshness is unknown, run `oacp memory pull`. A failed pull leaves
38
+ and local freshness is unknown, run `agent-memory pull`. A failed pull leaves
39
39
  freshness unknown; report that limitation before relying on affected facts.
40
40
  3. Search the relevant explicit files with task identifiers and topic terms.
41
41
  For example, after confirming that `rules.md` exists:
@@ -322,7 +322,7 @@ Every autonomy decision writes one YAML file:
322
322
 
323
323
  ```yaml
324
324
  schema_version: 2
325
- spec_version: "0.4.5"
325
+ spec_version: "0.5.1"
326
326
  created_at_utc: "2026-05-12T13:23:25Z"
327
327
  receiver: codex
328
328
  sender: iris
@@ -470,6 +470,10 @@ terminal finalization. Records, envelopes, and workspaces written between the
470
470
  0.4.4 release (2026-08-28) and the 0.4.5 release are therefore stamped
471
471
  `0.4.3` under a contract that had already moved — readers tolerate that
472
472
  stamp on artifacts dated in the window and read them by the 0.4.5 shape.
473
+ The 0.5.1 contract adds cancellation receipts and attributed clock adjustments. Existing records keep their
474
+ original stamp; new cancellation fixtures use 0.5.1. Schema version remains 2
475
+ because the record container is unchanged; readers must recognize the new
476
+ terminal vocabulary before consuming 0.5.1 receipts.
473
477
 
474
478
  `evaluator` is **gate-emitted, not receiver-composed**: the evaluator
475
479
  self-stamps its provenance into every decision it returns, and receivers
@@ -823,7 +827,7 @@ in place with `--replace`.
823
827
 
824
828
  **Run-state vocabulary.** `result.final_state` splits by lifecycle phase:
825
829
  `pending`, `paused`, and `blocked` are live states; `done`, `superseded`,
826
- and `error` are terminal. Only terminal states can be finalized.
830
+ `error`, and `cancelled` are terminal. Only terminal states can be finalized.
827
831
  `pending` is receiver-written (an admission record picked up for
828
832
  execution) — the evaluator itself never writes it.
829
833
 
@@ -857,11 +861,38 @@ actuals, whichever receiver writes it. Within the envelope, the
857
861
  checkpoint records `within_declared_envelope` (or
858
862
  `continued_with_grant`) and the terminal write proceeds; a breach leaves
859
863
  the record checkpoint-paused (exit code 4) and the §E re-authorization
860
- flow applies before any terminal state can be written. Realized effects
864
+ flow applies before successful completion can be written. Cancellation
865
+ closes the task without resuming or erasing a breached checkpoint. Realized effects
861
866
  use the canonical axis names only: `actual_minutes`,
862
867
  `actual_files_touched`, `side_effects_actual.<capability>`, and
863
868
  `task_profile.<field>` for declared-intent corrections.
864
869
 
870
+ **Cancellation.** Use `cancelled` when the human or sender stops an admitted
871
+ task; use `superseded` when a replacement evaluation inherits its authority.
872
+ `oacp autonomy-finalize <record> --final-state cancelled --cancelled-by human
873
+ --cancelled-at <UTC>` writes `result.cancelled_by` (`human` or `sender`),
874
+ `cancelled_at_utc` (equal to `completed_at_utc`), optional `reason` (`--reason`),
875
+ and `deliverables_landed` (a list of PR/commit reference strings, supplied with
876
+ repeatable `--deliverable-landed`; empty when none landed). Cancellation must
877
+ follow admission approval and any work start. It requires non-negative integer
878
+ `actual_minutes` and `actual_files_touched`; existing work-start and pause stamps
879
+ remain binding. Before work begins, no start is invented: both actuals are zero
880
+ and the landed list is empty.
881
+
882
+ Cancellation accepts live `pending`/`paused`/`blocked` records and the provisional
883
+ `done` shape emitted at auto-admission (no completion stamp). A paused admission
884
+ must have a recorded `approved`/`modified` human outcome. Completed `done`,
885
+ `error`, `superseded`, and `cancelled` records refuse cancellation even with
886
+ `--replace`. Cancelled history cannot be reopened by a checkpoint, another
887
+ outcome, or a done/error correction; linked supersession remains available.
888
+ Cancellation preserves the admission and any unresolved checkpoint evidence,
889
+ including its historical `paused_for_reauthorization` action, but does not
890
+ require an implementation-success checkpoint or manufacture resumed authority.
891
+ Cancellation accepts only clock/count actuals (including `clock_adjustments`): record effects, risks, and
892
+ re-authorization through a checkpoint while still live before cancelling.
893
+ Unsupported actuals are refused rather than silently discarded. The cancelled
894
+ lifecycle is closed for doctor and envelope clear.
895
+
865
896
  **Evaluation identity and supersession.** Every persisted evaluation
866
897
  carries an `evaluation_id` derived from receiver, message id, message
867
898
  bytes, and evaluation time. Re-evaluating a message the evaluator
@@ -1047,7 +1078,55 @@ completion or the current checkpoint, rounded up to a whole minute, excluding
1047
1078
  each represented re-authorization pause from `paused_at_utc` through
1048
1079
  `cleared_paused_at_utc`. If a terminal outcome leaves that pause uncleared,
1049
1080
  active work ends at `paused_at_utc`; the subsequent paused wait does not count.
1050
- The current record shape represents at most its current pause interval.
1081
+ The scalar pair keeps its original meaning. Explicit human-directed exclusions
1082
+ are carried separately in `result.clock_adjustments`, including deductions that
1083
+ were never checkpoint pauses. Supply additions through `--actuals <yaml>`:
1084
+
1085
+ ```yaml
1086
+ actual_files_touched: 2
1087
+ completed_at_utc: "2026-08-01T02:00:00Z"
1088
+ clock_adjustments:
1089
+ - from_utc: "2026-08-01T01:30:00Z"
1090
+ to_utc: "2026-08-01T01:45:00Z"
1091
+ actor: alice
1092
+ decided_at_utc: "2026-08-01T02:00:00Z"
1093
+ reason: "Human directed exclusion for time away"
1094
+ ```
1095
+
1096
+ Each closed interval requires exactly these five input fields; the finalizer
1097
+ adds `recorded_at_utc` as writer provenance. The actor is a stable nonempty
1098
+ handle, the reason is nonempty, and all timestamps use `YYYY-MM-DDTHH:MM:SSZ`.
1099
+ The interval starts at or after work start and finishes after its start, no
1100
+ later than recording and the measurement/completion endpoint. The decision
1101
+ cannot postdate recording. Duration is derived from the interval, so no
1102
+ independently editable minutes field can disagree with it. Only explicit human
1103
+ direction authorizes a deduction; an adjustment neither grants scope nor
1104
+ resumes a checkpoint.
1105
+
1106
+ Additions append to recorded evidence; omission or an empty list preserves it,
1107
+ and identical entries are idempotent. A supplied writer timestamp for a new
1108
+ entry is refused; only an exact replay may carry its existing writer stamp.
1109
+ Rewriting a stored timestamp is refused. Corrections that remove or rewrite history use linked supersession.
1110
+ The list survives checkpoints and metadata-only `--replace`. These rules
1111
+ apply to direct library calls as well as the CLI and to cancellation after
1112
+ work has begun.
1113
+
1114
+ Arithmetic uses the union of the scalar pause and explicit intervals. Sort and
1115
+ merge overlapping or adjacent intervals, subtract their total seconds from
1116
+ elapsed seconds, then round active minutes up once. Every excluded second
1117
+ counts once, including a pause also recorded explicitly before a later
1118
+ checkpoint replaces the scalar pair. A malformed scalar remains invalid even
1119
+ when an explicit list exists. Existing scalar-only receipts keep their original
1120
+ behavior; absent adjustments mean no extra deduction. Read-back validates list
1121
+ shape and provenance even on live records without numeric actuals, and terminal
1122
+ actuals retain the one-minute `actual_minutes_inconsistent` tolerance.
1123
+ Live read-back does not bound `recorded_at_utc` against the reading wall clock;
1124
+ finalization rejects intervals beyond its measurement/completion endpoint.
1125
+
1126
+ For `--final-state done --replace`, automatic scalar-pause derivation reads the
1127
+ stored checkpoint first. When also changing that scalar pause through actuals,
1128
+ supply explicit `actual_minutes`; the final read-back still checks the resulting
1129
+ clock. Newly supplied explicit adjustments participate in derivation immediately.
1051
1130
  Admission-to-start idle time never counts; time waiting on a peer reviewer does
1052
1131
  count because it is part of that task's review loop. Serialized tasks admitted
1053
1132
  together therefore stamp and measure their own starts independently.
@@ -1335,9 +1414,14 @@ and then human-approved), the receiver compiles the profile plus its own
1335
1414
  autonomy config into a runtime envelope:
1336
1415
 
1337
1416
  ```
1338
- oacp envelope compile <message.yaml> --receiver <agent>
1417
+ oacp envelope compile <message.yaml> --receiver <agent> \
1418
+ [--audit <admission-record.yaml>]
1339
1419
  ```
1340
1420
 
1421
+ With `--audit`, the compiler also stamps the admission record with the
1422
+ enforcement state it compiled (see Enforcement recording below); the
1423
+ record and the envelope then tell one story.
1424
+
1341
1425
  **Admitted public-visibility tasks are the one explicit exception.** A
1342
1426
  compiled `public_visibility: true` envelope denies the entire chain the
1343
1427
  human just approved — the runtime adapter has no post-approval carve-out —
@@ -1385,7 +1469,7 @@ The envelope is written to
1385
1469
  ```json
1386
1470
  {
1387
1471
  "envelope_version": 1,
1388
- "spec_version": "0.4.5",
1472
+ "spec_version": "0.5.1",
1389
1473
  "compiler": "envelope_compiler.py",
1390
1474
  "compiled_at_utc": "2026-07-12T02:00:00Z",
1391
1475
  "project": "my-project",
@@ -1412,10 +1496,19 @@ The envelope is written to
1412
1496
  },
1413
1497
  "counters": {"files_touched": []},
1414
1498
  "enforcement": "hooks",
1499
+ "adapter": {
1500
+ "runtime": "claude",
1501
+ "state": "resolved",
1502
+ "console": "oacp-envelope-hook",
1503
+ "detail": "console script 'oacp-envelope-hook' on PATH at …; registered as a PreToolUse hook"
1504
+ },
1415
1505
  "session_id": "sess-…"
1416
1506
  }
1417
1507
  ```
1418
1508
 
1509
+ `enforcement_reason` appears beside `enforcement` exactly when it is
1510
+ `none`, naming the adapter state (below).
1511
+
1419
1512
  Compilation rules:
1420
1513
 
1421
1514
  - **Fail closed.** A missing, unparsable, or invalid profile — or a malformed
@@ -1427,6 +1520,33 @@ Compilation rules:
1427
1520
  runtime enforcement never trusts sender declarations alone.
1428
1521
  - Granular side-effect fields absent from a legacy profile compile to
1429
1522
  `false`. `counters` are runtime state and always start empty.
1523
+ - **Adapter detection.** `enforcement` is earned, not assumed. The
1524
+ compiler resolves the receiver's runtime from its agent card
1525
+ (`agents/<receiver>/agent_card.yaml` → `runtime:`) and detects that
1526
+ runtime's envelope adapter **by console name, never by module path**,
1527
+ so the adapter can move between distributions without touching the
1528
+ compiler. Every compile stamps exactly one of four `adapter.state`
1529
+ values: `resolved` → `enforcement: hooks`; `unsupported`,
1530
+ `expected_missing`, or `failed` → `enforcement: none` plus
1531
+ `enforcement_reason` naming the state (`adapter_unsupported`,
1532
+ `adapter_expected_missing`, `adapter_detection_failed`). Detection
1533
+ inputs, per runtime:
1534
+ - `claude` — the `oacp-envelope-hook` console script resolves on
1535
+ PATH **and** is registered as a `PreToolUse` hook command in the
1536
+ project repo's `.claude/settings.json` (the registration
1537
+ `oacp setup claude` writes, reached through the workspace marker's
1538
+ `repo_path`). Both present → `resolved`; either absent →
1539
+ `expected_missing`; a workspace marker or settings file that cannot
1540
+ be read → `failed`.
1541
+ - `codex`, `cursor`, `gemini`, `human` — no envelope adapter by
1542
+ design → `unsupported`.
1543
+ - `unknown`, a missing or unreadable card, or a value outside the
1544
+ card's runtime enum → `failed`.
1545
+
1546
+ `expected_missing` and `failed` are loud: the compiler prints a stderr
1547
+ advisory naming the reason. The compile still succeeds (exit 0) and the
1548
+ envelope is still written — degradation is named, never silent, and
1549
+ never fail-closed here.
1430
1550
  - **Session binding.** The envelope records which harness session it
1431
1551
  belongs to. The runtime hook — the only party that sees the harness
1432
1552
  session id (it is not present in the command environment) — records a
@@ -1581,7 +1701,7 @@ the active envelope — `message_id` and `receiver` fields in the record
1581
1701
  itself; filenames are never trusted, and the envelope's message id (pinned
1582
1702
  to a safe-id grammar at compile time) never reaches a filesystem glob:
1583
1703
 
1584
- - `result.final_state: done | error` — the lifecycle is over; the clear is
1704
+ - `result.final_state: done | error | cancelled` — the lifecycle is over; the clear is
1585
1705
  allowed and the enforcement window closes from inside the session.
1586
1706
  - `pending` or `paused` (or no matching record at all) — the clear is
1587
1707
  denied: an open task keeps its envelope, and a checkpoint-paused task
@@ -1625,15 +1745,26 @@ grants nothing durable. The envelope itself stays immutable; only `scope`
1625
1745
 
1626
1746
  ### Enforcement recording
1627
1747
 
1628
- The audit `result` block records `envelope_enforcement: hooks | none`.
1629
- Receivers set `hooks` after a successful compile on an adapter-equipped
1630
- runtime; `none` means pickup-gate-only enforcement. Degradation must never
1631
- be silent: when `none` is a **rule** rather than a runtime gap, the record
1632
- carries the named reason alongside it —
1633
- `envelope_enforcement_reason: public_visibility_admission_approved` for
1634
- the admitted-public branch above, stamped by the compiler itself. A bare
1635
- `none` with no reason means an adapterless runtime (the historical
1636
- pickup-gate-only state), distinguishable from the rule-based mode.
1748
+ The audit `result` block records `envelope_enforcement: hooks | none`,
1749
+ and it tells the same story as the envelope. The admission gate writes
1750
+ `none` at admission. A compile run with `--audit <admission-record>`
1751
+ stamps the record with the detected adapter state — under the audit
1752
+ lock, in one locked read, on a record carrying a `schema_version` and
1753
+ content-matched on `message_id` + `receiver` + `message_sha256` (an
1754
+ unbound record is left untouched and the compile warns): `hooks` for a
1755
+ `resolved` adapter, with no reason; otherwise `none` plus
1756
+ `envelope_enforcement_reason` naming the state —
1757
+ `adapter_unsupported` (a runtime with no adapter by design, `codex`
1758
+ today), `adapter_expected_missing` (an adapter-capable runtime whose
1759
+ console or registration did not resolve), or
1760
+ `adapter_detection_failed` (the runtime or a probe could not be
1761
+ determined). Degradation must never be silent: `none` always carries
1762
+ its reason — `public_visibility_admission_approved` for the
1763
+ admitted-public branch above, one of the adapter reasons for a compiled
1764
+ envelope — and `none` means pickup-gate-only enforcement whatever the
1765
+ reason. A record still reading a bare `none` after pickup establishes
1766
+ only that no compiler stamp was recorded — the compile ran without
1767
+ `--audit`, or never ran — never that the runtime is adapterless.
1637
1768
 
1638
1769
  Enforcement boundary: hooks constrain every tool call inside the session,
1639
1770
  including subagent tool calls, and fire before sandbox/permission
@@ -1838,6 +1969,7 @@ Audit `result.final_state` is limited to:
1838
1969
  - `done` (terminal)
1839
1970
  - `superseded` (terminal; see "Terminal finalization and audit integrity")
1840
1971
  - `error` (terminal)
1972
+ - `cancelled` (terminal; admitted task stopped by the human or sender)
1841
1973
 
1842
1974
  `result.completion_kind` is separately pinned to the evaluation-shape enum
1843
1975
  above (see "Pinned completion_kind taxonomy"). Missing-profile messages that