uncle6me-web
|
42cb1d7aa9
|
console-ui:把「線上跑的是不是當代的」變成機械判準,並接進部署鏈
leo 2026-08-08:「已經發生過一次這個錯誤,把舊版界面上到 prod,
你要確定不可再犯。」
實測(repo 對線上,純文字資產比對):
repo portal/index.html 343,969 bytes
線上 mira.uncle6.me 82,911 bytes(Songti 12 處,舊金色 serif 品牌)
線上 pages.dev 82,911 bytes(同上)
而 e730b3f 那版 verify-live 對這兩站**三項檢查全過**——因為它驗的是
組態(apiBase、profile 的 views/home),不是世代。
⇒ 一個網址可以組態完全正確、卻對外展示一套早就被淘汰的介面,
而所有機械檢查都說它是綠的。這就是要消滅的狀態。
本次落地:
一、世代指紋(targets.mjs)
逐一取線上/產物的資產(index / portal / console / favicon.svg),
遮掉本來就該隨部署目標不同的那兩行(VIEWS/HOME),其餘按位元組比對。
刻意不用關鍵字清單——清單要人維護,而舊世代能無聲上線正是因為沒人記得維護它。
誠實 trade-off 寫在檔內:repo 改了沒部署就會判紅,那是正確的(那時線上確實不當代)。
二、宣告值真的寫進產物(收掉 e730b3f 標的 WIP)
deploy.mjs 改為由 targets.mjs 產出 .staging/<目標> 再推:
config.js 由宣告值即時產生、console 的 VIEWS/HOME 依 profile 覆寫,
**覆寫沒命中就中止部署**;推之前回頭讀磁碟上那份驗一次(不看腳本印了什麼)。
public/config.js 刪除——它是產物不是原始碼。
三、修好一道從 08-03 起就在誤判的閘
t160 的世代閘比對 portal 全文含「登記新庫」即拒部,而 66f1b59(08-03)
加了一則**說明「已經把它拿掉了」的 HTML 註解** ⇒ 該閘自那天起每次誤判,
npm run deploy:personal 連續五天推不出去。改成剝掉註解後只看可見內容,
並降級為輔助(主判準是指紋)。這正是「手工關鍵字閘會腐爛」的實例。
四、讓它在該跑的時候真的被跑到(不再生出沒人記得執行的腳本)
· deploy.mjs 推完自動回頭驗線上,不過就算本次部署失敗
· .deploy-state.json 只在線上實測通過後才寫,且不進版控
(新 checkout 沒紀錄=狀態未知=該被提醒,而不是繼承別人的綠燈)
· Stop hook 每回合離線比對「手上這一代 vs 最後一次驗過的部署」,
在要說「做完了」的那一刻出聲(實測 0.096s,不連網)
五、uncle6 邊界寫進工具本身(leo 08-08:「要看範例只在 youlin 網站,不要去碰 uncle6」)
deploy.targets.json 的 enterprise 標 frozen:deploy 拒絕部署、verify 連抓都不抓。
目標本身保留不刪——刪掉就變成下一個 AI 眼中「從來沒有過這個站」的失憶。
同源清掉兩處還活著的舊記錄:README 的線上 demo 連結、public/index.html 的註解。
驗收證據見 commit 後的實測輸出(舊世代樣本取自 git 歷史 ad367e4,本機起站餵判準,
未碰任何線上資源)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-08 20:36:18 +08:00 |
|