758a127f06
L9's "unknown shape" sample was the openai profile, which 1.3.3 gave a real shape (off/on_base/effort_key all set), so the guard had nothing to reject. It now registers a shapeless provider of its own and tests the mechanism rather than whichever profile happens to be blank that month. L8 checks the reported model before judging the capability table: this channel answers glm-5 / glm-5.1 / glm-5.2 with glm-5.3, which is a routing problem the library already warns about, not drift. All three are guarded, including the one that passed by luck. T10 tells 404 model_not_found (the channel dropped the model) apart from 400 (the tier really is refused), reading the status code and the body's type field rather than the whole message; only the latter still counts as a conclusion about a tier. An all-skipped tier list now skips instead of going green. TestMiniMaxM3 gained the unreachable fallback its own docstring promised: an outage now skips and leaves an uncovered row, where before it failed ahead of _record and left no trace of what happened.