The managed web row answered from the shared web.backend only, so extract_backend: nous (Desktop "Use for Extract" on Nous Subscription) left it dark. It now reads the same per-capability resolution as the vendor rows (incl. legacy use_gateway), shared in _web_serving_backends. Tests folded into two invariants.