oacp-cli 0.5.2__tar.gz → 0.5.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/.gitattributes +3 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/CHANGELOG.md +78 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/Makefile +3 -8
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/PKG-INFO +16 -19
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/README.md +15 -18
- oacp_cli-0.5.4/SECURITY.md +72 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/from-claude-p.md +0 -2
- oacp_cli-0.5.4/docs/guides/batch-verification.md +25 -0
- oacp_cli-0.5.4/docs/guides/command-migration.md +70 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/guides/doctor.md +2 -2
- oacp_cli-0.5.4/docs/guides/memory-cli-migration.md +43 -0
- oacp_cli-0.5.4/docs/guides/setup.md +148 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/guides/unified_skill_spec.md +21 -13
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/guides/versioning.md +38 -1
- oacp_cli-0.5.4/docs/guides/workspace-initialization.md +47 -0
- oacp_cli-0.5.4/docs/img/oacp-fleet-thread.png +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/agent_profiles.md +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/agent_safety_defaults.md +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/autonomy.md +388 -96
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/inbox_outbox.md +15 -21
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/mcp_integration.md +6 -4
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/message_signing.md +45 -6
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/multi_agent_shared_workspace.md +3 -2
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/packet_states.yaml +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/review_loop.md +69 -9
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/session_init.md +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/README.md +1 -1
- oacp_cli-0.5.4/oacp/cli.py +199 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/pyproject.toml +6 -7
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/_oacp_constants.py +72 -1
- oacp_cli-0.5.4/scripts/_oacp_yaml.py +53 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/add_agent.py +12 -23
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/agent_profile.py +5 -6
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/autonomy_gate.py +267 -33
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/claude_envelope_hook.py +2187 -96
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/codex_session_init.py +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/envelope_compiler.py +101 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/finalize_autonomy_record.py +434 -17
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/init_project_workspace.py +118 -63
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/message_signing.py +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/message_verify.py +82 -8
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/oacp_doctor.py +130 -7
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/oacp_inbox.py +28 -18
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/oacp_watch.py +24 -23
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/policy_signing.py +101 -23
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/record_autonomy_outcome.py +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/send_inbox_message.py +4 -22
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/setup_runtime.py +9 -0
- oacp_cli-0.5.4/scripts/trust_cli.py +748 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/trust_root.py +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/update_workspace.sh +47 -119
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/validate_agent_card.py +7 -13
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/validate_message.py +13 -43
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/claude/agents/role_agent.template.md +4 -3
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/findings_packet.template.yaml +3 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/runtime_capabilities.yaml +1 -1
- oacp_cli-0.5.4/tests/conformance/autonomy/expected/declared_reply_task_auto_accepts.yaml +24 -0
- oacp_cli-0.5.4/tests/conformance/autonomy/messages/declared_reply_task.yaml +21 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/README.md +3 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/expected_findings.yaml +3 -0
- oacp_cli-0.5.4/tests/conformance/autonomy/records/terminal_time_clear_precedes_pause.yaml +100 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/README.md +12 -12
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/body_schema/handoff__enforce.yaml +7 -7
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/body_schema/handoff__off.yaml +7 -7
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/body_schema/handoff__warn.yaml +7 -7
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/body_schema/handoff_complete__enforce.yaml +7 -7
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/body_schema/handoff_complete__off.yaml +7 -7
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/body_schema/handoff_complete__warn.yaml +7 -7
- oacp_cli-0.5.4/tests/test_audit_directory_warning.py +42 -0
- oacp_cli-0.5.4/tests/test_audit_example.py +122 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_autonomy_gate.py +414 -9
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_claude_envelope_hook.py +913 -3
- oacp_cli-0.5.4/tests/test_command_groups.py +158 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_envelope_compiler.py +126 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_finalize_autonomy_record.py +979 -0
- oacp_cli-0.5.4/tests/test_init_plan.py +119 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_intake_conformance.py +5 -8
- oacp_cli-0.5.4/tests/test_memory_shim.py +62 -0
- oacp_cli-0.5.4/tests/test_message_supersession.py +286 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_message_verify.py +25 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_oacp_cli.py +53 -117
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_oacp_constants.py +44 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_oacp_doctor.py +153 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_oacp_watch.py +85 -0
- oacp_cli-0.5.4/tests/test_oacp_yaml.py +151 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_package_content.py +17 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_policy_signing.py +28 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_readme_commands.py +2 -2
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_record_autonomy_outcome.py +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_send_inbox_message.py +9 -9
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_setup_runtime.py +26 -0
- oacp_cli-0.5.4/tests/test_trust_pin_script.py +478 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_trust_root.py +1 -1
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_update_workspace.py +117 -7
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_validate_message.py +7 -12
- oacp_cli-0.5.4/tests/test_verify_batch.py +152 -0
- oacp_cli-0.5.4/tests/test_version_convention.py +71 -0
- oacp_cli-0.5.4/tools/generate_audit_example.py +205 -0
- oacp_cli-0.5.2/SECURITY.md +0 -49
- oacp_cli-0.5.2/docs/guides/setup.md +0 -114
- oacp_cli-0.5.2/docs/img/oacp-fleet-thread.png +0 -0
- oacp_cli-0.5.2/oacp/cli.py +0 -264
- oacp_cli-0.5.2/scripts/check_quality_gate.py +0 -222
- oacp_cli-0.5.2/scripts/handoff_schema.py +0 -178
- oacp_cli-0.5.2/scripts/init_packet.sh +0 -82
- oacp_cli-0.5.2/scripts/trust_cli.py +0 -372
- oacp_cli-0.5.2/scripts/write_event.py +0 -275
- oacp_cli-0.5.2/templates/github_actions_quality_gate.yaml +0 -219
- oacp_cli-0.5.2/templates/handoff_packet.template.yaml +0 -27
- oacp_cli-0.5.2/templates/merge_decision.template.md +0 -32
- oacp_cli-0.5.2/templates/review_packet.template.md +0 -44
- oacp_cli-0.5.2/tests/test_handoff_schema.py +0 -134
- oacp_cli-0.5.2/tests/test_memory_shim.py +0 -135
- oacp_cli-0.5.2/tests/test_write_event.py +0 -146
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/.github/workflows/auto-estimate.yml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/.github/workflows/ci.yml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/.github/workflows/release.yml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/.gitignore +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/CONTRIBUTING.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/LICENSE +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/QUICKSTART.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/SPEC.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/guides/adoption.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/guides/memory-context.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/guides/prompt_caching.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/img/oacp-cli-demo.png +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/img/oacp-filesystem-tree.png +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/credential_scoping.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/dispatch_states.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/org_memory.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/runtime_capabilities.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/skills_manifest.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/docs/protocol/task_negotiation.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/decisions.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/recent.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/org-memory/rules.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/projects/parcel-api/memory/archive/2026-05-21-csv-export-timeouts.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/examples/quickstart/README.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/oacp/__init__.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/oacp/envelope_hook.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/_oacp_env.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/gen_readme_commands.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/key_cli.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/scripts/preflight.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/agent_card.template.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/agent_profile.template.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/agent_status.template.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/checkpoint.template.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/claude/rules/guardrail.template.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/guardrails/coding_standards.template.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/guardrails/safe_commands.template.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/guardrails/secrets_rules.template.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/inbox_message.template.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/manual_validation.template.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/receiver_config.template.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/roles/role_baseline.template.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/roles/role_definition.template.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/skills_manifest.template.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/templates/test_packet.template.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/README.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/reauth_conflict.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/reauth_reuse.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/audits/prior_generic_grant_addressed_types.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/audits/prior_generic_grant_approved.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/audits/prior_generic_grant_denied_later.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/audits/prior_generic_grant_denied_postmessage.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/audits/prior_thread_invocation.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/contradictory_credential_rotation_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/contradictory_dependency_install_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/contradictory_sensitive_auth_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/contradictory_sensitive_config_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/contradictory_sensitive_credentials_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/contradictory_sensitive_secret_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/declared_credential_rotation_granular_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/declared_dependency_install_granular_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/declared_external_default_branch_push_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/declared_merge_default_branch_push_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/default_envelope_credential_rotation_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/default_envelope_dependency_install_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/pause_classification_declared_capability.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/pause_classification_designed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/pause_classification_mixed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/pause_classification_undeclared.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/pause_classification_unplanned.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/profileless_credential_rotation_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/profileless_dependency_install_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_accepted_auto_continues.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_disabled_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_drift_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_expired_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_later_round_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_missing_approval_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_repeated_addressed_round_exceeded.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_revoke_before_processing_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/thread_grant_revoked_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/undeclared_credential_rotation_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/undeclared_dependency_install_hard_stops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/ledger_replay/corpus.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/contradictory_credential_rotation.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/contradictory_dependency_install.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/contradictory_sensitive_auth.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/contradictory_sensitive_config.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/contradictory_sensitive_credentials.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/contradictory_sensitive_secret.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/declaration_error_admission.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/declared_credential_rotation.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/declared_dependency_install.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/declared_external_default_branch_push.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/declared_merge_default_branch_push.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/default_envelope_credential_rotation.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/default_envelope_dependency_install.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/pause_classification_declared_capability.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/pause_classification_designed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/pause_classification_mixed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/pause_classification_undeclared.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/pause_classification_unplanned.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/profileless_credential_rotation.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/profileless_dependency_install.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/thread_grant_addressed_round3.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/thread_grant_effect_expansion.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/thread_grant_request.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/thread_grant_round4.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/thread_grant_unapproved.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/undeclared_credential_rotation.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/undeclared_dependency_install.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/admission_outcome_replaced_by_clear.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/breached_empty_fields.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/cancelled_missing_actor.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/clean_terminal_cancelled.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/clean_terminal_done.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/declined_checkpoint_marked_done.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/duplicate_live_a.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/duplicate_live_b.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/invalid_live_clock_adjustment.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/invalid_pause_intervals.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/legacy_born_done_unfinalized.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/pause_and_clock_adjustment.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/serialized_wave_item.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/superseded_missing_successor.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/superseded_successor_live.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/terminal_time_pause_after_completion.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/terminal_time_pause_cleared.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/two_cleared_pauses.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/two_clock_adjustments.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/two_pauses_first_answer_human_outcome.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/autonomy/thread_grants/corpus.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/README.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/configs/malformed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/adapter_detection_failed.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/adapter_expected_missing.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/expected/unsupported_runtime_codex.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/body_schema.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/configs/enforce.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/configs/off.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/configs/warn.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/memory_layout/README.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/memory_layout/canonical_memory_gitignore.txt +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/memory_layout/layout.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/README.md +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/keys/alice.json +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/keys/bob.json +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/keys/carol.json +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/conformance/signing/regen_fixtures.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_add_agent.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_agent_profile.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_audit_corpus_boundary.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_audit_record_conformance.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_autonomy_conformance_fixtures.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_autonomy_ledger_replay.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_codex_session_init.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_default_envelope.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_envelope_conformance_fixtures.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_envelope_public_admission.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_expected_pauses.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_github_workflows.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_inbox_verify.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_init_project_workspace.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_memory_layout_fixture.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_message_signing.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_oacp_env.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_oacp_inbox.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_packaged_status_template.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_preflight.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_review_loop.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_signing_conformance.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_spec_version.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_validate_agent_card.py +0 -0
- {oacp_cli-0.5.2 → oacp_cli-0.5.4}/tests/test_workspace_discovery.py +0 -0
|
@@ -9,3 +9,6 @@ tests/conformance/signing/messages/** -text
|
|
|
9
9
|
tests/conformance/signing/messages/tamper_crlf_trailer.yaml whitespace=-trailing-space
|
|
10
10
|
tests/conformance/signing/messages/tamper_trailing_space.yaml whitespace=-trailing-space
|
|
11
11
|
tests/conformance/signing/messages/tamper_trailing_blank_line.yaml whitespace=-blank-at-eof
|
|
12
|
+
|
|
13
|
+
# Not part of source exports; the sdist excludes it in pyproject.toml.
|
|
14
|
+
tests/dev_only export-ignore
|
|
@@ -7,6 +7,82 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.5.4] - 2026-10-27
|
|
11
|
+
|
|
12
|
+
Scripts run under an envelope by sha256 pin only, and the Claude envelope hook judges more shell shapes instead of asking on them or passing them unjudged.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Receiver config `envelope.trusted_scripts` pins the scripts the envelope hook may run ([config](docs/protocol/autonomy.md#receiver-config)).
|
|
17
|
+
- `oacp trust pin-script` records a script's pin and re-signs the receiver config ([signing](docs/protocol/message_signing.md#policy-file-signing)).
|
|
18
|
+
- `oacp doctor --project <name>` reports malformed, missing and stale script pins ([config](docs/protocol/autonomy.md#receiver-config)).
|
|
19
|
+
- The envelope hook logs asks and denies to `envelope_decisions.jsonl` ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- The envelope hook runs a pinned script and asks on an unpinned one ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
24
|
+
- The envelope hook judges an App-token `gh` chain by its final command ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
25
|
+
- The envelope hook passes more read-only shell forms as reads ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
26
|
+
- The envelope hook stops denying a destructive word in a search pattern ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
27
|
+
- The envelope hook allows `--attach-audit` stamps on the task's record ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
28
|
+
- `oacp verify --attach-audit` refuses another message's record ([spec](docs/protocol/message_signing.md#receiver-audit-stamping---attach-audit)).
|
|
29
|
+
- The finalizer refuses an uncovered `--realized` grant-only effect ([contract](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
|
|
30
|
+
- Audit sweeps report the legacy work-clock advisory as one line ([validation](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- `oacp trust sign-policy` locks the policy and keeps it whole when a run fails ([signing](docs/protocol/message_signing.md#policy-file-signing)).
|
|
35
|
+
- The envelope hook judges commands nested in shell compound commands ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
36
|
+
- The envelope hook asks on a program name built by shell expansion ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
37
|
+
- The envelope hook judges `/usr/bin/env gh …` like `env gh …` ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
38
|
+
|
|
39
|
+
## [0.5.3] - 2026-10-20
|
|
40
|
+
|
|
41
|
+
Kernel commands regroup under `agent`, `trust`, and `autonomy`, and the retired memory, packet, and findings surfaces leave the kernel.
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- Custom audit directories outside the expected layout draw a warning ([guide](docs/guides/command-migration.md#audit-directory-diagnostics)).
|
|
46
|
+
- Message verification streams verdicts for paths supplied on standard input ([guide](docs/guides/batch-verification.md)).
|
|
47
|
+
- Admission and finalization stamp the serving model and effort ([contract](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
|
|
48
|
+
- Task profiles may declare `sends_oacp_reply` for the completion reply ([contract](docs/protocol/autonomy.md#message-fields)).
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- **Breaking:** Agent, key, and audit-writer commands move under `agent`, `trust`, and `autonomy` ([migration](docs/guides/command-migration.md)).
|
|
53
|
+
- **Breaking:** Workspace initialization refuses existing roots and offers a write-free plan ([migration](docs/guides/workspace-initialization.md)).
|
|
54
|
+
- Protocol contract stamp `spec_version` moves to `0.5.3` ([contract version](docs/protocol/autonomy.md#contract-version)).
|
|
55
|
+
- Review verdicts name the head they bind to in `validated_head` ([spec](docs/protocol/review_loop.md#message-schemas)).
|
|
56
|
+
- Review rounds add `max_rounds`, `withheld_side_effects`, `human_direction`, supersession ([spec](docs/protocol/review_loop.md#message-schemas)).
|
|
57
|
+
- A review round that expects a GitHub action must declare `side_effects` ([spec](docs/protocol/review_loop.md#message-schemas)).
|
|
58
|
+
- `SECURITY.md` names the same-user forgery limit of message signing ([policy](SECURITY.md#local-forgery-the-same-user-threat-model)).
|
|
59
|
+
|
|
60
|
+
### Removed
|
|
61
|
+
|
|
62
|
+
- Packet initialization and the packet and handoff templates ([migration](docs/guides/command-migration.md#packet-and-handoff-templates)).
|
|
63
|
+
- The findings evaluator and quality gate; workflows own their validators ([migration](docs/guides/command-migration.md#workflow-validators)).
|
|
64
|
+
- Handoff body-schema checks and advisories from message validation and admission ([boundary](docs/protocol/inbox_outbox.md#validation-boundary)).
|
|
65
|
+
- The `oacp memory` and `oacp org-memory` shims; call the memory tool directly ([migration](docs/guides/memory-cli-migration.md)).
|
|
66
|
+
- The `oacp write-event` shim and bundled event writer; use `agent-memory event write` ([migration](docs/guides/memory-cli-migration.md)).
|
|
67
|
+
- The `oacp retention` advisory command ([migration](docs/guides/memory-cli-migration.md#retention)).
|
|
68
|
+
|
|
69
|
+
### Fixed
|
|
70
|
+
|
|
71
|
+
- Never-admitted reviews close on replacement evidence ([contract](docs/protocol/autonomy.md#closing-a-sender-superseded-never-admitted-review)).
|
|
72
|
+
- Workspace updates preserve the existing agent roster ([layout](scripts/_oacp_constants.py)).
|
|
73
|
+
- Inbox and watch text output keeps untrusted values on a bounded, terminal-safe line ([renderers](scripts/oacp_inbox.py)).
|
|
74
|
+
- A scoped re-authorization decided before its pause clears it at the pause stamp ([contract](docs/protocol/autonomy.md#consumption)).
|
|
75
|
+
- A stored clear stamped before its pause reads as unanswered ([contract](docs/protocol/autonomy.md#threshold-exceeded-checkpoint)).
|
|
76
|
+
- `sends_oacp_reply_only: true` covers its own reply without a checkpoint pause ([contract](docs/protocol/autonomy.md#threshold-exceeded-checkpoint)).
|
|
77
|
+
- A breaching `--replace` on a closed record fails closed ([contract](docs/protocol/autonomy.md#terminal-finalization-and-audit-integrity)).
|
|
78
|
+
- The envelope hook treats `gh search` as a read ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
79
|
+
- The envelope hook exempts single-pipeline sandboxed `$TMPDIR` writes ([adapter](docs/protocol/autonomy.md#delivery-static-shim-dynamic-envelope)).
|
|
80
|
+
- The envelope hook no longer counts quoted redirect characters as file writes ([classifier](scripts/claude_envelope_hook.py)).
|
|
81
|
+
- The envelope hook asks for review on unsupported quoting, shell comments, and ambiguous heredocs ([classifier](scripts/claude_envelope_hook.py)).
|
|
82
|
+
- The envelope hook classifies mutations after command-substitution environment assignments ([classifier](scripts/claude_envelope_hook.py)).
|
|
83
|
+
- The envelope hook permits read-only message verification while retaining review for write modes ([classifier](scripts/claude_envelope_hook.py)).
|
|
84
|
+
- `oacp setup claude` writes an agent file Claude Code loads, named after the project ([template](templates/claude/agents/role_agent.template.md)).
|
|
85
|
+
|
|
10
86
|
## [0.5.2] - 2026-09-15
|
|
11
87
|
|
|
12
88
|
### Added
|
|
@@ -912,6 +988,8 @@ The central debrief store is the headline change: every agent's full end-of-sess
|
|
|
912
988
|
- Checkout step in github-release workflow job (#19)
|
|
913
989
|
- Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
|
|
914
990
|
|
|
991
|
+
[0.5.4]: https://github.com/kiloloop/oacp/compare/v0.5.3...v0.5.4
|
|
992
|
+
[0.5.3]: https://github.com/kiloloop/oacp/compare/v0.5.2...v0.5.3
|
|
915
993
|
[0.5.2]: https://github.com/kiloloop/oacp/compare/v0.5.1...v0.5.2
|
|
916
994
|
[0.5.1]: https://github.com/kiloloop/oacp/compare/v0.5.0...v0.5.1
|
|
917
995
|
[0.5.0]: https://github.com/kiloloop/oacp/compare/v0.4.6...v0.5.0
|
|
@@ -16,7 +16,7 @@ endif
|
|
|
16
16
|
|
|
17
17
|
# ── Targets ──────────────────────────────────────────────────────────────
|
|
18
18
|
|
|
19
|
-
.PHONY: help update test docs validate validate-msg validate-card send
|
|
19
|
+
.PHONY: help update test docs validate validate-msg validate-card send preflight doctor
|
|
20
20
|
|
|
21
21
|
help: ## Show available targets (default)
|
|
22
22
|
@echo "OACP — task runner"
|
|
@@ -32,8 +32,9 @@ update: _require-project ## Sync existing workspace with latest structure
|
|
|
32
32
|
test: ## Run all tests
|
|
33
33
|
python3 -m pytest $(SCRIPTS_DIR)/../tests -v $(ARGS)
|
|
34
34
|
|
|
35
|
-
docs: ## Regenerate the README command table
|
|
35
|
+
docs: ## Regenerate the README command table and autonomy audit example
|
|
36
36
|
python3 $(SCRIPTS_DIR)/gen_readme_commands.py --write
|
|
37
|
+
python3 $(SCRIPTS_DIR)/../tools/generate_audit_example.py --write
|
|
37
38
|
|
|
38
39
|
validate-msg: ## Validate inbox messages
|
|
39
40
|
python3 $(SCRIPTS_DIR)/validate_message.py $(ARGS)
|
|
@@ -51,9 +52,3 @@ doctor: ## Check environment and workspace health
|
|
|
51
52
|
|
|
52
53
|
send: _require-project ## Send an inbox message
|
|
53
54
|
python3 $(SCRIPTS_DIR)/send_inbox_message.py $(PROJECT) $(ARGS)
|
|
54
|
-
|
|
55
|
-
quality: ## Run quality gate check
|
|
56
|
-
python3 $(SCRIPTS_DIR)/check_quality_gate.py $(ARGS)
|
|
57
|
-
|
|
58
|
-
packet: _require-project ## Create a review/findings/merge packet
|
|
59
|
-
bash $(SCRIPTS_DIR)/init_packet.sh $(PROJECT) $(ARGS)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: oacp-cli
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.4
|
|
4
4
|
Summary: Open Agent Coordination Protocol CLI for file-based multi-agent workflows
|
|
5
5
|
Project-URL: Homepage, https://github.com/kiloloop/oacp
|
|
6
6
|
Project-URL: Repository, https://github.com/kiloloop/oacp
|
|
@@ -33,7 +33,6 @@ Description-Content-Type: text/markdown
|
|
|
33
33
|
[](https://claude.ai/code)
|
|
34
34
|
[](https://openai.com/index/codex/)
|
|
35
35
|
[](https://cursor.com/)
|
|
36
|
-
[](https://github.com/kiloloop/oacp/pulls)
|
|
37
36
|
|
|
38
37
|
> Coordinate agents *without* the chaos.
|
|
39
38
|
|
|
@@ -56,7 +55,7 @@ The CLI ships structured tasks between agents and lets you watch the conversatio
|
|
|
56
55
|
## Live agent fleet
|
|
57
56
|
|
|
58
57
|
<p align="center">
|
|
59
|
-
<img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-fleet-thread.png" alt="claude / codex
|
|
58
|
+
<img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-fleet-thread.png" alt="claude / codex fleet with PR #42 review thread" width="650" />
|
|
60
59
|
</p>
|
|
61
60
|
|
|
62
61
|
Every multi-agent thread is a sequence of typed messages — `review_request`, `review_feedback`, `review_addressed`, `review_lgtm` — with explicit quality gates.
|
|
@@ -69,7 +68,6 @@ PROJECT · my-app ● live
|
|
|
69
68
|
|
|
70
69
|
C claude code drafting PR #42
|
|
71
70
|
X codex cli reviewing
|
|
72
|
-
G gemini api idle
|
|
73
71
|
|
|
74
72
|
claude → review_request "auth refactor" [codex]
|
|
75
73
|
codex → review_feedback 2 minor, 0 blocking [claude]
|
|
@@ -134,7 +132,7 @@ oacp send my-project --from alice --to bob --type task_request \
|
|
|
134
132
|
```
|
|
135
133
|
|
|
136
134
|
By default, `oacp init my-project` creates `claude`, `codex`, and `cursor`
|
|
137
|
-
agents. Pass `--agents` to
|
|
135
|
+
agents. Pass `--agents` to choose your own agent names.
|
|
138
136
|
|
|
139
137
|
When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough. Or try the [5-minute quickstart →](examples/quickstart/) to send your first message to a real AI agent.
|
|
140
138
|
|
|
@@ -256,29 +254,28 @@ uv tool install .
|
|
|
256
254
|
<!-- BEGIN GENERATED: oacp commands — do not edit by hand; run `make docs` -->
|
|
257
255
|
| Command | Description |
|
|
258
256
|
|---------|-------------|
|
|
259
|
-
| `oacp init` | Create a project workspace
|
|
260
|
-
| `oacp
|
|
261
|
-
| `oacp agent` | Manage global agent profiles (init, sync, show, list) |
|
|
257
|
+
| `oacp init` | Create a new project workspace; preview with --dry-run |
|
|
258
|
+
| `oacp agent` | Add project agents and manage global profiles |
|
|
262
259
|
| `oacp inbox` | List pending inbox messages |
|
|
263
260
|
| `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
|
|
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.3 |
|
|
266
261
|
| `oacp session-init` | Verify Codex startup inputs and emit SessionStart context |
|
|
267
262
|
| `oacp setup` | Generate runtime-specific config files in a repo |
|
|
268
263
|
| `oacp send` | Send a protocol-compliant inbox message |
|
|
269
|
-
| `oacp
|
|
270
|
-
| `oacp
|
|
271
|
-
| `oacp org-memory` | Run agent-memory org (init); shim until 0.5.3 |
|
|
272
|
-
| `oacp write-event` | Write an event to org-memory/events/ |
|
|
273
|
-
| `oacp autonomy-outcome` | Record a human approval/decline in an autonomy audit |
|
|
274
|
-
| `oacp autonomy-finalize` | Record checkpoints and terminal states in an autonomy audit |
|
|
264
|
+
| `oacp trust` | Manage local keys and project trust (catalog + pins) |
|
|
265
|
+
| `oacp autonomy` | Record human outcomes, checkpoints, and terminal audit states |
|
|
275
266
|
| `oacp envelope` | Compile, show, or clear the runtime envelope for a task |
|
|
276
267
|
| `oacp doctor` | Check environment and workspace health |
|
|
277
268
|
| `oacp validate` | Validate an inbox/outbox YAML message |
|
|
278
269
|
| `oacp verify` | Verify a message's auth trailer against receiver-local pins |
|
|
279
270
|
<!-- END GENERATED: oacp commands -->
|
|
280
271
|
|
|
281
|
-
`oacp --version` prints the installed version.
|
|
272
|
+
`oacp --version` prints the installed version. Related operations now use
|
|
273
|
+
`agent add`, `trust keygen|keys`, and `autonomy outcome|finalize`; see the
|
|
274
|
+
[command migration guide](docs/guides/command-migration.md).
|
|
275
|
+
|
|
276
|
+
Memory operations use [agent-memory](https://github.com/kiloloop/agent-memory)
|
|
277
|
+
directly. The `memory`, `org-memory`, `write-event`, and `retention` commands
|
|
278
|
+
were removed in 0.5.3; see the [migration guide](docs/guides/memory-cli-migration.md).
|
|
282
279
|
|
|
283
280
|
<details>
|
|
284
281
|
<summary>Key flags</summary>
|
|
@@ -289,8 +286,6 @@ uv tool install .
|
|
|
289
286
|
|
|
290
287
|
**`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
|
|
291
288
|
|
|
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.2, removed in 0.5.3; call `agent-memory` directly.
|
|
293
|
-
|
|
294
289
|
</details>
|
|
295
290
|
|
|
296
291
|
If `OACP_HOME` is unset, workspace commands default to `~/oacp`.
|
|
@@ -389,6 +384,8 @@ make preflight
|
|
|
389
384
|
|
|
390
385
|
## Documentation
|
|
391
386
|
|
|
387
|
+
- [Batch verification](docs/guides/batch-verification.md) — Stream message verdicts from stdin paths
|
|
388
|
+
|
|
392
389
|
- [SPEC.md](SPEC.md) — Full protocol specification
|
|
393
390
|
- [examples/quickstart/](examples/quickstart/) — Hands-on tutorial: send a message to an AI agent
|
|
394
391
|
- [QUICKSTART.md](QUICKSTART.md) — CLI reference walkthrough
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
[](https://claude.ai/code)
|
|
6
6
|
[](https://openai.com/index/codex/)
|
|
7
7
|
[](https://cursor.com/)
|
|
8
|
-
[](https://github.com/kiloloop/oacp/pulls)
|
|
9
8
|
|
|
10
9
|
> Coordinate agents *without* the chaos.
|
|
11
10
|
|
|
@@ -28,7 +27,7 @@ The CLI ships structured tasks between agents and lets you watch the conversatio
|
|
|
28
27
|
## Live agent fleet
|
|
29
28
|
|
|
30
29
|
<p align="center">
|
|
31
|
-
<img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-fleet-thread.png" alt="claude / codex
|
|
30
|
+
<img src="https://raw.githubusercontent.com/kiloloop/oacp/main/docs/img/oacp-fleet-thread.png" alt="claude / codex fleet with PR #42 review thread" width="650" />
|
|
32
31
|
</p>
|
|
33
32
|
|
|
34
33
|
Every multi-agent thread is a sequence of typed messages — `review_request`, `review_feedback`, `review_addressed`, `review_lgtm` — with explicit quality gates.
|
|
@@ -41,7 +40,6 @@ PROJECT · my-app ● live
|
|
|
41
40
|
|
|
42
41
|
C claude code drafting PR #42
|
|
43
42
|
X codex cli reviewing
|
|
44
|
-
G gemini api idle
|
|
45
43
|
|
|
46
44
|
claude → review_request "auth refactor" [codex]
|
|
47
45
|
codex → review_feedback 2 minor, 0 blocking [claude]
|
|
@@ -106,7 +104,7 @@ oacp send my-project --from alice --to bob --type task_request \
|
|
|
106
104
|
```
|
|
107
105
|
|
|
108
106
|
By default, `oacp init my-project` creates `claude`, `codex`, and `cursor`
|
|
109
|
-
agents. Pass `--agents` to
|
|
107
|
+
agents. Pass `--agents` to choose your own agent names.
|
|
110
108
|
|
|
111
109
|
When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough. Or try the [5-minute quickstart →](examples/quickstart/) to send your first message to a real AI agent.
|
|
112
110
|
|
|
@@ -228,29 +226,28 @@ uv tool install .
|
|
|
228
226
|
<!-- BEGIN GENERATED: oacp commands — do not edit by hand; run `make docs` -->
|
|
229
227
|
| Command | Description |
|
|
230
228
|
|---------|-------------|
|
|
231
|
-
| `oacp init` | Create a project workspace
|
|
232
|
-
| `oacp
|
|
233
|
-
| `oacp agent` | Manage global agent profiles (init, sync, show, list) |
|
|
229
|
+
| `oacp init` | Create a new project workspace; preview with --dry-run |
|
|
230
|
+
| `oacp agent` | Add project agents and manage global profiles |
|
|
234
231
|
| `oacp inbox` | List pending inbox messages |
|
|
235
232
|
| `oacp watch` | Emit inbox delta events for Monitor-friendly polling |
|
|
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.3 |
|
|
238
233
|
| `oacp session-init` | Verify Codex startup inputs and emit SessionStart context |
|
|
239
234
|
| `oacp setup` | Generate runtime-specific config files in a repo |
|
|
240
235
|
| `oacp send` | Send a protocol-compliant inbox message |
|
|
241
|
-
| `oacp
|
|
242
|
-
| `oacp
|
|
243
|
-
| `oacp org-memory` | Run agent-memory org (init); shim until 0.5.3 |
|
|
244
|
-
| `oacp write-event` | Write an event to org-memory/events/ |
|
|
245
|
-
| `oacp autonomy-outcome` | Record a human approval/decline in an autonomy audit |
|
|
246
|
-
| `oacp autonomy-finalize` | Record checkpoints and terminal states in an autonomy audit |
|
|
236
|
+
| `oacp trust` | Manage local keys and project trust (catalog + pins) |
|
|
237
|
+
| `oacp autonomy` | Record human outcomes, checkpoints, and terminal audit states |
|
|
247
238
|
| `oacp envelope` | Compile, show, or clear the runtime envelope for a task |
|
|
248
239
|
| `oacp doctor` | Check environment and workspace health |
|
|
249
240
|
| `oacp validate` | Validate an inbox/outbox YAML message |
|
|
250
241
|
| `oacp verify` | Verify a message's auth trailer against receiver-local pins |
|
|
251
242
|
<!-- END GENERATED: oacp commands -->
|
|
252
243
|
|
|
253
|
-
`oacp --version` prints the installed version.
|
|
244
|
+
`oacp --version` prints the installed version. Related operations now use
|
|
245
|
+
`agent add`, `trust keygen|keys`, and `autonomy outcome|finalize`; see the
|
|
246
|
+
[command migration guide](docs/guides/command-migration.md).
|
|
247
|
+
|
|
248
|
+
Memory operations use [agent-memory](https://github.com/kiloloop/agent-memory)
|
|
249
|
+
directly. The `memory`, `org-memory`, `write-event`, and `retention` commands
|
|
250
|
+
were removed in 0.5.3; see the [migration guide](docs/guides/memory-cli-migration.md).
|
|
254
251
|
|
|
255
252
|
<details>
|
|
256
253
|
<summary>Key flags</summary>
|
|
@@ -261,8 +258,6 @@ uv tool install .
|
|
|
261
258
|
|
|
262
259
|
**`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
|
|
263
260
|
|
|
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.2, removed in 0.5.3; call `agent-memory` directly.
|
|
265
|
-
|
|
266
261
|
</details>
|
|
267
262
|
|
|
268
263
|
If `OACP_HOME` is unset, workspace commands default to `~/oacp`.
|
|
@@ -361,6 +356,8 @@ make preflight
|
|
|
361
356
|
|
|
362
357
|
## Documentation
|
|
363
358
|
|
|
359
|
+
- [Batch verification](docs/guides/batch-verification.md) — Stream message verdicts from stdin paths
|
|
360
|
+
|
|
364
361
|
- [SPEC.md](SPEC.md) — Full protocol specification
|
|
365
362
|
- [examples/quickstart/](examples/quickstart/) — Hands-on tutorial: send a message to an AI agent
|
|
366
363
|
- [QUICKSTART.md](QUICKSTART.md) — CLI reference walkthrough
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Reporting a Vulnerability
|
|
4
|
+
|
|
5
|
+
If you discover a security vulnerability in OACP, please report it responsibly.
|
|
6
|
+
|
|
7
|
+
**Do not open a public GitHub issue for security vulnerabilities.**
|
|
8
|
+
|
|
9
|
+
Instead, use [GitHub's private vulnerability reporting](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability) on the affected repository when it is enabled. If private reporting is unavailable, use the repository's documented private security contact or another non-public maintainer channel.
|
|
10
|
+
|
|
11
|
+
## Response Timeline
|
|
12
|
+
|
|
13
|
+
- **Acknowledgment**: Within 48 hours of receiving your report.
|
|
14
|
+
- **Assessment**: We will evaluate the severity and impact within 7 days.
|
|
15
|
+
- **Fix**: Critical vulnerabilities will be patched within 30 days. We will coordinate disclosure timing with you.
|
|
16
|
+
|
|
17
|
+
## Supported Versions
|
|
18
|
+
|
|
19
|
+
| Version | Supported |
|
|
20
|
+
|---------|-----------|
|
|
21
|
+
| 0.x | Yes |
|
|
22
|
+
|
|
23
|
+
## Scope
|
|
24
|
+
|
|
25
|
+
OACP is a file-based coordination protocol. Security considerations include:
|
|
26
|
+
|
|
27
|
+
- **Message authenticity** — Messages carry an Ed25519 signature trailer (`auth:`) that receivers verify against pinned signer identities (see `docs/protocol/message_signing.md`). Message bodies are not encrypted. Report any case where a receiver in `enforce` mode processes a message that is unsigned, fails verification, or comes from a signer it has not pinned.
|
|
28
|
+
- **Credential scoping** — The protocol defines credential boundaries per agent (see `docs/protocol/credential_scoping.md`). Report issues where these boundaries can be bypassed.
|
|
29
|
+
- **Script injection** — Report any case where user-controlled input in message fields can lead to command injection via OACP scripts.
|
|
30
|
+
- **Path traversal** — Report any case where message fields or script arguments can read or write files outside the intended directories.
|
|
31
|
+
|
|
32
|
+
### Local forgery: the same-user threat model
|
|
33
|
+
|
|
34
|
+
Signing keys live under `$OACP_HOME/keys/` as `0600` files in `0700`
|
|
35
|
+
directories, per machine, and are never synced. Every agent runtime on a
|
|
36
|
+
host runs as the same OS user by default, so **any process running as that
|
|
37
|
+
user can read every local agent's private key and produce a valid
|
|
38
|
+
signature as any local agent.** The same process can also write directly
|
|
39
|
+
into any inbox. A shell-capable local agent, a tool with filesystem access,
|
|
40
|
+
or a compromised session can therefore forge a message from any identity on
|
|
41
|
+
that host, and the receiver's verification will pass.
|
|
42
|
+
|
|
43
|
+
Signing is still worth having. It gives:
|
|
44
|
+
|
|
45
|
+
- **Tamper evidence** — a message altered after signing fails verification.
|
|
46
|
+
- **Cross-host attribution** — a peer on another machine can verify that a
|
|
47
|
+
message came from a key enrolled on this one, and a key cannot be used from
|
|
48
|
+
a host it was never copied to.
|
|
49
|
+
- **Signer control** — receivers accept only pinned keys, and a revoked or
|
|
50
|
+
unknown key is rejected under `enforce` mode.
|
|
51
|
+
- **An auditable trail** for honest agents, stamped onto each receiver's
|
|
52
|
+
audit record at intake.
|
|
53
|
+
|
|
54
|
+
It does not give **same-host anti-impersonation**. A verified signature
|
|
55
|
+
proves that the message was signed with a given key, not which local agent
|
|
56
|
+
held it at the time. On a shared host, treat both the `from:` field and a
|
|
57
|
+
verified signature as **provenance within the trust boundary of the OS
|
|
58
|
+
user**, not as proof of authorship by one agent over another.
|
|
59
|
+
|
|
60
|
+
Closing the gap is an isolation decision, not a protocol change: one OS user
|
|
61
|
+
per agent with its key directory owned by that user, containers, or separate
|
|
62
|
+
hosts with enforced access controls. Hardware- or keychain-backed signers are
|
|
63
|
+
planned behind the same key-id seam and would protect the key material from
|
|
64
|
+
copying, but they do not isolate a shared filesystem or process space.
|
|
65
|
+
|
|
66
|
+
Same-user forgery on a shared host is a documented limitation, not a
|
|
67
|
+
vulnerability; please do not report it as one. Do report any case where a
|
|
68
|
+
receiver accepts a message that should have failed verification.
|
|
69
|
+
|
|
70
|
+
## Acknowledgments
|
|
71
|
+
|
|
72
|
+
We appreciate responsible disclosure and will credit reporters in release notes (unless you prefer to remain anonymous).
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
`claude -p` is how most people first script a Claude agent. It works — but if you run agents in automation, it's worth asking a question the one-liner never forces: **why is the agent headless and synchronous in the first place?**
|
|
4
4
|
|
|
5
|
-
(A pricing footnote, since earlier versions of this page led with it: Anthropic explored moving programmatic usage — `claude -p`, the Agent SDK, Claude Code GitHub Actions — onto a separate metered credit, but paused that change before it took effect; per the June 15 announcement no such credit exists, subscription limits are unchanged, and advance notice is promised before any future version.)
|
|
6
|
-
|
|
7
5
|
This guide is built to be handed to your agent. Read the first half for the *why*; paste the setup block into your Claude Code session for the *how*.
|
|
8
6
|
|
|
9
7
|
> **Setup is a one-time ~5 minutes. Every task after that is one `oacp send` — async, non-blocking, observable.**
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Streaming message verification
|
|
2
|
+
|
|
3
|
+
`oacp verify --batch --project <project> --receiver <receiver> --oacp-dir <home>`
|
|
4
|
+
reads one message path per stdin line. Each output line is the existing JSON
|
|
5
|
+
verification object plus `path`, emitted in input order and flushed immediately.
|
|
6
|
+
`--json` is optional in batch mode. Paths containing spaces are preserved; newline
|
|
7
|
+
characters cannot occur within a path. The final input line need not end in a newline.
|
|
8
|
+
|
|
9
|
+
One invocation loads one receiver pin-policy snapshot and uses it for the entire
|
|
10
|
+
stream. Start a new invocation after changing trust policy. Verification retains
|
|
11
|
+
the existing bounded-byte, signature, sender-binding and payload-digest rules;
|
|
12
|
+
batch output supplies annotations, not intake authority.
|
|
13
|
+
|
|
14
|
+
Exit status is zero when the complete stream was processed, even if individual
|
|
15
|
+
verdicts are invalid, untrusted, revoked or unsupported. Inspect each `status`.
|
|
16
|
+
Unreadable or non-regular files (including directories and FIFOs) and empty
|
|
17
|
+
input lines produce `invalid` with `read_error: true`, a null payload digest, and
|
|
18
|
+
a read-error reason. The additive `read_error` field distinguishes these rows
|
|
19
|
+
from invalid message content; other rows omit it. Invalid arguments or stream I/O/decoding failures
|
|
20
|
+
exit nonzero; output emitted before a stream failure remains valid partial output.
|
|
21
|
+
An empty stream succeeds without output.
|
|
22
|
+
|
|
23
|
+
Batch mode cannot combine with a positional message file, `--quarantine` or
|
|
24
|
+
`--attach-audit`. Those effects retain their single-message interface. Existing
|
|
25
|
+
single-message output and exit codes are unchanged.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Command namespaces in 0.5.3
|
|
2
|
+
|
|
3
|
+
OACP 0.5.3 groups related operations under `agent`, `trust`, and `autonomy`.
|
|
4
|
+
Update callers before upgrading; the previous root commands now return an
|
|
5
|
+
unknown-command error with exit code 2 and have no aliases.
|
|
6
|
+
|
|
7
|
+
| Previous command | Replacement |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `oacp add-agent <project> <agent> ...` | `oacp agent add <project> <agent> ...` |
|
|
10
|
+
| `oacp key gen ...` | `oacp trust keygen ...` |
|
|
11
|
+
| `oacp key list ...` | `oacp trust keys ...` |
|
|
12
|
+
| `oacp autonomy-outcome <audit> ...` | `oacp autonomy outcome <audit> ...` |
|
|
13
|
+
| `oacp autonomy-finalize <audit> ...` | `oacp autonomy finalize <audit> ...` |
|
|
14
|
+
|
|
15
|
+
Arguments, output, and operation exit codes stay with the existing
|
|
16
|
+
implementations. The global agent registry and `agent init|sync|show|list`
|
|
17
|
+
remain available. `trust keygen` and `trust keys` manage local keys without
|
|
18
|
+
requiring a project; `trust list` continues to list project catalog entries
|
|
19
|
+
and receiver pins.
|
|
20
|
+
|
|
21
|
+
For `agent` and `trust`, `--oacp-dir <path>` or `--oacp-dir=<path>` can appear
|
|
22
|
+
before or after the subcommand; the last occurrence wins. Leaf help works as
|
|
23
|
+
`oacp agent add --help` or `oacp help agent add` (likewise for `trust keygen`
|
|
24
|
+
and `autonomy finalize`).
|
|
25
|
+
|
|
26
|
+
Stored audit receipts retain the immutable
|
|
27
|
+
`result.finalizer.name: oacp autonomy-finalize` discriminator. It identifies
|
|
28
|
+
the writer format and is independent of the current command spelling.
|
|
29
|
+
|
|
30
|
+
The separate [memory command migration](memory-cli-migration.md) covers the
|
|
31
|
+
removed memory, event-writing, and retention shims. The root command list now
|
|
32
|
+
contains 13 entries, including `session-init` and `setup`.
|
|
33
|
+
|
|
34
|
+
## Workflow validators
|
|
35
|
+
|
|
36
|
+
The bundled `scripts/check_quality_gate.py`, `make quality` target, and
|
|
37
|
+
`templates/github_actions_quality_gate.yaml` have been removed. Configure the owning review
|
|
38
|
+
workflow's versioned validator in skills or CI before upgrading copied
|
|
39
|
+
callers. The workflow owns its findings-status policy and must return a typed
|
|
40
|
+
failure before side effects when validation fails.
|
|
41
|
+
|
|
42
|
+
Handoff body schemas likewise belong to their owning workflow. The kernel no
|
|
43
|
+
longer emits body-schema advisories; required envelope fields, body type and
|
|
44
|
+
size limits, signing, and admission checks keep their existing behavior. See
|
|
45
|
+
the [validation boundary](../protocol/inbox_outbox.md#validation-boundary).
|
|
46
|
+
|
|
47
|
+
## Audit directory diagnostics
|
|
48
|
+
|
|
49
|
+
The autonomy evaluator warns on stderr when `--audit-dir` does not end in
|
|
50
|
+
`autonomy_decisions`. The supplied location remains valid and the decision and
|
|
51
|
+
JSON output are unchanged. Workspace tools continue scanning the canonical
|
|
52
|
+
`agents/<receiver>/audit/autonomy_decisions/` directory.
|
|
53
|
+
|
|
54
|
+
For custom evaluator invocations, pass the same path to
|
|
55
|
+
`oacp doctor --audit-dir <path>` to include a WARN-level Audit finding. This
|
|
56
|
+
option diagnoses the supplied basename; it does not redirect workspace scans
|
|
57
|
+
or introduce a receiver configuration setting.
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## Packet and handoff templates
|
|
61
|
+
|
|
62
|
+
The packet initializer (`scripts/init_packet.sh` and `make packet`), review
|
|
63
|
+
packet template, merge-decision template and handoff packet template are retired.
|
|
64
|
+
Use formats and generators owned by your review or handoff workflow. The public
|
|
65
|
+
v0.5.2 tag preserves the former artifacts for historical reference; upgrading
|
|
66
|
+
does not migrate or delete existing runtime packets.
|
|
67
|
+
|
|
68
|
+
The findings template and review-loop documentation remain available. Envelope
|
|
69
|
+
validation, signing, admission, and message types are unchanged. Update source
|
|
70
|
+
checkout callers before upgrading; there is no replacement kernel packet verb.
|
|
@@ -191,9 +191,9 @@ The exit code reflects the overall result:
|
|
|
191
191
|
|
|
192
192
|
| Issue | Fix |
|
|
193
193
|
|-------|-----|
|
|
194
|
-
| `workspace.json — not found` |
|
|
194
|
+
| `workspace.json — not found` | Init is create-only: inspect and repair the existing root, or move it aside before re-initializing |
|
|
195
195
|
| `workspace.json — invalid` | Check for JSON syntax errors in the file |
|
|
196
|
-
| `agents/ directory — not found` |
|
|
196
|
+
| `agents/ directory — not found` | Restore each intended agent with `oacp agent add <project> <agent>` |
|
|
197
197
|
|
|
198
198
|
### Inbox Health
|
|
199
199
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Memory command migration for 0.5.3
|
|
2
|
+
|
|
3
|
+
OACP 0.5.3 removes the `memory`, `org-memory`, `write-event`, and `retention`
|
|
4
|
+
commands. Calls, including `--help` and `oacp help <command>`, now return the
|
|
5
|
+
normal unknown-command error with exit code 2. Update scripts, skills, and
|
|
6
|
+
operator commands before upgrading.
|
|
7
|
+
|
|
8
|
+
## Memory and events
|
|
9
|
+
|
|
10
|
+
Install [agent-memory-cli](https://github.com/kiloloop/agent-memory) separately
|
|
11
|
+
and call `agent-memory` directly. Event writing requires a version that provides
|
|
12
|
+
`agent-memory event write` (0.1.1 or later); OACP no longer bundles a fallback.
|
|
13
|
+
|
|
14
|
+
| Previous command | Direct replacement |
|
|
15
|
+
| --- | --- |
|
|
16
|
+
| `oacp memory init` | `agent-memory enable` |
|
|
17
|
+
| `oacp memory <verb> ...` | `agent-memory <verb> ...` |
|
|
18
|
+
| `oacp org-memory init` | `agent-memory org init` |
|
|
19
|
+
| `oacp write-event ...` | `agent-memory event write ...` |
|
|
20
|
+
|
|
21
|
+
Replace `--oacp-dir <path>` with `--home <path>` (including the `--flag=value`
|
|
22
|
+
form). Preserve the remaining arguments. For example:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
agent-memory pull --home "$OACP_HOME"
|
|
26
|
+
agent-memory event write --home "$OACP_HOME" --agent <agent> \
|
|
27
|
+
--project <project> --type decision --slug api-convention --body "Use REST"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The direct event writer reports `published:` or `idempotent:` rather than the
|
|
31
|
+
old fallback's `OK:`; its dry-run preview goes to stderr. Update callers that
|
|
32
|
+
parse that output. Existing memory files and their layout do not need to move.
|
|
33
|
+
|
|
34
|
+
If a workspace still registers `.claude/hooks/oacp-memory-pull.sh` or
|
|
35
|
+
`oacp-memory-push.sh`, re-run `oacp setup claude` before upgrading to retire
|
|
36
|
+
the recognized legacy hooks; configure replacement hooks with `agent-memory`
|
|
37
|
+
only when automatic sync is intended.
|
|
38
|
+
|
|
39
|
+
## Retention
|
|
40
|
+
|
|
41
|
+
`oacp retention` was an advisory command and performed no pruning. It has no
|
|
42
|
+
replacement inside OACP. Retention remains operator-owned; any external tool
|
|
43
|
+
must preserve the [protected-evidence rules](../protocol/inbox_outbox.md#message-history-retention).
|