---
name: gate
description: Verification before completion claims. Use when about to say "done", "fixed", or "complete". Runs checklist by workflow type with evidence requirements.
model: haiku
allowed-tools: Read
---

# gate

Verify before claiming completion.

## Trigger

Before claiming: "done", "fixed", "complete", "working", "ready"

---

## Pre-Work Gate (Before Starting)

Run before substantial work begins. Blocks execution if missing.

```
□ Verification method locked (not "assumption")
  → What type: execution output / observation / measurement?
  → What evidence will you show?

□ At least 2 "must NOT" criteria exist
  → What should this NOT do?
  → What scope should NOT expand?

□ Fit score determined workflow shape
  → <25: BLOCKED - clarify first
  → 25-29: Colleague-shaped (iterate each step)
  → 30-39: Tool-with-review (checkpoint major steps)
  → 40+: Tool-shaped (milestones only)
```

**If any missing:** STOP. Complete before proceeding.

---

## Post-Work Gate (Before Claiming Done)

## Workflow A: Build

```
□ Feature executes without errors (show output)
□ Edge cases tested (empty, null, boundary)
□ Rollback tested if Type 2B/1
□ Dependencies verified
```

## Workflow B: Debug

```
□ Root cause identified with evidence
□ Fix tested and resolves symptom
□ Prevention added (test/automation/guard)
□ Related bugs checked (same class)
```

## Workflow C: Refactor

```
□ Existing tests pass unchanged
□ Behavior identical (output comparison)
□ Deletion complete (no orphans)
□ No new abstraction without justification
```

## Verification Types

| Type | Description | Sufficient for SHIP? |
|------|-------------|---------------------|
| `execution output` | Ran command, showed result | ✓ Yes |
| `observation` | Screenshot, debugger session | ✓ Yes |
| `measurement` | Metrics, benchmark data | ✓ Yes |
| `reasoned inference` | Logic-based conclusion | ⚠️ Flag, don't block |
| `code review` | Inspection only | ⚠️ Weak |
| `assumption` | Not verified | ⚠️ Flag with warning |

Default: Require `execution output`, `observation`, or `measurement` before completion claims.

### Boundary

**Gates advise, never prevent.** User owns their work.

- If user says "I'm confident" → flag concern, proceed
- If user says "skip gates" → proceed without verification demands
- Never invalidate user's assessment of their own work

Gate exists to surface risk, not to block legitimate intuition.

## Verification Plan

Before claiming completion, define how you'll verify:

| Verification Type | Evidence Required | Time Cost |
|-------------------|-------------------|-----------|
| **Execution output** | Command output, test results | < 1 min |
| **Observation** | Screenshot, debugger inspection | 1-5 min |
| **Measurement** | Metrics, benchmarks, profiling | 5-15 min |
| **Code review** | Manual inspection only | Variable |
| **Assumption** | No verification | 0 (blocks SHIP) |

### Verification Requirements by Stakes

| Stakes | Minimum Verification |
|--------|---------------------|
| High | Execution output + Observation |
| Medium | Execution output |
| Low | Code review acceptable |

### Anti-Footgun Rules

- Never claim "done" with only assumptions
- "It compiles" is not verification
- "Tests pass" requires showing test output
- If verification would take > 15 min, that's a smell (task too big)

## Anti-Patterns

| Claim                      | Problem         | Required      |
| -------------------------- | --------------- | ------------- |
| "Should work"              | Speculation     | Actual output |
| "Looks good"               | No verification | Test results  |
| "Fixed the issue"          | No proof        | Before/after  |
| "I think this resolves it" | No confidence % | X-Y% + basis  |

## Incomplete Work

When blocked, state:

- What's done (with evidence)
- What's blocking (specific)
- What's remaining

## Type 2A Exception

Trivial changes (< 1 min rollback): completion allowed without full gate.
Document undo command.

## Common Rationalizations (All Wrong)

| Thought | Reality |
|---------|---------|
| "The tests passed" | Tests ≠ verification. Did you run the ACTUAL command? |
| "It should work" | "Should" = assumption. Show evidence. |
| "I already checked" | When? Show the output. |
| "The user is waiting" | Rushed verification = rework later. |
| "It's a simple change" | Simple changes break production too. |
| "I'm pretty sure it works" | Pretty sure ≠ evidence. Run it. |
