-- B09:任务范围与实际消费的不可变上下文快照。 -- 快照身份由载荷确定性派生,同一输入重复冻结幂等为一行;历史快照只读不改写。 DO $migration$ DECLARE namespace text; BEGIN FOREACH namespace IN ARRAY ARRAY['public', 'evaluation'] LOOP EXECUTE format($ddl$ CREATE TABLE %1$I.muse_context_snapshot ( snapshot_id uuid PRIMARY KEY, run_purpose public.muse_purpose NOT NULL, task_id uuid NOT NULL REFERENCES %1$I.muse_task(task_id), work_id text NOT NULL, input_hash text NOT NULL, frozen_scope jsonb NOT NULL, assembly jsonb NOT NULL, source_bindings jsonb NOT NULL, created_by text NOT NULL, created_at timestamptz NOT NULL DEFAULT clock_timestamp(), UNIQUE (run_purpose, task_id, input_hash), CHECK (assembly ? ALL (ARRAY['入选','省略','字节数','文本哈希','文本'])), CHECK (jsonb_typeof(source_bindings) = 'array') ); CREATE INDEX ON %1$I.muse_context_snapshot (task_id, created_at); $ddl$, namespace); END LOOP; END $migration$;