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