DSH / Atlas
2026-09-16implementedprocessarchived 2026-09-30

Derive Desktop test versions from the complete dsh version

从完整 dsh 版本派生 Desktop 测试版本

Replacing a dsh prerelease identifier with the update channel name loses the base release identity and changes SemVer ordering. A date alone cannot distinguish multiple test builds of the same base.

English

Problem

Replacing a dsh prerelease identifier with the update channel name loses the base release identity and changes SemVer ordering. A date alone cannot distinguish multiple test builds of the same base.

Decision

The Desktop release rules preserve the complete dsh base for production and derive dated, indexed test versions from that base. The derived version is passed to packaging as an argument rather than written into manifests, and it is derived from the dsh base so another test release cannot append a second date suffix.

The fixed Nightly feed is a distribution address, independent of version derivation. Existing clients continue to use that address with prerelease updates enabled and downgrades disabled. Test distribution does not publish the unsuffixed base. Operators check existing release records and objects before assigning an index.

The installed-update materials decision retains private identities and data isolation. Its Nightly naming examples do not define the test version policy. Historical release receipts and frozen archived records remain evidence of what was actually built.

Alternatives considered

Replace alpha, beta, or rc with nightly. This discards the base prerelease and can sort above its later releases, preventing updates to the intended version line.

Rename the feed with the prerelease identifier. Installed clients would continue checking their existing feed and miss the replacement publication.

Enable downgrade to repair an incorrectly numbered release. A global downgrade allowance changes ordinary update safety. Affected installations use a manual installer; correcting the feed alone cannot migrate them.

Consequences

A test build has an unambiguous base and creation date without changing production version identity. Signing and upload still validate the final equal package versions. Installed-update material allocation accepts dated prerelease versions; retained legacy Nightly material remains readable for audit.

中文

问题

用更新通道名替换 dsh 预发布标识会丢失基础发布身份,并改变 SemVer 排序。只有日期无法区分同一基础版本的多次测试构建。

决策

Desktop 发布规则在 production 中保留完整 dsh 基础版本,并从该基础版本派生带日期和序号的测试版本。派生出的版本作为参数传给打包,不写入清单;它从 dsh 基础版本派生,因此下一次测试发布不会追加第二个日期后缀。

固定 Nightly feed 是分发地址,与版本派生独立。现有客户端继续使用该地址,允许预发布更新并禁止降级。test 分发不发布无后缀基础版本。操作者分配序号前检查已有发布记录和对象。

安装版更新物料决策继续规定私有身份和数据隔离。其中的 Nightly 命名示例不定义测试版本规则。历史发布回执和已冻结归档保留为实际构建的证据。

考虑过的替代方案

用 nightly 替换 alpha、beta 或 rc。 这会丢弃基础预发布标识,并可能排在其后续版本之上,阻止更新到预期版本序列。

按预发布标识重命名 feed。 已安装客户端仍查询原有 feed,将无法获取替换后的发布。

为修复错误版本号而开启降级。 全局允许降级会改变常规更新的安全性。受影响安装使用手动安装包;仅修正 feed 无法迁移它们。

结果

测试构建具有明确的基础版本和创建日期,production 版本身份保持一致。签名与上传仍验证最终各包版本相等。安装版更新物料分配接受带日期的预发布版本;保留的旧 Nightly 物料仍可读取以供审计。