t177 更正:取回 08-02 的原版修法,撤掉我重寫的次級版本

【leo 08-04 質問】「這不是先前改過為什麼又出現?你去查看 wiki,是不是你沒看 wiki 就改?」
——**是。查證屬實,而且比沒查更糟。**

【事實】08-02 commit `dde7a5b` 已完整修過這個 bug(t170 daemon 側),
但它**只在 `fix/cis-round3-landing-favicon` 分支**,`feat/daemon` 不含它。
我在 feat/daemon 上看到沒修過的舊 code,就當新 bug 從頭修了一遍。

【而且我修得比原版差】
  08-02 原版:isSemverLike 辨格式 → compareSemver **逐段整數比較**
              (能擋 "1.10.0" < "1.9.0" 這個經典坑)+ minCloudRelease 最低版本常數
  我今天版:  只判「是不是 semver」,是就放行 ⇒ 無法表達「semver 世代的最低相容版本」
⇒ 本 commit **取回 08-02 原版**(git checkout dde7a5b -- ...),
   刪掉我另建的重複測試檔 cloudversion_test.go,改用原版在 main_test.go 的 8 則。

【測試】兩模組全綠;8 則逐項通過,含「semver 1.10.0 比 1.9.0 新(防字串比較)」
——那則正是我的版本表達不出來的。

【病根】hook 給的是 wiki grep 命中行,而那幾行**不含「已修過」的線索**
(關鍵字 compareSemver/isSemverLike 不在搜尋詞裡)。我把「hook 沒提」當成「沒人修過」,
且跳過了 `git log --all -S` 這個五秒就能做的機械檢查。
⇒ 已在頂層 InkStoneCo 補 hook:改檔時一併列出**該檔在所有分支的近期 commit**。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-04 09:51:48 +08:00
parent e516e0dbce
commit 1e139a2e7e
5 changed files with 155 additions and 131 deletions
+12 -16
View File
@@ -38,31 +38,27 @@ func TestCloudVersionStale(t *testing.T) {
// /health 不可達(解析失敗/逾時)→ 靜默不判定
name: "解析失敗(/health 不可達)", version: "", checkOK: false, wantStale: false,
},
// ── t177 回歸守衛(wiki 事故 D)──────────────────────────────────────
// leo 08-04 實撞:「刷新完兩個雲端,為什麼還要我去更新?」——實例已 1.4.6
// 卻仍掛「知識庫需要更新」。真兇=字串比較 `"1.4.6" < "2026-07-28"` 恆為 true
//(因為 "1" < "2")⇒ 任何 semver 都被判過舊,更新幾次都消不掉。
// 🔴 2026-08-02 迴歸守衛(leo 實撞:兩帳號都更新到 1.4.1,卻**都**顯示需要更新且消不掉)。
// 病根:舊實作 `head < minCloudBuilt` 是**字串比較**semver 進來後
// "1.4.1" < "2026-07-28" 恆為真 ⇒ 最新版被判過舊。
// 這幾則若變紅,代表版本比較又退回字串比較,或新格式沒被辨識。
{
name: "t177 semver 最新版不得判過舊(leo 實撞的那一版)",
version: "1.4.6", checkOK: true, wantStale: false,
name: "semver 最新版1.4.1)不該被判過舊", version: "1.4.1", checkOK: true, wantStale: false,
},
{
name: "t177 semver 舊版也不判過舊(semver 世代一律視為新契約)",
version: "1.4.1", checkOK: true, wantStale: false,
name: "semver 剛好達標(1.4.0", version: "1.4.0", checkOK: true, wantStale: false,
},
{
name: "t177 semver 帶 +sha 後綴同樣正確解析",
version: "1.4.6+deadbee", checkOK: true, wantStale: false,
name: "semver 過舊(1.3.9)需要更新", version: "1.3.9", checkOK: true, wantStale: true,
},
{
// 相容性守衛:舊格式仍要能判出過舊,否則尚未更新的老實例會被漏報
name: "t177 舊日期格式仍正確判過舊(不可為修 semver 而漏報老實例)",
version: "2026-07-01+abc1234", checkOK: true, wantStale: true,
// 字串比較會誤判成 "1.10.0" < "1.9.0";整數逐段比較才對
name: "semver 1.10.0 比 1.9.0 新(防字串比較)", version: "1.10.0", checkOK: true, wantStale: false,
},
{
// 非 semver、非日期的怪字串 → 走舊路徑(字串比較),不當成 semver 放行
name: "t177 怪字串不得被誤認為 semver",
version: "1.4", checkOK: true, wantStale: true,
// 舊格式仍須正確辨識——兩種格式並存期間,老實例不可被誤判成最新而收不到提示
name: "舊格式過舊仍要判過舊(相容)", version: "2026-07-01+deadbee", checkOK: true, wantStale: true,
},
}
for _, tc := range cases {