---
# temper: managed projection — a direct edit here is drift; edit the owning .temper/ module or document and re-run temper emit, never this generated file.
name: "grow-harness"
description: "How to add knowledge to this harness: which kind owns a new fact, convention, procedure, or enforcement, and the trigger that says it is time. Use when adding or reorganizing a rule, skill, hook, or memory entry."
---
# Growing this harness

The harness is organized domain first, mechanism second. Its five domains —
conduct, orientation, standards, operations, governance — are declared as
requirements in `.temper/harness.ts`, and every member names the domain it
fills with a `satisfies` entry. Growth is additive: new knowledge joins an
existing domain; it never creates a parallel structure.

## The filing rule

Pick the domain, then the delivery tier, and the kind falls out:

- Needed **every session** (a fact, a always-true convention) — memory, or
  a path-less rule when it would crowd the map.
- Needed **when touching certain files** — a rule with `paths`, or a
  skill with `paths` when it is a procedure rather than a convention.
- Needed **on demand** (a playbook, reference material) — a skill.
- Must hold **every time, without asking** — a hook; an instruction is a
  request, a hook is a guarantee.

## The triggers

Add a member when its trigger fires, not before (the harness's own vendor
documents this adoption order — code.claude.com/docs/en/features-overview,
retrieved 2026-07-15):

- The agent gets a convention or command wrong **twice** — a memory entry
  or rule line (domain: standards, usually).
- The same playbook is pasted a **third** time — a skill (operations).
- Something must happen **every time** — a hook (governance).

## The one rule of authorship

A fact more than one surface states is authored once in
`.temper/facts.ts` and interpolated everywhere it is spoken. Never retype
a command or count into a second surface — projections repeat facts,
authorship does not.
