feat: nationwide 1,555 tide locations (v0.8.0) Replaces the 249 geocoded breakwaters with the full national location set (서해540 남해814 동해105 제주96), giving the reference app's coverage: - data/locations.json + breakwaters.ts now loads it (JSON to stay off the 300-line source cap). Each: {id, name, region(coast), lat, lon}. - Only factual fields kept — Korean name + coordinates + coast. Source app's romanizations (name_en) and internal ids (tsid) deliberately dropped; ports' names/coordinates are public facts (KHOA ports/landings). - App: region browse regrouped by coast (서해/남해/동해/제주); TopSearch shows curated 🛟 hits first and suppresses Kakao results once curated hits ≥3 to cut noise (e.g. "노력" → 노력도 first, no 헬스장/학원). - Breakwater.address now optional. Verified: /api/breakwaters returns 1555 (correct per-coast counts); in-app search "노력" → 노력도(남해) on top; coords match independent kakao geocode (고마도 34.41 vs 34.415). Deployed v0.8.0. Constraint: coordinates feed the model-tide path; spots within 6km of an official station still snap to exact official tide. Names/coords are facts; the source app's creative compilation fields were excluded. Confidence: high Scope-risk: module Reversibility: trivial Directive: 원산/청진(북한 동해) included as valid KHOA points; drop if undesired. Tested: build clean; API 1555; Playwright in-app search; tide path unchanged. Not-tested: per-point coordinate audit across all 1555 (spot-checked); on-device. Related: docs/BACKLOG.md 0/3-B 🐙 Autopus