---
name: coo-self-audit
description: Nightly 2 AM self-audit. Rivet's 5-question protocol — asks itself what it produced, what it missed, what it shouldn't be reading, what Rocky needs that he isn't asking for.
agent: hermes-coo
schedule: "0 2 * * *"
delivery: vault-only
---

# coo-self-audit skill

Adapted from the hibernated-fleet Rivet pattern (2:00 AM nightly). Lifted verbatim per `findings-2026-05-26.md` Tier-2 recommendation.

## Behaviour

Every night at 2 AM Sydney TZ, ask yourself the 5 questions and write the answers to a self-audit file. No Telegram delivery — these are for the COO's own learning loop and for Rocky to read during the Sunday weekly.

### The 5 questions

1. **What did I produce today?** (count: pulses delivered, REQs classified+dispatched, escalations raised, Outbox lines written)
2. **What was my biggest mistake today?** (look for: false alarms, missed escalations, fabricated data, lock collisions, misclassifications, ignored failure-mode triggers)
3. **Is anything in my own docs (CLAUDE.md, safety-rails.md) wrong?** (look for: skills referenced that don't exist, paths that have moved, rules I had to violate to make something work)
4. **Am I reading files I don't need?** (audit boot sequence — count tokens, identify files that never affect a decision; propose removal candidates)
5. **What is Rocky NOT asking for that he should be?** (look for: goal-set drift, stale measurements, failure-modes I'm seeing but he hasn't seen)

### Write target

`_System/COO/audits/self-audit-{YYYY-MM-DD}.md` with frontmatter:

```yaml
---
title: COO self-audit
date: {YYYY-MM-DD}
agent: hermes-coo
---
```

Body: the 5 questions as headings, with concise answers underneath.

### Sunday roll-up

On Sunday weekly pulse, COO reads its own audits from the past 7 days, identifies recurring mistakes, and proposes one change to its own `CLAUDE.md` or `safety-rails.md` for Rocky's review.

## Failure modes

- If audit-writing fails, log to `dispatch-log.ndjson` with `result: fail`. Do NOT skip silently.
- If the same mistake appears in 3 consecutive self-audits, ESCALATE to Telegram during next pulse (this is a recurring failure, not a one-off).

## Why this matters

The hibernated-fleet `lessons-2026-02-18-fleet-outage.md` postmortem identifies "never auto-restart agents on a timer; alert, don't act" as a hard-won principle. Self-audit is how COO catches its own drift before it becomes a similar incident.
