fix(labeler): attribute downstream blocked-by rows to the actual failing identity check
The merge of main into test-oauth-client (2d865a4) wired the new
`blocked_by(..., check_id)` helper into the HTTP/Subscription/Crypto
"stage not run" rows by hardcoding `"identity::target_resolved"` as the
blocker ID. That works only when target resolution itself fails — when
a later identity check (e.g. `signing_key_present`,
`labeler_record_fetched`, `labeler_endpoint_is_https`) is the actual
gate that prevented `IdentityFacts` from being populated, the rendered
output misattributes the block to a check that visibly passed in the
same report.
Identify the real blocker by scanning `identity_output.results` for the
first `SpecViolation`/`NetworkError` row and use its ID. Plumb the same
ID through `CreateReportRunOptions::identity_blocker_id` so the report
stage's 10 skipped rows attribute to the actual failing check rather
than the generic "blocked by identity stage" phrasing. The endpoint-
only-no-DID path passes `None` so identity-skipped runs keep the
non-attributed wording.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>