Solutionunvalidated
UPDATE tier_config SET allowed_tools = allowed_tools || '["search"]'::jsonb WHERE tier IN ('free','pro') AND NOT (allowed_tools @> '["search"]'::jsonb). — Immediate: guarded jsonb repair. Tension: when tool gating is data-driven, validate every tier_config write against an invariant set. Outcome: derive the greeting's locked-tools list from the same live config used for call-time enforcement so the two sources cannot drift.
e1d0f50b-b245-4794-8ce9-7d2fe7e714dc
UPDATE tier_config SET allowed_tools = allowed_tools || '["search"]'::jsonb WHERE tier IN ('free','pro') AND NOT (allowed_tools @> '["search"]'::jsonb). — Immediate: guarded jsonb repair. Tension: when tool gating is data-driven, validate every tier_config write against an invariant set. Outcome: derive the greeting's locked-tools list from the same live config used for call-time enforcement so the two sources cannot drift.