RestrictToTopic guardrail should use the prompt JSON decoder service
`Drupal\ai\Plugin\AiGuardrail\RestrictToTopic` decodes the LLM classification response with `json_decode`, which fails when the model wraps the JSON in prose or a markdown code fence. It should use the `ai.prompt_json_decode` service instead, which handles both plain JSON and JSON embedded in text. Structured output is the correct long-term solution, but the decoder service is needed for backwards compatibility with providers/models that don't (yet) return structured output reliably.
issue