Three findings from the GitHub Copilot reviewer, all valid:
- Reject non-string releaseTrack overrides early. toProperty in
lib/utils.ts coerces "true"/"false"/numeric strings to typed values,
so a misconfigured `releaseTrack=true` would have arrived as a boolean
and crashed on .trim() with a cryptic TypeError. Type-check the raw
value first and emit the same clear assertion message we use for
invalid string values.
- Backfill releaseTrack on remote-fetched compilers too. fetchRemote()
pulls CompilerInfo[] over HTTP from another CE instance; older
remotes won't include the field. Without backfill those compilers
would land with releaseTrack undefined, breaking the type contract
for any consumer that reads it. Apply the same inferReleaseTrack +
isReleaseTrack guard used by loadPrediscovered.
- Fix the docs/AddingACompiler.md "stable" bullet to match the
implemented prerelease-segment rule: a real semver with a `-rc1` /
`-preview` suffix classifies as `prerelease`, not `stable`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>