{
  "id": "release-custody",
  "description": "Release custody of an existing prop or packet without assigning a recipient",
  "labels": {
    "en": "Release custody",
    "de": "Besitz freigeben"
  },
  "family_ref": "true-handling",
  "action_contract": {
    "requires": [
      "target"
    ],
    "parameters": {},
    "post_state_invariant": "The target's custody is absent after the action: remove a whole prop's possession or its containing packet's custodian_ref. Preserve all card identity, order, faces, physical exception state, display orientation, location, and packet topology. Releasing an already unowned pile is idempotent.",
    "post_state": {
      "state_schema_ref": "https://tamaraspec.org/schema/tcs-playing-cards-state-0.1.json",
      "effects": [
        {
          "op": "set_custody",
          "subject": "target",
          "value": null
        }
      ]
    },
    "boundary_note": "Structured evaluation is scoped to playing-cards state 0.1. Document occurrences require an explicit target and an explicit actor_ref resolving to a declared participant; there is no recipient or position parameter. The actor need not be the current custodian. A card target releases its containing HOST pile, never its origin merely because it owns the card. Null is an effect instruction in semantics 1.1, not a serialized custody value. Other prop types need their own versioned state contracts."
  }
}