import{_ as i,o as a,c as n,ag as l}from"./chunks/framework.CmQHR1bQ.js";const d=JSON.parse('{"title":"L3 Copilot Agents: Complete Guide","description":"","frontmatter":{},"headers":[],"relativePath":"guides/COPILOT_L3_AGENTS.md","filePath":"guides/COPILOT_L3_AGENTS.md"}'),t={name:"guides/COPILOT_L3_AGENTS.md"};function e(p,s,h,k,r,o){return a(),n("div",null,[...s[0]||(s[0]=[l(`<h1 id="l3-copilot-agents-complete-guide" tabindex="-1">L3 Copilot Agents: Complete Guide <a class="header-anchor" href="#l3-copilot-agents-complete-guide" aria-label="Permalink to &quot;L3 Copilot Agents: Complete Guide&quot;">​</a></h1><p><strong>Date:</strong> 2026-02-21 <strong>Status:</strong> ACTIVE <strong>Purpose:</strong> Comprehensive guide to dispatching, monitoring, and managing L3 copilot agents for Venture platform</p><hr><h2 id="quick-start" tabindex="-1">Quick Start <a class="header-anchor" href="#quick-start" aria-label="Permalink to &quot;Quick Start&quot;">​</a></h2><h3 id="standard-dispatch-pattern" tabindex="-1">Standard Dispatch Pattern <a class="header-anchor" href="#standard-dispatch-pattern" aria-label="Permalink to &quot;Standard Dispatch Pattern&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-XXX-YYY — Brief description</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Test first: tests/test_module.py</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Acceptance criterion 1</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Acceptance criterion 2</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Acceptance criterion 3</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Implement: src/module/file.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Must pass:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run pytest tests/test_module.py -v</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run ruff check src/module/file.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Commit: &quot;feat(module): FR-XXX-YYY short description&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Do not: push, modify other modules, add new suppressions</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /Users/kooshapari/temp-PRODVERCEL/485/kush/parpour</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span></code></pre></div><p><strong>Key Points:</strong></p><ul><li>Task must be <strong>specific</strong> and <strong>measurable</strong></li><li>Always write <strong>test first</strong></li><li>Include <strong>acceptance criteria</strong></li><li>Specify <strong>files to implement</strong></li><li>Include <strong>validation commands</strong></li><li>Commit message format: <code>feat(module): FR-XXX description</code></li><li>Always deny <code>git push</code></li><li>Run in <strong>background</strong> with <code>&amp;</code> for parallel dispatch</li></ul><hr><h2 id="task-structure-template" tabindex="-1">Task Structure (Template) <a class="header-anchor" href="#task-structure-template" aria-label="Permalink to &quot;Task Structure (Template)&quot;">​</a></h2><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Task: {FR-ID} — {Short title}</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Test first: {test_file_path}</span></span>
<span class="line"><span>- {Acceptance criterion 1}</span></span>
<span class="line"><span>- {Acceptance criterion 2}</span></span>
<span class="line"><span>- {Acceptance criterion 3}</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Implement: {source_file_paths}</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Must pass:</span></span>
<span class="line"><span>  {validation_command_1}</span></span>
<span class="line"><span>  {validation_command_2}</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Commit: &quot;{commit_message}&quot;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Do not: {forbidden_actions}</span></span></code></pre></div><h3 id="example-policy-engine" tabindex="-1">Example: Policy Engine <a class="header-anchor" href="#example-policy-engine" aria-label="Permalink to &quot;Example: Policy Engine&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Task: FR-CP-001 — Policy engine with bundle versioning</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Test first: tests/test_policy_engine.py</span></span>
<span class="line"><span>- Policy bundle CRUD works (create, read, update, delete)</span></span>
<span class="line"><span>- Schema snapshot stored on creation</span></span>
<span class="line"><span>- Every decision includes policy_bundle_id and reason_code</span></span>
<span class="line"><span>- Policy replay: evaluate old decision with old bundle produces same result</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Implement: src/control_plane/policy_engine.py</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Must pass:</span></span>
<span class="line"><span>  uv run pytest tests/test_policy_engine.py -v</span></span>
<span class="line"><span>  uv run ruff check src/control_plane/policy_engine.py</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Commit: &quot;feat(control-plane): FR-CP-001 Policy engine and bundle versioning&quot;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Do not: push, modify other modules, add new suppressions</span></span></code></pre></div><hr><h2 id="full-dispatch-command-examples" tabindex="-1">Full Dispatch Command Examples <a class="header-anchor" href="#full-dispatch-command-examples" aria-label="Permalink to &quot;Full Dispatch Command Examples&quot;">​</a></h2><h3 id="_1-simple-single-task" tabindex="-1">1. Simple Single Task <a class="header-anchor" href="#_1-simple-single-task" aria-label="Permalink to &quot;1. Simple Single Task&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-INFRA-001 — Initialize PostgreSQL schema</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Test first: tests/test_db_migrations.py</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Artifact IR table created with correct columns</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Ledger table created with correct columns</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Migrations run idempotently (twice = same state)</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Rollback works: upgrade → downgrade → upgrade = same state</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Implement: alembic/versions/ and src/infra/db.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Must pass:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run pytest tests/test_db_migrations.py -v</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run alembic upgrade head</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run alembic downgrade base</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run alembic upgrade head</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run ruff check src/infra/db.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Commit: &quot;feat(infra): FR-INFRA-001 PostgreSQL schema via Alembic&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Do not: push, modify other modules, add new suppressions</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /Users/kooshapari/temp-PRODVERCEL/485/kush/parpour</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span></code></pre></div><h3 id="_2-batch-dispatch-3-parallel-agents" tabindex="-1">2. Batch Dispatch (3 Parallel Agents) <a class="header-anchor" href="#_2-batch-dispatch-3-parallel-agents" aria-label="Permalink to &quot;2. Batch Dispatch (3 Parallel Agents)&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#!/bin/bash</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># sprint-m0-agents.sh</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">REPO</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;/Users/kooshapari/temp-PRODVERCEL/485/kush/parpour&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Agent 1</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-INFRA-001 — PostgreSQL schema...</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Agent 2</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-INFRA-002 — NATS JetStream...</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Agent 3</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-INFRA-003 — Schema registry...</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">wait</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;All agents dispatched. Review commits:&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;  git log --oneline -10&quot;</span></span></code></pre></div><h3 id="_3-research-task-read-only" tabindex="-1">3. Research Task (Read-Only) <a class="header-anchor" href="#_3-research-task-read-only" aria-label="Permalink to &quot;3. Research Task (Read-Only)&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: Research — Understand TRACK_A_ARTIFACT_DETERMINISM_SPEC</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Read: /Users/kooshapari/temp-PRODVERCEL/485/kush/parpour/TRACK_A_ARTIFACT_DETERMINISM_SPEC.md</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Summarize:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">1. What are the 5 IR types?</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">2. What is the deterministic build/replay contract?</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">3. What is the idempotency key?</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Output: Plain text summary (no code)</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /Users/kooshapari/temp-PRODVERCEL/485/kush/parpour</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span></code></pre></div><hr><h2 id="monitoring-l3-agents" tabindex="-1">Monitoring L3 Agents <a class="header-anchor" href="#monitoring-l3-agents" aria-label="Permalink to &quot;Monitoring L3 Agents&quot;">​</a></h2><h3 id="real-time-commit-watching" tabindex="-1">Real-Time Commit Watching <a class="header-anchor" href="#real-time-commit-watching" aria-label="Permalink to &quot;Real-Time Commit Watching&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Watch for commits every 5 seconds</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">watch</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -n</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 5</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;git log --oneline | head -20&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Or use a loop in background:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">while</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">do</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">  clear</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">  date</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">  git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --oneline</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> head</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -10</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">  sleep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 10</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">done</span></span></code></pre></div><h3 id="check-agent-status" tabindex="-1">Check Agent Status <a class="header-anchor" href="#check-agent-status" aria-label="Permalink to &quot;Check Agent Status&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># List copilot sessions</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ls</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -la</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.copilot/sessions/</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Check most recent session</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.copilot/sessions/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ls</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.copilot/sessions</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> head</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/status.json</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Or use copilot CLI (if available)</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> status</span></span></code></pre></div><h3 id="verify-commits" tabindex="-1">Verify Commits <a class="header-anchor" href="#verify-commits" aria-label="Permalink to &quot;Verify Commits&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># See all new commits</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --oneline</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin/main..HEAD</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Review specific commit</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> show</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">commit-has</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">h</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># See changes in a module</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> diff</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin/main..HEAD</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> src/control_plane/</span></span></code></pre></div><h3 id="test-progress" tabindex="-1">Test Progress <a class="header-anchor" href="#test-progress" aria-label="Permalink to &quot;Test Progress&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Run tests for a specific module</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pytest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tests/test_policy_engine.py</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -v</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Check coverage</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pytest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tests/test_policy_engine.py</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --cov=src/control_plane/policy_engine</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Run all tests</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pytest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tests/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -v</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --tb=short</span></span></code></pre></div><hr><h2 id="task-success-scenarios" tabindex="-1">Task Success Scenarios <a class="header-anchor" href="#task-success-scenarios" aria-label="Permalink to &quot;Task Success Scenarios&quot;">​</a></h2><h3 id="scenario-1-agent-completes-successfully" tabindex="-1">Scenario 1: Agent Completes Successfully <a class="header-anchor" href="#scenario-1-agent-completes-successfully" aria-label="Permalink to &quot;Scenario 1: Agent Completes Successfully&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>1. Commit arrives in git log</span></span>
<span class="line"><span>2. User reviews: git show &lt;hash&gt;</span></span>
<span class="line"><span>3. User checks tests: uv run pytest tests/test_module.py -v</span></span>
<span class="line"><span>4. All green → ready to merge</span></span></code></pre></div><h3 id="scenario-2-agent-gets-stuck-infinite-loop" tabindex="-1">Scenario 2: Agent Gets Stuck (Infinite Loop) <a class="header-anchor" href="#scenario-2-agent-gets-stuck-infinite-loop" aria-label="Permalink to &quot;Scenario 2: Agent Gets Stuck (Infinite Loop)&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>1. Agent makes no progress for 15+ minutes</span></span>
<span class="line"><span>2. Check session: cat ~/.copilot/sessions/*/status.json</span></span>
<span class="line"><span>3. Kill agent: pkill copilot (or equivalent)</span></span>
<span class="line"><span>4. Re-dispatch with --resume flag:</span></span>
<span class="line"><span>   copilot -p &quot;Task: FR-XXX...&quot; --yolo --resume</span></span></code></pre></div><h3 id="scenario-3-test-failure" tabindex="-1">Scenario 3: Test Failure <a class="header-anchor" href="#scenario-3-test-failure" aria-label="Permalink to &quot;Scenario 3: Test Failure&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>1. Commit arrives but tests fail</span></span>
<span class="line"><span>2. User reviews test output: git show &lt;hash&gt;</span></span>
<span class="line"><span>3. User can:</span></span>
<span class="line"><span>   a. Re-dispatch agent with error context:</span></span>
<span class="line"><span>      copilot -p &quot;$(cat &lt;&lt;&#39;PROMPT&#39;</span></span>
<span class="line"><span>      Task: FR-XXX — description</span></span>
<span class="line"><span>      Previous attempt failed with: [error message]</span></span>
<span class="line"><span>      ...</span></span>
<span class="line"><span>      PROMPT</span></span>
<span class="line"><span>      )&quot; --yolo --model gpt-5-mini ...</span></span>
<span class="line"><span>   b. Or fix manually and commit</span></span></code></pre></div><h3 id="scenario-4-dependency-not-met" tabindex="-1">Scenario 4: Dependency Not Met <a class="header-anchor" href="#scenario-4-dependency-not-met" aria-label="Permalink to &quot;Scenario 4: Dependency Not Met&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>1. Agent tries to implement FR-CP-002 (tool allowlist)</span></span>
<span class="line"><span>2. But FR-CP-001 (policy engine) not yet merged</span></span>
<span class="line"><span>3. Agent should detect and note in commit message or ask</span></span>
<span class="line"><span>4. User can:</span></span>
<span class="line"><span>   a. Merge dependency first, re-dispatch agent</span></span>
<span class="line"><span>   b. Or ask agent to implement with interface stub</span></span></code></pre></div><hr><h2 id="permission-sets-by-task-type" tabindex="-1">Permission Sets by Task Type <a class="header-anchor" href="#permission-sets-by-task-type" aria-label="Permalink to &quot;Permission Sets by Task Type&quot;">​</a></h2><h3 id="type-1-test-first-implementation" tabindex="-1">Type 1: Test-First Implementation <a class="header-anchor" href="#type-1-test-first-implementation" aria-label="Permalink to &quot;Type 1: Test-First Implementation&quot;">​</a></h3><p><strong>Permission Set:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">           # Create/edit files</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">     # Run pytest, ruff, etc.</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">    # Commit, check status</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  # Never push</span></span></code></pre></div><p><strong>Used For:</strong> All FRs that require code implementation</p><p><strong>Example:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Task: FR-CP-001 — Policy engine...&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> $REPO </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span></code></pre></div><h3 id="type-2-database-schema-tasks" tabindex="-1">Type 2: Database/Schema Tasks <a class="header-anchor" href="#type-2-database-schema-tasks" aria-label="Permalink to &quot;Type 2: Database/Schema Tasks&quot;">​</a></h3><p><strong>Permission Set:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">              # Edit migration files</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">        # Run pytest, alembic</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">       # Commit</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(psql:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">      # Query database (optional)</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span></span></code></pre></div><p><strong>Used For:</strong> Database migrations, schema changes</p><h3 id="type-3-infrastructure-setup" tabindex="-1">Type 3: Infrastructure Setup <a class="header-anchor" href="#type-3-infrastructure-setup" aria-label="Permalink to &quot;Type 3: Infrastructure Setup&quot;">​</a></h3><p><strong>Permission Set:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">              # Edit config files</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">        # Run pytest, checks</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">       # Commit</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(docker:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">    # If Docker needed</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span></span></code></pre></div><p><strong>Used For:</strong> process-compose setup, containerization</p><h3 id="type-4-research-read-only" tabindex="-1">Type 4: Research (Read-Only) <a class="header-anchor" href="#type-4-research-read-only" aria-label="Permalink to &quot;Type 4: Research (Read-Only)&quot;">​</a></h3><p><strong>Permission Set:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">       # Read git history</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(find:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">      # Search files</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(curl:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">       # No external requests</span></span></code></pre></div><p><strong>Used For:</strong> Understanding specs, analyzing code</p><h3 id="type-5-load-testing" tabindex="-1">Type 5: Load Testing <a class="header-anchor" href="#type-5-load-testing" aria-label="Permalink to &quot;Type 5: Load Testing&quot;">​</a></h3><p><strong>Permission Set:</strong></p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">              # Create test harness</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">        # Run tests</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">       # Commit</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(ps:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">        # Monitor processes</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(kill:*)&#39;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">       # Never kill processes</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">--deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span></span></code></pre></div><p><strong>Used For:</strong> Performance testing, stress testing</p><hr><h2 id="troubleshooting-l3-agents" tabindex="-1">Troubleshooting L3 Agents <a class="header-anchor" href="#troubleshooting-l3-agents" aria-label="Permalink to &quot;Troubleshooting L3 Agents&quot;">​</a></h2><h3 id="problem-agent-produces-code-with-suppressions" tabindex="-1">Problem: Agent Produces Code with Suppressions <a class="header-anchor" href="#problem-agent-produces-code-with-suppressions" aria-label="Permalink to &quot;Problem: Agent Produces Code with Suppressions&quot;">​</a></h3><p><strong>Symptom:</strong> Commit includes <code># noqa</code> or <code># pragma: no cover</code></p><p><strong>Fix:</strong></p><ol><li>Reject commit (don&#39;t merge)</li><li>Re-dispatch with instruction:<div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Previous code had suppressions. Do not add suppression comments.</span></span>
<span class="line"><span>Instead, fix the underlying issue so code passes linting.</span></span>
<span class="line"><span>If suppression necessary, include inline justification:</span></span>
<span class="line"><span># noqa: E501 -- long line is unavoidable for this SQL query</span></span></code></pre></div></li></ol><h3 id="problem-agent-modifies-wrong-module" tabindex="-1">Problem: Agent Modifies Wrong Module <a class="header-anchor" href="#problem-agent-modifies-wrong-module" aria-label="Permalink to &quot;Problem: Agent Modifies Wrong Module&quot;">​</a></h3><p><strong>Symptom:</strong> Commit touches <code>src/treasury/</code> when task was for <code>src/control_plane/</code></p><p><strong>Fix:</strong></p><ol><li>Check if change is justified (e.g., necessary cross-module integration)</li><li>If not: revert commit; re-dispatch with stricter constraints<div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>--add-dir $REPO</span></span>
<span class="line"><span>--allow-tool &#39;write&#39;  # but will implicitly block files outside task scope</span></span></code></pre></div></li></ol><h3 id="problem-agent-doesn-t-write-tests" tabindex="-1">Problem: Agent Doesn&#39;t Write Tests <a class="header-anchor" href="#problem-agent-doesn-t-write-tests" aria-label="Permalink to &quot;Problem: Agent Doesn&#39;t Write Tests&quot;">​</a></h3><p><strong>Symptom:</strong> Commit has implementation but no test file</p><p><strong>Fix:</strong></p><ol><li>Re-dispatch:<div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Task: FR-XXX — [same task]</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Previous attempt missing tests. You must:</span></span>
<span class="line"><span>1. First write failing test in tests/test_module.py</span></span>
<span class="line"><span>2. Then implement in src/module.py</span></span>
<span class="line"><span>3. Ensure test passes</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Must pass:</span></span>
<span class="line"><span>  pytest tests/test_module.py -v</span></span></code></pre></div></li></ol><h3 id="problem-agent-commit-message-malformed" tabindex="-1">Problem: Agent Commit Message Malformed <a class="header-anchor" href="#problem-agent-commit-message-malformed" aria-label="Permalink to &quot;Problem: Agent Commit Message Malformed&quot;">​</a></h3><p><strong>Symptom:</strong> Commit message is <code>wip</code>, <code>fix</code>, or doesn&#39;t follow <code>feat(module): FR-XXX</code></p><p><strong>Fix:</strong></p><ol><li>Amend locally (or ask agent to re-commit):<div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --amend</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;feat(module): FR-XXX-YYY short description&quot;</span></span></code></pre></div></li><li>Or re-dispatch with clearer instruction:<div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Commit message format MUST be:</span></span>
<span class="line"><span>feat(module): FR-XXX-YYY short description</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Where:</span></span>
<span class="line"><span>- module = the folder under src/ (e.g., &quot;control-plane&quot;, &quot;treasury&quot;)</span></span>
<span class="line"><span>- FR-XXX-YYY = the FR ID (e.g., &quot;FR-CP-001&quot;)</span></span>
<span class="line"><span>- Short description = 1-line summary</span></span></code></pre></div></li></ol><h3 id="problem-agent-runs-out-of-time" tabindex="-1">Problem: Agent Runs Out of Time <a class="header-anchor" href="#problem-agent-runs-out-of-time" aria-label="Permalink to &quot;Problem: Agent Runs Out of Time&quot;">​</a></h3><p><strong>Symptom:</strong> Copilot process times out; incomplete work</p><p><strong>Fix:</strong></p><ol><li>Check if intermediate commits exist: <code>git log --oneline | head -10</code></li><li>If partial work: re-dispatch with <code>--resume</code> flag</li><li>Or simplify task scope:<div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Task: FR-XXX — [PART 2] Continue from previous attempt</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Previous attempt timed out. Please complete:</span></span>
<span class="line"><span>- [List remaining work items]</span></span>
<span class="line"><span></span></span>
<span class="line"><span>You may skip: [Items already done]</span></span></code></pre></div></li></ol><hr><h2 id="batch-dispatch-scripts" tabindex="-1">Batch Dispatch Scripts <a class="header-anchor" href="#batch-dispatch-scripts" aria-label="Permalink to &quot;Batch Dispatch Scripts&quot;">​</a></h2><h3 id="m0-foundation-sprint-script" tabindex="-1">M0 Foundation Sprint Script <a class="header-anchor" href="#m0-foundation-sprint-script" aria-label="Permalink to &quot;M0 Foundation Sprint Script&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#!/bin/bash</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># scripts/dispatch-m0.sh</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">set</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -e</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">REPO</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;/Users/kooshapari/temp-PRODVERCEL/485/kush/parpour&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">WTV</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;venture-wt-m0-foundation&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Ensure worktree exists</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [ </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> -d</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;../</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$WTV</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ..</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">  git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$WTV</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> main</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$WTV</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;../</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$WTV</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Dispatching M0 agents to worktree: </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$WTV</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Agent 1: PostgreSQL</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-INFRA-001 — Initialize PostgreSQL schema via Alembic</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Test first: tests/test_db_migrations.py</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Table artifact_ir exists with all required columns</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Table ledger exists with all required columns</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Table audit_log exists with all required columns</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Table policy_bundles exists with all required columns</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Migrations run idempotently</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Rollback and upgrade both work</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Implement: alembic/versions/ and src/infra/db.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Must pass:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run pytest tests/test_db_migrations.py -v</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run alembic upgrade head</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run alembic downgrade base</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run alembic upgrade head</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run ruff check src/infra/db.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Commit: &quot;feat(infra): FR-INFRA-001 PostgreSQL schema via Alembic&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Do not: push, modify other modules, add new suppressions</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">PID1</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">$!</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Agent 2: NATS</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-INFRA-002 — Stand up NATS JetStream streams</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Test first: tests/test_nats_streams.py</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- events.* stream created with replication 3</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- tasks.* stream created with replication 3</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Publish-subscribe round-trip works</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Durable subscriptions persist across restart</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Stream configuration persisted</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Implement: src/infra/nats_setup.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Must pass:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run pytest tests/test_nats_streams.py -v</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run ruff check src/infra/nats_setup.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Commit: &quot;feat(infra): FR-INFRA-002 NATS JetStream setup&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Do not: push, modify other modules, add new suppressions</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">PID2</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">$!</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Agent 3: Schema Registry</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-INFRA-003 + FR-INFRA-005 — Redis cache and schema registry</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Test first: tests/test_redis.py tests/test_schema_registry.py</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Redis SET/GET round-trip works</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Token bucket rate limiter works</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- EventEnvelopeV1 schema validates correctly</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Invalid events rejected</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Schema versioning works</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- Schema caching works</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Implement: src/infra/redis.py and src/infra/schema_registry.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Must pass:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run pytest tests/test_redis.py tests/test_schema_registry.py -v</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  uv run ruff check src/infra/redis.py src/infra/schema_registry.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Commit: &quot;feat(infra): FR-INFRA-003 FR-INFRA-005 Redis and schema registry&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Do not: push, modify other modules, add new suppressions</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">PID3</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">$!</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Waiting for agents to complete...&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">wait</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> $PID1 $PID2 $PID3</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;All agents completed. Review commits:&quot;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --oneline</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> head</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -10</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;To merge: git switch main &amp;&amp; git merge </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$WTV</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span></span></code></pre></div><h3 id="sprint-completion-checklist" tabindex="-1">Sprint Completion Checklist <a class="header-anchor" href="#sprint-completion-checklist" aria-label="Permalink to &quot;Sprint Completion Checklist&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#!/bin/bash</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># scripts/sprint-checklist.sh</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">SPRINT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">$1</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  # e.g., m0, m1, m2</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [ </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-z</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$SPRINT</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Usage: sprint-checklist.sh {sprint_name}&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  exit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;=== Sprint </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$SPRINT</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Checklist ===&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Check tests</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;1. Running tests...&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pytest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tests/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -v</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --tb=short</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> 2&gt;&amp;1</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -q</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;FAILED&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ❌ Some tests failed&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ✓ All tests pass&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Check coverage</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;2. Checking coverage...&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">COVERAGE</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pytest</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --cov=src</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --cov-report=term-missing</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> grep</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;TOTAL&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> awk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;{print $NF}&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   Coverage: </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$COVERAGE</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [[ \${COVERAGE</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">%</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\%</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">} </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-ge</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 80</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]]; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ✓ Coverage ≥80%&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ❌ Coverage &lt;80%&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Check linting</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;3. Running linter...&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ruff</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> check</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> src/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> 2&gt;&amp;1</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -q</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;error&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ❌ Linting errors&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ✓ Linting passes&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Check suppressions</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;4. Checking for suppressions...&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">SUPPR</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -r</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;# noqa\\|# pragma\\|# type: ignore&quot;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> src/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> wc</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -l</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$SUPPR</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> -eq</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ✓ No suppressions&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ❌ Found </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$SUPPR</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> suppressions&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Check commits</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;5. Verifying commit format...&quot;</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --oneline</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -20</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> while</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> read</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> line</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">do</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [[ $line </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=~</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ^[a-f0-9]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\ </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(feat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">fix</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">test</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">docs)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\(</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[a-z-]+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\)</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\ </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(FR</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-|</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">fix</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">test) ]]; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ✓ </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$line</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  else</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">    echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;   ❌ </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$line</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> (format issue)&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">  fi</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">done</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;=== Checklist Complete ===&quot;</span></span></code></pre></div><hr><h2 id="session-continuation-resume" tabindex="-1">Session Continuation (--resume) <a class="header-anchor" href="#session-continuation-resume" aria-label="Permalink to &quot;Session Continuation (--resume)&quot;">​</a></h2><p>If an agent gets stuck or times out:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Re-dispatch with continuation context</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Task: FR-XXX — [CONTINUED] Description</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">You were working on this task before but did not complete.</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Progress so far:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- [Describe what was done]</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Still needs:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- [Describe what remains]</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">You may skip: [What doesn&#39;t need to be done again]</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Test first: tests/test_module.py</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">- [Remaining acceptance criteria]</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Implement: src/module.py</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Must pass:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  [validation commands]</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Commit: &quot;feat(module): FR-XXX description&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --yolo</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --model</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> gpt-5-mini</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --add-dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --resume</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;write&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(uv:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --allow-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git:*)&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">  --deny-tool</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;shell(git push)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;</span></span></code></pre></div><hr><h2 id="best-practices" tabindex="-1">Best Practices <a class="header-anchor" href="#best-practices" aria-label="Permalink to &quot;Best Practices&quot;">​</a></h2><h3 id="_1-clarity-in-task-definition" tabindex="-1">1. Clarity in Task Definition <a class="header-anchor" href="#_1-clarity-in-task-definition" aria-label="Permalink to &quot;1. Clarity in Task Definition&quot;">​</a></h3><ul><li><strong>Good:</strong> &quot;Implement policy engine with bundle versioning; policy bundles stored with schema snapshots; every decision includes policy_bundle_id&quot;</li><li><strong>Bad:</strong> &quot;Implement policy stuff&quot;</li></ul><h3 id="_2-explicit-acceptance-tests" tabindex="-1">2. Explicit Acceptance Tests <a class="header-anchor" href="#_2-explicit-acceptance-tests" aria-label="Permalink to &quot;2. Explicit Acceptance Tests&quot;">​</a></h3><ul><li><strong>Good:</strong> Include concrete criteria (table exists, field present, comparison passes)</li><li><strong>Bad:</strong> &quot;Make sure it works&quot;</li></ul><h3 id="_3-validate-commands" tabindex="-1">3. Validate Commands <a class="header-anchor" href="#_3-validate-commands" aria-label="Permalink to &quot;3. Validate Commands&quot;">​</a></h3><ul><li><strong>Good:</strong> <code>uv run pytest tests/test_module.py -v &amp;&amp; uv run ruff check src/module.py</code></li><li><strong>Bad:</strong> <code>uv run pytest</code></li></ul><h3 id="_4-parallel-dispatch" tabindex="-1">4. Parallel Dispatch <a class="header-anchor" href="#_4-parallel-dispatch" aria-label="Permalink to &quot;4. Parallel Dispatch&quot;">​</a></h3><ul><li><strong>Good:</strong> Dispatch 3 agents simultaneously with <code>&amp;</code> and <code>wait</code></li><li><strong>Bad:</strong> Sequential dispatch (wastes wall-clock time)</li></ul><h3 id="_5-no-suppressions" tabindex="-1">5. No Suppressions <a class="header-anchor" href="#_5-no-suppressions" aria-label="Permalink to &quot;5. No Suppressions&quot;">​</a></h3><ul><li><strong>Good:</strong> Fix code so it passes linting cleanly</li><li><strong>Bad:</strong> Add <code># noqa</code> to silence warnings</li></ul><h3 id="_6-atomic-commits" tabindex="-1">6. Atomic Commits <a class="header-anchor" href="#_6-atomic-commits" aria-label="Permalink to &quot;6. Atomic Commits&quot;">​</a></h3><ul><li><strong>Good:</strong> One commit per task; all tests pass; single module modified</li><li><strong>Bad:</strong> Multiple unrelated changes in one commit</li></ul><hr><h2 id="appendix-command-reference" tabindex="-1">Appendix: Command Reference <a class="header-anchor" href="#appendix-command-reference" aria-label="Permalink to &quot;Appendix: Command Reference&quot;">​</a></h2><h3 id="create-worktree" tabindex="-1">Create Worktree <a class="header-anchor" href="#create-worktree" aria-label="Permalink to &quot;Create Worktree&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ../venture-wt-m{N}-{name}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> main</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ../venture-wt-m{N}-{name}</span></span></code></pre></div><h3 id="dispatch-agent" tabindex="-1">Dispatch Agent <a class="header-anchor" href="#dispatch-agent" aria-label="Permalink to &quot;Dispatch Agent&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">copilot</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PROMPT&#39; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">...</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> PROMPT</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot; --yolo --model gpt-5-mini \\</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  --add-dir {repo_path} \\</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  --allow-tool &#39;write&#39; \\</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  --allow-tool &#39;shell(uv:*)&#39; \\</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  --allow-tool &#39;shell(git:*)&#39; \\</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">  --deny-tool &#39;shell(git push)&#39; &amp;</span></span></code></pre></div><h3 id="monitor-progress" tabindex="-1">Monitor Progress <a class="header-anchor" href="#monitor-progress" aria-label="Permalink to &quot;Monitor Progress&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">watch</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -n</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 5</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;git log --oneline | head -20&#39;</span></span></code></pre></div><h3 id="review-commit" tabindex="-1">Review Commit <a class="header-anchor" href="#review-commit" aria-label="Permalink to &quot;Review Commit&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> show</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {commit-hash}</span></span></code></pre></div><h3 id="run-tests" tabindex="-1">Run Tests <a class="header-anchor" href="#run-tests" aria-label="Permalink to &quot;Run Tests&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pytest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tests/test_{module}.py</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -v</span></span></code></pre></div><h3 id="check-coverage" tabindex="-1">Check Coverage <a class="header-anchor" href="#check-coverage" aria-label="Permalink to &quot;Check Coverage&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pytest</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --cov=src</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --cov-report=term-missing</span></span></code></pre></div><h3 id="merge-worktree" tabindex="-1">Merge Worktree <a class="header-anchor" href="#merge-worktree" aria-label="Permalink to &quot;Merge Worktree&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> switch</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> main</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> merge</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> venture-wt-m{N}-{name}</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ../venture-wt-m{N}-{name}</span></span></code></pre></div><hr><p><strong>L3 Agent Guide Status:</strong> ACTIVE <strong>Last Updated:</strong> 2026-02-21 <strong>Next Review:</strong> Post-M0 Sprint Completion</p>`,129)])])}const c=i(t,[["render",e]]);export{d as __pageData,c as default};
