Skip to content

Counters and the kill criterion

Three raw counters per entry decide every status change. A model never writes them, and they are shown raw.

Tokens and turns are recorded for why but never gated on: they vary tenfold with task difficulty.

Counter Goes up when, in a matched session Decides
matched the predicate hit while the entry was loaded (when it matches) the denominator for every decision
recurrence a redirect of the entry’s motivating class happened: the classifier’s label, or a revert, negation or mark when the class is unknown retire at 2
harm a new tool-error cluster, an interrupt (takeover), or you disabled the entry retire at 2

Each counter also keeps a per-model-family breakdown (models).

Checked after every counted session:

Condition Decision
matched ≥ 4, recurrence 0, harm 0 keep
recurrence ≥ 2, or harm ≥ 2 retire
matched ≥ 12 dormant
provisional for 30 days with matched < 3 dormant
kept, and harm ≥ 2 within 30 days retire
anything else continue

An entry that never matched has no counter rows, so the table never sees it; a separate sweep covers it. A provisional, unpinned, non-built-in entry with no counter rows goes dormant after 30 days only once at least 12 counted sessions in its scope (its branch; every branch for shared) have finished since then, with fewer than 3 matches. Idle time alone never retires an entry; built-ins are exempt.

  • Split by family. If one model family shows harm ≥ 1 and another has matched ≥ 2 with no harm or recurrence, the harmed family gets a sibling proposal.
  • Kept, never verified. Four matched sessions without recurrence are evidence that the entry did its one job, nothing more (D8).

A bad entry cannot cascade: every unbounded library in the literature peaked and then declined (D13).

Limit Value
Admissions per trigger predicate ≤ 1 per UTC day
New reflection while a provisional entry with the same predicate exists none (the canary is pending)
Provisional entries per branch ≤ 10
Kept entries before a new candidate must merge or revise 5 general + 5 per branch
Kept entries per top-level domain, all branches on this machine ≤ 8 (rematch policy caps set kept_per_domain <n>)
Model calls per reflection ≤ 3 (classifier batch, editor, one lint retry)

A near-duplicate (simhash Hamming distance ≤ 6 on the normalized text, or an identical script body) appends its evidence to the existing entry instead of becoming a new one. The archive is never deleted.

The project has an exit rule. After six weeks of daily use, if no entry reached kept over at least four matched sessions, and recurrence has not fallen on any trigger, stop at Phase 1 and keep stock omp with hand-written skills. The trace tooling and why stay useful either way.

rematch report computes it instead of leaving it to be eyeballed: read the report. Where it stands today: status and limits.