# Friction protocol — convention > Cross-cutting rule shared by skills the claw-test harness exercises (setup, > brain-ops, query, ingest, smoke-test, migrations). Reference via > `> **Convention:** see [skills/_friction-protocol.md](_friction-protocol.md).` When you encounter friction running gbrain — anything confusing, missing, surprising, or wrong — log it via `gbrain friction log` so maintainers can see it without you writing a bug report. Friction reports drive the claw-test feedback loop (the harness collects, renders, and re-runs). ## When to log Log friction when any of these happens: - A command failed with a non-actionable error message - A doc said one thing and the tool did another - You couldn't find the next step - A setup command needed a manual workaround - A flag exists but isn't documented in `--help` - A success condition was unclear (you couldn't tell if the command worked) Log delight (positive signal) when: - Something worked on the first try and the docs were exactly right - An error message handed you the fix - A flag you guessed at turned out to exist with the obvious name ## How to log ``` gbrain friction log \ --severity {confused|error|blocker|nit} \ --phase \ --message "" \ [--hint ""] ``` For delight, add `--kind delight` and pick any severity. The CLI auto-fills `ts`, `cwd`, `gbrain_version`, and resolves `run_id` from `$GBRAIN_FRICTION_RUN_ID` (set by the harness) or falls back to `standalone.jsonl`. So you can call this anywhere — inside a harness run, manually during normal use, or from a scripted test. ## Severity guide | severity | meaning | |------------|---------| | `blocker` | Couldn't proceed at all. Hard stop. | | `error` | Command failed unexpectedly. | | `confused` | Docs/tool mismatch, ambiguity, missing pointer. | | `nit` | Polish opportunity. Cosmetic or low-impact. | Be specific: "doctor says `schema_version=0` and points at apply-migrations, but apply-migrations exits 0 with no output" beats "doctor was confusing." ## Inspecting reports ``` gbrain friction list # recent runs with counts gbrain friction render --run-id # markdown report (default) gbrain friction render --run-id --json gbrain friction summary --run-id # friction + delight side-by-side ``` `render` defaults to `--redact` for markdown (strips `$HOME`/`$CWD` to ``/`` placeholders) so reports paste safely into PRs and issues.