一句話:本卡屬 FR-100(記錄卡 CM-1820),第 2 棒:jedi-flow-engine 的 workflow_execution_service.py(548 行)早已被主專案那份 1,321 行取代、主專案零處使用,但檔案裡沒有任何一個字說它不該用。本棒只加警語與對齊三處過期註解,不刪程式、不改行為。

這一棒在做什麼(白話)

系統裡有一支程式管「流程跑到哪一步、誰該做、做完往下推」。當初把它抽進套件時用的是複製不是搬家,之後主專案那份繼續改了半年,套件那份原封不動。

結果同一支東西有兩份:套件裡 548 行(沒人用、停在半年前)、主專案 1,321 行(正在跑)。兩份的方法參數已經對不上了。

這一棒不解決重複本身(那要動整個流程架構,是另一件大工程)。這一棒只做一件事:在套件那份的檔頭寫清楚「這份已被取代、不要用」,讓將來拿這支套件去裝新產品的人不會誤用到舊版。

為什麼只加警語、不刪掉

首腦 2026-09-16 實查:這支不是孤立的死檔,而是有一整圈接線和守衛圍著的死檔。要刪就得連帶處理下列每一項,那些又跟套件的插件契約纏在一起——工作量遠大於「刪一個檔」,而且交付前不值得動契約層:

決策者 2026-09-16 裁:走加警語這條(B 案),理由是它解決了這個債的唯一實際傷害(有人裝了套件、拿到舊引擎而不自知),成本接近零,且不會跟日後的大改造衝突——大改造來的時候本來就要重新處理這支。

首腦核對過的證據(2026-09-16 實查,runner 不必重做)

主專案零處使用:grep -rn "jedi_flow_engine.app.service.workflow_execution_service" api app domain infra di_containers core → 0 命中。同目錄另三支則活著:workflow_template_service 7 處、element_variable_service 2 處、job_execution_service 1 處。

⚠️ 套件整體是活的,不要誤解成整支套件廢棄:主專案用到套件 38 個不同 import 路徑,BPMN 產生器(2,428 行)、BPMN 工具(713 行)、拓撲驗證(330 行)、entity/model/repo 全都在用。套件 6,746 行裡只有這一支 548 行是死的。

兩份已經長歪,方法簽名對不上(首腦逐一比對):

complete_job(...)   套件版 6 個參數
                    主專案版 7 個(多 suppress_notify)

revert_job(...)     套件版 6 個參數
                    主專案版 9 個(多 suppress_notify、bypass_round_frozen_gate、
                                   known_project_id)

主專案版另有 12 個套件版沒有的方法——稽核輪次凍結檢查
(_assert_round_not_frozen_for_workflow)、專案參與者權限
(assert_project_participant)、通知派工(notify_user_todo_job/
notify_users_batch_assigned)、問卷屬性處理(process_survey_property)等。

為什麼不能把主專案那份貼回套件:主專案版已長進稽核業務(輪次凍結、專案參與者),貼回去等於在通用零件裡塞稽核專用邏輯,正是抽套件要消滅的事。這就是這個債卡住的原因。

🔴 那支死檔目前連 docstring 都沒有——檔案第 1 行直接是 import json,沒有任何一個字告訴讀者它已被取代。這正是本棒要補的。