oacp-cli 0.4.4__tar.gz → 0.4.6__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 (474) hide show
  1. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/CHANGELOG.md +38 -0
  2. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/PKG-INFO +10 -9
  3. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/QUICKSTART.md +5 -0
  4. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/README.md +9 -8
  5. oacp_cli-0.4.6/docs/guides/memory-context.md +72 -0
  6. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/guides/versioning.md +20 -6
  7. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/agent_safety_defaults.md +1 -1
  8. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/autonomy.md +169 -24
  9. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/cross_runtime_sync.md +7 -5
  10. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/dispatch_states.yaml +2 -2
  11. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/org_memory.md +14 -8
  12. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/runtime_capabilities.md +10 -6
  13. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/session_init.md +25 -15
  14. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/README.md +3 -3
  15. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/recent.md +2 -1
  16. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/oacp/cli.py +1 -1
  17. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/pyproject.toml +4 -2
  18. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/_oacp_constants.py +5 -3
  19. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/add_agent.py +143 -1
  20. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/autonomy_gate.py +105 -3
  21. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/claude_envelope_hook.py +6 -1
  22. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/codex_session_init.py +59 -29
  23. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/finalize_autonomy_record.py +226 -4
  24. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/oacp_doctor.py +27 -6
  25. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/record_autonomy_outcome.py +236 -17
  26. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/setup_runtime.py +58 -4
  27. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/claude/agents/role_agent.template.md +4 -1
  28. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/org-memory/recent.md +2 -1
  29. oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_designed.yaml +13 -0
  30. oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_mixed.yaml +13 -0
  31. oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_undeclared.yaml +13 -0
  32. oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_unplanned.yaml +13 -0
  33. oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_designed.yaml +20 -0
  34. oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_mixed.yaml +20 -0
  35. oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_undeclared.yaml +19 -0
  36. oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_unplanned.yaml +20 -0
  37. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/README.md +2 -0
  38. oacp_cli-0.4.6/tests/conformance/autonomy/records/admission_outcome_replaced_by_clear.yaml +65 -0
  39. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/clean_terminal_done.yaml +4 -0
  40. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/expected_findings.yaml +4 -0
  41. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_add_agent.py +53 -1
  42. oacp_cli-0.4.6/tests/test_audit_corpus_boundary.py +251 -0
  43. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_audit_record_conformance.py +1 -1
  44. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_autonomy_gate.py +69 -0
  45. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_claude_envelope_hook.py +22 -0
  46. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_codex_session_init.py +207 -2
  47. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_envelope_compiler.py +17 -0
  48. oacp_cli-0.4.6/tests/test_expected_pauses.py +259 -0
  49. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_finalize_autonomy_record.py +557 -10
  50. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_package_content.py +24 -0
  51. oacp_cli-0.4.6/tests/test_packaged_status_template.py +156 -0
  52. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_record_autonomy_outcome.py +460 -0
  53. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_setup_runtime.py +204 -0
  54. oacp_cli-0.4.6/tests/test_spec_version.py +39 -0
  55. oacp_cli-0.4.4/mcp_servers/README.md +0 -8
  56. oacp_cli-0.4.4/mcp_servers/oacp_coordinator.py +0 -789
  57. oacp_cli-0.4.4/scripts/session_lifecycle_hooks.py +0 -632
  58. oacp_cli-0.4.4/tests/test_oacp_coordinator.py +0 -271
  59. oacp_cli-0.4.4/tests/test_session_lifecycle_hooks.py +0 -384
  60. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/.gitattributes +0 -0
  61. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/.github/workflows/auto-estimate.yml +0 -0
  62. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/.github/workflows/ci.yml +0 -0
  63. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/.github/workflows/release.yml +0 -0
  64. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/.gitignore +0 -0
  65. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/CONTRIBUTING.md +0 -0
  66. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/LICENSE +0 -0
  67. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/Makefile +0 -0
  68. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/SECURITY.md +0 -0
  69. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/SPEC.md +0 -0
  70. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/from-claude-p.md +0 -0
  71. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/guides/adoption.md +0 -0
  72. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/guides/doctor.md +0 -0
  73. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/guides/prompt_caching.md +0 -0
  74. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/guides/setup.md +0 -0
  75. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/guides/unified_skill_spec.md +0 -0
  76. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/img/oacp-cli-demo.png +0 -0
  77. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/img/oacp-filesystem-tree.png +0 -0
  78. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/img/oacp-fleet-thread.png +0 -0
  79. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/agent_profiles.md +0 -0
  80. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/credential_scoping.md +0 -0
  81. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/inbox_outbox.md +0 -0
  82. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/mcp_integration.md +0 -0
  83. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/message_signing.md +0 -0
  84. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  85. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/packet_states.yaml +0 -0
  86. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/review_loop.md +0 -0
  87. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/skills_manifest.yaml +0 -0
  88. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/docs/protocol/task_negotiation.md +0 -0
  89. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/decisions.md +0 -0
  90. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
  91. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
  92. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
  93. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
  94. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
  95. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
  96. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/rules.md +0 -0
  97. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/archive/2026-05-21-csv-export-timeouts.md +0 -0
  98. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
  99. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
  100. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
  101. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
  102. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/examples/quickstart/README.md +0 -0
  103. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/oacp/__init__.py +0 -0
  104. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/oacp/envelope_hook.py +0 -0
  105. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/_oacp_env.py +0 -0
  106. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/agent_profile.py +0 -0
  107. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/check_quality_gate.py +0 -0
  108. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/envelope_compiler.py +0 -0
  109. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/gen_readme_commands.py +0 -0
  110. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/handoff_schema.py +0 -0
  111. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/init_org_memory.py +0 -0
  112. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/init_packet.sh +0 -0
  113. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/init_project_workspace.py +0 -0
  114. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/key_cli.py +0 -0
  115. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/memory_archive_common.py +0 -0
  116. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/memory_cli.py +0 -0
  117. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/memory_sync.py +0 -0
  118. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/message_signing.py +0 -0
  119. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/message_verify.py +0 -0
  120. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/oacp_inbox.py +0 -0
  121. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/oacp_watch.py +0 -0
  122. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/policy_signing.py +0 -0
  123. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/preflight.py +0 -0
  124. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/promote_to_archive.py +0 -0
  125. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/restore_from_archive.py +0 -0
  126. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/retention.py +0 -0
  127. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/send_inbox_message.py +0 -0
  128. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/trust_cli.py +0 -0
  129. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/trust_root.py +0 -0
  130. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/update_workspace.sh +0 -0
  131. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/validate_agent_card.py +0 -0
  132. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/validate_message.py +0 -0
  133. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/scripts/write_event.py +0 -0
  134. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/agent_card.template.yaml +0 -0
  135. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/agent_profile.template.yaml +0 -0
  136. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/agent_status.template.yaml +0 -0
  137. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/checkpoint.template.md +0 -0
  138. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/claude/rules/guardrail.template.md +0 -0
  139. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/findings_packet.template.yaml +0 -0
  140. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/github_actions_quality_gate.yaml +0 -0
  141. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/guardrails/coding_standards.template.md +0 -0
  142. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/guardrails/safe_commands.template.md +0 -0
  143. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/guardrails/secrets_rules.template.md +0 -0
  144. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/handoff_packet.template.yaml +0 -0
  145. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/inbox_message.template.yaml +0 -0
  146. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/manual_validation.template.md +0 -0
  147. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/merge_decision.template.md +0 -0
  148. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/org-memory/decisions.md +0 -0
  149. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/org-memory/events/.gitkeep +0 -0
  150. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
  151. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/org-memory/rules.md +0 -0
  152. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/receiver_config.template.yaml +0 -0
  153. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/review_packet.template.md +0 -0
  154. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/roles/role_baseline.template.md +0 -0
  155. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/roles/role_definition.template.yaml +0 -0
  156. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/runtime_capabilities.yaml +0 -0
  157. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/skills_manifest.template.yaml +0 -0
  158. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/templates/test_packet.template.md +0 -0
  159. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/README.md +0 -0
  160. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
  161. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
  162. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
  163. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
  164. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
  165. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +0 -0
  166. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_conflict.yaml +0 -0
  167. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +0 -0
  168. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_reuse.yaml +0 -0
  169. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +0 -0
  170. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +0 -0
  171. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/review_live_head_mismatch.yaml +0 -0
  172. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/review_live_head_prefix.yaml +0 -0
  173. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
  174. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_addressed_accepted.yaml +0 -0
  175. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_addressed_types.yaml +0 -0
  176. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_approved.yaml +0 -0
  177. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_denied_later.yaml +0 -0
  178. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_denied_postmessage.yaml +0 -0
  179. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
  180. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
  181. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
  182. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
  183. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
  184. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
  185. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
  186. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
  187. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
  188. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
  189. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
  190. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +0 -0
  191. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
  192. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +0 -0
  193. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +0 -0
  194. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +0 -0
  195. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +0 -0
  196. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +0 -0
  197. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +0 -0
  198. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
  199. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
  200. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
  201. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
  202. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
  203. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
  204. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +0 -0
  205. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
  206. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
  207. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
  208. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
  209. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
  210. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
  211. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
  212. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
  213. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +0 -0
  214. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
  215. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
  216. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
  217. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
  218. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
  219. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
  220. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
  221. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
  222. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
  223. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
  224. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
  225. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
  226. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
  227. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
  228. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
  229. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
  230. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
  231. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
  232. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
  233. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
  234. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
  235. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
  236. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
  237. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
  238. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_accepted_auto_continues.yaml +0 -0
  239. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_disabled_pauses.yaml +0 -0
  240. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_drift_pauses.yaml +0 -0
  241. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_expired_pauses.yaml +0 -0
  242. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_head_mismatch_records.yaml +0 -0
  243. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_later_round_pauses.yaml +0 -0
  244. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_missing_approval_pauses.yaml +0 -0
  245. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_prefix_head_records.yaml +0 -0
  246. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_repeated_addressed_round_exceeded.yaml +0 -0
  247. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_revoke_before_processing_pauses.yaml +0 -0
  248. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_revoked_pauses.yaml +0 -0
  249. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
  250. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +0 -0
  251. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
  252. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
  253. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
  254. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
  255. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
  256. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/ledger_replay/corpus.yaml +0 -0
  257. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
  258. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
  259. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
  260. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
  261. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
  262. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
  263. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
  264. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
  265. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/declaration_error_admission.yaml +0 -0
  266. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
  267. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
  268. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
  269. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
  270. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
  271. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
  272. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
  273. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
  274. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
  275. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
  276. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
  277. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
  278. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
  279. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
  280. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
  281. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
  282. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
  283. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
  284. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
  285. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
  286. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
  287. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
  288. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_addressed_round3.yaml +0 -0
  289. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_cross_pr.yaml +0 -0
  290. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_head_mismatch.yaml +0 -0
  291. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_prefix_head.yaml +0 -0
  292. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_request.yaml +0 -0
  293. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_round4.yaml +0 -0
  294. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_unapproved.yaml +0 -0
  295. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
  296. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
  297. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
  298. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +0 -0
  299. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
  300. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
  301. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
  302. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
  303. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
  304. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
  305. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
  306. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
  307. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
  308. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +0 -0
  309. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/breached_empty_fields.yaml +0 -0
  310. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_live_a.yaml +0 -0
  311. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_live_b.yaml +0 -0
  312. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +0 -0
  313. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +0 -0
  314. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +0 -0
  315. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +0 -0
  316. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +0 -0
  317. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +0 -0
  318. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +0 -0
  319. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +0 -0
  320. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +0 -0
  321. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +0 -0
  322. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +0 -0
  323. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/serialized_wave_item.yaml +0 -0
  324. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +0 -0
  325. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +0 -0
  326. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_missing_successor.yaml +0 -0
  327. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_successor_live.yaml +0 -0
  328. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +0 -0
  329. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +0 -0
  330. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/README.md +0 -0
  331. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
  332. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/configs/malformed.yaml +0 -0
  333. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
  334. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
  335. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +0 -0
  336. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
  337. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
  338. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
  339. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
  340. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
  341. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
  342. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
  343. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
  344. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
  345. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
  346. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/README.md +0 -0
  347. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/configs/enforce.yaml +0 -0
  348. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/configs/off.yaml +0 -0
  349. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/configs/warn.yaml +0 -0
  350. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
  351. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
  352. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
  353. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
  354. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
  355. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
  356. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
  357. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
  358. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
  359. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
  360. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
  361. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
  362. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
  363. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/README.md +0 -0
  364. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/expected.yaml +0 -0
  365. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/.hidden/2026/08/20260825-alice-abc12345.md +0 -0
  366. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -0
  367. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-ABCD.md +0 -0
  368. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825_alice_abc12345.md +0 -0
  369. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/09/20260825-alice-def12345.md +0 -0
  370. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/20260825-alice-abc12345.md +0 -0
  371. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/empty_store/expected.yaml +0 -0
  372. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/empty_store/org-memory/debriefs/.gitkeep +0 -0
  373. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/missing_debriefs_dir/expected.yaml +0 -0
  374. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/missing_debriefs_dir/org-memory/recent.md +0 -0
  375. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/staging_artifact/expected.yaml +0 -0
  376. {oacp_cli-0.4.4 → 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 -0
  377. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/staging_artifact/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -0
  378. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/expected.yaml +0 -0
  379. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/.gitkeep +0 -0
  380. {oacp_cli-0.4.4 → 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 -0
  381. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -0
  382. {oacp_cli-0.4.4 → 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 -0
  383. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/other-project/2026/12/20261203-bob-9e0d44aa.md +0 -0
  384. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/README.md +0 -0
  385. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
  386. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
  387. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
  388. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
  389. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
  390. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
  391. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
  392. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
  393. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
  394. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
  395. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
  396. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
  397. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
  398. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
  399. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
  400. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
  401. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
  402. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
  403. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
  404. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
  405. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
  406. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
  407. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/keys/alice.json +0 -0
  408. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/keys/bob.json +0 -0
  409. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/keys/carol.json +0 -0
  410. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
  411. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
  412. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
  413. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
  414. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
  415. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
  416. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
  417. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
  418. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
  419. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
  420. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
  421. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
  422. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
  423. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
  424. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
  425. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
  426. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
  427. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
  428. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
  429. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
  430. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
  431. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
  432. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
  433. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
  434. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
  435. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
  436. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
  437. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
  438. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/conformance/signing/regen_fixtures.py +0 -0
  439. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_agent_profile.py +0 -0
  440. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_autonomy_conformance_fixtures.py +0 -0
  441. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_autonomy_ledger_replay.py +0 -0
  442. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_default_envelope.py +0 -0
  443. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_envelope_conformance_fixtures.py +0 -0
  444. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_envelope_public_admission.py +0 -0
  445. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_github_workflows.py +0 -0
  446. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_handoff_schema.py +0 -0
  447. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_inbox_verify.py +0 -0
  448. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_init_org_memory.py +0 -0
  449. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_init_project_workspace.py +0 -0
  450. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_intake_conformance.py +0 -0
  451. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_memory_archive.py +0 -0
  452. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_memory_sync.py +0 -0
  453. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_message_signing.py +0 -0
  454. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_message_verify.py +0 -0
  455. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_oacp_cli.py +0 -0
  456. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_oacp_constants.py +0 -0
  457. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_oacp_doctor.py +0 -0
  458. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_oacp_env.py +0 -0
  459. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_oacp_inbox.py +0 -0
  460. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_oacp_watch.py +0 -0
  461. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_org_memory_doctor.py +0 -0
  462. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_policy_signing.py +0 -0
  463. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_preflight.py +0 -0
  464. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_readme_commands.py +0 -0
  465. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_retention.py +0 -0
  466. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_review_loop.py +0 -0
  467. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_send_inbox_message.py +0 -0
  468. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_signing_conformance.py +0 -0
  469. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_trust_root.py +0 -0
  470. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_update_workspace.py +0 -0
  471. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_validate_agent_card.py +0 -0
  472. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_validate_message.py +0 -0
  473. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_workspace_discovery.py +0 -0
  474. {oacp_cli-0.4.4 → oacp_cli-0.4.6}/tests/test_write_event.py +0 -0
@@ -7,6 +7,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.4.6] - 2026-09-05
11
+
12
+ ### Added
13
+
14
+ - Autonomy audits distinguish expected pauses from unplanned pauses ([pause classification](docs/protocol/autonomy.md#pause-classification)).
15
+ - Human outcome records can retain the changes made when approving a modified task ([human outcomes](docs/protocol/autonomy.md#human-approval-and-decline-outcomes)).
16
+
17
+ ### Fixed
18
+
19
+ - Startup safety and dispatch guidance follow the current exact-file archive lifecycle ([inbox lifecycle](docs/protocol/inbox_outbox.md#lifecycle)).
20
+ - Startup guidance preserves project memory reads and retrieves org memory on demand ([memory context](docs/guides/memory-context.md)).
21
+
22
+ ## [0.4.5] - 2026-09-02
23
+
24
+ ### Changed
25
+
26
+ - Protocol contract stamp `spec_version` moves to `0.4.5` under a pinned bump rule ([contract version](docs/protocol/autonomy.md#contract-version)).
27
+ - `task_profile.estimated_minutes` is the declared admission cap, not an expected duration ([message fields](docs/protocol/autonomy.md#message-fields)).
28
+
29
+ ### Removed
30
+
31
+ - Unsupported MCP coordinator prototype (`mcp_servers/`) and the packaged session-telemetry script; session telemetry is runtime-owned ([session telemetry](docs/protocol/runtime_capabilities.md#runtime-startup-and-session-telemetry)).
32
+
33
+ ### Fixed
34
+
35
+ - `oacp doctor --fix` creates `status.yaml` from the packaged `agent_status` template on wheel installs ([agent status](docs/guides/doctor.md#7-agent-status)).
36
+ - Autonomy admission prefers an unfenced `task_profile` declaration over fenced examples ([autonomy](docs/protocol/autonomy.md#message-fields)).
37
+ - Claude envelope accounting recognizes dashed and undashed runtime scratchpad roots without exempting sibling paths ([autonomy](docs/protocol/autonomy.md#envelope-compilation-phase-2)).
38
+ - Autonomy finalization requires the receiver's work-start stamp and flags legacy terminal receipts that omit it ([autonomy](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
39
+ - `oacp autonomy-finalize` resolves the receiver policy from the record, so sender re-authorizations arbitrate under the receiver's verified caps instead of failing closed ([re-authorization channels](docs/protocol/autonomy.md#re-authorization-channels-and-arbitration)).
40
+ - `oacp autonomy-outcome` records a checkpoint clear without overwriting the admission outcome, and refuses writes to records closed by completion evidence ([human outcomes](docs/protocol/autonomy.md#human-approval-and-decline-outcomes)).
41
+ - Codex session initialization preserves configured capabilities across its own rewrites and records an explicit unknown model when hook metadata is unavailable ([runtime capabilities](docs/protocol/runtime_capabilities.md#dynamic-status-schema)).
42
+ - Codex agent setup publishes every message type the Codex inbox workflow handles, leaving other runtime cards unchanged ([agent profiles](docs/protocol/agent_profiles.md#relationship-to-existing-agent-cards)).
43
+ - Claude agent setup publishes every message type the Claude inbox workflow handles, on new and existing project cards ([agent profiles](docs/protocol/agent_profiles.md#relationship-to-existing-agent-cards)).
44
+ - Claude agent scaffolding records an explicit unknown model instead of echoing the runtime name into `status.yaml` ([runtime capabilities](docs/protocol/runtime_capabilities.md#dynamic-status-schema)).
45
+
10
46
  ## [0.4.4] - 2026-08-28
11
47
 
12
48
  The central debrief store is the headline change: every agent's full end-of-session debrief now lands in the kernel-owned, append-only `org-memory/debriefs/<project>/<YYYY>/<MM>/` layout — one immutable file per session — instead of per-project trees, with `oacp org-memory init` creating the store and `oacp doctor` checking its setup ([org memory](docs/protocol/org_memory.md#debrief-store)).
@@ -807,6 +843,8 @@ The central debrief store is the headline change: every agent's full end-of-sess
807
843
  - Checkout step in github-release workflow job (#19)
808
844
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
809
845
 
846
+ [0.4.6]: https://github.com/kiloloop/oacp/compare/v0.4.5...v0.4.6
847
+ [0.4.5]: https://github.com/kiloloop/oacp/compare/v0.4.4...v0.4.5
810
848
  [0.4.4]: https://github.com/kiloloop/oacp/compare/v0.4.3...v0.4.4
811
849
  [0.4.3]: https://github.com/kiloloop/oacp/compare/v0.4.2...v0.4.3
812
850
  [0.4.2]: https://github.com/kiloloop/oacp/compare/v0.4.1...v0.4.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: oacp-cli
3
- Version: 0.4.4
3
+ Version: 0.4.6
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
@@ -48,7 +48,7 @@ $ uv tool install oacp-cli
48
48
  ## See it in action
49
49
 
50
50
  <p align="center">
51
- <img src="docs/img/oacp-cli-demo.png" alt="oacp send + watch terminal demo" width="584" />
51
+ <img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-cli-demo.png" alt="oacp send + watch terminal demo" width="584" />
52
52
  </p>
53
53
 
54
54
  The CLI ships structured tasks between agents and lets you watch the conversation in real time.
@@ -56,7 +56,7 @@ The CLI ships structured tasks between agents and lets you watch the conversatio
56
56
  ## Live agent fleet
57
57
 
58
58
  <p align="center">
59
- <img src="docs/img/oacp-fleet-thread.png" alt="claude / codex / gemini fleet with PR #42 review thread" width="650" />
59
+ <img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-fleet-thread.png" alt="claude / codex / gemini fleet with PR #42 review thread" width="650" />
60
60
  </p>
61
61
 
62
62
  Every multi-agent thread is a sequence of typed messages — `review_request`, `review_feedback`, `review_addressed`, `review_lgtm` — with explicit quality gates.
@@ -84,7 +84,7 @@ PROJECT · my-app ● live
84
84
  ## Filesystem as protocol
85
85
 
86
86
  <p align="center">
87
- <img src="docs/img/oacp-filesystem-tree.png" alt="$OACP_HOME directory tree with inbox/outbox/memory/artifacts" width="526" />
87
+ <img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-filesystem-tree.png" alt="$OACP_HOME directory tree with inbox/outbox/memory/artifacts" width="526" />
88
88
  </p>
89
89
 
90
90
  Everything is plain files in `$OACP_HOME`. Agents have `inbox/`, `outbox/`, `dead_letter/`. Projects have shared `memory/` (durable) and per-thread `artifacts/`, `checkpoints/`, `packets/`. Org-wide knowledge lives in `$OACP_HOME/org-memory/`.
@@ -115,7 +115,7 @@ $OACP_HOME/projects/my-app/ ● writing
115
115
  workspace.json metadata [json]
116
116
 
117
117
  $OACP_HOME/org-memory/ org-wide
118
- recent.md auto-loaded [⌘]
118
+ recent.md on demand [⌘]
119
119
  rules.md 12 rules [⌘]
120
120
  decisions.md org decisions [⌘]
121
121
  ```
@@ -320,9 +320,6 @@ oacp/
320
320
  └── SPEC.md # Full protocol specification
321
321
  ```
322
322
 
323
- [`mcp_servers/`](mcp_servers/) contains experimental, unsupported prototypes;
324
- it is not part of the OACP product surface.
325
-
326
323
  ## Related
327
324
 
328
325
  - **[agent-estimate](https://github.com/kiloloop/agent-estimate)** — Estimate how long agent tasks take. Pairs with OACP dispatch for task sizing.
@@ -376,12 +373,16 @@ Optionally, `oacp org-memory init` creates org-level shared memory:
376
373
 
377
374
  ```
378
375
  $OACP_HOME/org-memory/
379
- ├── recent.md # Always-loaded rolling summary
376
+ ├── recent.md # Rolling summary, retrieved on demand
380
377
  ├── decisions.md # Org-wide decisions
381
378
  ├── rules.md # Standing conventions
382
379
  └── events/ # Timestamped event entries
383
380
  ```
384
381
 
382
+ Init loads the four active project memory files. Org memory is retrieved on
383
+ demand; syncing it to disk does not load it into context. See
384
+ [project context and org-memory retrieval](docs/guides/memory-context.md).
385
+
385
386
  ## Development
386
387
 
387
388
  ```bash
@@ -108,6 +108,11 @@ sequentially. If hooks are unavailable, run the manual fallback:
108
108
  oacp session-init --pull-memory --project my-first-project
109
109
  ```
110
110
 
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.
115
+
111
116
  Runtime setup does not install an automatic memory push. Publish durable memory
112
117
  explicitly during wrap-up with `oacp memory push`.
113
118
 
@@ -20,7 +20,7 @@ $ uv tool install oacp-cli
20
20
  ## See it in action
21
21
 
22
22
  <p align="center">
23
- <img src="docs/img/oacp-cli-demo.png" alt="oacp send + watch terminal demo" width="584" />
23
+ <img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-cli-demo.png" alt="oacp send + watch terminal demo" width="584" />
24
24
  </p>
25
25
 
26
26
  The CLI ships structured tasks between agents and lets you watch the conversation in real time.
@@ -28,7 +28,7 @@ The CLI ships structured tasks between agents and lets you watch the conversatio
28
28
  ## Live agent fleet
29
29
 
30
30
  <p align="center">
31
- <img src="docs/img/oacp-fleet-thread.png" alt="claude / codex / gemini fleet with PR #42 review thread" width="650" />
31
+ <img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-fleet-thread.png" alt="claude / codex / gemini fleet with PR #42 review thread" width="650" />
32
32
  </p>
33
33
 
34
34
  Every multi-agent thread is a sequence of typed messages — `review_request`, `review_feedback`, `review_addressed`, `review_lgtm` — with explicit quality gates.
@@ -56,7 +56,7 @@ PROJECT · my-app ● live
56
56
  ## Filesystem as protocol
57
57
 
58
58
  <p align="center">
59
- <img src="docs/img/oacp-filesystem-tree.png" alt="$OACP_HOME directory tree with inbox/outbox/memory/artifacts" width="526" />
59
+ <img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-filesystem-tree.png" alt="$OACP_HOME directory tree with inbox/outbox/memory/artifacts" width="526" />
60
60
  </p>
61
61
 
62
62
  Everything is plain files in `$OACP_HOME`. Agents have `inbox/`, `outbox/`, `dead_letter/`. Projects have shared `memory/` (durable) and per-thread `artifacts/`, `checkpoints/`, `packets/`. Org-wide knowledge lives in `$OACP_HOME/org-memory/`.
@@ -87,7 +87,7 @@ $OACP_HOME/projects/my-app/ ● writing
87
87
  workspace.json metadata [json]
88
88
 
89
89
  $OACP_HOME/org-memory/ org-wide
90
- recent.md auto-loaded [⌘]
90
+ recent.md on demand [⌘]
91
91
  rules.md 12 rules [⌘]
92
92
  decisions.md org decisions [⌘]
93
93
  ```
@@ -292,9 +292,6 @@ oacp/
292
292
  └── SPEC.md # Full protocol specification
293
293
  ```
294
294
 
295
- [`mcp_servers/`](mcp_servers/) contains experimental, unsupported prototypes;
296
- it is not part of the OACP product surface.
297
-
298
295
  ## Related
299
296
 
300
297
  - **[agent-estimate](https://github.com/kiloloop/agent-estimate)** — Estimate how long agent tasks take. Pairs with OACP dispatch for task sizing.
@@ -348,12 +345,16 @@ Optionally, `oacp org-memory init` creates org-level shared memory:
348
345
 
349
346
  ```
350
347
  $OACP_HOME/org-memory/
351
- ├── recent.md # Always-loaded rolling summary
348
+ ├── recent.md # Rolling summary, retrieved on demand
352
349
  ├── decisions.md # Org-wide decisions
353
350
  ├── rules.md # Standing conventions
354
351
  └── events/ # Timestamped event entries
355
352
  ```
356
353
 
354
+ Init loads the four active project memory files. Org memory is retrieved on
355
+ demand; syncing it to disk does not load it into context. See
356
+ [project context and org-memory retrieval](docs/guides/memory-context.md).
357
+
357
358
  ## Development
358
359
 
359
360
  ```bash
@@ -0,0 +1,72 @@
1
+ # Project context and org-memory retrieval
2
+
3
+ Load the active project memory at init. Retrieve org memory when a task needs
4
+ shared rules, decisions, or recent cross-project context. Org-wide history can
5
+ grow independently of the small project working set.
6
+
7
+ | Store | Context policy |
8
+ |---|---|
9
+ | `projects/<project>/memory/` | Read `project_facts.md`, `decision_log.md`, `open_threads.md`, and `known_debt.md` in order at init. |
10
+ | `projects/<project>/memory/archive/` | Historical detail; follow a relevant reference when needed. |
11
+ | `org-memory/` | Search relevant topical files and read matching sections on demand. |
12
+
13
+ ## Initialization and synchronization
14
+
15
+ Step 3 of the session-init protocol requires the four project files. In
16
+ Codex, the init command verifies three
17
+ protocol files and those four project files, then emits a manifest. The agent
18
+ still performs the ordered reads; verification does not inject their contents.
19
+ Missing project files are reported under the existing degraded-init behavior.
20
+
21
+ `oacp memory pull` synchronizes the memory repository on disk, including org
22
+ memory and its history. A successful pull does not add those files to model
23
+ context. Keep any configured pull before project-memory reads so those reads
24
+ use the refreshed files. Sync selection and context selection are independent;
25
+ there is no need to remove org memory from sync to avoid eager loading.
26
+
27
+ Hook enablement remains an adopter choice. This retrieval policy works with a
28
+ trusted startup hook or a manual init invocation. It does not require enabling
29
+ a hook that the project has disabled.
30
+
31
+ ## Retrieve org context for a task
32
+
33
+ 1. Resolve the configured OACP root and the org's topical filenames. Common
34
+ choices are `rules.md`, `decisions.md`, and `recent.md`; adopters can use
35
+ others. Read applicable standing rules and decisions before the actions
36
+ they govern, such as release, review authority, or architecture work.
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
39
+ freshness unknown; report that limitation before relying on affected facts.
40
+ 3. Search the relevant explicit files with task identifiers and topic terms.
41
+ For example, after confirming that `rules.md` exists:
42
+
43
+ ```bash
44
+ OACP_ROOT="${OACP_HOME:-$HOME/oacp}"
45
+ rg -n -- 'release|version' "$OACP_ROOT/org-memory/rules.md"
46
+ ```
47
+
48
+ 4. Read the full matching sections, including qualifications and provenance.
49
+ Follow relevant source links when needed; avoid loading unrelated history
50
+ or recursively reading `events/` and `debriefs/`. Read `recent.md` sections
51
+ when recent org-wide changes matter to the task.
52
+ 5. A search miss does not establish that no rule applies. Inspect relevant
53
+ headings or linked topic files when needed. Missing or unreadable files
54
+ are evidence gaps, not permission to bypass a known requirement. Verify
55
+ stale or conflicting claims against their authoritative sources.
56
+
57
+ Runtime/project guidance may explicitly opt into a bounded startup summary.
58
+ The `recent.md` curation budget is a storage-maintenance guideline, not a
59
+ startup context budget. Keep required project reads intact even when org
60
+ retrieval is deferred.
61
+
62
+ ## Update an existing installation
63
+
64
+ Updated scaffolds apply to newly created files. Runtime setup and org-memory
65
+ initialization preserve existing guidance and curated content; upgrading does
66
+ not rewrite an old `Always-loaded` comment or a local mandatory-org-read rule.
67
+
68
+ Review existing runtime instructions and summary comments explicitly. Keep the
69
+ four project reads, replace blanket org-memory startup reads with the task-based
70
+ policy above, and retain the underlying rules, decisions, history, and sync
71
+ configuration. Avoid rerunning runtime setup solely to change prose: setup can
72
+ register hooks, including ones an adopter intentionally disabled.
@@ -17,7 +17,11 @@ The `oacp-cli` package follows semantic versioning:
17
17
  `__version__` at runtime via `importlib.metadata`, so `oacp --version` always
18
18
  reports the installed package version — the version number itself is edited in
19
19
  exactly one file (the release-bump PR also adds the matching `CHANGELOG.md`
20
- section, see below).
20
+ section, see below). The protocol contract carries a separate stamp,
21
+ `SPEC_VERSION` in `scripts/_oacp_constants.py`, which moves only under the
22
+ contract-version rule in
23
+ [`docs/protocol/autonomy.md`](../protocol/autonomy.md#contract-version)
24
+ (step 2 below).
21
25
 
22
26
  ## Release Pipeline
23
27
 
@@ -32,25 +36,35 @@ itself, which triggers the publish workflow.
32
36
  then scan for leaks: hardcoded user paths, private repository references,
33
37
  secret patterns, and SPDX headers on all tracked Python files. All checks
34
38
  must pass before anything is exported.
35
- 2. **Version bump PR** — update the `version` in `pyproject.toml` and add a
39
+ 2. **Contract-version check** — diff `docs/protocol/*.md` and the stamp
40
+ producers (`scripts/autonomy_gate.py`, `scripts/envelope_compiler.py`,
41
+ `scripts/init_project_workspace.py`) against the last release and apply the
42
+ contract-version rule in full: a change every receiver must understand to
43
+ verify or exchange a message, or to produce and finalize an artifact
44
+ another receiver reads, moves `SPEC_VERSION` together with the spec's
45
+ `spec_version` literals and a `CHANGELOG.md` line; additive-and-ignorable
46
+ changes do not, and the release PR then records "no contract change". The
47
+ package version moves on every release, the contract stamp only when the
48
+ contract does.
49
+ 3. **Version bump PR** — update the `version` in `pyproject.toml` and add a
36
50
  `CHANGELOG.md` section in [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
37
51
  format. Gather the changes with `git log --oneline <last-tag>..HEAD`.
38
- 3. **Export to staging** — open a staging PR mirroring the development branch.
52
+ 4. **Export to staging** — open a staging PR mirroring the development branch.
39
53
  The export copies the tracked tree only (`git archive`), so gitignored
40
54
  local files never leave the development machine; rerun the leak audit on
41
55
  the staged tree before merging. Non-urgent releases soak here before
42
56
  promotion; urgent fixes may skip the soak.
43
- 4. **Promote to public** — open a promotion PR into `kiloloop/oacp` under the
57
+ 5. **Promote to public** — open a promotion PR into `kiloloop/oacp` under the
44
58
  release automation identity; a human reviews and merges it. The squash
45
59
  commit message becomes permanent public history — keep it free of internal
46
60
  references (the PR description alone is not what gets published).
47
- 5. **Tag and publish** — push an annotated `vX.Y.Z` tag to the public repo
61
+ 6. **Tag and publish** — push an annotated `vX.Y.Z` tag to the public repo
48
62
  (a direct tag push, not a PR). The tag-triggered release workflow reruns
49
63
  the checks, builds the sdist/wheel, publishes `oacp-cli` to PyPI via
50
64
  [Trusted Publishing](https://docs.pypi.org/trusted-publishers/) (OIDC — no
51
65
  long-lived API tokens), and creates the GitHub Release with notes from the
52
66
  CHANGELOG section.
53
- 6. **Verify** — check the version-pinned endpoint
67
+ 7. **Verify** — check the version-pinned endpoint
54
68
  `https://pypi.org/pypi/oacp-cli/<version>/json` first; the unversioned
55
69
  "latest" endpoint and the pip simple index can lag a few minutes behind it.
56
70
  Then install and confirm `oacp --version` prints the new version. On a
@@ -18,7 +18,7 @@ Cross-agent baseline safety rules. All agents (Claude, Codex, Cursor, Gemini) fo
18
18
 
19
19
  ## Inbox Safety
20
20
 
21
- - **Delete inbox messages immediately after processing.** For messages that require a reply (`task_request`, `question`, `review_request`), "processed" means reply sent. For `notification` messages, "processed" means read and acknowledged — no reply needed, delete right away. Do not let processed messages accumulate in the inbox.
21
+ - **Follow the canonical [inbox lifecycle](inbox_outbox.md#lifecycle).** Complete required replies and terminal audit before atomically archiving the exact processed file without overwriting an archive entry. Changed bytes or failed archival leave input pending; a successful reply alone is not permission to delete it.
22
22
  - **Never silently consume a message that expects a response** — `task_request`, `question`, and `review_request` always require a reply. `notification` is no-response by default, but requires ack/reply when it reports findings or issues.
23
23
  - **Always reply** using `oacp send` with `--parent-message-id` to maintain threading.
24
24
  - **Idempotent sends** — before sending a response message (e.g., `review_feedback`, `review_addressed`, `review_request`), check the recipient's inbox and your own outbox for an already-sent message matching the same PR + round + type. Skip the send if a duplicate exists. This prevents retry storms when an agent crashes after sending a message but before completing the full workflow, and is re-invoked.
@@ -106,6 +106,10 @@ schema-invalid profile pauses with `task_profile_unparsable`; it is not a fatal
106
106
  message-schema error. Message types listed in `allow_without_task_profile`, such
107
107
  as `brainstorm_request`, may auto-accept without the block.
108
108
 
109
+ | Optional profile field | Meaning |
110
+ | --- | --- |
111
+ | `expected_pauses` | List of pause reason codes the sender expects to fire, for example `[estimated_minutes_exceeds_threshold, merges_pr_pause]`. Advisory only: unknown codes or malformed values produce declaration warnings, not new admission reasons. Existing safety checks still apply to the whole message. See [pause classification](#pause-classification). |
112
+
109
113
  `expected_files_touched` counts distinct deliverable files only: files created
110
114
  or modified as part of the requested outcome or a review-required correction.
111
115
  Exclude receiver-local inbox, outbox, audit, memory, cache, and scratch writes
@@ -115,6 +119,17 @@ receiver also writes an audit record, reply body, and cache entries; a
115
119
  reply-only analysis that uses scratch files but produces no file deliverable
116
120
  declares `0`.
117
121
 
122
+ `estimated_minutes` is the **declared admission cap**, not an expected-duration
123
+ estimate: it is the value Gate 2 compares against `max_estimated_minutes`, and
124
+ the bound the post-accept checkpoint measures `actual_minutes` against. A
125
+ sender that tracks expected duration separately keeps it out of the profile
126
+ (for example as provenance prose in the brief), and any future
127
+ expected-duration field is a distinct key, so an adapter that maps a caller's
128
+ declared cap onto `estimated_minutes` never inverts. For example, a leg
129
+ expected to take 25 minutes that is declared under a two-round review
130
+ multiplier carries `estimated_minutes: 50`: the gate admits against 50, and
131
+ the checkpoint fires past 50, not 25.
132
+
118
133
  ### Default scope envelope (profileless admissions)
119
134
 
120
135
  `allow_without_task_profile` is an **admission-only exemption**: the sender
@@ -307,7 +322,7 @@ Every autonomy decision writes one YAML file:
307
322
 
308
323
  ```yaml
309
324
  schema_version: 2
310
- spec_version: "0.4.3"
325
+ spec_version: "0.4.5"
311
326
  created_at_utc: "2026-05-12T13:23:25Z"
312
327
  receiver: codex
313
328
  sender: iris
@@ -418,23 +433,43 @@ signer_kid, reason}` — the policy-file authorization outcome (see
418
433
  `policy_sha256` the record commits to an *authorized* policy identity,
419
434
  not just which bytes ran. An `invalid` status fails closed with reason
420
435
  code `policy_auth_invalid` before any gate consumes the config.
421
- `spec_version: "0.4.3"` preserves every autonomy field and rule pinned by
422
- 0.4.2 — Gate 1 integrity
423
- enforcement, the recalibrated Gate 2/3 policy, full task-profile capture, the
424
- explicit `breached` list, the outcome block shown above, session-scoped
425
- envelope enforcement, the enforce-mode trust-pin completeness gate, and
426
- preserved `always_pause` defaults for configs without an `autonomy` block —
427
- plus intake verification as mechanism (`verify_mode: enforce` rejects at
428
- the gate), the `policy_auth` authorized-policy block, the default scope
429
- envelope for profileless admissions (with `scope_envelope_source` and the
430
- null-on-admitted writer refusal), and the recorded none-by-rule
431
- enforcement branch for approved public-visibility tasks. The spec version
432
- advances because 0.4.3 adds the project-wide message-retention policy and the
433
- processed-inbound archive convention; autonomy semantics are unchanged. Audit
434
- `schema_version: 2` adds thread identity and
435
- the structured `result.human_outcome` block. Recorders may upgrade a v1 audit
436
- to v2 when the first human outcome is written; standing grants trust only v2
437
- records.
436
+ Audit `schema_version: 2` adds thread identity and the structured
437
+ `result.human_outcome` block. Recorders may upgrade a v1 audit to v2 when the
438
+ first human outcome is written; standing grants trust only v2 records.
439
+
440
+ | Optional audit evidence | Meaning |
441
+ | --- | --- |
442
+ | `pause_classification`, `expected_pause_codes`, `unplanned_pause_codes` | The paused decision's comparison against the sender's expected reasons; see [pause classification](#pause-classification). Older v2 records may omit all three. |
443
+ | `result.human_outcome.modification` | Free-form YAML mapping recording what the human changed, such as `task_profile: {estimated_minutes: 60}` and `note: "Allow the larger task"`. Written by `--modification-file`; evidence only, with no effect on the scope envelope, standing grants, or checkpoint enforcement. |
444
+
445
+ ### Contract version
446
+
447
+ `spec_version` names the protocol contract an artifact was produced under.
448
+ The tooling stamps one value — `SPEC_VERSION` in `scripts/_oacp_constants.py`
449
+ — into audit records, compiled envelopes, and `workspace.json` at workspace
450
+ init, and the `spec_version` literals in this document move with it.
451
+
452
+ The stamp moves by the kernel admission test. A release advances
453
+ `spec_version` when it adds or changes something every receiver must
454
+ understand to verify or exchange a message, or to produce and finalize an
455
+ artifact another receiver reads: a key a receiver must stamp, a changed
456
+ meaning of an existing field, or a block that enforcement or finalization now
457
+ reads. Additive-and-ignorable changes — an advisory, an optional provenance
458
+ key, a value a reader may skip without changing its decision — do not move it,
459
+ and neither do userland or tooling changes. The value is the `oacp-cli`
460
+ version of the release that carries the move, and every release states the
461
+ outcome in its notes: the new stamp, or "no contract change".
462
+
463
+ History: 0.4.3 preserved every autonomy field and rule pinned by 0.4.2 and
464
+ advanced the stamp for the project-wide message-retention policy and the
465
+ processed-inbound archive convention. 0.4.4 added the receiver-stamped
466
+ `work_started_at_utc` work clock and the checkpoint `reauthorization` block
467
+ that enforcement reads, which moved the contract, but shipped with the stamp
468
+ unchanged; 0.4.5 carries that move and makes the work clock mandatory at
469
+ terminal finalization. Records, envelopes, and workspaces written between the
470
+ 0.4.4 release (2026-08-28) and the 0.4.5 release are therefore stamped
471
+ `0.4.3` under a contract that had already moved — readers tolerate that
472
+ stamp on artifacts dated in the window and read them by the 0.4.5 shape.
438
473
 
439
474
  `evaluator` is **gate-emitted, not receiver-composed**: the evaluator
440
475
  self-stamps its provenance into every decision it returns, and receivers
@@ -484,6 +519,40 @@ deduplicated against `reason_codes`, and empty on auto-accepted decisions.
484
519
  Threshold-calibration analytics should read `reason_codes` and
485
520
  `co_occurring_reason_codes` together.
486
521
 
522
+ ### Pause classification
523
+
524
+ Every new paused evaluation records `pause_classification`,
525
+ `expected_pause_codes`, and `unplanned_pause_codes` as additive audit evidence.
526
+ The fired set contains only pause reasons in that decision's `reason_codes`.
527
+ Evidence codes such as `message_valid` and `schema_valid`, co-occurring reasons,
528
+ and lexical notes never enter this set.
529
+
530
+ | Declaration and fired reasons | Classification |
531
+ | --- | --- |
532
+ | `expected_pauses` absent | `undeclared` |
533
+ | Every fired pause reason is expected | `designed` |
534
+ | No fired pause reason is expected | `unplanned` |
535
+ | Some, but not all, fired pause reasons are expected | `mixed` |
536
+
537
+ `expected_pause_codes` preserves declared string entries, including unknown
538
+ codes; unknown codes are ignored for comparison and recorded as declaration
539
+ warnings in `logged_notes`.
540
+ An absent or malformed declaration contributes no expected reasons.
541
+ `unplanned_pause_codes` lists the fired reasons minus the recognized expected
542
+ reasons.
543
+ All message text, including the advisory value, remains subject to existing
544
+ lexical safety checks.
545
+ An unknown declaration adds no admission reason of its own, but a destructive
546
+ token inside it still fires the same hard stop as that token elsewhere.
547
+ The declaration cannot authorize work or suppress a fired pause.
548
+
549
+ These fields and `human_outcome.modification` are additive and ignorable within
550
+ audit schema v2: existing records validate unchanged, and readers may ignore the
551
+ fields without changing an admission, finalization, doctor, or enforcement
552
+ decision.
553
+ There is no contract change under the [version rule](#contract-version).
554
+ Historical records are not backfilled.
555
+
487
556
  ### Lexical provenance
488
557
 
489
558
  `matched_patterns` is a source-ordered list of every autonomy lexical match,
@@ -612,6 +681,18 @@ pause moment, and locks the full read-modify-write sequence before an atomic
612
681
  replacement. It refuses to overwrite a recorded outcome unless `--replace` is
613
682
  explicit. `decision` is `approved`, `modified`, or `declined`.
614
683
 
684
+ | Flag | Meaning |
685
+ | --- | --- |
686
+ | `--modification-file <yaml>` | With `--decision modified`, read a free-form YAML mapping into `result.human_outcome.modification`. Without the file, the modified decision still records and prints a one-line `modification unrecorded` warning. |
687
+
688
+ An empty mapping is valid.
689
+ A missing, unreadable, invalid-YAML, or non-mapping file leaves the audit
690
+ unchanged, as does using the flag with a decision other than `modified`.
691
+ The payload records the human's delta without applying it to the original
692
+ scope envelope or creating a standing grant.
693
+ It cannot replace the earlier outcome when the command routes to a checkpoint
694
+ clear; scoped checkpoint changes still use the re-authorization path below.
695
+
615
696
  The recorder is state-aware about where the pause moment lives:
616
697
 
617
698
  - **Admission pauses** (`completion_kind: admission_paused`): the record was
@@ -635,6 +716,32 @@ shape must itself carry `checkpoint_paused` (the checkpoint
635
716
  re-evaluation is what updated the result block; any other kind there is
636
717
  refused as inconsistent).
637
718
 
719
+ On a checkpoint pause whose record **already carries a recorded human
720
+ outcome** (typically the admission approval), the new decision is a
721
+ checkpoint clear, and the recorder routes it into
722
+ `result.threshold_checkpoint.reauthorization` as a scope-less
723
+ `receiver_human` answer through the same arbitration the checkpoint
724
+ evaluator uses — a fresh approval lands as `disposition: resumed`, a
725
+ decline as `declined` — while the recorded outcome (timestamp, latency,
726
+ reason codes, and any standing grant resolved from its `grant` block)
727
+ survives untouched. `--replace` is refused in that state: it would
728
+ destroy the admission ledger entry, and can revoke a standing
729
+ continuation grant as a side effect. The recorder mutates only **live**
730
+ records, on both of its routes: a record already closed by completion
731
+ evidence (a terminal `final_state`, or `completed_at_utc`) is
732
+ historical evidence and refuses every human-outcome write — checkpoint
733
+ clear and admission answer alike — byte-identically. A historical
734
+ correction is a deliberate finalizer supersession, never a rewrite. A
735
+ recorder-based clear is
736
+ scope-less by construction; a scoped budget or boundary-action grant
737
+ goes through `oacp autonomy-finalize --checkpoint` with
738
+ `reauthorization.receiver_human.scope`. The validator flags the damage
739
+ signature of the pre-routing overwrite (an admission-paused record whose
740
+ only recorded outcome answers a checkpoint pause) as the advisory
741
+ `admission_outcome_replaced_by_checkpoint_clear` — advisory, not error,
742
+ because records written before this routing existed had no
743
+ non-destructive way to record the clear.
744
+
638
745
  Latency values on checkpoint records written before `paused_at_utc` existed
639
746
  measure from admission and are not comparable with post-fix records.
640
747
 
@@ -673,7 +780,7 @@ oacp autonomy-finalize <audit.yaml> --checkpoint --actuals <actuals.yaml>
673
780
 
674
781
  # terminal update
675
782
  oacp autonomy-finalize <audit.yaml> --final-state done \
676
- --actual-minutes 30 --actual-files-touched 3 \
783
+ --started-at <YYYY-MM-DDTHH:MM:SSZ> --actual-files-touched 3 \
677
784
  --realized creates_or_updates_pr --realized commits_changes \
678
785
  --reply-message-id <msg-id>
679
786
  ```
@@ -683,6 +790,37 @@ duplicate live evaluations, and terminal records still carrying a paused
683
790
  checkpoint action; the finalizer enforces the pinned enums and
684
791
  cross-field invariants at write time, under the shared audit lock.
685
792
 
793
+ The finalizer resolves the receiver's admission policy for
794
+ re-authorization arbitration from the record's `policy_path` (override
795
+ with `--config`), so sender_reply answers are capped at the receiver's
796
+ thresholds instead of extending nothing. The read goes through the
797
+ authorized policy path (one bounded snapshot: signature, receiver and
798
+ context binding, and enrollment downgrade resistance verified, then
799
+ parsed from those same bytes) — a policy that fails authorization
800
+ grants nothing. When the policy cannot be resolved or authorized and
801
+ the actuals present a sender answer, the degradation is surfaced on
802
+ stderr and the sender channel stays fail-closed (an explicit `--config`
803
+ that fails is a hard error that leaves the record unchanged); the
804
+ receiver_human channel is unaffected either way.
805
+
806
+ **Work-clock binding and writer provenance.** Canonical checkpoint and
807
+ `done`/`error` writes require `result.work_started_at_utc`. The first write may
808
+ supply it with `--started-at` (or the equivalent actuals field); later writes
809
+ reuse the record stamp automatically. An explicit value that conflicts with
810
+ the existing stamp is refused, and omitting both sources is an error. With a
811
+ stamp present, omitting `actual_minutes` derives it from the active work clock.
812
+ Each successful canonical write stamps `result.finalizer` with
813
+ `name: oacp autonomy-finalize` and `schema_version: 1`; supersession is exempt
814
+ because it transfers authority rather than reporting task execution. The
815
+ marker lets validation enforce the required clock on new receipts without
816
+ rewriting history: an unmarked legacy terminal receipt with no start gets the
817
+ advisory `terminal_missing_work_started_at`, while a marked checkpoint or
818
+ terminal receipt missing it gets the error
819
+ `canonical_writer_missing_work_started_at`. A malformed marker is
820
+ `invalid_finalizer_provenance`. Legacy terminal receipts remain byte-preserved;
821
+ correct one through a linked superseding evaluation rather than rewriting it
822
+ in place with `--replace`.
823
+
686
824
  **Run-state vocabulary.** `result.final_state` splits by lifecycle phase:
687
825
  `pending`, `paused`, and `blocked` are live states; `done`, `superseded`,
688
826
  and `error` are terminal. Only terminal states can be finalized.
@@ -792,8 +930,10 @@ reports pinned finding codes (`off_enum_completion_kind`,
792
930
  `terminal_paused_without_outcome`, `superseded_missing_successor`,
793
931
  `breached_empty_fields`, `invalid_human_outcome`,
794
932
  `decision_kind_incoherent`, `off_enum_breach_basis`,
795
- `breach_basis_incoherent`, `record_unparsable`; advisory:
796
- `noncanonical_checkpoint_axis`, `terminal_missing_actuals`), and
933
+ `breach_basis_incoherent`, `canonical_writer_missing_work_started_at`,
934
+ `invalid_finalizer_provenance`, `record_unparsable`; advisory:
935
+ `noncanonical_checkpoint_axis`, `terminal_missing_actuals`,
936
+ `terminal_missing_work_started_at`), and
797
937
  `oacp doctor` sweeps every receiver's audit directory with the same
798
938
  checks. Duplicate YAML keys are refused
799
939
  outright — plain YAML loading silently keeps the later value. The
@@ -899,7 +1039,10 @@ the hard stop.
899
1039
  ## Threshold-Exceeded Checkpoint
900
1040
 
901
1041
  `result.work_started_at_utc` is the receiver-stamped time of its first action
902
- on that task. `actual_minutes` is active wall-clock time from that stamp to
1042
+ on that task. The canonical finalizer requires that stamp on every checkpoint
1043
+ and `done`/`error` write, reuses the record's value when the caller omits
1044
+ `--started-at`, and rejects a conflicting replacement. `actual_minutes` is
1045
+ active wall-clock time from that stamp to
903
1046
  completion or the current checkpoint, rounded up to a whole minute, excluding
904
1047
  each represented re-authorization pause from `paused_at_utc` through
905
1048
  `cleared_paused_at_utc`. If a terminal outcome leaves that pause uncleared,
@@ -1057,7 +1200,9 @@ Arbitration rules:
1057
1200
  visibility) are receiver-side authority only, on the scoped and
1058
1201
  scope-less paths alike. The party whose under-declaration caused the
1059
1202
  breach cannot self-serve unlimited scope. Without a resolvable receiver
1060
- policy the sender channel extends nothing (fail closed).
1203
+ policy the sender channel extends nothing (fail closed) — the finalizer
1204
+ resolves the policy from the record's `policy_path`, overridable with
1205
+ `--config`.
1061
1206
  - **GH comments never clear a checkpoint.** They sit outside the protocol's
1062
1207
  identity and verification boundary; any decision they carry is recorded as
1063
1208
  advisory, and a checkpoint answered only by a GH comment stays paused.
@@ -1240,7 +1385,7 @@ The envelope is written to
1240
1385
  ```json
1241
1386
  {
1242
1387
  "envelope_version": 1,
1243
- "spec_version": "0.4.3",
1388
+ "spec_version": "0.4.5",
1244
1389
  "compiler": "envelope_compiler.py",
1245
1390
  "compiled_at_utc": "2026-07-12T02:00:00Z",
1246
1391
  "project": "my-project",