-- NONE means "no selected game", not "no executable query".
-- Keep the boundary example scoped to its logical object role so it cannot
-- be generalized to approved common-object questions.

UPDATE sg_qa_vector_example
   SET object_role = 'GAME_USER_MASTER',
       answer_text = 'This boundary applies only to a game-scoped user-master operation. '
           || 'When no game identifier is resolved, do not select a prefix-specific user-master object. '
           || 'This does not prohibit an approved common-object query.',
       inspection_note = 'Canonical boundary for an unscoped game-user-master request. '
           || 'It applies only to GAME_USER_MASTER and must not suppress common-object queries.'
 WHERE example_id = 5
   AND reference_kind = 'NO_TARGET';

-- Populate logical roles from verified SQL. This is prompt metadata only;
-- runtime physical-object selection remains governed by the query plan.
UPDATE sg_qa_vector_example
   SET object_role = CASE
     WHEN REGEXP_LIKE(answer_sql, 'COMN_SALES_TXN', 'i') THEN 'SALES_TRANSACTION'
     WHEN REGEXP_LIKE(answer_sql, 'COMN_REFUND_TXN', 'i') THEN 'REFUND_TRANSACTION'
     WHEN REGEXP_LIKE(answer_sql, 'COMN_CHARACTER_MST', 'i') THEN 'GAME_CHARACTER_MASTER'
     WHEN REGEXP_LIKE(answer_sql, 'COMN_USER_MST', 'i') THEN 'GAME_USER_MASTER'
     ELSE object_role
   END
 WHERE reference_status = 'APPROVED'
   AND object_role IS NULL;

COMMENT ON COLUMN sg_qa_vector_example.object_role IS
  'Logical business object role used to bound Few-shot interpretation. It is not a runtime physical-object selector.';

COMMIT;
