Per-domain config fails fast on cross-domain URL bugs before any measurement run. A copy-paste host mistake (e.g. autorevue section pointing at auto.cz) surfaces as a clear config error instead of later masquerading as "tracking broken".
The check is invocable as a documented script (npm run config:check) using only tsc-typed code with no new ESLint dependency. Validation of existing config shape only — NOT a config authoring UI and NOT schema redesign.
homepage URL.The top JSON key is NOT the host (abc → www.abicko.cz). Domain identity derived from URLs via the built-in URL API (audit flagged deprecated url-parse — do not add it here).
Fields checked: homepage, nextpage, gallery, part, player. selectors excluded (CSS/XPath, not URLs).
Strictness: same eTLD+1; tolerate subdomain differences (www., bare, m.). Different eTLD+1 is the error this phase catches. Missing field → silent skip. Non-parseable → reported.
npm run config:check + prestart gate.Validates every file in data/ and data/config-per-domain/ by default; accepts an optional single-file path argument. Wired to prestart so production runs fail fast.
npm run config:check and uses only tsc-typed code with no new ESLint dependency.