From 65ebd8113a353d1cc7e2662652384132442b8c58 Mon Sep 17 00:00:00 2001 From: speak-agent Date: Wed, 5 Aug 2026 18:18:37 +0800 Subject: [PATCH] =?UTF-8?q?chore(release):=20bootstrap=20pin=20->=202026.8?= =?UTF-8?q?.5.2,=E5=B9=B6=E7=BA=A0=E6=AD=A3=E4=B8=8A=E4=B8=80=E6=9D=A1?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E9=87=8C=E7=9A=84=E9=94=99=E8=AF=AF=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 发布收尾:2026.8.5.2 已发布并进入 xim-pkgindex(#506 已合),按不变式把 `.xlings.json` 的 bootstrap pin 设成刚发布的这一版。 同时**纠正我在 PR#357 里写进 check_version_pins.sh 的解释**。那条注释断言 「xim-pkgindex 只保留一个 mcpp 版本,所以旧 pin 会失效」—— **这是错的**。直接查过 `pkgs/m/mcpp.lua`:它保留着 17 个版本,包括出问题的 2026.8.4.1 与 2026.8.3.2,而且 每个都带 aarch64 资产。 已确证的只是**现象**,不是机制: pin 2026.8.3.2 -> not found,available: 2026.8.4.1 pin 2026.8.4.1 -> not found,available: 2026.8.5.1 两次相隔一个发布,而 `available:` 每次只列**一个**版本 —— 恰好是当时最新的那个。 所以那个 job 里的解析器没有看到完整索引,真正的机制尚未查清。注释改为只陈述现象、 明说机制未知,并保留可操作的规则:**发布 N 之后,收尾 commit 把 pin 设成 N**。 写一条自己没验证过的机制进注释,比不写更糟 —— 它会把下一个人引到错误的方向。 --- .github/tools/check_version_pins.sh | 29 +++++++++++++++++++---------- .xlings.json | 2 +- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.github/tools/check_version_pins.sh b/.github/tools/check_version_pins.sh index b108e478..438005d8 100755 --- a/.github/tools/check_version_pins.sh +++ b/.github/tools/check_version_pins.sh @@ -141,18 +141,27 @@ fi # version that did not exist yet, and every job died with # `package 'mcpp@' not found`. # -# But it may lag by exactly ONE release, no more. xim-pkgindex carries a -# SINGLE mcpp version — the newest — so the moment a release lands, every -# older pin names something that is no longer installable: +# In practice it must equal the NEWEST published release, not merely some +# released version. Observed twice, one release apart, in the aarch64 +# fresh-install job: # -# [error] xlings: version '2026.8.4.1' not found for 'mcpp' -# [error] available: 2026.8.5.1 +# pin 2026.8.3.2 -> [error] xlings: version '2026.8.3.2' not found for 'mcpp' +# [error] available: 2026.8.4.1 +# pin 2026.8.4.1 -> [error] xlings: version '2026.8.4.1' not found for 'mcpp' +# [error] available: 2026.8.5.1 # -# which is how the aarch64 fresh-install job died after 2026.8.5.1 shipped. -# The rule that satisfies both directions: after publishing release N, the -# post-release commit sets this pin to N. Never ahead (check (c)), never -# more than one behind (not checkable here — it needs the index — so it -# surfaces as the error above, and this note is where to look when it does). +# Note what `available:` lists: exactly ONE version, the newest release at +# that moment. That is NOT because the index dropped the others — checked +# directly, pkgs/m/mcpp.lua carries 17 versions including both pins above, +# each with aarch64 assets. So the resolver in that job is not seeing the +# full index, and the mechanism is not yet understood; what is established +# is the pattern and its fix. +# +# The operational rule that satisfies both directions: after publishing +# release N, the post-release commit sets this pin to N. Never ahead +# (check (c) enforces that), and in practice never behind either. This is +# not checkable here — it needs the index — so it surfaces as the error +# above, and this note is where to look when it does. # (c) …and the bootstrap pin must never run AHEAD of the version being built. # Four-key numeric sort, so the date scheme orders correctly (a plain diff --git a/.xlings.json b/.xlings.json index b030603e..3a76a836 100644 --- a/.xlings.json +++ b/.xlings.json @@ -1,5 +1,5 @@ { "workspace": { - "mcpp": "2026.8.5.1" + "mcpp": "2026.8.5.2" } }