<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>任務管理 on Tarragon</title><link>https://tarrragon.github.io/blog/tags/%E4%BB%BB%E5%8B%99%E7%AE%A1%E7%90%86/</link><description>Recent content in 任務管理 on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Wed, 04 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/%E4%BB%BB%E5%8B%99%E7%AE%A1%E7%90%86/index.xml" rel="self" type="application/rss+xml"/><item><title>Atomic Ticket 方法論 - 最小可追蹤任務單位設計</title><link>https://tarrragon.github.io/blog/record/atomic-ticket-%E6%96%B9%E6%B3%95%E8%AB%96-%E6%9C%80%E5%B0%8F%E5%8F%AF%E8%BF%BD%E8%B9%A4%E4%BB%BB%E5%8B%99%E5%96%AE%E4%BD%8D%E8%A8%AD%E8%A8%88/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/record/atomic-ticket-%E6%96%B9%E6%B3%95%E8%AB%96-%E6%9C%80%E5%B0%8F%E5%8F%AF%E8%BF%BD%E8%B9%A4%E4%BB%BB%E5%8B%99%E5%96%AE%E4%BD%8D%E8%A8%AD%E8%A8%88/</guid><description>&lt;p>Ticket 越開越大，驗收條件越來越模糊，code review 要重新推理背景——這是我們曾長期面對的問題。根源很簡單：我們沒有定義「一個 Ticket 應該是什麼」。&lt;/p></description><content:encoded><![CDATA[<p>Ticket 越開越大，驗收條件越來越模糊，code review 要重新推理背景——這是我們曾長期面對的問題。根源很簡單：我們沒有定義「一個 Ticket 應該是什麼」。</p>
<h2 id="從一個問題出發">從一個問題出發</h2>
<p>試想這樣一張 Ticket：「實作 ISBNScannerService 的 15 個測試」。</p>
<p>15 個不同的測試目標，掃描啟動、停止、ISBN-10 驗證、ISBN-13 驗證、離線快取、批次模式……每一項失敗都讓整張 Ticket 無法完成。負責人要同時記住 15 個目標才能判斷自己有沒有做完。</p>
<p>這不是一張 Ticket，是一份工作清單。</p>
<h3 id="一張-ticket最少應該是什麼">一張 Ticket，最少應該是什麼？</h3>
<p>答案：<strong>一個動詞 + 一個目標</strong>。</p>
<hr>
<h2 id="什麼是-atomic-ticket">什麼是 Atomic Ticket</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">Atomic Ticket = 動詞 + 單一目標</span></span></code></pre></div><p>核心特徵：</p>
<ul>
<li><strong>單一職責</strong>：只有一個修改原因</li>
<li><strong>獨立驗收</strong>：不需要等待其他任務</li>
<li><strong>不可再拆分</strong>：硬拆會產生循環依賴，表示這些部分本來就是一體的</li>
</ul>
<hr>
<h2 id="四個原子性檢查">四個原子性檢查</h2>
<h3 id="語義檢查">語義檢查</h3>
<p>「這個 Ticket 能用動詞加單一目標描述嗎？」</p>
<p>符合：「實作 startScan() 方法」、「修復 ISBN 驗證邏輯」。</p>
<p>不符合：描述裡有「和」或「並」——「實作掃描功能和離線支援」通常是兩張 Ticket 擠在一起。</p>
<h3 id="修改原因檢查">修改原因檢查</h3>
<p>「只有一個原因會導致這個 Ticket 需要修改嗎？」</p>
<p>「實作 startScan()」只受掃描 API 規格影響，單一原因。「實作掃描功能和離線支援」則是 API 變更或儲存格式變更都會觸發修改——兩個原因，應拆成兩張。</p>
<h3 id="驗收條件一致性">驗收條件一致性</h3>
<p>「所有驗收條件都指向同一個目標嗎？」</p>
<p>如果驗收條件同時涵蓋 startScan()、stopScan() 和離線快取，其實在同時驗收三件事，應該拆開。</p>
<h3 id="依賴獨立性檢查">依賴獨立性檢查</h3>
<p>「如果拆成兩張，它們之間有循環依賴嗎？」</p>
<p>「實作掃描啟動邏輯」和「實作掃描狀態管理」互相依賴，硬拆反而讓兩張都無法獨立完成——這種情況維持為單一 Ticket 才對。</p>
<p>反過來，「實作 startScan()」和「實作 stopScan()」是單向依賴，可以安全拆分。</p>
<hr>
<h2 id="什麼不是判斷原子性的依據">什麼不是判斷原子性的依據</h2>
<p>常見的錯誤標準：時間、程式碼行數、檔案數量、測試數量。</p>
<p>這些都是結果，不是原因。一個單一職責的任務可能只需要 10 行，也可能跨越多個檔案改 200 行。判斷的唯一依據是職責是否單一。</p>
<hr>
<h2 id="行為分離開發測試調整各自追蹤">行為分離：開發、測試、調整各自追蹤</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">開發 (IMP) → 測試 (TST) → 調整 (ADJ)
</span></span><span class="line"><span class="ln">2</span><span class="cl">                  |
</span></span><span class="line"><span class="ln">3</span><span class="cl">               發現問題
</span></span><span class="line"><span class="ln">4</span><span class="cl">                  |
</span></span><span class="line"><span class="ln">5</span><span class="cl">           分析 (ANA) → 調整 (ADJ)</span></span></code></pre></div><p>開發完成不代表測試通過，測試完成可能衍生調整。把這三種行為混在同一張 Ticket，就失去了「問題在哪個環節發生」的追蹤能力。</p>
<p>完整的追蹤鏈讓我們能回答：「這個修復是從哪一次測試失敗衍生的？那次測試又是為了驗證哪個開發任務？」</p>
<h3 id="ticket-類型定義">Ticket 類型定義</h3>
<p>七種類型區分不同性質的任務：</p>
<ul>
<li>IMP（Implementation）：開發新功能</li>
<li>TST（Testing）：執行測試驗證</li>
<li>ADJ（Adjustment）：調整或修復問題</li>
<li>RES（Research）：探索未知領域</li>
<li>ANA（Analysis）：理解現狀和問題</li>
<li>INV（Investigation）：深入追蹤問題根因</li>
<li>DOC（Documentation）：記錄和傳承經驗</li>
</ul>
<hr>
<h2 id="ticket-關聯追蹤">Ticket 關聯追蹤</h2>
<p>每張 Ticket 記錄三個關聯欄位：</p>
<ul>
<li><code>source_ticket</code>：觸發此 Ticket 的來源</li>
<li><code>spawned_tickets</code>：此 Ticket 衍生的後續 Ticket</li>
<li><code>dispatch_reason</code>：派發原因和交接理由</li>
</ul>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">開發 Ticket (IMP) 完成
</span></span><span class="line"><span class="ln">2</span><span class="cl">    |
</span></span><span class="line"><span class="ln">3</span><span class="cl">    | 衍生
</span></span><span class="line"><span class="ln">4</span><span class="cl">    v
</span></span><span class="line"><span class="ln">5</span><span class="cl">測試 Ticket (TST)
</span></span><span class="line"><span class="ln">6</span><span class="cl">    |
</span></span><span class="line"><span class="ln">7</span><span class="cl">    | 測試失敗，衍生
</span></span><span class="line"><span class="ln">8</span><span class="cl">    v
</span></span><span class="line"><span class="ln">9</span><span class="cl">調整 Ticket (ADJ)，dispatch_reason: &#34;UC-01 測試失敗，需修復 ImportService&#34;</span></span></code></pre></div><hr>
<h2 id="ticket-id-命名規範">Ticket ID 命名規範</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">根任務：{Version}-W{Wave}-{Seq}
</span></span><span class="line"><span class="ln">2</span><span class="cl">子任務：{根ID}.{n}[.{n}...]</span></span></code></pre></div><p>Wave 代表執行批次的依賴層級：W1 無依賴可並行，W2 依賴 W1，以此類推。</p>
<p><code>0.15.16-W1-001</code> 是 v0.15.16 的 Wave 1 第一個任務。<code>0.31.0-W3-002.1</code> 是 0.31.0-W3-002 的第一個子任務。單看 ID 就能判斷它在版本工作流中的位置。</p>
<hr>
<h2 id="5w1h-驅動的欄位設計">5W1H 驅動的欄位設計</h2>
<p>每張 Ticket 的 YAML 欄位對應 5W1H：</p>
<ul>
<li>Who：負責人與各 Phase 的歷史負責人</li>
<li>What：任務目標（動詞加單一目標）</li>
<li>When：觸發時機</li>
<li>Where：架構層級與影響的檔案清單</li>
<li>Why：需求依據</li>
<li>How：任務類型與實作策略</li>
</ul>
<p>欄位設計讓 Ticket 本身就能完整描述任務全貌，交接時不需要額外解釋背景。</p>
<hr>
<h2 id="拆分範例">拆分範例</h2>
<h3 id="把功能清單拆成原子任務">把功能清單拆成原子任務</h3>
<p>原始需求：「實作 ISBNScannerService 的 15 個測試」</p>
<p>拆分後：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">0.15.16-W1-001: 實作 startScan() 方法
</span></span><span class="line"><span class="ln">2</span><span class="cl">0.15.16-W1-002: 實作 stopScan() 方法
</span></span><span class="line"><span class="ln">3</span><span class="cl">0.15.16-W1-003: 實作 validateIsbn10() 驗證邏輯
</span></span><span class="line"><span class="ln">4</span><span class="cl">0.15.16-W1-004: 實作 validateIsbn13() 驗證邏輯
</span></span><span class="line"><span class="ln">5</span><span class="cl">0.15.16-W2-005: 實作離線掃描支援（依賴 W1）
</span></span><span class="line"><span class="ln">6</span><span class="cl">0.15.16-W2-006: 實作批次掃描模式（依賴 W1）</span></span></code></pre></div><p>W1 任務可並行，W2 等 W1 完成後進行。</p>
<h3 id="知道什麼時候不該拆">知道什麼時候不該拆</h3>
<p>需求：「實作 BookRepository.save() 方法」</p>
<p>有人可能拆成：Ticket A 實作簽名、Ticket B 實作邏輯、Ticket C 實作驗證。</p>
<p>這是錯的。save() 的簽名、邏輯、驗證三者循環依賴，硬拆後每張都無法獨立完成。正確做法是維持為單一 Ticket。</p>
<hr>
<h2 id="建立-ticket-前的四個問題">建立 Ticket 前的四個問題</h2>
<ol>
<li>能用「動詞 + 單一目標」描述嗎？</li>
<li>只有一個修改原因嗎？</li>
<li>所有驗收條件都指向同一個目標嗎？</li>
<li>如果拆開，不會產生循環依賴嗎？</li>
</ol>
<p>常見的違反模式：「實作 X 和 Y」（兩個目標）、「修復所有 X 測試」（多個目標）、「重構 X 並優化 Y」（兩個行動）、「建立 X 的完整功能」（目標模糊）。</p>]]></content:encoded></item><item><title>Frontmatter 式 Ticket 追蹤方法論 - 結構化任務狀態管理</title><link>https://tarrragon.github.io/blog/record/frontmatter-%E5%BC%8F-ticket-%E8%BF%BD%E8%B9%A4%E6%96%B9%E6%B3%95%E8%AB%96-%E7%B5%90%E6%A7%8B%E5%8C%96%E4%BB%BB%E5%8B%99%E7%8B%80%E6%85%8B%E7%AE%A1%E7%90%86/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/record/frontmatter-%E5%BC%8F-ticket-%E8%BF%BD%E8%B9%A4%E6%96%B9%E6%B3%95%E8%AB%96-%E7%B5%90%E6%A7%8B%E5%8C%96%E4%BB%BB%E5%8B%99%E7%8B%80%E6%85%8B%E7%AE%A1%E7%90%86/</guid><description>&lt;p>在多代理人協作開發流程中，我們長期被一個問題困擾：主線程怎麼知道各代理人的執行進度？&lt;/p>
&lt;p>起初讓代理人完成後回報，但每次回報都消耗 context 空間，狀態散落在對話歷史裡，根本無法可靠查詢。&lt;/p>
&lt;p>後來試過 CSV 追蹤表，但 Ticket 設計文件在一個地方、狀態在另一個地方，兩者很容易出現不一致。&lt;/p>
&lt;p>最終答案：把狀態放進 Ticket 文件本身的 YAML Frontmatter 裡。&lt;/p></description><content:encoded><![CDATA[<p>在多代理人協作開發流程中，我們長期被一個問題困擾：主線程怎麼知道各代理人的執行進度？</p>
<p>起初讓代理人完成後回報，但每次回報都消耗 context 空間，狀態散落在對話歷史裡，根本無法可靠查詢。</p>
<p>後來試過 CSV 追蹤表，但 Ticket 設計文件在一個地方、狀態在另一個地方，兩者很容易出現不一致。</p>
<p>最終答案：把狀態放進 Ticket 文件本身的 YAML Frontmatter 裡。</p>
<h2 id="狀態與內容為什麼要分離">狀態與內容為什麼要分離？</h2>
<p>一個 Ticket 天然包含兩種資訊：「要做什麼」和「做到哪裡了」。傳統做法把它們放在不同地方，製造了一個持續的維護負擔——查狀態要看兩個地方，兩個地方隨時可能不一致。</p>
<p>Markdown 的 YAML frontmatter 本來就是機器可解析的結構化資料，直接把狀態放進去，Ticket 就成了自給自足的單元：frontmatter 存設計決策和當前狀態，body 存執行日誌。</p>
<h2 id="核心設計原則">核心設計原則</h2>
<h3 id="frontmatter-是唯一的狀態來源">Frontmatter 是唯一的狀態來源</h3>
<p>主線程查進度時直接讀 frontmatter，不需要問代理人。代理人更新狀態時直接改 frontmatter，不需要回報主線程。兩端獨立操作，不需要等彼此。</p>
<h3 id="單一文件原則">單一文件原則</h3>
<p>每個 Ticket 只有一個文件：frontmatter 放識別資訊、5W1H 設計、驗收條件、依賴關係和當前狀態；body 放執行日誌。一個文件說清楚一切。</p>
<h3 id="查詢輸出最小化">查詢輸出最小化</h3>
<p><code>summary</code> 產出緊湊的一行式列表，<code>query</code> 只回傳單一 Ticket 的精簡資訊。查詢不應消耗 context，只應提供答案。</p>
<h2 id="frontmatter-的欄位設計">Frontmatter 的欄位設計</h2>
<p><strong>識別資訊</strong>：<code>ticket_id</code>、<code>version</code>、<code>wave</code>，確保每個 Ticket 有唯一且可解析的身份。</p>
<p><strong>單一職責定義</strong>：<code>action</code>（有限動詞：Implement、Fix、Add、Refactor、Remove、Update）加 <code>target</code>（操作對象）。強制「動詞 + 單一目標」的格式，防止一個 Ticket 偷渡多個責任。</p>
<p><strong>5W1H 設計</strong>：六個欄位確保 Ticket 在建立時就已經回答了誰來做、做什麼、什麼時機、在哪裡改、為什麼要做、怎麼做。</p>
<p><strong>驗收條件</strong>：<code>acceptance</code> 列表，每個條目完成後勾選。「完成」的定義在建立時就講清楚，不留到最後才爭。</p>
<p><strong>狀態追蹤</strong>：<code>status</code>（pending、in_progress、completed）、<code>assigned</code>（布林值）、<code>started_at</code>、<code>completed_at</code>。</p>
<h2 id="操作流程">操作流程</h2>
<ul>
<li><code>ticket create</code>：生成帶完整 frontmatter 的 Markdown 文件，初始狀態 <code>pending</code>、<code>assigned: false</code></li>
<li><code>ticket track claim</code>：<code>status</code> 改為 <code>in_progress</code>、<code>assigned: true</code>、記錄 <code>started_at</code></li>
<li><code>ticket track complete</code>：<code>status</code> 改為 <code>completed</code>、記錄 <code>completed_at</code></li>
<li><code>ticket track release</code>：Ticket 退回 <code>pending</code>，可由其他人接手</li>
<li><code>ticket track summary</code>：輸出所有 Ticket 的緊湊一覽，幾秒掌握版本進度</li>
</ul>
<h2 id="與文件系統的整合">與文件系統的整合</h2>
<p>Ticket 是整個文件系統的最底層：CHANGELOG 的素材從 Ticket 記錄提取，版本收尾時從 Ticket 狀態確認所有任務完成。上面還有 worklog（版本目標）和 todolist（版本索引），各層各司其職，形成可追蹤的鏈條。</p>
<h2 id="向後相容策略">向後相容策略</h2>
<p>遷移前已有一批 CSV 格式的舊 Ticket。策略是「新格式完整支援，舊格式唯讀查詢」：工具自動偵測，有 <code>tickets/</code> 目錄就用新格式，只有 <code>tickets.csv</code> 就唯讀讀取。舊版本的 <code>summary</code> 和 <code>list</code> 仍可運作，只是不能執行狀態變更。不需要一次性轉換所有歷史記錄。</p>
<h2 id="實踐中的行為規範">實踐中的行為規範</h2>
<p>主線程不應該問代理人「你做完了嗎」。執行查詢命令，讀 frontmatter。</p>
<p>代理人完成後，詳細說明寫進 Ticket body（問題分析、解決方案、測試結果），不要輸出給主線程。主線程只需要知道一件事：Ticket 是否已完成。</p>
<p>執行日誌要記完整——不只是最終結果，還有過程中遇到的問題、嘗試的方案、最終選擇的原因。這讓 Ticket 成為可供日後回顧的執行記錄，而不只是一個狀態標記。</p>
<h2 id="本質上解決的問題">本質上解決的問題</h2>
<p>主線程不需要「知道」進度，它只需要「查詢」。狀態是持久化的、機器可讀的、時刻最新的。</p>
<p>這把進度追蹤從「溝通問題」變成了「查詢問題」。溝通依賴時機、依賴雙方都在場；查詢只依賴資料存在和工具可靠。從 CSV 到 Frontmatter，本質是從「狀態需要溝通」到「狀態需要持久化」的思維轉換。</p>]]></content:encoded></item><item><title>建議追蹤方法論 - 確保每個改善建議都被處理</title><link>https://tarrragon.github.io/blog/record/%E5%BB%BA%E8%AD%B0%E8%BF%BD%E8%B9%A4%E6%96%B9%E6%B3%95%E8%AB%96-%E7%A2%BA%E4%BF%9D%E6%AF%8F%E5%80%8B%E6%94%B9%E5%96%84%E5%BB%BA%E8%AD%B0%E9%83%BD%E8%A2%AB%E8%99%95%E7%90%86/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/record/%E5%BB%BA%E8%AD%B0%E8%BF%BD%E8%B9%A4%E6%96%B9%E6%B3%95%E8%AB%96-%E7%A2%BA%E4%BF%9D%E6%AF%8F%E5%80%8B%E6%94%B9%E5%96%84%E5%BB%BA%E8%AD%B0%E9%83%BD%E8%A2%AB%E8%99%95%E7%90%86/</guid><description>&lt;p>每次調查報告結束，都會留下一串建議清單。建立 W4-007、改進 W4-008、考慮 W4-009——討論當下看起來理所當然，但等到真正執行時，只完成了第一條，其他的消失在對話紀錄裡。&lt;/p>
&lt;p>這是系統性的問題。&lt;/p></description><content:encoded><![CDATA[<p>每次調查報告結束，都會留下一串建議清單。建立 W4-007、改進 W4-008、考慮 W4-009——討論當下看起來理所當然，但等到真正執行時，只完成了第一條，其他的消失在對話紀錄裡。</p>
<p>這是系統性的問題。</p>
<h2 id="建議為什麼會消失">建議為什麼會消失</h2>
<p>調查代理人完成分析後，輸出三條行動建議。PM 認為都合理，但在轉換為 Ticket 的過程中，不知不覺只處理了第一條，後兩條就這樣掉落。</p>
<p>沒有人刻意忽略。問題在於缺乏機制：建議產生後，沒有任何地方強制追蹤它的狀態，也沒有把建議和驗收條件連結起來的橋樑。建議存在於報告裡，但沒有人對它的去向負責。</p>
<h2 id="四種狀態對應四種歸宿">四種狀態，對應四種歸宿</h2>
<p>每條建議都必須從「待決定」進入以下三種狀態之一，任務開始執行前不能還掛在待決定。</p>
<p><strong>採納</strong>：決定實作。但採納不只是打個勾，必須把建議轉換為具體驗收條件，納入 Ticket 的 Acceptance Criteria，讓它在驗收時可以被明確確認。</p>
<p><strong>拒絕</strong>：決定不做。拒絕是合理決策，但必須說明原因——範圍超出、成本太高、已有替代方案。沒有理由的拒絕等同於忽略。</p>
<p><strong>延後</strong>：認可價值但現在不是時候。延後必須標註目標版本，否則和被遺忘沒有差別。</p>
<h2 id="採納後的雙向連結">採納後的雙向連結</h2>
<p>建議被採納後，在驗收條件中新增對應項目，並標註來源指回原始建議。建議追蹤表指向驗收條件編號，驗收條件表引用建議來源——雙向連結讓日後的審查可以追溯整個決策脈絡。</p>
<h2 id="驗收時的強制檢查">驗收時的強制檢查</h2>
<p>Ticket 申請完成時，驗收者必須確認：所有建議都離開了待決定狀態、採納的建議已轉換為驗收條件並完成、拒絕的建議有明確理由、延後的建議有目標版本。任何一項未達成，驗收失敗。</p>
<p>這讓建議追蹤從「應該做」變成「必須做」，不再依賴個人記憶。</p>
<h2 id="實際範例">實際範例</h2>
<p>調查報告提出兩個建議：建立專責驗收代理人，以及建立自動化驗收 Hook。</p>
<p>PM 採納第一個，對應驗收條件 AC-001。第二個因架構尚未支援，延後到 v0.32.0 並建立追蹤 Ticket。</p>
<p>驗收時，兩條建議都離開了待決定狀態，AC-001 對應的工作已完成，延後的建議有明確去處。驗收通過。</p>
<h2 id="責任明確化">責任明確化</h2>
<p>建議追蹤的本質是讓每條建議都有人負責。每個決策都有理由，每個採納都有對應的驗收條件，沒有任何建議可以在沒有決策的情況下消失。</p>
<p>引入這個機制後，不需要再追問「那個建議後來怎麼了」。答案永遠在追蹤表裡。</p>]]></content:encoded></item><item><title>驗收條件方法論 - 確保任務完整性的系統化驗收標準</title><link>https://tarrragon.github.io/blog/record/%E9%A9%97%E6%94%B6%E6%A2%9D%E4%BB%B6%E6%96%B9%E6%B3%95%E8%AB%96-%E7%A2%BA%E4%BF%9D%E4%BB%BB%E5%8B%99%E5%AE%8C%E6%95%B4%E6%80%A7%E7%9A%84%E7%B3%BB%E7%B5%B1%E5%8C%96%E9%A9%97%E6%94%B6%E6%A8%99%E6%BA%96/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/record/%E9%A9%97%E6%94%B6%E6%A2%9D%E4%BB%B6%E6%96%B9%E6%B3%95%E8%AB%96-%E7%A2%BA%E4%BF%9D%E4%BB%BB%E5%8B%99%E5%AE%8C%E6%95%B4%E6%80%A7%E7%9A%84%E7%B3%BB%E7%B5%B1%E5%8C%96%E9%A9%97%E6%94%B6%E6%A8%99%E6%BA%96/</guid><description>&lt;p>有一天，一個開發任務進入了完成狀態。所有人都說「做完了」。但一週後我們才發現，「做完了」對每個人的意義不同。有人以為只要主功能可以跑，有人以為還需要測試全綠，有人以為文件也要同步更新。這件事讓我們開始認真想：一個任務究竟在什麼條件下才算「完成」？&lt;/p></description><content:encoded><![CDATA[<p>有一天，一個開發任務進入了完成狀態。所有人都說「做完了」。但一週後我們才發現，「做完了」對每個人的意義不同。有人以為只要主功能可以跑，有人以為還需要測試全綠，有人以為文件也要同步更新。這件事讓我們開始認真想：一個任務究竟在什麼條件下才算「完成」？</p>
<p>驗收條件（Acceptance Criteria）這個詞不陌生，但在實際流程中，它往往淪為形式：「功能實作完成」、「測試通過」、「文件更新」——三條模糊的描述，沒有人能在執行後說出「這確實通過了」的具體理由。</p>
<hr>
<h2 id="驗收條件是一份契約">驗收條件是一份契約</h2>
<p>核心定義：驗收條件是用戶和執行者之間的明確約定，雙方都能清楚判斷任務是否完成。</p>
<p>關鍵在「雙方都能清楚判斷」。不是執行者自己說「差不多了」，而是在撰寫驗收條件的當下，就預先定義好「怎樣算完成」的標準。</p>
<p>這延伸出 4V 原則：</p>
<p><strong>可驗證（Verifiable）</strong>：每一條都要有具體的確認方法。執行什麼命令？看什麼輸出？要寫明。</p>
<p><strong>可量化（Quantifiable）</strong>：「所有測試通過」不夠，要說「77/77 個測試通過」。量化讓驗收可以被計算，不是被感覺。</p>
<p><strong>可追溯（Traceable）</strong>：每一條都應該引用來源——哪個設計文件的哪一行、哪個規格的哪個章節。來源讓驗收有根據。</p>
<p><strong>可記錄（Documented）</strong>：驗收結果必須能寫入文件，留下狀態標記。三個月後翻開 Ticket，能看到每一條是否通過、通過的證據是什麼。</p>
<hr>
<h2 id="四種情境四種確認方式">四種情境，四種確認方式</h2>
<p>不同性質的驗收項目需要不同的確認方式，混在一起只會讓「怎麼確認」這件事也變模糊。</p>
<p><strong>功能驗收</strong>：程式功能是否正確實作。確認方式是執行命令、看輸出是否符合預期。</p>
<p><strong>流程驗收</strong>：開發流程品質關卡——測試全綠、靜態分析無錯誤。確認方式是執行測試套件和工具輸出狀態。</p>
<p><strong>文件驗收</strong>：文件是否正確更新。確認方式是檢查特定檔案存在、特定內容在正確位置。</p>
<p><strong>建議驗收</strong>：Ticket 執行過程中收到的建議，每一條都需要有明確的處置（採納、拒絕或延後），不能讓建議懸在半空中。</p>
<hr>
<h2 id="證據不是感覺">證據，不是感覺</h2>
<p>每一條驗收項目通過後，要留下對應的紀錄：命令輸出留命令和輸出文字、測試通過留「77/77 tests passed」、靜態分析留「dart analyze: 0 issues」。</p>
<p>這看起來繁瑣，但意義在於：三個月後翻開這個 Ticket 的人，不需要重跑所有確認，就能看到當初怎麼通過的。</p>
<hr>
<h2 id="模糊詞彙是驗收條件的天敵">模糊詞彙是驗收條件的天敵</h2>
<p>幾個最常出現的危險詞彙：</p>
<p>「完成」沒有說完成的標準是什麼。換成「某子命令可執行並顯示預期的樹狀結構」。</p>
<p>「正常」沒有定義什麼叫正常。換成「輸入無效 ID 時顯示特定錯誤訊息」。</p>
<p>「適當」最危險，因為每個人的感受不同。引用具體標準文件，說「符合品質基線文件的測試覆蓋率要求」。</p>
<p>「符合規範」不說是哪個規範。要把規範文件寫出來。</p>
<hr>
<h2 id="最低成本陷阱一個真實的故事">最低成本陷阱：一個真實的故事</h2>
<p>我們曾遇到這樣的驗收條件：「SKILL.md 只列已實作指令，或實作缺失指令」。</p>
<p>這個「或」讓執行者面對兩個選項：刪除文件裡還沒實作的指令描述（省力），或去實作缺失的功能（耗時）。在沒有明確業務意圖的情況下，執行者幾乎必然選第一個。</p>
<p>結果是技術上正確、業務上損失慘重——那些「未實作的指令」其實是規劃中的功能，刪掉等於丟失了產品藍圖。</p>
<p>從那以後我們立下一條規則：驗收條件不可以用「或」連接不同方案，不可以讓執行者自行選擇最低成本的方向。</p>
<p>正確做法是在撰寫驗收條件前先確認業務意圖：這個任務要解決什麼問題？根本原因是什麼？理想結果是什麼？什麼結果不可接受？回答這四個問題後，方向才能確定，而且只有一個方向。</p>
<hr>
<h2 id="業務意圖的三個宣告">業務意圖的三個宣告</h2>
<p>每個 Ticket 的驗收條件要包含三個業務層面的說明：業務目標（要達成什麼）、期望結果（完成後應該是什麼狀態）、禁止結果（完成後不應該是什麼狀態）。</p>
<p>「禁止結果」最常被忽略，但它往往是防止最低成本陷阱最有效的護欄。明確寫下「不可損失規劃中的功能」，執行者就沒辦法假裝「刪除文件」是合理的選擇。</p>
<p>類似地，當文件和實作不一致時，不能用「修正不一致」帶過。要先判斷這個不一致的性質：規劃中的功能（保留並建立實作 Ticket）、錯誤記錄（移除）、過時功能（標記 deprecated）、重命名移動（更新引用）——四種情況對應四種處理方式，一條模糊的驗收條件無法涵蓋。</p>
<hr>
<h2 id="格式的選擇">格式的選擇</h2>
<p>三種格式對應不同複雜度：</p>
<p>簡單任務（五條以下）用清單，粗體標記項目，括號標記來源，後面說明確認方法。</p>
<p>中型任務用表格，有編號、項目描述、來源引用、確認方法、完成狀態，按功能/流程/文件分類。</p>
<p>複雜任務用分類格式，每個類別獨立表格，加上驗收摘要區段：「功能驗收 0/N 完成」、「流程驗收 0/N 完成」。</p>
<p>選格式的關鍵是任務是否跨越多個類別。只要同時涵蓋功能實作、測試品質、文件更新，就應該用分類格式。</p>
<hr>
<h2 id="結語">結語</h2>
<p>驗收條件的本質是「事先定義完成的樣子」。這個過程強迫我們在任務開始前就把終點想清楚，而不是結束後才爭論「算不算完成」。</p>
<p>我們從這套方法論得到最大的收穫是一種心態的轉變：當你開始認真設計驗收條件，你其實是在認真思考這個任務究竟要達成什麼。</p>]]></content:encoded></item><item><title>Ticket 生命週期流程 - AI 協作開發的任務管理系統</title><link>https://tarrragon.github.io/blog/record/ticket-%E7%94%9F%E5%91%BD%E9%80%B1%E6%9C%9F%E6%B5%81%E7%A8%8B-ai-%E5%8D%94%E4%BD%9C%E9%96%8B%E7%99%BC%E7%9A%84%E4%BB%BB%E5%8B%99%E7%AE%A1%E7%90%86%E7%B3%BB%E7%B5%B1/</link><pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/record/ticket-%E7%94%9F%E5%91%BD%E9%80%B1%E6%9C%9F%E6%B5%81%E7%A8%8B-ai-%E5%8D%94%E4%BD%9C%E9%96%8B%E7%99%BC%E7%9A%84%E4%BB%BB%E5%8B%99%E7%AE%A1%E7%90%86%E7%B3%BB%E7%B5%B1/</guid><description>&lt;p>本文件定義 Ticket 從建立到完成的完整生命週期。這套系統是我在 AI 協作開發（Claude Code）過程中逐步建立的任務追蹤機制。&lt;/p>
&lt;h2 id="生命週期總覽">生命週期總覽&lt;/h2>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln"> 1&lt;/span>&lt;span class="cl">需求/問題產生
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 2&lt;/span>&lt;span class="cl"> |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 3&lt;/span>&lt;span class="cl"> v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 4&lt;/span>&lt;span class="cl">建立 Ticket (/ticket create)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 5&lt;/span>&lt;span class="cl"> |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 6&lt;/span>&lt;span class="cl"> v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 7&lt;/span>&lt;span class="cl">Ticket 狀態: pending
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 8&lt;/span>&lt;span class="cl"> |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 9&lt;/span>&lt;span class="cl"> v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">10&lt;/span>&lt;span class="cl">認領 Ticket (/ticket track claim)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">11&lt;/span>&lt;span class="cl"> |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">12&lt;/span>&lt;span class="cl"> v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">13&lt;/span>&lt;span class="cl">Ticket 狀態: in_progress
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">14&lt;/span>&lt;span class="cl"> |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">15&lt;/span>&lt;span class="cl"> +-- 正常完成 --&amp;gt; /ticket track complete --&amp;gt; 狀態: completed
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">16&lt;/span>&lt;span class="cl"> |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">17&lt;/span>&lt;span class="cl"> +-- 無法繼續 --&amp;gt; /ticket track release --&amp;gt; 狀態: blocked
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">18&lt;/span>&lt;span class="cl"> | |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">19&lt;/span>&lt;span class="cl"> | v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">20&lt;/span>&lt;span class="cl"> | 升級到 PM 處理
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">21&lt;/span>&lt;span class="cl"> |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">22&lt;/span>&lt;span class="cl"> v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">23&lt;/span>&lt;span class="cl">完成&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這套系統的核心目標是將任務需求有邏輯地拆分拆細。任務進來後先分析，拆分成平行的子任務；子任務若仍太大，可繼續往下切分。執行時從最底層開始，完成後檢查平行任務，再往上驗收父任務，直到整個任務鏈完成。&lt;/p>
&lt;p>任務拆小的好處：降低執行時的認知負擔，也讓驗收檢查更容易發現疏失。&lt;/p>
&lt;h2 id="ticket-狀態定義">Ticket 狀態定義&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>狀態&lt;/th>
 &lt;th>說明&lt;/th>
 &lt;th>允許操作&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>pending&lt;/td>
 &lt;td>等待處理&lt;/td>
 &lt;td>claim&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>in_progress&lt;/td>
 &lt;td>處理中&lt;/td>
 &lt;td>complete, release&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>completed&lt;/td>
 &lt;td>已完成&lt;/td>
 &lt;td>-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>blocked&lt;/td>
 &lt;td>被阻塞&lt;/td>
 &lt;td>claim（重新認領）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="階段-標準流程對照表">階段-標準流程對照表&lt;/h2>
&lt;p>每個生命週期階段都有對應的標準流程和提示，防止關鍵步驟被遺漏。&lt;/p>
&lt;h3 id="建立階段">建立階段&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>標準流程&lt;/th>
 &lt;th>提示強度&lt;/th>
 &lt;th>說明&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>SA 前置審查評估&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>新功能/架構變更時需要 SA 審查&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>任務拆分評估&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>認知負擔 &amp;gt; 10 時需要拆分&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>驗收條件 4V 檢查&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>確保驗收條件可驗證、可量化、可追溯、可記錄&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>blockedBy 設定&lt;/td>
 &lt;td>提示&lt;/td>
 &lt;td>提醒設定依賴關係&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>decision_tree_path 填寫&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>派發驗證必需&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="認領階段">認領階段&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>標準流程&lt;/th>
 &lt;th>提示強度&lt;/th>
 &lt;th>說明&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>阻塞依賴檢查&lt;/td>
 &lt;td>警告&lt;/td>
 &lt;td>如有阻塞依賴，顯示警告&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>設計文件閱讀&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>提醒閱讀相關規格和設計&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>驗收條件理解&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>確保理解驗收標準&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>error-patterns 查詢&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>IMP/ADJ 類型時建議查詢&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="執行階段">執行階段&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>標準流程&lt;/th>
 &lt;th>提示強度&lt;/th>
 &lt;th>說明&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>問題派發 incident-responder&lt;/td>
 &lt;td>強制&lt;/td>
 &lt;td>遇到錯誤時強制派發&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>工作日誌更新&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>執行過程記錄&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="完成階段">完成階段&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>標準流程&lt;/th>
 &lt;th>提示強度&lt;/th>
 &lt;th>說明&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>驗收條件勾選確認&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>所有條件必須勾選&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>建議處理確認&lt;/td>
 &lt;td>建議&lt;/td>
 &lt;td>無 pending 建議&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>派發 acceptance-auditor&lt;/td>
 &lt;td>強制&lt;/td>
 &lt;td>IMP/ADJ 類型必須執行驗收&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>任務鏈後續步驟建議&lt;/td>
 &lt;td>提示&lt;/td>
 &lt;td>分析並建議下一個 Ticket&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="驗收後階段">驗收後階段&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>標準流程&lt;/th>
 &lt;th>目的&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>技術債務記錄&lt;/td>
 &lt;td>將執行過程中發現的技術債務正式記錄，避免遺忘&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>CHANGELOG 更新&lt;/td>
 &lt;td>在版本發布時更新變更日誌，維護版本歷史的完整性&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>學習經驗記錄&lt;/td>
 &lt;td>萃取任務中的學習經驗，建構團隊知識網絡&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>任務鏈進度更新&lt;/td>
 &lt;td>追蹤整體任務鏈完成度，便於掌握專案整體進度&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="任務鏈後續步驟建議">任務鏈後續步驟建議&lt;/h2>
&lt;p>當 Ticket 完成時，系統會自動分析任務鏈狀態並建議下一步。&lt;/p></description><content:encoded><![CDATA[<p>本文件定義 Ticket 從建立到完成的完整生命週期。這套系統是我在 AI 協作開發（Claude Code）過程中逐步建立的任務追蹤機制。</p>
<h2 id="生命週期總覽">生命週期總覽</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">需求/問題產生
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">    |
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    v
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">建立 Ticket (/ticket create)
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    |
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    v
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">Ticket 狀態: pending
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    |
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    v
</span></span><span class="line"><span class="ln">10</span><span class="cl">認領 Ticket (/ticket track claim)
</span></span><span class="line"><span class="ln">11</span><span class="cl">    |
</span></span><span class="line"><span class="ln">12</span><span class="cl">    v
</span></span><span class="line"><span class="ln">13</span><span class="cl">Ticket 狀態: in_progress
</span></span><span class="line"><span class="ln">14</span><span class="cl">    |
</span></span><span class="line"><span class="ln">15</span><span class="cl">    +-- 正常完成 --&gt; /ticket track complete --&gt; 狀態: completed
</span></span><span class="line"><span class="ln">16</span><span class="cl">    |
</span></span><span class="line"><span class="ln">17</span><span class="cl">    +-- 無法繼續 --&gt; /ticket track release --&gt; 狀態: blocked
</span></span><span class="line"><span class="ln">18</span><span class="cl">    |                                              |
</span></span><span class="line"><span class="ln">19</span><span class="cl">    |                                              v
</span></span><span class="line"><span class="ln">20</span><span class="cl">    |                                         升級到 PM 處理
</span></span><span class="line"><span class="ln">21</span><span class="cl">    |
</span></span><span class="line"><span class="ln">22</span><span class="cl">    v
</span></span><span class="line"><span class="ln">23</span><span class="cl">完成</span></span></code></pre></div><p>這套系統的核心目標是將任務需求有邏輯地拆分拆細。任務進來後先分析，拆分成平行的子任務；子任務若仍太大，可繼續往下切分。執行時從最底層開始，完成後檢查平行任務，再往上驗收父任務，直到整個任務鏈完成。</p>
<p>任務拆小的好處：降低執行時的認知負擔，也讓驗收檢查更容易發現疏失。</p>
<h2 id="ticket-狀態定義">Ticket 狀態定義</h2>
<table>
  <thead>
      <tr>
          <th>狀態</th>
          <th>說明</th>
          <th>允許操作</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>pending</td>
          <td>等待處理</td>
          <td>claim</td>
      </tr>
      <tr>
          <td>in_progress</td>
          <td>處理中</td>
          <td>complete, release</td>
      </tr>
      <tr>
          <td>completed</td>
          <td>已完成</td>
          <td>-</td>
      </tr>
      <tr>
          <td>blocked</td>
          <td>被阻塞</td>
          <td>claim（重新認領）</td>
      </tr>
  </tbody>
</table>
<h2 id="階段-標準流程對照表">階段-標準流程對照表</h2>
<p>每個生命週期階段都有對應的標準流程和提示，防止關鍵步驟被遺漏。</p>
<h3 id="建立階段">建立階段</h3>
<table>
  <thead>
      <tr>
          <th>標準流程</th>
          <th>提示強度</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>SA 前置審查評估</td>
          <td>建議</td>
          <td>新功能/架構變更時需要 SA 審查</td>
      </tr>
      <tr>
          <td>任務拆分評估</td>
          <td>建議</td>
          <td>認知負擔 &gt; 10 時需要拆分</td>
      </tr>
      <tr>
          <td>驗收條件 4V 檢查</td>
          <td>建議</td>
          <td>確保驗收條件可驗證、可量化、可追溯、可記錄</td>
      </tr>
      <tr>
          <td>blockedBy 設定</td>
          <td>提示</td>
          <td>提醒設定依賴關係</td>
      </tr>
      <tr>
          <td>decision_tree_path 填寫</td>
          <td>建議</td>
          <td>派發驗證必需</td>
      </tr>
  </tbody>
</table>
<h3 id="認領階段">認領階段</h3>
<table>
  <thead>
      <tr>
          <th>標準流程</th>
          <th>提示強度</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>阻塞依賴檢查</td>
          <td>警告</td>
          <td>如有阻塞依賴，顯示警告</td>
      </tr>
      <tr>
          <td>設計文件閱讀</td>
          <td>建議</td>
          <td>提醒閱讀相關規格和設計</td>
      </tr>
      <tr>
          <td>驗收條件理解</td>
          <td>建議</td>
          <td>確保理解驗收標準</td>
      </tr>
      <tr>
          <td>error-patterns 查詢</td>
          <td>建議</td>
          <td>IMP/ADJ 類型時建議查詢</td>
      </tr>
  </tbody>
</table>
<h3 id="執行階段">執行階段</h3>
<table>
  <thead>
      <tr>
          <th>標準流程</th>
          <th>提示強度</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>問題派發 incident-responder</td>
          <td>強制</td>
          <td>遇到錯誤時強制派發</td>
      </tr>
      <tr>
          <td>工作日誌更新</td>
          <td>建議</td>
          <td>執行過程記錄</td>
      </tr>
  </tbody>
</table>
<h3 id="完成階段">完成階段</h3>
<table>
  <thead>
      <tr>
          <th>標準流程</th>
          <th>提示強度</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>驗收條件勾選確認</td>
          <td>建議</td>
          <td>所有條件必須勾選</td>
      </tr>
      <tr>
          <td>建議處理確認</td>
          <td>建議</td>
          <td>無 pending 建議</td>
      </tr>
      <tr>
          <td>派發 acceptance-auditor</td>
          <td>強制</td>
          <td>IMP/ADJ 類型必須執行驗收</td>
      </tr>
      <tr>
          <td>任務鏈後續步驟建議</td>
          <td>提示</td>
          <td>分析並建議下一個 Ticket</td>
      </tr>
  </tbody>
</table>
<h3 id="驗收後階段">驗收後階段</h3>
<table>
  <thead>
      <tr>
          <th>標準流程</th>
          <th>目的</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>技術債務記錄</td>
          <td>將執行過程中發現的技術債務正式記錄，避免遺忘</td>
      </tr>
      <tr>
          <td>CHANGELOG 更新</td>
          <td>在版本發布時更新變更日誌，維護版本歷史的完整性</td>
      </tr>
      <tr>
          <td>學習經驗記錄</td>
          <td>萃取任務中的學習經驗，建構團隊知識網絡</td>
      </tr>
      <tr>
          <td>任務鏈進度更新</td>
          <td>追蹤整體任務鏈完成度，便於掌握專案整體進度</td>
      </tr>
  </tbody>
</table>
<h2 id="任務鏈後續步驟建議">任務鏈後續步驟建議</h2>
<p>當 Ticket 完成時，系統會自動分析任務鏈狀態並建議下一步。</p>
<h3 id="分析優先級">分析優先級</h3>
<table>
  <thead>
      <tr>
          <th>優先級</th>
          <th>情境</th>
          <th>建議內容</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>有子 Ticket 可開始</td>
          <td>「子 Ticket {id} 現在可以開始」</td>
      </tr>
      <tr>
          <td>2</td>
          <td>有被解除阻塞的 Ticket</td>
          <td>「{id} 的阻塞已解除」</td>
      </tr>
      <tr>
          <td>3</td>
          <td>有同層兄弟 Ticket</td>
          <td>「同層還有 {id} 待處理」</td>
      </tr>
      <tr>
          <td>4</td>
          <td>同 Wave 有其他 pending</td>
          <td>「同 Wave 還有 N 個待處理」</td>
      </tr>
      <tr>
          <td>5</td>
          <td>任務鏈全部完成</td>
          <td>「任務鏈 {root} 全部完成」</td>
      </tr>
  </tbody>
</table>
<h3 id="輸出範例">輸出範例</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">============================================================
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">[任務鏈後續步驟建議]
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">============================================================
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">已完成: 0.31.0-W4-007.1
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">        [實作 track P0 功能]
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">任務鏈進度: 1/3 completed
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">   Root: 0.31.0-W4-007
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">建議下一步:
</span></span><span class="line"><span class="ln">12</span><span class="cl">   1. 0.31.0-W4-007.2
</span></span><span class="line"><span class="ln">13</span><span class="cl">      [實作 track P1 功能]
</span></span><span class="line"><span class="ln">14</span><span class="cl">      原因: 阻塞已解除（blockedBy 0.31.0-W4-007.1 已完成）
</span></span><span class="line"><span class="ln">15</span><span class="cl">      狀態: pending → 可認領</span></span></code></pre></div><h2 id="任務鏈-id-格式">任務鏈 ID 格式</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">0.31.0-W3-002              # ticket-handoff 功能（根）
</span></span><span class="line"><span class="ln">2</span><span class="cl">├── 0.31.0-W3-002.1        # chain_analyzer 模組
</span></span><span class="line"><span class="ln">3</span><span class="cl">│   ├── 0.31.0-W3-002.1.1  # 問題修復
</span></span><span class="line"><span class="ln">4</span><span class="cl">│   └── 0.31.0-W3-002.1.2  # 測試補充
</span></span><span class="line"><span class="ln">5</span><span class="cl">├── 0.31.0-W3-002.2        # handoff_executor 模組
</span></span><span class="line"><span class="ln">6</span><span class="cl">└── 0.31.0-W3-002.3        # 文件更新</span></span></code></pre></div><table>
  <thead>
      <tr>
          <th>類型</th>
          <th>格式</th>
          <th>範例</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>根任務</td>
          <td><code>{版本}-W{波次}-{序號}</code></td>
          <td><code>0.31.0-W3-002</code></td>
      </tr>
      <tr>
          <td>子任務</td>
          <td><code>{根ID}.{n}[.{n}...]</code></td>
          <td><code>0.31.0-W3-002.1.1</code></td>
      </tr>
  </tbody>
</table>
<h3 id="chain-欄位">chain 欄位</h3>
<table>
  <thead>
      <tr>
          <th>欄位</th>
          <th>類型</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>root</td>
          <td>string</td>
          <td>任務鏈根 ID</td>
      </tr>
      <tr>
          <td>parent</td>
          <td>string/null</td>
          <td>直接父任務 ID</td>
      </tr>
      <tr>
          <td>depth</td>
          <td>number</td>
          <td>深度（根=0）</td>
      </tr>
      <tr>
          <td>sequence</td>
          <td>array</td>
          <td>序號路徑陣列</td>
      </tr>
  </tbody>
</table>
<p>根任務 <code>0.31.0-W3-002</code> 的 chain：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="ln">1</span><span class="cl"><span class="nt">chain</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="w">  </span><span class="nt">root</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;0.31.0-W3-002&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="w">  </span><span class="nt">parent</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="w">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="w">  </span><span class="nt">depth</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w">
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="w">  </span><span class="nt">sequence</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="m">2</span><span class="p">]</span></span></span></code></pre></div><p>子任務 <code>0.31.0-W3-002.1.1</code> 的 chain：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="ln">1</span><span class="cl"><span class="nt">chain</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="w">  </span><span class="nt">root</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;0.31.0-W3-002&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="w">  </span><span class="nt">parent</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;0.31.0-W3-002.1&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="w">  </span><span class="nt">depth</span><span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="w">  </span><span class="nt">sequence</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="m">2</span><span class="p">,</span><span class="w"> </span><span class="m">1</span><span class="p">,</span><span class="w"> </span><span class="m">1</span><span class="p">]</span></span></span></code></pre></div><p>ID 正則表達式：<code>^(\d+\.\d+\.\d+)-W(\d+)-(\d+(?:\.\d+)*)$</code></p>
<h2 id="ticket-建立流程">Ticket 建立流程</h2>
<h3 id="任務層級判斷">任務層級判斷</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">任務層級判斷
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">    |
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    v
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">這個任務是否因為執行現有 Ticket 而產生？
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    |
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    +-- 是 → 來源 Ticket 是什麼？
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    |       |
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    |       └── 確定來源 Ticket ID → 建立該 Ticket 的子任務
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    |           ├── 來源: 010.4 → 子任務 ID: 010.4.x
</span></span><span class="line"><span class="ln">10</span><span class="cl">    |           ├── 來源: 010.4.1 → 子任務 ID: 010.4.1.x
</span></span><span class="line"><span class="ln">11</span><span class="cl">    |           └── 來源: 010 → 子任務 ID: 010.x
</span></span><span class="line"><span class="ln">12</span><span class="cl">    |
</span></span><span class="line"><span class="ln">13</span><span class="cl">    └-- 否 → 建立新任務鏈（新的 Wx-00n）</span></span></code></pre></div><table>
  <thead>
      <tr>
          <th>應建立子任務</th>
          <th>應建立新任務鏈</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>問題在執行特定 Ticket 時發現</td>
          <td>問題與任何執行中的 Ticket 無關</td>
      </tr>
      <tr>
          <td>問題直接影響該 Ticket 的完成</td>
          <td>問題是系統性的獨立問題</td>
      </tr>
      <tr>
          <td>「執行 X 時發現 Y 問題」</td>
          <td>「發現系統有 Z 問題」</td>
      </tr>
  </tbody>
</table>
<p>核心判斷問題：「這個任務是在執行哪個 Ticket 時產生的？」若有明確來源，建立子任務；若無關聯，建立新任務鏈。</p>
<h3 id="建立格式">建立格式</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln"> 1</span><span class="cl">---
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">id: {版本}-W{波次}-{序號}
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">title: {動詞} {目標}
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">type: IMP/RES/ANA/INV/DOC
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">status: pending
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">priority: P0/P1/P2
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">assignee: pending
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">created: {日期}
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">---
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="gh"># {Ticket ID}: {標題}
</span></span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="gu">## 目標
</span></span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">{目標描述}
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="gu">## 驗收條件
</span></span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="k">- [ ]</span> {條件1}
</span></span><span class="line"><span class="ln">20</span><span class="cl">- [ ] {條件2}</span></span></code></pre></div><h3 id="atomic-ticket-檢查">Atomic Ticket 檢查</h3>
<table>
  <thead>
      <tr>
          <th>檢查項目</th>
          <th>標準</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>語義檢查</td>
          <td>能用「動詞 + 單一目標」表達</td>
      </tr>
      <tr>
          <td>修改原因</td>
          <td>只有一個修改原因</td>
      </tr>
      <tr>
          <td>驗收一致</td>
          <td>所有驗收條件指向同一目標</td>
      </tr>
      <tr>
          <td>依賴獨立</td>
          <td>無循環依賴</td>
      </tr>
  </tbody>
</table>
<h3 id="驗收條件格式要求">驗收條件格式要求</h3>
<p>驗收條件必須符合 4V 原則：<strong>可驗證、可量化、可追溯、可記錄</strong>。</p>
<table>
  <thead>
      <tr>
          <th>要求</th>
          <th>說明</th>
          <th>範例</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>必須有編號</td>
          <td>每個驗收項目都有編號</td>
          <td><code>1.</code>, <code>2.</code>, &hellip;</td>
      </tr>
      <tr>
          <td>必須有來源</td>
          <td>引用設計文件或需求</td>
          <td><code>SKILL.md L97</code></td>
      </tr>
      <tr>
          <td>必須有確認方法</td>
          <td>定義如何驗證完成</td>
          <td><code>執行命令驗證輸出</code></td>
      </tr>
      <tr>
          <td>禁止模糊詞彙</td>
          <td>不可用「完成」「正常」「適當」</td>
          <td>用具體描述取代</td>
      </tr>
  </tbody>
</table>
<p><strong>標準格式（表格式）</strong>：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="gu">## Acceptance Criteria
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">| #   | 項目       | 來源       | 確認方法   | 狀態 |
</span></span><span class="line"><span class="ln">4</span><span class="cl">| --- | ---------- | ---------- | ---------- | ---- |
</span></span><span class="line"><span class="ln">5</span><span class="cl">| 1   | {項目描述} | {來源引用} | {確認方法} | [ ]  |
</span></span><span class="line"><span class="ln">6</span><span class="cl">| 2   | {項目描述} | {來源引用} | {確認方法} | [ ]  |</span></span></code></pre></div><h2 id="ticket-有效性驗證">Ticket 有效性驗證</h2>
<h3 id="有效-ticket-定義">有效 Ticket 定義</h3>
<p>有效的 Ticket 必須滿足以下條件：</p>
<table>
  <thead>
      <tr>
          <th>條件</th>
          <th>說明</th>
          <th>驗證方式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>決策樹欄位</td>
          <td>包含 <code>decision_tree_path</code> 欄位</td>
          <td>YAML frontmatter 檢查</td>
      </tr>
      <tr>
          <td>或決策樹區段</td>
          <td>包含「## 決策樹路徑」Markdown 區段</td>
          <td>內容檢查</td>
      </tr>
  </tbody>
</table>
<h3 id="驗證時機">驗證時機</h3>
<table>
  <thead>
      <tr>
          <th>時機</th>
          <th>驗證者</th>
          <th>動作</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>建立 Ticket</td>
          <td>/ticket create</td>
          <td>自動要求填寫決策樹欄位</td>
      </tr>
      <tr>
          <td>派發任務</td>
          <td>agent-ticket-validation-hook</td>
          <td>阻止使用無效 Ticket</td>
      </tr>
      <tr>
          <td>認領 Ticket</td>
          <td>/ticket track claim</td>
          <td>確認 Ticket 有效性</td>
      </tr>
  </tbody>
</table>
<h3 id="無效-ticket-處理">無效 Ticket 處理</h3>
<p>無效 Ticket（缺少決策樹欄位）：</p>
<ul>
<li>無法用於 Task 派發（被 Hook 阻止）</li>
<li>需要補充決策樹欄位才能使用</li>
<li>建議使用 /ticket create 重新建立</li>
</ul>
<h3 id="補充決策樹欄位">補充決策樹欄位</h3>
<p>如果 Ticket 缺少決策樹欄位，可手動補充：</p>
<ol>
<li>
<p><strong>YAML 格式</strong>（在 frontmatter 中）：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="ln">1</span><span class="cl"><span class="nt">decision_tree_path</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="w">  </span><span class="nt">entry_point</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;第X層&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="w">  </span><span class="nt">decision_nodes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="w">    </span>- <span class="nt">layer</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;X&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="w">      </span><span class="nt">question</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;決策問題&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="w">      </span><span class="nt">answer</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;答案&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="w">      </span><span class="nt">next_action</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;下一步&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="w">  </span><span class="nt">final_decision</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;最終決策&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">9</span><span class="cl"><span class="w">  </span><span class="nt">rationale</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;決策理由&#34;</span></span></span></code></pre></div></li>
<li>
<p><strong>Markdown 格式</strong>（在內容中）：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="gu">## 決策樹路徑
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="gu">### 進入點
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="k">-</span> **層級**: 第X層
</span></span><span class="line"><span class="ln">6</span><span class="cl">- <span class="gs">**觸發條件**</span>: ...</span></span></code></pre></div></li>
</ol>
<h2 id="ticket-認領流程">Ticket 認領流程</h2>
<h3 id="認領規則">認領規則</h3>
<table>
  <thead>
      <tr>
          <th>規則</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>單一認領</td>
          <td>同一時間只能有一個代理人處理</td>
      </tr>
      <tr>
          <td>階段匹配</td>
          <td>只能認領對應階段的 Ticket</td>
      </tr>
      <tr>
          <td>依賴檢查</td>
          <td>前置 Ticket 必須完成</td>
      </tr>
  </tbody>
</table>
<h2 id="ticket-執行流程">Ticket 執行流程</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">認領 Ticket
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">    |
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    v
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">執行對應階段工作
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    |
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    v
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">更新工作日誌
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    |
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    v
</span></span><span class="line"><span class="ln">10</span><span class="cl">驗證驗收條件
</span></span><span class="line"><span class="ln">11</span><span class="cl">    |
</span></span><span class="line"><span class="ln">12</span><span class="cl">    +-- 全部通過 --&gt; 完成 Ticket
</span></span><span class="line"><span class="ln">13</span><span class="cl">    +-- 部分通過 --&gt; 繼續處理或升級
</span></span><span class="line"><span class="ln">14</span><span class="cl">    +-- 無法完成 --&gt; 釋放 Ticket</span></span></code></pre></div><h3 id="完成檢查">完成檢查</h3>
<table>
  <thead>
      <tr>
          <th>檢查項目</th>
          <th>標準</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>驗收條件</td>
          <td>所有條件都已勾選</td>
      </tr>
      <tr>
          <td>測試通過</td>
          <td>相關測試全部通過</td>
      </tr>
      <tr>
          <td>文件更新</td>
          <td>相關文件已更新</td>
      </tr>
      <tr>
          <td>工作日誌</td>
          <td>執行記錄完整</td>
      </tr>
  </tbody>
</table>
<h2 id="ticket-釋放流程">Ticket 釋放流程</h2>
<h3 id="釋放時機">釋放時機</h3>
<table>
  <thead>
      <tr>
          <th>時機</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>被阻塞</td>
          <td>依賴其他 Ticket 完成</td>
      </tr>
      <tr>
          <td>超出範圍</td>
          <td>發現需要額外工作</td>
      </tr>
      <tr>
          <td>技術限制</td>
          <td>當前無法解決</td>
      </tr>
      <tr>
          <td>資訊不足</td>
          <td>需要更多資訊</td>
      </tr>
  </tbody>
</table>
<h2 id="ticket-類型說明">Ticket 類型說明</h2>
<table>
  <thead>
      <tr>
          <th>類型</th>
          <th>代碼</th>
          <th>用途</th>
          <th>典型時長</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Research</td>
          <td>RES</td>
          <td>探索未知領域</td>
          <td>1-2 小時</td>
      </tr>
      <tr>
          <td>Analysis</td>
          <td>ANA</td>
          <td>理解現狀和問題</td>
          <td>30 分鐘 - 1 小時</td>
      </tr>
      <tr>
          <td>Implementation</td>
          <td>IMP</td>
          <td>執行具體任務</td>
          <td>1-4 小時</td>
      </tr>
      <tr>
          <td>Investigation</td>
          <td>INV</td>
          <td>深入追蹤問題根因</td>
          <td>1-2 小時</td>
      </tr>
      <tr>
          <td>Documentation</td>
          <td>DOC</td>
          <td>記錄和傳承經驗</td>
          <td>30 分鐘 - 1 小時</td>
      </tr>
  </tbody>
</table>
<h2 id="版本歷史">版本歷史</h2>
<ul>
<li>v2.8.0 (2026-02-01): 取消驗收豁免機制，改為契約式驗收</li>
<li>v2.7.0 (2026-02-01): 強化驗收代理人派發要求</li>
<li>v2.6.0 (2026-01-31): 新增任務層級判斷規則</li>
<li>v2.5.0 (2026-01-30): 新增階段-標準流程對照表和任務鏈後續步驟建議</li>
<li>v2.4.0 (2026-01-30): 新增建議追蹤流程整合章節</li>
<li>v2.3.0 (2026-01-30): 新增驗收條件格式要求章節</li>
<li>v2.2.0 (2026-01-29): 新增任務鏈 ID 格式章節</li>
<li>v2.1.0 (2026-01-27): 新增 Ticket 有效性驗證章節</li>
<li>v2.0.0 (2026-01-23): 重構為 TDD 含 SA 前置審查流程版本</li>
</ul>
]]></content:encoded></item></channel></rss>