4b6cc159b8
實作 pending-changes.md「認證儲存要不要搬回 D1/KV」提案(commit 8286c8a): D61 的病根「重裝時 binding 被安裝器照名字重新指到新建空資源」已被更通用的 shared/resource-rule(Arcrun#97,2026-08-13)解掉,故不再需要繞開 binding 去躲這個病——而繞開的代價正是這次要收的債:Workers Secrets 寫入需要外部 CF_SECRETS_API_TOKEN,這把 token 從安裝那天起就沒被種過,止血版只解掉 「建第一個帳號」這一格,之後的每一次寫入(換密碼/加帳號/改權限)仍卡死。 改動: - console 管理員帳密:家改回 SESSIONS_KV(binding,console-auth.ts) - portal 多人帳號:家改回 KBDB(binding,走 base HTTP API,D38 零 SQL,portal.ts) - D61 認證儲存(CF Workers Secrets)留為舊實例的唯讀回退路徑:讀取零成本、 零外部憑證需求(只有寫入才要 token);登入成功即 best-effort 自動搬進新家, 且**這次登入發出的 session 就直接指向新 record_id**(不必等下一次登入) - D61 的三項「明顯失敗」語意全部保留:auth_store_empty(讀不到不算密碼錯、 不計入鎖定)、/console/setup 遇既有帳號說清楚密碼沒被採用、/health 與 /console/auth-status 吐儲存狀態 - 移除止血版的 x-arcrun-install-token 表頭傳遞機制(installToken 參數)—— 帳號寫入從此不需要任何外部 CF token,這個結構性缺口已從根拔除 測試:cypher-executor 全套 vitest 439/453(14 個既存失敗與本改動無關,已用 git stash 對照 clean checkout 逐一比對檔名確認完全相同);tsc --noEmit 無新增錯誤(3 個既存錯誤同上核實無關)。已跑 build-worker-artifacts.mjs 重打 tier2 bundle,grep 複驗 createKbdbUserRecord/promoteToKbdb 進了成品、 promoteLegacyUser/x-arcrun-install-token 完全從成品消失。 未覆蓋:POST /credentials(一般 workflow API 金鑰儲存)仍依賴 CF_SECRETS_API_TOKEN——這是 01-tech-stack.md 既有的、獨立於 D61 之外的 credential 儲存架構(D19「擁有目錄不擁有內容物」),本提案範圍只涵蓋「認證」 (登入帳密),不涵蓋一般 credential 儲存;07-29 已知缺口仍待另案處理。 不准 merge 進 main(SDD 鐵律③,等總管審過再併);不准部署(D20 出貨閘)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
174 lines
4.8 KiB
JSON
174 lines
4.8 KiB
JSON
{
|
|
"schema": 1,
|
|
"built_for": "arcrun-tier2-worker-artifacts",
|
|
"generated_at": "2026-08-14T04:50:51.373Z",
|
|
"repo_head": "8286c8afec1b225fcec21654cfd1cad3143231fe",
|
|
"repo_dirty": true,
|
|
"workers": [
|
|
{
|
|
"name": "arcrun-cypher-executor",
|
|
"source_dir": "cypher-executor",
|
|
"source_commit": "8286c8afec1b225fcec21654cfd1cad3143231fe",
|
|
"main_module": "worker.mjs",
|
|
"main_file": "arcrun-cypher-executor/worker.mjs",
|
|
"js_bytes": 589935,
|
|
"content_sha256": "8e6487478bc86bd289afaa5192cbd394b80b5235ea1eefb30ed716e6446a9312",
|
|
"modules": [],
|
|
"compat_date": "2025-02-19",
|
|
"compat_flags": [
|
|
"nodejs_compat",
|
|
"global_fetch_strictly_public"
|
|
],
|
|
"requires": {
|
|
"kv": [
|
|
"EXEC_CONTEXT",
|
|
"WEBHOOKS",
|
|
"CREDENTIALS_KV",
|
|
"ANALYTICS_KV",
|
|
"RECIPES",
|
|
"USERS_KV",
|
|
"SESSIONS_KV"
|
|
],
|
|
"d1": [
|
|
{
|
|
"binding": "CREDENTIALS_DB",
|
|
"database_name": "arcrun-kbdb"
|
|
}
|
|
],
|
|
"vectorize": 0,
|
|
"ai": true,
|
|
"vars": {
|
|
"ENVIRONMENT": "production",
|
|
"CF_ACCOUNT_ID": "",
|
|
"WORKER_SUBDOMAIN": "uncle6-me",
|
|
"KBDB_BASE_URL": "https://arcrun-kbdb.uncle6-me.workers.dev",
|
|
"CONSOLE_TENANT": "leo",
|
|
"PORTAL_SESSION_TTL": "604800",
|
|
"PORTAL_SHOW_WORKFLOWS": "admin",
|
|
"GITEA_BASE_URL": "https://git.uncle6.me",
|
|
"GITEA_SPRINT_REPO": "Leo/InkStoneCo",
|
|
"GITEA_SPRINT_DIR": "system-dev/docs/3-specs/autonomy-dispatch"
|
|
}
|
|
},
|
|
"stripped": {
|
|
"services": 13
|
|
},
|
|
"warnings": []
|
|
},
|
|
{
|
|
"name": "arcrun-kbdb",
|
|
"source_dir": "kbdb",
|
|
"source_commit": "614fe448124dbd25d8228e37723473f1704f3a7a",
|
|
"main_module": "worker.mjs",
|
|
"main_file": "arcrun-kbdb/worker.mjs",
|
|
"js_bytes": 151412,
|
|
"content_sha256": "f15e16cca6cefb0d8631759c27fec58cd36262abf6aed7853f3b35c6e8e1e09b",
|
|
"modules": [],
|
|
"compat_date": "2025-02-19",
|
|
"compat_flags": [
|
|
"nodejs_compat"
|
|
],
|
|
"requires": {
|
|
"kv": [],
|
|
"d1": [
|
|
{
|
|
"binding": "DB",
|
|
"database_name": "arcrun-kbdb"
|
|
}
|
|
],
|
|
"vectorize": 0,
|
|
"ai": false,
|
|
"vars": {
|
|
"ENVIRONMENT": "production"
|
|
}
|
|
},
|
|
"warnings": []
|
|
},
|
|
{
|
|
"name": "arcrun-http-request",
|
|
"source_dir": ".component-builds/http_request",
|
|
"source_commit": "1e85dfb49b0e8d81c0854781d93ee4e6a300c7b3",
|
|
"main_module": "worker.mjs",
|
|
"main_file": "arcrun-http-request/worker.mjs",
|
|
"js_bytes": 80079,
|
|
"content_sha256": "cdd97364f277587cbade69e09bb40812c68f26a1e8bc9aa632c65b1b962b0b85",
|
|
"modules": [
|
|
{
|
|
"name": "component.wasm",
|
|
"type": "application/wasm",
|
|
"file": "arcrun-http-request/component.wasm",
|
|
"sha256": "cc15cc785703e7bbb8dbff2d38dc84a4ac24e2f44316182730abae0f170ef133"
|
|
}
|
|
],
|
|
"compat_date": "2025-02-19",
|
|
"compat_flags": [
|
|
"nodejs_compat",
|
|
"global_fetch_strictly_public"
|
|
],
|
|
"requires": {
|
|
"kv": [],
|
|
"d1": [],
|
|
"vectorize": 0,
|
|
"ai": false,
|
|
"vars": {
|
|
"COMPONENT_ID": "http_request"
|
|
}
|
|
},
|
|
"warnings": []
|
|
},
|
|
{
|
|
"name": "arcrun-code",
|
|
"source_dir": "registry/components/code",
|
|
"source_commit": "621cb8d948d61be6202063fd02effb3f538437fe",
|
|
"main_module": "worker.mjs",
|
|
"main_file": "arcrun-code/worker.mjs",
|
|
"js_bytes": 153758,
|
|
"content_sha256": "751634a3fc9a99cc2da662026818d754c48f031d10bff3b3be2d3a8ee2311bd6",
|
|
"modules": [
|
|
{
|
|
"name": "quickjs.wasm",
|
|
"type": "application/wasm",
|
|
"file": "arcrun-code/quickjs.wasm",
|
|
"sha256": "105c3bed22d457e43e3d1c3c1c6959fda62a8fe06f0fc8a985303c3a2be72232"
|
|
}
|
|
],
|
|
"compat_date": "2025-02-19",
|
|
"compat_flags": [],
|
|
"requires": {
|
|
"kv": [],
|
|
"d1": [],
|
|
"vectorize": 0,
|
|
"ai": false,
|
|
"vars": {
|
|
"COMPONENT_ID": "code"
|
|
}
|
|
},
|
|
"warnings": []
|
|
},
|
|
{
|
|
"name": "arcrun-mcp",
|
|
"source_dir": "mcp",
|
|
"source_commit": "1ccee0055ebdb1f6d74094df3e807f56b849fa6f",
|
|
"main_module": "worker.mjs",
|
|
"main_file": "arcrun-mcp/worker.mjs",
|
|
"js_bytes": 1192612,
|
|
"content_sha256": "9bc8dffb34d0f36608a78b2cfeb8ee8b5c793f52b4497f5d4d5f69f70700972e",
|
|
"modules": [],
|
|
"compat_date": "2024-11-27",
|
|
"compat_flags": [
|
|
"nodejs_compat"
|
|
],
|
|
"requires": {
|
|
"kv": [
|
|
"OAUTH_KV"
|
|
],
|
|
"d1": [],
|
|
"vectorize": 0,
|
|
"ai": false,
|
|
"vars": {}
|
|
},
|
|
"warnings": []
|
|
}
|
|
],
|
|
"notes": []
|
|
} |