fix: plans×code 修復輪 Wave B(合規 code 修+E2E 證據) - #322
Conversation
…F11) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
…例(R8) - TEST_DATA_PROJECT_IDS csv env → GET /api/dev/test-data-projects(唯讀) - A1 local_fs 下拉命中清單者加〔測試資料〕;MinIO 不標(真實資料監控) - app.ts 僅 import+單行 mount(手冊 §1.13 加性慣例) - .env.example 註記被工作區權限規則保護未寫入,key 說明見 config.ts 註解與 PR body Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
- 已接能力歸 A1 管線/M4 連動基建;A4 條目改權威語意搜尋(title/prov 引 data.ts 單一來源) - 碰撞條目改 A3 clash(未開工·ifcclash 已選型,p1);未列權威項不掛編號 - feature panel 顯示文字 A3→A1/A8→A1;gov-a8-*、gov-run-rulecheck testid 契約保留 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
viewer/gpu/a6-a10→核心治理;sessions/instances/minio→OMNIVERSE RUNTIME;runtime→落地端控制台 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
比照 sibling useConversionActions 的 race 解法;用 in-flight 共享而非 boolean 丟棄,
重入呼叫者拿同一份證據結果,不產生假 {jobsOk:false} 錯誤
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
…173 分離部署斷裂) 保留「HTTP 狀態碼原樣顯示」誠實語意(不改走會 throw 的 jsonGet——比原 plan 更小的正確修法); 7 個 fetch 站點全套 coordinatorUrl;testid 與輸出格式零變 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
…8-route) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
…tion 已登記手冊 §1.1) 僅 succeeded run 重建;ifc_type/ifc_name 未持久化→空值誠實留白;查無 404、未完成 409 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
|
Warning Review limit reached
Next review available in: 9 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (24)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…spec gate) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3596f01dae
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // R8(2026-07-10):local_fs 測試 fixtures 專案清單(如 270,889,990,271),由部署區 .env 注入; | ||
| // default 空=不標。前端據 GET /api/dev/test-data-projects 渲染「測試資料」badge—— | ||
| // 編號不進程式碼(D-05),誠實標記由後端 config 驅動(鐵律 #3)。 | ||
| testDataProjectIds: string[]; |
There was a problem hiding this comment.
Add the new config field to test fixtures
Adding testDataProjectIds as a required CoordinatorConfig property leaves existing full config literals incomplete; I ran npm run build in bim-review-coordinator and tsc fails with TS2741 on tests/unit_kitpool.test.ts because defaultConfig is missing this field. The coordinator verify gate stays red until those fixtures include the new value (for example an empty list) or the field is made optional/defaulted at the type boundary.
Useful? React with 👍 / 👎.
| else setMwErr(`${t("未連線 coordinator /api/external/minio-watch/status:", "Not connected to coordinator /api/external/minio-watch/status: ")}${String(mwRes.reason)}`); | ||
| setBusy(false); | ||
| return { jobsOk, mwOk }; | ||
| if (loadInFlightRef.current) return loadInFlightRef.current; |
There was a problem hiding this comment.
Force post-action refreshes to fetch fresh state
This shares any currently running load() request, not just duplicate calls from the same event loop. In the MD conversion pane the row action buttons remain usable while a manual Refresh is in progress, so if an operator starts Refresh and then confirms prioritize/retry/watch-toggle before that GET finishes, runAction awaits the pre-POST request, can see jobsOk=true, close the dialog, and leave the queue/watcher evidence at the state from before the mutation. Please let post-mutation refreshes bypass the in-flight promise or limit dedupe to true synchronous duplicate invocations.
Useful? React with 👍 / 👎.
| app.get("/api/dev/test-data-projects", (_request, response) => { | ||
| response.json({ projects: config.testDataProjectIds }); |
There was a problem hiding this comment.
Gate the new dev metadata route in non-demo deployments
When ENABLE_DEV_ROUTES=false is used for production/non-demo coordinators, this new /api/dev/test-data-projects endpoint still returns the configured local fixture project IDs because it bypasses the existing /api/dev/* dev-route gate in app.ts. The A1 page already degrades safely when this request fails, so this route should return the same 404 as the other gated dev fixture endpoints instead of exposing test-data metadata in non-demo deployments.
Useful? React with 👍 / 👎.
摘要
依 spec R1–R10(PR #321)執行 Wave B 十項合規 code 修。凍結檔改動僅 R3/R6 已登記例外(app.ts 單行 mount+governance app.py export fallback)。
Frontend Verification
http://127.0.0.1:8005/ui(GOV_PORT=49103/PORT=8005/CONSOLE_DIST_DIR=dist-ui;不碰部署區 :8004):#home/#a1/#apps/#minioa1-localfs-select(選項含測試資料 badge,DOM 佐證);NAV 四組重排渲染;A6 卡 phase 文案;互動行為由 569 條 unit tests(50 檔)覆蓋(含 overlay 7 條、防重入、routing 12 條)storage/270(真實三層 IFC fixtures,local_fs tree 經 branch governance :49103 proxy)+TEST_DATA_PROJECT_IDS=270,889,990,271--screenshot/--dump-dom --virtual-time-budget=7000對 branch stack;npm run verify(含新 typecheck);npx vitest run=569 passedartifacts/e2e/2026-07-10-wave-b/{home,a1,apps,minio}.png+a1-dom-evidence.txt(DOM 節錄).env.example註記被工作區 .env* 保護規則擋下,TEST_DATA_PROJECT_IDS 說明見 config.ts 註解與本 PR bodyDeploy Path Verification
export_rule_runcache-miss 行為(409→200,F3 例外已登記手冊 §1.1);coordinator:新增 optional envTEST_DATA_PROJECT_IDS(預設空=不標)+唯讀 GET 端點;無 docker/Kit/ports 變更npx vitest run:604+4 passed;viewernpx tsc --noEmit+npx vitest run:569 passed(50 檔);root contracts:85 passedRequirement source
docs/superpowers/specs/2026-07-10-plans-code-remediation-design.md(R3/R4/R6/R8/R9+F 系列);exception ledger=手冊 §1.1(PR #321 補登)。🤖 Generated with Claude Code
https://claude.ai/code/session_01G9C6aJGUJR37PgWSBPBNVf