Reliability + correctness hardening.
- SOLD revived: /house-prices migrated to React Router v7 single-fetch; now decoded from the
.data Turbo Stream endpoint instead of returning an empty SUCCEED. Restores sold price, date, tenure, address, GPS, beds/baths with pagination.
- Honest-fail: a run where every request is blocked and zero records are extracted now fails with a clear status instead of a silent empty success.
- safePushData: null/undefined stripped + retried so one malformed record can no longer crash the batch (platform rejects null on non-null-typed fields).
- Soft-fail on bad input (unresolved location / unrecognized built URL) with a terminal WARNING status, not a hard crash.
- Cost-cap visibility: upfront max-cost log + status message; actual billed amount reported at the end.
- Triple-guard charge counter prevents concurrency overshoot past maxItems.
- Memory lowered 4096 -> 2048 MB (right-sized for the Cheerio path).
Initial release. Four input modes auto-detected from URL pattern (search BUY / search RENT / sold prices / agent search) or plain searchLocation + channel input. HTTP-only Cheerio extraction from NEXT_DATA (search pages) and PAGE_MODEL (property detail pages). Optional fetchPropertyDetails enrichment. Datacenter proxy default, residential fallback. 25+ flat fields per property optimized for MCP / AI-agent consumption.