# Audit / fieldtest / docwriter cadence restructure — 2026-05-11

**Status:** Approved (orchestrator + user, chat-derived)
**Scope:** skill-system reshuffle; no code touched

## Motivation

Today `audit/SKILL.md` bundles three checks under one milestone-close
trigger:

1. **architect** drift review
2. **bencher** regression check
3. **docwriter** rustdoc cleanup (Step 3, "optional")

Fieldtest is a separate skill but is described as following audit by
default for any milestone that touched user-visible surface.

The trio mixes three different cadence-needs:

- **drift** and **regression** are intrinsic to a milestone close —
  they compound silently across milestones if deferred, so they
  *must* run at every close.
- **fieldtest** measures usability-belief — it's a field test run when
  the orchestrator believes the iteration is correct. Findings are
  either simple bugs or catastrophic architecture problems; both
  decay slowly, so the cadence doesn't have to be per-milestone.
- **docwriter** documents stable API surface. Writing rustdoc onto
  code that the next iteration may rewrite is wasted work. The right
  cadence is *post-stability*, not *per-milestone*.

The current packaging forces these three different cadences into one
mandatory pipeline step. This spec splits them.

## Decision

Three Boss-orchestrated buckets:

1. **Per-milestone, mandatory (audit)**: architect + bencher only.
2. **Boss-judgment, post-audit, "the iter is complete"**: fieldtest.
3. **Boss-judgment, post-fieldtest, "API surface has settled"**:
   docwriter.

Sequence: `audit → (Boss: ready?) → fieldtest → (Boss: stable?) →
docwriter`. The two Boss-gated steps share the same "don't produce
output for code that may still be rewritten" principle; their
stability windows differ (iter-stable vs. surface-stable).

## Concrete changes

### docwriter becomes its own skill

- Create `skills/docwriter/SKILL.md` (new).
- `skills/docwriter/agents/ailang-docwriter.md` already exists
  (moved by user from `skills/audit/agents/`).
- Frontmatter description: "Use when API surface has stabilized
  across one or more milestones and rustdoc lag is suspected. NOT a
  per-milestone step; Boss-dispatched only."
- The SKILL.md body is short — mostly a pointer to the agent's own
  carrier contract plus the trigger criteria. No mandatory schedule.
- Symlinks: add `.claude/skills/docwriter → ../../skills/docwriter`
  and `.claude/agents/docwriter → ../../skills/docwriter/agents`.

### audit shrinks

- `skills/audit/SKILL.md`: remove "Step 3 — Optional rustdoc audit".
- Remove `ailang-docwriter` from the "Agents dispatched" list.
- Remove the "Rustdoc warnings are just style" row from Common
  Rationalisations.
- Frontmatter description: now reads "architect drift review +
  three regression scripts" — already correct since the
  user-applied tweak.

### fieldtest framing sharpened

- `skills/fieldtest/SKILL.md`: trigger section reframes from "after
  audit closes cleanly" (which sounded automatic) to "Boss-dispatched
  after audit closes cleanly, when the orchestrator believes the
  iteration is correct and wants a field test". The pre-condition is
  still a clean audit; the trigger is the Boss's judgment-call.
- Add a one-line note on what kind of findings to expect: either
  simple bugs (→ debug → implement mini) or catastrophic
  architecture problems (→ next brainstorm). Friction items are
  also possible; the routing table stays.

### skills/README.md updated

- Skill table: change audit row's description; add docwriter row;
  refine fieldtest row to mention Boss-dispatch explicitly.
- Agent roster: move `ailang-docwriter` from the audit group to a
  new docwriter group.
- Pipeline diagram: extend with the late `→ (Boss judgment) →
  docwriter` branch.

### CLAUDE.md cross-ref check

- `Roles of docs/...` table mentions audit / journals / specs /
  plans / WhatsNew — does not name docwriter or rustdoc
  scheduling. No edit needed.
- Skill system overview: see if docwriter is mentioned. If yes,
  refresh the wording. If no, no edit.

## Out of scope

- Any change to the agents' own behaviour (architect, bencher,
  fieldtester, docwriter agent files).
- Code changes. This is a config/docs restructure only.
- The `Rustdoc warning sweep` P2 roadmap item — it stays where it
  is; in fact this restructure makes it the canonical example of
  "Boss-dispatched docwriter".

## Acceptance

- `skills/docwriter/SKILL.md` exists and is reachable via
  `.claude/skills/docwriter`.
- `skills/audit/SKILL.md` no longer mentions docwriter or Step 3.
- `skills/fieldtest/SKILL.md` describes Boss-dispatch trigger
  language.
- `skills/README.md` reflects the new three-bucket cadence.
- `git grep -n "Step 3 — Optional rustdoc"` in `skills/` returns
  nothing.
- `git grep -n "docwriter" docs/CLAUDE.md skills/README.md
  skills/audit/SKILL.md skills/fieldtest/SKILL.md` only matches
  the new wording, not orphans from the old packaging.
