Simpler rules eliminate ~60 .properties overrides by reading the
existing isNightly + (empty) semver signal correctly:
- New rule: isNightly=true with an *empty* semver classifies as
'nightly' (not 'experimental'). CE convention is that a parenthesised
tag like "(contracts)" or "(modules)" names a *specific* feature
fork, while no semver at all means "the canonical nightly build,
nothing fancy". This catches wasm32clang, flangtrunk, lc3-trunk,
cpp4oclclspv, every dotnettrunk* compiler, rustccggcc-master, and
mrustc-master without a single per-compiler override.
- New sub-rule on Rule 1: a real semver with a prerelease segment
(1.28.0-preview, 1.0.0-rc1) classifies as 'nightly' if isNightly is
also set, else 'prerelease'. micropython-preview is the in-tree
example: maintainer's explicit isNightly=true means "rolling preview
branch", not "RC of an upcoming release". dxc 1.8.2306-preview (no
isNightly) stays 'prerelease', as it should.
c++ feature-fork compilers (gcontracts-trunk, gcc-modules-trunk,
glambda-p2034-trunk, etc.) still hit Rule 6 → 'experimental' because
their semver is non-empty (a parenthesised feature name).
Reverts all releaseTrack=nightly overrides from commits 009048206
(Rust master compilers) and f2980f40c (the dotnet/wasm/lc3/clspv/flang
sweep) — the new heuristic handles every one of them. Audit script
confirms zero remaining misclassifications and zero overrides needed
across all etc/config/*.properties.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>