oacp-cli 0.4.6__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/CHANGELOG.md +26 -0
  2. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/PKG-INFO +11 -14
  3. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/QUICKSTART.md +16 -10
  4. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/README.md +10 -13
  5. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/SPEC.md +2 -3
  6. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/guides/doctor.md +5 -1
  7. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/guides/memory-context.md +2 -2
  8. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/message_signing.md +2 -2
  9. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/org_memory.md +206 -48
  10. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/runtime_capabilities.md +5 -3
  11. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/session_init.md +17 -9
  12. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/README.md +5 -4
  13. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/oacp/cli.py +58 -9
  14. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/pyproject.toml +1 -10
  15. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/codex_session_init.py +51 -17
  16. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/oacp_doctor.py +22 -646
  17. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/preflight.py +118 -0
  18. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/send_inbox_message.py +2 -2
  19. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/setup_runtime.py +254 -61
  20. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/write_event.py +1 -1
  21. oacp_cli-0.5.0/tests/conformance/memory_layout/README.md +23 -0
  22. oacp_cli-0.5.0/tests/conformance/memory_layout/canonical_memory_gitignore.txt +9 -0
  23. oacp_cli-0.5.0/tests/conformance/memory_layout/layout.yaml +71 -0
  24. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_codex_session_init.py +77 -2
  25. oacp_cli-0.5.0/tests/test_memory_layout_fixture.py +198 -0
  26. oacp_cli-0.5.0/tests/test_memory_shim.py +135 -0
  27. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_oacp_cli.py +31 -4
  28. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_oacp_doctor.py +20 -140
  29. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_package_content.py +100 -5
  30. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_preflight.py +80 -0
  31. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_readme_commands.py +2 -2
  32. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_setup_runtime.py +515 -16
  33. oacp_cli-0.4.6/docs/protocol/cross_runtime_sync.md +0 -117
  34. oacp_cli-0.4.6/scripts/init_org_memory.py +0 -150
  35. oacp_cli-0.4.6/scripts/memory_archive_common.py +0 -67
  36. oacp_cli-0.4.6/scripts/memory_cli.py +0 -193
  37. oacp_cli-0.4.6/scripts/memory_sync.py +0 -584
  38. oacp_cli-0.4.6/scripts/promote_to_archive.py +0 -106
  39. oacp_cli-0.4.6/scripts/restore_from_archive.py +0 -96
  40. oacp_cli-0.4.6/templates/org-memory/decisions.md +0 -5
  41. oacp_cli-0.4.6/templates/org-memory/events/.gitkeep +0 -0
  42. oacp_cli-0.4.6/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -11
  43. oacp_cli-0.4.6/templates/org-memory/recent.md +0 -17
  44. oacp_cli-0.4.6/templates/org-memory/rules.md +0 -5
  45. oacp_cli-0.4.6/tests/conformance/org_memory/README.md +0 -22
  46. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/expected.yaml +0 -5
  47. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/.hidden/2026/08/20260825-alice-abc12345.md +0 -14
  48. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -14
  49. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-ABCD.md +0 -14
  50. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825_alice_abc12345.md +0 -14
  51. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/09/20260825-alice-def12345.md +0 -14
  52. oacp_cli-0.4.6/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/20260825-alice-abc12345.md +0 -14
  53. oacp_cli-0.4.6/tests/conformance/org_memory/cases/empty_store/expected.yaml +0 -2
  54. oacp_cli-0.4.6/tests/conformance/org_memory/cases/empty_store/org-memory/debriefs/.gitkeep +0 -0
  55. oacp_cli-0.4.6/tests/conformance/org_memory/cases/missing_debriefs_dir/expected.yaml +0 -5
  56. oacp_cli-0.4.6/tests/conformance/org_memory/cases/missing_debriefs_dir/org-memory/recent.md +0 -1
  57. oacp_cli-0.4.6/tests/conformance/org_memory/cases/staging_artifact/expected.yaml +0 -5
  58. oacp_cli-0.4.6/tests/conformance/org_memory/cases/staging_artifact/org-memory/debriefs/demo-project/2026/08/.stage.20260825-alice-77xx88yy.md.a1b2c3 +0 -1
  59. oacp_cli-0.4.6/tests/conformance/org_memory/cases/staging_artifact/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -14
  60. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/expected.yaml +0 -2
  61. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/.gitkeep +0 -0
  62. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/Demo_Project/2026/08/20260825-bob-ops-9f00aa11.md +0 -14
  63. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -14
  64. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/demo.project/2026/07/20260701-Alice_2.dev-00aa11bb.md +0 -14
  65. oacp_cli-0.4.6/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/other-project/2026/12/20261203-bob-9e0d44aa.md +0 -14
  66. oacp_cli-0.4.6/tests/test_init_org_memory.py +0 -46
  67. oacp_cli-0.4.6/tests/test_memory_archive.py +0 -445
  68. oacp_cli-0.4.6/tests/test_memory_sync.py +0 -331
  69. oacp_cli-0.4.6/tests/test_org_memory_doctor.py +0 -195
  70. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/.gitattributes +0 -0
  71. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/.github/workflows/auto-estimate.yml +0 -0
  72. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/.github/workflows/ci.yml +0 -0
  73. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/.github/workflows/release.yml +0 -0
  74. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/.gitignore +0 -0
  75. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/CONTRIBUTING.md +0 -0
  76. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/LICENSE +0 -0
  77. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/Makefile +0 -0
  78. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/SECURITY.md +0 -0
  79. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/from-claude-p.md +0 -0
  80. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/guides/adoption.md +0 -0
  81. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/guides/prompt_caching.md +0 -0
  82. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/guides/setup.md +0 -0
  83. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/guides/unified_skill_spec.md +0 -0
  84. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/guides/versioning.md +0 -0
  85. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/img/oacp-cli-demo.png +0 -0
  86. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/img/oacp-filesystem-tree.png +0 -0
  87. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/img/oacp-fleet-thread.png +0 -0
  88. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/agent_profiles.md +0 -0
  89. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/agent_safety_defaults.md +0 -0
  90. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/autonomy.md +0 -0
  91. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/credential_scoping.md +0 -0
  92. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/dispatch_states.yaml +0 -0
  93. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/inbox_outbox.md +0 -0
  94. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/mcp_integration.md +0 -0
  95. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  96. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/packet_states.yaml +0 -0
  97. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/review_loop.md +0 -0
  98. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/skills_manifest.yaml +0 -0
  99. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/docs/protocol/task_negotiation.md +0 -0
  100. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/decisions.md +0 -0
  101. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
  102. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
  103. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
  104. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
  105. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
  106. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
  107. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/recent.md +0 -0
  108. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/org-memory/rules.md +0 -0
  109. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/projects/parcel-api/memory/archive/2026-05-21-csv-export-timeouts.md +0 -0
  110. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
  111. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
  112. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
  113. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
  114. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/examples/quickstart/README.md +0 -0
  115. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/oacp/__init__.py +0 -0
  116. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/oacp/envelope_hook.py +0 -0
  117. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/_oacp_constants.py +0 -0
  118. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/_oacp_env.py +0 -0
  119. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/add_agent.py +0 -0
  120. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/agent_profile.py +0 -0
  121. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/autonomy_gate.py +0 -0
  122. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/check_quality_gate.py +0 -0
  123. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/claude_envelope_hook.py +0 -0
  124. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/envelope_compiler.py +0 -0
  125. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/finalize_autonomy_record.py +0 -0
  126. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/gen_readme_commands.py +0 -0
  127. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/handoff_schema.py +0 -0
  128. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/init_packet.sh +0 -0
  129. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/init_project_workspace.py +0 -0
  130. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/key_cli.py +0 -0
  131. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/message_signing.py +0 -0
  132. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/message_verify.py +0 -0
  133. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/oacp_inbox.py +0 -0
  134. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/oacp_watch.py +0 -0
  135. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/policy_signing.py +0 -0
  136. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/record_autonomy_outcome.py +0 -0
  137. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/retention.py +0 -0
  138. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/trust_cli.py +0 -0
  139. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/trust_root.py +0 -0
  140. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/update_workspace.sh +0 -0
  141. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/validate_agent_card.py +0 -0
  142. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/scripts/validate_message.py +0 -0
  143. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/agent_card.template.yaml +0 -0
  144. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/agent_profile.template.yaml +0 -0
  145. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/agent_status.template.yaml +0 -0
  146. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/checkpoint.template.md +0 -0
  147. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/claude/agents/role_agent.template.md +0 -0
  148. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/claude/rules/guardrail.template.md +0 -0
  149. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/findings_packet.template.yaml +0 -0
  150. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/github_actions_quality_gate.yaml +0 -0
  151. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/guardrails/coding_standards.template.md +0 -0
  152. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/guardrails/safe_commands.template.md +0 -0
  153. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/guardrails/secrets_rules.template.md +0 -0
  154. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/handoff_packet.template.yaml +0 -0
  155. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/inbox_message.template.yaml +0 -0
  156. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/manual_validation.template.md +0 -0
  157. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/merge_decision.template.md +0 -0
  158. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/receiver_config.template.yaml +0 -0
  159. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/review_packet.template.md +0 -0
  160. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/roles/role_baseline.template.md +0 -0
  161. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/roles/role_definition.template.yaml +0 -0
  162. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/runtime_capabilities.yaml +0 -0
  163. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/skills_manifest.template.yaml +0 -0
  164. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/templates/test_packet.template.md +0 -0
  165. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/README.md +0 -0
  166. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
  167. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
  168. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
  169. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
  170. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
  171. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +0 -0
  172. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/reauth_conflict.yaml +0 -0
  173. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +0 -0
  174. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/reauth_reuse.yaml +0 -0
  175. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +0 -0
  176. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +0 -0
  177. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/review_live_head_mismatch.yaml +0 -0
  178. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/review_live_head_prefix.yaml +0 -0
  179. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
  180. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/audits/prior_review_addressed_accepted.yaml +0 -0
  181. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/audits/prior_review_grant_addressed_types.yaml +0 -0
  182. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/audits/prior_review_grant_approved.yaml +0 -0
  183. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/audits/prior_review_grant_denied_later.yaml +0 -0
  184. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/audits/prior_review_grant_denied_postmessage.yaml +0 -0
  185. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
  186. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
  187. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
  188. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
  189. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
  190. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
  191. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
  192. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
  193. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
  194. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
  195. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
  196. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +0 -0
  197. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
  198. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +0 -0
  199. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +0 -0
  200. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +0 -0
  201. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +0 -0
  202. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +0 -0
  203. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +0 -0
  204. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
  205. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
  206. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
  207. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
  208. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
  209. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
  210. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +0 -0
  211. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
  212. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
  213. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
  214. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
  215. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
  216. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
  217. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
  218. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
  219. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +0 -0
  220. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
  221. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
  222. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
  223. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
  224. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
  225. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
  226. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
  227. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
  228. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
  229. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
  230. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
  231. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
  232. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
  233. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
  234. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
  235. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
  236. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
  237. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
  238. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
  239. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
  240. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/pause_classification_designed.yaml +0 -0
  241. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/pause_classification_mixed.yaml +0 -0
  242. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/pause_classification_undeclared.yaml +0 -0
  243. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/pause_classification_unplanned.yaml +0 -0
  244. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
  245. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
  246. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
  247. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
  248. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_accepted_auto_continues.yaml +0 -0
  249. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_disabled_pauses.yaml +0 -0
  250. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_drift_pauses.yaml +0 -0
  251. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_expired_pauses.yaml +0 -0
  252. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_head_mismatch_records.yaml +0 -0
  253. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_later_round_pauses.yaml +0 -0
  254. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_missing_approval_pauses.yaml +0 -0
  255. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_prefix_head_records.yaml +0 -0
  256. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_repeated_addressed_round_exceeded.yaml +0 -0
  257. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_revoke_before_processing_pauses.yaml +0 -0
  258. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/review_continuation_revoked_pauses.yaml +0 -0
  259. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
  260. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +0 -0
  261. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
  262. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
  263. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
  264. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
  265. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
  266. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/ledger_replay/corpus.yaml +0 -0
  267. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
  268. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
  269. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
  270. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
  271. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
  272. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
  273. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
  274. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
  275. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/declaration_error_admission.yaml +0 -0
  276. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
  277. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
  278. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
  279. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
  280. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
  281. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
  282. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
  283. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
  284. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
  285. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
  286. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
  287. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
  288. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
  289. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
  290. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
  291. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
  292. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
  293. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
  294. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/pause_classification_designed.yaml +0 -0
  295. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/pause_classification_mixed.yaml +0 -0
  296. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/pause_classification_undeclared.yaml +0 -0
  297. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/pause_classification_unplanned.yaml +0 -0
  298. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
  299. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
  300. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
  301. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
  302. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/review_continuation_addressed_round3.yaml +0 -0
  303. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/review_continuation_cross_pr.yaml +0 -0
  304. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/review_continuation_head_mismatch.yaml +0 -0
  305. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/review_continuation_prefix_head.yaml +0 -0
  306. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/review_continuation_request.yaml +0 -0
  307. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/review_continuation_round4.yaml +0 -0
  308. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/review_continuation_unapproved.yaml +0 -0
  309. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
  310. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
  311. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
  312. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +0 -0
  313. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
  314. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
  315. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
  316. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
  317. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
  318. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
  319. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
  320. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
  321. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
  322. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/README.md +0 -0
  323. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/admission_outcome_replaced_by_clear.yaml +0 -0
  324. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +0 -0
  325. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/breached_empty_fields.yaml +0 -0
  326. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/clean_terminal_done.yaml +0 -0
  327. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/duplicate_live_a.yaml +0 -0
  328. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/duplicate_live_b.yaml +0 -0
  329. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +0 -0
  330. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/expected_findings.yaml +0 -0
  331. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +0 -0
  332. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +0 -0
  333. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +0 -0
  334. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +0 -0
  335. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +0 -0
  336. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +0 -0
  337. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +0 -0
  338. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +0 -0
  339. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +0 -0
  340. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +0 -0
  341. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/serialized_wave_item.yaml +0 -0
  342. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +0 -0
  343. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +0 -0
  344. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/superseded_missing_successor.yaml +0 -0
  345. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/superseded_successor_live.yaml +0 -0
  346. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +0 -0
  347. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +0 -0
  348. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/README.md +0 -0
  349. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
  350. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/configs/malformed.yaml +0 -0
  351. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
  352. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
  353. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +0 -0
  354. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
  355. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
  356. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
  357. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
  358. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
  359. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
  360. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
  361. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
  362. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
  363. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
  364. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/README.md +0 -0
  365. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/configs/enforce.yaml +0 -0
  366. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/configs/off.yaml +0 -0
  367. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/configs/warn.yaml +0 -0
  368. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
  369. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
  370. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
  371. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
  372. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
  373. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
  374. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
  375. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
  376. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
  377. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
  378. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
  379. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
  380. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
  381. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/README.md +0 -0
  382. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
  383. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
  384. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
  385. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
  386. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
  387. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
  388. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
  389. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
  390. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
  391. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
  392. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
  393. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
  394. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
  395. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
  396. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
  397. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
  398. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
  399. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
  400. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
  401. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
  402. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
  403. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
  404. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/keys/alice.json +0 -0
  405. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/keys/bob.json +0 -0
  406. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/keys/carol.json +0 -0
  407. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
  408. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
  409. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
  410. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
  411. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
  412. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
  413. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
  414. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
  415. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
  416. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
  417. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
  418. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
  419. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
  420. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
  421. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
  422. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
  423. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
  424. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
  425. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
  426. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
  427. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
  428. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
  429. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
  430. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
  431. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
  432. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
  433. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
  434. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
  435. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/conformance/signing/regen_fixtures.py +0 -0
  436. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_add_agent.py +0 -0
  437. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_agent_profile.py +0 -0
  438. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_audit_corpus_boundary.py +0 -0
  439. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_audit_record_conformance.py +0 -0
  440. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_autonomy_conformance_fixtures.py +0 -0
  441. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_autonomy_gate.py +0 -0
  442. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_autonomy_ledger_replay.py +0 -0
  443. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_claude_envelope_hook.py +0 -0
  444. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_default_envelope.py +0 -0
  445. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_envelope_compiler.py +0 -0
  446. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_envelope_conformance_fixtures.py +0 -0
  447. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_envelope_public_admission.py +0 -0
  448. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_expected_pauses.py +0 -0
  449. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_finalize_autonomy_record.py +0 -0
  450. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_github_workflows.py +0 -0
  451. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_handoff_schema.py +0 -0
  452. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_inbox_verify.py +0 -0
  453. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_init_project_workspace.py +0 -0
  454. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_intake_conformance.py +0 -0
  455. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_message_signing.py +0 -0
  456. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_message_verify.py +0 -0
  457. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_oacp_constants.py +0 -0
  458. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_oacp_env.py +0 -0
  459. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_oacp_inbox.py +0 -0
  460. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_oacp_watch.py +0 -0
  461. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_packaged_status_template.py +0 -0
  462. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_policy_signing.py +0 -0
  463. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_record_autonomy_outcome.py +0 -0
  464. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_retention.py +0 -0
  465. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_review_loop.py +0 -0
  466. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_send_inbox_message.py +0 -0
  467. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_signing_conformance.py +0 -0
  468. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_spec_version.py +0 -0
  469. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_trust_root.py +0 -0
  470. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_update_workspace.py +0 -0
  471. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_validate_agent_card.py +0 -0
  472. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_validate_message.py +0 -0
  473. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_workspace_discovery.py +0 -0
  474. {oacp_cli-0.4.6 → oacp_cli-0.5.0}/tests/test_write_event.py +0 -0
@@ -7,6 +7,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.5.0] - 2026-09-09
11
+
12
+ ### Added
13
+
14
+ - Memory-layout conformance fixture pinning the layout grammar and sync allowlist ([fixture](tests/conformance/memory_layout/README.md)).
15
+ - `oacp doctor` reports the installed `agent-memory` version and defers memory-home checks to it ([doctor guide](docs/guides/doctor.md)).
16
+ - Preflight and wheel guards fail when a kernel module or the wheel ships the memory engine ([lean kernel](docs/protocol/org_memory.md#conformance)).
17
+
18
+ ### Changed
19
+
20
+ - The org-memory doc becomes the three-tier memory layout spec the kernel scaffolds against ([memory layout](docs/protocol/org_memory.md#layout)).
21
+ - `oacp memory` and `oacp org-memory` delegate to the `agent-memory` CLI until their removal in 0.5.2 ([README](README.md#commands)).
22
+ - `oacp setup` no longer installs memory hooks and retires the ones it generated; `agent-memory setup` replaces them ([quickstart](QUICKSTART.md)).
23
+ - `oacp session-init --pull-memory` delegates to `agent-memory`, reporting `disabled` when absent ([codex](docs/protocol/session_init.md#codex)).
24
+
25
+ ### Removed
26
+
27
+ - `docs/protocol/cross_runtime_sync.md`; its durable-memory half moved to the layout spec ([layout](docs/protocol/org_memory.md#per-project-tier)).
28
+ - The bundled memory engine and org-memory doctor category, shipped as `agent-memory-cli` ([agent-memory](https://github.com/kiloloop/agent-memory)).
29
+ - `oacp doctor --memory`; the memory home is checked by `agent-memory doctor` ([doctor guide](docs/guides/doctor.md)).
30
+
31
+ ### Fixed
32
+
33
+ - `oacp setup codex` regenerates its managed `SessionStart` hook but never creates one ([codex startup](docs/protocol/session_init.md#codex)).
34
+
10
35
  ## [0.4.6] - 2026-09-05
11
36
 
12
37
  ### Added
@@ -843,6 +868,7 @@ The central debrief store is the headline change: every agent's full end-of-sess
843
868
  - Checkout step in github-release workflow job (#19)
844
869
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
845
870
 
871
+ [0.5.0]: https://github.com/kiloloop/oacp/compare/v0.4.6...v0.5.0
846
872
  [0.4.6]: https://github.com/kiloloop/oacp/compare/v0.4.5...v0.4.6
847
873
  [0.4.5]: https://github.com/kiloloop/oacp/compare/v0.4.4...v0.4.5
848
874
  [0.4.4]: https://github.com/kiloloop/oacp/compare/v0.4.3...v0.4.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: oacp-cli
3
- Version: 0.4.6
3
+ Version: 0.5.0
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
@@ -262,13 +262,13 @@ uv tool install .
262
262
  | `oacp inbox` | List pending inbox messages |
263
263
  | `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
264
264
  | `oacp retention` | Prune project message history by age and count |
265
- | `oacp memory` | Archive, restore, or sync memory files |
265
+ | `oacp memory` | Run agent-memory (sync, archive, restore); shim until 0.5.2 |
266
266
  | `oacp session-init` | Verify Codex startup inputs and emit SessionStart context |
267
267
  | `oacp setup` | Generate runtime-specific config files in a repo |
268
268
  | `oacp send` | Send a protocol-compliant inbox message |
269
269
  | `oacp key` | Generate and inspect message-signing keys |
270
270
  | `oacp trust` | Import, inspect, and revoke trust-root entries (catalog + pins) |
271
- | `oacp org-memory` | Initialize org-level memory at $OACP_HOME/org-memory/ |
271
+ | `oacp org-memory` | Run agent-memory org (init); shim until 0.5.2 |
272
272
  | `oacp write-event` | Write an event to org-memory/events/ |
273
273
  | `oacp autonomy-outcome` | Record a human approval/decline in an autonomy audit |
274
274
  | `oacp autonomy-finalize` | Record checkpoints and terminal states in an autonomy audit |
@@ -287,9 +287,9 @@ uv tool install .
287
287
 
288
288
  **`oacp watch`**: `--agent`, repeatable `--project`, `--all-projects`, `--json`, `--since` (default `now`), `--state-id <id>` for per-subscriber cursors, `--show-archived`
289
289
 
290
- **`oacp doctor`**: `--fix` (auto-fix safe issues), `--memory`, `--json`, `-o/--output`
290
+ **`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
291
291
 
292
- **`oacp memory`**: `init [--remote URL]`, `clone <URL> [--force]`, `pull`, `push`, `disable`, `archive <project> <file>`, `restore <project> <file>`
292
+ **`oacp memory`** / **`oacp org-memory`**: exec shims for [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install agent-memory-cli`): argv passes through, `--oacp-dir` becomes `--home`, `oacp memory init` runs `agent-memory enable`. Kept through 0.5.1, removed in 0.5.2; call `agent-memory` directly.
293
293
 
294
294
  </details>
295
295
 
@@ -369,15 +369,12 @@ $OACP_HOME/projects/<project>/
369
369
  └── workspace.json # Project metadata
370
370
  ```
371
371
 
372
- Optionally, `oacp org-memory init` creates org-level shared memory:
373
-
374
- ```
375
- $OACP_HOME/org-memory/
376
- ├── recent.md # Rolling summary, retrieved on demand
377
- ├── decisions.md # Org-wide decisions
378
- ├── rules.md # Standing conventions
379
- └── events/ # Timestamped event entries
380
- ```
372
+ Org-level shared memory and cross-machine sync are the memory tool's:
373
+ [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install
374
+ agent-memory-cli`) scaffolds `$OACP_HOME/org-memory/` (`agent-memory org init`),
375
+ syncs the home (`enable`, `pull`, `push`), checks it (`agent-memory doctor`), and
376
+ installs the runtime startup hook (`agent-memory setup <runtime>`). The layout it
377
+ implements is the kernel's [memory layout spec](docs/protocol/org_memory.md).
381
378
 
382
379
  Init loads the four active project memory files. Org memory is retrieved on
383
380
  demand; syncing it to disk does not load it into context. See
@@ -89,9 +89,14 @@ This creates or updates:
89
89
 
90
90
  - `.claude/agents/my-first-project.md`
91
91
  - `.claude/skills/`
92
- - `.claude/hooks/oacp-memory-pull.sh`
93
92
  - `.claude/settings.json`
94
93
 
94
+ Memory sync and its startup hook are the memory tool's: install
95
+ [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install
96
+ agent-memory-cli`) and run `agent-memory setup claude`. A regeneration of
97
+ `oacp setup` retires the memory hooks earlier kernels wrote, by exact command
98
+ and digest, and leaves anything you edited in place.
99
+
95
100
  For other supported runtimes, use the same shape:
96
101
 
97
102
  ```bash
@@ -101,20 +106,21 @@ oacp setup gemini --project my-first-project
101
106
  ```
102
107
 
103
108
  Codex setup creates or merges `.codex/hooks.json` with one startup-only hook.
104
- Review and trust it with `/hooks`; it runs memory pull and startup verification
105
- sequentially. If hooks are unavailable, run the manual fallback:
109
+ Review and trust it with `/hooks`; it runs the startup verification. If hooks
110
+ are unavailable, run the manual fallback:
106
111
 
107
112
  ```bash
108
- oacp session-init --pull-memory --project my-first-project
113
+ oacp session-init --project my-first-project
109
114
  ```
110
115
 
111
- Memory pull synchronizes files on disk. The init manifest names the protocol
112
- files and four project memory files to read into context; org memory is
113
- retrieved on demand. See [memory context](docs/guides/memory-context.md) for
114
- retrieval and existing-installation guidance.
116
+ The init manifest names the protocol files and four project memory files to
117
+ read into context; org memory is retrieved on demand. Syncing the home is
118
+ `agent-memory pull` (its `setup codex` hook runs it at startup). See
119
+ [memory context](docs/guides/memory-context.md) for retrieval and
120
+ existing-installation guidance.
115
121
 
116
122
  Runtime setup does not install an automatic memory push. Publish durable memory
117
- explicitly during wrap-up with `oacp memory push`.
123
+ explicitly during wrap-up with `agent-memory push`.
118
124
 
119
125
  Cursor support is scaffold-only until Cursor-owned rules land. Cursor sessions
120
126
  must set `OACP_RUNTIME=cursor` or pass `--from` explicitly when sending messages.
@@ -226,7 +232,7 @@ checks the project workspace, inboxes, schemas, and agent status files.
226
232
  ## What's Next?
227
233
 
228
234
  - **Review loop** — Set up structured code review between agents. See [docs/protocol/review_loop.md](docs/protocol/review_loop.md).
229
- - **Durable memory** — Learn how agents share knowledge across sessions. See [docs/protocol/cross_runtime_sync.md](docs/protocol/cross_runtime_sync.md).
235
+ - **Durable memory** — Learn how agents share knowledge across sessions and machines. See [docs/protocol/org_memory.md](docs/protocol/org_memory.md).
230
236
  - **Safety defaults** — Understand the baseline safety rules. See [docs/protocol/agent_safety_defaults.md](docs/protocol/agent_safety_defaults.md).
231
237
  - **Full protocol** — Read the complete specification in [SPEC.md](SPEC.md).
232
238
  - **Adoption guide** — Minimum, recommended, and full adoption paths. See [docs/guides/adoption.md](docs/guides/adoption.md).
@@ -234,13 +234,13 @@ uv tool install .
234
234
  | `oacp inbox` | List pending inbox messages |
235
235
  | `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
236
236
  | `oacp retention` | Prune project message history by age and count |
237
- | `oacp memory` | Archive, restore, or sync memory files |
237
+ | `oacp memory` | Run agent-memory (sync, archive, restore); shim until 0.5.2 |
238
238
  | `oacp session-init` | Verify Codex startup inputs and emit SessionStart context |
239
239
  | `oacp setup` | Generate runtime-specific config files in a repo |
240
240
  | `oacp send` | Send a protocol-compliant inbox message |
241
241
  | `oacp key` | Generate and inspect message-signing keys |
242
242
  | `oacp trust` | Import, inspect, and revoke trust-root entries (catalog + pins) |
243
- | `oacp org-memory` | Initialize org-level memory at $OACP_HOME/org-memory/ |
243
+ | `oacp org-memory` | Run agent-memory org (init); shim until 0.5.2 |
244
244
  | `oacp write-event` | Write an event to org-memory/events/ |
245
245
  | `oacp autonomy-outcome` | Record a human approval/decline in an autonomy audit |
246
246
  | `oacp autonomy-finalize` | Record checkpoints and terminal states in an autonomy audit |
@@ -259,9 +259,9 @@ uv tool install .
259
259
 
260
260
  **`oacp watch`**: `--agent`, repeatable `--project`, `--all-projects`, `--json`, `--since` (default `now`), `--state-id <id>` for per-subscriber cursors, `--show-archived`
261
261
 
262
- **`oacp doctor`**: `--fix` (auto-fix safe issues), `--memory`, `--json`, `-o/--output`
262
+ **`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
263
263
 
264
- **`oacp memory`**: `init [--remote URL]`, `clone <URL> [--force]`, `pull`, `push`, `disable`, `archive <project> <file>`, `restore <project> <file>`
264
+ **`oacp memory`** / **`oacp org-memory`**: exec shims for [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install agent-memory-cli`): argv passes through, `--oacp-dir` becomes `--home`, `oacp memory init` runs `agent-memory enable`. Kept through 0.5.1, removed in 0.5.2; call `agent-memory` directly.
265
265
 
266
266
  </details>
267
267
 
@@ -341,15 +341,12 @@ $OACP_HOME/projects/<project>/
341
341
  └── workspace.json # Project metadata
342
342
  ```
343
343
 
344
- Optionally, `oacp org-memory init` creates org-level shared memory:
345
-
346
- ```
347
- $OACP_HOME/org-memory/
348
- ├── recent.md # Rolling summary, retrieved on demand
349
- ├── decisions.md # Org-wide decisions
350
- ├── rules.md # Standing conventions
351
- └── events/ # Timestamped event entries
352
- ```
344
+ Org-level shared memory and cross-machine sync are the memory tool's:
345
+ [agent-memory](https://github.com/kiloloop/agent-memory) (`pip install
346
+ agent-memory-cli`) scaffolds `$OACP_HOME/org-memory/` (`agent-memory org init`),
347
+ syncs the home (`enable`, `pull`, `push`), checks it (`agent-memory doctor`), and
348
+ installs the runtime startup hook (`agent-memory setup <runtime>`). The layout it
349
+ implements is the kernel's [memory layout spec](docs/protocol/org_memory.md).
353
350
 
354
351
  Init loads the four active project memory files. Org memory is retrieved on
355
352
  demand; syncing it to disk does not load it into context. See
@@ -23,7 +23,7 @@ documents ship inside the `oacp-cli` wheel.
23
23
  | [`docs/protocol/inbox_outbox.md`](docs/protocol/inbox_outbox.md) | Wire format including the signed `auth` trailer; directory layout; message types; lifecycle — a processed inbound message is archived to `inbox/archive/` by digest-checked, no-clobber move (never deleted), and an intake rejection is quarantined to `dead_letter/`; threading, broadcast, expiry, retention. |
24
24
  | [`docs/protocol/message_signing.md`](docs/protocol/message_signing.md) | Trust root and receiver pins, verify modes (`off` / `warn` / `enforce`), receiver audit stamping, policy-file signing, key management, rotation and revocation, signing conformance. |
25
25
  | [`docs/protocol/autonomy.md`](docs/protocol/autonomy.md) | Receiver autonomy: config and task profiles, the four-gate admission evaluator and hard stops, audit records (admission ledger, human outcomes, terminal finalization), threshold checkpoints and re-authorization, scope-envelope enforcement, continuation grants. |
26
- | [`docs/protocol/org_memory.md`](docs/protocol/org_memory.md) | Org-level memory: directory structure, event file schema, the debrief store, permission model and lifecycle. |
26
+ | [`docs/protocol/org_memory.md`](docs/protocol/org_memory.md) | Memory layout: the per-project, org, and cross-machine tiers — paths, files, who writes what, the event and debrief schemas, the sync marker and allowlist. |
27
27
 
28
28
  ## Userland documents
29
29
 
@@ -36,7 +36,6 @@ receiver must verify.
36
36
  | [`docs/protocol/task_negotiation.md`](docs/protocol/task_negotiation.md) | Propose / accept / counter-propose handshake for splitting work between agents. |
37
37
  | [`docs/protocol/multi_agent_shared_workspace.md`](docs/protocol/multi_agent_shared_workspace.md) | Shared-folder implementation → QA → deployment handoff with batched findings and signoff. |
38
38
  | [`docs/protocol/session_init.md`](docs/protocol/session_init.md) | Runtime-agnostic session-start sequence and failure handling. |
39
- | [`docs/protocol/cross_runtime_sync.md`](docs/protocol/cross_runtime_sync.md) | Keeping context consistent across runtimes: durable memory, handoff messages, review artifacts. |
40
39
  | [`docs/protocol/runtime_capabilities.md`](docs/protocol/runtime_capabilities.md) | Static capability declarations, dynamic `status.yaml`, health-check contract, agent cards. |
41
40
  | [`docs/protocol/agent_profiles.md`](docs/protocol/agent_profiles.md) | Two-tier identity: global agent profiles and project-level agent cards. |
42
41
  | [`docs/protocol/agent_safety_defaults.md`](docs/protocol/agent_safety_defaults.md) | Baseline git, staging, inbox, credential, and scope rules every agent follows. |
@@ -49,7 +48,7 @@ Guides — [`docs/guides/setup.md`](docs/guides/setup.md),
49
48
  [`versioning.md`](docs/guides/versioning.md),
50
49
  [`unified_skill_spec.md`](docs/guides/unified_skill_spec.md) — and the
51
50
  executable conformance fixtures under [`tests/conformance/`](tests/conformance/)
52
- (autonomy, signing, intake, envelope) round out the set. Runtime-specific skills
51
+ (autonomy, signing, intake, envelope, memory layout) round out the set. Runtime-specific skills
53
52
  that operate the protocol live in the companion
54
53
  [oacp-skills](https://github.com/kiloloop/oacp-skills) repository.
55
54
 
@@ -27,6 +27,7 @@ Verifies that required and optional CLI tools are installed and reachable on `PA
27
27
  | `ruff` | No | Python linter (optional, used in preflight) |
28
28
  | `shellcheck` | No | Shell script linter (optional) |
29
29
  | `pyyaml` | No | PyYAML library (needed for YAML validation) |
30
+ | `agent-memory` | No | Memory tool (`agent-memory-cli`); the row reports its version and hands memory-home checks to `agent-memory doctor` |
30
31
 
31
32
  ### 2. Workspace
32
33
 
@@ -103,6 +104,8 @@ $ oacp doctor
103
104
  [+] ruff — ruff 0.8.1
104
105
  [-] shellcheck — not installed (optional)
105
106
  Install: brew install shellcheck
107
+ [-] agent-memory — not installed
108
+ Install: pip install agent-memory-cli
106
109
  [+] pyyaml — available
107
110
 
108
111
  No issues found.
@@ -120,6 +123,7 @@ $ oacp doctor --project my-project
120
123
  [+] ruff — ruff 0.8.1
121
124
  [-] shellcheck — not installed (optional)
122
125
  Install: brew install shellcheck
126
+ [+] agent-memory — agent-memory 0.1.0 (run agent-memory doctor)
123
127
  [+] pyyaml — available
124
128
 
125
129
  [+] Workspace
@@ -181,6 +185,7 @@ The exit code reflects the overall result:
181
185
  | `pyyaml — not importable` | `pip install pyyaml` |
182
186
  | `ruff — not installed` | `pip install ruff` (optional, for linting) |
183
187
  | `shellcheck — not installed` | `brew install shellcheck` (optional, for shell script linting) |
188
+ | `agent-memory — not installed` | `pip install agent-memory-cli` (optional; `agent-memory doctor` then checks the memory home) |
184
189
 
185
190
  ### Workspace
186
191
 
@@ -220,7 +225,6 @@ oacp doctor --project <name> # full workspace + agent checks
220
225
  oacp doctor --json # machine-readable JSON output
221
226
  oacp doctor --project <name> --json # full checks in JSON format
222
227
  oacp doctor --project <name> --fix # auto-fix safe issues (missing inbox dirs, missing/stale status.yaml)
223
- oacp doctor --memory # advisory checks for OACP_HOME memory git sync
224
228
  oacp doctor -o report.txt # save report to file
225
229
  ```
226
230
 
@@ -18,7 +18,7 @@ protocol files and those four project files, then emits a manifest. The agent
18
18
  still performs the ordered reads; verification does not inject their contents.
19
19
  Missing project files are reported under the existing degraded-init behavior.
20
20
 
21
- `oacp memory pull` synchronizes the memory repository on disk, including org
21
+ `agent-memory pull` synchronizes the memory repository on disk, including org
22
22
  memory and its history. A successful pull does not add those files to model
23
23
  context. Keep any configured pull before project-memory reads so those reads
24
24
  use the refreshed files. Sync selection and context selection are independent;
@@ -35,7 +35,7 @@ a hook that the project has disabled.
35
35
  others. Read applicable standing rules and decisions before the actions
36
36
  they govern, such as release, review authority, or architecture work.
37
37
  2. If cross-machine sync is configured, the task needs current shared facts,
38
- and local freshness is unknown, run `oacp memory pull`. A failed pull leaves
38
+ and local freshness is unknown, run `agent-memory pull`. A failed pull leaves
39
39
  freshness unknown; report that limitation before relying on affected facts.
40
40
  3. Search the relevant explicit files with task identifiers and topic terms.
41
41
  For example, after confirming that `rules.md` exists:
@@ -333,8 +333,8 @@ can never authenticate a message.
333
333
  - **Keys are per-machine and never leave `$OACP_HOME/keys/`.** They are
334
334
  never synced and never committed. The memory-sync allowlist structurally
335
335
  excludes `keys/` on the push side, and the canonical workspace
336
- `.gitignore` carries an explicit `keys/` deny line that `oacp memory
337
- init` and the doctor `root-gitignore` drift check propagate fleet-wide.
336
+ `.gitignore` carries an explicit `keys/` deny line that the memory tool
337
+ (`agent-memory enable`, and its doctor's drift check) propagates fleet-wide.
338
338
  - **The 0600 file keystore is the v0.4.0 floor, not the design.** Private
339
339
  key files are created `0600` under `0700` directories and loaded only
340
340
  after a mode check. The backend is pluggable by design: messages
@@ -1,13 +1,124 @@
1
- # Org-Level Memory Protocol
1
+ # Memory Layout Protocol
2
2
 
3
3
  ## Purpose
4
4
 
5
- Shared, cross-project memory for multi-agent organizations. Agents across projects read org-wide decisions, conventions, and events from a single location. Complements per-project memory (`$OACP_HOME/projects/<project>/memory/`) — does not replace it.
5
+ Durable memory shared by every agent and runtime in an OACP home, laid out in
6
+ three tiers:
7
+
8
+ | Tier | Where | Holds |
9
+ |---|---|---|
10
+ | Per-project | `projects/<project>/memory/` | The four-file active working set one project's agents read at session start, plus `archive/` |
11
+ | Org | `org-memory/` | Cross-project decisions, conventions, events, and the debrief store |
12
+ | Cross-machine | The home as a git repository | The two storage tiers above, carried between machines by an allowlisted sync |
13
+
14
+ The kernel owns this layout: the paths, the files, who writes what, the marker
15
+ and ignore files, and the sync allowlist. `oacp init` scaffolds the per-project
16
+ tier against it. Memory *tooling* — the org-tier scaffold, capture, recall,
17
+ archive, the sync verbs, a memory doctor — is userland and lives in
18
+ [`agent-memory`](https://github.com/kiloloop/agent-memory) (`agent-memory-cli`
19
+ on PyPI), which implements this layout and links back here; this document
20
+ names no command surface. Runtime loading mechanics stay where they are: the
21
+ session-start read set is [Session Init](session_init.md#step-3-load-durable-memory)
22
+ Step 3, and org-memory retrieval policy is the
23
+ [memory context guide](../guides/memory-context.md).
24
+
25
+ Lean-kernel admission: what every receiver must understand to share memory
26
+ with another is the layout — an entry written to
27
+ `projects/<project>/memory/decision_log.md` on one machine must be found at
28
+ that path by every other agent and machine. Everything else about memory (what
29
+ a good entry looks like, when to promote, how to search) is convention and
30
+ lives in guides and skills.
31
+
32
+ ## Layout
33
+
34
+ The complete layout, relative to the OACP home (`$OACP_HOME`). `*` stands for
35
+ one project name; a trailing `/` marks a directory. This block is the finite
36
+ grammar of the layout: an implementation creates nothing else and a document
37
+ names nothing else.
38
+
39
+ ```oacp-memory-layout
40
+ .gitignore
41
+ .oacp-memory-repo
42
+ org-memory/
43
+ org-memory/recent.md
44
+ org-memory/decisions.md
45
+ org-memory/rules.md
46
+ org-memory/events/
47
+ org-memory/debriefs/
48
+ projects/
49
+ projects/*/memory/
50
+ projects/*/memory/project_facts.md
51
+ projects/*/memory/decision_log.md
52
+ projects/*/memory/open_threads.md
53
+ projects/*/memory/known_debt.md
54
+ projects/*/memory/archive/
55
+ projects/*/memory/.cache/
56
+ ```
57
+
58
+ `<project>` follows the workspace project-name rule: any name that does not
59
+ start with `.` and contains no `/` or `\`. Everything else in the home is not
60
+ memory — `keys/` (the signing keystore, denied below), a project's `agents/`
61
+ and `packets/` trees, `state/`, and any other sibling stay on the machine that
62
+ wrote them. `.gitkeep` placeholders that scaffolding drops into empty
63
+ directories so they survive git are scaffolding, not layout.
64
+
65
+ Scaffolding creates missing entries only. A file slot that is already
66
+ occupied — by a regular file, a directory, or a link, dangling included — is
67
+ never rewritten and never followed. An existing directory is entered as found,
68
+ a directory symlink included. A home that has drifted from this layout is
69
+ reported by tooling, not silently repaired.
70
+
71
+ ## Per-Project Tier
72
+
73
+ **Location:** `projects/<project>/memory/`, created by `oacp init <project>`
74
+ with the rest of the project workspace.
75
+
76
+ ### The four files
77
+
78
+ The active working set. Every runtime reads these four files, in this order, at
79
+ session start ([Session Init](session_init.md#step-3-load-durable-memory)
80
+ Step 3), and only verified, stable outcomes are written to them.
81
+
82
+ | File | Holds | Written by |
83
+ |---|---|---|
84
+ | `project_facts.md` | Agent roles, repo structure, architecture, conventions | Any agent, via the project's durable-memory promotion flow |
85
+ | `decision_log.md` | Dated decisions with rationale. Append-only: a decision is superseded by a newer entry, never edited | Any agent, via the promotion flow |
86
+ | `open_threads.md` | Unresolved issues, blocked work, cross-agent coordination | Any agent, via the promotion flow |
87
+ | `known_debt.md` | Verified unresolved debt that should persist across sessions | Any agent, via the promotion flow |
88
+
89
+ Scaffolding writes each file once, from a template, and never overwrites one
90
+ that exists.
91
+
92
+ **Promotion flow.** Memory is written at stable points, not during work. Merge
93
+ decisions and equivalent terminal artifacts carry a "Durable Memory Updates"
94
+ section, and the project's promotion mechanism appends approved entries to the
95
+ matching file, deduplicating against existing content. Raw logs, long command
96
+ output, transcripts, and in-progress state never enter these files (see
97
+ [Durable Memory Promotion](multi_agent_shared_workspace.md#durable-memory-promotion)).
98
+
99
+ ### `archive/`
100
+
101
+ `projects/<project>/memory/archive/` holds files retired from the active set —
102
+ supplementary notes a project accumulated, or an older working file replaced by
103
+ a newer one — for historical retention. Archived files are retrieved when a
104
+ task needs them; restoring one to `memory/` does not add it to the required
105
+ session-start reads, which stay the four files above.
6
106
 
7
- ## Directory Structure
107
+ ### `.cache/`
108
+
109
+ `projects/<project>/memory/.cache/` is reserved for local, regenerable state
110
+ (indexes, scratch) that tooling keeps beside the tier. It never syncs (see the
111
+ allowlist below) and is never a session-start read.
112
+
113
+ ## Org Tier
114
+
115
+ **Location:** `org-memory/`, beside `projects/`, created by `agent-memory org
116
+ init`. Shared, cross-project memory: agents across projects read org-wide
117
+ decisions, conventions, and events from a single location. It complements
118
+ per-project memory and never replaces it.
8
119
 
9
120
  ```
10
- $OACP_HOME/org-memory/
121
+ org-memory/
11
122
  recent.md # rolling summary (~60K chars / ~15K tokens)
12
123
  decisions.md # topical: org-wide decisions (illustrative default)
13
124
  rules.md # topical: standing conventions (illustrative default)
@@ -33,7 +144,7 @@ budget governs. Collapse older detail into topical files or history so the
33
144
  file remains a bounded rolling summary when retrieved. This is a curation
34
145
  budget, not a requirement or allowance to load that much context at startup.
35
146
 
36
- ## Event File Schema
147
+ ### Event File Schema
37
148
 
38
149
  ```markdown
39
150
  ---
@@ -50,7 +161,7 @@ supersedes: event/20260310-old-decision # optional — for decisions that over
50
161
  Short description of what happened and why it matters.
51
162
  ```
52
163
 
53
- ### Required Fields
164
+ #### Required Fields
54
165
 
55
166
  | Field | Type | Description |
56
167
  |-------|------|-------------|
@@ -60,15 +171,15 @@ Short description of what happened and why it matters.
60
171
  | `project` | string | Originating project |
61
172
  | `type` | enum | `decision`, `event`, or `rule` |
62
173
 
63
- ### Optional Fields
174
+ #### Optional Fields
64
175
 
65
176
  | Field | Type | Description |
66
177
  |-------|------|-------------|
67
- | `source_ref` | string | Provenance ID for dual-write reconciliation |
178
+ | `source_ref` | string | Provenance ID for dual-write reconciliation; when the event was folded from a session debrief, the debrief-store filename stem (`<YYYYMMDD>-<agent>-<session>`) |
68
179
  | `related` | list | Cross-references to PRs, issues, or other events |
69
180
  | `supersedes` | string | Event path that this entry overrides |
70
181
 
71
- ### File Naming
182
+ #### File Naming
72
183
 
73
184
  Files are named `YYYYMMDD-HHMMSS-short-slug.md` where the timestamp provides sub-day ordering and the slug is a brief descriptor (lowercase, hyphen-separated).
74
185
 
@@ -84,14 +195,15 @@ per session — instead of in per-project trees. Debriefs are the full-fidelity
84
195
  session record; events remain the filtered-outcome channel. The two are
85
196
  distinct artifact classes and neither substitutes for the other.
86
197
 
87
- `oacp org-memory init` creates `debriefs/` (with a `.gitkeep` placeholder so
88
- the empty directory survives git-based sync). `oacp doctor` checks the store
89
- setup — directory presence, path layout, lingering staging artifacts,
198
+ The org-tier scaffold creates `debriefs/` (with a `.gitkeep` placeholder so
199
+ the empty directory survives git-based sync). The memory doctor checks the
200
+ store setup — directory presence, path layout, lingering staging artifacts,
90
201
  irregular entries — and never opens debrief files: content and format
91
202
  verification belong to the writer contract (read-back at publication) and to
92
203
  git history, not to the doctor. The kernel owns only this layout and schema;
93
- the writer that produces debrief files is adopter tooling (for example, a
94
- debrief skill script) — there is no kernel subcommand for writing debriefs.
204
+ the writer that produces debrief files is adopter tooling (for example,
205
+ agent-memory's debrief verb) — there is no kernel subcommand for writing
206
+ debriefs.
95
207
 
96
208
  ### Path and File Naming
97
209
 
@@ -258,47 +370,93 @@ configuration is needed.
258
370
  - Debriefs are permanent history: individual files are never rewritten (see
259
371
  Append-Only Rule); retention beyond that is adopter-defined
260
372
 
261
- ## Integration Pattern (Cortex Reference Implementation)
262
-
263
- Cortex demonstrates the dual-pipeline pattern — same source data, two audiences. This is a reference implementation, not a protocol requirement.
264
-
265
- **Debrief step (write):**
266
- - Debrief → cortex inbox (existing, for human)
267
- - Debrief → `org-memory/debriefs/` (the canonical immutable session record — see Debrief Store)
268
- - Curated outcome events → `org-memory/events/` (filtered derivatives, for agents — never the raw debrief; see Curation Guard)
269
- - All three writes treated as a logical unit — retry/warn on partial failure
270
- - `source_ref` in event frontmatter matches the debrief-store filename stem (`<YYYYMMDD>-<agent>-<session>`) for reconciliation
271
-
272
- **Sync step (curate):**
273
- - Debriefs (read from `org-memory/debriefs/`) → SSOT + vault daily notes (existing, for human)
274
- - Events → topical files + `recent.md` (new, for agents)
275
- - Sync cross-references SSOT when curating topical files to prevent drift
276
- - Sync is idempotent — handles duplicates/replays via `source_ref` + `created_at_utc`
277
-
278
- **Consistency model:** Eventual, not strong. The pipelines may temporarily diverge. `source_ref` enables reconciliation against the debrief-store record. Adopter failure semantics (retryable partial failure, blocked debrief, or acceptable degraded mode) apply to the inbox and event writes; the debrief-store write is required by the Debrief Store section, and a store write that ultimately fails is a reported failure to retry, never an accepted degraded mode.
279
-
280
- ## v0.2 Scope
281
-
282
- 1. Format spec (directory structure, frontmatter schema, naming convention)
283
- 2. CLI: `oacp org-memory init` (scaffold directory, including `debriefs/`) and `oacp write-event` (create event files)
284
- 3. Agents write their full session debrief to `org-memory/debriefs/` (via adopter tooling — see Debrief Store) and curated outcome events during debrief
285
- 4. Agents retrieve relevant sections of topical files and `recent.md` for org context on demand
286
- 5. Coordinator maintains topical files during sync
287
-
288
- ## v0.3+
373
+ ## Cross-Machine Tier
374
+
375
+ Optional. A home that syncs is a plain git repository at the home root with
376
+ one remote; the layout does not change and no server is involved. The two
377
+ storage tiers are what syncs, selected by an allowlist; every other path in
378
+ the home stays on the machine that wrote it. What an implementation does with
379
+ the allowlist — commit, push, fast-forward pull, refuse to merge — is the
380
+ tool's contract, not the kernel's: see agent-memory's
381
+ [sync commands](https://github.com/kiloloop/agent-memory/blob/main/docs/commands.md#sync).
382
+
383
+ ### The marker
384
+
385
+ `.oacp-memory-repo` at the home root marks a home whose memory syncs. Presence
386
+ is the whole signal: tooling and startup hooks that pull memory check for the
387
+ file and do nothing when it is absent, so removing it disables sync locally
388
+ without touching the repository or its history. Its content is informational.
389
+ The name is a compatibility contract with every existing home; keep it
390
+ verbatim. Syncing is opt-in, so scaffolding a home never creates the marker.
391
+
392
+ ### The sync allowlist
393
+
394
+ `.gitignore` at the home root carries the canonical allowlist, byte for byte:
395
+
396
+ ```gitignore
397
+ *
398
+ !*/
399
+ !.gitignore
400
+ !.oacp-memory-repo
401
+ !org-memory/**
402
+ !projects/*/memory/**
403
+ projects/*/memory/.cache/
404
+ # never sync private key material — explicit deny, wins over any future allowlist widening
405
+ keys/
406
+ ```
289
407
 
290
- - Agent write access to topical files (with schema validation)
291
- - `recent.md` auto-generation from topical files + recent events
292
- - Search/discovery tooling (BM25 or similar)
293
- - Structured `id` field on events for cross-referencing
408
+ Line by line:
409
+
410
+ - **Deny everything, then re-allow directories** (`*`, `!*/`) so the tier
411
+ patterns below can reach into the tree.
412
+ - **The synced set** is the ignore file itself, the marker, `org-memory/**`
413
+ in full (the debrief store included), and `projects/*/memory/**` for every
414
+ project.
415
+ - **`projects/*/memory/.cache/` never syncs** — the one excluded subtree
416
+ inside a tier.
417
+ - **`keys/` never syncs.** The signing keystore
418
+ ([key management](message_signing.md#key-management)) is denied last, after
419
+ every allow rule, so the deny wins even if the allowlist is widened above
420
+ it.
421
+
422
+ ### Which paths sync
423
+
424
+ The allowlist is also a predicate over home-relative paths, and the predicate,
425
+ not the ignore file, is what a sync engine trusts:
426
+
427
+ - `.gitignore` and `.oacp-memory-repo` are allowed.
428
+ - A path with any component named `keys` is denied, at any depth, whatever
429
+ the ignore file says.
430
+ - A path strictly inside a tier directory (`org-memory/…`,
431
+ `projects/<project>/memory/…`) is allowed unless its first component below
432
+ the tier is one of that tier's unsynced names. The project tier excludes
433
+ `.cache`; the org tier excludes nothing, so `org-memory/.cache/…` syncs.
434
+ The tier directory itself is not a path inside it.
435
+ - Every other path is denied.
436
+
437
+ The tier directories an engine may stage are enumerated in allowlist order:
438
+ `org-memory/` first, then each existing `projects/<project>/memory/` in
439
+ project-name order.
440
+
441
+ ## Conformance
442
+
443
+ The layout ships as data. `tests/conformance/memory_layout/layout.yaml`
444
+ carries the same entry set as the Layout block above, and
445
+ `canonical_memory_gitignore.txt` beside it is the allowlist byte for byte.
446
+ `tests/test_memory_layout_fixture.py` holds this document, the fixture, and
447
+ the kernel's project-tier scaffold to one another in both directions, and
448
+ derives the allowlist's rule lines from the fixture's tiers and never-synced
449
+ names so the two fixture files cannot disagree. An implementation vendors the
450
+ two fixture files and asserts its own layout table, ignore text, and org-tier
451
+ scaffold against them the same way.
294
452
 
295
453
  ## Design Rationale
296
454
 
297
455
  | Alternative | Why not |
298
456
  |---|---|
299
457
  | Single monolithic file | Wastes tokens, no progressive disclosure |
300
- | Events only (Codex pattern) | Optimizes for writing, weak for reading — "What's our API convention?" shouldn't require scanning 50 event files |
301
- | Topical only (Iris pattern) | No low-friction write path for agents — event files require only frontmatter, not schema knowledge |
458
+ | Events only | Optimizes for writing, weak for reading — "What's our API convention?" shouldn't require scanning 50 event files |
459
+ | Topical only | No low-friction write path for agents — event files require only frontmatter, not schema knowledge |
302
460
  | Inheritance model | Flat merge is simpler, no parent/child override complexity |
303
461
 
304
462
  The hybrid (topical + events) gives agents a fast read path (topical files) and a fast write path (events/), with coordinator curation bridging the two.
@@ -173,9 +173,11 @@ The `oacp doctor` command validates environment and workspace health. Every chec
173
173
  ### Runtime startup and session telemetry
174
174
 
175
175
  Runtime-specific startup owns `status.yaml`. For Codex, `oacp setup codex`
176
- registers a `SessionStart` handler that runs memory pull and `oacp session-init`
177
- sequentially after the user reviews and trusts it with `/hooks`. The manual
178
- fallback is `oacp session-init --pull-memory --project <project>`.
176
+ registers a `SessionStart` handler that runs `oacp session-init` after the user
177
+ reviews and trusts it with `/hooks`; memory pull is the memory tool's own hook
178
+ (`agent-memory setup codex`). Registration regenerates the managed handler only —
179
+ an existing hooks file carrying no managed entry is never given one. The manual
180
+ fallback is `oacp session-init --project <project>`.
179
181
 
180
182
  Memory pull synchronizes disk files. Init names the required protocol and
181
183
  project-memory reads; org-memory retrieval is on demand. See