catchlaw-measurement-rulerlisted
Install: claude install-skill zakariaf/CatchLaw
# Catchlaw Measurement Ruler
A measurement is a legal act, not a number: 38 cm decides nothing until it also says total length,
and a length that survives as a double or a localised string has already lost the case. This skill
owns the method system, millimetre storage, ID-1 calibration, step-and-mark, manual entry and the
ruler's refusal to mirror. It owns neither the painter architecture nor directional layout.
Read the reference for the task at hand:
- `references/measurement-methods.md` — method table, per-jurisdiction rows, mm storage, rounding,
display formatting, method mismatch, edge cases.
- `references/ruler-and-calibration.md` — id-1 card, px-per-mm maths, plausibility band, step-and-
mark state machine, manual entry, accuracy budget, device matrix.
Run `scripts/check_measurement.sh` before a PR.
The View/Painter/Scene split, `shouldRepaint` and zero-allocation `paint()` belong to
`custom-canvas-and-gestures`; directional geometry, numeral systems and ICU formatting to
`i18n-rtl-l10n`; the canonical-unit principle to `value-objects-money-and-units`; the numeric keypad
and focus order to `lonja-forms-and-controls`; comparing a reading to a rule to
`catchlaw-rule-engine`.
## Non-negotiable rules
1. **Every length is an INTEGER of millimetres, everywhere.** `int lengthMm` in the domain, `INTEGER`
in drift, `450` for Hamour and `38` for Ameixa babosa — never `double`, never `'45,0 cm'`, never
`'٤٥ سم'`. **WHY:** a double accumulates 44.99999 and rounds