Memorial Voice Revocation Notice Mechanic

Revocation does not erase a prior memorial voice probate decision. It appends a bounded notice row.

Required row fields:

revocation_notice:
  source_probate_row_id: <stable row id>
  withdrawn_reader: archive | fan_public | sponsor | cutroom | pirate_relay | route_asset | lawful_reader
  withdrawn_claimed_use: memorial_clip | route_unlock | sponsor_legacy | public_vigil | cutroom_patch | pirate_relay | lawful_citation
  notice_carrier: archive_clerk | fan_delegate | sponsor_runner | editor | pirate_child | route_asset_custodian
  proof_carrier: source_row | chain_key | public_receipt | sponsor_clause | checksum | relay_trace | quarantine_seal
  effective_boundary: immediate_stop | grace_period | lawful_only | public_only | quarantine_only | recovery_only
  late_notice_cost: breach_debt | refund_pressure | fan_grief | cutroom_delay | route_asset_lock | lawful_surcharge

The mechanic fails if revocation silently deletes the old permission, grants universal clean voice use, or fires from a fixed turn/day/raw count trigger.