A torus is a manifest whose left edge is its right edge. Thirty-five is a multiple of seven and of five, so the two grids coincide at every face boundary and a seam between faces is a line of both grids — invisible as a seam. This study makes the drum Dan described: four faces of the 7×5 pair on one circle, generated once by the engine's own generator and rolled by the reader's scroll with no end; then the point of coincidence rolled to the centre of the window, where the generator has never put it; then the drum set at plane −1, behind a window cut in the sheet, rolled by the page — the plan's one sanctioned parallax. From a musing by Dan (2026-09-30); the draw supplied the third study.
One torus, page-wide, on today's seed. Its lattice is four faces of 7×5 on a circle of 140 microcolumns, tiled by the engine's BSP in one pass over twenty-eight base columns and then turned by a random number of columns, so that the wrap is crossed by a tile like any other seam. Scroll it sideways — trackpad, shift-wheel, the scrollbar, or the arrow keys when it has focus — and it never ends: when the roll settles in a cloned face it jumps by four faces, and because the pixels are identical you cannot see it do so. The roll snaps lightly to two kinds of stop: a face-aligned roll, where a seam sits on the window's edge, and a seam-centred one. The corner reads the roll; seams draws every coincidence of the two grids; grids reveals both.
The same torus, seed 16, in two fixed windows. The left is rolled to zero: a seam on each edge, which is every composition the generator has ever drawn — its stage edges are the coincidence of the grids. The right is rolled by half a face, seventeen and a half microcolumns: the seam stands at the centre of the window and the twin slivers, which the plan put near centre stage at 14 and 20, have gone to the edges. The note beneath is the instrument: the census of the signal law at every half-microcolumn roll, the tiles that cross each seam, and the lines of both grids in each window.
The plan's third plane has had one tenant on this site — the dusk rectangle the engine draws in a window — and one rule: recessed texture, seen through windows cut in plane 0, with inset shade from the cut edge, moving slower than scroll, "the one sanctioned parallax." The draw pulled that sentence. So the drum goes behind the sheet: a window four columns wide in an ordinary set piece, the torus inside it at plane −1, muted, its signals demoted to sky because the signal moment belongs to the sheet, and its roll driven by the page's own scroll on a view() timeline. As the window climbs the viewport the drum turns half a face, so it enters with the seam at the edge and leaves with the seam at centre. The readout gives the ratio.
plane −1What is behind the sheet moves slower than the sheet.
prefers-reduced-motion the drum does not roll and rests with the seam at centre.edition · timeline —The generator has always drawn with the seam at the edge. Its stage is one face; its left and right edges are where the base and overlay lines agree; and everything it knows about the interference pattern — the slivers at 14 and 20, the fat centre, the four near-coincidences between — it knows relative to those edges. Close the stage into a circle and the edge becomes a choice. At roll zero nothing has changed. At any other roll the window shows a stretch of the pattern the generator has never framed, and at half a face it shows the one stretch with a mirror axis down the middle: base lines at 2.5, 7.5, 12.5 and overlay lines at 3.5, 10.5, 17.5, reflected, with the slivers as the outermost pair and no line of either grid on the window's edge.
Dan's intuition was that this would open new geometries, and it does, but not by adding anything. The torus has the same tiles, the same two grids and the same rule for colour as the stage; what it adds is a parameter the stage did not have — where the frame falls on the pattern — and a kind of block the stage could not have, one that crosses a seam. The drum above has several. A tile that runs from one face into the next is still a rectangle on both grids; it is simply a rectangle the generator's bounded stage could not contain. The unbounded manifest Dan asked for turns out to be the bounded one with its two ends identified, and a roll.
Dan gave the session a free run. The queue held six studies and the draw was the only other voice; five sentences, seeded by the date:
Every composition below is generated from a seed and snaps to the union of both grids.answered: the drum is one composition from one seed on a union of 140 columns, and every piece — including the cut halves of a tile that crosses the wrap — snaps to it
P5 Motion & dashboard layer; polish; launch 1–2 sessionsconsidered: the plan's fifth phase; the dashboard layer here is the readout, and the motion is the reader's own
XL ≥1440 7 × 5 35 14–15 · 20–21 Full interference; generous set piecesanswered: the sliver columns named in the plan's edition table are blocks on the strip, two per face, and roll with it; a tile across a seam is as generous as a set piece gets
The prose-passage rhythm (§1, principle 04), the one-signal rule, and a density budget per viewport are the counterweights.answered as law 3: on a circle the one-signal rule becomes "no window at any roll holds two," which caps a drum at three signals; the note in Study B is the proof
−1 Recessed texture: muted imagery, ambient color, background data. Seen through "windows" cut in plane 0 (clip regions); inset shade from the cut edge; moves slower than scroll — the one sanctioned parallaxanswered as Study C and law 7: the drum behind a window, muted, without a signal, rolled by the page's scroll at about half its speed
draw.js| Constant | Value | Why |
|---|---|---|
| circle | F × union microcolumns · 140 at 7×5, four faces | the two grids coincide at every multiple of the union, so every face boundary is a line of both grids and no seam is special |
| pair | 7×5 ≥ 540px · 5×3 ≥ 270px · 3×2 below | Manifest law 2, by the torus's own width; the rows are the page's rows, because the vertical is tame |
| tiling | the engine's BSP, once, over F × base columns · then turned by ρ base columns | a verbatim port; the turn (ρ from the same rng, after the tiling) makes the wrap a seam like the others — crossed by whatever tile happens to straddle it |
| adjacency | on the circle | the engine's no-like-neighbours rule compares a tile with its neighbours' images one circle away as well |
| breakouts | 1–3 per face, placed anywhere on the circle | the engine's loop run F times; a breakout may straddle a seam, the wrap included; the ledger's objections are checked against tiles on the circle |
| signals | ≤ 1 per window at any roll · ≤ 3 per circle | two signal tiles need both gaps between them ≥ one face; the engine's one is kept and the smallest tiles the law allows are promoted; the census checks all 280 half-microcolumn rolls |
| roll | --roll, microcolumns, continuous | the only moving part; the stylesheet translates the strip by −(union + roll) microcolumns |
| strip | F + 2 faces · the last face cloned before the first, the first after the last | every block is drawn at each of its images and cut at the strip's ends, so any window of one face sees a whole circle's worth of content |
| jump | ± F faces when the scroll settles in a clone | the pixels are identical before and after, so the jump cannot be seen; a scroller clamped at either end jumps at once |
| stops | every half face · proximity | face-aligned and seam-centred rolls both snap; a free roll is still allowed |
| units | half microcolumns | the seam-centred roll is 17.5 columns; the strip's grid is scored in halves so that stop exists as a line |
| slivers | blocks at 14 and 20 of every face · z1 · multiply .85 | law 6: structure rolls with the content; full columns at 7×5, 5px bars below it, as the manifest does |
| plane −1 | saturate .78 · brightness .95 · signals → sky · roll 0 → union/2 over entry to exit | the plan's recessed plane: muted, seen through a cut, slower than scroll; no signal below the sheet |
| reduced motion | no roll behind the window · instant jumps · smooth scroll off | the reader's own scroll is never motion the page added; the page's parallax is |
view() timeline on the strip, one @property for the roll and one keyframe pair are the whole mechanism; the drum turns half a face while the window crosses the viewport: 317px of roll against 1,124px of scroll at L (0.28), 0.27 at XL, 0.17 at M and 0.15 at S. The plan's clause "moves slower than scroll" was written for vertical drift; a horizontal roll satisfies it with the same economy and does not fight the reader's scroll direction, which vertical parallax always slightly does.--snx-unit in both axes — and this is the second study to need it.