Dune
★ 4.31
155 editions 3,503 want to read
--w--catNo canvas is drawn here — the field is invisible; these variables are its only output. Without it you would build: star-sort plus genre filters.
Data honesty
Fundamental · invisible fields · catalog
A bookshelf is usually a ranking in disguise: sort by rating count, slap a score badge on
each cover, and the top row wins. These 28 books are a real
Open Library science-fiction shelf
run as a field instead. Each book is a body, and its rating count goes
through the same formula the Evidence example runs over citations —
trust = log(ratings + 1) / log(maxRatings + 1) — so log-normalized rating
counts become gravitational mass.
The consensus shows in the spine, not a score badge: heavier-rated books carry more type weight, more ink, and a stronger left anchor. The field is invisible — no particle swarm, no overlay. Hover or focus a book and every shelf-mate sharing a subject lights up, with the strongest shared subject floating beside it. Re-weight by anticipation or longevity and watch the shelf re-settle. Toggle the field off and it collapses to a plain grid.
size = ratings — the evidence trust math, retargeted at the shelf · color = first subject — the shelf each book sits on
--d to every card each frame; it gathers under your cursor,
and the floating chip's border charges with it
★ 4.31
155 editions 3,503 want to read
★ 4.09
99 editions 1,439 want to read
★ 3.94
46 editions 1,160 want to read
★ 4.07
41 editions 384 want to read
★ 4.53
32 editions 1,116 want to read
★ 4.25
99 editions 1,496 want to read
★ 3.94
101 editions 575 want to read
★ 4.35
81 editions 287 want to read
★ 3.68
34 editions 258 want to read
★ 4.20
117 editions 545 want to read
★ 4.11
138 editions 613 want to read
★ 4.34
27 editions 144 want to read
★ 4.19
50 editions 791 want to read
★ 4.11
28 editions 189 want to read
★ 4.09
21 editions 306 want to read
★ 3.91
47 editions 181 want to read
★ 3.96
68 editions 218 want to read
★ 4.32
22 editions 199 want to read
★ 4.25
24 editions 185 want to read
★ 4.03
48 editions 145 want to read
★ 4.10
20 editions 179 want to read
★ 3.71
11 editions 39 want to read
★ 4.19
54 editions 485 want to read
★ 3.78
60 editions 248 want to read
★ 4.05
30 editions 101 want to read
★ 3.85
28 editions 178 want to read
★ 3.93
7 editions 38 want to read
★ 3.85
48 editions 147 want to read
Every book is ordinary semantic HTML — an <article> with a handful of
data attributes. Fundamental reads them, runs a spatial field over the grid, and the trust
score is written once as --w; CSS turns it into type heft, ink, and the
spine. No canvas. No particle swarm. Shelf-mate affinity is class toggles, not SVG.
Two live channels ride on top: the page's hidden engine writes --d (local
particle density) to every data-hot card each frame, and the scoped pattern's
attention lane writes an eased --field-attention — CSS turns both into a
felt glow and lift, and both go quiet when the field is off. In the browser the counts
refresh from the same Open Library search once per visit, on purpose —
shelf counts drift slowly (a few ratings a day, not a ticker), so polling would be
theater. Fresh counts run back through the active weighting and the shelf re-settles.
1 — mark each book as a field body
<article
id="bk-OL893415W"
data-body="attract"
data-strength="1.87"
data-feedback
data-hot
data-subjects="science fiction|time travel"
style="--w: 0.92; --cat: #4da3ff;"
>
<!-- title · author -->
<!-- the ratings line declares itself a
measurement of this card -->
<span data-field-visual-for="#bk-OL893415W"
data-field-visual-role="measurement">
★ 4.02 · 9,440 ratings
</span>
</article> data-body="attract" — registers as a field participantdata-strength — gravitational mass (0 → faint, 2 → heavy anchor)data-subjects — the shelf-mate affinity edgesdata-feedback — opt in to --field-* writebacksdata-hot — opts into the live density gather: hover and --d climbs toward 1data-field-visual-for — names the ratings line a measurement of its card2 — the evidence formula, retargeted
// IDENTICAL to /evidence — only the
// signal changed: citations → ratings.
// the shape is core's weight primitive:
import { logNormalize } from "@fundamental-engine/core";
trust = logNormalize(ratings, maxRatings)
// = log(ratings + 1) / log(maxRatings + 1)
// the other lenses re-run the same shape:
// anticipation → wantToRead counts
// longevity → edition counts
// then a FLIP re-sort settles the shelf One log-normalized count becomes mass, exactly as on the Evidence page. Swapping which count feeds the formula is the whole difference between the three weightings.
3 — CSS reads the field's output
.cat-title a {
font-variation-settings:
'wght' calc(380 + var(--w) * 360);
}
.cat-card {
/* --d: the engine's live local density,
written every frame; gathers toward 1
when a data-hot card is hovered/focused.
--field-attention: the scoped pattern's
eased attention lane. */
--live: var(--d, 0);
box-shadow: 0 0 calc(var(--live) * 16px) -6px
color-mix(in srgb, var(--cat)
calc(var(--live) * 55%), transparent);
opacity: calc(0.58 + var(--w) * 0.42);
}
/* the floating affinity chip charges with
the hovered card's --live (mirrored by
the runtime while the hover holds) */
.cat-chip {
border-color: color-mix(in srgb,
var(--accent)
calc(45% + var(--live, 0) * 45%),
var(--line));
}
Type heft, ink, and the spine all read from one normalized trust score — the field
drives the measurement; CSS drives the presentation. The glow and the chip's charge
read --d and --field-attention — live writes, zeroed when
the field is off.