release(1.19.0): 掛上機械閘+出貨版號與 changelog(W2 Phase 4-5,收尾)

SDD: docs/3-specs/jdd-dual-profile — 33/33 編號 task 全數完成。

■ Phase 4 把閘掛上去
- scripts/check-all.sh:三道閘+腳本語法的總入口(一個習慣,不是三個要記得的步驟)
- .githooks/pre-commit + core.hooksPath:跑在人的機器上、commit 那一刻
  不掛雲端 workflow——本組織禁止 repo 掛自動化(歷史上那正是帳號被停權的原因)

■ Phase 5 出貨
- VERSION 1.18.0 → 1.19.0(兩處:template/.claude/ 與 template/system-dev/)
- CHANGELOG 1.19.0:用「你會多出什麼」的語言寫,不列檔名
- 🐛 順手補回 **1.18.0 完全沒有 changelog 紀錄**這件事——
  那一版發佈了、功能也出貨了,但更新跑完最後一行正是叫使用者「改了什麼看 CHANGELOG」,
  版號動了卻查不到動了什麼=等於沒交代。依實際 commit 內容補寫。

■ 七題驗收(全部附實測輸出)
-  G2 考生改考卷被攔(命門):engineer 改 journeys.md → exit 2;
     連「把考題藏進 status.md」也擋,6/6
-  G3 進度以站計量:起牀推「J-1 已點亮 n/m 站」,收工列未亮站並禁用任務數當理由
-  G4 憲法分流:總管版技術軌關鍵字 0、成員版上游指針 8,界標各 4/4
-  G6 實例改機制被攔:4/4(框架開發放行、使用者自訂插槽放行)
-  G7 框架混入實例名:指名 sdd-check.md:77,exit 1
- ◐ G1 PM 優先補接縫:機制齊了,但這是行為題,腳本證明不了 → 不標綠
- ◐ G5 政策包即插即用:插槽就位,政策包本體在 W3

■ 安裝實測:兩個乾淨環境各 1 秒、48/54 檔、版本 1.19.0、profile 正確
  (預測①「各 < 10 分鐘」達標;誠實註記:來源走本機檔案,比真實網路快)

🔴 狀態=**等發佈**,不是 :更新來源是公開 GitHub raw,
   只推 Gitea 的話外部實例抓不到 1.19.0。開閘由 leo 決定。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-06 00:34:23 +08:00
parent 2f5d9f3bb2
commit 593defceb1
6 changed files with 144 additions and 11 deletions
+52
View File
@@ -0,0 +1,52 @@
#!/bin/bash
# check-all.sh — 框架的機械閘總入口(commit 前跑這一支就好)
#
# 為什麼要有總入口:三支閘分開跑,遲早有人只記得跑其中一支。
# 一個入口 = 一個習慣,而不是三個要記得的步驟。
#
# 掛法(版控在 .githooks/,跟著 repo 走,不必每台機器重設):
# git config core.hooksPath .githooks
#
# 為什麼不用 CI workflow:本組織的鐵律禁止在 repo 上掛自動化 workflow
#(歷史上正是「一個 push 觸發大量自動化」把帳號弄到被停權)。
# 閘要跑在**人的機器上、commit 的那一刻**,不是掛在雲端等事件。
set -uo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$REPO_ROOT"
FAIL=0
run() { # $1=名稱 $2...=命令
local name="$1"; shift
printf '── %s\n' "$name"
if "$@"; then :; else FAIL=1; fi
echo ""
}
echo "════════════════════════════════════════════════"
echo "🔎 框架機械閘(commit 前檢查)"
echo "════════════════════════════════════════════════"
run "框架不含實例資料" bash scripts/check-no-instance-names.sh
run "已發佈路徑只增不移" bash scripts/check-legacy-paths.sh
run "單一活性規格" bash system-dev/scripts/sdd-active-check.sh docs/3-specs
# 腳本語法(壞掉的 shell 推出去,實例的更新機制就跟著壞)
printf '── 腳本語法\n'
SYNTAX_BAD=0
for f in scripts/*.sh template/.claude/hooks/*.sh template/.claude/hooks/lib/*.sh \
template/profiles/*/hooks/*.sh template/scripts/*.sh; do
[ -f "$f" ] || continue
bash -n "$f" 2>/dev/null || { echo " ❌ 語法錯誤:$f"; SYNTAX_BAD=1; FAIL=1; }
done
[ $SYNTAX_BAD -eq 0 ] && echo " ✅ 全部通過"
echo ""
if [ $FAIL -ne 0 ]; then
echo "════════════════════════════════════════════════"
echo "❌ 有檢查沒過——先修,別 commit"
echo "════════════════════════════════════════════════"
exit 1
fi
echo "✅ 全部通過"
exit 0