593defceb1
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>
53 lines
2.3 KiB
Bash
Executable File
53 lines
2.3 KiB
Bash
Executable File
#!/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
|