本卡屬 FR-114(母卡 CM-2019),補完 CM-2053(5A-2,SUMMARY #17)只能在全量 build 產物上驗的兩點。唯讀驗證卡:只在 188 產物的副本上做,不部署、不動容器、不改原產物。可與打包修正卡並行。

要驗什麼(白話)

CM-2053 把驗簽零件編進主程式,擋「換掉驗簽零件,整套防竄改就失效」。三個驗收點中①已由 build 證據成立(產物內無 cryptography 的 .py、manifest core 層列有 _rust.so 與 _cffi_backend.so)。剩兩點:②產物根目錄有原樣附帶的 typing_extensions.py、six.py(grpcio、python-dateutil 的相依被遞迴收進來,manifest 歸 thirdparty、開機不核對),它們同時也編進了主程式。要確認開機時真正執行的是編進去的那份,不是根目錄那支沒驗過的 .py——不能看 __file__,Nuitka 會把編入模組的 __file__ 設成「假如檔案存在的路徑」,看不出來。③在副本上換掉驗簽零件,開機要被完整性檢查擋下(修之前是放行)。

在哪裡

188 /opt/guidant-ai-be/.build/dist/guidant-ai-1.20.0   run5 產物(BE 99b0721c3,manifest 已簽)
   ⚠️ 產物權限是 700/600(另一張卡在修),複製副本時照原 owner 跑即可
產物根目錄:typing_extensions.py、six.py(原樣);guidant-ai(主程式);cryptography/hazmat/bindings/_rust.so;_cffi_backend*.so
scripts/build/build_release.sh:382-446  相依遞迴收集(為什麼會附帶 typing_extensions/six)

怎麼驗

交付

紀律

驗收結果(2026-09-24,runner 回寫)

一句話:③ 成立;② 對 six/typing_extensions 成立,但實測時發現旁邊有一個更大的洞——根目錄的 google_auth_httplib2.py 和整批 thirdparty 的 .py/.pyc 是開機時從磁碟讀的、沒被驗過,改了會照跑。

怎麼做的