Parent
#46
What to build
Fingerprinter::analyze_warm(host: &str, client: &ImpersonateClient) -> Vec<Detection> is a new async method that fires the Warm-tier sources for a host. It fetches https://{host}/robots.txt, /.well-known/security.txt, /.well-known/openid-configuration, and /favicon.ico in parallel via the supplied ImpersonateClient, computes the favicon MD5, and calls each registered Warm-tier source via the source's public classify_* / analyze_body helper.
Results merge into the WarmCache keyed by host:port with the configured TTL (default 24h). A subsequent call within TTL returns cached results without re-fetching. Fingerprinter::invalidate(host) continues to force a refresh.
Acceptance criteria
Blocked by
Parent
#46
What to build
Fingerprinter::analyze_warm(host: &str, client: &ImpersonateClient) -> Vec<Detection>is a new async method that fires the Warm-tier sources for a host. It fetcheshttps://{host}/robots.txt,/.well-known/security.txt,/.well-known/openid-configuration, and/favicon.icoin parallel via the suppliedImpersonateClient, computes the favicon MD5, and calls each registered Warm-tier source via the source's publicclassify_*/analyze_bodyhelper.Results merge into the
WarmCachekeyed byhost:portwith the configured TTL (default 24h). A subsequent call within TTL returns cached results without re-fetching.Fingerprinter::invalidate(host)continues to force a refresh.Acceptance criteria
Fingerprinter::analyze_warm(host, &client) -> Vec<Detection>implementedFaviconHashSource::classify_hashRobotsTxtSource::analyze_bodyWellKnownSource::classifyWarmCachewithhost:portkey, 24h TTL defaultFingerprinter::invalidate(host)forces refreshanalyze_warmagainst wiremock-served filesBlocked by