本卡屬 FR-077(母卡 CM-1591),由原 R2(CM-1593,29 檔)拆出的後半。範圍:jedi-detection 的 agent 相關全部 + 重疊帶入 agent_task 的兩支關鍵檔。只掃不修

這一棒在做什麼(白話)

客戶機房的 agent 要執行掃描,得先跟雲端拿東西:要掃的源碼壓縮包、檢測設定檔。這一棒掃的就是「agent 憑什麼可以下載這些檔案」——授權判定在 agent_file_access_service.py,以及雲端反過來主動連 agent 的兩條路徑(測試連線、取消掃描)。

claude-security plugin 掃 13 檔並產出報告。只找問題、不修問題。

為什麼拆成這一棒(重要,影響你怎麼讀範圍)

原本 R2 是 29 檔一棒(agent_task 全鏈 + jedi-detection agent)。R1(42 檔)證明了這個量級的面板撐不住——21 張票 0 張投出。手上唯一一次面板跑完的是 FR-076 L1(10 檔)。故決策者 2026-09-08 裁拆成兩棒,本棒是後半。

但這一刀切在接縫上,所以做了重疊處理,你要知道為什麼:檔案下載的授權判定是「這個檔案 uid,是不是該 agent 名下未完成任務引用的?」——問題的前半在本棒(agent_file_access_service.py),後半在 R2a(任務狀態機)。只掃本棒會看不到「任務狀態」是怎麼被拿來當授權依據的。

故 scope 額外帶入兩支 R2a 的檔agent_task_domain_service.pylist_for_agent_by_status() 在這裡)與 agent_task_repo_impl.py(實際 query)。這兩支 R2a 也會掃,重複報同一條沒關係,首腦驗收時會挑掉;接縫沒人看才是真的損失。

重點看什麼

首腦讀過全部程式碼後標的。是思考起點不是檢查清單——工具不照清單走(R1 的 CRITICAL 是 runner 照卡片重點人工追出來的)。

已知背景

本範圍從未被掃過。R2a(CM-1593)掃任務狀態機與派工單,與本棒相鄰、只在⑦的兩支檔重疊。