# 05 — 交付登記（建議常駐在規則檔）

> **判準：沒寫進檔案的進度＝不存在的進度；寫錯的進度＝存在的假進度，更毒。**

## 它防的是什麼

三週後你會對著一個工作包問「這到底做完了沒」，
而唯一的答案來源是你的記憶 —— 那是最不可靠的一個。

更常見、也更貴的失敗：**新產生的工作量沒有被登記**。
一場對話產出了三個新提案、兩個新落差，全部寫進了規格檔，
於是排程表上的「剩餘 40 小時」實際上是 70 小時，而你是在死線前一週才發現的。

---

## 直接複製（貼進規則檔）

```markdown
## 🧾 交付當下就更新進度表與索引（HARD RULE）

**判準：沒寫進檔案的進度＝不存在的進度；寫錯的進度＝存在的假進度，更毒。**
**這是交付的一部分，不是可選收尾。**

1. **交付當下、同一個工作階段內**（功能完成／資料遷移／端點新增／技術債清償）：
   排程表 §三 **整列移出** ＋ 當季日誌補一則敘事 ＋ 證據帳本補證據列
   ＋ 涉及擴充點就更新索引。
2. **§三〈未完成〉是存量表，只放還沒做完的** —— 做完整列移出，
   〈已完成〉補一行（`X ✅日期 一句話`）。
   混進已完成列會讓人逐列重讀才知道哪些還算數。
3. **✅ 的唯一標準＝「實際做到 ＋ 驗過」**；數字必須是當下實測的，不是計畫值。
   每列都要能回答「**這個狀態最後一次驗證是什麼時候**」。
4. **重排前先重驗進度表**：逐列問「最後驗證是何時」，超過兩週沒驗的要重驗再排。
5. 🚨 **登記的對象不只「完成品」，還包括「新產生的工作量與落差」**：
   只要一場對話產出新提案／新估時／新落差，同一個工作階段內就要進排程表。
   **寫進規格或證據帳本不算數** —— 那兩個檔答的是「為什麼這樣設計」與「做完了嗎」，
   **都不是「還要花多少時間」**。少登記一次就憑空少算數十小時。
6. 🚨 **§三 一列一行，不准長出續行**（這條被違反三次才補上守衛）。

⚠️ **並行寫入不是只有別的對話，開著舊版的編輯器也是**：
   它任何一次存檔都會把整個舊內容寫回去。
   ⇒ **每一個寫入步驟後都 `grep -c` 驗一次識別字，不是最後驗一次**
   （最後跑守衛是綠的，證明不了中間那一步還在）。
⚠️ **讀取端也要驗**：讀完到寫入之間那幾分鐘就夠別人寫進新東西了；
   照記憶裡的行號整檔覆寫＝把它靜默刪掉。
```

---

## 交付說明的固定格式

```markdown
## 做了什麼
<一到三行>

## 驗到了什麼（數字）
<守衛名>：<覆蓋率數字>（exit 0）
<測試名>：<N 項通過 / M 項>
狀態：我在<空庫／有資料>下驗的；另一種<驗了／沒驗，理由是…>

## 登記
排程表：<X> 整列移出　日誌：已補　證據帳本：已補一列　索引：<更新了什麼／不適用>

## 還沒做完的 / 已知落差
<誠實列出。沒有的話寫「無」，不要留白>
```

⚠️ 最後一段不要留白。**留白會被讀成「沒有落差」**，而那通常不是真的。

---

## 證據帳本那一列長什麼樣

```
2026-08-30  GD  角色寫入防護補齊
            證據：寫入端點 148 個 · 帶 write=True 145 · 具名豁免 3 · 未保護 0
            驗法：python tools/role_check.py（exit 0）＋ 四方向實打測試 16 項全過
            日誌：2026-08-30
```

不合格的版本：

```
❌  證據：測試通過        → 「通過」不是數字。通過了幾個？沒走到的有幾個？
❌  證據：所有端點都加了  → 「所有」是形容詞。148 個裡面加了幾個？
❌  證據：守衛 PASS       → 一支守衛可以用五種方式報假綠燈。覆蓋率才是證據。
```

---

## 升級版：做成 skill

這一段很適合做成一個 `/delivery-gate` skill（範例見
[templates/SKILL.md](../templates/SKILL.md)），因為它是一個**固定清單**，
而固定清單交給人記得就是漏掉的來源。
