{ "_readme": [ "部署目標定義檔(leo 2026-07-22 立)。一個目標=一組『帳號+profile+apiBase+專案名+對外網址』。", "", "為什麼要這個檔:5a16484 把 UI 搬 CF Pages 後,這些值從 worker 環境變數變成部署期參數。", "誰部署誰要記得帶 → 帶漏了就退回預設,而預設值對兩邊都不對。實際踩過的:", " · demo 站漏 CONSOLE_PROFILE=rag → 顯示個人版 7 頁駕駛艙(leo 看到『Mira 介面』的真因)", " · 兩站都漏 ARCRUN_API_BASE → apiBase 空字串 → 前端打自己回 405 → 登不進去", " · 兩個帳號有同名 arcrun-console-ui 專案,wrangler 又登入在 uncle6", " → 不指定帳號直接 deploy 會部到 demo 站上(差點蓋掉)", "", "🔴 第四次(2026-08-08 發現,同一種病換了形式):", " 上面三次的『解』是 deploy.targets.json + build.mjs 在 build 時把 profile/apiBase", " 烤進產物。但 t160(e744ad1)為了清世代債把 build.mjs 整支刪掉、改成直接託管 public/,", " **沒有人把『把宣告值寫進產物』這件事接手過去** ⇒ deploy.mjs 照樣在終端機印", " 『profile:full / apiBase:…leo21c…』,推上去的卻是 public/config.js 裡凍住的", " cypher.arcrun.dev + 凍在 4 頁的 VIEWS。也就是說:", " **`npm run deploy:personal` 會把個人站的 API 打到企業 demo 的後端、頁面砍成 4 頁**,", " 而終端機從頭到尾顯示『成功』。(第三次的 accountId 是靠 env 傳的,倖存;前兩次的解等於被還原。)", "", " → 現在的規矩:**產物由 deploy.mjs 依本檔即時產生(.staging/<目標>),", " 推之前驗產物、推之後驗線上網址**。public/ 裡不再放任何跟目標有關的值。", " · public/config.js 已刪除——它是產物不是原始碼(自架站的 /config.js 由", " arcrun-rag 的 build-ui-bundle 動態產生,不吃這個檔)", " · public/console/index.html 的 VIEWS/HOME 只是本機 preview 的預設值,", " 部署時一律被 _profiles 覆寫,覆寫沒命中就中止部署", "", "🔴 第五次(2026-08-08 同日,leo:「已經發生過一次這個錯誤,把舊版界面上到 prod,", " 你要確定不可再犯」):**組態對 ≠ 世代對**。", " 當天實測:三個對外網址的 apiBase/views/home **三項全過**,", " 但它們跑的是 07-22 那一代的 portal(82,911 bytes、舊金色 serif 品牌、Songti 12 處),", " repo 已是 343,969 bytes 的新品牌世代。**組態全綠、介面落後半個月,沒有任何檢查會叫。**", " → 故 verify-live 加第二層「世代指紋」:逐一抓線上資產、遮掉本來就該隨目標不同的", " 那兩行(VIEWS/HOME),其餘按位元組比對 repo public/。", " 不用關鍵字清單——清單要人維護,而舊世代能無聲上線正是因為沒人記得維護它。", "", "版本差異(leo 2026-07-22 定調):頁面都存在,由 profile 決定顯示哪些。", " personal(full) 個人版:7 頁全開,落地駕駛艙", " enterprise(rag) 企業版:只留 搜尋/工作流/設定/card,落地搜尋頁", " 未來擴充:個人版新用戶上限 1、知識庫權限不可用 → 加在對應目標的欄位裡,別再散進部署指令。", "", "🧊 frozen 欄位(2026-08-08 leo 立):標了 frozen 的目標=**這個帳號的資源不歸我們動**。", " deploy 拒絕部署它,verify 連抓都不抓(不 curl、不探測)。", " 它不是「壞掉所以跳過」,是刻意的邊界;要解凍是人的決定(拿掉欄位並說明理由)。", " 目標本身**保留不刪**——刪掉就變成下一個 AI 眼中「從來沒有過這個站」的失憶。", "", "用法:npm run deploy:personal", " npm run deploy:personal -- --dry-run (只產出並驗產物,不推)", " npm run verify (不部署,只驗線上:組態=宣告值、世代=當代)", " npm run verify -- --url <網址> (只問某個網址:它跑的是不是當代的)" ], "_profiles": { "full": { "description": "個人版:7 頁全開,落地駕駛艙", "views": ["cockpit", "search", "card", "workflows", "creds", "inbox", "settings"], "home": "cockpit" }, "rag": { "description": "企業版:搜尋/card/工作流/設定,落地搜尋頁", "views": ["search", "card", "workflows", "settings"], "home": "search" } }, "personal": { "description": "leo 私人實例(原 Mira)。入口 mira.uncle6.me → leo21c worker。", "accountId": "51a01bfa2665bd7bc3fd080dc40cf3e1", "projectName": "arcrun-console-ui", "profile": "full", "brand": "Arcrun", "apiBase": "https://arcrun-cypher-executor.leo21c.workers.dev", "verifyUrls": ["https://mira.uncle6.me", "https://arcrun-console-ui.pages.dev"], "limits": { "maxUsers": 1, "libraryPermissions": false } }, "enterprise": { "frozen": "leo 2026-08-08:「要看範例只在 youlin 網站,不要去碰 uncle6」——這站是 uncle6 帳號的資源,已廢。不更新、不下架、不探測。要動它是 leo 的閘。", "description": "【已凍結・沿革】企業版 demo 站(uncle6 帳號)。保留紀錄用,不是現行部署對象。", "accountId": "58309bb90fd93ad6d0fe0aae99170e9d", "projectName": "arcrun-console-ui", "profile": "rag", "brand": "Arcrun", "apiBase": "https://cypher.arcrun.dev", "verifyUrls": ["https://rag-demo.arcrun.dev"], "limits": { "maxUsers": null, "libraryPermissions": true } } }