本卡屬 FR-181(母卡 FR-181 母案 CM-3595),卡 B-6b,批 9。只改 evidence-agent。依賴:B-6a。

這張卡做什麼(白話)

對帳改走長輪詢的 Agent 端:長輪詢拿到 verify_file 指令,讀本機那個證據檔算 SHA-256 回覆主系統。算法跟現在 8443 /blob/<uid>/sha256 那支一模一樣,抽成同一支 app 層函式兩邊共用,不複製。檔案不存在就回 failed、原因 missing(主系統據此標「Agent 上找不到」)。

reuse/extend/new

extend:files/app/blob_ops.py 加 verify(uid) -> str(讀 open_blob(uid) 算 sha256,照 blob_route.py:49 既有 /blob/<uid>/sha256 的算法抽成同一支,route 殼改呼叫它);files/api/commands.py HANDLERS 加 KIND_VERIFY_FILE: _verify(照 _send 的 _found 形狀:找不到→failed reason=missing)。釘契約 0.5.2

在哪裡

repo:~/Projects/Billows/Audit-Manager/evidence-agent
改既有:guidant_agent/files/app/blob_ops.py
改既有:guidant_agent/files/api/commands.py
改既有:guidant_agent/files/api/blob_route.py(sha256 route 改呼叫 blob_ops.verify)
改既有:pyproject.toml(契約 0.5.2)
新開:test/files/test_verify_file_command.py

怎麼做

驗收(首腦照這個驗)

pytest:verify_file → taken → done 帶 {sha256};uid 不存在 → failed reason=missing;/blob/<uid>/sha256 route 與 handler 算出同值(抽層沒抽壞)

必讀