oacp-cli 0.4.6__tar.gz → 0.5.1__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.1}/CHANGELOG.md +48 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/PKG-INFO +13 -16
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/QUICKSTART.md +16 -10
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/README.md +11 -14
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/SPEC.md +2 -3
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/doctor.md +5 -1
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/memory-context.md +2 -2
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/autonomy.md +148 -16
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/inbox_outbox.md +15 -35
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/message_signing.md +2 -2
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/org_memory.md +210 -48
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/runtime_capabilities.md +5 -3
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/session_init.md +19 -9
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/README.md +5 -4
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/oacp/cli.py +120 -12
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/pyproject.toml +3 -13
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/_oacp_constants.py +1 -1
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/autonomy_gate.py +1 -1
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/claude_envelope_hook.py +3 -3
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/codex_session_init.py +16 -52
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/envelope_compiler.py +446 -37
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/finalize_autonomy_record.py +279 -17
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/oacp_doctor.py +22 -646
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/preflight.py +121 -6
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/record_autonomy_outcome.py +1 -1
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/send_inbox_message.py +2 -2
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/setup_runtime.py +254 -61
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/write_event.py +1 -1
- oacp_cli-0.5.1/tests/conformance/autonomy/records/cancelled_missing_actor.yaml +45 -0
- oacp_cli-0.5.1/tests/conformance/autonomy/records/clean_terminal_cancelled.yaml +46 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/expected_findings.yaml +7 -0
- oacp_cli-0.5.1/tests/conformance/autonomy/records/invalid_live_clock_adjustment.yaml +54 -0
- oacp_cli-0.5.1/tests/conformance/autonomy/records/pause_and_clock_adjustment.yaml +85 -0
- oacp_cli-0.5.1/tests/conformance/autonomy/records/two_clock_adjustments.yaml +100 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/README.md +24 -2
- oacp_cli-0.5.1/tests/conformance/envelope/expected/adapter_detection_failed.yaml +27 -0
- oacp_cli-0.5.1/tests/conformance/envelope/expected/adapter_expected_missing.yaml +28 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +8 -0
- oacp_cli-0.5.1/tests/conformance/envelope/expected/unsupported_runtime_codex.yaml +27 -0
- oacp_cli-0.5.1/tests/conformance/memory_layout/README.md +23 -0
- oacp_cli-0.5.1/tests/conformance/memory_layout/canonical_memory_gitignore.txt +9 -0
- oacp_cli-0.5.1/tests/conformance/memory_layout/layout.yaml +71 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_autonomy_conformance_fixtures.py +1 -1
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_autonomy_gate.py +1 -1
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_claude_envelope_hook.py +1 -1
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_codex_session_init.py +18 -30
- oacp_cli-0.5.1/tests/test_envelope_compiler.py +1142 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_envelope_conformance_fixtures.py +56 -3
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_envelope_public_admission.py +20 -3
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_finalize_autonomy_record.py +333 -0
- oacp_cli-0.5.1/tests/test_memory_layout_fixture.py +207 -0
- oacp_cli-0.5.1/tests/test_memory_shim.py +135 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_cli.py +111 -6
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_doctor.py +20 -140
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_package_content.py +100 -5
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_preflight.py +96 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_readme_commands.py +2 -2
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_record_autonomy_outcome.py +2 -1
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/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/scripts/retention.py +0 -407
- 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_envelope_compiler.py +0 -490
- 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/tests/test_retention.py +0 -268
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.gitattributes +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.github/workflows/auto-estimate.yml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.github/workflows/ci.yml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.github/workflows/release.yml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/.gitignore +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/CONTRIBUTING.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/LICENSE +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/Makefile +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/SECURITY.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/from-claude-p.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/adoption.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/prompt_caching.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/setup.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/unified_skill_spec.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/guides/versioning.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/img/oacp-cli-demo.png +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/img/oacp-filesystem-tree.png +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/img/oacp-fleet-thread.png +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/agent_profiles.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/agent_safety_defaults.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/credential_scoping.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/dispatch_states.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/mcp_integration.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/multi_agent_shared_workspace.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/packet_states.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/review_loop.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/skills_manifest.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/docs/protocol/task_negotiation.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/decisions.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/recent.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/org-memory/rules.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/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.1}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/examples/quickstart/README.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/oacp/__init__.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/oacp/envelope_hook.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/_oacp_env.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/add_agent.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/agent_profile.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/check_quality_gate.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/gen_readme_commands.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/handoff_schema.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/init_packet.sh +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/init_project_workspace.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/key_cli.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/message_signing.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/message_verify.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/oacp_inbox.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/oacp_watch.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/policy_signing.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/trust_cli.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/trust_root.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/update_workspace.sh +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/validate_agent_card.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/scripts/validate_message.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/agent_card.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/agent_profile.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/agent_status.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/checkpoint.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/claude/agents/role_agent.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/claude/rules/guardrail.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/findings_packet.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/github_actions_quality_gate.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/guardrails/coding_standards.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/guardrails/safe_commands.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/guardrails/secrets_rules.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/handoff_packet.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/inbox_message.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/manual_validation.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/merge_decision.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/receiver_config.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/review_packet.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/roles/role_baseline.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/roles/role_definition.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/runtime_capabilities.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/skills_manifest.template.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/templates/test_packet.template.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/README.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_conflict.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_reuse.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/review_live_head_mismatch.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/review_live_head_prefix.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_addressed_accepted.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_grant_addressed_types.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_grant_approved.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_grant_denied_later.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_review_grant_denied_postmessage.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/pause_classification_designed.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/pause_classification_mixed.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/pause_classification_undeclared.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/pause_classification_unplanned.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_accepted_auto_continues.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_disabled_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_drift_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_expired_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_head_mismatch_records.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_later_round_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_missing_approval_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_prefix_head_records.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_repeated_addressed_round_exceeded.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_revoke_before_processing_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/review_continuation_revoked_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/ledger_replay/corpus.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/declaration_error_admission.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/pause_classification_designed.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/pause_classification_mixed.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/pause_classification_undeclared.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/pause_classification_unplanned.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_addressed_round3.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_cross_pr.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_head_mismatch.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_prefix_head.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_request.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_round4.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/review_continuation_unapproved.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/README.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/admission_outcome_replaced_by_clear.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/breached_empty_fields.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/clean_terminal_done.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/duplicate_live_a.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/duplicate_live_b.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/serialized_wave_item.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_missing_successor.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_successor_live.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/configs/malformed.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/README.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/configs/enforce.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/configs/off.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/configs/warn.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/README.md +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/keys/alice.json +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/keys/bob.json +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/keys/carol.json +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/conformance/signing/regen_fixtures.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_add_agent.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_agent_profile.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_audit_corpus_boundary.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_audit_record_conformance.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_autonomy_ledger_replay.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_default_envelope.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_expected_pauses.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_github_workflows.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_handoff_schema.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_inbox_verify.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_init_project_workspace.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_intake_conformance.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_message_signing.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_message_verify.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_constants.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_env.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_inbox.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_oacp_watch.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_packaged_status_template.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_policy_signing.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_review_loop.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_send_inbox_message.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_signing_conformance.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_spec_version.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_trust_root.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_update_workspace.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_validate_agent_card.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_validate_message.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_workspace_discovery.py +0 -0
- {oacp_cli-0.4.6 → oacp_cli-0.5.1}/tests/test_write_event.py +0 -0
|
@@ -7,6 +7,52 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.5.1] - 2026-09-11
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Attributed work-clock deductions for multiple excluded intervals, including human-directed time away ([contract](docs/protocol/autonomy.md#threshold-exceeded-checkpoint)).
|
|
15
|
+
- Cancellation receipts that close admitted tasks while preserving partial delivery and pause history ([contract](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
|
|
16
|
+
- Envelope compilation stamps the enforcement it resolved: `hooks` only when the receiver's adapter is present, `none` with a reason otherwise ([contract](docs/protocol/autonomy.md#enforcement-recording)).
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Protocol contract stamp `spec_version` moves to `0.5.1` ([contract version](docs/protocol/autonomy.md#contract-version)).
|
|
21
|
+
- `oacp retention` no longer prunes: the engine is parked outside the kernel and the subcommand prints where it went until its removal in 0.5.3 ([inbox/outbox](docs/protocol/inbox_outbox.md#message-history-retention)).
|
|
22
|
+
- `oacp write-event` execs `agent-memory event write` when the installed tool serves it, falling back to the bundled script until its removal in 0.5.2 ([README](README.md#commands)).
|
|
23
|
+
- The exec path prints `published:`/`idempotent:` where the bundled script prints `OK:` ([README](README.md#commands)).
|
|
24
|
+
- `oacp session-init --pull-memory` is a no-op that names the memory tool's own SessionStart hook, until its removal in 0.5.3 ([codex](docs/protocol/session_init.md#codex)).
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- The sync allowlist anchors `.gitignore` and `.oacp-memory-repo` to the home root, matching the memory tool's golden byte for byte ([memory layout](docs/protocol/org_memory.md#the-sync-allowlist)).
|
|
29
|
+
- Preflight's conflict-marker check flags the diff3 `|||||||` base marker ([preflight](scripts/preflight.py)).
|
|
30
|
+
|
|
31
|
+
## [0.5.0] - 2026-09-09
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- Memory-layout conformance fixture pinning the layout grammar and sync allowlist ([fixture](tests/conformance/memory_layout/README.md)).
|
|
36
|
+
- `oacp doctor` reports the installed `agent-memory` version and defers memory-home checks to it ([doctor guide](docs/guides/doctor.md)).
|
|
37
|
+
- Preflight and wheel guards fail when a kernel module or the wheel ships the memory engine ([lean kernel](docs/protocol/org_memory.md#conformance)).
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- The org-memory doc becomes the three-tier memory layout spec the kernel scaffolds against ([memory layout](docs/protocol/org_memory.md#layout)).
|
|
42
|
+
- `oacp memory` and `oacp org-memory` delegate to the `agent-memory` CLI until their removal in 0.5.2 ([README](README.md#commands)).
|
|
43
|
+
- `oacp setup` no longer installs memory hooks and retires the ones it generated; `agent-memory setup` replaces them ([quickstart](QUICKSTART.md)).
|
|
44
|
+
- `oacp session-init --pull-memory` delegates to `agent-memory`, reporting `disabled` when absent ([codex](docs/protocol/session_init.md#codex)).
|
|
45
|
+
|
|
46
|
+
### Removed
|
|
47
|
+
|
|
48
|
+
- `docs/protocol/cross_runtime_sync.md`; its durable-memory half moved to the layout spec ([layout](docs/protocol/org_memory.md#per-project-tier)).
|
|
49
|
+
- The bundled memory engine and org-memory doctor category, shipped as `agent-memory-cli` ([agent-memory](https://github.com/kiloloop/agent-memory)).
|
|
50
|
+
- `oacp doctor --memory`; the memory home is checked by `agent-memory doctor` ([doctor guide](docs/guides/doctor.md)).
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
- `oacp setup codex` regenerates its managed `SessionStart` hook but never creates one ([codex startup](docs/protocol/session_init.md#codex)).
|
|
55
|
+
|
|
10
56
|
## [0.4.6] - 2026-09-05
|
|
11
57
|
|
|
12
58
|
### Added
|
|
@@ -843,6 +889,8 @@ The central debrief store is the headline change: every agent's full end-of-sess
|
|
|
843
889
|
- Checkout step in github-release workflow job (#19)
|
|
844
890
|
- Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
|
|
845
891
|
|
|
892
|
+
[0.5.1]: https://github.com/kiloloop/oacp/compare/v0.5.0...v0.5.1
|
|
893
|
+
[0.5.0]: https://github.com/kiloloop/oacp/compare/v0.4.6...v0.5.0
|
|
846
894
|
[0.4.6]: https://github.com/kiloloop/oacp/compare/v0.4.5...v0.4.6
|
|
847
895
|
[0.4.5]: https://github.com/kiloloop/oacp/compare/v0.4.4...v0.4.5
|
|
848
896
|
[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.1
|
|
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
|
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
21
21
|
Classifier: Topic :: Software Development
|
|
22
22
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
23
|
Requires-Python: >=3.9.2
|
|
24
|
-
Requires-Dist: pyyaml>=6.0
|
|
24
|
+
Requires-Dist: pyyaml>=6.0.1
|
|
25
25
|
Provides-Extra: crypto
|
|
26
26
|
Requires-Dist: cryptography>=50.0.0; extra == 'crypto'
|
|
27
27
|
Description-Content-Type: text/markdown
|
|
@@ -261,14 +261,14 @@ uv tool install .
|
|
|
261
261
|
| `oacp agent` | Manage global agent profiles (init, sync, show, list) |
|
|
262
262
|
| `oacp inbox` | List pending inbox messages |
|
|
263
263
|
| `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
|
|
264
|
-
| `oacp retention` |
|
|
265
|
-
| `oacp memory` |
|
|
264
|
+
| `oacp retention` | Parked: engine archived outside the kernel; advisory shim until 0.5.3 |
|
|
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).
|
|
@@ -233,14 +233,14 @@ uv tool install .
|
|
|
233
233
|
| `oacp agent` | Manage global agent profiles (init, sync, show, list) |
|
|
234
234
|
| `oacp inbox` | List pending inbox messages |
|
|
235
235
|
| `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
|
|
236
|
-
| `oacp retention` |
|
|
237
|
-
| `oacp memory` |
|
|
236
|
+
| `oacp retention` | Parked: engine archived outside the kernel; advisory shim until 0.5.3 |
|
|
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:
|
|
@@ -322,7 +322,7 @@ Every autonomy decision writes one YAML file:
|
|
|
322
322
|
|
|
323
323
|
```yaml
|
|
324
324
|
schema_version: 2
|
|
325
|
-
spec_version: "0.
|
|
325
|
+
spec_version: "0.5.1"
|
|
326
326
|
created_at_utc: "2026-05-12T13:23:25Z"
|
|
327
327
|
receiver: codex
|
|
328
328
|
sender: iris
|
|
@@ -470,6 +470,10 @@ terminal finalization. Records, envelopes, and workspaces written between the
|
|
|
470
470
|
0.4.4 release (2026-08-28) and the 0.4.5 release are therefore stamped
|
|
471
471
|
`0.4.3` under a contract that had already moved — readers tolerate that
|
|
472
472
|
stamp on artifacts dated in the window and read them by the 0.4.5 shape.
|
|
473
|
+
The 0.5.1 contract adds cancellation receipts and attributed clock adjustments. Existing records keep their
|
|
474
|
+
original stamp; new cancellation fixtures use 0.5.1. Schema version remains 2
|
|
475
|
+
because the record container is unchanged; readers must recognize the new
|
|
476
|
+
terminal vocabulary before consuming 0.5.1 receipts.
|
|
473
477
|
|
|
474
478
|
`evaluator` is **gate-emitted, not receiver-composed**: the evaluator
|
|
475
479
|
self-stamps its provenance into every decision it returns, and receivers
|
|
@@ -823,7 +827,7 @@ in place with `--replace`.
|
|
|
823
827
|
|
|
824
828
|
**Run-state vocabulary.** `result.final_state` splits by lifecycle phase:
|
|
825
829
|
`pending`, `paused`, and `blocked` are live states; `done`, `superseded`,
|
|
826
|
-
and `
|
|
830
|
+
`error`, and `cancelled` are terminal. Only terminal states can be finalized.
|
|
827
831
|
`pending` is receiver-written (an admission record picked up for
|
|
828
832
|
execution) — the evaluator itself never writes it.
|
|
829
833
|
|
|
@@ -857,11 +861,38 @@ actuals, whichever receiver writes it. Within the envelope, the
|
|
|
857
861
|
checkpoint records `within_declared_envelope` (or
|
|
858
862
|
`continued_with_grant`) and the terminal write proceeds; a breach leaves
|
|
859
863
|
the record checkpoint-paused (exit code 4) and the §E re-authorization
|
|
860
|
-
flow applies before
|
|
864
|
+
flow applies before successful completion can be written. Cancellation
|
|
865
|
+
closes the task without resuming or erasing a breached checkpoint. Realized effects
|
|
861
866
|
use the canonical axis names only: `actual_minutes`,
|
|
862
867
|
`actual_files_touched`, `side_effects_actual.<capability>`, and
|
|
863
868
|
`task_profile.<field>` for declared-intent corrections.
|
|
864
869
|
|
|
870
|
+
**Cancellation.** Use `cancelled` when the human or sender stops an admitted
|
|
871
|
+
task; use `superseded` when a replacement evaluation inherits its authority.
|
|
872
|
+
`oacp autonomy-finalize <record> --final-state cancelled --cancelled-by human
|
|
873
|
+
--cancelled-at <UTC>` writes `result.cancelled_by` (`human` or `sender`),
|
|
874
|
+
`cancelled_at_utc` (equal to `completed_at_utc`), optional `reason` (`--reason`),
|
|
875
|
+
and `deliverables_landed` (a list of PR/commit reference strings, supplied with
|
|
876
|
+
repeatable `--deliverable-landed`; empty when none landed). Cancellation must
|
|
877
|
+
follow admission approval and any work start. It requires non-negative integer
|
|
878
|
+
`actual_minutes` and `actual_files_touched`; existing work-start and pause stamps
|
|
879
|
+
remain binding. Before work begins, no start is invented: both actuals are zero
|
|
880
|
+
and the landed list is empty.
|
|
881
|
+
|
|
882
|
+
Cancellation accepts live `pending`/`paused`/`blocked` records and the provisional
|
|
883
|
+
`done` shape emitted at auto-admission (no completion stamp). A paused admission
|
|
884
|
+
must have a recorded `approved`/`modified` human outcome. Completed `done`,
|
|
885
|
+
`error`, `superseded`, and `cancelled` records refuse cancellation even with
|
|
886
|
+
`--replace`. Cancelled history cannot be reopened by a checkpoint, another
|
|
887
|
+
outcome, or a done/error correction; linked supersession remains available.
|
|
888
|
+
Cancellation preserves the admission and any unresolved checkpoint evidence,
|
|
889
|
+
including its historical `paused_for_reauthorization` action, but does not
|
|
890
|
+
require an implementation-success checkpoint or manufacture resumed authority.
|
|
891
|
+
Cancellation accepts only clock/count actuals (including `clock_adjustments`): record effects, risks, and
|
|
892
|
+
re-authorization through a checkpoint while still live before cancelling.
|
|
893
|
+
Unsupported actuals are refused rather than silently discarded. The cancelled
|
|
894
|
+
lifecycle is closed for doctor and envelope clear.
|
|
895
|
+
|
|
865
896
|
**Evaluation identity and supersession.** Every persisted evaluation
|
|
866
897
|
carries an `evaluation_id` derived from receiver, message id, message
|
|
867
898
|
bytes, and evaluation time. Re-evaluating a message the evaluator
|
|
@@ -1047,7 +1078,55 @@ completion or the current checkpoint, rounded up to a whole minute, excluding
|
|
|
1047
1078
|
each represented re-authorization pause from `paused_at_utc` through
|
|
1048
1079
|
`cleared_paused_at_utc`. If a terminal outcome leaves that pause uncleared,
|
|
1049
1080
|
active work ends at `paused_at_utc`; the subsequent paused wait does not count.
|
|
1050
|
-
The
|
|
1081
|
+
The scalar pair keeps its original meaning. Explicit human-directed exclusions
|
|
1082
|
+
are carried separately in `result.clock_adjustments`, including deductions that
|
|
1083
|
+
were never checkpoint pauses. Supply additions through `--actuals <yaml>`:
|
|
1084
|
+
|
|
1085
|
+
```yaml
|
|
1086
|
+
actual_files_touched: 2
|
|
1087
|
+
completed_at_utc: "2026-08-01T02:00:00Z"
|
|
1088
|
+
clock_adjustments:
|
|
1089
|
+
- from_utc: "2026-08-01T01:30:00Z"
|
|
1090
|
+
to_utc: "2026-08-01T01:45:00Z"
|
|
1091
|
+
actor: alice
|
|
1092
|
+
decided_at_utc: "2026-08-01T02:00:00Z"
|
|
1093
|
+
reason: "Human directed exclusion for time away"
|
|
1094
|
+
```
|
|
1095
|
+
|
|
1096
|
+
Each closed interval requires exactly these five input fields; the finalizer
|
|
1097
|
+
adds `recorded_at_utc` as writer provenance. The actor is a stable nonempty
|
|
1098
|
+
handle, the reason is nonempty, and all timestamps use `YYYY-MM-DDTHH:MM:SSZ`.
|
|
1099
|
+
The interval starts at or after work start and finishes after its start, no
|
|
1100
|
+
later than recording and the measurement/completion endpoint. The decision
|
|
1101
|
+
cannot postdate recording. Duration is derived from the interval, so no
|
|
1102
|
+
independently editable minutes field can disagree with it. Only explicit human
|
|
1103
|
+
direction authorizes a deduction; an adjustment neither grants scope nor
|
|
1104
|
+
resumes a checkpoint.
|
|
1105
|
+
|
|
1106
|
+
Additions append to recorded evidence; omission or an empty list preserves it,
|
|
1107
|
+
and identical entries are idempotent. A supplied writer timestamp for a new
|
|
1108
|
+
entry is refused; only an exact replay may carry its existing writer stamp.
|
|
1109
|
+
Rewriting a stored timestamp is refused. Corrections that remove or rewrite history use linked supersession.
|
|
1110
|
+
The list survives checkpoints and metadata-only `--replace`. These rules
|
|
1111
|
+
apply to direct library calls as well as the CLI and to cancellation after
|
|
1112
|
+
work has begun.
|
|
1113
|
+
|
|
1114
|
+
Arithmetic uses the union of the scalar pause and explicit intervals. Sort and
|
|
1115
|
+
merge overlapping or adjacent intervals, subtract their total seconds from
|
|
1116
|
+
elapsed seconds, then round active minutes up once. Every excluded second
|
|
1117
|
+
counts once, including a pause also recorded explicitly before a later
|
|
1118
|
+
checkpoint replaces the scalar pair. A malformed scalar remains invalid even
|
|
1119
|
+
when an explicit list exists. Existing scalar-only receipts keep their original
|
|
1120
|
+
behavior; absent adjustments mean no extra deduction. Read-back validates list
|
|
1121
|
+
shape and provenance even on live records without numeric actuals, and terminal
|
|
1122
|
+
actuals retain the one-minute `actual_minutes_inconsistent` tolerance.
|
|
1123
|
+
Live read-back does not bound `recorded_at_utc` against the reading wall clock;
|
|
1124
|
+
finalization rejects intervals beyond its measurement/completion endpoint.
|
|
1125
|
+
|
|
1126
|
+
For `--final-state done --replace`, automatic scalar-pause derivation reads the
|
|
1127
|
+
stored checkpoint first. When also changing that scalar pause through actuals,
|
|
1128
|
+
supply explicit `actual_minutes`; the final read-back still checks the resulting
|
|
1129
|
+
clock. Newly supplied explicit adjustments participate in derivation immediately.
|
|
1051
1130
|
Admission-to-start idle time never counts; time waiting on a peer reviewer does
|
|
1052
1131
|
count because it is part of that task's review loop. Serialized tasks admitted
|
|
1053
1132
|
together therefore stamp and measure their own starts independently.
|
|
@@ -1335,9 +1414,14 @@ and then human-approved), the receiver compiles the profile plus its own
|
|
|
1335
1414
|
autonomy config into a runtime envelope:
|
|
1336
1415
|
|
|
1337
1416
|
```
|
|
1338
|
-
oacp envelope compile <message.yaml> --receiver <agent>
|
|
1417
|
+
oacp envelope compile <message.yaml> --receiver <agent> \
|
|
1418
|
+
[--audit <admission-record.yaml>]
|
|
1339
1419
|
```
|
|
1340
1420
|
|
|
1421
|
+
With `--audit`, the compiler also stamps the admission record with the
|
|
1422
|
+
enforcement state it compiled (see Enforcement recording below); the
|
|
1423
|
+
record and the envelope then tell one story.
|
|
1424
|
+
|
|
1341
1425
|
**Admitted public-visibility tasks are the one explicit exception.** A
|
|
1342
1426
|
compiled `public_visibility: true` envelope denies the entire chain the
|
|
1343
1427
|
human just approved — the runtime adapter has no post-approval carve-out —
|
|
@@ -1385,7 +1469,7 @@ The envelope is written to
|
|
|
1385
1469
|
```json
|
|
1386
1470
|
{
|
|
1387
1471
|
"envelope_version": 1,
|
|
1388
|
-
"spec_version": "0.
|
|
1472
|
+
"spec_version": "0.5.1",
|
|
1389
1473
|
"compiler": "envelope_compiler.py",
|
|
1390
1474
|
"compiled_at_utc": "2026-07-12T02:00:00Z",
|
|
1391
1475
|
"project": "my-project",
|
|
@@ -1412,10 +1496,19 @@ The envelope is written to
|
|
|
1412
1496
|
},
|
|
1413
1497
|
"counters": {"files_touched": []},
|
|
1414
1498
|
"enforcement": "hooks",
|
|
1499
|
+
"adapter": {
|
|
1500
|
+
"runtime": "claude",
|
|
1501
|
+
"state": "resolved",
|
|
1502
|
+
"console": "oacp-envelope-hook",
|
|
1503
|
+
"detail": "console script 'oacp-envelope-hook' on PATH at …; registered as a PreToolUse hook"
|
|
1504
|
+
},
|
|
1415
1505
|
"session_id": "sess-…"
|
|
1416
1506
|
}
|
|
1417
1507
|
```
|
|
1418
1508
|
|
|
1509
|
+
`enforcement_reason` appears beside `enforcement` exactly when it is
|
|
1510
|
+
`none`, naming the adapter state (below).
|
|
1511
|
+
|
|
1419
1512
|
Compilation rules:
|
|
1420
1513
|
|
|
1421
1514
|
- **Fail closed.** A missing, unparsable, or invalid profile — or a malformed
|
|
@@ -1427,6 +1520,33 @@ Compilation rules:
|
|
|
1427
1520
|
runtime enforcement never trusts sender declarations alone.
|
|
1428
1521
|
- Granular side-effect fields absent from a legacy profile compile to
|
|
1429
1522
|
`false`. `counters` are runtime state and always start empty.
|
|
1523
|
+
- **Adapter detection.** `enforcement` is earned, not assumed. The
|
|
1524
|
+
compiler resolves the receiver's runtime from its agent card
|
|
1525
|
+
(`agents/<receiver>/agent_card.yaml` → `runtime:`) and detects that
|
|
1526
|
+
runtime's envelope adapter **by console name, never by module path**,
|
|
1527
|
+
so the adapter can move between distributions without touching the
|
|
1528
|
+
compiler. Every compile stamps exactly one of four `adapter.state`
|
|
1529
|
+
values: `resolved` → `enforcement: hooks`; `unsupported`,
|
|
1530
|
+
`expected_missing`, or `failed` → `enforcement: none` plus
|
|
1531
|
+
`enforcement_reason` naming the state (`adapter_unsupported`,
|
|
1532
|
+
`adapter_expected_missing`, `adapter_detection_failed`). Detection
|
|
1533
|
+
inputs, per runtime:
|
|
1534
|
+
- `claude` — the `oacp-envelope-hook` console script resolves on
|
|
1535
|
+
PATH **and** is registered as a `PreToolUse` hook command in the
|
|
1536
|
+
project repo's `.claude/settings.json` (the registration
|
|
1537
|
+
`oacp setup claude` writes, reached through the workspace marker's
|
|
1538
|
+
`repo_path`). Both present → `resolved`; either absent →
|
|
1539
|
+
`expected_missing`; a workspace marker or settings file that cannot
|
|
1540
|
+
be read → `failed`.
|
|
1541
|
+
- `codex`, `cursor`, `gemini`, `human` — no envelope adapter by
|
|
1542
|
+
design → `unsupported`.
|
|
1543
|
+
- `unknown`, a missing or unreadable card, or a value outside the
|
|
1544
|
+
card's runtime enum → `failed`.
|
|
1545
|
+
|
|
1546
|
+
`expected_missing` and `failed` are loud: the compiler prints a stderr
|
|
1547
|
+
advisory naming the reason. The compile still succeeds (exit 0) and the
|
|
1548
|
+
envelope is still written — degradation is named, never silent, and
|
|
1549
|
+
never fail-closed here.
|
|
1430
1550
|
- **Session binding.** The envelope records which harness session it
|
|
1431
1551
|
belongs to. The runtime hook — the only party that sees the harness
|
|
1432
1552
|
session id (it is not present in the command environment) — records a
|
|
@@ -1581,7 +1701,7 @@ the active envelope — `message_id` and `receiver` fields in the record
|
|
|
1581
1701
|
itself; filenames are never trusted, and the envelope's message id (pinned
|
|
1582
1702
|
to a safe-id grammar at compile time) never reaches a filesystem glob:
|
|
1583
1703
|
|
|
1584
|
-
- `result.final_state: done | error` — the lifecycle is over; the clear is
|
|
1704
|
+
- `result.final_state: done | error | cancelled` — the lifecycle is over; the clear is
|
|
1585
1705
|
allowed and the enforcement window closes from inside the session.
|
|
1586
1706
|
- `pending` or `paused` (or no matching record at all) — the clear is
|
|
1587
1707
|
denied: an open task keeps its envelope, and a checkpoint-paused task
|
|
@@ -1625,15 +1745,26 @@ grants nothing durable. The envelope itself stays immutable; only `scope`
|
|
|
1625
1745
|
|
|
1626
1746
|
### Enforcement recording
|
|
1627
1747
|
|
|
1628
|
-
The audit `result` block records `envelope_enforcement: hooks | none
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
`
|
|
1634
|
-
|
|
1635
|
-
`
|
|
1636
|
-
|
|
1748
|
+
The audit `result` block records `envelope_enforcement: hooks | none`,
|
|
1749
|
+
and it tells the same story as the envelope. The admission gate writes
|
|
1750
|
+
`none` at admission. A compile run with `--audit <admission-record>`
|
|
1751
|
+
stamps the record with the detected adapter state — under the audit
|
|
1752
|
+
lock, in one locked read, on a record carrying a `schema_version` and
|
|
1753
|
+
content-matched on `message_id` + `receiver` + `message_sha256` (an
|
|
1754
|
+
unbound record is left untouched and the compile warns): `hooks` for a
|
|
1755
|
+
`resolved` adapter, with no reason; otherwise `none` plus
|
|
1756
|
+
`envelope_enforcement_reason` naming the state —
|
|
1757
|
+
`adapter_unsupported` (a runtime with no adapter by design, `codex`
|
|
1758
|
+
today), `adapter_expected_missing` (an adapter-capable runtime whose
|
|
1759
|
+
console or registration did not resolve), or
|
|
1760
|
+
`adapter_detection_failed` (the runtime or a probe could not be
|
|
1761
|
+
determined). Degradation must never be silent: `none` always carries
|
|
1762
|
+
its reason — `public_visibility_admission_approved` for the
|
|
1763
|
+
admitted-public branch above, one of the adapter reasons for a compiled
|
|
1764
|
+
envelope — and `none` means pickup-gate-only enforcement whatever the
|
|
1765
|
+
reason. A record still reading a bare `none` after pickup establishes
|
|
1766
|
+
only that no compiler stamp was recorded — the compile ran without
|
|
1767
|
+
`--audit`, or never ran — never that the runtime is adapterless.
|
|
1637
1768
|
|
|
1638
1769
|
Enforcement boundary: hooks constrain every tool call inside the session,
|
|
1639
1770
|
including subagent tool calls, and fire before sandbox/permission
|
|
@@ -1838,6 +1969,7 @@ Audit `result.final_state` is limited to:
|
|
|
1838
1969
|
- `done` (terminal)
|
|
1839
1970
|
- `superseded` (terminal; see "Terminal finalization and audit integrity")
|
|
1840
1971
|
- `error` (terminal)
|
|
1972
|
+
- `cancelled` (terminal; admitted task stopped by the human or sender)
|
|
1841
1973
|
|
|
1842
1974
|
`result.completion_kind` is separately pinned to the evaluation-shape enum
|
|
1843
1975
|
above (see "Pinned completion_kind taxonomy"). Missing-profile messages that
|