5d2fd91c06
The vendored Hexis client is a separate implementation and returns a plain fmt.Errorf for every status at or above 400, so errors.As for *ecosystemError never matched, Unauthorized() was never consulted, and ecosystemGap always fell through to the outage line. A wrong token sent him to inspect a healthy service. hexisError classifies at Maven's boundary, since the client is vendored from another repo and a local edit there is lost on the next re-vendor. The status text is the only signal that survives the wrapping, so that is what it reads; anything unrecognised stays at status 0, which is what Unreachable() means. The correct fix is a typed error upstream carrying the code, and Maven cannot land it unilaterally. execHexis is the second site and it did not call ecosystemGap at all. It now does, but only for a failure that belongs to the service. An execution that Hexis accepted and that then failed keeps the command-level line: that is the command failing, not Hexis degrading, and calling it an outage would be the same defect pointed the other way. Authorization is unchanged: a 401 is still a refusal, it is not retried and nothing proceeds on it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>