Duo Code Review context gathering fails when custom review instructions are invalid
<!--- Please read this! Before opening a new issue, make sure to search for keywords in the issues filtered by the "regression" or "type::bug" label: - https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=regression - https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=type::bug and verify the issue you're about to submit isn't a duplicate. ---> ### Summary Duo Code Review context gathering can fail completely when a project or group has invalid custom review instructions. Instead of handling the invalid instructions gracefully, the review flow can error and produce a misleading “I finished my review and found nothing to comment on” style response even though no real review was performed. [The failure was traced](https://smith.langchain.com/o/477de7ad-583e-47b6-a1c4-c4a0300e7aca/projects/p/a4e68128-258a-41eb-b766-9414684ce34d/t/4113106?scroll_to=error&run_id=20260602T195819Z019e89ea-5fe6-7e71-a846-cd7ecb46da3d&trace_id=019e89ea-5c08-79b0-b1ea-793676e2af76&conversationTab=trace) to custom review instructions processing, where the code hit `AttributeError("'NoneType' object has no attribute 'strip'")` while formatting instructions for code review context. ### Steps to reproduce 1. Create a repo with invalid custom instructions 2. Create a MR in that repo and request a review from `@GitLabDuo` ### What is the current _bug_ behavior? Duo Code Review fails to build the review context and returns invalid summary: ``` I finished my review and found nothing to comment on. Nice work! :tada: - No diff content was provided for this Merge Request, so a detailed line-by-line code review could not be performed. - The MR title is listed as "None" and no description was included, making it difficult to assess the intent of the changes. - Without visible code changes, no issues related to correctness, security, performance, or style could be identified. - If this MR contains changes, please ensure the diff is accessible and re-trigger the review for a complete analysis. ``` ### What is the expected _correct_ behavior? Invalid custom instructions are ignored and review go ahead as usual without them. ### Relevant logs and/or screenshots https://smith.langchain.com/o/477de7ad-583e-47b6-a1c4-c4a0300e7aca/projects/p/a4e68128-258a-41eb-b766-9414684ce34d/t/4113106?scroll_to=error&run_id=20260602T195819Z019e89ea-5fe6-7e71-a846-cd7ecb46da3d&trace_id=019e89ea-5c08-79b0-b1ea-793676e2af76&conversationTab=trace ### Possible fixes Ignore invalid instructions. #### High-severity bug remediation To remediate high-severity issues requiring an [internal release](https://handbook.gitlab.com/handbook/engineering/releases/internal-releases/) for single-tenant SaaS instances, refer to the [internal release process for engineers](https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/internal-releases/engineers.md?ref_type=heads). <!--If you don't have /label privileges, follow up with an issue comment of `@gitlab-bot label ~"type::bug"`-->
issue