diff --git a/.github/release-canaries.toml b/.github/release-canaries.toml index 9fd1ece3..495c2c3c 100644 --- a/.github/release-canaries.toml +++ b/.github/release-canaries.toml @@ -1,10 +1,12 @@ # Release canaries (the 2026-09-28 ecosystem design, WS10). # -# Real projects built with the candidate mcpp before a release is tagged: -# release.yml runs .github/workflows/release-canaries.yml first, and a canary -# that fails blocks the tag. A regression that only a real project shows -- -# 2026.9.27.1's vcpkg compiler detection on GalTranslPP (#726) -- is then read -# before the release instead of after it. +# Projects of this ecosystem built with the candidate mcpp before a release is +# tagged: release.yml runs .github/workflows/release-canaries.yml first, and a +# canary that fails blocks the tag. +# +# Only the ecosystem's own repositories are canaries. A downstream project (a +# user's application, or a fork of one) validates a release in its own pull +# request after the release, pinning it; it does not gate mcpp's release. # # The candidate is built from the commit being released. A project's own pin # of mcpp (`workspace.mcpp` in its `.xlings.json`) is removed in the project's @@ -38,23 +40,3 @@ commands = [ "$MCPP build -p devtools", "$MCPP test", ] - -[[canary]] -name = "GalTranslPP" -repo = "Sunrisepeak/GalTranslPP" -ref = "build/mcpp-zero-setup" -os = "windows-2025" -timeout = 300 -submodules = true -commands = [ - "$MCPP build --workspace --profile fast-release", - "$MCPP run -p GPPCLI --profile fast-release < /dev/null", - "cd GPPCLI && $MCPP pack --format release --profile fast-release", - "cd GPPGUI && $MCPP pack --format release --profile fast-release", -] -expect = { "$MCPP run -p GPPCLI --profile fast-release < /dev/null" = "GalTransl++ CLI v" } -cache = [ - "~/AppData/Local/vcpkg/archives", - "~/AppData/Local/vcpkg/downloads", - "~/AppData/Local/vcpkg/registries", -] diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b5c5ff90..d84401a5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,12 +15,10 @@ on: required: false jobs: - # A RELEASE IS GATED BY ITS CONSUMERS (the 2026-09-28 design, WS10). Real - # projects are built with the candidate first (.github/release-canaries.toml), - # and the job that creates the tag needs them: a canary that fails blocks the - # tag. 2026.9.27.1 shipped a regression (#726) that only GalTranslPP showed, - # and it was read after the release because the project's pin had to be moved - # by hand. + # A RELEASE IS GATED BY THE ECOSYSTEM'S OWN PROJECTS (the 2026-09-28 design, + # WS10): they are built with the candidate first + # (.github/release-canaries.toml), and the job that creates the tag needs + # them. A downstream project validates the release in its own pull request. canaries: uses: ./.github/workflows/release-canaries.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f35017e..c36ebcf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,11 @@ SPEC-007 §9 与新的 SPEC-008。配套的 mcpp-plugins 0.17.0 以本版本为 832 读出 `no validated artifact snapshot is recorded`)。现在这些目标记录产物的戳记,判定为通过(没有适用的 规则);产物被重新链接时快路径仍交回完整路径。`-v` 下每个拒绝点以一句话写出其条件。 +### 发布流程 + +- **发布门只含本生态的工程。** GalTranslPP 从 `.github/release-canaries.toml` 移除:下游工程(用户的应用或其 + fork)在发布之后于自己的 PR 中固定新版本加以验证,不作为 mcpp 发布的门。门中保留 xlings 与 mcppls。 + ### 兼容性 - 协议升至 14:使用 §9 新接口的构建程序在旧引擎上编译失败并指出缺少的名字;以