BEGIN; CREATE TABLE public.server_probe_retired_sources ( receipt_id uuid PRIMARY KEY REFERENCES public.server_probe_storage_admissions(receipt_id), operation_id uuid NOT NULL UNIQUE REFERENCES public.mcp_operation_replay_tombstones(operation_id), source jsonb NOT NULL CHECK(jsonb_typeof(source)='object' AND octet_length(source::text) BETWEEN 1 AND 8192), proof text NOT NULL CHECK(proof ~ '^[0-9a-f]{64}$'), CHECK((source->>'version') IS NOT DISTINCT FROM '1' AND (source->>'receiptId') IS NOT DISTINCT FROM receipt_id::text AND (source->>'executionId') IS NOT DISTINCT FROM operation_id::text) ); CREATE FUNCTION public.server_probe_retired_source_immutable() RETURNS trigger LANGUAGE plpgsql SET search_path=pg_catalog,public AS $$ BEGIN RAISE EXCEPTION 'retired diagnostic source is immutable'; END $$; CREATE TRIGGER server_probe_retired_source_immutable BEFORE UPDATE OR DELETE ON public.server_probe_retired_sources FOR EACH ROW EXECUTE FUNCTION public.server_probe_retired_source_immutable(); CREATE TRIGGER server_probe_retired_source_no_truncate BEFORE TRUNCATE ON public.server_probe_retired_sources FOR EACH STATEMENT EXECUTE FUNCTION public.server_probe_retired_source_immutable(); INSERT INTO public.schema_migrations(id) VALUES ('0050_server_probe_retired_sources') ON CONFLICT(id) DO NOTHING; COMMIT;