本卡屬 FR-089(母卡 CM-1688),修 arc review CM-1738 的 C1 與 C2,Critical。建議 model:Sonnet 5,effort:medium——修法明確,重點在把守衛推廣到六支並用突變證明它抓得到這種錯。

問題是什麼(白話)

C1:系統選單管理頁的新增、修改、刪除三個按鈕,root 租戶管理員按下去一律 500。原因是 CM-1699 把 ctx 機械改名成 rt 時,三行守門 @capability_required(lambda c: rt.config.xxx) 只改了裡面的變數、沒改參數名,rt 在那個位置不存在。測試全綠、服務起得來、一般使用者被平台管理員守門先擋掉看不到,所以沒人發現。首腦本機 DEV 實打三端點全 500、log 三筆 NameError: name 'rt' is not defined;全 21 支 42 處 lambda 只有這 3 處錯。

C2:四處程式碼註解寫「兩處的值必須一致,由測試 X 焊死」,但那四個測試檔在兩個 repo 都不存在(首腦 find 零命中)。假守衛比沒守衛危險——讀者會因為相信有保護而放心只改一邊。最實害的一條:DETECTION_TOOL_JOB_TYPE = "detection_tool" 在套件與主專案各一份,主專案兩支測試都只 import 主專案那份,沒有任何地方比對套件那份。

在哪裡

jedi monorepo ~/Projects/Jedicogy/module/jedi-python-package
  jedi-system-core/jedi_system_core/api/routes/system_menu_route.py:92,112,124   lambda c: rt.config.menu_{create,update,delete}_capability
  jedi-detection/tests/test_plugin_layout.py:224  test_routes_take_capability_names_from_config_not_literals(唯一有 AST 守衛的一支,但只驗形狀不驗參數名)
  jedi-detection/jedi_detection/app/service/detection_job_binding_handler.py:64   註解指 test_cm1493_detection_handler_moved.py(不存在)
  jedi-detection/jedi_detection/infra/detection_execution/repository/detection_execution_repo_impl.py:13   註解指 test_detection_execution_timeout.py(不存在)
  jedi-iam/tests/test_plugin_contract.py:6   註解指 test_boundary_mutation.py(不存在)
  jedi-iam/tests/test_role_route_capability.py:6   註解指 test_role_mapper_list_omits_users.py(不存在)
  jedi-system-core/harness/dev_app.py:277 smoke()   只打 /system/menu/<group> 與 /system/menus,沒打 /system-menu 三條
BE ~/Projects/Billows/Audit-Manager/compliance-manager-be
  app/detection_tools/task_type_declaration.py:37   DETECTION_TOOL_JOB_TYPE 主專案那份
  test/test_grc_job_detection_type.py、test/test_cm1658_my_job_type_no_downgrade.py   只 import 主專案那份

怎麼修

要寫測試

全量:六支套件各自 tests/ 全跑貼 tail -1(在自己 commit 的 worktree、PYTHONPATH 只指樹);BE pytest test/test_module_boundaries.py test/test_grc_job_detection_type.py <新測試> -q

手測(DEV)