Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument / verified-clean

Stair Rise & Run Designer

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: VERIFIED_CLEANLifecycle: verified-clean

Inspectable records

Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Area
Everyday & Life
Tranche
tranche-4
Evidence ID
t4-043
Ledger rows
1

No ledger note is attached.

Review findings

The core riser arithmetic and Pythagorean stringer formula are standard once total_run and units are explicitly defined. The specification cannot receive PASS because total_run, comfort tolerance, minimum stair size, and post-rounding validation are unresolved. The honest-label warning to verify local building code is appropriate but does not replace those constraints.

Formula and scope findings

  • total_run is used in the stringer-length formula but is never defined. If there are num_steps risers and the upper floor is the landing, total_run is typically tread_depth × (num_steps - 1); using tread_depth × num_steps produces a different result.
  • The comfort check uses an undefined approximation tolerance. The test vectors interpret it as inclusive 24.0–25.0 inches, but the specification does not state that rule.
  • round(total_rise/target_riser) can produce zero, causing division by zero in actual_riser. Inputs need constraints such as total_rise > 0, target_riser > 0, and the rounded step count >= 1.
  • The formula does not require validation of the resulting actual_riser and tread_depth after rounding, even though those values—not the desired riser—must be checked against the stated code-reference ranges.
  • A one-riser result can produce zero horizontal run under the usual num_steps - 1 tread convention; a minimum of two risers or an explicit stair-layout rule is needed.

Unit assumptions

  • All numeric test-vector dimensions are inches unless otherwise stated; total_rise, desired_riser, and tread_depth must use the same unit.
  • The calculations assume positive values and JavaScript-style rounding for positive numbers, equivalent to Math.round.
  • For stringer length, total_run is assumed to be tread_depth × (num_steps - 1), treating the upper floor as the final landing.
  • The comfort flag is interpreted as true when 24.0 <= (2 × actual_riser + tread_depth) <= 25.0 inches.
  • The code-reference flag is interpreted as true when 7.0 <= actual_riser <= 7.75 inches and tread_depth >= 10.0 inches; actual jurisdictional code requirements may differ.

Boundary hardening

BREAK_CLAIMED · SELF_FLAGGED

A zero total rise produces num_steps = 0 and then actual_riser = 0/0, an undefined result; the instrument must reject this input before division. Negative tread depth also exposes an unspecified sign convention and can produce a misleading comfort result unless rejected or converted to a magnitude.

Errata and corrections

No applied erratum is attached to this unique-name record.

Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

{
  "inputs": {
    "total_rise": 108,
    "desired_riser": 7.5,
    "tread_depth": 10.5,
    "units": "in"
  },
  "expected_outputs": {
    "step_count": 14,
    "actual_riser": 7.7142857143,
    "run": 10.5,
    "total_run": 136.5,
    "stringer_length": 174.05818,
    "comfort_flag": false,
    "code_range_flag": true
  },
  "working": "108 / 7.5 = 14.4; round(14.4) = 14 steps. Actual riser = 108 / 14 = 7.7142857143 in. Run per tread = 10.5 in. Total run = 10.5 × (14 - 1) = 10.5 × 13 = 136.5 in. Stringer = sqrt(108² + 136.5²) = sqrt(11664 + 18632.25) = sqrt(30296.25) = 174.058180 in. Comfort value = 2 × 7.7142857143 + 10.5 = 25.9285714286 in, so comfort_flag = false. Code range: 7.0 <= 7.7142857143 <= 7.75 and 10.5 >= 10, so code_range_flag = true."
}

Related workflows

Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

  • VERIFIED_LEDGER.json · VERIFIED_CLEAN
  • evidence-tranche4/tranche4-results.json
  • BOUNDARY_HAZARD_CATALOG.json