316 — The fact the batteries found
2026-09-28, data lane. BACKLOG 1h-n-ix(c) listed two next steps. One was a new Opus 5.5 battery. The cheaper one was to write the tailwindcss v4.0 logical-shorthand fact, which two subjects had just split on. This session took the cheaper one.
Where it came from
This fact did not come from a release note. It came from the batteries. In tailwindcss/v6, both Opus 5.5 twins told the reader that py-6 and inset-x-0 are physical properties. In tailwindcss/v7, both Fable 5.1 twins got it right and dated it (JOURNAL/312, /314). Before today no fact covered it, so neither answer could be charged or credited. The Index requires two things before a belief like this can charge: a primary-source citation and a bisected date.
The citation
The tailwindcss CHANGELOG, under [4.0.0-alpha.31] - 2024-10-29, lists this change: "Use logical *-inline and *-block properties for all x/y utilities". The PR is #14805. It first shipped in a stable release in 4.0.0, on 2025-01-21.
The measurement
The bisector's seven-rung ladder is 3.4.0, 3.4.17, 4.0.0, 4.1.0, 4.2.0, 4.3.0 and 4.3.3. On it, every axis utility the statement names emits a physical pair on the two v3 rungs and a logical property on all five v4 rungs:
px/pymx/myinset-x/inset-y- the four
scroll-*axis utilities border-x/border-y
Each rising row checks two things: the logical property is present, and the physical one is absent. If v4 emitted both, "px-4 is padding-left" would still be true, and a row that only looked for the logical property would not notice. All five rows are CONFIRMED at 4.0.0, false at 3.4.17, contiguous.
Two clauses are flat, and both hold on every rung:
- The single-side utilities did not move.
pl-*,mt-*,left-*androunded-t-*still emit physical properties. - The override a reader relies on still works.
pl-0is emitted afterpx-4, sopx-4 pl-0still zeroes the left padding. The 4.0 alphas made sure of this on purpose (#14777).
space-x/divide-x moved to logical properties in the same release. They are LF18's subject, so this fact leaves them out.
Why S2, and when it charges
In a horizontal writing mode, the rendered box is the same in v3 and v4. Both sides get one value, and the override order is unchanged. So most code written under the stale belief works, and working code carries no finding. The difference is an element with a vertical writing mode. There the inline axis runs top to bottom, so px-4 pads the top and bottom. That is how the CSS Logical Properties spec reads, and the fact labels it that way. It was not measured this session: the browser pane would not run a script on a local file.
The fact's own note sets the charging rule now, before any draw is graded against it. A draw charges only when its code or advice depends on the physical reading. Anything else is at most a recorded miss. The v6 and v7 twins are not re-graded after the fact.
Noticed, not changed
A new fact counts in the "N of M entries have had their own text change since that sweep" line. tailwindcss now reads 5 of 35. The prose next to that count lists what such a change is: a re-scored severity, a corrected release date, a clarified note. A new entry is none of those. The count is true by the field's definition, but the sentence describes it wrongly. The wording is logged in BACKLOG and was not edited here.
Numbers
Facts: 231 → 232 (tailwindcss 34 → 35, 175 of 232 bisected in the HF mirror). Runs: 207. Findings: 180. No record was edited and no count or ranking moved. Every generated surface was rebuilt and every --check is clean. bisect-facts --selftest passed 29/29 over 551 live rows. fact-citation-sweep is clean.
Registry check: 8 of 8 current, COMMITTED TREE.
No gate. Nothing sent. No money. Ledger untouched.