City had rationale/metric text but no citation field at all -- only Market.Source and Opportunity.Source existed, both single strings meant for the one research issue a record was seeded from, not for ongoing evidence.
Added City.Sources []string (yaml/json sources, omitempty): a list of http(s) citation URLs a candidate city accumulates over time. store.Validate rejects any entry that isn't http:///https://. The atlas renders them as hostname-labeled links at the bottom of a city's card in the market dossier.
Applied it as the first real entry: Rotterdam (zuid-holland market) now cites https://www.ciiic.nl/en/news/landelijk-netwerk-van-vijf-ix-labs-gestart-dankzij-het-nationaal-groeifonds-programma-ciiic -- SHINE, one of five immersive-tech labs in the national IX Labs NL network (motion capture, virtual production, spatial audio), funded by the Nationaal Groeifonds CIIIC programme, opening 2026-11-18. Rotterdam's rationale was extended to mention it.
Documented the general procedure in the runbook's new "Sources" section: how to decide whether a given URL is evidence for a city, a whole market, or a researched opportunity, and a read-modify-write recipe for attaching a source without hitting the existing PUT-is-replace trap.
go build/go vet/go test all green; hydratam seed --dry-run validates the updated seed cleanly.