---
name: od-agent-discipline
description: Agent discipline incidents — ignored instructions, git decision dumping, delivery/approval fatigue, re-asking land/ship/deploy, incomplete end-to-end delivery, worktree violations. Triggers on disobey, ignored, approval, re-ask, quiz, didn't land, not deployed, handed back, git decision. Invoke BEFORE editing instruction wording.
---

# Agent discipline — incident playbook

audience: AI coding agents first. BLUF: quote violated rule verbatim → fix enforcing mechanism (hook/gate/skill) → NOT softer wording.

## Covers

**Absorbs:** `agent-ignores-instructions`, `git-decision-dumping`, `delivery-approval-fatigue`.

**Keywords:** ignored, instruction, disobey, asked permission, approval, re-ask, git decision, rebase, merge question, quiz, deferred, skipped, didn't land, not deployed, handed back.

**Registry coverage:** 61 of 217 (2026-08-08) — largest type. Recurring: agent asks owner git/land questions; reports done without land/deploy; skips worktree isolation; transcript-only "fixes".

## Doctrine

Quote violated instruction verbatim. Fix enforcing mechanism (hook/gate), not the wording.

## First steps — enforcement over prose

1. **Identify violation:** paste EXACT instruction agent ignored — from CLAUDE.md, skill, brief, or user message. No paraphrase.
2. **Classify bucket:**
   - **Git decision dumping** → `git-decision-gate.mjs` should block; verify hook wired in settings.
   - **Delivery fatigue** → ship end-to-end pre-approved; agent re-asked land/deploy — fix gate or skill, not user patience.
   - **Instruction ignore** → skill not loaded, hook missing, or guard bypassed.
3. **Check enforcement layer:** PreToolUse deny-gate, `git-decision-gate`, worktree shim, `ship.sh` path — which SHOULD have fired?
4. **Fix mechanism:** add/strengthen hook, wrapper, or slopgate rule. Statically detectable violations → slopgate (see `learn-from-mistakes`).
5. **Verify:** replay the exact agent action — guard must refuse with actionable message. Green test or recorded refusal = artifact.
6. **NEVER** weaken instruction to match bad agent behavior. NEVER add "please remember to" — add fail-closed enforcement.

## Never-touch — applies here

From `modules/workstation/claude/incidents/never-touch.md`:

- NEVER write in shared main checkout — worktree only (`od-worktree add <slug>`).
- NEVER bypass admission queue or prevent-band gates.
- NEVER quiz owner on git decisions — `git-decision-gate` exists for reason.

## Placement map — read these paths

`modules/workstation/claude/incidents/placement-map.md`:

- `~/Projects/overdeck` — shared main checkout; NEVER edit; worktrees under `.worktrees/<slug>`.
- `~/.claude` — hooks, settings.json, git PATH shim.
- Repo `CLAUDE.md` / `AGENTS.md` — canonical ship-end-to-end and worktree rules agents violated.

## Resolve — exact CLI (never guess syntax)

```
od-incidents list [--type agent-discipline] [--state S]
od-incidents show <id>
od-incidents search <query>
od-incidents resolve <id> --artifact <ref> [--summary <line>]
```

`resolve` REFUSES without `--artifact` (exit 2). Artifact = hook/gate test proving refusal, or landed sha where enforcement lives.

## Self-update — MANDATORY

This doc is the fleet's memory. You changed the architecture, wiring, commands, or
doctrine this skill describes — or a live incident just proved a rule here wrong or
missing → EDIT THIS FILE in the same landing as the change. Adopted AND rejected
decisions both go in, with the measured why. An owner reminder to record a lesson is
a failure of this rule, not the trigger for it.
