oacp-cli 0.4.5__tar.gz → 0.4.6__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.5 → oacp_cli-0.4.6}/CHANGELOG.md +13 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/PKG-INFO +7 -3
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/QUICKSTART.md +5 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/README.md +6 -2
- oacp_cli-0.4.6/docs/guides/memory-context.md +72 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/agent_safety_defaults.md +1 -1
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/autonomy.md +55 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/cross_runtime_sync.md +7 -5
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/dispatch_states.yaml +2 -2
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/org_memory.md +14 -8
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/runtime_capabilities.md +4 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/session_init.md +19 -9
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/README.md +3 -3
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/recent.md +2 -1
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/pyproject.toml +3 -1
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/autonomy_gate.py +73 -1
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/codex_session_init.py +4 -2
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/record_autonomy_outcome.py +43 -16
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/setup_runtime.py +6 -3
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/claude/agents/role_agent.template.md +4 -1
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/recent.md +2 -1
- oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_designed.yaml +13 -0
- oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_mixed.yaml +13 -0
- oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_undeclared.yaml +13 -0
- oacp_cli-0.4.6/tests/conformance/autonomy/expected/pause_classification_unplanned.yaml +13 -0
- oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_designed.yaml +20 -0
- oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_mixed.yaml +20 -0
- oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_undeclared.yaml +19 -0
- oacp_cli-0.4.6/tests/conformance/autonomy/messages/pause_classification_unplanned.yaml +20 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_autonomy_gate.py +6 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_codex_session_init.py +57 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_envelope_compiler.py +17 -0
- oacp_cli-0.4.6/tests/test_expected_pauses.py +259 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_finalize_autonomy_record.py +23 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_package_content.py +20 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_record_autonomy_outcome.py +149 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_setup_runtime.py +9 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.gitattributes +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.github/workflows/auto-estimate.yml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.github/workflows/ci.yml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.github/workflows/release.yml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/.gitignore +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/CONTRIBUTING.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/LICENSE +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/Makefile +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/SECURITY.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/SPEC.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/from-claude-p.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/adoption.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/doctor.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/prompt_caching.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/setup.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/unified_skill_spec.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/guides/versioning.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/img/oacp-cli-demo.png +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/img/oacp-filesystem-tree.png +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/img/oacp-fleet-thread.png +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/agent_profiles.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/credential_scoping.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/inbox_outbox.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/mcp_integration.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/message_signing.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/multi_agent_shared_workspace.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/packet_states.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/review_loop.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/skills_manifest.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/docs/protocol/task_negotiation.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/decisions.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260504-093015-postgres-over-dynamodb.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260508-141220-utc-timestamps-pr-review.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260515-102045-utc-timestamps-webhooks.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260521-163330-utc-timestamps-rule-proposal.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260527-110500-idempotency-keys-merged.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/events/20260602-090210-parcel-api-v020-released.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/org-memory/rules.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/archive/2026-05-21-csv-export-timeouts.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/decision_log.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/known_debt.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/open_threads.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/demo-workspace/projects/parcel-api/memory/project_facts.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/examples/quickstart/README.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/oacp/__init__.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/oacp/cli.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/oacp/envelope_hook.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/_oacp_constants.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/_oacp_env.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/add_agent.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/agent_profile.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/check_quality_gate.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/claude_envelope_hook.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/envelope_compiler.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/finalize_autonomy_record.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/gen_readme_commands.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/handoff_schema.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/init_org_memory.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/init_packet.sh +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/init_project_workspace.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/key_cli.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/memory_archive_common.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/memory_cli.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/memory_sync.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/message_signing.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/message_verify.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/oacp_doctor.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/oacp_inbox.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/oacp_watch.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/policy_signing.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/preflight.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/promote_to_archive.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/restore_from_archive.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/retention.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/send_inbox_message.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/trust_cli.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/trust_root.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/update_workspace.sh +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/validate_agent_card.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/validate_message.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/scripts/write_event.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/agent_card.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/agent_profile.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/agent_status.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/checkpoint.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/claude/rules/guardrail.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/findings_packet.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/github_actions_quality_gate.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/guardrails/coding_standards.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/guardrails/safe_commands.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/guardrails/secrets_rules.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/handoff_packet.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/inbox_message.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/manual_validation.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/merge_decision.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/decisions.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/events/.gitkeep +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/org-memory/rules.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/receiver_config.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/review_packet.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/roles/role_baseline.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/roles/role_definition.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/runtime_capabilities.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/skills_manifest.template.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/templates/test_packet.template.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/README.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/continuation_drift.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/continuation_within.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/declaration_error.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/declaration_intent.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_boundary_action.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_conflict.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_cross_channel.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_reuse.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_same_channel.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/reauth_scopeless_boundary.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/review_live_head_mismatch.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/review_live_head_prefix.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_addressed_accepted.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_addressed_types.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_approved.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_denied_later.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_review_grant_denied_postmessage.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/audits/prior_thread_grant_approved.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/always_pause.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_external_pause.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_standard.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/auto_review_tight.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_boundary_action_resumes.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_conflict_declines.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_cross_channel_resumes.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_reuse_stays_paused.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_same_channel_resumes.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/checkpoint_reauth_scopeless_boundary_resumes.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_error_admission_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_error_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declaration_intent_checkpoint_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/declared_destructive_ops_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/expired_message_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/guardrails_fence_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_masking_threshold_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_commercial_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_config_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_credentials_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_memory_ssot_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_pricing_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_public_repo_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_sensitive_secret_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/hard_stop_side_effect_before_sensitive_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/invalid_message_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/lexical_declared_false_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/minutes_45_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/minutes_46_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/negated_guardrails_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_issue_artifacts_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_pr_artifacts_auto_accepts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/private_pr_with_merge_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/public_pr_artifacts_pause.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_accepted_auto_continues.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_disabled_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_drift_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_expired_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_head_mismatch_records.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_later_round_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_missing_approval_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_prefix_head_records.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_repeated_addressed_round_exceeded.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_revoke_before_processing_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/review_continuation_revoked_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/sensitive_content_reply_only_advisory.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/ledger_replay/corpus.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/declaration_error_admission.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/declared_destructive_ops.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/expired_message.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/guardrails_fence.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_masking_threshold.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/invalid_message.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/lexical_declared_false.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/minutes_45.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/minutes_46.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/negated_guardrails.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/path_like_deploy.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_issue_artifacts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_pr_artifacts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/private_pr_with_merge.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/public_pr_artifacts.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_addressed_round3.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_cross_pr.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_head_mismatch.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_prefix_head.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_request.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_round4.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/review_continuation_unapproved.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_commercial.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_config.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_content_reply_only.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_credentials.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_memory_ssot.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_pricing.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_public_repo.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/sensitive_secret.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/side_effect_before_sensitive.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/side_effect_booleans.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/README.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/admission_outcome_replaced_by_clear.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/breach_basis_source_mismatch.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/breached_empty_fields.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/clean_terminal_done.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_live_a.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_live_b.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/duplicate_yaml_key_logged_notes.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/expected_findings.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/final_state_superseded_valid.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/inconsistent_work_clock.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/noncanonical_axis_names.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_final_state_completed.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_completed_after_human_approval.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_executed.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_human_approved_completed.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/off_enum_kind_review_round_delivered.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/paused_terminal_action_unreconciled.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/paused_terminal_completed_stamp.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/serialized_wave_item.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_legacy_kind_repaired.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_legacy_successor_live.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_missing_successor.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_successor_live.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/superseded_unrelated_successor.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/autonomy/records/unrelated_identity_holder_live.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/README.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/configs/auto_review_standard.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/configs/malformed.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/clean_pr_task_compiles.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/docs_only_task_compiles.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/granular_capabilities_compile.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/invalid_numeric_fails.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/malformed_config_fails.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/missing_profile_fails.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/expected/unparsable_profile_fails.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/clean_pr_task.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/docs_only_task.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/granular_capabilities_task.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/invalid_numeric.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/missing_profile.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/envelope/messages/unparsable_profile.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/README.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/configs/enforce.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/configs/off.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/configs/warn.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_basic__enforce.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__enforce.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__off.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/signed_revoked__warn.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__enforce.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__off.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_body_flip__warn.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__enforce.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__off.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/tamper_kid_unknown__warn.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__enforce.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__off.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/intake/expected/unsigned_notification__warn.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/README.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/expected.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/.hidden/2026/08/20260825-alice-abc12345.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825-alice-ABCD.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/08/20260825_alice_abc12345.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/2026/09/20260825-alice-def12345.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/bad_layout/org-memory/debriefs/demo-project/20260825-alice-abc12345.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/empty_store/expected.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/empty_store/org-memory/debriefs/.gitkeep +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/missing_debriefs_dir/expected.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/missing_debriefs_dir/org-memory/recent.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/staging_artifact/expected.yaml +0 -0
- {oacp_cli-0.4.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 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/staging_artifact/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/expected.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/.gitkeep +0 -0
- {oacp_cli-0.4.5 → 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 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/demo-project/2026/08/20260825-alice-1f3a9c2b.md +0 -0
- {oacp_cli-0.4.5 → 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 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/org_memory/cases/valid_store/org-memory/debriefs/other-project/2026/12/20261203-bob-9e0d44aa.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/README.md +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_basic.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_lookalike.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_multisig.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/signed_revoked.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_auth_alias.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_body_flip.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_container_reformat.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_crlf_trailer.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_header_reencode.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_identity_mismatch.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_indented_trailer.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_alias.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_cross_agent.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_kid_unknown.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_missing_final_lf.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_padded_b64.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_sig_alias.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_sig_corrupt.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailer_transplant.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailing_blank_line.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/tamper_trailing_space.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/expected/unsigned_notification.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/keys/alice.json +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/keys/bob.json +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/keys/carol.json +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_basic.prefix.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_basic.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_lookalike.prefix.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_lookalike.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_multisig.prefix.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_multisig.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_revoked.prefix.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/signed_revoked.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_auth_alias.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_body_flip.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_container_reformat.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_crlf_trailer.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_header_reencode.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_identity_mismatch.prefix.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_identity_mismatch.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_indented_trailer.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_alias.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_cross_agent.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_kid_unknown.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_missing_final_lf.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_padded_b64.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_sig_alias.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_sig_corrupt.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailer_transplant.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailing_blank_line.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/tamper_trailing_space.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/messages/unsigned_notification.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/pins/allowed_signers.yaml +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/conformance/signing/regen_fixtures.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_add_agent.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_agent_profile.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_audit_corpus_boundary.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_audit_record_conformance.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_autonomy_conformance_fixtures.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_autonomy_ledger_replay.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_claude_envelope_hook.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_default_envelope.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_envelope_conformance_fixtures.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_envelope_public_admission.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_github_workflows.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_handoff_schema.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_inbox_verify.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_init_org_memory.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_init_project_workspace.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_intake_conformance.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_memory_archive.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_memory_sync.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_message_signing.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_message_verify.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_cli.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_constants.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_doctor.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_env.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_inbox.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_oacp_watch.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_org_memory_doctor.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_packaged_status_template.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_policy_signing.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_preflight.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_readme_commands.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_retention.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_review_loop.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_send_inbox_message.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_signing_conformance.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_spec_version.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_trust_root.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_update_workspace.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_validate_agent_card.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_validate_message.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_workspace_discovery.py +0 -0
- {oacp_cli-0.4.5 → oacp_cli-0.4.6}/tests/test_write_event.py +0 -0
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.6] - 2026-09-05
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Autonomy audits distinguish expected pauses from unplanned pauses ([pause classification](docs/protocol/autonomy.md#pause-classification)).
|
|
15
|
+
- Human outcome records can retain the changes made when approving a modified task ([human outcomes](docs/protocol/autonomy.md#human-approval-and-decline-outcomes)).
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Startup safety and dispatch guidance follow the current exact-file archive lifecycle ([inbox lifecycle](docs/protocol/inbox_outbox.md#lifecycle)).
|
|
20
|
+
- Startup guidance preserves project memory reads and retrieves org memory on demand ([memory context](docs/guides/memory-context.md)).
|
|
21
|
+
|
|
10
22
|
## [0.4.5] - 2026-09-02
|
|
11
23
|
|
|
12
24
|
### Changed
|
|
@@ -831,6 +843,7 @@ The central debrief store is the headline change: every agent's full end-of-sess
|
|
|
831
843
|
- Checkout step in github-release workflow job (#19)
|
|
832
844
|
- Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
|
|
833
845
|
|
|
846
|
+
[0.4.6]: https://github.com/kiloloop/oacp/compare/v0.4.5...v0.4.6
|
|
834
847
|
[0.4.5]: https://github.com/kiloloop/oacp/compare/v0.4.4...v0.4.5
|
|
835
848
|
[0.4.4]: https://github.com/kiloloop/oacp/compare/v0.4.3...v0.4.4
|
|
836
849
|
[0.4.3]: https://github.com/kiloloop/oacp/compare/v0.4.2...v0.4.3
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: oacp-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.6
|
|
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
|
|
@@ -115,7 +115,7 @@ $OACP_HOME/projects/my-app/ ● writing
|
|
|
115
115
|
workspace.json metadata [json]
|
|
116
116
|
|
|
117
117
|
$OACP_HOME/org-memory/ org-wide
|
|
118
|
-
recent.md
|
|
118
|
+
recent.md on demand [⌘]
|
|
119
119
|
rules.md 12 rules [⌘]
|
|
120
120
|
decisions.md org decisions [⌘]
|
|
121
121
|
```
|
|
@@ -373,12 +373,16 @@ Optionally, `oacp org-memory init` creates org-level shared memory:
|
|
|
373
373
|
|
|
374
374
|
```
|
|
375
375
|
$OACP_HOME/org-memory/
|
|
376
|
-
├── recent.md #
|
|
376
|
+
├── recent.md # Rolling summary, retrieved on demand
|
|
377
377
|
├── decisions.md # Org-wide decisions
|
|
378
378
|
├── rules.md # Standing conventions
|
|
379
379
|
└── events/ # Timestamped event entries
|
|
380
380
|
```
|
|
381
381
|
|
|
382
|
+
Init loads the four active project memory files. Org memory is retrieved on
|
|
383
|
+
demand; syncing it to disk does not load it into context. See
|
|
384
|
+
[project context and org-memory retrieval](docs/guides/memory-context.md).
|
|
385
|
+
|
|
382
386
|
## Development
|
|
383
387
|
|
|
384
388
|
```bash
|
|
@@ -108,6 +108,11 @@ sequentially. If hooks are unavailable, run the manual fallback:
|
|
|
108
108
|
oacp session-init --pull-memory --project my-first-project
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
+
Memory pull synchronizes files on disk. The init manifest names the protocol
|
|
112
|
+
files and four project memory files to read into context; org memory is
|
|
113
|
+
retrieved on demand. See [memory context](docs/guides/memory-context.md) for
|
|
114
|
+
retrieval and existing-installation guidance.
|
|
115
|
+
|
|
111
116
|
Runtime setup does not install an automatic memory push. Publish durable memory
|
|
112
117
|
explicitly during wrap-up with `oacp memory push`.
|
|
113
118
|
|
|
@@ -87,7 +87,7 @@ $OACP_HOME/projects/my-app/ ● writing
|
|
|
87
87
|
workspace.json metadata [json]
|
|
88
88
|
|
|
89
89
|
$OACP_HOME/org-memory/ org-wide
|
|
90
|
-
recent.md
|
|
90
|
+
recent.md on demand [⌘]
|
|
91
91
|
rules.md 12 rules [⌘]
|
|
92
92
|
decisions.md org decisions [⌘]
|
|
93
93
|
```
|
|
@@ -345,12 +345,16 @@ Optionally, `oacp org-memory init` creates org-level shared memory:
|
|
|
345
345
|
|
|
346
346
|
```
|
|
347
347
|
$OACP_HOME/org-memory/
|
|
348
|
-
├── recent.md #
|
|
348
|
+
├── recent.md # Rolling summary, retrieved on demand
|
|
349
349
|
├── decisions.md # Org-wide decisions
|
|
350
350
|
├── rules.md # Standing conventions
|
|
351
351
|
└── events/ # Timestamped event entries
|
|
352
352
|
```
|
|
353
353
|
|
|
354
|
+
Init loads the four active project memory files. Org memory is retrieved on
|
|
355
|
+
demand; syncing it to disk does not load it into context. See
|
|
356
|
+
[project context and org-memory retrieval](docs/guides/memory-context.md).
|
|
357
|
+
|
|
354
358
|
## Development
|
|
355
359
|
|
|
356
360
|
```bash
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Project context and org-memory retrieval
|
|
2
|
+
|
|
3
|
+
Load the active project memory at init. Retrieve org memory when a task needs
|
|
4
|
+
shared rules, decisions, or recent cross-project context. Org-wide history can
|
|
5
|
+
grow independently of the small project working set.
|
|
6
|
+
|
|
7
|
+
| Store | Context policy |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `projects/<project>/memory/` | Read `project_facts.md`, `decision_log.md`, `open_threads.md`, and `known_debt.md` in order at init. |
|
|
10
|
+
| `projects/<project>/memory/archive/` | Historical detail; follow a relevant reference when needed. |
|
|
11
|
+
| `org-memory/` | Search relevant topical files and read matching sections on demand. |
|
|
12
|
+
|
|
13
|
+
## Initialization and synchronization
|
|
14
|
+
|
|
15
|
+
Step 3 of the session-init protocol requires the four project files. In
|
|
16
|
+
Codex, the init command verifies three
|
|
17
|
+
protocol files and those four project files, then emits a manifest. The agent
|
|
18
|
+
still performs the ordered reads; verification does not inject their contents.
|
|
19
|
+
Missing project files are reported under the existing degraded-init behavior.
|
|
20
|
+
|
|
21
|
+
`oacp memory pull` synchronizes the memory repository on disk, including org
|
|
22
|
+
memory and its history. A successful pull does not add those files to model
|
|
23
|
+
context. Keep any configured pull before project-memory reads so those reads
|
|
24
|
+
use the refreshed files. Sync selection and context selection are independent;
|
|
25
|
+
there is no need to remove org memory from sync to avoid eager loading.
|
|
26
|
+
|
|
27
|
+
Hook enablement remains an adopter choice. This retrieval policy works with a
|
|
28
|
+
trusted startup hook or a manual init invocation. It does not require enabling
|
|
29
|
+
a hook that the project has disabled.
|
|
30
|
+
|
|
31
|
+
## Retrieve org context for a task
|
|
32
|
+
|
|
33
|
+
1. Resolve the configured OACP root and the org's topical filenames. Common
|
|
34
|
+
choices are `rules.md`, `decisions.md`, and `recent.md`; adopters can use
|
|
35
|
+
others. Read applicable standing rules and decisions before the actions
|
|
36
|
+
they govern, such as release, review authority, or architecture work.
|
|
37
|
+
2. If cross-machine sync is configured, the task needs current shared facts,
|
|
38
|
+
and local freshness is unknown, run `oacp memory pull`. A failed pull leaves
|
|
39
|
+
freshness unknown; report that limitation before relying on affected facts.
|
|
40
|
+
3. Search the relevant explicit files with task identifiers and topic terms.
|
|
41
|
+
For example, after confirming that `rules.md` exists:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
OACP_ROOT="${OACP_HOME:-$HOME/oacp}"
|
|
45
|
+
rg -n -- 'release|version' "$OACP_ROOT/org-memory/rules.md"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
4. Read the full matching sections, including qualifications and provenance.
|
|
49
|
+
Follow relevant source links when needed; avoid loading unrelated history
|
|
50
|
+
or recursively reading `events/` and `debriefs/`. Read `recent.md` sections
|
|
51
|
+
when recent org-wide changes matter to the task.
|
|
52
|
+
5. A search miss does not establish that no rule applies. Inspect relevant
|
|
53
|
+
headings or linked topic files when needed. Missing or unreadable files
|
|
54
|
+
are evidence gaps, not permission to bypass a known requirement. Verify
|
|
55
|
+
stale or conflicting claims against their authoritative sources.
|
|
56
|
+
|
|
57
|
+
Runtime/project guidance may explicitly opt into a bounded startup summary.
|
|
58
|
+
The `recent.md` curation budget is a storage-maintenance guideline, not a
|
|
59
|
+
startup context budget. Keep required project reads intact even when org
|
|
60
|
+
retrieval is deferred.
|
|
61
|
+
|
|
62
|
+
## Update an existing installation
|
|
63
|
+
|
|
64
|
+
Updated scaffolds apply to newly created files. Runtime setup and org-memory
|
|
65
|
+
initialization preserve existing guidance and curated content; upgrading does
|
|
66
|
+
not rewrite an old `Always-loaded` comment or a local mandatory-org-read rule.
|
|
67
|
+
|
|
68
|
+
Review existing runtime instructions and summary comments explicitly. Keep the
|
|
69
|
+
four project reads, replace blanket org-memory startup reads with the task-based
|
|
70
|
+
policy above, and retain the underlying rules, decisions, history, and sync
|
|
71
|
+
configuration. Avoid rerunning runtime setup solely to change prose: setup can
|
|
72
|
+
register hooks, including ones an adopter intentionally disabled.
|
|
@@ -18,7 +18,7 @@ Cross-agent baseline safety rules. All agents (Claude, Codex, Cursor, Gemini) fo
|
|
|
18
18
|
|
|
19
19
|
## Inbox Safety
|
|
20
20
|
|
|
21
|
-
- **
|
|
21
|
+
- **Follow the canonical [inbox lifecycle](inbox_outbox.md#lifecycle).** Complete required replies and terminal audit before atomically archiving the exact processed file without overwriting an archive entry. Changed bytes or failed archival leave input pending; a successful reply alone is not permission to delete it.
|
|
22
22
|
- **Never silently consume a message that expects a response** — `task_request`, `question`, and `review_request` always require a reply. `notification` is no-response by default, but requires ack/reply when it reports findings or issues.
|
|
23
23
|
- **Always reply** using `oacp send` with `--parent-message-id` to maintain threading.
|
|
24
24
|
- **Idempotent sends** — before sending a response message (e.g., `review_feedback`, `review_addressed`, `review_request`), check the recipient's inbox and your own outbox for an already-sent message matching the same PR + round + type. Skip the send if a duplicate exists. This prevents retry storms when an agent crashes after sending a message but before completing the full workflow, and is re-invoked.
|
|
@@ -106,6 +106,10 @@ schema-invalid profile pauses with `task_profile_unparsable`; it is not a fatal
|
|
|
106
106
|
message-schema error. Message types listed in `allow_without_task_profile`, such
|
|
107
107
|
as `brainstorm_request`, may auto-accept without the block.
|
|
108
108
|
|
|
109
|
+
| Optional profile field | Meaning |
|
|
110
|
+
| --- | --- |
|
|
111
|
+
| `expected_pauses` | List of pause reason codes the sender expects to fire, for example `[estimated_minutes_exceeds_threshold, merges_pr_pause]`. Advisory only: unknown codes or malformed values produce declaration warnings, not new admission reasons. Existing safety checks still apply to the whole message. See [pause classification](#pause-classification). |
|
|
112
|
+
|
|
109
113
|
`expected_files_touched` counts distinct deliverable files only: files created
|
|
110
114
|
or modified as part of the requested outcome or a review-required correction.
|
|
111
115
|
Exclude receiver-local inbox, outbox, audit, memory, cache, and scratch writes
|
|
@@ -433,6 +437,11 @@ Audit `schema_version: 2` adds thread identity and the structured
|
|
|
433
437
|
`result.human_outcome` block. Recorders may upgrade a v1 audit to v2 when the
|
|
434
438
|
first human outcome is written; standing grants trust only v2 records.
|
|
435
439
|
|
|
440
|
+
| Optional audit evidence | Meaning |
|
|
441
|
+
| --- | --- |
|
|
442
|
+
| `pause_classification`, `expected_pause_codes`, `unplanned_pause_codes` | The paused decision's comparison against the sender's expected reasons; see [pause classification](#pause-classification). Older v2 records may omit all three. |
|
|
443
|
+
| `result.human_outcome.modification` | Free-form YAML mapping recording what the human changed, such as `task_profile: {estimated_minutes: 60}` and `note: "Allow the larger task"`. Written by `--modification-file`; evidence only, with no effect on the scope envelope, standing grants, or checkpoint enforcement. |
|
|
444
|
+
|
|
436
445
|
### Contract version
|
|
437
446
|
|
|
438
447
|
`spec_version` names the protocol contract an artifact was produced under.
|
|
@@ -510,6 +519,40 @@ deduplicated against `reason_codes`, and empty on auto-accepted decisions.
|
|
|
510
519
|
Threshold-calibration analytics should read `reason_codes` and
|
|
511
520
|
`co_occurring_reason_codes` together.
|
|
512
521
|
|
|
522
|
+
### Pause classification
|
|
523
|
+
|
|
524
|
+
Every new paused evaluation records `pause_classification`,
|
|
525
|
+
`expected_pause_codes`, and `unplanned_pause_codes` as additive audit evidence.
|
|
526
|
+
The fired set contains only pause reasons in that decision's `reason_codes`.
|
|
527
|
+
Evidence codes such as `message_valid` and `schema_valid`, co-occurring reasons,
|
|
528
|
+
and lexical notes never enter this set.
|
|
529
|
+
|
|
530
|
+
| Declaration and fired reasons | Classification |
|
|
531
|
+
| --- | --- |
|
|
532
|
+
| `expected_pauses` absent | `undeclared` |
|
|
533
|
+
| Every fired pause reason is expected | `designed` |
|
|
534
|
+
| No fired pause reason is expected | `unplanned` |
|
|
535
|
+
| Some, but not all, fired pause reasons are expected | `mixed` |
|
|
536
|
+
|
|
537
|
+
`expected_pause_codes` preserves declared string entries, including unknown
|
|
538
|
+
codes; unknown codes are ignored for comparison and recorded as declaration
|
|
539
|
+
warnings in `logged_notes`.
|
|
540
|
+
An absent or malformed declaration contributes no expected reasons.
|
|
541
|
+
`unplanned_pause_codes` lists the fired reasons minus the recognized expected
|
|
542
|
+
reasons.
|
|
543
|
+
All message text, including the advisory value, remains subject to existing
|
|
544
|
+
lexical safety checks.
|
|
545
|
+
An unknown declaration adds no admission reason of its own, but a destructive
|
|
546
|
+
token inside it still fires the same hard stop as that token elsewhere.
|
|
547
|
+
The declaration cannot authorize work or suppress a fired pause.
|
|
548
|
+
|
|
549
|
+
These fields and `human_outcome.modification` are additive and ignorable within
|
|
550
|
+
audit schema v2: existing records validate unchanged, and readers may ignore the
|
|
551
|
+
fields without changing an admission, finalization, doctor, or enforcement
|
|
552
|
+
decision.
|
|
553
|
+
There is no contract change under the [version rule](#contract-version).
|
|
554
|
+
Historical records are not backfilled.
|
|
555
|
+
|
|
513
556
|
### Lexical provenance
|
|
514
557
|
|
|
515
558
|
`matched_patterns` is a source-ordered list of every autonomy lexical match,
|
|
@@ -638,6 +681,18 @@ pause moment, and locks the full read-modify-write sequence before an atomic
|
|
|
638
681
|
replacement. It refuses to overwrite a recorded outcome unless `--replace` is
|
|
639
682
|
explicit. `decision` is `approved`, `modified`, or `declined`.
|
|
640
683
|
|
|
684
|
+
| Flag | Meaning |
|
|
685
|
+
| --- | --- |
|
|
686
|
+
| `--modification-file <yaml>` | With `--decision modified`, read a free-form YAML mapping into `result.human_outcome.modification`. Without the file, the modified decision still records and prints a one-line `modification unrecorded` warning. |
|
|
687
|
+
|
|
688
|
+
An empty mapping is valid.
|
|
689
|
+
A missing, unreadable, invalid-YAML, or non-mapping file leaves the audit
|
|
690
|
+
unchanged, as does using the flag with a decision other than `modified`.
|
|
691
|
+
The payload records the human's delta without applying it to the original
|
|
692
|
+
scope envelope or creating a standing grant.
|
|
693
|
+
It cannot replace the earlier outcome when the command routes to a checkpoint
|
|
694
|
+
clear; scoped checkpoint changes still use the re-authorization path below.
|
|
695
|
+
|
|
641
696
|
The recorder is state-aware about where the pause moment lives:
|
|
642
697
|
|
|
643
698
|
- **Admission pauses** (`completion_kind: admission_paused`): the record was
|
|
@@ -25,13 +25,15 @@ The protocol defines three complementary sync mechanisms, ordered from most dura
|
|
|
25
25
|
| `open_threads.md` | Unresolved issues, blocked epics, cross-agent coordination | Any agent via the project's durable-memory promotion flow |
|
|
26
26
|
| `known_debt.md` | Verified unresolved debt that should persist across sessions | Any agent via the project's durable-memory promotion flow |
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
These four files are the active working set. Other project files and
|
|
29
|
+
`memory/archive/` hold context retrieved when the task needs it; their presence
|
|
30
|
+
does not add them to the required init reads. Org memory is also retrieved on demand.
|
|
29
31
|
|
|
30
|
-
These files are the **source of truth** for stable project knowledge. All runtimes read the
|
|
32
|
+
These files are the **source of truth** for stable project knowledge. All runtimes read the four files in the order above at init. Only verified, stable outcomes should be written here.
|
|
31
33
|
|
|
32
34
|
**Promotion flow**: Merge decisions contain a "Durable Memory Updates" section. Each implementation should provide a promotion mechanism that extracts approved entries from merge artifacts and appends them to the appropriate memory file, deduplicating against existing content.
|
|
33
35
|
|
|
34
|
-
**Archive flow**: Users or coordinator agents may move non-standard memory files into `memory/archive/` for historical retention, then restore them back into `memory/` when
|
|
36
|
+
**Archive flow**: Users or coordinator agents may move non-standard memory files into `memory/archive/` for historical retention, then restore them back into `memory/` when needed again. Restoring a file does not add it to the required init read set.
|
|
35
37
|
|
|
36
38
|
### 2. Handoff Messages with Context Keys
|
|
37
39
|
|
|
@@ -72,7 +74,7 @@ Agents synchronize knowledge at well-defined points in the workflow:
|
|
|
72
74
|
|
|
73
75
|
### Claude
|
|
74
76
|
|
|
75
|
-
- **Reads**: `CLAUDE.md` (project-level instructions, auto-loaded),
|
|
77
|
+
- **Reads**: `CLAUDE.md` (project-level instructions, auto-loaded), the four active project memory files at init, and other project/org context on demand
|
|
76
78
|
- **Writes**: Memory files via merge decisions + durable-memory promotion, handoff messages, review packets
|
|
77
79
|
- **Context mechanism**: `CLAUDE.md` is injected into every conversation. Memory files are read explicitly.
|
|
78
80
|
- **Tip**: Keep `CLAUDE.md` under 200 lines. Move detailed notes to memory files and reference them.
|
|
@@ -101,7 +103,7 @@ Avoid these common mistakes when syncing knowledge across runtimes:
|
|
|
101
103
|
| Syncing ephemeral state (temp files, debug logs, partial results) | Clutters memory, confuses future agents | Only promote stable, verified outcomes |
|
|
102
104
|
| Assuming shared context | Agent B cannot read Agent A's conversation history | Always include context in handoff messages |
|
|
103
105
|
| Writing to memory too eagerly | Unverified or in-progress work pollutes the knowledge base | Wait until merge decision to promote |
|
|
104
|
-
| Skipping memory reads at session start | Agent makes decisions contradicting prior work |
|
|
106
|
+
| Skipping project memory reads at session start | Agent makes decisions contradicting prior work | Read the four active project memory files; retrieve org memory on demand |
|
|
105
107
|
|
|
106
108
|
## Integration with durable-memory promotion
|
|
107
109
|
|
|
@@ -349,5 +349,5 @@ constraints:
|
|
|
349
349
|
- "rejected — agent rejected the task"
|
|
350
350
|
inbox_file_lifecycle:
|
|
351
351
|
- "Dispatch state is tracked via message replies (parent_message_id threading), NOT by retaining the original inbox file"
|
|
352
|
-
- "Agents
|
|
353
|
-
- "Long-lived states (blocked, in_review) persist in dispatcher tracking (dispatches.md)
|
|
352
|
+
- "Agents follow inbox_outbox.md Lifecycle for terminal processing and exact-file, no-overwrite archival; changed bytes or failed archival leave input pending"
|
|
353
|
+
- "Long-lived states (blocked, in_review) persist in dispatcher tracking (dispatches.md); pending-file retention still follows inbox_outbox.md Lifecycle"
|
|
@@ -8,7 +8,7 @@ Shared, cross-project memory for multi-agent organizations. Agents across projec
|
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
$OACP_HOME/org-memory/
|
|
11
|
-
recent.md #
|
|
11
|
+
recent.md # rolling summary (~60K chars / ~15K tokens)
|
|
12
12
|
decisions.md # topical: org-wide decisions (illustrative default)
|
|
13
13
|
rules.md # topical: standing conventions (illustrative default)
|
|
14
14
|
events/ # chronological: timestamped entries
|
|
@@ -21,11 +21,17 @@ $OACP_HOME/org-memory/
|
|
|
21
21
|
|
|
22
22
|
`decisions.md` and `rules.md` are illustrative defaults, not protocol requirements. Adopters choose which topical files to create (e.g., `agents.md`, `architecture.md`).
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
Org memory is retrieved on demand by default, separately from the four
|
|
25
|
+
project memory files read during init. Runtime or project guidance may opt
|
|
26
|
+
into a bounded startup summary; the directory layout does not require eager
|
|
27
|
+
loading. See the adopter guide for [memory context and retrieval](../guides/memory-context.md).
|
|
28
|
+
|
|
29
|
+
Keep `recent.md` to approximately 60,000 characters (roughly 15,000 tokens)
|
|
30
|
+
unless adopter guidance sets a smaller budget. Approximately 150 lines remain
|
|
31
|
+
a secondary readability hint only; when the measures disagree, the character
|
|
32
|
+
budget governs. Collapse older detail into topical files or history so the
|
|
33
|
+
file remains a bounded rolling summary when retrieved. This is a curation
|
|
34
|
+
budget, not a requirement or allowance to load that much context at startup.
|
|
29
35
|
|
|
30
36
|
## Event File Schema
|
|
31
37
|
|
|
@@ -221,7 +227,7 @@ verified record — never partial bytes.
|
|
|
221
227
|
Raw debriefs never enter `recent.md` or `events/` — only curated folds do.
|
|
222
228
|
The coordinator reads debriefs and promotes durable outcomes into events and
|
|
223
229
|
topical files; the raw session narrative stays in `debriefs/`. This keeps the
|
|
224
|
-
|
|
230
|
+
curated surfaces bounded and the event channel filtered. Debrief files
|
|
225
231
|
are likewise never auto-loaded at session start.
|
|
226
232
|
|
|
227
233
|
### Sync
|
|
@@ -276,7 +282,7 @@ Cortex demonstrates the dual-pipeline pattern — same source data, two audience
|
|
|
276
282
|
1. Format spec (directory structure, frontmatter schema, naming convention)
|
|
277
283
|
2. CLI: `oacp org-memory init` (scaffold directory, including `debriefs/`) and `oacp write-event` (create event files)
|
|
278
284
|
3. Agents write their full session debrief to `org-memory/debriefs/` (via adopter tooling — see Debrief Store) and curated outcome events during debrief
|
|
279
|
-
4. Agents
|
|
285
|
+
4. Agents retrieve relevant sections of topical files and `recent.md` for org context on demand
|
|
280
286
|
5. Coordinator maintains topical files during sync
|
|
281
287
|
|
|
282
288
|
## v0.3+
|
|
@@ -177,6 +177,10 @@ registers a `SessionStart` handler that runs memory pull and `oacp session-init`
|
|
|
177
177
|
sequentially after the user reviews and trusts it with `/hooks`. The manual
|
|
178
178
|
fallback is `oacp session-init --pull-memory --project <project>`.
|
|
179
179
|
|
|
180
|
+
Memory pull synchronizes disk files. Init names the required protocol and
|
|
181
|
+
project-memory reads; org-memory retrieval is on demand. See
|
|
182
|
+
[memory context](../guides/memory-context.md).
|
|
183
|
+
|
|
180
184
|
Session telemetry beyond `status.yaml` is a runtime responsibility: the kernel
|
|
181
185
|
neither defines a schema for it nor ships a reference implementation. A runtime
|
|
182
186
|
that keeps its own session or packet telemetry stores it separately from
|
|
@@ -19,7 +19,7 @@ The init sequence has 6 steps in a fixed order. Each step is classified as **req
|
|
|
19
19
|
┌─────────────────────────────────────────────┐
|
|
20
20
|
│ 1. Load global rules [required] │
|
|
21
21
|
│ 2. Load project rules [required] │
|
|
22
|
-
│ 3. Load
|
|
22
|
+
│ 3. Load project memory [required] │
|
|
23
23
|
│ 4. Check inbox [optional] │
|
|
24
24
|
│ 5. Load skills / tools [optional] │
|
|
25
25
|
│ 6. Report status [required] │
|
|
@@ -54,13 +54,15 @@ The init sequence has 6 steps in a fixed order. Each step is classified as **req
|
|
|
54
54
|
|
|
55
55
|
**Conflict resolution:** When global and project rules conflict, project rules win. Project rules are closer to the work and reflect repo-specific decisions. Exception: safety defaults from `agent_safety_defaults.md` cannot be relaxed by project rules — they can only be made stricter.
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
<a id="step-3-load-durable-memory"></a>
|
|
58
|
+
|
|
59
|
+
### Step 3: Load Project Memory
|
|
58
60
|
|
|
59
61
|
**Required.** Read the project's shared memory files to restore cross-session and cross-runtime context.
|
|
60
62
|
|
|
61
63
|
**Location:** `$OACP_HOME/projects/<project>/memory/`
|
|
62
64
|
|
|
63
|
-
The
|
|
65
|
+
The four files below are the active working set. `memory/archive/` is historical storage and is not loaded by default at session start.
|
|
64
66
|
|
|
65
67
|
**Loading order:**
|
|
66
68
|
|
|
@@ -69,6 +71,11 @@ The top-level files in `memory/` are the active working set. `memory/archive/` i
|
|
|
69
71
|
3. `open_threads.md` — unresolved issues, blocked epics, cross-agent coordination. Read third because it builds on the context from facts and decisions.
|
|
70
72
|
4. `known_debt.md` — verified unresolved debt, recurring pain points, and cleanup items that future sessions should keep in view.
|
|
71
73
|
|
|
74
|
+
This required read set is project-scoped. `$OACP_HOME/org-memory/` is a
|
|
75
|
+
separate store, retrieved on demand by default. Its summary, topical files,
|
|
76
|
+
events, and debriefs are not part of Step 3. Read applicable org rules and
|
|
77
|
+
decisions when the task needs them; see [memory context](../guides/memory-context.md).
|
|
78
|
+
|
|
72
79
|
**Conflict resolution:** If memory files contradict project rules (e.g., `project_facts.md` says "use pytest" but `CLAUDE.md` says "use make test"), project rules win. Memory files may be stale; project rules are maintained alongside the code.
|
|
73
80
|
|
|
74
81
|
**Runtime-specific memory:** Some runtimes maintain additional memory (e.g., Claude's `~/.claude/projects/<hash>/memory/MEMORY.md`). Runtime-specific memory supplements but does not override shared durable memory. Load runtime-specific memory after shared memory.
|
|
@@ -142,7 +149,7 @@ If a **required** step fails:
|
|
|
142
149
|
|------|-------------|--------|
|
|
143
150
|
| Global rules | File missing or unreadable | Warn user, continue with defaults (safety defaults still apply) |
|
|
144
151
|
| Project rules | File missing or unreadable | Warn user, continue — project may not have agent config |
|
|
145
|
-
|
|
|
152
|
+
| Project memory | Directory or files missing | Log absence, continue — project may not be initialized |
|
|
146
153
|
| Report status | Cannot write status.yaml | Warn user — dispatch routing will be degraded but work can proceed |
|
|
147
154
|
|
|
148
155
|
No init failure should prevent the agent from starting. All failures are **degraded mode**, not hard blocks. The agent reports what failed and continues.
|
|
@@ -156,6 +163,7 @@ This section provides guidance for per-runtime implementations.
|
|
|
156
163
|
Steps 1-2 are handled automatically by Claude Code (CLAUDE.md loading). Step 3 requires explicit file reads or auto-memory. Step 4 uses `/check-inbox`. Step 5 is automatic (skill discovery). Step 6 requires a startup hook or explicit script call.
|
|
157
164
|
|
|
158
165
|
`oacp setup claude` registers the marker-gated memory pull at `SessionStart`.
|
|
166
|
+
Pull synchronizes files on disk; it does not load org memory into context.
|
|
159
167
|
It intentionally does not publish memory at `SessionEnd`; wrap-up owns the
|
|
160
168
|
single explicit `oacp memory push` path. Claude status reporting remains an
|
|
161
169
|
explicit runtime responsibility, and so is any session telemetry beyond
|
|
@@ -167,12 +175,13 @@ runtime-kept telemetry is never a `status.yaml` writer.
|
|
|
167
175
|
Steps 1-2 are handled by AGENTS.md loading. Running `oacp setup codex
|
|
168
176
|
--project <project>` installs one repo-local `SessionStart` handler in
|
|
169
177
|
`.codex/hooks.json`. After the user reviews and trusts it with `/hooks`, the
|
|
170
|
-
handler sequentially pulls shared memory and runs `oacp session-init`.
|
|
171
|
-
Codex `SessionEnd` hook is installed.
|
|
178
|
+
handler sequentially pulls shared memory to disk and runs `oacp session-init`.
|
|
179
|
+
No Codex `SessionEnd` hook is installed.
|
|
172
180
|
|
|
173
|
-
The init command verifies that protocol and
|
|
174
|
-
updates `status.yaml`, and emits bounded developer context naming the required
|
|
181
|
+
The init command verifies that protocol and the four project memory files are
|
|
182
|
+
readable, updates `status.yaml`, and emits bounded developer context naming the required
|
|
175
183
|
ordered reads. It does not claim that the full file contents were injected.
|
|
184
|
+
Org-memory content is not read by this verification or included in its manifest.
|
|
176
185
|
Use this manual fallback when the project hook is unavailable or untrusted:
|
|
177
186
|
|
|
178
187
|
```bash
|
|
@@ -198,7 +207,8 @@ Steps 1-2 are handled by system prompts and `.agent/rules/`. Steps 3-6 can be im
|
|
|
198
207
|
|
|
199
208
|
| Anti-Pattern | Why It Fails | Do Instead |
|
|
200
209
|
|--------------|-------------|------------|
|
|
201
|
-
| Skipping memory
|
|
210
|
+
| Skipping active project memory to "save time" | Agent contradicts prior project decisions, duplicates work | Read the four project memory files in Step 3 |
|
|
211
|
+
| Loading the entire org-memory store at init | Context grows with org-wide history and unrelated projects | Retrieve relevant org sections on demand |
|
|
202
212
|
| Auto-processing inbox during init | Surprises the user with unseen actions | Summarize inbox count, let user trigger processing |
|
|
203
213
|
| Writing status.yaml only at session close | Dispatch router thinks agent is offline during work | Write at init AND close (and task boundaries) |
|
|
204
214
|
| Loading all skills eagerly | Slows init, wastes resources for unused tools | Load on-demand; only validate critical tools at init |
|
|
@@ -77,8 +77,8 @@ the loop:
|
|
|
77
77
|
now carries the rule with "promoted from 3 events" provenance pointing back
|
|
78
78
|
at all three.
|
|
79
79
|
5. **The rolling summary reflects it** — [`org-memory/recent.md`](org-memory/recent.md)
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
lists the rule under Standing Rules, so an agent can retrieve it when
|
|
81
|
+
relevant without scanning events.
|
|
82
82
|
|
|
83
83
|
`decisions.md` shows the same flow for a one-shot architectural call
|
|
84
84
|
(PostgreSQL over DynamoDB) rather than a repeating pattern.
|
|
@@ -97,7 +97,7 @@ demo-workspace/ ← shaped like $OACP_HOME
|
|
|
97
97
|
archive/
|
|
98
98
|
2026-05-21-csv-export-timeouts.md closed thread, 3 dated entries
|
|
99
99
|
org-memory/ org-wide knowledge
|
|
100
|
-
recent.md
|
|
100
|
+
recent.md rolling summary, retrieved on demand
|
|
101
101
|
rules.md standing conventions (curated)
|
|
102
102
|
decisions.md architectural calls (curated)
|
|
103
103
|
events/ raw signal — 6 events, 3 types
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Org Memory — Rolling Summary
|
|
2
2
|
|
|
3
|
-
<!--
|
|
3
|
+
<!-- Retrieved on demand; not required startup context. -->
|
|
4
|
+
<!-- Keep near 60,000 characters or the adopter's smaller budget; ~150 lines is a readability hint. -->
|
|
4
5
|
<!-- Updated by coordinator during sync/curation. -->
|
|
5
6
|
<!-- Last curated: 2026-06-02 by nova -->
|
|
6
7
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "oacp-cli"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.6"
|
|
8
8
|
description = "Open Agent Coordination Protocol CLI for file-based multi-agent workflows"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -108,6 +108,8 @@ packages = ["oacp"]
|
|
|
108
108
|
"docs/protocol/message_signing.md" = "oacp/_protocol/message_signing.md"
|
|
109
109
|
"docs/protocol/autonomy.md" = "oacp/_protocol/autonomy.md"
|
|
110
110
|
"docs/protocol/org_memory.md" = "oacp/_protocol/org_memory.md"
|
|
111
|
+
# Preserve ../guides/ links from the shipped protocol documents.
|
|
112
|
+
"docs/guides/memory-context.md" = "oacp/guides/memory-context.md"
|
|
111
113
|
"templates/inbox_message.template.yaml" = "oacp/_templates/inbox_message.template.yaml"
|
|
112
114
|
"templates/runtime_capabilities.yaml" = "oacp/_templates/runtime_capabilities.yaml"
|
|
113
115
|
"templates/org-memory/recent.md" = "oacp/_templates/org-memory/recent.md"
|
|
@@ -248,6 +248,24 @@ PINNED_REASON_CODES = frozenset({
|
|
|
248
248
|
"threshold_checkpoint_breached",
|
|
249
249
|
"workspace_check_required",
|
|
250
250
|
})
|
|
251
|
+
# Success and advisory evidence belongs in reason_codes but never names a
|
|
252
|
+
# fired pause, even if a caller records that evidence alongside a blocker.
|
|
253
|
+
PAUSE_REASON_CODES = PINNED_REASON_CODES - frozenset({
|
|
254
|
+
"checkpoint_reauthorized",
|
|
255
|
+
"continuation_grant_accepted",
|
|
256
|
+
"hard_stops_clear",
|
|
257
|
+
"lexical_advisory",
|
|
258
|
+
"message_hash_recorded",
|
|
259
|
+
"message_not_expired",
|
|
260
|
+
"message_valid",
|
|
261
|
+
"review_continuation_accepted",
|
|
262
|
+
"review_continuation_head_mismatch",
|
|
263
|
+
"risk_threshold_passed",
|
|
264
|
+
"task_profile_not_required",
|
|
265
|
+
"task_profile_present",
|
|
266
|
+
"task_type_allowed",
|
|
267
|
+
"workspace_check_required",
|
|
268
|
+
})
|
|
251
269
|
|
|
252
270
|
GUARDRAILS_FENCE_RE = re.compile(
|
|
253
271
|
r"(?ms)^[ \t]*```oacp-guardrails[ \t]*\n"
|
|
@@ -826,6 +844,53 @@ def extract_task_profile(body: str) -> Tuple[Optional[Dict[str, Any]], Optional[
|
|
|
826
844
|
return None, None
|
|
827
845
|
|
|
828
846
|
|
|
847
|
+
def _expected_pause_declaration(
|
|
848
|
+
body: str,
|
|
849
|
+
) -> Tuple[bool, List[str], List[Dict[str, str]]]:
|
|
850
|
+
"""Read audit-only declarations without altering the safety-check input."""
|
|
851
|
+
profile, error = extract_task_profile(body)
|
|
852
|
+
if error or profile is None or "expected_pauses" not in profile:
|
|
853
|
+
return False, [], []
|
|
854
|
+
declared = profile["expected_pauses"]
|
|
855
|
+
codes: List[str] = []
|
|
856
|
+
warnings: List[Dict[str, str]] = []
|
|
857
|
+
|
|
858
|
+
def warn(detail: str) -> None:
|
|
859
|
+
warnings.append({"code": "expected_pauses_declaration_warning", "detail": detail})
|
|
860
|
+
|
|
861
|
+
if not isinstance(declared, list):
|
|
862
|
+
warn("task_profile.expected_pauses must be a list; ignored")
|
|
863
|
+
else:
|
|
864
|
+
for index, code in enumerate(declared):
|
|
865
|
+
if not isinstance(code, str):
|
|
866
|
+
warn(f"task_profile.expected_pauses[{index}] must be a string; ignored")
|
|
867
|
+
continue
|
|
868
|
+
codes.append(code)
|
|
869
|
+
if code not in PAUSE_REASON_CODES:
|
|
870
|
+
warn(f"task_profile.expected_pauses[{index}] is not a recognized pause reason code; ignored")
|
|
871
|
+
|
|
872
|
+
return True, codes, warnings
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
def _classify_pause(
|
|
876
|
+
reason_codes: Sequence[str], expected_declared: bool, expected_codes: Sequence[str],
|
|
877
|
+
) -> Dict[str, Any]:
|
|
878
|
+
"""Classify fired pause reasons; success/advisory evidence is excluded."""
|
|
879
|
+
fired = list(dict.fromkeys(code for code in reason_codes if code in PAUSE_REASON_CODES))
|
|
880
|
+
expected = set(expected_codes) & PAUSE_REASON_CODES
|
|
881
|
+
unplanned = [code for code in fired if code not in expected]
|
|
882
|
+
return {
|
|
883
|
+
"expected_pause_codes": list(expected_codes),
|
|
884
|
+
"unplanned_pause_codes": unplanned,
|
|
885
|
+
"pause_classification": (
|
|
886
|
+
"undeclared" if not expected_declared
|
|
887
|
+
else "designed" if not unplanned
|
|
888
|
+
else "unplanned" if len(unplanned) == len(fired)
|
|
889
|
+
else "mixed"
|
|
890
|
+
),
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
|
|
829
894
|
def _bool_value(profile: Dict[str, Any], key: str) -> bool:
|
|
830
895
|
value = profile.get(key, False)
|
|
831
896
|
if isinstance(value, bool):
|
|
@@ -3483,7 +3548,9 @@ def evaluate_autonomy(
|
|
|
3483
3548
|
policy_hash = canonical_policy_sha256(config)
|
|
3484
3549
|
body = str(message.get("body") or "")
|
|
3485
3550
|
msg_type = str(message.get("type") or "")
|
|
3486
|
-
|
|
3551
|
+
expected_declared, expected_codes, logged_notes = (
|
|
3552
|
+
_expected_pause_declaration(body)
|
|
3553
|
+
)
|
|
3487
3554
|
profile_snapshot: Optional[Dict[str, Any]] = None
|
|
3488
3555
|
envelope_source: Optional[str] = None
|
|
3489
3556
|
# Resolved below; pre-bound so early pauses (malformed config) can
|
|
@@ -3535,6 +3602,11 @@ def evaluate_autonomy(
|
|
|
3535
3602
|
)
|
|
3536
3603
|
decision.setdefault("co_occurring_reason_codes", [])
|
|
3537
3604
|
decision["admission_axes"] = admission_axes
|
|
3605
|
+
if decision.get("decision") == "paused":
|
|
3606
|
+
# Only the reasons that drove this pause are fired. Ledger,
|
|
3607
|
+
# co-occurring, and lexical evidence never add classification
|
|
3608
|
+
# inputs or alter admission/approval authority.
|
|
3609
|
+
decision.update(_classify_pause(reason_codes, expected_declared, expected_codes))
|
|
3538
3610
|
decision["matched_patterns"] = _collect_lexical_provenance(
|
|
3539
3611
|
body,
|
|
3540
3612
|
profile_snapshot,
|
|
@@ -402,8 +402,10 @@ def build_session_start_hook_output(
|
|
|
402
402
|
*[f"- {name}" for name in PROTOCOL_FILES],
|
|
403
403
|
f"Project memory root: {memory_root}",
|
|
404
404
|
*[f"- {name}" for name in MEMORY_FILES],
|
|
405
|
-
"
|
|
406
|
-
"
|
|
405
|
+
"Org memory is separate from these required project reads: retrieve it "
|
|
406
|
+
"on demand by default under the active AGENTS.md policy. Read applicable "
|
|
407
|
+
"org rules and decisions before work they govern.",
|
|
408
|
+
"Memory pull synchronizes disk files; it does not load org content into context.",
|
|
407
409
|
"Include the exact SESSION_INIT_ACK line above in the first response after startup.",
|
|
408
410
|
]
|
|
409
411
|
if report["warnings"]:
|