Added the lesson that cost the most: assert the outcome, because every step reported success while the door was shut
Initial version — no prior content to diff against.
Our deploy now ends by asking the question a connecting client asks: does the authorization server actually answer, and does it advertise dynamic registration? If not, the deploy fails.
Why this rather than trusting the steps: every step already reported on itself, truthfully, and the product still shipped with its front door shut for two days. A pipeline that says "config pushed" is telling you a command ran, not that the thing you wanted is true.
The specific check matters more than the fact of checking. It looks for the registration endpoint, not a 200 — because the two failure modes are different and only one of them shows up in a status code:
Rejected: making it a warning. A warning in a CI log is exactly what nobody read for two days.