776743cbe2
Replace the hardcoded API-Error check with a target-keyed BackendErrorPatternLookup plus a BackendErrorSink, mirroring the existing ExhaustedPatternLookup/ExhaustionSink pair. Classifies in all three paths (normal block, #211 raw-scrape fallback, and the fleetd#164 MIN_TURN_NANOS floor). The sink fires only after Rendezvous.resolveFailure wins for the exact waiter. A target with no configured pattern still falls back to the narrow (?i)\bAPI Error\s*: compatibility pattern. Existing constructors keep compiling via BackendErrorPatternLookup.legacy() / BackendErrorSink.none() defaults. Public send result is unchanged (still a failed send) — the typed sink event is the internal seam Unit 5 will consume.