# FR-037 ARCHIVE 收尾 SUMMARY

| | |
|---|---|
| 日期 | 2026-06-14 |
| 動作 | 🗄️ **FR-037 整體 ARCHIVED，不續作** |
| 決策者 | user |
| branch | `feature/oscal-refactor`（未切、未 push） |
| 狀態 | 純設計探索，**從未 ship 任何 code、未套任何 DB 環境** |

---

## 為什麼 Archive

FR-037 原本的定位（見 design.md）是**輕量盤點**：把 OSCAL 5 模型的 required 欄位跟現行 `oscal.*` ORM 逐欄對齊，產出一份「缺口清單」，供下一輪動表時知道一次要補哪些——**只盤點、不實作、不重新設計**。

但實際工作一路演變成**「全 OSCAL 八大 model 從零重新設計成單一關聯式 schema」**（單檔 45 表 / 673 欄，後裁剪為 42 表 / 650 欄）。這已經是一份完整的 schema 重新設計藍圖，遠超「盤缺口」的原意。User 評估後認為方向偏離太多，決定**整個重新來、不在 FR-037 底下續作**，新一輪將**另開 FR**（下一個可用號 = FR-038）。

本資料夾所有產物保留，不刪除，供未來重啟時當參考素材。

---

## 本 session（2026-06-14）做了什麼

對先前 session 產出的 schema 藍圖做了一輪完整審查，並依 user 中途決策出了 v2：

1. **6-agent 平行審查**：八大 model 分段對照官方 v1.2.2 JSON Schema 的 required 陣列、props/links 放置、uuid 參照原則、JSONB 折衷，逐表逐欄核對。
2. **可執行性實測**：本機拋棄式 PostgreSQL 16 跑 `psql --single-transaction`，一次建完、0 表 0 欄漏 COMMENT（共享 dev server 未動）。
3. **過度設計評估**：盤點產品實際 OSCAL 使用面（BE + jedi-oscal），指出 Component Definition / Mapping / OSCAL POA&M 文件層是 YAGNI 候選。
4. **user 中途決策 → 出 v2**：user 拍板「只砍 Mapping 全段（3 表），CD 與 POA&M 保留（重構將全面採 OSCAL 模式）」，遂產出 v2（42 表 / 650 欄）＋官方對齊修正（補 21 欄、移除幽靈欄、修正註解）。
5. **部分註解豐富化**：SECTION A+B（9 表）與 7 張 root 表的 COMMENT 已改寫成新手可讀版本；其餘段落仍為精簡註解。

---

## 本 session 產出檔案（未來重啟可直接取用）

| 檔案 | 內容 | 價值 |
|---|---|---|
| `oscal-catalog-and-roots-schema-v2.sql` | **主成果**：42 表 / 650 欄，砍 Mapping＋官方對齊後的完整 schema，本機實跑通過 | 重啟時的最佳起點藍圖 |
| `2026-06-12-schema-review-report.md` | 完整審查報告：required 對照、props/links、參照原則、JSONB 折衷、§5 約束強化建議、§8 過度設計評估、§9 待決策清單 | 重新設計時的 checklist 與避雷指南 |
| `oscal-catalog-and-roots-schema.sql` | v1（45 表 / 673 欄），v2 的來源；COMMENT 已部分豐富化 | 歷史對照 |

> ⚠️ 上述審查報告與 v2 的部分結論建立在「全 OSCAL、不考慮現行產品」的前提上。新一輪若改變前提（例如「以產品實際需求為主、OSCAL 對齊為輔」），需重新評估 §8 的裁剪建議與表的取捨。

## 先前 FR-037 session 既有產物（本 session 未碰，一併保留）

`design.md`（原盤點定位）、`implementation-plan.md`、`verification-matrix.md`、`enhancement-table.md/.html`、`oscal-gap-audit.html`、`compliance-schema-overview-fr037.html`、`data-population-analysis.html`、`oscal-exact-naming-plan.html`、`oscal-rename-plan.html`、`oscal-relational-schema-shared-and-catalog.sql`（更早的舊版藍本）、`oscal-object-relationships.xmind`、`handoff/2026-06-12-...-HANDOFF.md`

---

## 未來重啟（另開新 FR）的建議

1. 先確定**前提**：是「忠實全 OSCAL round-trip」還是「產品需求為主、OSCAL 對齊為輔」——這決定表的取捨完全不同（見審查報告 §8）。
2. 起點素材：直接拿 `oscal-catalog-and-roots-schema-v2.sql` 當藍圖，搭配 `2026-06-12-schema-review-report.md` 的 §9 待決策清單逐項拍板。
3. 審查報告 §3（4 處同文件參照留 JSONB 的政策違例）、§5（多型 FK 缺 XOR CHECK）是 v2 尚未處理、重啟時要先決定的項目。
4. 新 FR 去 `docs/features/README.md` FR 登記表查最大整數號 +1（目前 = FR-038），在 README 加一列、建 `FR-038-<YYMM>-<功能名>/` 資料夾。

---

## ✓ 已完成 / ✗ 刻意不做

**✓ 已完成**
- README FR 登記表：FR-037 那列標 🗄️ ARCHIVED + 原因；「下一個 FR 號」提示更正為 FR-038
- `design.md`：頂端加 ARCHIVED 標頭 + 狀態欄改 ARCHIVED
- 本 SUMMARY（自包含，記錄為何 archive、成果位置、重啟建議）

**✗ 刻意不做**
- **不開新 FR**（user 指示，留待真正重啟時開）
- **不寫 changelog**：純設計探索、未 ship code、未動產品行為
- **不寫 Notion 任務**：同上，無對外可交付成果
- **不歸檔對話紀錄**：user 未要求；要的話用 `scripts/extract_claude_sessions.py`
- **不 commit、不 push**：依規範 commit 可自行做，但本次是文件 archive；working tree 全留給 user 決定何時 commit。**未切 branch**（仍在 `feature/oscal-refactor`）

> 給 user：以上 archive 標記都在 working tree（未 commit）。要我 commit 這幾個 archive 文件變更的話說一聲；push 一律等你明示。
