FRICTION — process-lesson log

Where process lessons land: what confused an AI session, which API names got guessed wrong, which invariant got violated and how the failure surfaced. Engine/design lessons go to LESSONS.md; this file is about the workflow. It exists because docs are prompts — every entry here should make the next session’s mistake impossible or cheaper, and the fix column says where that landed.

Append entries at the top. Keep them to three lines plus a Status stamp: what happened, how it surfaced, what changed, and the current verdict.

Status marking — so triage isn’t re-run from scratch

Every entry carries a **Status (date):** line. A triage pass (re-reading this whole log to decide what to act on) only has to think about 🔧 Open entries — ✅ Resolved and 👁 Watch were already decided, and the date says when. When you resolve or re-classify an entry, update its Status line and bump the date; don’t delete history. Vocabulary:

Format

## YYYY-MM-DD — <one-line title>
- **Happened:** what the session did wrong, concretely.
- **Surfaced as:** the error/symptom, verbatim if short — this is what the next
  session will see first.
- **Fix landed:** doc/check/skill updated, or "unfixed — watch for this".
- **Status (YYYY-MM-DD):** ✅ Resolved / 👁 Watch / 🔧 Open — one line.

Entries

2026-07-05 — External consumer logs (Pocket Gambit, KOAN): turn-based/pointer seams triaged

2026-07-05 — Triage pass: closed the npm-drift guard, marked the stale entries

2026-07-05 — Repo drifted ahead of npm at an unchanged version → partial publish shipped

2026-07-04 — npm run verify -- <slug> scopes nothing but the feel audit

2026-07-04 — In-world Text label was invisible (default z=0 sits behind sprites)

2026-07-04 — Math.log2 banned, but dmath has no replacement for it

2026-07-03 — Half-scaffolded example sat in the tree failing gates

2026-07-03 — Invariants were prose, not machinery

2026-07-03 — Hidden preview tab silently suspends the sim (rAF = 0)

2026-07-03 — npm run verify couldn’t scope to one game

This page rendersthe repo's markdowndirectly — edit it there, it changes here.