Skip to content

Commit 92848f6

Browse files
committed
release: the release gate holds the ecosystem's own projects only; GalTranslPP is validated in its own pull request after a release
The canary built a downstream fork (Sunrisepeak/GalTranslPP) on windows-2025 before every tag, so a release waited on an application's build of up to five hours and its failures. A downstream project pins a release and validates it in its own pull request. xlings and mcppls remain.
1 parent b8e326e commit 92848f6

3 files changed

Lines changed: 16 additions & 31 deletions

File tree

‎.github/release-canaries.toml‎

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
# Release canaries (the 2026-09-28 ecosystem design, WS10).
22
#
3-
# Real projects built with the candidate mcpp before a release is tagged:
4-
# release.yml runs .github/workflows/release-canaries.yml first, and a canary
5-
# that fails blocks the tag. A regression that only a real project shows --
6-
# 2026.9.27.1's vcpkg compiler detection on GalTranslPP (#726) -- is then read
7-
# before the release instead of after it.
3+
# Projects of this ecosystem built with the candidate mcpp before a release is
4+
# tagged: release.yml runs .github/workflows/release-canaries.yml first, and a
5+
# canary that fails blocks the tag.
6+
#
7+
# Only the ecosystem's own repositories are canaries. A downstream project (a
8+
# user's application, or a fork of one) validates a release in its own pull
9+
# request after the release, pinning it; it does not gate mcpp's release.
810
#
911
# The candidate is built from the commit being released. A project's own pin
1012
# of mcpp (`workspace.mcpp` in its `.xlings.json`) is removed in the project's
@@ -38,23 +40,3 @@ commands = [
3840
"$MCPP build -p devtools",
3941
"$MCPP test",
4042
]
41-
42-
[[canary]]
43-
name = "GalTranslPP"
44-
repo = "Sunrisepeak/GalTranslPP"
45-
ref = "build/mcpp-zero-setup"
46-
os = "windows-2025"
47-
timeout = 300
48-
submodules = true
49-
commands = [
50-
"$MCPP build --workspace --profile fast-release",
51-
"$MCPP run -p GPPCLI --profile fast-release < /dev/null",
52-
"cd GPPCLI && $MCPP pack --format release --profile fast-release",
53-
"cd GPPGUI && $MCPP pack --format release --profile fast-release",
54-
]
55-
expect = { "$MCPP run -p GPPCLI --profile fast-release < /dev/null" = "GalTransl++ CLI v" }
56-
cache = [
57-
"~/AppData/Local/vcpkg/archives",
58-
"~/AppData/Local/vcpkg/downloads",
59-
"~/AppData/Local/vcpkg/registries",
60-
]

‎.github/workflows/release.yml‎

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@ on:
1515
required: false
1616

1717
jobs:
18-
# A RELEASE IS GATED BY ITS CONSUMERS (the 2026-09-28 design, WS10). Real
19-
# projects are built with the candidate first (.github/release-canaries.toml),
20-
# and the job that creates the tag needs them: a canary that fails blocks the
21-
# tag. 2026.9.27.1 shipped a regression (#726) that only GalTranslPP showed,
22-
# and it was read after the release because the project's pin had to be moved
23-
# by hand.
18+
# A RELEASE IS GATED BY THE ECOSYSTEM'S OWN PROJECTS (the 2026-09-28 design,
19+
# WS10): they are built with the candidate first
20+
# (.github/release-canaries.toml), and the job that creates the tag needs
21+
# them. A downstream project validates the release in its own pull request.
2422
canaries:
2523
uses: ./.github/workflows/release-canaries.yml
2624

‎CHANGELOG.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ SPEC-007 §9 与新的 SPEC-008。配套的 mcpp-plugins 0.17.0 以本版本为
6262
832 读出 `no validated artifact snapshot is recorded`)。现在这些目标记录产物的戳记,判定为通过(没有适用的
6363
规则);产物被重新链接时快路径仍交回完整路径。`-v` 下每个拒绝点以一句话写出其条件。
6464

65+
### 发布流程
66+
67+
- **发布门只含本生态的工程。** GalTranslPP 从 `.github/release-canaries.toml` 移除:下游工程(用户的应用或其
68+
fork)在发布之后于自己的 PR 中固定新版本加以验证,不作为 mcpp 发布的门。门中保留 xlings 与 mcppls。
69+
6570
### 兼容性
6671

6772
- 协议升至 14:使用 §9 新接口的构建程序在旧引擎上编译失败并指出缺少的名字;以

0 commit comments

Comments
 (0)