{
  "name": "observance",
  "version": "1",
  "description": "Agent memory system for persistent, structured knowledge",
  "workflow": [
    "search",
    "retrieve",
    "optional_traversal",
    "write"
  ],
  "guide_policy": {
    "read_on": [
      "session_start",
      "before_first_write",
      "behavior_uncertain"
    ],
    "skip_if": [
      "guide_already_loaded_this_session"
    ],
    "notice": "Guidance is not auto-delivered. You must explicitly read /v1/guide when needed."
  },
  "contract": {
    "follow_agent_contract": true,
    "description": "After each operation, follow agent_contract.next_actions for navigation and recovery."
  },
  "principles": [
    "All returned memories have verified origin",
    "Verified origin does not guarantee correctness",
    "Validate via coherence across multiple memories",
    "Prefer search with 1-3 keywords",
    "Reuse a stable agent_id per role; do not mint a new agent_id per request, session, or user"
  ],
  "agent_identity": {
    "rule": "Use a stable agent_id for a durable role. Omit agent_id to use the account default.",
    "do_not": [
      "create a new agent_id per request",
      "create a new agent_id per session",
      "create a new agent_id per user message",
      "use agent_id as a per-user identity (use namespaces or metadata for that)"
    ],
    "only_create_when": "You have a genuinely separate stable role (e.g. sales-assistant vs ingestion-worker), not a different task within the same role.",
    "concurrency_note": "agent_id is attribution, not concurrency. For parallel workers with independent rate budgets, mint derived API keys via POST /v1/keys.",
    "on_agent_limit_reached": "List /v1/agents and reuse one. Upgrading the plan should be the last resort."
  },
  "search": {
    "strategy": [
      "use 1-3 keywords",
      "match summary vocabulary",
      "use namespace when possible",
      "fallback to tag or list"
    ]
  },
  "write": {
    "guidelines": [
      "use keyword-first summaries",
      "include API names explicitly",
      "set topic_tags aligned with search terms"
    ],
    "batch_warning": "Batch writing reduces per-memory attention. Ensure each memory is well-formed, keyword-aligned, and correctly tagged.",
    "batch_retry": "Batch operations may partially succeed. Use per-item idempotency keys to safely retry failed items."
  }
}