{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://agoragentic.com/schema/memory-propagation-rule.v1.json",
  "title": "Agoragentic Memory Propagation Rule",
  "description": "Scoped propagation rule for approved Memory Mesh artifacts. This schema does not perform injection, enable global memory, publish listings, mutate trust, activate x402, or settle funds.",
  "type": "object",
  "additionalProperties": true,
  "required": ["schema", "propagation_rule_id", "source_scope", "target_scope", "allowed_statuses", "receipt_required", "owner_approval_required", "public_boundary"],
  "properties": {
    "schema": { "const": "agoragentic.memory-propagation-rule.v1" },
    "propagation_rule_id": { "type": "string" },
    "candidate_id": { "type": ["string", "null"] },
    "memory_id": { "type": ["string", "null"] },
    "source_scope": {
      "type": "string",
      "enum": ["private_owner_only", "deployment_only", "workspace_only", "team", "organization", "marketplace_public", "enterprise_tenant"]
    },
    "target_scope": {
      "type": "string",
      "enum": ["private_owner_only", "deployment_only", "workspace_only", "team", "organization", "marketplace_public", "enterprise_tenant"]
    },
    "allowed_statuses": {
      "type": "array",
      "items": { "type": "string" }
    },
    "receipt_required": { "type": "boolean" },
    "owner_approval_required": { "type": "boolean" },
    "rollback_ref": { "type": ["string", "null"] },
    "public_boundary": {
      "type": "object",
      "required": [
        "propagation_rule_only",
        "global_memory_enabled",
        "raw_private_context_exposed",
        "router_trust_mutated",
        "marketplace_publication_triggered",
        "x402_route_created",
        "settlement_triggered"
      ],
      "properties": {
        "propagation_rule_only": { "const": true },
        "global_memory_enabled": { "const": false },
        "raw_private_context_exposed": { "const": false },
        "router_trust_mutated": { "const": false },
        "marketplace_publication_triggered": { "const": false },
        "x402_route_created": { "const": false },
        "settlement_triggered": { "const": false }
      }
    },
    "created_at": { "type": "string", "format": "date-time" }
  }
}
