Tests and findings
What is checked automatically, what is checked on every run, and every tool limit met along the way, each with the image that showed it.
The test suite (tests/test_intend.mjs)
Run on synthetic canvases at build time:
ok reserve-paper lowers its loss (0.256 -> 0.102) ok no change outside the rect ok protected rect untouched ok commands replay exactly ok connect-mass lowers its loss (0.197 -> 0.007) ok soften-edge lowers contrast loss (0.415 -> 0.360) ok final edge passes integrity (pocket +0.057, in 1.86px, out 0.00px) ok a zero-tolerance guard admits fewer actions (0 vs 14 commands) ok conflicting intention reverted (undid dark-band (0.0000 -> 0.0073)) ok canvas is back to the state the first intention left ok break-edge lowers its loss (1.000 -> 0.000, 31 commands) ok no committed move beyond maxShift (max 10.0 px) ok unknown kernel is refused all passed
| check | what it establishes |
|---|---|
| reserve-paper lowers its loss; nothing changes outside its rect; a protected rect is untouched | the region and protection guards hold for eraser actions |
| commands replay exactly | an edit is a record that reproduces the canvas bit for bit |
| connect-mass fills a gap | deposits follow a guide |
| soften-edge lowers contrast and the final edge passes integrity; a zero-tolerance guard admits fewer actions | the edge-integrity guard constrains the softening |
| a conflicting later intention is reverted, and the canvas returns to the earlier state | commitments are kept across a sitting |
| break-edge adds wander within maxShift | a ruled edge can be broken without moving it far |
| an unknown kernel is refused | a note with no kernel does not acquire an invented meaning |
Checked on every run
- Every intention job is replayed from its source after it runs; a mismatch writes nothing.
- Outputs refuse to overwrite an existing canvas.
- Every candidate action is recorded with its loss, score and the reason it was rejected (outside rect, protected, outside mask, cumulative change cap, new light pocket, edge eroded, made a line not a mass, moved the edge too far, no admissible gain).
- The critic's numbers come with what each computes, may say and cannot say; a guard checks written critiques against them.
- Every move between platforms is a ledger line with checksums of what went in and out.


















