bearing-e2elisted
Install: claude install-skill ReidenXerx/bearing
# The `.e2e` harness
`.e2e/` is a browser harness the project FINISHES. bearing ships the substrate (`core/`), the
contracts, and the scars; the app-specific parts are yours to build and to grow.
**Read `.e2e/README.md` before writing a verifier.** Its scars list is the point of the whole
module — every entry is a green run over a real failure.
## When to reach for it
| Situation | Do |
| --- | --- |
| "does this actually work in the browser?" | write a verifier in `.e2e/verify/` |
| "does this button send the right payload?" | `blockWrites` — assert the payload, never perform the write |
| user wants to SEE a page | `shots.take(page, '<view-key>')`, then read the png |
| a fix needs proving, not describing | a verifier that FAILS before the fix and passes after (NS-9) |
| the app is not running / no session | `skip(name, why)` — never a `check` that is a skip in disguise |
Not for unit-testable logic. A browser is the slowest way to test a pure function.
## Writing one
Copy `verify/smoke.js`. The shape:
```js
withBrowser(async (browser) => {
const report = createReport('<what this verifies>');
// ... check() what ran, skip(name, why) what could not
report.finish(); // exit code IS the product
});
```
Four rules that are not negotiable, each earned:
1. **A skip is not a pass.** A run where nothing passed exits 1 even with zero failures.
2. **Poll, never sleep.** `until` / `untilAtLeast` / `untilStable`. A `waitForTimeout` is a guess
about latency t