Relay 0.8's initialize() raised on error-level diagnostics; 0.9's validate()
reports them instead, so the migration had started writing configurations
Relay would refuse at runtime and commenting out the legacy variables that
would otherwise have warned about it. Error-level diagnostics now raise
again, and only warnings come back as the diagnostics list.
The probe also uses validate_exact(): plain validate() layers the payload
over whatever ambient user plugins.toml exists, which is not the document
the runtime loads. The migrate test checks the written file through the
same explicit-file layer the runtime uses.
Tool execution intercepts take a ToolExecutionContext in Relay 0.9; the one
in-repo registration, in tests, is updated to that shape.
Documents the two 0.9 behaviours a reader would not guess: the system
plugins.toml still layers beneath Hermes's explicit file, and a foreign
plugin host is only detectable when Hermes has a configuration selected.
Relocked with uv 0.9.28, the version CI pins. The remaining lock delta is
what that version itself emits for a relative exclude-newer.
Signed-off-by: mschwab <mschwab@nvidia.com>