Context
Investigation of #6083 found that a fresh GenAI plugin load does not seed its owned mcp-* and genai-* rows in global_variables.
The AI setup runs statements such as SET mcp-enabled=true. For these plugin variables, SET becomes an UPDATE; when the row is absent it affects zero rows without establishing the requested value. In CI-ai-g2, the setup attempts to enable MCP repeatedly, while the plugin continues to report that MCP is disabled.
CI-ai-g1 can appear to recover only because an earlier test performs a save operation that happens to seed variables midway through the group. This makes later tests order-dependent.
Required behavior
A freshly initialized GenAI plugin must expose a complete, canonical set of MCP and GenAI variable rows with defaults before callers attempt to update them.
Acceptance criteria
Parent: #6098
Observed in: #6083
Related documentation gap: #5731
Context
Investigation of #6083 found that a fresh GenAI plugin load does not seed its owned
mcp-*andgenai-*rows inglobal_variables.The AI setup runs statements such as
SET mcp-enabled=true. For these plugin variables,SETbecomes anUPDATE; when the row is absent it affects zero rows without establishing the requested value. InCI-ai-g2, the setup attempts to enable MCP repeatedly, while the plugin continues to report that MCP is disabled.CI-ai-g1can appear to recover only because an earlier test performs a save operation that happens to seed variables midway through the group. This makes later tests order-dependent.Required behavior
A freshly initialized GenAI plugin must expose a complete, canonical set of MCP and GenAI variable rows with defaults before callers attempt to update them.
Acceptance criteria
mcp-*andgenai-*row exactly once.SET mcp-enabled=trueon a fresh instance updates an existing row and can start MCP after the documented load operation.Parent: #6098
Observed in: #6083
Related documentation gap: #5731