# 01 — 對話開場：先報現況，不要先動手

## 它防的是什麼

AI 會拿**幾小時前的快照**當現況，而且講得很有自信。

真實案例：它把**兩件已經做完的事報成待辦**，我照著說「現在全做」。
同樣的形狀後來又出現在工具上 —— 一個被立為「可執行判準」的工具本身過期了，
它印著「正式資料庫」卻連到本機，**而且過期的時候不會通知你**。

> 🚨 **判準：動手前先對現況跑一次指令，不要用「我剛才讀到的」。**

---

## 直接複製

```
開始之前，先跑指令報一次現況，不要用你記憶裡或上下文裡的數字：

1. 今天日期，以及距離下一個硬錨點還有幾天（從排程表 §二 解析，不要寫死）
2. 排程表 §三 現在有幾個工作包、合計剩餘幾小時
3. 上一次對話結束時停在哪（從當季日誌最後一則讀）
4. 工作樹狀態：git status 有幾個改動、在哪個分支

報完之後停下來等我，不要順手開始做事。

⚠️ 上面每一項都要有「我是從哪裡讀到的」——
   如果你是從上下文裡的舊內容讀的，直接說「這是舊的，需要重讀」。
```

---

## 升級版：做成 hook 自動送

這一段最適合做成 `UserPromptSubmit` hook，每天第一次自動送上去 ——
因為**「記得在對話開場問一次」這件事本身就是靠人記得**，而那正是這套系統要消滅的東西。

```python
# tools/hooks/daily_brief.py（掛在 UserPromptSubmit）
#
# 一天只送一次（用一個 tmp 檔記日期），其餘時候 0 成本。
#
# 🚨 規則不要抄進腳本 —— 現場解析那些檔案。
#    抄一份進來就是多一個會漂移的地方。

def brief():
    today = date.today()
    deadline, days = parse_next_anchor("task/work.txt")   # 從檔案解析，不寫死
    packages, hours = parse_backlog("task/work.txt")
    last = last_journal_entry("task/journal.txt")
    return (
        f"今天 {today}，距離「{deadline}」還有 {days} 天\n"
        f"排程表：{packages} 個工作包 · 剩餘 {hours}h\n"
        f"上次停在：{last}"
    )
```

⚠️ **日期不要寫死。** 一個寫死日期的簡報在那天過後會開始說謊，
而它說謊的時候長得跟正常運作一模一樣。

---

## 配套：規則檔裡的那一句

```markdown
🚨 全 repo 若還看到「待 <某功能>」「<某封鎖條件>」＝<某日期>前的殘留，
   **當場修掉，不要照著它把工作往後排。**
```

**過時的狀態行是雙向有害的**：把做完的寫成待辦（排程時整包重做）／
把已經安全的寫成不安全（浪費上線那天的時間）。
