oacp-cli 0.4.3__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 (468) hide show
  1. oacp_cli-0.4.4/.github/workflows/auto-estimate.yml +24 -0
  2. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/.github/workflows/ci.yml +3 -3
  3. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/.github/workflows/release.yml +7 -7
  4. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/CHANGELOG.md +46 -0
  5. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/CONTRIBUTING.md +15 -2
  6. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/Makefile +4 -10
  7. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/PKG-INFO +25 -15
  8. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/QUICKSTART.md +1 -1
  9. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/README.md +22 -12
  10. oacp_cli-0.4.4/SPEC.md +60 -0
  11. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/guides/doctor.md +2 -2
  12. oacp_cli-0.4.4/docs/guides/prompt_caching.md +3 -0
  13. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/guides/setup.md +1 -1
  14. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/agent_profiles.md +26 -10
  15. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/autonomy.md +376 -39
  16. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/inbox_outbox.md +1 -1
  17. oacp_cli-0.4.4/docs/protocol/org_memory.md +298 -0
  18. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/runtime_capabilities.md +3 -3
  19. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/quickstart/README.md +1 -1
  20. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/oacp/cli.py +4 -1
  21. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/pyproject.toml +19 -5
  22. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/_oacp_constants.py +72 -0
  23. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/add_agent.py +31 -12
  24. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/agent_profile.py +314 -15
  25. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/autonomy_gate.py +1145 -86
  26. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/claude_envelope_hook.py +446 -40
  27. oacp_cli-0.4.4/scripts/finalize_autonomy_record.py +1279 -0
  28. oacp_cli-0.4.4/scripts/gen_readme_commands.py +155 -0
  29. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/init_org_memory.py +11 -0
  30. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/init_packet.sh +1 -1
  31. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/init_project_workspace.py +15 -1
  32. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/oacp_doctor.py +408 -4
  33. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/preflight.py +121 -0
  34. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/record_autonomy_outcome.py +2 -28
  35. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/send_inbox_message.py +11 -2
  36. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/update_workspace.sh +3 -3
  37. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/agent_profile.template.yaml +1 -0
  38. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/handoff_packet.template.yaml +1 -1
  39. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/inbox_message.template.yaml +2 -0
  40. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/README.md +25 -1
  41. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +10 -0
  42. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +1 -1
  43. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +1 -1
  44. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +1 -1
  45. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +1 -1
  46. oacp_cli-0.4.4/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +29 -0
  47. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +11 -0
  48. oacp_cli-0.4.4/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +19 -0
  49. oacp_cli-0.4.4/tests/conformance/autonomy/ledger_replay/corpus.yaml +913 -0
  50. oacp_cli-0.4.4/tests/conformance/autonomy/messages/declaration_error_admission.yaml +25 -0
  51. oacp_cli-0.4.4/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +28 -0
  52. oacp_cli-0.4.4/tests/conformance/autonomy/records/README.md +18 -0
  53. oacp_cli-0.4.4/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +42 -0
  54. oacp_cli-0.4.4/tests/conformance/autonomy/records/breached_empty_fields.yaml +30 -0
  55. oacp_cli-0.4.4/tests/conformance/autonomy/records/clean_terminal_done.yaml +37 -0
  56. oacp_cli-0.4.4/tests/conformance/autonomy/records/duplicate_live_a.yaml +19 -0
  57. oacp_cli-0.4.4/tests/conformance/autonomy/records/duplicate_live_b.yaml +19 -0
  58. oacp_cli-0.4.4/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +23 -0
  59. oacp_cli-0.4.4/tests/conformance/autonomy/records/expected_findings.yaml +46 -0
  60. oacp_cli-0.4.4/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +21 -0
  61. oacp_cli-0.4.4/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +21 -0
  62. oacp_cli-0.4.4/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +32 -0
  63. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +19 -0
  64. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +19 -0
  65. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +19 -0
  66. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +19 -0
  67. oacp_cli-0.4.4/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +19 -0
  68. oacp_cli-0.4.4/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +39 -0
  69. oacp_cli-0.4.4/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +19 -0
  70. oacp_cli-0.4.4/tests/conformance/autonomy/records/serialized_wave_item.yaml +52 -0
  71. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +22 -0
  72. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +21 -0
  73. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_missing_successor.yaml +19 -0
  74. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_successor_live.yaml +21 -0
  75. oacp_cli-0.4.4/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +21 -0
  76. oacp_cli-0.4.4/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +20 -0
  77. oacp_cli-0.4.4/tests/conformance/org_memory/README.md +22 -0
  78. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/expected.yaml +5 -0
  79. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/.hidden/2026/08/20260825-alice-abc12345.md +14 -0
  80. 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
  81. 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
  82. 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
  83. 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
  84. oacp_cli-0.4.4/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/20260825-alice-abc12345.md +14 -0
  85. oacp_cli-0.4.4/tests/conformance/org_memory/cases/empty_store/expected.yaml +2 -0
  86. oacp_cli-0.4.4/tests/conformance/org_memory/cases/empty_store/org-memory/debriefs/.gitkeep +0 -0
  87. oacp_cli-0.4.4/tests/conformance/org_memory/cases/missing_debriefs_dir/expected.yaml +5 -0
  88. oacp_cli-0.4.4/tests/conformance/org_memory/cases/missing_debriefs_dir/org-memory/recent.md +1 -0
  89. oacp_cli-0.4.4/tests/conformance/org_memory/cases/staging_artifact/expected.yaml +5 -0
  90. 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
  91. 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
  92. oacp_cli-0.4.4/tests/conformance/org_memory/cases/valid_store/expected.yaml +2 -0
  93. oacp_cli-0.4.4/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/.gitkeep +0 -0
  94. 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
  95. 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
  96. 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
  97. 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
  98. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_add_agent.py +71 -1
  99. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_agent_profile.py +142 -3
  100. oacp_cli-0.4.4/tests/test_audit_record_conformance.py +89 -0
  101. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_autonomy_gate.py +1293 -2
  102. oacp_cli-0.4.4/tests/test_autonomy_ledger_replay.py +229 -0
  103. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_claude_envelope_hook.py +854 -7
  104. oacp_cli-0.4.4/tests/test_finalize_autonomy_record.py +1362 -0
  105. oacp_cli-0.4.4/tests/test_init_org_memory.py +46 -0
  106. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_memory_sync.py +29 -0
  107. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_oacp_doctor.py +130 -3
  108. oacp_cli-0.4.4/tests/test_org_memory_doctor.py +195 -0
  109. oacp_cli-0.4.4/tests/test_package_content.py +139 -0
  110. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_preflight.py +137 -0
  111. oacp_cli-0.4.4/tests/test_readme_commands.py +86 -0
  112. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_record_autonomy_outcome.py +2 -2
  113. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_send_inbox_message.py +84 -1
  114. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_update_workspace.py +1 -1
  115. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_workspace_discovery.py +0 -117
  116. oacp_cli-0.4.3/SPEC.md +0 -748
  117. oacp_cli-0.4.3/docs/guides/prompt_caching.md +0 -149
  118. oacp_cli-0.4.3/docs/guides/runtime_capability_matrix.md +0 -162
  119. oacp_cli-0.4.3/docs/protocol/org_memory.md +0 -131
  120. oacp_cli-0.4.3/scripts/create_handoff_packet.py +0 -182
  121. oacp_cli-0.4.3/scripts/init_project_workspace.sh +0 -7
  122. oacp_cli-0.4.3/scripts/normalize_findings.py +0 -635
  123. oacp_cli-0.4.3/tests/test_create_handoff_packet.py +0 -155
  124. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/.gitattributes +0 -0
  125. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/.gitignore +0 -0
  126. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/LICENSE +0 -0
  127. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/SECURITY.md +0 -0
  128. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/from-claude-p.md +0 -0
  129. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/guides/adoption.md +0 -0
  130. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/guides/unified_skill_spec.md +0 -0
  131. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/guides/versioning.md +0 -0
  132. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/img/oacp-cli-demo.png +0 -0
  133. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/img/oacp-filesystem-tree.png +0 -0
  134. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/img/oacp-fleet-thread.png +0 -0
  135. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/agent_safety_defaults.md +0 -0
  136. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/credential_scoping.md +0 -0
  137. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/cross_runtime_sync.md +0 -0
  138. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/dispatch_states.yaml +0 -0
  139. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/mcp_integration.md +0 -0
  140. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/message_signing.md +0 -0
  141. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  142. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/packet_states.yaml +0 -0
  143. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/review_loop.md +0 -0
  144. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/session_init.md +0 -0
  145. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/skills_manifest.yaml +0 -0
  146. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/docs/protocol/task_negotiation.md +0 -0
  147. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/README.md +0 -0
  148. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/decisions.md +0 -0
  149. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
  150. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
  151. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
  152. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
  153. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
  154. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
  155. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/recent.md +0 -0
  156. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/org-memory/rules.md +0 -0
  157. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/archive/2026-05-21-csv-export-timeouts.md +0 -0
  158. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
  159. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
  160. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
  161. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
  162. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/mcp_servers/README.md +0 -0
  163. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/mcp_servers/oacp_coordinator.py +0 -0
  164. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/oacp/__init__.py +0 -0
  165. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/oacp/envelope_hook.py +0 -0
  166. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/_oacp_env.py +0 -0
  167. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/check_quality_gate.py +0 -0
  168. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/codex_session_init.py +0 -0
  169. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/envelope_compiler.py +0 -0
  170. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/handoff_schema.py +0 -0
  171. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/key_cli.py +0 -0
  172. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/memory_archive_common.py +0 -0
  173. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/memory_cli.py +0 -0
  174. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/memory_sync.py +0 -0
  175. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/message_signing.py +0 -0
  176. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/message_verify.py +0 -0
  177. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/oacp_inbox.py +0 -0
  178. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/oacp_watch.py +0 -0
  179. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/policy_signing.py +0 -0
  180. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/promote_to_archive.py +0 -0
  181. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/restore_from_archive.py +0 -0
  182. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/retention.py +0 -0
  183. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/session_lifecycle_hooks.py +0 -0
  184. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/setup_runtime.py +0 -0
  185. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/trust_cli.py +0 -0
  186. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/trust_root.py +0 -0
  187. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/validate_agent_card.py +0 -0
  188. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/validate_message.py +0 -0
  189. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/scripts/write_event.py +0 -0
  190. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/agent_card.template.yaml +0 -0
  191. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/agent_status.template.yaml +0 -0
  192. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/checkpoint.template.md +0 -0
  193. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/claude/agents/role_agent.template.md +0 -0
  194. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/claude/rules/guardrail.template.md +0 -0
  195. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/findings_packet.template.yaml +0 -0
  196. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/github_actions_quality_gate.yaml +0 -0
  197. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/guardrails/coding_standards.template.md +0 -0
  198. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/guardrails/safe_commands.template.md +0 -0
  199. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/guardrails/secrets_rules.template.md +0 -0
  200. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/manual_validation.template.md +0 -0
  201. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/merge_decision.template.md +0 -0
  202. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/org-memory/decisions.md +0 -0
  203. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/org-memory/events/.gitkeep +0 -0
  204. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
  205. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/org-memory/recent.md +0 -0
  206. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/org-memory/rules.md +0 -0
  207. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/receiver_config.template.yaml +0 -0
  208. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/review_packet.template.md +0 -0
  209. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/roles/role_baseline.template.md +0 -0
  210. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/roles/role_definition.template.yaml +0 -0
  211. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/runtime_capabilities.yaml +0 -0
  212. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/skills_manifest.template.yaml +0 -0
  213. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/templates/test_packet.template.md +0 -0
  214. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
  215. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
  216. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
  217. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
  218. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
  219. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +0 -0
  220. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/reauth_conflict.yaml +0 -0
  221. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +0 -0
  222. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/reauth_reuse.yaml +0 -0
  223. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +0 -0
  224. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +0 -0
  225. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/review_live_head_mismatch.yaml +0 -0
  226. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/review_live_head_prefix.yaml +0 -0
  227. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
  228. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/audits/prior_review_addressed_accepted.yaml +0 -0
  229. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/audits/prior_review_grant_addressed_types.yaml +0 -0
  230. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/audits/prior_review_grant_approved.yaml +0 -0
  231. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/audits/prior_review_grant_denied_later.yaml +0 -0
  232. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/audits/prior_review_grant_denied_postmessage.yaml +0 -0
  233. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
  234. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
  235. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
  236. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
  237. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
  238. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
  239. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
  240. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
  241. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
  242. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
  243. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
  244. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
  245. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +0 -0
  246. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +0 -0
  247. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
  248. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
  249. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
  250. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
  251. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
  252. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
  253. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
  254. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
  255. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
  256. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
  257. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
  258. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
  259. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
  260. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
  261. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
  262. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
  263. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
  264. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
  265. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
  266. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
  267. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
  268. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
  269. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
  270. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
  271. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
  272. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
  273. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
  274. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
  275. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
  276. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
  277. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
  278. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
  279. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
  280. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
  281. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
  282. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
  283. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
  284. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
  285. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_accepted_auto_continues.yaml +0 -0
  286. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_disabled_pauses.yaml +0 -0
  287. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_drift_pauses.yaml +0 -0
  288. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_expired_pauses.yaml +0 -0
  289. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_head_mismatch_records.yaml +0 -0
  290. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_later_round_pauses.yaml +0 -0
  291. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_missing_approval_pauses.yaml +0 -0
  292. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_prefix_head_records.yaml +0 -0
  293. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_repeated_addressed_round_exceeded.yaml +0 -0
  294. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_revoke_before_processing_pauses.yaml +0 -0
  295. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/review_continuation_revoked_pauses.yaml +0 -0
  296. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
  297. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
  298. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
  299. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
  300. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
  301. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
  302. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
  303. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
  304. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
  305. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
  306. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
  307. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
  308. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
  309. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
  310. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
  311. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
  312. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
  313. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
  314. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
  315. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
  316. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
  317. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
  318. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
  319. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
  320. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
  321. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
  322. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
  323. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
  324. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
  325. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
  326. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
  327. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
  328. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
  329. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
  330. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
  331. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
  332. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/review_continuation_addressed_round3.yaml +0 -0
  333. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/review_continuation_cross_pr.yaml +0 -0
  334. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/review_continuation_head_mismatch.yaml +0 -0
  335. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/review_continuation_prefix_head.yaml +0 -0
  336. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/review_continuation_request.yaml +0 -0
  337. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/review_continuation_round4.yaml +0 -0
  338. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/review_continuation_unapproved.yaml +0 -0
  339. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
  340. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
  341. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
  342. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
  343. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
  344. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
  345. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
  346. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
  347. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
  348. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
  349. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
  350. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
  351. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/README.md +0 -0
  352. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
  353. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/configs/malformed.yaml +0 -0
  354. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
  355. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
  356. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +0 -0
  357. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
  358. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
  359. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
  360. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
  361. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
  362. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
  363. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
  364. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
  365. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
  366. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
  367. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/README.md +0 -0
  368. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/configs/enforce.yaml +0 -0
  369. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/configs/off.yaml +0 -0
  370. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/configs/warn.yaml +0 -0
  371. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
  372. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
  373. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
  374. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
  375. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
  376. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
  377. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
  378. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
  379. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
  380. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
  381. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
  382. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
  383. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
  384. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/README.md +0 -0
  385. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
  386. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
  387. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
  388. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
  389. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
  390. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
  391. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
  392. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
  393. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
  394. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
  395. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
  396. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
  397. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
  398. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
  399. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
  400. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
  401. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
  402. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
  403. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
  404. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
  405. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
  406. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
  407. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/keys/alice.json +0 -0
  408. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/keys/bob.json +0 -0
  409. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/keys/carol.json +0 -0
  410. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
  411. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
  412. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
  413. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
  414. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
  415. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
  416. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
  417. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
  418. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
  419. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
  420. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
  421. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
  422. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
  423. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
  424. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
  425. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
  426. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
  427. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
  428. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
  429. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
  430. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
  431. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
  432. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
  433. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
  434. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
  435. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
  436. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
  437. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
  438. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/conformance/signing/regen_fixtures.py +0 -0
  439. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_autonomy_conformance_fixtures.py +0 -0
  440. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_codex_session_init.py +0 -0
  441. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_default_envelope.py +0 -0
  442. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_envelope_compiler.py +0 -0
  443. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_envelope_conformance_fixtures.py +0 -0
  444. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_envelope_public_admission.py +0 -0
  445. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_github_workflows.py +0 -0
  446. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_handoff_schema.py +0 -0
  447. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_inbox_verify.py +0 -0
  448. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_init_project_workspace.py +0 -0
  449. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_intake_conformance.py +0 -0
  450. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_memory_archive.py +0 -0
  451. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_message_signing.py +0 -0
  452. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_message_verify.py +0 -0
  453. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_oacp_cli.py +0 -0
  454. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_oacp_constants.py +0 -0
  455. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_oacp_coordinator.py +0 -0
  456. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_oacp_env.py +0 -0
  457. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_oacp_inbox.py +0 -0
  458. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_oacp_watch.py +0 -0
  459. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_policy_signing.py +0 -0
  460. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_retention.py +0 -0
  461. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_review_loop.py +0 -0
  462. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_session_lifecycle_hooks.py +0 -0
  463. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_setup_runtime.py +0 -0
  464. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_signing_conformance.py +0 -0
  465. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_trust_root.py +0 -0
  466. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_validate_agent_card.py +0 -0
  467. {oacp_cli-0.4.3 → oacp_cli-0.4.4}/tests/test_validate_message.py +0 -0
  468. {oacp_cli-0.4.3 → 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/
@@ -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/
@@ -5,6 +5,51 @@ 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
+
8
53
  ## [0.4.3] - 2026-08-12
9
54
 
10
55
  ### Added
@@ -762,6 +807,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
762
807
  - Checkout step in github-release workflow job (#19)
763
808
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
764
809
 
810
+ [0.4.4]: https://github.com/kiloloop/oacp/compare/v0.4.3...v0.4.4
765
811
  [0.4.3]: https://github.com/kiloloop/oacp/compare/v0.4.2...v0.4.3
766
812
  [0.4.2]: https://github.com/kiloloop/oacp/compare/v0.4.1...v0.4.2
767
813
  [0.4.1]: https://github.com/kiloloop/oacp/compare/v0.4.0...v0.4.1
@@ -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
1
  Metadata-Version: 2.5
2
2
  Name: oacp-cli
3
- Version: 0.4.3
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,22 +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 session-init` | Verify Codex startup inputs, optionally pull memory, and update status |
266
- | `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
267
- | `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
268
- | `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 |
269
276
  | `oacp doctor` | Check environment and workspace health |
270
277
  | `oacp validate` | Validate an inbox/outbox YAML message |
271
- | `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.
272
282
 
273
283
  <details>
274
284
  <summary>Key flags</summary>
@@ -319,7 +329,7 @@ it is not part of the OACP product surface.
319
329
 
320
330
  ## Prerequisites
321
331
 
322
- - Python 3.9+
332
+ - Python 3.9.2+
323
333
  - Bash 3.2+ (macOS default is fine)
324
334
  - `gh` CLI (optional, for GitHub operations)
325
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
 
@@ -225,22 +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 session-init` | Verify Codex startup inputs, optionally pull memory, and update status |
238
- | `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
239
- | `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
240
- | `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 |
241
248
  | `oacp doctor` | Check environment and workspace health |
242
249
  | `oacp validate` | Validate an inbox/outbox YAML message |
243
- | `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.
244
254
 
245
255
  <details>
246
256
  <summary>Key flags</summary>
@@ -291,7 +301,7 @@ it is not part of the OACP product surface.
291
301
 
292
302
  ## Prerequisites
293
303
 
294
- - Python 3.9+
304
+ - Python 3.9.2+
295
305
  - Bash 3.2+ (macOS default is fine)
296
306
  - `gh` CLI (optional, for GitHub operations)
297
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
 
@@ -24,7 +24,9 @@ $OACP_HOME/
24
24
  └── outbox/
25
25
  ```
26
26
 
27
- - **Global profiles** (`agents/<name>/profile.yaml`) are created once per agent and rarely change.
27
+ - **Global profiles** (`agents/<name>/profile.yaml`) form the instance registry.
28
+ `oacp add-agent` and `oacp init --agents` create them and append project
29
+ memberships without replacing existing identity fields.
28
30
  - **Project cards** (`projects/<project>/agents/<name>/agent_card.yaml`) carry project-specific overrides — permissions, skills, routing rules — and are the authoritative resolved identity for that project.
29
31
  - **Status files** (`status.yaml`) remain separate; they track dynamic session state, not static identity.
30
32
 
@@ -80,9 +82,10 @@ Global profiles use `agent_profile.template.yaml`. Fields:
80
82
  |-------|------|----------|-------------|
81
83
  | `version` | string | yes | Schema version (semver, currently `0.2.0`) |
82
84
  | `name` | string | yes | Agent identifier (matches directory name) |
83
- | `runtime` | string | yes | One of: `claude`, `codex`, `gemini`, `human` |
84
- | `model` | string | no | Model version identifier |
85
+ | `runtime` | string | yes | One of: `claude`, `codex`, `cursor`, `gemini`, `human`, `unknown` |
86
+ | `model` | string | no | Configured model identifier; a runtime alias may select that runtime's environment default |
85
87
  | `description` | string | no | One-line role summary |
88
+ | `projects` | list | yes | Project workspaces where this agent is initialized |
86
89
  | `routing_rules` | dict | no | `primary` (preferred targets) and `avoid` (agents to skip) |
87
90
  | `trust_level` | string | no | `untrusted`, `standard`, `elevated`, or `admin` |
88
91
  | `quota` | dict | no | `max_cost_usd_per_month`, `reset_day`, `warn_threshold` |
@@ -123,17 +126,30 @@ oacp agent show claude --project my-app
123
126
 
124
127
  ### `oacp agent list`
125
128
 
126
- List known agents with their tier tags.
129
+ List the instance registry with each agent's runtime and project memberships.
130
+ `--project` preserves the merged global/project view for one workspace.
127
131
 
128
132
  ```bash
129
133
  oacp agent list
130
- # claude (global)
131
- # codex (global)
134
+ # claude runtime=claude memberships=my-app,other-app (global)
135
+ # codex runtime=codex memberships=my-app (global)
132
136
 
133
137
  oacp agent list --project my-app
134
- # claude (global, project)
135
- # codex (global)
136
- # gemini (project)
138
+ # claude runtime=claude memberships=my-app,other-app (global, project)
139
+ # codex runtime=codex memberships=my-app (global, project)
140
+ ```
141
+
142
+ ### `oacp agent sync`
143
+
144
+ Backfill the instance registry once from existing project agent directories.
145
+ The command infers defaults from agent cards and status files, preserves every
146
+ existing identity value, and only appends missing memberships. It is safe to
147
+ repeat. `oacp doctor` reports missing profiles or memberships and points to
148
+ this command.
149
+
150
+ ```bash
151
+ oacp agent sync
152
+ # Agent registry synchronized: 3 agent(s), 8 project membership(s); ...
137
153
  ```
138
154
 
139
155
  ## Relationship to Existing Agent Cards
@@ -144,7 +160,7 @@ Agent cards predate global profiles and remain the authoritative per-project ide
144
160
  |---------|---------------|--------------------|
145
161
  | **Location** | `$OACP_HOME/agents/<name>/profile.yaml` | `$OACP_HOME/projects/<project>/agents/<name>/agent_card.yaml` |
146
162
  | **Scope** | All projects | Single project |
147
- | **Updates** | Rarely (identity changes) | Per project as needed |
163
+ | **Updates** | Identity changes plus append-only project membership | Per project as needed |
148
164
  | **Authority** | Defaults only | Authoritative for the project |
149
165
  | **Extra sections** | None | `permissions`, `availability`, `protocol` |
150
166