The standalone build's source list is explicit, so the two modules the previous commit added were called by validator.js inside XZBT.html without being defined there. Both are now bundled ahead of validator.js and resolution.js, which are their only consumers. visual-validation.js used a local isPlainObject that would have collided with validator.js's own once the bundler strips imports and concatenates into one scope; it uses the shared isRecord of types.js instead. The rebuilt artifact parses and carries validateVisualSubsystem and matchVisualTarget. npm test remains at 131 passing. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_0162Jb1J36judZNT8fHabGVt