EqualifyEverything / equalify-iris

page.md: a column's foot is a line break, and the unit note is part of the table's name (#450)
Two prompt rules from #374, and the table-join verification that had to be built for the second of them. `page.md` now says a word broken at the foot of a column is one word, and a table's bracketed unit note belongs in its `<caption>` rather than in a row a screen reader meets as data. The second rule is where the work went. Once the note lives in the caption, the caption is something a continued table's merge can lose, and every check in `verifyJoin` read cells, columns, rows or labels, so none of them could see it go. Twenty-two rounds of review are almost entirely that one check, and each round's finding was created by the previous round's fix: - a note either half's caption carries is owed the joined caption; - a note the merge demoted into a row has not been kept, including the `<thead>`-closing spelling the prompt now forbids by name; - but the mirror must still join free, so a row can excuse a note missing from the caption rule 4 discards and never one missing from the caption it copies; - "printed as a row" is read over every row and matched on text and block; - five decline reasons, ordered least-specific first, so each says what happened; - a note kept in the caption and printed as a row ships the units twice; - the merge must not manufacture that doubling itself; - a bracketed note row inside the header block is not a header cell, in either spelling; - the note neither caption carried, printed in the header block and deleted; - promotion into the caption is one answer whichever block the row was in, so the row check subtracts the note rows the joined caption absorbed; - those absorbed rows replace the one row the floor already forgives rather than adding to it, or a pair loses an unlabelled continuation line for free; - and the free path's licence is asked the way the floor asks it, so the code path cannot hand its own verifier an output the floor refuses. Every one refuses rather than repairs, which costs one editor call on a code join and a split table on an editor answer, so each is argued against the cost of over-refusing and the residue it cannot see is written down beside it. One place over-refuses: two distinct notes on one table, 0 of the 769 tables in the round logs, where a correct join exists and the floor refuses it too. `npm test`: 1692 tests, 1692 pass, 0 fail. Refs #374 Co-authored-by: Blake Bertuccelli-Booth <blake@equalify.app>
Blake Bertuccelli-Booth Blake Bertuccelli-Booth committed on Sep 10, 2026, 02:29 AM
Showing 7 changed files +1372 additions -33 deletions
Browse files at this commit →