T-6.2(CM-1000)還在別的 session 手上進行中,尚未完成。 檢查期間 agent 的 sonarqube.py 在我眼前從 799 行長到 924 行,且目前狀態無法執行——run() 呼叫的 self._run_scan() 這支 method 還沒被寫出來。參數 key 契約本身沒有問題。
| # | 檢查項 | 結果 |
|---|---|---|
| ① | 兩張卡都完成 | ❌ CM-999 完成;CM-1000 狀態仍是 Not started,無「已完成修正」段 |
| ② | 參數 key 對得上 | ✅ 對得上(詳下,這項是唯一全過的) |
| ③ | 兩 repo 狀態正常 | ❌ agent repo working tree 有未 commit 改動,且程式碼不完整 |
e020a3b9,migration scripts/sql/2026-07-31-fr058-19-sonarqube-scan-mode.sql 只套 DEV。Not started,正文只有派工內容,沒有回報段。DB 實查(DEV guidant_ai_dev,config.detection_tool_param_schemas):
version | is_current | fields
--------+------------+---------------------------------------------------------------
1 | f | (v1 保留未刪未改,2 欄)
2 | t | scan_mode[永遠顯示] / repo_url[scan] / project_key_suffix[scan]
| / project_key[pull] / branch[pull]
scan_mode:select,required,default scan,兩選項 scan / pull ✅(符合 D24)repo_url、project_key_suffix:condition 綁 scan,required ✅project_key、branch:condition 綁 pull,key 與 label 逐字未動 ✅(D-既有 pull 不受影響)agent 實查(core/task_executor_connectors/sonarqube.py,未 commit 的工作副本):
| 讀取處 | 行號 | key |
|---|---|---|
_resolve_scan_mode |
335 | params.get("scan_mode"),預設 scan,非法值 raise 不靜默降級 ✅ |
_resolve_repo_url |
356 | params.get("repo_url") ✅ |
_resolve_scan_project_key |
373 | params.get("project_key_suffix"),組 Guidant-AI-<suffix> ✅ |
_resolve_project_key |
345 | params.get("project_key")(pull)✅ |
_resolve_branch |
393 | params.get("branch")(pull)✅ |
五個 key 兩邊逐字一致,前綴由 connector 組上(D21),無落差。 額外加值:suffix 有做重複前綴去疊(避免 Guidant-AI-Guidant-AI-x)與字元白名單, repo_url 擋掉 file://(避免把容器內任意目錄當源碼掃)——都是合理加固,非落差。
因為 key 對得上,沒有任何契約需要決策者裁定。這項不是卡點。
compliance-manager-be)✅branch feature/FR-058,commit e020a3b9 在頂。working tree 只有一批與本案無關的 untracked docs(依指示未動、未 commit、未清理)。
branch: feature/FR-058
M Dockerfile
M core/task_executor_connectors/sonarqube.py
最新 commit: 2aa95ec chore: bump 0.2.21——FR-058.5 SonarQube connector 出貨版
T-6.2 沒有任何 commit,兩檔都還在 working tree。
觀察到檔案正在被寫入(同一份檔案,兩次 grep 之間變了):
| 時間 | sonarqube.py |
|---|---|
| 23:09 左右(第一次 grep) | 799 行,完全沒有 _resolve_scan_mode / repo_url / project_key_suffix |
| 23:13:25(mtime) | 924 行,上述 method 都在了 |
| 23:13:33 ~ 23:14:51(連續取樣 3 次 + 追查) | mtime 停在 23:13:25 未再變動 |
→ 另一個 session 正在這個 repo 上作業。
SonarQubeConnector -> 呼叫但未定義: ['_run_scan']
run()(:457)已寫好分流:mode == "scan" → return self._run_scan()(:464)_run_pull()(:469)完整,pull 路徑一行未動 ✅_run_scan() 尚未定義 → 任何 scan 模式任務會直接 AttributeErrorscan 四步驟的常數已備好但實作未落地:_CE_PENDING_STATUSES(:144)、 _PROJECT_KEY_PREFIX(:114)、_ALLOWED_GIT_SCHEMES(:154)都在, 但 git clone / sonar-scanner 子行程 / report-task.txt 解析 / api/ce/task 輪詢 / tmp 清理 這五段程式碼一段都還沒有(grep report-task / ceTaskId / api/ce/task 只命中檔頭 docstring,命不中任何實作)。
Dockerfile 那一半看起來是完整的(sonar-scanner CLI 7.3.0.5189 linux-x64 平台專屬 zip + unzip,註解紀律有跟上),但未 build 驗證。
test/test_sonarqube_connector.py mtime 20:16,602 行未動 → T-6.2 要求的兩條 必測(非法 scan_mode raise、失敗路徑 tmp 已清)尚未加。
T-6.3 的核心是「兩模式端到端驗收」。目前:
_run_scan 不存在,任務一發就 AttributeErrorpull 模式的 UI 驗收理論上可先做(_run_pull 完整、schema 已就位),但那需要重啟 BE + 重建部署 agent,而 agent 重建正是被 ①②③ 擋住的動作,所以整段一起停。
| 項目 | 狀態 |
|---|---|
| DEV DB param_schema | ✅ v2 is_current=t(5 欄),v1 保留 is_current=f |
| DEV agent 心跳 | 4b9cd3bd2538 / 0.2.21 / active(尚未 bump 0.2.22) |
| BE 進程 | pid 35859 main_app.py 執行中,port 8000 有回應(/ 404 屬正常,無 root route)。未重啟 |
| FE dev server | http://localhost:5180 有回應(200),branch feature/FR-058,working tree 乾淨 |
| STG 122 / POC 121 | 完全未碰(DB、部署都沒動)✅ |
做了:fetch 兩張 Notion 卡、DB 實查 param_schema、agent 原始碼實查、AST 靜態檢查、 repo 狀態確認、環境探測(唯讀)、寫這份紀錄。
沒做(依指示停下):未改任何一行 code、未 commit、未 build、未部署、未重啟 BE、 未動 FE、未跑任何驗收、未回寫 CM-1001、未動 STG/POC。
_run_scan 未寫、測試未加、未 commit 的狀態。_run_scan 實作 + 兩條必測 + 全套回歸 + commit)後,T-6.3 才有得跑。 我這一棒的三段工作(環境就位 / FE 微調 / 兩模式端到端)本身沒有阻礙, 純粹卡在上游未完成。