oacp-cli 0.4.5__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 (469) hide show
  1. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/CHANGELOG.md +13 -0
  2. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/PKG-INFO +7 -3
  3. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/QUICKSTART.md +5 -0
  4. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/README.md +6 -2
  5. oacp_cli-0.4.6/docs/guides/memory-context.md +72 -0
  6. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/agent_safety_defaults.md +1 -1
  7. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/autonomy.md +55 -0
  8. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/cross_runtime_sync.md +7 -5
  9. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/dispatch_states.yaml +2 -2
  10. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/org_memory.md +14 -8
  11. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/runtime_capabilities.md +4 -0
  12. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/session_init.md +19 -9
  13. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/README.md +3 -3
  14. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/recent.md +2 -1
  15. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/pyproject.toml +3 -1
  16. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/autonomy_gate.py +73 -1
  17. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/codex_session_init.py +4 -2
  18. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/record_autonomy_outcome.py +43 -16
  19. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/setup_runtime.py +6 -3
  20. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/claude/agents/role_agent.template.md +4 -1
  21. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/recent.md +2 -1
  22. oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_designed.yaml +13 -0
  23. oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_mixed.yaml +13 -0
  24. oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_undeclared.yaml +13 -0
  25. oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_unplanned.yaml +13 -0
  26. oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_designed.yaml +20 -0
  27. oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_mixed.yaml +20 -0
  28. oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_undeclared.yaml +19 -0
  29. oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_unplanned.yaml +20 -0
  30. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_autonomy_gate.py +6 -0
  31. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_codex_session_init.py +57 -0
  32. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_envelope_compiler.py +17 -0
  33. oacp_cli-0.4.6/tests/test_expected_pauses.py +259 -0
  34. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_finalize_autonomy_record.py +23 -0
  35. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_package_content.py +20 -0
  36. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_record_autonomy_outcome.py +149 -0
  37. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_setup_runtime.py +9 -0
  38. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.gitattributes +0 -0
  39. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.github/workflows/auto-estimate.yml +0 -0
  40. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.github/workflows/ci.yml +0 -0
  41. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.github/workflows/release.yml +0 -0
  42. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.gitignore +0 -0
  43. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/CONTRIBUTING.md +0 -0
  44. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/LICENSE +0 -0
  45. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/Makefile +0 -0
  46. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/SECURITY.md +0 -0
  47. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/SPEC.md +0 -0
  48. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/from-claude-p.md +0 -0
  49. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/adoption.md +0 -0
  50. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/doctor.md +0 -0
  51. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/prompt_caching.md +0 -0
  52. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/setup.md +0 -0
  53. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/unified_skill_spec.md +0 -0
  54. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/versioning.md +0 -0
  55. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/img/oacp-cli-demo.png +0 -0
  56. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/img/oacp-filesystem-tree.png +0 -0
  57. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/img/oacp-fleet-thread.png +0 -0
  58. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/agent_profiles.md +0 -0
  59. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/credential_scoping.md +0 -0
  60. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/inbox_outbox.md +0 -0
  61. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/mcp_integration.md +0 -0
  62. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/message_signing.md +0 -0
  63. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  64. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/packet_states.yaml +0 -0
  65. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/review_loop.md +0 -0
  66. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/skills_manifest.yaml +0 -0
  67. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/task_negotiation.md +0 -0
  68. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/decisions.md +0 -0
  69. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
  70. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
  71. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
  72. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
  73. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
  74. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
  75. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/rules.md +0 -0
  76. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/archive/2026-05-21-csv-export-timeouts.md +0 -0
  77. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
  78. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
  79. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
  80. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
  81. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/quickstart/README.md +0 -0
  82. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/oacp/__init__.py +0 -0
  83. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/oacp/cli.py +0 -0
  84. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/oacp/envelope_hook.py +0 -0
  85. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/_oacp_constants.py +0 -0
  86. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/_oacp_env.py +0 -0
  87. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/add_agent.py +0 -0
  88. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/agent_profile.py +0 -0
  89. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/check_quality_gate.py +0 -0
  90. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/claude_envelope_hook.py +0 -0
  91. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/envelope_compiler.py +0 -0
  92. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/finalize_autonomy_record.py +0 -0
  93. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/gen_readme_commands.py +0 -0
  94. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/handoff_schema.py +0 -0
  95. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/init_org_memory.py +0 -0
  96. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/init_packet.sh +0 -0
  97. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/init_project_workspace.py +0 -0
  98. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/key_cli.py +0 -0
  99. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/memory_archive_common.py +0 -0
  100. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/memory_cli.py +0 -0
  101. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/memory_sync.py +0 -0
  102. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/message_signing.py +0 -0
  103. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/message_verify.py +0 -0
  104. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/oacp_doctor.py +0 -0
  105. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/oacp_inbox.py +0 -0
  106. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/oacp_watch.py +0 -0
  107. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/policy_signing.py +0 -0
  108. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/preflight.py +0 -0
  109. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/promote_to_archive.py +0 -0
  110. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/restore_from_archive.py +0 -0
  111. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/retention.py +0 -0
  112. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/send_inbox_message.py +0 -0
  113. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/trust_cli.py +0 -0
  114. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/trust_root.py +0 -0
  115. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/update_workspace.sh +0 -0
  116. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/validate_agent_card.py +0 -0
  117. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/validate_message.py +0 -0
  118. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/write_event.py +0 -0
  119. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/agent_card.template.yaml +0 -0
  120. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/agent_profile.template.yaml +0 -0
  121. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/agent_status.template.yaml +0 -0
  122. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/checkpoint.template.md +0 -0
  123. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/claude/rules/guardrail.template.md +0 -0
  124. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/findings_packet.template.yaml +0 -0
  125. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/github_actions_quality_gate.yaml +0 -0
  126. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/guardrails/coding_standards.template.md +0 -0
  127. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/guardrails/safe_commands.template.md +0 -0
  128. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/guardrails/secrets_rules.template.md +0 -0
  129. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/handoff_packet.template.yaml +0 -0
  130. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/inbox_message.template.yaml +0 -0
  131. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/manual_validation.template.md +0 -0
  132. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/merge_decision.template.md +0 -0
  133. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/decisions.md +0 -0
  134. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/events/.gitkeep +0 -0
  135. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
  136. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/rules.md +0 -0
  137. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/receiver_config.template.yaml +0 -0
  138. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/review_packet.template.md +0 -0
  139. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/roles/role_baseline.template.md +0 -0
  140. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/roles/role_definition.template.yaml +0 -0
  141. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/runtime_capabilities.yaml +0 -0
  142. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/skills_manifest.template.yaml +0 -0
  143. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/test_packet.template.md +0 -0
  144. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/README.md +0 -0
  145. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
  146. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
  147. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
  148. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
  149. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
  150. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +0 -0
  151. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_conflict.yaml +0 -0
  152. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +0 -0
  153. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_reuse.yaml +0 -0
  154. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +0 -0
  155. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +0 -0
  156. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/review_live_head_mismatch.yaml +0 -0
  157. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/review_live_head_prefix.yaml +0 -0
  158. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
  159. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_addressed_accepted.yaml +0 -0
  160. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_addressed_types.yaml +0 -0
  161. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_approved.yaml +0 -0
  162. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_denied_later.yaml +0 -0
  163. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_denied_postmessage.yaml +0 -0
  164. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
  165. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
  166. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
  167. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
  168. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
  169. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
  170. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
  171. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
  172. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
  173. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
  174. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
  175. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +0 -0
  176. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
  177. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +0 -0
  178. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +0 -0
  179. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +0 -0
  180. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +0 -0
  181. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +0 -0
  182. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +0 -0
  183. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
  184. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
  185. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
  186. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
  187. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
  188. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
  189. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +0 -0
  190. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
  191. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
  192. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
  193. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
  194. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
  195. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
  196. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
  197. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
  198. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +0 -0
  199. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
  200. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
  201. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
  202. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
  203. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
  204. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
  205. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
  206. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
  207. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
  208. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
  209. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
  210. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
  211. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
  212. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
  213. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
  214. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
  215. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
  216. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
  217. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
  218. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
  219. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
  220. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
  221. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
  222. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
  223. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_accepted_auto_continues.yaml +0 -0
  224. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_disabled_pauses.yaml +0 -0
  225. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_drift_pauses.yaml +0 -0
  226. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_expired_pauses.yaml +0 -0
  227. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_head_mismatch_records.yaml +0 -0
  228. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_later_round_pauses.yaml +0 -0
  229. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_missing_approval_pauses.yaml +0 -0
  230. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_prefix_head_records.yaml +0 -0
  231. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_repeated_addressed_round_exceeded.yaml +0 -0
  232. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_revoke_before_processing_pauses.yaml +0 -0
  233. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_revoked_pauses.yaml +0 -0
  234. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
  235. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +0 -0
  236. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
  237. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
  238. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
  239. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
  240. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
  241. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/ledger_replay/corpus.yaml +0 -0
  242. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
  243. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
  244. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
  245. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
  246. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
  247. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
  248. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
  249. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
  250. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/declaration_error_admission.yaml +0 -0
  251. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
  252. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
  253. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
  254. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
  255. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
  256. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
  257. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
  258. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
  259. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
  260. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
  261. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
  262. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
  263. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
  264. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
  265. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
  266. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
  267. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
  268. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
  269. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
  270. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
  271. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
  272. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
  273. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_addressed_round3.yaml +0 -0
  274. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_cross_pr.yaml +0 -0
  275. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_head_mismatch.yaml +0 -0
  276. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_prefix_head.yaml +0 -0
  277. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_request.yaml +0 -0
  278. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_round4.yaml +0 -0
  279. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_unapproved.yaml +0 -0
  280. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
  281. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
  282. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
  283. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +0 -0
  284. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
  285. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
  286. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
  287. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
  288. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
  289. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
  290. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
  291. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
  292. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
  293. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/README.md +0 -0
  294. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/admission_outcome_replaced_by_clear.yaml +0 -0
  295. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +0 -0
  296. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/breached_empty_fields.yaml +0 -0
  297. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/clean_terminal_done.yaml +0 -0
  298. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_live_a.yaml +0 -0
  299. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_live_b.yaml +0 -0
  300. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +0 -0
  301. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/expected_findings.yaml +0 -0
  302. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +0 -0
  303. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +0 -0
  304. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +0 -0
  305. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +0 -0
  306. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +0 -0
  307. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +0 -0
  308. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +0 -0
  309. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +0 -0
  310. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +0 -0
  311. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +0 -0
  312. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/serialized_wave_item.yaml +0 -0
  313. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +0 -0
  314. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +0 -0
  315. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_missing_successor.yaml +0 -0
  316. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_successor_live.yaml +0 -0
  317. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +0 -0
  318. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +0 -0
  319. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/README.md +0 -0
  320. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
  321. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/configs/malformed.yaml +0 -0
  322. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
  323. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
  324. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +0 -0
  325. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
  326. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
  327. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
  328. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
  329. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
  330. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
  331. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
  332. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
  333. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
  334. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
  335. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/README.md +0 -0
  336. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/configs/enforce.yaml +0 -0
  337. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/configs/off.yaml +0 -0
  338. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/configs/warn.yaml +0 -0
  339. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
  340. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
  341. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
  342. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
  343. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
  344. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
  345. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
  346. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
  347. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
  348. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
  349. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
  350. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
  351. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
  352. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/README.md +0 -0
  353. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/expected.yaml +0 -0
  354. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/.hidden/2026/08/20260825-alice-abc12345.md +0 -0
  355. {oacp_cli-0.4.5 → 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
  356. {oacp_cli-0.4.5 → 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
  357. {oacp_cli-0.4.5 → 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
  358. {oacp_cli-0.4.5 → 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
  359. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/20260825-alice-abc12345.md +0 -0
  360. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/empty_store/expected.yaml +0 -0
  361. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/empty_store/org-memory/debriefs/.gitkeep +0 -0
  362. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/missing_debriefs_dir/expected.yaml +0 -0
  363. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/missing_debriefs_dir/org-memory/recent.md +0 -0
  364. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/staging_artifact/expected.yaml +0 -0
  365. {oacp_cli-0.4.5 → 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
  366. {oacp_cli-0.4.5 → 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
  367. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/expected.yaml +0 -0
  368. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/.gitkeep +0 -0
  369. {oacp_cli-0.4.5 → 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
  370. {oacp_cli-0.4.5 → 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
  371. {oacp_cli-0.4.5 → 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
  372. {oacp_cli-0.4.5 → 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
  373. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/README.md +0 -0
  374. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
  375. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
  376. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
  377. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
  378. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
  379. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
  380. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
  381. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
  382. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
  383. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
  384. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
  385. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
  386. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
  387. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
  388. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
  389. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
  390. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
  391. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
  392. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
  393. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
  394. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
  395. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
  396. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/keys/alice.json +0 -0
  397. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/keys/bob.json +0 -0
  398. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/keys/carol.json +0 -0
  399. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
  400. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
  401. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
  402. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
  403. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
  404. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
  405. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
  406. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
  407. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
  408. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
  409. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
  410. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
  411. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
  412. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
  413. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
  414. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
  415. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
  416. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
  417. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
  418. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
  419. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
  420. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
  421. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
  422. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
  423. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
  424. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
  425. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
  426. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
  427. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/regen_fixtures.py +0 -0
  428. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_add_agent.py +0 -0
  429. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_agent_profile.py +0 -0
  430. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_audit_corpus_boundary.py +0 -0
  431. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_audit_record_conformance.py +0 -0
  432. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_autonomy_conformance_fixtures.py +0 -0
  433. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_autonomy_ledger_replay.py +0 -0
  434. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_claude_envelope_hook.py +0 -0
  435. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_default_envelope.py +0 -0
  436. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_envelope_conformance_fixtures.py +0 -0
  437. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_envelope_public_admission.py +0 -0
  438. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_github_workflows.py +0 -0
  439. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_handoff_schema.py +0 -0
  440. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_inbox_verify.py +0 -0
  441. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_init_org_memory.py +0 -0
  442. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_init_project_workspace.py +0 -0
  443. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_intake_conformance.py +0 -0
  444. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_memory_archive.py +0 -0
  445. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_memory_sync.py +0 -0
  446. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_message_signing.py +0 -0
  447. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_message_verify.py +0 -0
  448. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_cli.py +0 -0
  449. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_constants.py +0 -0
  450. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_doctor.py +0 -0
  451. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_env.py +0 -0
  452. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_inbox.py +0 -0
  453. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_watch.py +0 -0
  454. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_org_memory_doctor.py +0 -0
  455. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_packaged_status_template.py +0 -0
  456. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_policy_signing.py +0 -0
  457. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_preflight.py +0 -0
  458. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_readme_commands.py +0 -0
  459. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_retention.py +0 -0
  460. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_review_loop.py +0 -0
  461. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_send_inbox_message.py +0 -0
  462. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_signing_conformance.py +0 -0
  463. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_spec_version.py +0 -0
  464. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_trust_root.py +0 -0
  465. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_update_workspace.py +0 -0
  466. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_validate_agent_card.py +0 -0
  467. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_validate_message.py +0 -0
  468. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_workspace_discovery.py +0 -0
  469. {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_write_event.py +0 -0
@@ -7,6 +7,18 @@ 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
+
10
22
  ## [0.4.5] - 2026-09-02
11
23
 
12
24
  ### Changed
@@ -831,6 +843,7 @@ The central debrief store is the headline change: every agent's full end-of-sess
831
843
  - Checkout step in github-release workflow job (#19)
832
844
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
833
845
 
846
+ [0.4.6]: https://github.com/kiloloop/oacp/compare/v0.4.5...v0.4.6
834
847
  [0.4.5]: https://github.com/kiloloop/oacp/compare/v0.4.4...v0.4.5
835
848
  [0.4.4]: https://github.com/kiloloop/oacp/compare/v0.4.3...v0.4.4
836
849
  [0.4.3]: https://github.com/kiloloop/oacp/compare/v0.4.2...v0.4.3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: oacp-cli
3
- Version: 0.4.5
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
@@ -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
  ```
@@ -373,12 +373,16 @@ Optionally, `oacp org-memory init` creates org-level shared memory:
373
373
 
374
374
  ```
375
375
  $OACP_HOME/org-memory/
376
- ├── recent.md # Always-loaded rolling summary
376
+ ├── recent.md # Rolling summary, retrieved on demand
377
377
  ├── decisions.md # Org-wide decisions
378
378
  ├── rules.md # Standing conventions
379
379
  └── events/ # Timestamped event entries
380
380
  ```
381
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
+
382
386
  ## Development
383
387
 
384
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
 
@@ -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
  ```
@@ -345,12 +345,16 @@ Optionally, `oacp org-memory init` creates org-level shared memory:
345
345
 
346
346
  ```
347
347
  $OACP_HOME/org-memory/
348
- ├── recent.md # Always-loaded rolling summary
348
+ ├── recent.md # Rolling summary, retrieved on demand
349
349
  ├── decisions.md # Org-wide decisions
350
350
  ├── rules.md # Standing conventions
351
351
  └── events/ # Timestamped event entries
352
352
  ```
353
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
+
354
358
  ## Development
355
359
 
356
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.
@@ -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
@@ -433,6 +437,11 @@ Audit `schema_version: 2` adds thread identity and the structured
433
437
  `result.human_outcome` block. Recorders may upgrade a v1 audit to v2 when the
434
438
  first human outcome is written; standing grants trust only v2 records.
435
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
+
436
445
  ### Contract version
437
446
 
438
447
  `spec_version` names the protocol contract an artifact was produced under.
@@ -510,6 +519,40 @@ deduplicated against `reason_codes`, and empty on auto-accepted decisions.
510
519
  Threshold-calibration analytics should read `reason_codes` and
511
520
  `co_occurring_reason_codes` together.
512
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
+
513
556
  ### Lexical provenance
514
557
 
515
558
  `matched_patterns` is a source-ordered list of every autonomy lexical match,
@@ -638,6 +681,18 @@ pause moment, and locks the full read-modify-write sequence before an atomic
638
681
  replacement. It refuses to overwrite a recorded outcome unless `--replace` is
639
682
  explicit. `decision` is `approved`, `modified`, or `declined`.
640
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
+
641
696
  The recorder is state-aware about where the pause moment lives:
642
697
 
643
698
  - **Admission pauses** (`completion_kind: admission_paused`): the record was
@@ -25,13 +25,15 @@ The protocol defines three complementary sync mechanisms, ordered from most dura
25
25
  | `open_threads.md` | Unresolved issues, blocked epics, cross-agent coordination | Any agent via the project's durable-memory promotion flow |
26
26
  | `known_debt.md` | Verified unresolved debt that should persist across sessions | Any agent via the project's durable-memory promotion flow |
27
27
 
28
- The top-level files in `memory/` are the active working set. Historical memory can be moved into `memory/archive/`, which is not loaded during session init unless an agent explicitly opts in.
28
+ These four files are the active working set. Other project files and
29
+ `memory/archive/` hold context retrieved when the task needs it; their presence
30
+ does not add them to the required init reads. Org memory is also retrieved on demand.
29
31
 
30
- These files are the **source of truth** for stable project knowledge. All runtimes read the active working set at session start. Only verified, stable outcomes should be written here.
32
+ These files are the **source of truth** for stable project knowledge. All runtimes read the four files in the order above at init. Only verified, stable outcomes should be written here.
31
33
 
32
34
  **Promotion flow**: Merge decisions contain a "Durable Memory Updates" section. Each implementation should provide a promotion mechanism that extracts approved entries from merge artifacts and appends them to the appropriate memory file, deduplicating against existing content.
33
35
 
34
- **Archive flow**: Users or coordinator agents may move non-standard memory files into `memory/archive/` for historical retention, then restore them back into `memory/` when they become active again.
36
+ **Archive flow**: Users or coordinator agents may move non-standard memory files into `memory/archive/` for historical retention, then restore them back into `memory/` when needed again. Restoring a file does not add it to the required init read set.
35
37
 
36
38
  ### 2. Handoff Messages with Context Keys
37
39
 
@@ -72,7 +74,7 @@ Agents synchronize knowledge at well-defined points in the workflow:
72
74
 
73
75
  ### Claude
74
76
 
75
- - **Reads**: `CLAUDE.md` (project-level instructions, auto-loaded), `memory/` files (read at session start or on demand)
77
+ - **Reads**: `CLAUDE.md` (project-level instructions, auto-loaded), the four active project memory files at init, and other project/org context on demand
76
78
  - **Writes**: Memory files via merge decisions + durable-memory promotion, handoff messages, review packets
77
79
  - **Context mechanism**: `CLAUDE.md` is injected into every conversation. Memory files are read explicitly.
78
80
  - **Tip**: Keep `CLAUDE.md` under 200 lines. Move detailed notes to memory files and reference them.
@@ -101,7 +103,7 @@ Avoid these common mistakes when syncing knowledge across runtimes:
101
103
  | Syncing ephemeral state (temp files, debug logs, partial results) | Clutters memory, confuses future agents | Only promote stable, verified outcomes |
102
104
  | Assuming shared context | Agent B cannot read Agent A's conversation history | Always include context in handoff messages |
103
105
  | Writing to memory too eagerly | Unverified or in-progress work pollutes the knowledge base | Wait until merge decision to promote |
104
- | Skipping memory reads at session start | Agent makes decisions contradicting prior work | Always read memory files before starting work |
106
+ | Skipping project memory reads at session start | Agent makes decisions contradicting prior work | Read the four active project memory files; retrieve org memory on demand |
105
107
 
106
108
  ## Integration with durable-memory promotion
107
109
 
@@ -349,5 +349,5 @@ constraints:
349
349
  - "rejected — agent rejected the task"
350
350
  inbox_file_lifecycle:
351
351
  - "Dispatch state is tracked via message replies (parent_message_id threading), NOT by retaining the original inbox file"
352
- - "Agents delete the original task_request from inbox after processing (per inbox_outbox.md Lifecycle step 5)"
353
- - "Long-lived states (blocked, in_review) persist in dispatcher tracking (dispatches.md), not as inbox files"
352
+ - "Agents follow inbox_outbox.md Lifecycle for terminal processing and exact-file, no-overwrite archival; changed bytes or failed archival leave input pending"
353
+ - "Long-lived states (blocked, in_review) persist in dispatcher tracking (dispatches.md); pending-file retention still follows inbox_outbox.md Lifecycle"
@@ -8,7 +8,7 @@ Shared, cross-project memory for multi-agent organizations. Agents across projec
8
8
 
9
9
  ```
10
10
  $OACP_HOME/org-memory/
11
- recent.md # always-loaded rolling summary (~60K chars / ~15K tokens)
11
+ recent.md # rolling summary (~60K chars / ~15K tokens)
12
12
  decisions.md # topical: org-wide decisions (illustrative default)
13
13
  rules.md # topical: standing conventions (illustrative default)
14
14
  events/ # chronological: timestamped entries
@@ -21,11 +21,17 @@ $OACP_HOME/org-memory/
21
21
 
22
22
  `decisions.md` and `rules.md` are illustrative defaults, not protocol requirements. Adopters choose which topical files to create (e.g., `agents.md`, `architecture.md`).
23
23
 
24
- Keep `recent.md` to approximately 60,000 characters (roughly 15,000 tokens),
25
- because its context cost is paid at every session start. Approximately 150
26
- lines remain a secondary readability hint only; when the measures disagree,
27
- the character budget governs. Collapse older detail into topical files or
28
- history so the file remains a rolling summary rather than a complete log.
24
+ Org memory is retrieved on demand by default, separately from the four
25
+ project memory files read during init. Runtime or project guidance may opt
26
+ into a bounded startup summary; the directory layout does not require eager
27
+ loading. See the adopter guide for [memory context and retrieval](../guides/memory-context.md).
28
+
29
+ Keep `recent.md` to approximately 60,000 characters (roughly 15,000 tokens)
30
+ unless adopter guidance sets a smaller budget. Approximately 150 lines remain
31
+ a secondary readability hint only; when the measures disagree, the character
32
+ budget governs. Collapse older detail into topical files or history so the
33
+ file remains a bounded rolling summary when retrieved. This is a curation
34
+ budget, not a requirement or allowance to load that much context at startup.
29
35
 
30
36
  ## Event File Schema
31
37
 
@@ -221,7 +227,7 @@ verified record — never partial bytes.
221
227
  Raw debriefs never enter `recent.md` or `events/` — only curated folds do.
222
228
  The coordinator reads debriefs and promotes durable outcomes into events and
223
229
  topical files; the raw session narrative stays in `debriefs/`. This keeps the
224
- always-loaded surfaces bounded and the event channel filtered. Debrief files
230
+ curated surfaces bounded and the event channel filtered. Debrief files
225
231
  are likewise never auto-loaded at session start.
226
232
 
227
233
  ### Sync
@@ -276,7 +282,7 @@ Cortex demonstrates the dual-pipeline pattern — same source data, two audience
276
282
  1. Format spec (directory structure, frontmatter schema, naming convention)
277
283
  2. CLI: `oacp org-memory init` (scaffold directory, including `debriefs/`) and `oacp write-event` (create event files)
278
284
  3. Agents write their full session debrief to `org-memory/debriefs/` (via adopter tooling — see Debrief Store) and curated outcome events during debrief
279
- 4. Agents read topical files + `recent.md` for org context
285
+ 4. Agents retrieve relevant sections of topical files and `recent.md` for org context on demand
280
286
  5. Coordinator maintains topical files during sync
281
287
 
282
288
  ## v0.3+
@@ -177,6 +177,10 @@ registers a `SessionStart` handler that runs memory pull and `oacp session-init`
177
177
  sequentially after the user reviews and trusts it with `/hooks`. The manual
178
178
  fallback is `oacp session-init --pull-memory --project <project>`.
179
179
 
180
+ Memory pull synchronizes disk files. Init names the required protocol and
181
+ project-memory reads; org-memory retrieval is on demand. See
182
+ [memory context](../guides/memory-context.md).
183
+
180
184
  Session telemetry beyond `status.yaml` is a runtime responsibility: the kernel
181
185
  neither defines a schema for it nor ships a reference implementation. A runtime
182
186
  that keeps its own session or packet telemetry stores it separately from
@@ -19,7 +19,7 @@ The init sequence has 6 steps in a fixed order. Each step is classified as **req
19
19
  ┌─────────────────────────────────────────────┐
20
20
  │ 1. Load global rules [required] │
21
21
  │ 2. Load project rules [required] │
22
- │ 3. Load durable memory [required] │
22
+ │ 3. Load project memory [required] │
23
23
  │ 4. Check inbox [optional] │
24
24
  │ 5. Load skills / tools [optional] │
25
25
  │ 6. Report status [required] │
@@ -54,13 +54,15 @@ The init sequence has 6 steps in a fixed order. Each step is classified as **req
54
54
 
55
55
  **Conflict resolution:** When global and project rules conflict, project rules win. Project rules are closer to the work and reflect repo-specific decisions. Exception: safety defaults from `agent_safety_defaults.md` cannot be relaxed by project rules — they can only be made stricter.
56
56
 
57
- ### Step 3: Load Durable Memory
57
+ <a id="step-3-load-durable-memory"></a>
58
+
59
+ ### Step 3: Load Project Memory
58
60
 
59
61
  **Required.** Read the project's shared memory files to restore cross-session and cross-runtime context.
60
62
 
61
63
  **Location:** `$OACP_HOME/projects/<project>/memory/`
62
64
 
63
- The top-level files in `memory/` are the active working set. `memory/archive/` is historical storage and is not loaded by default at session start.
65
+ The four files below are the active working set. `memory/archive/` is historical storage and is not loaded by default at session start.
64
66
 
65
67
  **Loading order:**
66
68
 
@@ -69,6 +71,11 @@ The top-level files in `memory/` are the active working set. `memory/archive/` i
69
71
  3. `open_threads.md` — unresolved issues, blocked epics, cross-agent coordination. Read third because it builds on the context from facts and decisions.
70
72
  4. `known_debt.md` — verified unresolved debt, recurring pain points, and cleanup items that future sessions should keep in view.
71
73
 
74
+ This required read set is project-scoped. `$OACP_HOME/org-memory/` is a
75
+ separate store, retrieved on demand by default. Its summary, topical files,
76
+ events, and debriefs are not part of Step 3. Read applicable org rules and
77
+ decisions when the task needs them; see [memory context](../guides/memory-context.md).
78
+
72
79
  **Conflict resolution:** If memory files contradict project rules (e.g., `project_facts.md` says "use pytest" but `CLAUDE.md` says "use make test"), project rules win. Memory files may be stale; project rules are maintained alongside the code.
73
80
 
74
81
  **Runtime-specific memory:** Some runtimes maintain additional memory (e.g., Claude's `~/.claude/projects/<hash>/memory/MEMORY.md`). Runtime-specific memory supplements but does not override shared durable memory. Load runtime-specific memory after shared memory.
@@ -142,7 +149,7 @@ If a **required** step fails:
142
149
  |------|-------------|--------|
143
150
  | Global rules | File missing or unreadable | Warn user, continue with defaults (safety defaults still apply) |
144
151
  | Project rules | File missing or unreadable | Warn user, continue — project may not have agent config |
145
- | Durable memory | Directory or files missing | Log absence, continue — project may not be initialized |
152
+ | Project memory | Directory or files missing | Log absence, continue — project may not be initialized |
146
153
  | Report status | Cannot write status.yaml | Warn user — dispatch routing will be degraded but work can proceed |
147
154
 
148
155
  No init failure should prevent the agent from starting. All failures are **degraded mode**, not hard blocks. The agent reports what failed and continues.
@@ -156,6 +163,7 @@ This section provides guidance for per-runtime implementations.
156
163
  Steps 1-2 are handled automatically by Claude Code (CLAUDE.md loading). Step 3 requires explicit file reads or auto-memory. Step 4 uses `/check-inbox`. Step 5 is automatic (skill discovery). Step 6 requires a startup hook or explicit script call.
157
164
 
158
165
  `oacp setup claude` registers the marker-gated memory pull at `SessionStart`.
166
+ Pull synchronizes files on disk; it does not load org memory into context.
159
167
  It intentionally does not publish memory at `SessionEnd`; wrap-up owns the
160
168
  single explicit `oacp memory push` path. Claude status reporting remains an
161
169
  explicit runtime responsibility, and so is any session telemetry beyond
@@ -167,12 +175,13 @@ runtime-kept telemetry is never a `status.yaml` writer.
167
175
  Steps 1-2 are handled by AGENTS.md loading. Running `oacp setup codex
168
176
  --project <project>` installs one repo-local `SessionStart` handler in
169
177
  `.codex/hooks.json`. After the user reviews and trusts it with `/hooks`, the
170
- handler sequentially pulls shared memory and runs `oacp session-init`. No
171
- Codex `SessionEnd` hook is installed.
178
+ handler sequentially pulls shared memory to disk and runs `oacp session-init`.
179
+ No Codex `SessionEnd` hook is installed.
172
180
 
173
- The init command verifies that protocol and durable-memory files are readable,
174
- updates `status.yaml`, and emits bounded developer context naming the required
181
+ The init command verifies that protocol and the four project memory files are
182
+ readable, updates `status.yaml`, and emits bounded developer context naming the required
175
183
  ordered reads. It does not claim that the full file contents were injected.
184
+ Org-memory content is not read by this verification or included in its manifest.
176
185
  Use this manual fallback when the project hook is unavailable or untrusted:
177
186
 
178
187
  ```bash
@@ -198,7 +207,8 @@ Steps 1-2 are handled by system prompts and `.agent/rules/`. Steps 3-6 can be im
198
207
 
199
208
  | Anti-Pattern | Why It Fails | Do Instead |
200
209
  |--------------|-------------|------------|
201
- | Skipping memory reads to "save time" | Agent contradicts prior decisions, duplicates work | Always read memory files — they're small and fast |
210
+ | Skipping active project memory to "save time" | Agent contradicts prior project decisions, duplicates work | Read the four project memory files in Step 3 |
211
+ | Loading the entire org-memory store at init | Context grows with org-wide history and unrelated projects | Retrieve relevant org sections on demand |
202
212
  | Auto-processing inbox during init | Surprises the user with unseen actions | Summarize inbox count, let user trigger processing |
203
213
  | Writing status.yaml only at session close | Dispatch router thinks agent is offline during work | Write at init AND close (and task boundaries) |
204
214
  | Loading all skills eagerly | Slows init, wastes resources for unused tools | Load on-demand; only validate critical tools at init |
@@ -77,8 +77,8 @@ the loop:
77
77
  now carries the rule with "promoted from 3 events" provenance pointing back
78
78
  at all three.
79
79
  5. **The rolling summary reflects it** — [`org-memory/recent.md`](org-memory/recent.md)
80
- (the always-loaded file) lists the rule under Standing Rules, so every
81
- agent sees it without scanning events.
80
+ lists the rule under Standing Rules, so an agent can retrieve it when
81
+ relevant without scanning events.
82
82
 
83
83
  `decisions.md` shows the same flow for a one-shot architectural call
84
84
  (PostgreSQL over DynamoDB) rather than a repeating pattern.
@@ -97,7 +97,7 @@ demo-workspace/ ← shaped like $OACP_HOME
97
97
  archive/
98
98
  2026-05-21-csv-export-timeouts.md closed thread, 3 dated entries
99
99
  org-memory/ org-wide knowledge
100
- recent.md always-loaded rolling summary
100
+ recent.md rolling summary, retrieved on demand
101
101
  rules.md standing conventions (curated)
102
102
  decisions.md architectural calls (curated)
103
103
  events/ raw signal — 6 events, 3 types
@@ -1,6 +1,7 @@
1
1
  # Org Memory — Rolling Summary
2
2
 
3
- <!-- Always-loaded context for agents. Keep under ~150 lines. -->
3
+ <!-- Retrieved on demand; not required startup context. -->
4
+ <!-- Keep near 60,000 characters or the adopter's smaller budget; ~150 lines is a readability hint. -->
4
5
  <!-- Updated by coordinator during sync/curation. -->
5
6
  <!-- Last curated: 2026-06-02 by nova -->
6
7
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "oacp-cli"
7
- version = "0.4.5"
7
+ version = "0.4.6"
8
8
  description = "Open Agent Coordination Protocol CLI for file-based multi-agent workflows"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -108,6 +108,8 @@ packages = ["oacp"]
108
108
  "docs/protocol/message_signing.md" = "oacp/_protocol/message_signing.md"
109
109
  "docs/protocol/autonomy.md" = "oacp/_protocol/autonomy.md"
110
110
  "docs/protocol/org_memory.md" = "oacp/_protocol/org_memory.md"
111
+ # Preserve ../guides/ links from the shipped protocol documents.
112
+ "docs/guides/memory-context.md" = "oacp/guides/memory-context.md"
111
113
  "templates/inbox_message.template.yaml" = "oacp/_templates/inbox_message.template.yaml"
112
114
  "templates/runtime_capabilities.yaml" = "oacp/_templates/runtime_capabilities.yaml"
113
115
  "templates/org-memory/recent.md" = "oacp/_templates/org-memory/recent.md"
@@ -248,6 +248,24 @@ PINNED_REASON_CODES = frozenset({
248
248
  "threshold_checkpoint_breached",
249
249
  "workspace_check_required",
250
250
  })
251
+ # Success and advisory evidence belongs in reason_codes but never names a
252
+ # fired pause, even if a caller records that evidence alongside a blocker.
253
+ PAUSE_REASON_CODES = PINNED_REASON_CODES - frozenset({
254
+ "checkpoint_reauthorized",
255
+ "continuation_grant_accepted",
256
+ "hard_stops_clear",
257
+ "lexical_advisory",
258
+ "message_hash_recorded",
259
+ "message_not_expired",
260
+ "message_valid",
261
+ "review_continuation_accepted",
262
+ "review_continuation_head_mismatch",
263
+ "risk_threshold_passed",
264
+ "task_profile_not_required",
265
+ "task_profile_present",
266
+ "task_type_allowed",
267
+ "workspace_check_required",
268
+ })
251
269
 
252
270
  GUARDRAILS_FENCE_RE = re.compile(
253
271
  r"(?ms)^[ \t]*```oacp-guardrails[ \t]*\n"
@@ -826,6 +844,53 @@ def extract_task_profile(body: str) -> Tuple[Optional[Dict[str, Any]], Optional[
826
844
  return None, None
827
845
 
828
846
 
847
+ def _expected_pause_declaration(
848
+ body: str,
849
+ ) -> Tuple[bool, List[str], List[Dict[str, str]]]:
850
+ """Read audit-only declarations without altering the safety-check input."""
851
+ profile, error = extract_task_profile(body)
852
+ if error or profile is None or "expected_pauses" not in profile:
853
+ return False, [], []
854
+ declared = profile["expected_pauses"]
855
+ codes: List[str] = []
856
+ warnings: List[Dict[str, str]] = []
857
+
858
+ def warn(detail: str) -> None:
859
+ warnings.append({"code": "expected_pauses_declaration_warning", "detail": detail})
860
+
861
+ if not isinstance(declared, list):
862
+ warn("task_profile.expected_pauses must be a list; ignored")
863
+ else:
864
+ for index, code in enumerate(declared):
865
+ if not isinstance(code, str):
866
+ warn(f"task_profile.expected_pauses[{index}] must be a string; ignored")
867
+ continue
868
+ codes.append(code)
869
+ if code not in PAUSE_REASON_CODES:
870
+ warn(f"task_profile.expected_pauses[{index}] is not a recognized pause reason code; ignored")
871
+
872
+ return True, codes, warnings
873
+
874
+
875
+ def _classify_pause(
876
+ reason_codes: Sequence[str], expected_declared: bool, expected_codes: Sequence[str],
877
+ ) -> Dict[str, Any]:
878
+ """Classify fired pause reasons; success/advisory evidence is excluded."""
879
+ fired = list(dict.fromkeys(code for code in reason_codes if code in PAUSE_REASON_CODES))
880
+ expected = set(expected_codes) & PAUSE_REASON_CODES
881
+ unplanned = [code for code in fired if code not in expected]
882
+ return {
883
+ "expected_pause_codes": list(expected_codes),
884
+ "unplanned_pause_codes": unplanned,
885
+ "pause_classification": (
886
+ "undeclared" if not expected_declared
887
+ else "designed" if not unplanned
888
+ else "unplanned" if len(unplanned) == len(fired)
889
+ else "mixed"
890
+ ),
891
+ }
892
+
893
+
829
894
  def _bool_value(profile: Dict[str, Any], key: str) -> bool:
830
895
  value = profile.get(key, False)
831
896
  if isinstance(value, bool):
@@ -3483,7 +3548,9 @@ def evaluate_autonomy(
3483
3548
  policy_hash = canonical_policy_sha256(config)
3484
3549
  body = str(message.get("body") or "")
3485
3550
  msg_type = str(message.get("type") or "")
3486
- logged_notes: List[Dict[str, str]] = []
3551
+ expected_declared, expected_codes, logged_notes = (
3552
+ _expected_pause_declaration(body)
3553
+ )
3487
3554
  profile_snapshot: Optional[Dict[str, Any]] = None
3488
3555
  envelope_source: Optional[str] = None
3489
3556
  # Resolved below; pre-bound so early pauses (malformed config) can
@@ -3535,6 +3602,11 @@ def evaluate_autonomy(
3535
3602
  )
3536
3603
  decision.setdefault("co_occurring_reason_codes", [])
3537
3604
  decision["admission_axes"] = admission_axes
3605
+ if decision.get("decision") == "paused":
3606
+ # Only the reasons that drove this pause are fired. Ledger,
3607
+ # co-occurring, and lexical evidence never add classification
3608
+ # inputs or alter admission/approval authority.
3609
+ decision.update(_classify_pause(reason_codes, expected_declared, expected_codes))
3538
3610
  decision["matched_patterns"] = _collect_lexical_provenance(
3539
3611
  body,
3540
3612
  profile_snapshot,
@@ -402,8 +402,10 @@ def build_session_start_hook_output(
402
402
  *[f"- {name}" for name in PROTOCOL_FILES],
403
403
  f"Project memory root: {memory_root}",
404
404
  *[f"- {name}" for name in MEMORY_FILES],
405
- "Then read org-memory/recent.md when present, plus relevant decisions.md "
406
- "and rules.md, as required by the active AGENTS.md.",
405
+ "Org memory is separate from these required project reads: retrieve it "
406
+ "on demand by default under the active AGENTS.md policy. Read applicable "
407
+ "org rules and decisions before work they govern.",
408
+ "Memory pull synchronizes disk files; it does not load org content into context.",
407
409
  "Include the exact SESSION_INIT_ACK line above in the first response after startup.",
408
410
  ]
409
411
  if report["warnings"]: