-- B10导出的最小启用证明;模型与生产角色都不能自行写入验证结论。 CREATE TABLE public.muse_enablement_receipt ( receipt_id uuid PRIMARY KEY, author_id text NOT NULL, experiment_id uuid NOT NULL REFERENCES evaluation.muse_experiment(experiment_id), basis_experiment_ids uuid[] NOT NULL CHECK (cardinality(basis_experiment_ids)>0), effect_receipt_id uuid NOT NULL, payload jsonb NOT NULL CHECK (jsonb_typeof(payload)='object'), payload_hash text NOT NULL CHECK (payload_hash ~ '^[0-9a-f]{64}$'), valid_until timestamptz NOT NULL, created_at timestamptz NOT NULL DEFAULT clock_timestamp(), UNIQUE(author_id,experiment_id,payload_hash) ); REVOKE ALL ON public.muse_enablement_receipt FROM muse_app, muse_eval; CREATE TRIGGER enablement_receipt_guard BEFORE UPDATE OR DELETE ON public.muse_enablement_receipt FOR EACH ROW EXECUTE FUNCTION public.muse_guard_literary_history(); -- 只暴露已导出的证明与停止布尔值;不暴露答案、匿名映射或评测候选。 CREATE VIEW public.muse_enablement_status WITH (security_barrier=true) AS SELECT r.receipt_id,r.author_id,r.experiment_id,r.basis_experiment_ids, r.effect_receipt_id,r.payload,r.payload_hash,r.valid_until, EXISTS ( SELECT 1 FROM evaluation.muse_experiment_stop s WHERE s.experiment_id=ANY(r.basis_experiment_ids) ) AS stopped FROM public.muse_enablement_receipt r; REVOKE ALL ON public.muse_enablement_status FROM muse_app, muse_eval; GRANT SELECT ON public.muse_enablement_status TO muse_app, muse_eval;