feat(wiki): 目錄頁專用存取庫、HASH 去除截短與 H 前綴 #47
1 Participants
Notifications
Due Date
No due date set.
Blocks
#73 feat(wiki): 異常目錄頁改走專用存取庫,並修正目錄列連結恆空
plugins/hooks
#24 feat(wiki): 目錄頁改走專用存取庫,HASH 改為完整 40 碼
plugins/ask
#54 feat(wiki): 體檢目錄頁改走專用存取庫,並補齊設定規格表
plugins/cli
#56 feat(wiki): 五個目錄頁改走專用存取庫,補齊 wiki-url 退出碼分流
plugins/sdlc
#31 feat(wiki): 三個目錄頁改走專用存取庫,比對鍵改用裸 HASH
plugins/log
#63 feat(wiki): 目錄頁專用存取庫入準則,skill-check 加入優化建議流程
plugins/meta
#9 feat(wiki): 監控目錄頁改走專用存取庫,比對鍵改用裸 HASH
plugins/assist
Reference: plugins/gitea#47
Reference in New Issue
Block a user
What:CONTENTS 成為第 15 種頁面類型,解析鏈為 JSC_WIKI_REPO_CONTENTS 到
JSC_WIKI_REPO,刻意不退回型別變數。hash-id 拿掉 8 碼截短與 H 前綴改寫,只留大寫
轉換,輸出完整 40 碼;空輸入改成用法錯誤。新增 page-name.sh、wiki-contents.sh、
migrate-wiki.sh 與 wiki-delete 子命令。
Why:H 前綴會命中 16 個首碼裡的 13 個,還丟掉第 8 碼,把有效熵壓到 28 位元,而且
全庫查不到任何理由紀錄。目錄頁的整列 upsert 原本 14 處只有一處寫成程式,同一段判斷
做 14 次,錯一次就少一筆紀錄。
How:頁名樣式仍收 H 加 7 碼的舊頁,遷移期間讀得到舊頁。wiki-contents.sh 建新頁時
剝掉範本的示範列,否則每個目錄頁第一次建立都會留一列佔位死連結。migrate-wiki.sh
預設只印對照表,--apply 先寫新頁、確認寫成、才刪舊頁;孤兒頁只列不猜,因為 SHA-1
不可逆,新頁名只能靠候選鍵正推。
Who:jsc-gitea
這一批的範圍
跨 8 個存取庫的同一份異動需求:
ask、assist、cli、gitea、hooks、log、meta、sdlc。兩條規則變更:
CONTENTS成為第 15 種頁面類型,解析鏈是JSC_WIKI_REPO_CONTENTS到JSC_WIKI_REPO,刻意不退回型別變數。14 個目錄頁從此同住一庫,內容頁仍各走自己的型別。兩者不再同庫,跨庫沒有 wiki 連結語法,所以連結一律改gitea.sh wiki-url的絕對網址。hash-id只保留大寫轉換,輸出完整 40 碼。原本的 H 前綴會命中 16 個首碼裡的 13 個、還丟掉第 8 碼,把有效熵壓到 28 位元,而且全庫查不到任何理由紀錄。頁名樣式仍收H加 7 碼的舊頁,遷移期間讀得到舊頁。相依與合併順序
jsc-gitea提供三支新腳本(page-name.sh、wiki-contents.sh、migrate-wiki.sh)與wiki-delete子命令,其餘七個存取庫的流程都呼叫它們,所以jsc-gitea要先合併。驗證
八個存取庫全部通過:
lint-scripts.sh、lint-frontmatter.sh、check-behaviors.sh、ste100-lint.sh各退出 0(jsc-ask沒有tools/與hooks/,lint-scripts.sh退 3,如實記錄)。另外gitea/tools/check-wiki-rules.sh與新增的meta/tools/check-page-name.sh都退出 0,JSC_READONLY=1的wire-cli.sh smoke codex退出 0 且行數與腳本自己的斷言相符。三支稽核代理人逐項對照準則的審核檢查清單,翻出的問題都已修並重驗,其中四項會實際咬人:
H開頭的舊頁名被判為不合法、遷移腳本寫目的地前沒先讀、建新頁會把範本示範列留在正式頁上、異常目錄列的網址恆為空字串。部署前要先做的事
Gitea 上還沒有目錄頁專用的存取庫(
knowledges底下目前只有各型別的庫)。合併後要先建好那個庫、設好JSC_WIKI_REPO_CONTENTS,再用gitea/tools/migrate-wiki.sh搬既有頁。那支預設只印對照表,--apply才會動,而且是先寫新頁、確認寫成、才刪舊頁;反推不到來源鍵的頁只列成孤兒,不猜。