The maintained Build Registry Package producer cannot choose an unversioned Craft build from its real generated catalog. This is separate from #265: Publish Changed Packages uses the working discovery route, so the immutable 0.0.423.1 repair does not require this helper to be changed.
Reproduced on source 9028f58, inherited unchanged by v0.11.158:
bun -e 'import {resolveBuildVersion} from "./packages/ts-pantry/scripts/resolve-build-version.ts"; console.log(await resolveBuildVersion("craft-native.org"))'Actual: cannot find src/packages/craft-nativeorg.ts. The maintained generated file is src/packages/craft-native.org.ts, with canonical domain: craft-native.org and latest version 0.0.423.1. The helper derives a filename by stripping every dot for non-nested domains. Existing nested DynamoDB tests pass because that branch preserves the domain path. Other generated catalogs also retain legacy flattened filenames such as postgresqlorg.ts, so changing every lookup to a literal domain path is insufficient.
Owning source: packages/ts-pantry/scripts/resolve-build-version.ts, consumed by the version-selection step in .github/workflows/build-registry.yml. Its current test packages/ts-pantry/test/resolve-build-version.test.ts covers real nested DynamoDB plus explicit-version bypasses, but misses a real non-nested catalog whose file retains punctuation. Existing discovery already resolves actual package definitions by their declared domain; filename conversion/resolution should have one shared, collision-safe contract rather than divergent producer guesses.
Acceptance:
- Public
resolveBuildVersion("craft-native.org")returns the latest value from the real catalog, without file copies or a Craft-only override. - Real legacy flattened and nested domains still resolve correctly, explicit exact versions retain their current behavior, and returned metadata must declare the requested canonical domain.
- Add meaningful public-helper regressions for all three actual catalog layouts and preserve traversal/output-injection rejections.
- Keep generated catalog identities and accepted registry artifacts immutable.
Related delivery investigation: #227 and #266. Observed during #265 read-only publication preview; no producer dispatch or installation was used to reproduce it. Original failure log retained locally under /tmp/settlers-native-423-normal-install/registry-readonly/release-selection-preview/unversioned-helper-failure.log.