The Verification Venue · the most-repeated fact in making, made exact

Where to Nail the Diagonal

Everyone knows the slogan: triangles are strong, so add a diagonal. True — but it hides the real workshop question. A grid of squares is floppy; it shears into leaning rhombi. How many diagonal braces lock it, and does it matter which squares you brace? The honest answer is a 1979 theorem, and it is not "as many as you can."

Brace some cells below — click a square to nail a diagonal across it. Then grab the orange corner and pull. A wrongly-braced grid still collapses; a rightly-braced one with the same number of braces holds. The graph on the right is the whole secret: rigidity is whether every row and every column is wired together.

The frameclick a cell · drag the corner

Row × column graphBolker–Crapo

Structure is

FLOPPY

graph in 8 pieces

Braces placed

0 / min 7

need 7 more, well-placed

Floppy modes (shear DOF)

7

= components − 1

drag the corner →

Why a square is floppy and a triangle is not

It isn't that a square is "weak." Count its freedoms. A bar-joint framework in the plane with N pin-joints and b rigid bars has internal first-order degrees of freedom, when its bar constraints are independent:

F = 2N − b − 3

Two coordinates per joint, minus one independent constraint per bar, minus the three motions (slide, slide, spin) that move the whole thing without bending it. In general, use F = 2N − rank(R) − 3, where R is the rigidity matrix. A triangle has N = 3, b = 3: F = 2·3 − 3 − 3 = 0 — no freedom left, rigid. A square has N = 4, b = 4: F = 2·4 − 4 − 3 = 1 — one freedom remains, and that one freedom is the shear: the four side-lengths are all satisfied while the corners swing from 90° into a rhombus. Nail one diagonal and you add a fifth bar: F = 2·4 − 5 − 3 = 0. Rigid. That single diagonal is the whole reason "add a triangle" works — it spends the square's last freedom.

But for a grid, count is not enough — placement is

String many cells into an n × n grid and Maxwell's bookkeeping says you need braces — but it can't tell you where. The exact answer was given by Ethan Bolker and Henry Crapo in 1979, and it is startling: turn each row of cells into a node and each column into a node, and draw an edge for every cell you brace (a brace in row r, column c joins node rₐ to node c_b). Then:

the braced grid is RIGID ⇔ that row×column graph is CONNECTED

That is the graph on the right of the instrument, drawn live. A minimum rigid bracing is exactly a spanning tree of that graph — just enough edges to wire all n rows and n columns into one piece without a redundant loop — which takes

(rows) + (columns) − 1 = n + n − 1 = 2n − 1 braces

Try it: a 4×4 grid needs 7, not sixteen. And it must be the right spanning tree — press Over-brace & still floppy: on a 3×3 or larger grid it places 2n−1 braces or more (a 4×4 gets 12, well past the 7 minimum) and still collapses, because a whole row or column was left dangling. Count is necessary; connectivity is what's sufficient.

The check — every verdict recomputed in front of you

For the grid as you've braced it right now:

—

The Maxwell counts and the per-grid minimum, recomputed from the formulas:

caseNbF = 2N−b−3verdict
gridrows+colsmin = (m+n)−1= 2n−1?

The live verdict is union-find connectivity of the bipartite graph. The offline verifier builds the framework's real rigidity matrix and checks rank = 2V − 3 for every bracing of the 2×2 and 2×3 grids and 1,200 random bracings up to 5×5 — the rank verdict and the connectivity verdict agree on every one, and the floppy-mode count (components − 1) equals the rank deficiency every time. Run it: node research/where-to-nail-the-diagonal/verify-where-to-nail-the-diagonal.mjs.

What's exactly true here, and what's idealised

Exactly true. The Maxwell count F = 2N − b − 3 gives the internal first-order degrees of freedom of a planar bar-joint framework when its bar constraints are independent. Bolker–Crapo is a theorem with a proof: a braced rectangular grid is rigid if and only if its row×column bracing graph is connected, and minimal rigid bracings are precisely the spanning trees of the complete bipartite graph K(m,n), of which there are mⁿ⁻¹·nᵐ⁻¹ — so an n×n grid needs exactly 2n−1 braces, and which ones is what decides it.

The model is the pin-jointed ideal. The bars are perfectly rigid in length; the joints are frictionless pins that carry no moment; a "brace" is one more rigid bar across a cell's diagonal. That idealisation is exactly why the count can be exact. A real wall frame, gate, or shelf is not this: lumber has bending stiffness, screwed and glued joints carry moment, sheathing acts as a membrane — so a real "floppy" grid still has residual stiffness and won't freely collapse the way the instrument's idealised one does. The theorem tells you where the structure has zero first-order stiffness, which is where a real one is weakest and where a brace buys the most. It is the right guide, not a promise that an unbraced wall folds flat.

A subtlety we had to get right (a free choice, named). Bolker–Crapo depends on the grid's special geometry — opposite sides of every cell parallel and equal. If you jitter the joints into generic position, the same bars can become rigid even with a disconnected graph, because parallelism is what makes connectivity necessary. The instrument and the verifier therefore both place the joints on the exact rectangular lattice; the drag-to-shear motion preserves every bar length exactly (each cell stays a rhombus, each braced cell stays a square), so what you pull is a true zero-energy mechanism, not an approximation.

Which notion we display. For this rectangular lattice, the rigidity-matrix rank and Bolker–Crapo connectivity give equivalent verdicts. The raw Maxwell count is preliminary bookkeeping; the pebble game tests generic rigidity. We show connectivity on screen because it is the one a hand can read at a glance, and we use the lattice's rigidity-matrix rank as the independent cross-check in the verifier. Those two verdicts agree by theorem and, here, on every tested case.

Corrections

Corrected 2026-10-14: The title called the triangle the only rigid shape. A square with a diagonal brace is rigid too (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The page gave F = 2N − b − 3 as an unconditional freedom count and movement test. It counts internal first-order freedoms only when the bar constraints are independent; in general F = 2N − rank(R) − 3 (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The page called the Maxwell count, pebble game and rigidity-matrix rank, and connectivity equivalent verdicts. For this rectangular lattice, matrix rank and bracing-graph connectivity agree; the raw count alone cannot decide rigidity, and the pebble game tests generic rigidity (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The sources called the pebble game the cross-check used here. The verifier uses numerical rigidity-matrix rank by Gaussian elimination with partial pivoting and a 1e-9 pivot tolerance (found by the assay line, 2026-10-14).

Corrected 2026-10-14: The page said it was last verified on 27 June 2026. A successful verifier run was already recorded by 4 September 2026; the verifier passed again on 14 October 2026 (found by the assay line, 2026-10-14).

Corrected 2026-10-14: Changing the grid size could make the fixed 4×4 example say it needed 3 or 11 braces. Its minimum is 7 braces, and the example now keeps that number (found by the assay line, 2026-10-14).

The claims record 54 claims re-read against their sources, 14 October 2026

Written 2026-06-27. Claims re-read against their sources on 2026-10-14: 54 checked, 43 confirmed, 10 wrong, 0 unverifiable, 1 true when written and overtaken since (dated, not corrected). By the assay line (research/assay-line/cited-1014/), Codex fixer directed by claude-assaying-boyle-1014; source record by Codex, checked by Codex.

This was the 2026-10-14 repair pass for the eleven items in research/assay-line/cited-1014/where-to-nail-the-diagonal/triage.json, against the layer read at 7a9bcb5442. The fixer re-read every triage item's evidence before editing and reproduced the constraint-count counterexample. The 43 CONFIRMED lines below retain the source checker's re-readings in N2-codex.md, not 43 new checks by this fixer. Both MINOR lines count in wrong; X9 is listed unchanged, and X10 uses the explicit JSON-LD dateModified exception. The follow-up Codex repair review on 2026-10-14 confirmed the fix-checker's remaining X8 copy in There, Here; X8 stays open for an annotation beside that preserved quotation.

Claims

What was done

The assay office: what a record is, and every layer re-read so far.