oacp-cli 0.4.2__tar.gz → 0.4.4__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 (471) hide show
  1. oacp_cli-0.4.4/.github/workflows/auto-estimate.yml +24 -0
  2. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/.github/workflows/ci.yml +3 -3
  3. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/.github/workflows/release.yml +8 -8
  4. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/.gitignore +2 -1
  5. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/CHANGELOG.md +107 -0
  6. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/CONTRIBUTING.md +15 -2
  7. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/Makefile +4 -10
  8. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/PKG-INFO +29 -15
  9. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/QUICKSTART.md +12 -2
  10. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/README.md +25 -11
  11. oacp_cli-0.4.4/SPEC.md +60 -0
  12. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/guides/doctor.md +2 -2
  13. oacp_cli-0.4.4/docs/guides/prompt_caching.md +3 -0
  14. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/guides/setup.md +1 -1
  15. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/agent_profiles.md +26 -10
  16. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/autonomy.md +676 -38
  17. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/inbox_outbox.md +68 -9
  18. oacp_cli-0.4.4/docs/protocol/org_memory.md +298 -0
  19. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/review_loop.md +52 -0
  20. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/runtime_capabilities.md +15 -8
  21. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/session_init.md +27 -17
  22. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/quickstart/README.md +1 -1
  23. oacp_cli-0.4.4/mcp_servers/README.md +8 -0
  24. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/oacp/cli.py +10 -1
  25. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/pyproject.toml +29 -5
  26. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/_oacp_constants.py +74 -1
  27. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/add_agent.py +39 -14
  28. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/agent_profile.py +314 -15
  29. oacp_cli-0.4.4/scripts/autonomy_gate.py +4087 -0
  30. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/claude_envelope_hook.py +446 -40
  31. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/codex_session_init.py +214 -45
  32. oacp_cli-0.4.4/scripts/finalize_autonomy_record.py +1279 -0
  33. oacp_cli-0.4.4/scripts/gen_readme_commands.py +155 -0
  34. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/init_org_memory.py +11 -0
  35. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/init_packet.sh +1 -1
  36. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/init_project_workspace.py +22 -2
  37. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/oacp_doctor.py +408 -4
  38. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/preflight.py +121 -0
  39. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/record_autonomy_outcome.py +2 -28
  40. oacp_cli-0.4.4/scripts/retention.py +407 -0
  41. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/send_inbox_message.py +11 -2
  42. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/session_lifecycle_hooks.py +2 -2
  43. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/setup_runtime.py +223 -35
  44. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/update_workspace.sh +37 -3
  45. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/agent_profile.template.yaml +1 -0
  46. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/handoff_packet.template.yaml +1 -1
  47. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/inbox_message.template.yaml +2 -0
  48. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/receiver_config.template.yaml +4 -0
  49. oacp_cli-0.4.4/tests/conformance/autonomy/README.md +75 -0
  50. oacp_cli-0.4.4/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +12 -0
  51. oacp_cli-0.4.4/tests/conformance/autonomy/actuals/reauth_conflict.yaml +21 -0
  52. oacp_cli-0.4.4/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +14 -0
  53. oacp_cli-0.4.4/tests/conformance/autonomy/actuals/reauth_reuse.yaml +14 -0
  54. oacp_cli-0.4.4/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +14 -0
  55. oacp_cli-0.4.4/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +10 -0
  56. oacp_cli-0.4.4/tests/conformance/autonomy/actuals/review_live_head_mismatch.yaml +2 -0
  57. oacp_cli-0.4.4/tests/conformance/autonomy/actuals/review_live_head_prefix.yaml +2 -0
  58. oacp_cli-0.4.4/tests/conformance/autonomy/audits/prior_review_addressed_accepted.yaml +18 -0
  59. oacp_cli-0.4.4/tests/conformance/autonomy/audits/prior_review_grant_addressed_types.yaml +49 -0
  60. oacp_cli-0.4.4/tests/conformance/autonomy/audits/prior_review_grant_approved.yaml +48 -0
  61. oacp_cli-0.4.4/tests/conformance/autonomy/audits/prior_review_grant_denied_later.yaml +29 -0
  62. oacp_cli-0.4.4/tests/conformance/autonomy/audits/prior_review_grant_denied_postmessage.yaml +29 -0
  63. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +10 -0
  64. oacp_cli-0.4.4/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +41 -0
  65. oacp_cli-0.4.4/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +36 -0
  66. oacp_cli-0.4.4/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +37 -0
  67. oacp_cli-0.4.4/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +31 -0
  68. oacp_cli-0.4.4/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +37 -0
  69. oacp_cli-0.4.4/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +42 -0
  70. oacp_cli-0.4.4/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +29 -0
  71. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +11 -0
  72. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_accepted_auto_continues.yaml +31 -0
  73. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_disabled_pauses.yaml +16 -0
  74. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_drift_pauses.yaml +18 -0
  75. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_expired_pauses.yaml +17 -0
  76. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_head_mismatch_records.yaml +26 -0
  77. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_later_round_pauses.yaml +17 -0
  78. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_missing_approval_pauses.yaml +14 -0
  79. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_prefix_head_records.yaml +26 -0
  80. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_repeated_addressed_round_exceeded.yaml +19 -0
  81. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_revoke_before_processing_pauses.yaml +19 -0
  82. oacp_cli-0.4.4/tests/conformance/autonomy/expected/review_continuation_revoked_pauses.yaml +18 -0
  83. oacp_cli-0.4.4/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +19 -0
  84. oacp_cli-0.4.4/tests/conformance/autonomy/ledger_replay/corpus.yaml +913 -0
  85. oacp_cli-0.4.4/tests/conformance/autonomy/messages/declaration_error_admission.yaml +25 -0
  86. oacp_cli-0.4.4/tests/conformance/autonomy/messages/review_continuation_addressed_round3.yaml +17 -0
  87. oacp_cli-0.4.4/tests/conformance/autonomy/messages/review_continuation_cross_pr.yaml +17 -0
  88. oacp_cli-0.4.4/tests/conformance/autonomy/messages/review_continuation_head_mismatch.yaml +18 -0
  89. oacp_cli-0.4.4/tests/conformance/autonomy/messages/review_continuation_prefix_head.yaml +19 -0
  90. oacp_cli-0.4.4/tests/conformance/autonomy/messages/review_continuation_request.yaml +17 -0
  91. oacp_cli-0.4.4/tests/conformance/autonomy/messages/review_continuation_round4.yaml +17 -0
  92. oacp_cli-0.4.4/tests/conformance/autonomy/messages/review_continuation_unapproved.yaml +27 -0
  93. oacp_cli-0.4.4/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +28 -0
  94. oacp_cli-0.4.4/tests/conformance/autonomy/records/README.md +18 -0
  95. oacp_cli-0.4.4/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +42 -0
  96. oacp_cli-0.4.4/tests/conformance/autonomy/records/breached_empty_fields.yaml +30 -0
  97. oacp_cli-0.4.4/tests/conformance/autonomy/records/clean_terminal_done.yaml +37 -0
  98. oacp_cli-0.4.4/tests/conformance/autonomy/records/duplicate_live_a.yaml +19 -0
  99. oacp_cli-0.4.4/tests/conformance/autonomy/records/duplicate_live_b.yaml +19 -0
  100. oacp_cli-0.4.4/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +23 -0
  101. oacp_cli-0.4.4/tests/conformance/autonomy/records/expected_findings.yaml +46 -0
  102. oacp_cli-0.4.4/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +21 -0
  103. oacp_cli-0.4.4/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +21 -0
  104. oacp_cli-0.4.4/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +32 -0
  105. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +19 -0
  106. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +19 -0
  107. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +19 -0
  108. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +19 -0
  109. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +19 -0
  110. oacp_cli-0.4.4/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +39 -0
  111. oacp_cli-0.4.4/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +19 -0
  112. oacp_cli-0.4.4/tests/conformance/autonomy/records/serialized_wave_item.yaml +52 -0
  113. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +22 -0
  114. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +21 -0
  115. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_missing_successor.yaml +19 -0
  116. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_successor_live.yaml +21 -0
  117. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +21 -0
  118. oacp_cli-0.4.4/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +20 -0
  119. oacp_cli-0.4.4/tests/conformance/org_memory/README.md +22 -0
  120. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/expected.yaml +5 -0
  121. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/.hidden/2026/08/20260825-alice-abc12345.md +14 -0
  122. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +14 -0
  123. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-ABCD.md +14 -0
  124. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825_alice_abc12345.md +14 -0
  125. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/09/20260825-alice-def12345.md +14 -0
  126. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/20260825-alice-abc12345.md +14 -0
  127. oacp_cli-0.4.4/tests/conformance/org_memory/cases/empty_store/expected.yaml +2 -0
  128. oacp_cli-0.4.4/tests/conformance/org_memory/cases/empty_store/org-memory/debriefs/.gitkeep +0 -0
  129. oacp_cli-0.4.4/tests/conformance/org_memory/cases/missing_debriefs_dir/expected.yaml +5 -0
  130. oacp_cli-0.4.4/tests/conformance/org_memory/cases/missing_debriefs_dir/org-memory/recent.md +1 -0
  131. oacp_cli-0.4.4/tests/conformance/org_memory/cases/staging_artifact/expected.yaml +5 -0
  132. oacp_cli-0.4.4/tests/conformance/org_memory/cases/staging_artifact/org-memory/debriefs/demo-project/2026/08/.stage.20260825-alice-77xx88yy.md.a1b2c3 +1 -0
  133. oacp_cli-0.4.4/tests/conformance/org_memory/cases/staging_artifact/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +14 -0
  134. oacp_cli-0.4.4/tests/conformance/org_memory/cases/valid_store/expected.yaml +2 -0
  135. oacp_cli-0.4.4/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/.gitkeep +0 -0
  136. oacp_cli-0.4.4/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/Demo_Project/2026/08/20260825-bob-ops-9f00aa11.md +14 -0
  137. oacp_cli-0.4.4/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +14 -0
  138. oacp_cli-0.4.4/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/demo.project/2026/07/20260701-Alice_2.dev-00aa11bb.md +14 -0
  139. oacp_cli-0.4.4/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/other-project/2026/12/20261203-bob-9e0d44aa.md +14 -0
  140. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_add_agent.py +79 -7
  141. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_agent_profile.py +142 -3
  142. oacp_cli-0.4.4/tests/test_audit_record_conformance.py +89 -0
  143. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_autonomy_conformance_fixtures.py +7 -0
  144. oacp_cli-0.4.4/tests/test_autonomy_gate.py +3644 -0
  145. oacp_cli-0.4.4/tests/test_autonomy_ledger_replay.py +229 -0
  146. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_claude_envelope_hook.py +854 -7
  147. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_codex_session_init.py +178 -10
  148. oacp_cli-0.4.4/tests/test_finalize_autonomy_record.py +1362 -0
  149. oacp_cli-0.4.4/tests/test_init_org_memory.py +46 -0
  150. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_init_project_workspace.py +13 -0
  151. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_memory_sync.py +29 -0
  152. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_oacp_cli.py +13 -0
  153. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_oacp_doctor.py +130 -3
  154. oacp_cli-0.4.4/tests/test_org_memory_doctor.py +195 -0
  155. oacp_cli-0.4.4/tests/test_package_content.py +139 -0
  156. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_preflight.py +137 -0
  157. oacp_cli-0.4.4/tests/test_readme_commands.py +86 -0
  158. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_record_autonomy_outcome.py +34 -2
  159. oacp_cli-0.4.4/tests/test_retention.py +268 -0
  160. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_send_inbox_message.py +84 -1
  161. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_setup_runtime.py +230 -11
  162. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_update_workspace.py +31 -4
  163. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_workspace_discovery.py +0 -117
  164. oacp_cli-0.4.2/SPEC.md +0 -748
  165. oacp_cli-0.4.2/docs/guides/prompt_caching.md +0 -149
  166. oacp_cli-0.4.2/docs/guides/runtime_capability_matrix.md +0 -161
  167. oacp_cli-0.4.2/docs/protocol/org_memory.md +0 -125
  168. oacp_cli-0.4.2/scripts/autonomy_gate.py +0 -1995
  169. oacp_cli-0.4.2/scripts/create_handoff_packet.py +0 -182
  170. oacp_cli-0.4.2/scripts/init_project_workspace.sh +0 -7
  171. oacp_cli-0.4.2/scripts/normalize_findings.py +0 -635
  172. oacp_cli-0.4.2/tests/conformance/autonomy/README.md +0 -38
  173. oacp_cli-0.4.2/tests/test_autonomy_gate.py +0 -1206
  174. oacp_cli-0.4.2/tests/test_create_handoff_packet.py +0 -155
  175. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/.gitattributes +0 -0
  176. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/LICENSE +0 -0
  177. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/SECURITY.md +0 -0
  178. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/from-claude-p.md +0 -0
  179. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/guides/adoption.md +0 -0
  180. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/guides/unified_skill_spec.md +0 -0
  181. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/guides/versioning.md +0 -0
  182. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/img/oacp-cli-demo.png +0 -0
  183. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/img/oacp-filesystem-tree.png +0 -0
  184. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/img/oacp-fleet-thread.png +0 -0
  185. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/agent_safety_defaults.md +0 -0
  186. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/credential_scoping.md +0 -0
  187. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/cross_runtime_sync.md +0 -0
  188. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/dispatch_states.yaml +0 -0
  189. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/mcp_integration.md +0 -0
  190. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/message_signing.md +0 -0
  191. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  192. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/packet_states.yaml +0 -0
  193. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/skills_manifest.yaml +0 -0
  194. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/docs/protocol/task_negotiation.md +0 -0
  195. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/README.md +0 -0
  196. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/decisions.md +0 -0
  197. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
  198. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
  199. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
  200. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
  201. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
  202. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
  203. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/recent.md +0 -0
  204. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/rules.md +0 -0
  205. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/archive/2026-05-21-csv-export-timeouts.md +0 -0
  206. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
  207. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
  208. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
  209. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
  210. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/mcp_servers/oacp_coordinator.py +0 -0
  211. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/oacp/__init__.py +0 -0
  212. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/oacp/envelope_hook.py +0 -0
  213. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/_oacp_env.py +0 -0
  214. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/check_quality_gate.py +0 -0
  215. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/envelope_compiler.py +0 -0
  216. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/handoff_schema.py +0 -0
  217. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/key_cli.py +0 -0
  218. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/memory_archive_common.py +0 -0
  219. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/memory_cli.py +0 -0
  220. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/memory_sync.py +0 -0
  221. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/message_signing.py +0 -0
  222. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/message_verify.py +0 -0
  223. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/oacp_inbox.py +0 -0
  224. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/oacp_watch.py +0 -0
  225. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/policy_signing.py +0 -0
  226. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/promote_to_archive.py +0 -0
  227. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/restore_from_archive.py +0 -0
  228. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/trust_cli.py +0 -0
  229. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/trust_root.py +0 -0
  230. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/validate_agent_card.py +0 -0
  231. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/validate_message.py +0 -0
  232. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/scripts/write_event.py +0 -0
  233. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/agent_card.template.yaml +0 -0
  234. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/agent_status.template.yaml +0 -0
  235. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/checkpoint.template.md +0 -0
  236. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/claude/agents/role_agent.template.md +0 -0
  237. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/claude/rules/guardrail.template.md +0 -0
  238. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/findings_packet.template.yaml +0 -0
  239. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/github_actions_quality_gate.yaml +0 -0
  240. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/guardrails/coding_standards.template.md +0 -0
  241. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/guardrails/safe_commands.template.md +0 -0
  242. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/guardrails/secrets_rules.template.md +0 -0
  243. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/manual_validation.template.md +0 -0
  244. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/merge_decision.template.md +0 -0
  245. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/org-memory/decisions.md +0 -0
  246. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/org-memory/events/.gitkeep +0 -0
  247. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
  248. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/org-memory/recent.md +0 -0
  249. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/org-memory/rules.md +0 -0
  250. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/review_packet.template.md +0 -0
  251. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/roles/role_baseline.template.md +0 -0
  252. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/roles/role_definition.template.yaml +0 -0
  253. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/runtime_capabilities.yaml +0 -0
  254. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/skills_manifest.template.yaml +0 -0
  255. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/templates/test_packet.template.md +0 -0
  256. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
  257. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
  258. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
  259. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
  260. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
  261. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
  262. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
  263. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
  264. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
  265. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
  266. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
  267. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
  268. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
  269. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
  270. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
  271. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
  272. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
  273. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
  274. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
  275. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
  276. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
  277. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
  278. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
  279. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
  280. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
  281. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
  282. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
  283. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
  284. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
  285. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
  286. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
  287. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
  288. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
  289. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
  290. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
  291. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
  292. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
  293. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
  294. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
  295. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
  296. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
  297. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
  298. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
  299. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
  300. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
  301. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
  302. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
  303. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
  304. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
  305. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
  306. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
  307. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
  308. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
  309. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
  310. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
  311. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
  312. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
  313. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
  314. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
  315. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
  316. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
  317. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
  318. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
  319. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
  320. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
  321. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
  322. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
  323. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
  324. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
  325. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
  326. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
  327. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
  328. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
  329. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
  330. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
  331. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
  332. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
  333. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
  334. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
  335. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
  336. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
  337. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
  338. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
  339. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
  340. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
  341. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
  342. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
  343. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
  344. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
  345. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
  346. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
  347. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
  348. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
  349. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
  350. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
  351. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
  352. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
  353. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
  354. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
  355. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
  356. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
  357. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
  358. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
  359. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
  360. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/README.md +0 -0
  361. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
  362. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/configs/malformed.yaml +0 -0
  363. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
  364. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
  365. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +0 -0
  366. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
  367. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
  368. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
  369. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
  370. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
  371. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
  372. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
  373. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
  374. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
  375. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
  376. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/README.md +0 -0
  377. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/configs/enforce.yaml +0 -0
  378. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/configs/off.yaml +0 -0
  379. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/configs/warn.yaml +0 -0
  380. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
  381. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
  382. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
  383. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
  384. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
  385. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
  386. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
  387. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
  388. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
  389. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
  390. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
  391. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
  392. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
  393. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/README.md +0 -0
  394. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
  395. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
  396. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
  397. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
  398. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
  399. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
  400. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
  401. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
  402. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
  403. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
  404. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
  405. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
  406. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
  407. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
  408. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
  409. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
  410. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
  411. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
  412. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
  413. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
  414. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
  415. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
  416. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/keys/alice.json +0 -0
  417. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/keys/bob.json +0 -0
  418. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/keys/carol.json +0 -0
  419. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
  420. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
  421. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
  422. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
  423. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
  424. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
  425. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
  426. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
  427. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
  428. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
  429. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
  430. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
  431. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
  432. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
  433. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
  434. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
  435. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
  436. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
  437. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
  438. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
  439. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
  440. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
  441. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
  442. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
  443. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
  444. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
  445. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
  446. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
  447. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/conformance/signing/regen_fixtures.py +0 -0
  448. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_default_envelope.py +0 -0
  449. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_envelope_compiler.py +0 -0
  450. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_envelope_conformance_fixtures.py +0 -0
  451. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_envelope_public_admission.py +0 -0
  452. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_github_workflows.py +0 -0
  453. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_handoff_schema.py +0 -0
  454. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_inbox_verify.py +0 -0
  455. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_intake_conformance.py +0 -0
  456. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_memory_archive.py +0 -0
  457. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_message_signing.py +0 -0
  458. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_message_verify.py +0 -0
  459. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_oacp_constants.py +0 -0
  460. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_oacp_coordinator.py +0 -0
  461. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_oacp_env.py +0 -0
  462. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_oacp_inbox.py +0 -0
  463. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_oacp_watch.py +0 -0
  464. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_policy_signing.py +0 -0
  465. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_review_loop.py +0 -0
  466. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_session_lifecycle_hooks.py +0 -0
  467. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_signing_conformance.py +0 -0
  468. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_trust_root.py +0 -0
  469. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_validate_agent_card.py +0 -0
  470. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_validate_message.py +0 -0
  471. {oacp_cli-0.4.2 → oacp_cli-0.4.4}/tests/test_write_event.py +0 -0
@@ -0,0 +1,24 @@
1
+ name: Auto-estimate
2
+
3
+ # Label an issue `estimate` and agent-estimate posts an estimate comment
4
+ # on it. Recipe from kiloloop/agent-estimate README ("Auto-estimate on
5
+ # label") — consumes the published Action via the v0 tag.
6
+
7
+ on:
8
+ issues:
9
+ types: [labeled]
10
+
11
+ permissions:
12
+ contents: read
13
+ issues: write
14
+
15
+ jobs:
16
+ estimate:
17
+ if: github.event.label.name == 'estimate'
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: kiloloop/agent-estimate@7b30943bac5648cf183f3d050baa6fea5485b8a9 # v0.7.4
21
+ with:
22
+ issues: ${{ github.event.issue.number }}
23
+ output-mode: issue-comment
24
+ title: 'Agent Estimate — issue #${{ github.event.issue.number }}'
@@ -14,10 +14,10 @@ jobs:
14
14
 
15
15
  steps:
16
16
  - name: Check out repository
17
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
17
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
18
18
 
19
19
  - name: Set up Python
20
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
20
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
21
21
  with:
22
22
  python-version: "3.12"
23
23
  cache: pip
@@ -30,7 +30,7 @@ jobs:
30
30
  - name: Install Python dependencies
31
31
  run: |
32
32
  python -m pip install --upgrade pip
33
- python -m pip install -e ".[crypto]" build pytest ruff
33
+ python -m pip install --group dev -e ".[crypto]"
34
34
 
35
35
  - name: Run quality gate
36
36
  run: make preflight ARGS="--full"
@@ -16,10 +16,10 @@ jobs:
16
16
 
17
17
  steps:
18
18
  - name: Check out repository
19
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
19
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
20
20
 
21
21
  - name: Set up Python
22
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
22
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
23
23
  with:
24
24
  python-version: "3.12"
25
25
  cache: pip
@@ -32,7 +32,7 @@ jobs:
32
32
  - name: Install Python dependencies
33
33
  run: |
34
34
  python -m pip install --upgrade pip
35
- python -m pip install -e ".[crypto]" build pytest ruff
35
+ python -m pip install --group dev -e ".[crypto]"
36
36
 
37
37
  - name: Run quality gate
38
38
  run: make preflight ARGS="--full"
@@ -42,7 +42,7 @@ jobs:
42
42
 
43
43
  # upload-artifact is still on v6; download-artifact moved to v7 for Node 24.
44
44
  - name: Upload release artifacts
45
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
45
+ uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
46
46
  with:
47
47
  name: python-package-distributions
48
48
  path: dist/
@@ -59,7 +59,7 @@ jobs:
59
59
 
60
60
  steps:
61
61
  - name: Download release artifacts
62
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
62
+ uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
63
63
  with:
64
64
  name: python-package-distributions
65
65
  path: dist/
@@ -102,7 +102,7 @@ jobs:
102
102
 
103
103
  - name: Publish to PyPI
104
104
  if: steps.check-pypi-version.outputs.version_exists != 'true'
105
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
105
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
106
106
 
107
107
  - name: Skip duplicate PyPI publish
108
108
  if: steps.check-pypi-version.outputs.version_exists == 'true'
@@ -116,11 +116,11 @@ jobs:
116
116
 
117
117
  steps:
118
118
  - name: Check out repository
119
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
119
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
120
120
 
121
121
  # download-artifact v7 is the current Node 24-compatible major.
122
122
  - name: Download release artifacts
123
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
123
+ uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
124
124
  with:
125
125
  name: python-package-distributions
126
126
  path: dist/
@@ -4,7 +4,8 @@
4
4
  AGENTS.md
5
5
  CLAUDE.md
6
6
  GEMINI.md
7
- .claude/skills/
7
+ .claude/
8
+ .codex/
8
9
  .worktrees/
9
10
  __pycache__/
10
11
  *.pyc
@@ -5,6 +5,111 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ## [0.4.4] - 2026-08-28
11
+
12
+ The central debrief store is the headline change: every agent's full end-of-session debrief now lands in the kernel-owned, append-only `org-memory/debriefs/<project>/<YYYY>/<MM>/` layout — one immutable file per session — instead of per-project trees, with `oacp org-memory init` creating the store and `oacp doctor` checking its setup ([org memory](docs/protocol/org_memory.md#debrief-store)).
13
+
14
+ ### Added
15
+
16
+ - Central session-debrief store under org-memory `debriefs/`, created by `oacp org-memory init` and setup-checked by `oacp doctor` ([org memory](docs/protocol/org_memory.md#debrief-store)).
17
+ - `oacp add-agent` and `oacp init --agents` populate the instance agent registry; `oacp agent sync` backfills existing workspaces ([agent profiles](docs/protocol/agent_profiles.md)).
18
+ - `oacp autonomy-finalize` writes and validates checkpoint and terminal autonomy audit updates under lock; `oacp doctor` sweeps audit directories with the same checks ([autonomy](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
19
+ - Every persisted autonomy evaluation carries an `evaluation_id`; re-evaluations supersede the prior record through a locked transaction ([autonomy](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
20
+ - The wheel ships the four kernel protocol docs, the wire message template, and five previously unpackaged scripts under `oacp/_protocol/`, `oacp/_templates/`, and `oacp/_scripts/`.
21
+ - Preflight and CI fail when `scripts/` and the wheel's force-include table drift apart.
22
+ - `waiting_on_peer` checkpoint sub-basis separates peer-reply latency from working time in a realized time breach ([threshold checkpoint](docs/protocol/autonomy.md#threshold-exceeded-checkpoint)).
23
+ - Conformance fixture pinning the default scope envelope stamped on profileless admits.
24
+
25
+ ### Removed
26
+
27
+ - Zero-consumer scripts `normalize_findings.py`, `create_handoff_packet.py`, and `init_project_workspace.sh` with their Makefile targets; `oacp init` replaces `make init`.
28
+
29
+ ### Changed
30
+
31
+ - `actual_minutes` is active wall-clock from receiver-stamped `work_started_at_utc`, excluding admission idle and re-authorization pauses ([threshold checkpoint](docs/protocol/autonomy.md#threshold-exceeded-checkpoint)).
32
+ - `expected_files_touched` counts distinct deliverable files only, not receiver bookkeeping, memory, cache, or scratch writes ([autonomy policy](docs/protocol/autonomy.md#message-fields)).
33
+ - Parent-less `oacp send` messages get an automatic thread identifier ([conversation threading](docs/protocol/inbox_outbox.md#conversation-threading)).
34
+ - The README `## Commands` table is generated from `oacp --help` via `make docs`, with a drift test.
35
+ - Moved the runtime capability matrix to the public [Kiloloop research repository](https://github.com/kiloloop/research/blob/main/runtime-comparison/runtime_capability_matrix.md).
36
+ - Moved the prompt-caching guide to the public [Kiloloop research repository](https://github.com/kiloloop/research/blob/main/runtime-comparison/prompt-caching-patterns.md), leaving a redirect at its former path.
37
+ - Raised the optional `cryptography` floor to 50.0.0 and the Python floor to 3.9.2 to exclude known-vulnerable crypto releases.
38
+ - Pinned the development and release toolchain through a shared dependency group and refreshed workflow actions to immutable commits.
39
+ - Folded [`SPEC.md`](SPEC.md) into a thin index over `docs/protocol/`; the package `Documentation` URL is unchanged.
40
+ - Pricing/commercial content sensitivity is an advisory instead of a hard stop for reply-only task profiles ([autonomy](docs/protocol/autonomy.md#four-gate-evaluator)).
41
+ - Enveloped sessions can no longer write the receiver's `audit/autonomy_decisions/` directly; only the canonical `oacp` audit writers can ([autonomy](docs/protocol/autonomy.md#envelope-compilation-phase-2)).
42
+
43
+ ### Fixed
44
+
45
+ - Autonomy lexical classification records every match with its source span and demotion basis ([autonomy](docs/protocol/autonomy.md#lexical-provenance)).
46
+ - Negated or descriptive public-repository, dependency-install, and merge-method language no longer trips lexical hard stops; stacked negations and later unaccounted occurrences still cannot demote an affirmative match ([autonomy](docs/protocol/autonomy.md#lexical-provenance)).
47
+ - `SPEC.md` describes the archive-never-delete inbox lifecycle instead of saying recipients delete processed messages ([inbox/outbox](docs/protocol/inbox_outbox.md)).
48
+ - The envelope hook no longer counts phantom `files_touched` from heredoc bodies or unexpanded shell variables; variable-spelled write targets escalate to `ask` ([autonomy](docs/protocol/autonomy.md#envelope-compilation-phase-2)).
49
+ - Autonomy audit records carry a complete admission ledger (`admission_axes`), so a hard stop no longer masks the threshold, side-effect, or declaration axes ([autonomy](docs/protocol/autonomy.md#admission-ledger)).
50
+ - `declaration_error` pauses record which profile field failed and why.
51
+ - A granted checkpoint re-authorization widens the live file budget, so extra files no longer stay blocked after a valid grant ([autonomy](docs/protocol/autonomy.md#envelope-drift)).
52
+
53
+ ## [0.4.3] - 2026-08-12
54
+
55
+ ### Added
56
+
57
+ - Review-loop continuation grants: a human-approved
58
+ `approved_thread_continuation` may carry a `review_loop` scope (one
59
+ repository, PR, and sender thread; allowed lifecycle types; a round
60
+ ceiling; wall-clock expiry; permitted review side effects) so in-scope
61
+ same-thread follow-up review rounds auto-invoke the reviewer. A grant
62
+ authorizes running a round, never its verdict — the live PR head stays
63
+ authoritative, with declared heads compared by exact full-SHA equality.
64
+ Expiry and revocation bind at evaluation time, approvals never authorize
65
+ retroactively, only rounds that actually ran consume the round budget,
66
+ the accepted side-effect set binds the invocation, and out-of-scope
67
+ requests pause. Receiver config enables recognition only; authority
68
+ exists solely in prior human-approved grant audits. Adds the
69
+ `review_continuation` audit block, pinned `review_continuation_*` and
70
+ `review_loop_invalid` reason codes, and a conformance fixture set; full
71
+ semantics in `docs/protocol/autonomy.md` and
72
+ `docs/protocol/review_loop.md`.
73
+ - Checkpoint re-authorization is now specified end to end: three pinned
74
+ answer channels — receiver-side human, signature-verified sender reply
75
+ bounded by the receiver's own admission policy, GitHub comments as
76
+ advisory-only — with rank, never arrival order, deciding conflicts. A
77
+ consumption rule binds each answer to the pause it clears: scope-less
78
+ approvals clear one checkpoint, scoped numeric budgets stand for the
79
+ rest of the task up to the granted value, and boundary-action grants
80
+ durably authorize one granular capability until task completion. The
81
+ audit surface separates the requested scope from the effective
82
+ policy-capped grant, with pinned reason codes `checkpoint_reauthorized`
83
+ and `checkpoint_reauthorization_stale` and a conformance fixture set.
84
+ - `oacp session-init` now supports Codex `SessionStart` JSON, a bounded and
85
+ truthful ordered-read manifest, optional pull-before-verify memory sync, and
86
+ active-model/cwd input from the hook payload. `oacp setup codex` safely
87
+ merges one startup-only handler into `.codex/hooks.json`; users review and
88
+ trust the definition with `/hooks`.
89
+ - Project-wide message-history retention through `oacp retention`: outbox,
90
+ dead-letter, and processed inbox-archive files are pruned when they exceed
91
+ either an age or count bound (defaults 30 days and 1,000 files per target),
92
+ with validated partial overrides in `workspace.json`, deterministic dry-run
93
+ JSON, and file-identity rechecks before deletion.
94
+ - Processed inbound messages now have one cross-runtime destination,
95
+ `inbox/archive/`, preserving the original filename and bytes. Quarantine
96
+ evidence is excluded from automatic pruning by its durable filename format;
97
+ manually managed fixtures can use adjacent `.retain` markers. Protocol spec
98
+ version advances to 0.4.3.
99
+
100
+ ### Changed
101
+
102
+ - Codex startup file states now say `verified` instead of `loaded`: the command
103
+ confirms readability and updates `status.yaml`, while its hook context tells
104
+ Codex which files still require ordered reads. Legacy `.agent-hub` project
105
+ detection has been removed from this Codex path.
106
+ - `oacp setup claude` keeps automatic startup memory pull but no longer creates
107
+ or registers an automatic `SessionEnd` push. Rerunning setup removes only the
108
+ exact historical generated registration and leaves any existing script or
109
+ custom hooks untouched; explicit wrap-up remains the single push path.
110
+ - Session lifecycle documentation now distinguishes coordinator telemetry in
111
+ `session_lifecycle_state.json` from runtime startup and `status.yaml`.
112
+
8
113
  ## [0.4.2] - 2026-08-07
9
114
 
10
115
  ### Added
@@ -702,6 +807,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
702
807
  - Checkout step in github-release workflow job (#19)
703
808
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
704
809
 
810
+ [0.4.4]: https://github.com/kiloloop/oacp/compare/v0.4.3...v0.4.4
811
+ [0.4.3]: https://github.com/kiloloop/oacp/compare/v0.4.2...v0.4.3
705
812
  [0.4.2]: https://github.com/kiloloop/oacp/compare/v0.4.1...v0.4.2
706
813
  [0.4.1]: https://github.com/kiloloop/oacp/compare/v0.4.0...v0.4.1
707
814
  [0.4.0]: https://github.com/kiloloop/oacp/compare/v0.3.5...v0.4.0
@@ -34,13 +34,16 @@ Please read and follow our [Code of Conduct](https://github.com/kiloloop/.github
34
34
 
35
35
  ## Development Setup
36
36
 
37
+ Development and test tooling requires Python 3.10 or newer. The installed CLI
38
+ continues to support Python 3.9.2 and newer.
39
+
37
40
  ```bash
38
41
  # Clone
39
42
  git clone https://github.com/kiloloop/oacp.git
40
43
  cd oacp
41
44
 
42
- # Install dependencies
43
- pip install pyyaml pytest
45
+ # Install the package, crypto extra, and pinned development tools
46
+ python -m pip install --group dev -e ".[crypto]"
44
47
 
45
48
  # Verify setup
46
49
  make preflight
@@ -81,6 +84,16 @@ make preflight ARGS="--full"
81
84
  - Keep the first line under 72 characters
82
85
  - Reference issue numbers where applicable: "Fix message validation (#42)"
83
86
 
87
+ ## Changelog Entries
88
+
89
+ Entries in `CHANGELOG.md` follow [Common Changelog](https://common-changelog.org) discipline: a changelog answers "does this affect me, and how", not "how does it work".
90
+
91
+ - One line, one change — split a multi-facet feature into two or three scoped bullets rather than one long bullet.
92
+ - State the user-visible delta, not the implementation path.
93
+ - Do not inline flag enums or sub-mechanism walkthroughs — link the protocol spec or doc section that carries the detail.
94
+ - One link per bullet, pointing at the best entry point.
95
+ - Each bullet must read as self-describing without its `### Added`/`### Changed` heading.
96
+
84
97
  ## License
85
98
 
86
99
  By contributing, you agree that your contributions will be licensed under the [Apache 2.0 License](LICENSE).
@@ -16,7 +16,7 @@ endif
16
16
 
17
17
  # ── Targets ──────────────────────────────────────────────────────────────
18
18
 
19
- .PHONY: help init update test validate validate-msg validate-card send quality packet handoff normalize preflight doctor
19
+ .PHONY: help update test docs validate validate-msg validate-card send quality packet preflight doctor
20
20
 
21
21
  help: ## Show available targets (default)
22
22
  @echo "OACP — task runner"
@@ -26,15 +26,15 @@ help: ## Show available targets (default)
26
26
  @grep -E '^[a-z][-a-z]+:.*## ' $(MAKEFILE_LIST) | \
27
27
  awk -F ':.*## ' '{ printf " %-14s %s\n", $$1, $$2 }'
28
28
 
29
- init: _require-project ## Create a new project workspace
30
- bash $(SCRIPTS_DIR)/init_project_workspace.sh $(PROJECT) $(ARGS)
31
-
32
29
  update: _require-project ## Sync existing workspace with latest structure
33
30
  bash $(SCRIPTS_DIR)/update_workspace.sh $(PROJECT) $(ARGS)
34
31
 
35
32
  test: ## Run all tests
36
33
  python3 -m pytest $(SCRIPTS_DIR)/../tests -v $(ARGS)
37
34
 
35
+ docs: ## Regenerate the README command table from oacp --help
36
+ python3 $(SCRIPTS_DIR)/gen_readme_commands.py --write
37
+
38
38
  validate-msg: ## Validate inbox messages
39
39
  python3 $(SCRIPTS_DIR)/validate_message.py $(ARGS)
40
40
 
@@ -57,9 +57,3 @@ quality: ## Run quality gate check
57
57
 
58
58
  packet: _require-project ## Create a review/findings/merge packet
59
59
  bash $(SCRIPTS_DIR)/init_packet.sh $(PROJECT) $(ARGS)
60
-
61
- handoff: _require-project ## Create a structured handoff packet
62
- python3 $(SCRIPTS_DIR)/create_handoff_packet.py $(PROJECT) $(ARGS)
63
-
64
- normalize: ## Normalize raw findings into canonical YAML
65
- python3 $(SCRIPTS_DIR)/normalize_findings.py $(ARGS)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: oacp-cli
3
- Version: 0.4.2
3
+ Version: 0.4.4
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
@@ -20,10 +20,10 @@ Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Topic :: Software Development
22
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
- Requires-Python: >=3.9
23
+ Requires-Python: >=3.9.2
24
24
  Requires-Dist: pyyaml>=6.0
25
25
  Provides-Extra: crypto
26
- Requires-Dist: cryptography>=3.4; extra == 'crypto'
26
+ Requires-Dist: cryptography>=50.0.0; extra == 'crypto'
27
27
  Description-Content-Type: text/markdown
28
28
 
29
29
  # OACP
@@ -253,21 +253,32 @@ uv tool install .
253
253
 
254
254
  ## Commands
255
255
 
256
+ <!-- BEGIN GENERATED: oacp commands — do not edit by hand; run `make docs` -->
256
257
  | Command | Description |
257
258
  |---------|-------------|
258
- | `oacp init` | Create a project workspace under `$OACP_HOME/projects/` |
259
+ | `oacp init` | Create a project workspace under $OACP_HOME/projects/ |
259
260
  | `oacp add-agent` | Add an agent to an existing project workspace |
260
- | `oacp setup` | Generate runtime-specific config files (Claude, Codex, Cursor, Gemini) |
261
- | `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
262
- | `oacp inbox` | List pending messages across agents (table or `--json`) |
263
- | `oacp watch` | Emit inbox delta events for one agent across selected projects |
264
- | `oacp memory` | Archive, restore, or git-sync project/org memory files |
265
- | `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
266
- | `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
267
- | `oacp write-event` | Write an event to `org-memory/events/` |
261
+ | `oacp agent` | Manage global agent profiles (init, sync, show, list) |
262
+ | `oacp inbox` | List pending inbox messages |
263
+ | `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
264
+ | `oacp retention` | Prune project message history by age and count |
265
+ | `oacp memory` | Archive, restore, or sync memory files |
266
+ | `oacp session-init` | Verify Codex startup inputs and emit SessionStart context |
267
+ | `oacp setup` | Generate runtime-specific config files in a repo |
268
+ | `oacp send` | Send a protocol-compliant inbox message |
269
+ | `oacp key` | Generate and inspect message-signing keys |
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/ |
272
+ | `oacp write-event` | Write an event to org-memory/events/ |
273
+ | `oacp autonomy-outcome` | Record a human approval/decline in an autonomy audit |
274
+ | `oacp autonomy-finalize` | Record checkpoints and terminal states in an autonomy audit |
275
+ | `oacp envelope` | Compile, show, or clear the runtime envelope for a task |
268
276
  | `oacp doctor` | Check environment and workspace health |
269
277
  | `oacp validate` | Validate an inbox/outbox YAML message |
270
- | `oacp --version` | Print the installed version |
278
+ | `oacp verify` | Verify a message's auth trailer against receiver-local pins |
279
+ <!-- END GENERATED: oacp commands -->
280
+
281
+ `oacp --version` prints the installed version.
271
282
 
272
283
  <details>
273
284
  <summary>Key flags</summary>
@@ -309,13 +320,16 @@ oacp/
309
320
  └── SPEC.md # Full protocol specification
310
321
  ```
311
322
 
323
+ [`mcp_servers/`](mcp_servers/) contains experimental, unsupported prototypes;
324
+ it is not part of the OACP product surface.
325
+
312
326
  ## Related
313
327
 
314
328
  - **[agent-estimate](https://github.com/kiloloop/agent-estimate)** — Estimate how long agent tasks take. Pairs with OACP dispatch for task sizing.
315
329
 
316
330
  ## Prerequisites
317
331
 
318
- - Python 3.9+
332
+ - Python 3.9.2+
319
333
  - Bash 3.2+ (macOS default is fine)
320
334
  - `gh` CLI (optional, for GitHub operations)
321
335
 
@@ -4,7 +4,7 @@ Get from zero to your first agent-to-agent message in 5 minutes.
4
4
 
5
5
  ## Prerequisites
6
6
 
7
- - Python 3.9+ and Bash 3.2+
7
+ - Python 3.9.2+ and Bash 3.2+
8
8
 
9
9
  ## 1. Set Up OACP Home
10
10
 
@@ -90,7 +90,6 @@ This creates or updates:
90
90
  - `.claude/agents/my-first-project.md`
91
91
  - `.claude/skills/`
92
92
  - `.claude/hooks/oacp-memory-pull.sh`
93
- - `.claude/hooks/oacp-memory-push.sh`
94
93
  - `.claude/settings.json`
95
94
 
96
95
  For other supported runtimes, use the same shape:
@@ -101,6 +100,17 @@ oacp setup cursor --project my-first-project
101
100
  oacp setup gemini --project my-first-project
102
101
  ```
103
102
 
103
+ 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:
106
+
107
+ ```bash
108
+ oacp session-init --pull-memory --project my-first-project
109
+ ```
110
+
111
+ Runtime setup does not install an automatic memory push. Publish durable memory
112
+ explicitly during wrap-up with `oacp memory push`.
113
+
104
114
  Cursor support is scaffold-only until Cursor-owned rules land. Cursor sessions
105
115
  must set `OACP_RUNTIME=cursor` or pass `--from` explicitly when sending messages.
106
116
 
@@ -225,21 +225,32 @@ uv tool install .
225
225
 
226
226
  ## Commands
227
227
 
228
+ <!-- BEGIN GENERATED: oacp commands — do not edit by hand; run `make docs` -->
228
229
  | Command | Description |
229
230
  |---------|-------------|
230
- | `oacp init` | Create a project workspace under `$OACP_HOME/projects/` |
231
+ | `oacp init` | Create a project workspace under $OACP_HOME/projects/ |
231
232
  | `oacp add-agent` | Add an agent to an existing project workspace |
232
- | `oacp setup` | Generate runtime-specific config files (Claude, Codex, Cursor, Gemini) |
233
- | `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
234
- | `oacp inbox` | List pending messages across agents (table or `--json`) |
235
- | `oacp watch` | Emit inbox delta events for one agent across selected projects |
236
- | `oacp memory` | Archive, restore, or git-sync project/org memory files |
237
- | `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
238
- | `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
239
- | `oacp write-event` | Write an event to `org-memory/events/` |
233
+ | `oacp agent` | Manage global agent profiles (init, sync, show, list) |
234
+ | `oacp inbox` | List pending inbox messages |
235
+ | `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
236
+ | `oacp retention` | Prune project message history by age and count |
237
+ | `oacp memory` | Archive, restore, or sync memory files |
238
+ | `oacp session-init` | Verify Codex startup inputs and emit SessionStart context |
239
+ | `oacp setup` | Generate runtime-specific config files in a repo |
240
+ | `oacp send` | Send a protocol-compliant inbox message |
241
+ | `oacp key` | Generate and inspect message-signing keys |
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/ |
244
+ | `oacp write-event` | Write an event to org-memory/events/ |
245
+ | `oacp autonomy-outcome` | Record a human approval/decline in an autonomy audit |
246
+ | `oacp autonomy-finalize` | Record checkpoints and terminal states in an autonomy audit |
247
+ | `oacp envelope` | Compile, show, or clear the runtime envelope for a task |
240
248
  | `oacp doctor` | Check environment and workspace health |
241
249
  | `oacp validate` | Validate an inbox/outbox YAML message |
242
- | `oacp --version` | Print the installed version |
250
+ | `oacp verify` | Verify a message's auth trailer against receiver-local pins |
251
+ <!-- END GENERATED: oacp commands -->
252
+
253
+ `oacp --version` prints the installed version.
243
254
 
244
255
  <details>
245
256
  <summary>Key flags</summary>
@@ -281,13 +292,16 @@ oacp/
281
292
  └── SPEC.md # Full protocol specification
282
293
  ```
283
294
 
295
+ [`mcp_servers/`](mcp_servers/) contains experimental, unsupported prototypes;
296
+ it is not part of the OACP product surface.
297
+
284
298
  ## Related
285
299
 
286
300
  - **[agent-estimate](https://github.com/kiloloop/agent-estimate)** — Estimate how long agent tasks take. Pairs with OACP dispatch for task sizing.
287
301
 
288
302
  ## Prerequisites
289
303
 
290
- - Python 3.9+
304
+ - Python 3.9.2+
291
305
  - Bash 3.2+ (macOS default is fine)
292
306
  - `gh` CLI (optional, for GitHub operations)
293
307
 
oacp_cli-0.4.4/SPEC.md ADDED
@@ -0,0 +1,60 @@
1
+ # OACP — Protocol Specification
2
+
3
+ **License**: Apache-2.0
4
+
5
+ OACP (Open Agent Coordination Protocol) is a file-based coordination layer for
6
+ multi-agent engineering workflows: agents on different runtimes (Claude, Codex,
7
+ Cursor, Gemini, or any future runtime) collaborate asynchronously through YAML
8
+ messages in a shared filesystem — no server, no daemon. The protocol is a small
9
+ kernel — the message envelope and its lifecycle, message signing and
10
+ verification, receiver autonomy with audit receipts, and the org-memory layout —
11
+ plus userland conventions (review loops, task negotiation, session init, safety
12
+ defaults) that build on it. This file is the index: the normative text lives in
13
+ the documents below and is versioned with the `oacp-cli` package (see
14
+ [`CHANGELOG.md`](CHANGELOG.md)).
15
+
16
+ ## Kernel documents
17
+
18
+ What every receiver must understand or verify to exchange a message. These four
19
+ documents ship inside the `oacp-cli` wheel.
20
+
21
+ | Document | Governs |
22
+ |---|---|
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
+ | [`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
+ | [`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. |
27
+
28
+ ## Userland documents
29
+
30
+ Conventions layered on the kernel. Adopt what fits; none of them change what a
31
+ receiver must verify.
32
+
33
+ | Document | Covers |
34
+ |---|---|
35
+ | [`docs/protocol/review_loop.md`](docs/protocol/review_loop.md) | Inbox-driven code review: stateless reviewer rounds, findings packets, quality gate, round budgets, post-LGTM nits. |
36
+ | [`docs/protocol/task_negotiation.md`](docs/protocol/task_negotiation.md) | Propose / accept / counter-propose handshake for splitting work between agents. |
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
+ | [`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
+ | [`docs/protocol/runtime_capabilities.md`](docs/protocol/runtime_capabilities.md) | Static capability declarations, dynamic `status.yaml`, health-check contract, agent cards. |
41
+ | [`docs/protocol/agent_profiles.md`](docs/protocol/agent_profiles.md) | Two-tier identity: global agent profiles and project-level agent cards. |
42
+ | [`docs/protocol/agent_safety_defaults.md`](docs/protocol/agent_safety_defaults.md) | Baseline git, staging, inbox, credential, and scope rules every agent follows. |
43
+ | [`docs/protocol/credential_scoping.md`](docs/protocol/credential_scoping.md) | Per-agent, per-project least-privilege credentials and rotation. |
44
+ | [`docs/protocol/mcp_integration.md`](docs/protocol/mcp_integration.md) | Attaching MCP tool outputs to findings as structured evidence. |
45
+ | [`docs/protocol/dispatch_states.yaml`](docs/protocol/dispatch_states.yaml) · [`packet_states.yaml`](docs/protocol/packet_states.yaml) · [`skills_manifest.yaml`](docs/protocol/skills_manifest.yaml) | Machine-readable dispatch and review-packet state machines, and the skills manifest. |
46
+
47
+ Guides — [`docs/guides/setup.md`](docs/guides/setup.md),
48
+ [`adoption.md`](docs/guides/adoption.md), [`doctor.md`](docs/guides/doctor.md),
49
+ [`versioning.md`](docs/guides/versioning.md),
50
+ [`unified_skill_spec.md`](docs/guides/unified_skill_spec.md) — and the
51
+ executable conformance fixtures under [`tests/conformance/`](tests/conformance/)
52
+ (autonomy, signing, intake, envelope) round out the set. Runtime-specific skills
53
+ that operate the protocol live in the companion
54
+ [oacp-skills](https://github.com/kiloloop/oacp-skills) repository.
55
+
56
+ ## Getting started
57
+
58
+ [`QUICKSTART.md`](QUICKSTART.md) sends a first message in five minutes;
59
+ [`README.md`](README.md) carries the command reference (`oacp --help` is
60
+ authoritative).
@@ -22,7 +22,7 @@ Verifies that required and optional CLI tools are installed and reachable on `PA
22
22
  | Check | Required? | What it looks for |
23
23
  |-------|-----------|-------------------|
24
24
  | `git` | Yes | Git CLI |
25
- | `python3` | Yes | Python 3.9+ interpreter |
25
+ | `python3` | Yes | Python 3.9.2+ interpreter |
26
26
  | `gh` | Yes | GitHub CLI (for PR and issue workflows) |
27
27
  | `ruff` | No | Python linter (optional, used in preflight) |
28
28
  | `shellcheck` | No | Shell script linter (optional) |
@@ -176,7 +176,7 @@ The exit code reflects the overall result:
176
176
  | Issue | Fix |
177
177
  |-------|-----|
178
178
  | `git — not found` | Install Git: https://git-scm.com/downloads |
179
- | `python3 — not found` | Install Python 3.9+: https://www.python.org/downloads/ |
179
+ | `python3 — not found` | Install Python 3.9.2+: https://www.python.org/downloads/ |
180
180
  | `gh — not found` | Install GitHub CLI: `brew install gh` or https://cli.github.com/ |
181
181
  | `pyyaml — not importable` | `pip install pyyaml` |
182
182
  | `ruff — not installed` | `pip install ruff` (optional, for linting) |
@@ -0,0 +1,3 @@
1
+ # Prompt Caching Patterns
2
+
3
+ This guide has moved to the public [Kiloloop research repository](https://github.com/kiloloop/research/blob/main/runtime-comparison/prompt-caching-patterns.md).
@@ -3,7 +3,7 @@
3
3
  ## Prerequisites
4
4
 
5
5
  - `bash` 3.2+ (macOS default) or 4+ (recommended)
6
- - `python3` 3.9+ (for JSON state management, quality gate scripts, and inbox messaging)
6
+ - `python3` 3.9.2+ (for JSON state management, quality gate scripts, and inbox messaging)
7
7
  - `gh` CLI (optional, for GitHub operations — `gh auth login`)
8
8
  - Agent runtime CLI: `claude`, `codex`, `cursor`, or `gemini` (depending on your agents)
9
9