Add LabelerTarget parsing and pipeline driver skeleton
Implements Task 3 from Phase 3 of the test-labeler feature. Adds:
- LabelerTarget enum (Identified and Endpoint variants) for representing
labeler targets (handles, DIDs, or raw URLs).
- AtIdentifier enum for handles and DIDs.
- LabelerOptions struct with HTTP client, DNS resolver, subscription
timeout, and verbose flag.
- parse_target() function with full target parsing logic supporting
handles, DIDs (did:plc and did:web), HTTPS URLs, and explicit --did
flag handling. Rejects HTTP URLs with helpful messages.
- TargetParseError diagnostic for user-facing error messages.
- run_pipeline() async driver skeleton that builds a LabelerReport,
records stub check results for all four stages (identity, HTTP,
subscription, crypto), and returns the finished report. Identity stage
is stubbed with 'not yet implemented (phase 3 task 4)' reason; later
stages skip with appropriate phase references.
- 8 unit tests covering all target parsing cases (handles, DIDs,
HTTPS endpoints, explicit DIDs, HTTP rejection, ambiguous specs,
and unrecognized targets).
All tests pass. Code passes cargo fmt and cargo clippy --all-targets.
Verifies AC1.1-AC1.5 partially (full pipeline verification deferred to
integration tests in Task 6).
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>