17dea59026
Per review: the method/version vocabulary is now closed TYPE unions (@ts-check + jsdoc typedefs - InstallerVersion, InstallMethod, UpdateMethod - checked with tsc --checkJs, which rejects a SPEC entry outside the unions; verified by corrupting a copy: 6 errors) instead of runtime KNOWN_METHODS/ALLOWED_VERSIONS sets. validateEntry and routeWants are deleted with all the paranoia: the generator always emits every OS matrix and the dispatch route filter moved to plain job-level ifs in install-e2e.yml, where the OS jobs already live. secondUpdate is typed never[] so declaring one is a type error until a leg implements it. Anything types cannot catch is self-evident on the next CI run.