release: wiki 目錄頁專用存取庫、HASH 完整 40 碼、閘門依 CLI 分流 #25

Merged
admin merged 2 commits from develop into master 2026-09-02 04:20:42 +00:00
Member

把 develop 上累積的變更釋出到 master。合併之後,這些變更才會透過 marketplace 到達每一台機器。

這一版帶了什麼

一、wiki 目錄頁進專用存取庫

CONTENTS 成為第 15 種頁面類型,解析鏈是 JSC_WIKI_REPO_CONTENTS 到 JSC_WIKI_REPO,刻意不退回型別變數。14 個目錄頁從此同住一庫,內容頁仍各走自己的型別。兩者不再同庫,跨庫沒有 wiki 連結語法,所以目錄頁指向內容頁的連結一律改成 gitea.sh wiki-url 的絕對網址。

目錄頁的整列 upsert 收成一支 jsc-gitea/tools/wiki-contents.sh,取代原本 14 處只有 1 處寫成程式的手工流程。

二、wiki 頁 HASH 去除截短與 H 前綴

hash-id 只保留大寫轉換,輸出完整 40 碼。原本的 H 前綴會命中 16 個十六進位首碼裡的 13 個,還丟掉第 8 碼,把有效熵壓到 28 位元,而且全庫查不到任何理由紀錄。頁名樣式仍收 H 加 7 碼的舊頁,遷移期間讀得到舊頁。

三、SDLC 能力閘門依 CLI 分流

閘門的模型來源改成只讀屬於當前 CLI 的那一份,政策改為 fail-closed:判不出 CLI、判不出模型、模型不在能力標籤表上,三種一律擋下,每一則擋下的訊息都帶兩條逃生門。階段鎖狀態檔改成 $JSC_HOME/sessions/{CLI 代號}-{sid}.stage,舊路徑仍讀得到。

四、skill-check 加入優化與建議流程

Group 3 先讀上一輪決議,不重複掃、不重複問;建議表加上「決議」與「決議日期」兩欄;新增步驟 8 把稽核結果寫進 SKILLSET 頁。Group 1 補進三支現成但沒人呼叫過的檢查腳本。

五、順手修掉的既有缺陷

  • 異常目錄頁那一列的連結一直都是空字串:頁名的 hash 帶時間戳、每次都是新頁,網址在寫入前就取,必然 404 又被靜默吞掉。
  • 註解掃描的頁面編號樣式只收 8 碼純十六進位,對約八成的 H 開頭舊頁編號漏偵測。
  • 設定規格表漏掉 JSC_WIKI_REPO_MONITOR,體檢看不到它而孤兒掃描還會誤報;另有指向不存在頁面的殘留項目。
  • 體檢與巡檢的主機名一個由模型填、一個由程式算,短名對上 FQDN 會讓同一台機器分裂成兩張頁。
  • 四個目錄頁拿含網址的儲存格當比對鍵,換主機或換存取庫就比對不到,每跑一次多附一列。

升級後的一次性代價

階段鎖狀態檔改名,所以每台機器第一次啟動會清一次重啟閘門——起始檔不存在,看起來像新的工作階段。只發生一次,已實測連跑三次不會再清。升級當下正好有閘門升著的話,那一次會被放下。

部署後要做的事

wiki 既有頁要用 jsc-gitea/tools/migrate-wiki.sh 搬。先部署再搬:舊版技能算的是 8 碼頁名,先搬會讓舊版找不到頁、照範本另外開一份新的。那支預設只印對照表,--apply 才真的動,而且是先寫新頁、確認寫成、才刪舊頁。

把 develop 上累積的變更釋出到 master。合併之後,這些變更才會透過 marketplace 到達每一台機器。 ## 這一版帶了什麼 ### 一、wiki 目錄頁進專用存取庫 `CONTENTS` 成為第 15 種頁面類型,解析鏈是 `JSC_WIKI_REPO_CONTENTS` 到 `JSC_WIKI_REPO`,刻意不退回型別變數。14 個目錄頁從此同住一庫,內容頁仍各走自己的型別。兩者不再同庫,跨庫沒有 wiki 連結語法,所以目錄頁指向內容頁的連結一律改成 `gitea.sh wiki-url` 的絕對網址。 目錄頁的整列 upsert 收成一支 `jsc-gitea/tools/wiki-contents.sh`,取代原本 14 處只有 1 處寫成程式的手工流程。 ### 二、wiki 頁 HASH 去除截短與 H 前綴 `hash-id` 只保留大寫轉換,輸出完整 40 碼。原本的 `H` 前綴會命中 16 個十六進位首碼裡的 13 個,還丟掉第 8 碼,把有效熵壓到 28 位元,而且全庫查不到任何理由紀錄。頁名樣式仍收 `H` 加 7 碼的舊頁,遷移期間讀得到舊頁。 ### 三、SDLC 能力閘門依 CLI 分流 閘門的模型來源改成只讀屬於當前 CLI 的那一份,政策改為 fail-closed:判不出 CLI、判不出模型、模型不在能力標籤表上,三種一律擋下,每一則擋下的訊息都帶兩條逃生門。階段鎖狀態檔改成 `$JSC_HOME/sessions/{CLI 代號}-{sid}.stage`,舊路徑仍讀得到。 ### 四、skill-check 加入優化與建議流程 Group 3 先讀上一輪決議,不重複掃、不重複問;建議表加上「決議」與「決議日期」兩欄;新增步驟 8 把稽核結果寫進 SKILLSET 頁。Group 1 補進三支現成但沒人呼叫過的檢查腳本。 ### 五、順手修掉的既有缺陷 - 異常目錄頁那一列的連結**一直都是空字串**:頁名的 hash 帶時間戳、每次都是新頁,網址在寫入前就取,必然 404 又被靜默吞掉。 - 註解掃描的頁面編號樣式只收 8 碼純十六進位,對約八成的 `H` 開頭舊頁編號漏偵測。 - 設定規格表漏掉 `JSC_WIKI_REPO_MONITOR`,體檢看不到它而孤兒掃描還會誤報;另有指向不存在頁面的殘留項目。 - 體檢與巡檢的主機名一個由模型填、一個由程式算,短名對上 FQDN 會讓同一台機器分裂成兩張頁。 - 四個目錄頁拿含網址的儲存格當比對鍵,換主機或換存取庫就比對不到,每跑一次多附一列。 ## 升級後的一次性代價 階段鎖狀態檔改名,所以每台機器第一次啟動會清一次重啟閘門——起始檔不存在,看起來像新的工作階段。只發生一次,已實測連跑三次不會再清。升級當下正好有閘門升著的話,那一次會被放下。 ## 部署後要做的事 wiki 既有頁要用 `jsc-gitea/tools/migrate-wiki.sh` 搬。**先部署再搬**:舊版技能算的是 8 碼頁名,先搬會讓舊版找不到頁、照範本另外開一份新的。那支預設只印對照表,`--apply` 才真的動,而且是先寫新頁、確認寫成、才刪舊頁。
jiantw83 added 2 commits 2026-09-02 04:11:48 +00:00
What:QUESTION_CONTENTS 改由 wiki-repo CONTENTS 解析並透過 wiki-contents.sh
upsert 寫入,QUESTION_{HASH} 仍走 wiki-repo QUESTION。頁名雜湊改為完整 40 碼
大寫,不截短、不加前綴。目錄頁指向紀錄頁的連結改用 wiki-url 的絕對網址。

Why:目錄頁的用途是索引,散在各型別的存取庫就得逐庫翻。集中之後兩頁不再同庫,
[[...]] 只在同一個 wiki 內解析,所以連結必須改絕對網址。

How:目錄頁寫入失敗不再吞掉答案——JSC_WIKI_REPO_CONTENTS 在設定規格表是
fix=ask,只能靠這支技能問到值,答案掉了就永遠問不到,變數也永遠設不起來。
wiki-url 的 4、5、7、8 各自分流,取不到網址就整列不寫。

Who:jsc-ask
Reviewed-on: #24
admin approved these changes 2026-09-02 04:20:38 +00:00
admin merged commit 26185adc3f into master 2026-09-02 04:20:42 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/ask#25