Source: https://guthlabs.ai/docs/instruments/roof-pitch-rafter-calculator/

instrument / verified-clean

# Roof Pitch & Rafter Calculator

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

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/roof-pitch-rafter-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/roof-pitch-rafter-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/roof-pitch-rafter-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/roof-pitch-rafter-calculator/qualification/>)

## 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-055

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core pitch and angle relationships are standard, subject to consistent units and degree conversion. The stated rafter formula is conditionally valid only when overhang is measured along the slope. Clarify span-versus-run handling, overhang measurement direction, pitch formatting, and the undefined material-needed feature before release.

### Formula and scope findings

- The rafter_length formula is only correct if overhang is measured along the sloped rafter. If overhang is horizontal, the formula must instead use sqrt((run + overhang)^2 + rise^2), or an equivalent geometry calculation.

- The input may be span or run, but the formula requires run. For a symmetrical gable roof, run is normally span / 2; that conversion and the roof configuration are not specified.

- The instrument claims to compute material needed, but no material-quantity formula, waste allowance, spacing, or output definition is provided.

- The pitch output format is ambiguous: rise/run produces a numeric ratio such as 0.5, while the example implies a normalized roof pitch such as 6:12.

- The angle formula atan(rise/run) is correct for an angle in radians; degrees require multiplying the result by 180/pi, which is not stated explicitly.

### Unit assumptions

- rise and run must use the same linear units before division or square-root calculation.

- The examples below treat overhang as a length measured along the sloped rafter, because that is the only interpretation under which the stated rafter_length formula is correct.

- For a symmetrical roof supplied by span, run is assumed to be span / 2.

- Angle output is in degrees: atan(rise/run) * 180 / pi.

- Pitch is reported both as a numeric ratio and as a normalized ratio with denominator 12 where applicable.

- The metric test vector uses millimetres consistently; no automatic unit conversion is assumed.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The stated formula has an undefined division when run = 0, and the span-versus-run input representation creates a branch where identical numeric dimensions produce different results. Negative overhang also exposes an unresolved sign convention.

## 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": {
    "run": 12,
    "rise": 6,
    "overhang": 1,
    "unit": "ft"
  },
  "expected_outputs": {
    "pitch_ratio": 0.5,
    "pitch_label": "6:12",
    "angle_degrees": 26.565051,
    "rafter_length": 14.416408,
    "length_unit": "ft"
  },
  "working": "pitch = rise / run = 6 / 12 = 0.5, so the normalized label is 0.5 * 12 = 6, or 6:12. angle = atan(0.5) * 180 / pi = 26.565051 degrees. Base rafter = sqrt(12^2 + 6^2) = sqrt(144 + 36) = sqrt(180) = 13.416408 ft. Rafter length = 13.416408 + 1 = 14.416408 ft."
}
````

## Related workflows

[Home Renovation Estimatorroof](<https://guthlabs.ai/docs/instrument-workflows/home-reno/>)

## 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`
