FR-089 · 需求索引 · 本頁由 build 掃資料夾生成
🟢 全案 Done 待進版(2026-09-13 深夜)。三段(jedi-asset 定形/FR-090 七棒/FR-091 28 卡)+arc review CM-1738+修正卡 CM-1739~1744 全收;21 支套件已推 Nexus(20 支 1.0.0、oscal-v2 2.3.0)、BE pin 還原、pyproject 整理、本機 DEV 以 Nexus wheel 起服務驗過。剩:version-bump(BE 1.20.0/FE 對齊/release note/spec 快照,等令);之後裁 DI 瘦身 CM-1696/FR-090 36 筆能力點/migrate FR。
結論三段:
plugin.py 拆五檔、api 拆 guards+routing、統一 device/information_system 兩型別寫法、entity 改 dataclass、刪零呼叫者模組);CM-1677 收尾(刪 upsert_by_name、引用計數改明確分派、補 18 支 testcontainers 整合測試、README 落差表、ctx() 改名 runtime());CM-1678 資訊系統表補 RLS 四條 policy+FORCE、devices.tenant_id NOT NULL、enum 值域統一小寫——修好「五個系統狀態只有兩個存得進去」的真 bug。零對外行為變更。core/plugins/<pkg>.py 一支一檔。第 6 棒 DI 瘦身 CM-1696 待決策者定規則。詳見 FR-090 README。CAPABILITIES,主專案五條守衛對 seed 127 筆零未歸類)、版面殘留(頂層平鋪/ports 位置/api 四件)。詳見 FR-091 README。套件側(jedi-asset 版,SOP §4.3)
plugin/ 五檔:__init__/contract/runtime/assembly/migrationsapi/ 拆 guards.py(runtime()+三個 lazy decorator)與 routing.pyruntime(),不叫 ctx()common.jedi_<pkg>inspect.signature 對照 ORM 欄位(守衛測試維持形狀)主專案側(FR-090 D1)
infra/<pkg>/、接線放 core/<pkg>_wiring.pyapp/<pkg>/ 整個刪FR-080(母卡 CM-1619,八棒 Done、收口中)是插件化第一、二階段(合併四組、補實五支空殼、清套件間直接依賴)。本案是 FR-069 D8 定的第三階段「既有套件升級插件模式」。2026-09-12 已把 FR-080 的「發版推 Nexus、pin 還原、SPEC 頁更新、release note」四項移出歸本案,等 18 支整理完一次做(已寫進 CM-1619 末段);FR-080 只收 code review、e2e 假綠、母卡與 design.md 收 Done。
出貨 image 只複製主專案 scripts/init/ 與 scripts/sql/,完全不碰套件自帶的 migrations/ 目錄——套件隨包的 migration 客戶端永遠套不到。CM-1678 的 002(RLS 四條 policy+enum 小寫)目前只存在 jedi-asset 內,三環境與出貨基線都還帶著 enum bug。要做兩件事:① 另開卡評估「宿主自動撿套件 migration」機制;② CM-1678 的 002 內容在主專案 scripts/sql/ 另放一支(走 sql-migration skill,只套 DEV)。
2026-09-12 決策者裁定(起因:看到 app/auth/ 下九個檔問「不是已經拆成 iam 了嗎,怎麼還在」):
ctx() 改名 runtime()——「取執行期組件」比「context」貼切,且避免與 jedi-iam 的 IdentityContext 撞名。| 段 | 卡 | 狀態 | 備註 |
|---|---|---|---|
| 一、jedi-asset 定形 | CM-1676/1677/1678 | ✅ Done | 形狀寫進 SOP §4.3;002 migration 只套 DEV |
| 二、主專案側殘留收斂(FR-090) | CM-1682(母)+1683/1684/1686/1687/1689/1737 | ✅ 七棒 Done(CM-1696 DI 瘦身待裁) | 第 7 棒收最後三支接線,主專案側 21 支同形 |
| 三、21 支套件套用(FR-091) | 28 卡 | ✅ 2026-09-13 全 Done、已 push | 含能力點宣告與版面殘留兩條線;migration 缺口併 migrate FR 待開 |
| 收口、arc review | CM-1738 | ✅ Done | 報告 docs/review/2026-09-13-fr089-arc-review.md:2 Critical/6 Important/5 Minor;同形 runtime() 21/21、接線 20/20、能力點四層零落差、harness 五支全過 |
| review 修正卡 | CM-1739 C1+C2/CM-1740 I-6/CM-1741 I-1+I-2/CM-1742 I-3/CM-1743 I-4/CM-1744 守衛 | ✅ 六張全 Done(首腦逐張復核,乾淨 worktree 守衛族 141 passed) | 未開卡留存:I-5 九處 import+三支 ports/ 殼、M-1~M-5、註解 58 條、四支既有紅測試、ProjectRoleGuardAdapter 兩份同名 |
| 收口、套件發版 | jedi 2837fea/BE e0496645+f21b3643 |
✅ Done | 21 支推 Nexus(20 支 1.0.0、oscal-v2 2.3.0)、套件間下限提到新版、description 去內部代號;BE pin 還原、pyproject 290→161 行、poetry.lock 對齊;本機 DEV 裝 Nexus wheel:守衛族 141 passed、api/socketio 零 Traceback、11 端點實打 |
| 收口、主體進版 | — | ⬜ 等令 | version-bump:BE 1.19.0→1.20.0、FE package.json 對齊、release note v1.20.0(含「切子租戶暫不對外」)、spec-site 快照 |
~/Projects/Jedicogy/module/jedi-python-package/(形狀範本 jedi-asset/),branch feature/FR-075infra/<pkg>/、core/<pkg>_wiring.py、test/test_module_boundaries.py,branch feature/FR-075jedi-package-dev(path dependency)、sql-migration以下全部由 build 掃資料夾產生,新增檔案重 build 即自動出現。標題連結指向渲染後的 HTML,md 連向源檔。
| 文件 | 類型 | 標題 | 最後更新 |
|---|---|---|---|
| for-pm / md | 文件 | 零件是怎麼裝進系統的 | 2026-09-13 |
| plugin-anatomy / md | 文件 | jedi-asset 插件解剖 | 2026-09-13 |
由新到舊。每份是某一棒次交接當下的完整現況快照,看某個時間點「當時知道什麼」請從這裡進。
| 日期 | 文件 | 標題 |
|---|---|---|
| 2026-09-13 | FR-089-STATE / md | FR-089 交接現況(STATE) |
| 2026-09-13 | FR-089-LOG / md | FR-089 交接日誌(LOG,append-only) |
卡片內容(決策紀錄、驗收條件)以 Notion 為準,本頁只記座標。
| 關係 | 卡號 | 標題 | 狀態 |
|---|---|---|---|
| 母案 | CM-1688 | FR-089 套件結構統一——用 jedi-asset 定一種標準形狀,先收主專案側殘留,再把 18 支 jedi-* 套件整成同一個樣子(三段,實作) | — |
| 子卡 | CM-1676 | jedi-asset 結構整理——當作 19 支套件的範例(A~F 組) | Done |
| 子卡 | CM-1677 | jedi-asset 收尾修正——刪 upsert_by_name、引用計數改分派、testcontainers 測試、README、ctx()→runtime() | Done |
| 子卡 | CM-1678 | 資訊系統表補 RLS+設備表 tenant_id 收緊+enum 值域統一小寫(002 migration) | Done |
| 子卡 | CM-1682 | FR-090 主專案側殘留收斂(母卡,四棒) | 進行中 |