Formula register / versioned

How the worksheets calculate and stop

Each tool separates its typed formula or decision table from the page controller, validates runtime values and removes the old result as soon as a calculation-bearing input changes.

Method register

Current module register

ModuleVersionResearch datePublic route
Three-point measurement1.0.02026-09-04Measure a door
Hinge-position marker1.0.02026-09-04Door hinge positions
Trim allowance1.0.02026-09-04Trim a door
Frame fixing marks1.0.02026-09-04Replace a door frame
Door mass estimate1.0.02026-09-04Door weight calculator
Door handing record1.0.02026-09-04Hang a door
Door-fault checklist1.0.02026-09-04Door will not close

Measure a door / v1.0.0

Three-point measurement recorder

minimum = min(r1, r2, r3)maximum = max(r1, r2, r3)spread = maximum - minimum

The calculation runs separately for width and height. All six readings are millimetres and remain unrounded in the result.

Golden: width 826, 824, 825 and height 1981, 1980, 1979 gives width 824 to 826 with spread 2 mm and height 1979 to 1981 with spread 2 mm.

Hinge positions / v1.0.0

Editable top-mark plotter

first top = top offsetlast top = door height - bottom offset - hinge lengthinterval = (last top - first top) / (hinge count - 1)mark[i] = first top + i x interval

Door height, hinge length, offsets and returned marks use millimetres. Hinge count is an integer from 2 to 4.

Golden: 1981 mm leaf, 76 mm hinge, 3 hinges, 150 mm top offset and 225 mm bottom offset gives top marks at 150, 915 and 1680 mm.

Trim allowance / v1.0.0

Removal constrained by entered maker limits

target width = opening width - left gap - right gaptarget height = opening height - top gap - bottom gaprequired removal = leaf dimension - target dimensionfirst edge = clamp(total / 2, total - second limit, first limit)

All dimensions, gaps, limits and allocations use millimetres. A limit of 0 is valid and means no removal from that edge.

Goldens: total removal 8 with limits 3 and 6 allocates 3 and 5. Total removal 3 with limits 0 and 5 allocates 0 and 3.

Frame fixing marks / v1.0.0

Maximum-spacing plotter

usable rail = frame height - top setback - bottom setbackintervals = ceil(usable rail / entered maximum spacing)actual step = usable rail / intervalsmark[i] = top setback + i x actual step

Height, setbacks, maximum spacing, step and marks use millimetres.

Golden: height 2040, top and bottom setbacks 150, maximum spacing 450 gives usable rail 1740, 4 intervals and marks 150, 585, 1020, 1455 and 1890 mm.

Door mass estimate / v1.0.0

Material and optional glazing estimate

leaf area = width x height / 1,000,000timber face area = leaf area - glazing areatimber volume = timber face area x thickness / 1,000mass = timber volume x density + glazing area x glazing mass per m2

Dimensions use millimetres, areas square metres, density kilograms per cubic metre and mass kilograms. No density is preselected.

Golden: 762 x 1981 x 35 mm, density 600 kg/m3 and no glazing gives the unrounded result 31.699962 kg and display 31.7 kg.

Handing record / v1.0.0

Plain-language orientation record

viewpoint + visible hinge side + observed movement

Valid viewpoints are pull side or push side; hinge side is left or right; movement is towards or away from the observer.

Golden: standing on the pull side, hinges on the left and movement towards the viewer returns: “Standing on the pull side, the hinges are on your left and the door moves towards you.”

Door-fault checklist / v1.0.0

Ordered conservative decision table

validate all enums, then stop order: uPVC, fire door, frame or wallotherwise: symptom -> ordered observation IDs + optional owner link

Golden: a timber hinged, non-fire door with an apparently sound frame and top-latch-corner symptom returns hinge-fixing check, gap-pattern record and hinge-recess inspection, in that order, with the hinge-position owner link.

Shared state, print and provenance rules

Editing any calculation-bearing input immediately makes the previous result stale, clears its values, assumptions and diagram marks, and disables current-result printing. A valid submission rebuilds that output atomically. Invalid and malformed scaffold states fail closed.

Current-result print contains only the current record. Each interactive route also provides an independent blank worksheet, including a browser-print fallback when JavaScript is unavailable where specified by the route contract.