Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 7 additions & 25 deletions .github/release-canaries.toml
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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",
]
10 changes: 4 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 新接口的构建程序在旧引擎上编译失败并指出缺少的名字;以
Expand Down
Loading