for Unsatisfied Role
A placeholder that reports what was actually wanted, for a role this deployment cannot yet satisfy.
In setup-required mode a model name that is merely unregistered and a model name that is misspelled are the same thing at startup - nothing is registered, so neither resolves - and both end up here. The platform cannot tell them apart, but it does know which role asked and which name that role carried, and saying so is what lets the operator tell them apart: cheapest wanted 'gpt-4.1-nanoo' points at the typo, where a bare "no LLM is configured" points at the key, the one thing that is not wrong.
Returning a distinct instance rather than mutating: one placeholder bean serves every call on any thread, so the role that failed cannot be state on it.
Return
a placeholder failing with a message naming role and model, or null to use this placeholder unchanged - which is what a placeholder with nothing to add should do
Parameters
the role that could not be satisfied
the model name that role named, or null if it named none