/** * The AST-pass rules (DESIGN-MCP-V2 §6/§10, Funde F-G/F-J): correctness checks that * need to know *which attribute belongs to which element* — what the line-based * regex rules in `rules.ts` structurally cannot see. They run on the flat element * list from {@link scanMarkup}, scanned once per lint and shared via a tiny cache. * * All are scoped to Urbicon UI's own components (a curated name set) so they never * fire on a third-party `