Source: https://guthlabs.ai/docs/instruments/truss-solver-method-of-joints/

instrument / verified-clean

# Truss Solver (Method of Joints)

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/truss-solver-method-of-joints/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/truss-solver-method-of-joints/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/truss-solver-method-of-joints/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/truss-solver-method-of-joints/qualification/>)

## Ledger state

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

**Area**: Mechanical, Civil & Structural Engineering — Statics/Dynamics, Strength of Materials, Machine Design, Civil, HVAC, Vibration

**Tranche**: tranche-8

**Evidence ID**: t8-011

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The equilibrium formulation and stated application are correct for ideal, stable, statically determinate 2D pin-jointed trusses. Verdict is NEEDS_REVIEW because the specification omits required unit conventions, member-force sign convention, ideal-truss assumptions, and a stability/singularity test; the m+r=2j honest label must not be treated as a sufficient validity check.

### Formula and scope findings

- The stated equilibrium equations are the standard method, but m+r=2j is only a necessary determinacy count, not a sufficient stability test; the solver must also detect mechanisms, geometric instability, duplicate or dependent equilibrium equations, and singular matrices.

- The specification does not explicitly state the member-force sign convention, assumed here as positive=tension and negative=compression.

- The method assumes an ideal pin-jointed planar truss: loads and reactions act at joints, members are straight two-force members, joints are frictionless pins, and self-weight is either omitted or converted to equivalent joint loads.

- The reaction equations and support constraints must be assembled consistently with the support types; the formula description does not state how pin, roller, or other restraints map into unknown reactions.

- A singular or ill-conditioned linear system must be rejected rather than solved as a valid truss result.

### Unit assumptions

- All joint coordinates must use one consistent length unit, and all applied loads must use one consistent force unit; member forces and reactions are returned in the force unit of the loads.

- Direction cosines are dimensionless, so coordinates in millimetres produce the same force ratios as equivalent coordinates in metres, provided all coordinates use the same length unit.

- Moments used for reaction checks have force-length units, such as N·mm or kN·m, with consistent conversion.

- Test vectors use positive x to the right, positive y upward, counterclockwise positive moments, and positive member force for tension.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

A coincident pair of joints creates a zero-length member whose direction cosines contain 0/0, so the solver must reject the input rather than pass it to the matrix solver. Sign and directional conventions also require explicit handling to avoid reversed tension/compression and reaction signs.

## 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": {
    "joints": {
      "A": [
        0,
        0
      ],
      "B": [
        4,
        0
      ],
      "C": [
        2,
        3
      ]
    },
    "members": {
      "AB": [
        "A",
        "B"
      ],
      "AC": [
        "A",
        "C"
      ],
      "BC": [
        "B",
        "C"
      ]
    },
    "supports": {
      "A": {
        "type": "pin"
      },
      "B": {
        "type": "roller",
        "restrained_direction": "y"
      }
    },
    "loads": {
      "C": {
        "Fx": 0,
        "Fy": -10
      }
    },
    "coordinate_unit": "m",
    "force_unit": "kN",
    "sign_convention": "positive=tension",
    "determinacy_check": "m+r=2j"
  },
  "expected_outputs": {
    "member_forces": {
      "AB": "10/3 kN (tension)",
      "AC": "-5*sqrt(13)/3 kN (compression)",
      "BC": "-5*sqrt(13)/3 kN (compression)"
    },
    "reactions": {
      "A": {
        "Rx": "0 kN",
        "Ry": "5 kN"
      },
      "B": {
        "Ry": "5 kN"
      }
    },
    "determinacy": {
      "m": 3,
      "r": 3,
      "j": 3,
      "m_plus_r": "6",
      "two_j": "6"
    },
    "joint_residuals": {
      "A": [
        "0 kN",
        "0 kN"
      ],
      "B": [
        "0 kN",
        "0 kN"
      ],
      "C": [
        "0 kN",
        "0 kN"
      ]
    }
  },
  "reference_data": {
    "member_lengths": {
      "AB": "4 m",
      "AC": "sqrt(13) m",
      "BC": "sqrt(13) m"
    },
    "direction_cosines": {
      "AC": {
        "from_A_to_C": [
          "2/sqrt(13)",
          "3/sqrt(13)"
        ]
      },
      "BC": {
        "from_B_to_C": [
          "-2/sqrt(13)",
          "3/sqrt(13)"
        ]
      }
    }
  },
  "working": "Global reactions: sum M_A=0 gives 4*B_y-10*2=0, so B_y=5 kN. Sum F_y=0 gives A_y+5-10=0, so A_y=5 kN. Sum F_x=0 gives A_x=0. At joint C, let F_AC=F_BC by horizontal equilibrium: (-2/sqrt(13))F_AC+(2/sqrt(13))F_BC=0. Vertical equilibrium gives (-3/sqrt(13))F_AC+(-3/sqrt(13))F_BC-10=0. Therefore F_AC=F_BC=-5*sqrt(13)/3 kN. At joint A, F_AB+(2/sqrt(13))F_AC=0, so F_AB-10/3=0 and F_AB=10/3 kN. Residuals: A: (0+10/3-10/3, 5-5)=(0,0); B: (-(10/3)+10/3, 5-5)=(0,0); C: (10/3-10/3, 5+5-10)=(0,0)."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## 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-tranche8/tranche8-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
