Grid, Layout & Rhythm
Governs how content is placed on every Fernando Kylas surface: the page edge, bands, pauses, columns, breakpoints and the spatial scale that every product, chapter and non-screen canvas inherits.
This is the canonical spatial chapter of the Fernando Kylas Brand System. It defines how content is placed, how far apart things sit, and what those distances mean. Every product that inherits the brand inherits this file: the rendered chapters, the Publishing Platform, the Report Engine, the living brand website, and any future foundation.
Every spatial behaviour in this document was measured before it was named. 199 intervals between blocks, the page edge at eleven viewports from 320 to 1600, the reading measure, layout nesting depth, and the correlation between each interval and the block preceding it were measured in a browser against the three rendered chapters on 2026-07-25. Where a statement is a judgement rather than a measurement, it says so.
What is approved
Fernando Kylas approved Grid, Layout & Rhythm on 2026-08-26, and Version 7 on 2026-09-01. The approval covers the spatial language and the values that now resolve it: the page edge and its dimensions (§2), the bands (§3), the three pause types and their screen values (§4), indivisibility and the bound-pair model (§5), the separation of component spacing from editorial pacing (§6), the 4px unit, the twelve-step scale and the radii (§6.1 to §6.3), columns, nesting and collapse (§8), alignment (§9), the four breakpoints and the canvas exemption from stepping (§10), the bleed contract and its two-element structure (§3.5), and the prohibitions (§12).
Fifteen open items remain and none of them contradicts what this chapter states, which is why the count is less alarming than it reads. They are acknowledged and intentionally excluded in two groups:
- Fourteen refinement questions:
GRID-04,06,07,09to12, and14to20. Each asks whether a rule this chapter already states should be tightened, moved or extended. None asserts that a stated rule is wrong. GRID-22, one breakpoint written in two units. A migration that changes rendered output already issued as PDF, deliberately deferred on §13.7's precedent.
No undocumented change may modify the approved spatial system. A change supersedes a decision in DECISIONS.md, with a reason.
Version 1 defined vocabulary and relationships, not dimensions. That was deliberate, and it was the substance of the chapter rather than a gap in it. Per DECISIONS.md, 2026-07-25: a pause is a relationship, and the medium determines the distance. A version that opened with numbers would have contradicted its own first principle.
Version 4 supplies the dimensions, and supplies them as resolutions rather than as definitions. The pause values (§4.7), the base unit, scale and radii (§6.1 to §6.3) and the breakpoints (§10.1) arrived on 2026-08-25. Not one of them was chosen. Every value was already realised in production and was ratified against the rule it claims to express, which is the order §13.6 argued for: publish the vocabulary first so that a proposed value becomes falsifiable when it arrives.
| Companion | Purpose |
|---|---|
typography.md | Owns measure, display composition, optical alignment and canvas floors |
colour.md | Owns surfaces and borders, which decide when a block has a visible edge |
identity.md | Owns clear space, which is a spatial rule this file does not override |
../GRID-FOUNDATION-BRIEF.md | The measured brief this chapter answers |
../platform/DESIGN.md | The reference implementation |
1. Spatial philosophy
Space carries meaning, or it is noise
brand-principles.md §3.2, in the spatial domain.
This is the colour philosophy applied to space. colour.md §1 holds that colour communicates meaning or it does not appear. Space is held to the same standard here.
The system had already reached this position before anyone wrote it down. Across the three rendered chapters, 199 intervals between top-level blocks fall on exactly three values, with no exceptions. A fourth value was never needed, because there was never a fourth thing to say.
A spacing value that carries no meaning is decoration, and this system does not permit decoration.
A pause is a relationship, not a distance
The distance is what the medium does with the relationship. The relationship is what the author means.
This is not a convenient abstraction. It is what the measurement showed. Of the three intervals in use, two express the same relationship: one where the preceding block ends in plain text, one where it ends in a visible edge. The relationship is identical. The number differs because a bordered block already ends with its own boundary and its own padding, so an identical measured gap does not read as an identical gap.
| Interval | After a block with a visible edge | After plain content |
|---|---|---|
| the shorter | 3 | 114 |
| the middle | 48 | 19 |
| the longer | 2 | 13 |
One relationship, two numbers, and the difference is optical. That is the whole argument for defining types rather than values, and the system made it before the rule existed.
Width belongs to content, not to columns
The chapters do not assign width by column span. Prose takes the reading measure. A lead takes more. A table takes the content column. A type specimen that must hold its true size takes a rail of its own and scrolls.
Width is a property of what the content is. This is the same logic as the semantic colour tokens, where a token names a job and never a colour: grounds change, jobs do not.
Restraint is functional, not aesthetic
brand-principles.md §3.1. What follows is what it costs in space.
colour.md §1 argues that each additional hue costs a contrast obligation, a meaning obligation and a reproduction obligation. Each additional spacing value costs the same kind of debt. It must mean something, be distinguishable from its neighbours, and survive every viewport, every canvas and print.
The evidence that restraint is already practice: the spacing scale offers thirteen steps, and the two largest are never used once in any chapter.
Some space must be refused
Every other rule in this chapter concerns space the system should provide. One rule concerns space it must withhold. A heading and its opening sentence are one thought, and the grid may not come between them.
This is the only prohibition in the system that is not about excess. It is about intrusion, and §5 treats it as a first-class concept rather than an exception.
2. The page edge
What it is
The page edge is intentional breathing room. It exists to serve reading comfort, compositional restraint and visual confidence. It communicates calm rather than density.
It is not residual whitespace, not a by-product of the content column, and not a margin left over once the content has been placed. It is placed first and everything else is placed inside it. Decided 2026-07-25.
What the measurement shows
The edge already behaves as a proportional rule with a floor and a ceiling. It held a constant 5.0% of viewport width at four separate viewports, sat at a fixed maximum across the four widest, and rested on a minimum across the three narrowest.
A judgement, not a measurement: that this proportional behaviour was intentional rather than incidental. Nothing in the repository states it. The support for reading it as intentional is that typography.md §8 already governs type as a percentage of canvas width, so a proportional edge is consistent with an existing proportional rule rather than a new idea.
The rules that hold regardless of dimension
- The edge is proportional, with a floor and a ceiling. It scales with the canvas, because breathing room that stays fixed while the page grows stops reading as breathing room and starts reading as a stripe.
- The floor protects legibility. Below it, the reading column narrows faster than the text can adapt.
- The ceiling protects composition. Above it, the content stops feeling placed and starts feeling stranded.
- The edge is one value at any given viewport, on all four sides horizontally. An asymmetric edge is a composition decision inside the page, never a property of the page.
- Only bleed may cross it (§3.5), and only on public pages.
Why it is not negotiable per page
A page that tightens its edge to fit more in has decided that density matters more than calm. That is a legitimate decision for some design systems and it is not this one. colour.md §1 refuses a second accent because variety is not a requirement, clarity is. The edge refuses the same trade.
The dimensions
Resolves GRID-01, 2026-08-26.
| Value | |
|---|---|
| Proportion | 5% of viewport width |
| Floor | 20px (1.25rem) |
| Ceiling | 64px (4rem), reached at 1280 |
Declared as clamp(1.25rem, 5vw, 4rem).
Ratified, not chosen. These are the values the three rendered chapters already realised, measured at eleven viewports on 2026-07-25: a constant 5.0% between a 20px floor and a 64px ceiling, with the floor holding across the three narrowest and the ceiling across the four widest. The measurement came first and this section names it.
The edge interpolates rather than stepping, and §10.3 is why. That is the one exemption from §10's stepping rule, and it exists because the edge is derived from the canvas rather than from type.
3. Bands
A band is a permitted horizontal width, chosen by what the content is. Four are in active use across the three chapters, and a fifth is required by the website and does not exist yet.
3.1 Reading measure
For continuously-read prose. Owned by typography.md §6, which derives it from measured character widths rather than from taste. This chapter does not restate the value and does not own it.
The measure is a reading instrument, not a container. Content that is not being read continuously has no business obeying it. That distinction is the reason the remaining bands exist.
3.2 Wide
For leads, section introductions and structural headings: content that is read, but not at length, and that needs to feel like an opening rather than a paragraph.
Measured, leads exceed the reading measure 9 to 14 times per chapter, and structural headings 22 times in one chapter. The wide band is already in use and was never declared.
3.3 Content column
For tables, records, panels, specimens, grids and proofs. Anything the reader scans, compares or consults rather than reads through.
This is the widest band that respects the page edge, and it is where most of a documentation chapter lives.
3.4 Rails: content that must hold its size
Some content cannot shrink without becoming false. A type specimen set at a specific size is that size; a demonstration drawn at a fixed width marks that width. Shrinking it to fit would leave the label truthful and the artefact lying.
A rail lets such content keep its true size and scroll within its own bounds, rather than shrinking or overflowing the page.
Rails are active in one chapter and absent from the other two, which is correct: only Typography has yet had content that must hold its size. The rail is the system's answer to the conflict between fidelity and fit, and fidelity wins.
3.5 Bleed
Content that extends to the viewport edge, crossing the page edge deliberately.
No documentation chapter uses bleed, and none should. A document has no reason to reach the paper's edge. A website does: WEBSITE-ARCHITECTURE-REVIEW.md §7 identifies the total absence of any edge-to-edge moment as the strongest single signal that a page reads as a PDF rather than a site.
Bleed is therefore scoped to public pages and is the one genuinely new spatial capability this foundation adds.
A bleed section is two elements, and that is the whole contract. One crosses the page edge and carries the surface; the other re-establishes the page edge and holds the content. Neither does the other's job.
| Element | Spans | Carries | Never carries |
|---|---|---|---|
| The bleed | Page edge to page edge, the full width of its container | The surface: a background token, a ground image, a rule | Content, and no measure of its own |
| The inner band | An ordinary band, chosen by content role (§3.6) | The content, aligned exactly as it would be outside a bleed | The surface |
Why two elements rather than one. A single element would have to escape the page edge and then restore it by arithmetic, and the arithmetic is the part that drifts. With two, the inner element is an ordinary band that has never heard of bleed: it takes its band token and centres itself exactly as the section above it does. Alignment is preserved by construction rather than recomputed, so a bleeding section and its neighbours align because they obey one rule, not because two rules were made to agree.
This is not a new shape. The masthead and the footer are already built this way, and the site's own shell.css records why: a full-bleed band containing a contained row, so a future surface can reach the viewport edge without moving the content inside it. The contract ratifies the structure already carrying the system's two most repeated bands rather than inventing one.
The escape is measured from the container, never from the viewport. 100vw is wider than the container whenever a classic scrollbar is present, and that difference is horizontal overflow on the one assertion that has to stay at zero from 320 to 1600 px. The page edge is a token; negating it is exact at every viewport and at 200% text.
Bleed does not change vertical rhythm, and it gets no pause of its own. The distance between a bleeding section and its neighbour is the pause the relationship calls for (§4), chosen exactly as it would be if neither bled. A surface change is not a relationship, and letting the visual weight of an edge-to-edge band argue for a larger gap is how a rhythm becomes a series of exceptions.
Its internal padding is a different thing from the pause. A bleed with a visible surface needs space between that surface's edge and its own content; that padding sits inside the surface and is not spacing between sections. The pause stays outside the surface, on the page ground — otherwise two consecutive bleeds fuse into one uninterrupted block of colour.
At most one bleed per public page. §12 already states the remedy for a page that never bleeds as one edge-to-edge moment, deliberately placed, and the plural is what breaks it: a second edge-to-edge moment halves the first. imagery.md §4.4 reaches the same conclusion from the other side — two grounds in a row is wallpaper. Consecutive bleeds are forbidden, and a second one anywhere on a page is a judgement that owes a reason.
What may sit inside a bleed is narrower than what may sit in a section. Where the bleed carries a ground, imagery.md §4.4 governs: a ground sits behind a heading, a mark, or nothing, and never behind body text, because the contrast of text over a photograph cannot be computed in advance and therefore cannot be gated. A bleed carrying a flat surface token has no such restriction, because a token's contrast is measured.
Bleed is removed in print. This section's own first rule is that a document has no reason to reach the paper's edge, and a printed public page is a document. The bleed collapses to the page's own margins; the inner band is already correct and needs no print rule of its own. A component that cannot degrade to paper is a product component (component-architecture.md §8), and this one degrades by construction.
3.6 The rule that binds the bands together
A band is chosen by content role, never by available space. Two blocks of the same kind take the same band on every page and every surface. A table does not become a reading-measure table because the page around it is sparse.
A band must never be coupled to anything other than width. This is not a preference. The engine's prose container couples a heading's rhythm behaviour to the reading measure, and the consequence is measurable: of 61 structural headings across the three chapters, 2 use it. The chapters needed the rhythm at the wide band, could not have it, and each reimplemented the rhythm without the binding. §5.4 records what that cost.
4. Pauses
A pause is the interval between neighbouring content. Its length is decided by the medium. Its type is decided by the relationship, and the type is what this foundation defines.
4.1 The hierarchy
| Type | The relationship | What the reader should perceive |
|---|---|---|
| Bound | One continuous thought | No boundary at all. The two parts read as one thing |
| Related | A continuation within the same topic | A breath. The thought moves on without restarting |
| Section | A deliberate conceptual boundary | A new thought begins. The previous one is finished |
Three types, and the ordering is by increasing separation. Accepted 2026-07-25.
4.2 Bound
Not a small pause. The absence of a perceived boundary. Bound is the only pause type whose job is to prevent separation rather than to create it, and §5 treats it as its own concept because it needs enforcing rather than measuring.
4.3 Related
The default. Measured, it accounts for roughly 90% of all intervals between blocks once optical compensation is accounted for.
Related takes more than one physical distance. After plain text it is shorter; after a block that ends in a visible edge it is longer, because a bordered block already supplies a boundary and its own internal padding. The relationship has not changed. Only the perception has.
This is the clearest illustration of the chapter's first principle. Anyone maintaining this system who sees two different measured gaps and concludes there are two relationships will get the rhythm wrong.
4.4 Section
Rare by design. Measured, the longest interval accounts for roughly 7.5% of intervals: about three uses per chapter. A Section pause used often stops meaning anything, in the same way that a page of em dashes stops marking interruption. Restraint is what preserves the signal.
4.5 What the medium decides
The same three types resolve differently by surface. Screen resolves a Section pause as vertical space. Print resolves a Bound pause as a page-break refusal. A fixed canvas such as A4 cannot expand, so it resolves the hierarchy by proportion rather than by addition.
One declaration, resolved per medium. This is the currentColor contract from identity.md §4.1, applied to space: the artwork ships once and the consuming context supplies the value, so the declaration cannot drift from the medium it lands in.
4.6 What is still open
Whether optical compensation is part of the Related type or a separate correction applied to it is GRID-04. Values are no longer deferred; they are §4.7.
4.7 The values, per medium
Resolves GRID-03, 2026-08-25.
The type stays canonical and the number below is one medium's resolution of it. That is §13.1 kept rather than abandoned: a pause is still a relationship, and screen is one of the surfaces that has to express it.
| Type | Screen | Token | Measured, of 199 intervals |
|---|---|---|---|
| Bound | 32px | --fk-space-6 | the smallest editorial separation in use (§5.7, assertion 4) |
| Related | 56px | --fk-space-8 | 117 · 59% |
| Related, optically compensated | 72px | --fk-space-9 | 67 · 34% |
| Section | 96px | --fk-space-10 | 15 · 7.5% |
Nothing here was chosen. All three values were already in production, and §1 is the evidence: 199 intervals across the three rendered chapters fall on exactly these numbers with no exceptions. What was missing was never the value. It was the rule saying which relationship each one expresses, and that rule is §4.1.
The two Related numbers are one type, which is §4.3 rather than an exception to it. §1's cross-tabulation shows the split is optical: the shorter value follows plain content 114 times out of 117, the middle value follows a block with a visible edge 48 times out of 67.
The ratios matter more than the numbers. 56 : 72 : 96 is 1 : 1.29 : 1.71, so separation widens as the hierarchy climbs. §4.1 asserts that ordering; this is it made physical.
Other media resolve the same types differently, per §4.5 and §11. Print resolves Bound as a page-break refusal rather than a distance, and a fixed canvas resolves the hierarchy by proportion because it cannot expand. Those resolutions are not stated here and are not implied by these numbers.
5. Indivisibility
Three terms, one of which is the Bound pause seen from the other side. The vocabulary is not new: it already exists in the engine's print rules, where it works. It has no equivalent on screen, where it fails.
| Term | Meaning | Currently |
|---|---|---|
| Bound | May not be separated from what follows | Declared for print. Fails on screen |
| Atomic | May not be split internally | Declared for print across 25 components. Works |
| Divisible | Explicitly permitted to break | Declared for print with three named exceptions. Works |
Divisible matters as much as the other two. A system that only ever forbids splitting will strand blank space at the foot of a page. The three named exceptions in the print rules exist because a long register must be allowed to break rather than leave half a page empty.
5.1 What a bound pair is
A bound pair is a directed, adjacent, non-transitive relationship between an antecedent and a consequent, where the antecedent is incomplete without the consequent, and where the system may not place a perceptible boundary between them.
The antecedent is the member that cannot stand alone. The consequent completes it. A heading is incomplete without the content it introduces; the content is complete without the heading. That asymmetry is the whole relationship, and it is why an orphaned heading reads as broken while an orphaned paragraph does not.
The content declares the relationship. The medium decides the distance. A relationship carried only by a spacing value is not a relationship. Accepted 2026-07-25.
5.2 The seven properties every bound pair possesses
- Directed. Antecedent to consequent, never the reverse. The relationship is asymmetric because the incompleteness is asymmetric.
- Adjacent. The consequent immediately follows the antecedent. Intervening content does not weaken a binding; it means there was never a pair. Adjacency is therefore not a spacing concern but a structural one, and a violation is an authoring error rather than a rendering fault.
- Threshold-satisfied, not wholeness-satisfied. A binding is satisfied when enough of the consequent accompanies the antecedent to establish continuity, not when all of it does. The engine already works this way in print, where a paragraph's binding is satisfied by its first few lines rather than by the whole paragraph. This is what stops Bound from collapsing into Atomic.
- Non-transitive. If A binds B and B binds C, A does not bind C. Without this rule a chapter would be one unbreakable block. Chains are resolved by atomicity rather than by transitivity: the engine makes an eyebrow and its title one atomic unit, and that unit then binds forward exactly once.
- Single-parent scoped. The antecedent and the consequent share a parent. A binding may not span a container boundary, because a container boundary is itself the kind of boundary the binding forbids. An antecedent that is the last child of its parent has an unsatisfiable binding, which is a detectable error.
- Position-independent. The relationship holds wherever the pair sits within its parent. This is the property the current mechanism lacks, and its absence is the entire defect (§5.5).
- Medium-neutral. Declared once; resolved by each medium. Screen resolves it as the smallest available separation, print as a page-break refusal, a fixed canvas by proportion.
5.3 Lifecycle: what is inherited, and what terminates
| Property | Behaviour | Consequence |
|---|---|---|
| Atomicity | Inherits downward. An atomic unit's contents cannot be split | Every binding inside an atomic unit is satisfied automatically, which is why 43 componentised pairs have never failed |
| Binding | Terminates at the consequent. It does not propagate forward | A consequent that is itself an antecedent starts a new, separate binding |
| Binding | Terminates at the parent. It does not propagate outward | A binding cannot be inherited by, or exported to, a sibling container |
| Direction | Inherits into a consequent that is also an antecedent | Chains are legal as a sequence of separate pairs, never as one long pair |
Nesting is permitted; chaining is not. A bound pair may sit inside an atomic unit, and an atomic unit may be the consequent of a bound pair. What may not exist is a single binding spanning three members.
5.4 How a binding is recognised
Three tiers, in precedence order. Recognition must never be positional.
- Structural, where the pair is closed. The two parts are one unit, so there is no "between" for anything to occupy. Measured: 43 label-and-content relationships across 28 engine components, every one a sibling inside its own component, none spanning a boundary, and none has ever failed. Prefer this always.
- By kind, where the pair is open. Where the consequent is arbitrary, the antecedent binds because of what it is, not because anyone remembered to say so. A heading is an antecedent because it is a heading. The engine already does this for print, declaring the binding once for every heading level and never needing to recall it per instance.
- By declaration, for exceptions only. An instance that binds unusually, or that must not bind. Rare by design, because anything requiring authors to remember will eventually be forgotten.
Recognition by kind is the correction. The print rules work because they ask what is this. The screen rules fail because they ask where is this.
5.5 The failure this model resolves
All three rendered chapters state, in identical words, that a heading and its opening sentence are one thought and that the rhythm rule deliberately leaves that gap alone. Measured:
| Chapter | Structural headings | What encloses them | Result |
|---|---|---|---|
| Colour | 23 | 19 sit inside a <div> carrying no class or attribute at all | Binding held |
| Identity | 10 | 7 sit inside a <div> carrying no class or attribute at all | Binding held |
| Typography | 22 | none; all sit at the top level of the section body | Binding lost in all 22 |
All three chapters use the same content patterns, roughly two-thirds of headings introducing a demonstration block and one-third introducing prose. All three declare the same intent. The only thing that differs is whether an author happened to wrap the heading in an empty element.
An attribute-less <div> is currently deciding the most deliberate spatial rule in the system. No author chose that. It is the clearest possible demonstration that a relationship expressed positionally is not expressed at all, and it is why §5.2 property 6 exists.
5.6 What is bound
A judgement, not a measurement. Read from existing component structure and from the print rules, not from a stated inventory. The complete registry is GRID-06.
| Antecedent | Consequent | Recognised by |
|---|---|---|
| A heading of any level | The content it introduces | Kind |
| A label | Its panel content | Structure |
| An eyebrow | Its title | Structure, as one atomic unit |
| A caption | Its figure or specimen | Structure |
| A specimen | Its metadata | Structure |
| A statistic | Its unit or qualifier | Structure |
| A question | Its answer | Structure |
| A term | Its definition | Structure |
5.7 Validation
A binding is validatable only because it is declared. None of these assertions requires a value, so validation can exist before Version 2 supplies dimensions.
- Every antecedent has a consequent. Detects the last-child error of §5.2 property 5. Currently zero violations across the three chapters.
- Nothing intervenes between antecedent and consequent. Adjacency.
- No binding crosses a container boundary. Currently zero violations across 43 componentised pairs.
- The realised separation is the smallest available at that medium. Checkable without knowing any value, by comparing against the set of separations actually in use. This assertion alone would have caught all 22 failures.
- Every antecedent kind is registered. Coverage. This is the failure mode a declared model introduces, and it is the one worth watching.
5.8 Semantics and presentation
| Belongs to semantics | Belongs to presentation |
|---|---|
| That the relationship exists | The distance |
| Its direction | The break behaviour |
| The kind of pair | Whether there is any visible signature |
| The satisfaction threshold | How the threshold is realised in a given medium |
| Its scope |
Nothing in the left column may be inferred from the right. That is the rule the current mechanism breaks: it stores the relationship in the distance, so changing the distance changes the relationship, and moving the element changes the distance.
6. Component spacing and editorial pacing are two systems
They look alike and behave differently, and the system already declares them differently.
| Component spacing | Editorial pacing | |
|---|---|---|
| Governs | space inside a block: padding, internal gaps, offsets | space between blocks |
| Carries | construction | meaning |
| Declared | locally, per component, many times over | once, as a rule, and inherited |
| Measured | 222 uses across the lower two-thirds of the scale | 17 declarations across three steps |
Confusing them is the failure this chapter most wants to prevent. The engine offers five semantic spacing tokens for flow. Across three chapters, only one is ever used. The other four describe distance between paragraphs, which is component spacing, while what the chapters needed was distance between editorial units. Having no vocabulary for the second, all three chapters reached past the semantic layer to the raw scale and then duplicated the result three times.
That duplication is the clearest evidence that the missing thing was a vocabulary and not a value.
Whether the two unused steps at the top of the scale should be retired is GRID-07.
6.1 The base unit and the scale
Resolves GRID-21, first of two parts, 2026-08-25.
The unit is 4px. Every step is a multiple of it, and no spacing value in the system is not.
| Step | rem | px | Step | rem | px | |
|---|---|---|---|---|---|---|
space-0 | 0 | 0 | space-7 | 2.5 | 40 | |
space-1 | 0.25 | 4 | space-8 | 3.5 | 56 | |
space-2 | 0.5 | 8 | space-9 | 4.5 | 72 | |
space-3 | 0.75 | 12 | space-10 | 6 | 96 | |
space-4 | 1 | 16 | space-11 | 8 | 128 | |
space-5 | 1.5 | 24 | space-12 | 10 | 160 | |
space-6 | 2 | 32 |
Declared in rem. The px column is a reading aid, not a second declaration. A reader who enlarges their root font size enlarges the spacing with it, which is the same argument §10.1 makes for breakpoints.
The interval widens as the scale climbs: 4 up to space-4, then 8, then 16, then 24, then 32. That is not decoration. It is the behaviour §4.1 requires of pauses, which is why the pause values fall on this scale rather than beside it.
A correction to the implementation's own comment. tokens.css labels space-2 "base unit". Eight is the commonest step, not the unit: space-1 and space-3 are 4 and 12, and neither is a multiple of 8. The unit is 4, and this chapter is the authority that says so.
6.2 The three regions, and why the scale has twelve steps
The division §6 measures is not a description of habit. It is the scale's structure.
| Region | Steps | Range | Carries | Measured |
|---|---|---|---|---|
| Component | 1 to 7 | 4 to 40px | construction: padding, internal gaps, offsets | 222 uses, the lower two-thirds |
| Editorial | 8 to 10 | 56 to 96px | meaning: the three pause types of §4 | 17 declarations, three steps |
| Unallocated | 11 to 12 | 128, 160px | nothing | zero uses in any chapter |
This is what GRID-21 asked for: the steps justified against §4's pause types. Steps 8, 9 and 10 are the pause values of §4.7 and are not available for component construction. Steps 1 to 7 are component construction and may not pace editorial content. §6's warning becomes enforceable rather than advisory, because the boundary now has a number.
Whether steps 11 and 12 are retired, reserved or left is GRID-07, unchanged. The region model does not decide it. It explains why they are empty: the editorial range ends at 96 and component construction never reaches 128.
6.3 Radii
Resolves GRID-21, second of two parts, 2026-08-25.
| Token | Value | Applies to |
|---|---|---|
radius-none | 0 | every surface not named below |
radius-sm | 2px | tags, chips |
radius-md | 4px | inputs, small panels |
radius-lg | 6px | cards, large panels. The maximum |
radius-pill | 999px | compact metadata tags only |
Radius is a function of the element's own size. A chip takes 2 and a card takes 6 because softening should read as the same amount of softening at every size, and a constant radius does not: 2px on a card is invisible, 6px on a chip is a blob.
Why there is a maximum, and why it is 6. Past roughly 6px a corner stops reading as a softened panel and starts reading as an application widget. Every surface this system produces is a document, including the ones that happen to be interactive, so the ceiling is the point where a document would start to look like an app. A judgement, not a measurement, and stated as one.
radius-pill is exempt from that ceiling because it is not softening. At 999px the shape is the point, and it is confined to compact metadata tags so it stays a shape rather than becoming a button language.
7. Density
Density is how much a page carries per unit of vertical space. It is a property of the page's purpose, not of its content volume.
Three modes are implied by the surfaces this system serves. A judgement, not a measurement: the modes are inferred from the page-type inventory in WEBSITE-ARCHITECTURE-REVIEW.md §6, not from an existing rule.
| Mode | Where | Character |
|---|---|---|
| Document | Long-form chapters | Dense. Every interval earns its place. Sparse would waste the reader's scroll |
| Editorial | Practice, principles, evolution | Medium. Reading dominates, with room for a figure or an aside |
| Expressive | Landing, hero, closing | Sparse. One idea per screen. The only mode that may bleed |
Density selects among the pause types; it does not add new ones. An expressive page uses Section pauses more often and Related pauses less. It does not acquire a fourth type, and it does not stretch the existing ones arbitrarily. Whether density selects from one scale or requires two is GRID-09.
8. Columns, nesting and collapse
Columns
A column count is a consequence, not an instruction. Where a count is named, it must be honoured: a two-column arrangement renders two columns.
This is currently untrue. Measured, a base grid renders three columns in fifteen places across the three chapters and five in one, and a class named for two columns renders three at the content width. One chapter replaced it with an explicit arrangement for exactly this reason. Names that describe intent while arithmetic decides the outcome are worse than no names, because they are trusted.
Collapse
Collapse order is declared, never emergent. When a multi-column arrangement narrows, the sequence in which it becomes single-column is a decision about which content leads, and that decision belongs to the author.
A column stops being useful before it stops fitting. The variant cards in the Identity chapter were reduced from three columns to two because each card carries a lead and three editorial rows, and needs a reading measure rather than a catalogue slot. Fitting is not the test. Reading is.
Nesting
Measured, layout nesting settles at exactly four levels in all three chapters, and the deepest node is a button in every case. Three independently built documents converged on the same ceiling.
Treat four as an observation and a warning rather than a limit. Whether it becomes an enforced constraint is GRID-10.
9. Alignment
Alignment is where this foundation most often defers to another.
- Optical alignment of large display type is owned by
typography.md§7, which specifies the correction and the size above which it applies. This chapter does not restate it. Which foundation owns the application of that correction isGRID-11. - Cancelling the trailing space that tracked uppercase adds is specified in
typography.md§7. Ownership isGRID-11. - Figures align to cap height rather than x-height, because both families use cap-height lining figures. Specified in
typography.md§7. - Records of unequal length align at their top edge, not at their last line. A collection of records is a set of separate things, and aligning their ends implies a continuity they do not have. A judgement.
- Clear space around the identity is owned by
identity.md§3.3 and is applied at use. This chapter does not override it, and whether it composes with the page edge or is satisfied independently isGRID-12.
10. Responsive behaviour
A relationship does not change with the viewport. Only its resolution does.
That is why this foundation could be written before the responsive type work is finished. A Section pause means a new thought on the narrowest phone and on the widest display alike. What changes is how much space says so.
Two rules follow, and one is inherited:
- Spatial resolution steps at named breakpoints rather than interpolating fluidly. Inherited from
typography.mdTYPE-02, which rules out fluid interpolation because tracking is a property of rendered size. Grid does not get to disagree, because a spatial system that interpolated while type stepped would drift out of alignment between the two. - Bands collapse toward the page edge, in order. The reading measure is the last band to yield, because the reading measure is the only band whose width is derived from legibility rather than from composition.
10.1 The breakpoints
Resolves GRID-13, 2026-08-25.
Four named spatial breakpoints, declared in rem.
| Name | rem | px at a 16px root | Already stepped at by |
|---|---|---|---|
sm | 30 | 480 | the engine's typography.css and layout.css |
md | 40 | 640 | the engine's components.css, the publication's layout.css |
lg | 48 | 768 | the engine's typography.css and layout.css, the publication's shell |
xl | 64 | 1024 | the engine's typography.css, the publication's components |
Nothing is invented here. 480, 768 and 1024 are the ladder the engine's typography.css already steps type at, which is the ladder TYPE-02 exists to formalise. 640 is the most-used single breakpoint in the publication layer. Naming them moves no pixel.
In rem rather than px, for the reason §10 gives for stepping at all. A px breakpoint cannot see a reader who has enlarged their root font size: their type grows, their layout does not, and the two drift apart at exactly the moment legibility depends on them agreeing. typography.md holds that tracking is a property of rendered size, and a breakpoint blind to rendered size cannot honour it.
This unblocks TYPE-02 rather than pre-empting it. GRID-13 recorded the dependency the other way round, breakpoints waiting on the responsive type table. That was backwards: the ladder is a fact about the canvas, and the type table declares what type does at each rung. Type now has rungs to step at.
10.2 A component may collapse at its own threshold, and that is not a breakpoint
§8 holds that a column stops being useful before it stops fitting, and that reading rather than fitting is the test. That is a judgement about one component's content. It does not belong on a canvas ladder.
So there are two kinds of threshold, and they are not interchangeable. A spatial breakpoint governs what the canvas does: the page edge, the bands, the pauses. A collapse threshold governs what one component does, is declared with that component, and needs no entry in §10.1.
Measured 2026-08-25, the implementation uses twelve distinct thresholds beyond the four named above, almost all of them in component and shell stylesheets. Under this rule most are legitimate rather than stray.
One thing is a defect rather than a threshold, and it is recorded rather than fixed. The same rung is written in two units in different layers: 768px and 48rem, 640px and 40rem, 1024px and 64rem are each one breakpoint expressed twice, and a 55.999rem maximum pairs with a 56rem minimum. Correcting them changes rendered output already issued as PDF, which is a rendering change under AGENTS.md §6 and wants a superseding decision rather than a quiet edit, exactly as §13.7 holds for the spacing scale. Recorded as GRID-22.
10.3 The one exemption: a value derived from the canvas
Resolves PLAT-08, 2026-08-26.
Spatial resolution steps at named breakpoints, except where a value is derived from the canvas rather than from type. §2's page edge is that value, and at present it is the only one.
This is a correction to §10's scope, not a retreat from its rule. §10 exists so that space cannot drift out of alignment with type, and type steps because tracking is a property of rendered size (typography.md TYPE-02). A value computed from the viewport has nothing to drift against: there is no type metric it must stay in register with, because it was never derived from one. The rule was right and its scope was one word too wide.
PLAT-08 recorded the contradiction honestly and it was real. §2 described a clamp and §10 forbade one, and the implementation ran fluid under a labelled judgement rather than picking a side quietly. This section is that side being picked.
What stepping the edge would have cost, measured before deciding. A stepped edge lags the proportion by up to 13.2px at 1023px wide, and again just before 1280: it runs tight, then jumps. And the measured ceiling is reached at 1280, so it would need a fifth rung at 80rem that the type ladder has no use for, adding a breakpoint to the system for the benefit of one value. The exemption costs a clause. Stepping cost a breakpoint, a jump at four widths, and made the calmest element on the page behave like the busiest.
The exemption is narrow by construction. A value qualifies only if it is computed from the canvas and from no type metric. Anything derived from the reading measure, the scale or the tracking curve steps, because all three are type.
11. Print and other canvases
Print is not a degraded screen. It is a canvas where vertical space cannot expand, so the hierarchy resolves by proportion and by page-break behaviour rather than by addition.
- Print forces the light render. Owned by
colour.md§6.4. - The indivisibility vocabulary is already implemented for print and works there (§5). Print is the proving ground: an orphaned heading is visible in a way a collapsed margin is not.
- Canvas-relative floors for type are owned by
typography.md§8, which governs surfaces beyond the website by percentage of canvas width.
Whether this foundation owns the A4 and social canvases or only screen is GRID-14.
12. Prohibitions
Each is a real failure mode with a specific consequence, not a generic caution.
| Prohibited | What breaks | Instead |
|---|---|---|
| A spacing value as the sole carrier of a relationship | The relationship survives only while the document structure does. Measured: 22 silent failures | Declare the relationship (§5.2) |
| Coupling a binding to a width or measure | Authors who need a different width lose the binding with it. Measured: 2 of 61 adoption | Keep bindings independent of bands (§3.6) |
| A fourth pause type | Three types cover 199 measured intervals. A fourth would have to mean something the system has never needed to say | Use the existing three, or make the case in DECISIONS.md |
| Reading a measured difference as a semantic difference | Two numbers already express one relationship. Treating them as two will produce a rhythm that looks right and reads wrong | Correlate against the preceding block's edge (§4.3) |
| A Section pause used frequently | It stops signalling a new thought. Measured at about three uses per chapter | Reserve it. Restraint is what preserves the signal |
| Bleed in a documentation chapter | A document that reaches the paper's edge has confused itself with a poster | Scope bleed to public pages (§3.5) |
| Never bleeding on a public page | The page reads as a PDF in a browser | One edge-to-edge moment, deliberately placed |
| Shrinking content that must hold its size | The label stays truthful and the artefact becomes false | A rail (§3.4) |
| A column count that the arithmetic overrides | The name is trusted and wrong. Measured in sixteen places | Honour named counts, or stop naming them |
| Emergent collapse order | Which content leads at narrow widths becomes an accident | Declare it |
| Tightening the page edge to fit more in | Trades calm for density, which is the wrong trade for this system | Reduce the content |
| Using the spacing scale for both construction and meaning without distinction | The two systems become indistinguishable and pacing stops being legible. Measured: four of five semantic tokens abandoned | Keep them separate (§6) |
| A band chosen by available space | The same content takes different widths on different pages, and the system stops feeling like one family | Choose by content role (§3.6) |
13. Design decisions
13.1 Why pauses are types rather than values
Because the measurement forced it. Three intervals looked like three relationships until each was correlated against the block preceding it, at which point two of them turned out to be one relationship optically compensated for a visible edge. A system defined by values would have encoded a distinction that does not exist, and would have been wrong in about a third of its intervals.
13.2 Why the page edge is placed before anything else
Because it is the only spatial decision that cannot be made locally. Every other measurement in this chapter is relative to something: a measure to legibility, a pause to a relationship, a band to a content role. The edge is relative to the canvas alone, so it is decided first and everything is placed inside it.
13.3 Why bleed exists at all, given documents never use it
Because the absence of any edge-to-edge moment is what makes a web page read as a document. The chapters are documents and should read as documents. The website is not, and must not.
This is the only capability in this foundation that exists solely for the public surface, and scoping it explicitly is what keeps a chapter from acquiring it by accident.
13.4 Why a binding must not be coupled to a width
Because it already was, and the cost is measured. The engine binds heading rhythm inside a container that also caps the reading measure. Structural headings need the wide band. Sixty-one headings, two adoptions, and three chapters that reimplemented the rhythm and lost the binding. Coupling did not merely reduce use. It inverted the outcome: the container designed to protect the relationship is the reason the relationship is unprotected.
13.5 Why there is no column system in this chapter
Because the evidence does not support one. Three chapters, built independently, produced no case where content needed to span a defined fraction of a modular grid. What they needed was a small set of widths keyed to content role, and they arrived at four of them without a specification. A twelve-column grid would be an answer to a question this system has not asked.
13.6 Why values are absent from version 1
Because a chapter whose first principle is that distance belongs to the medium cannot open by fixing distances. Publishing the vocabulary first also makes the values falsifiable when they arrive: a proposed value can be checked against the relationship it claims to express. The reverse is not true.
A judgement, not a measurement. The risk is that a foundation without values is harder to implement against, and §14 recorded that risk as an open item rather than resolving it.
The judgement held. When the values arrived in version 4 they were checked against the relationships this chapter had already named, and each one passed: 199 measured intervals resolved onto exactly the three pause types of §4.1, and the scale's regions fell out of §6's own measurement. Values written first could not have been tested that way, because there would have been nothing to test them against.
13.7 Why the spacing scale is not redefined here
Because it underpins report output already validated and issued as PDF. Changing it is a rendering change under AGENTS.md §6 and wants a superseding decision, not a quiet edit. The two unused steps are recorded as GRID-07 rather than removed.
14. Open items
Numbered so they can be cited from outside this chapter. Resolved items stay, struck through, with the date and what closed them.
14.1 GRID-01: The page edge has no dimensions · RESOLVED 2026-08-26
GRID-01: The page edge has no dimensionsIts philosophy was accepted and its behaviour measured, but the floor, the ceiling and the proportion were not specified. §2 now specifies them: 5% of viewport width between a 20px floor and a 64px ceiling, clamp(1.25rem, 5vw, 4rem). Ratified from the measurement at eleven viewports rather than chosen, and the publication's provisional adoption under SITE-02 was correct, so nothing renders differently.
Resolved together with PLAT-08 (§10.3), because the value could not be stated without first deciding whether the edge steps or interpolates.
14.2 GRID-02: The bleed contract is undefined · RESOLVED 2026-09-01
GRID-02: The bleed contract is undefinedScope was already settled: public pages only. The two open questions were how contained content nests inside a bleed section without losing alignment, and whether a bleed section participates in vertical rhythm. §3.5 answers both.
Nesting: a bleed is two elements, an outer that carries the surface and an inner that is an ordinary band, so alignment is preserved by construction rather than recomputed. Rhythm: a bleed takes the pause its relationship calls for and gets none of its own, with its internal padding held distinct from that pause.
The structure was ratified rather than chosen. The masthead and the footer have been built this way since Milestone 2 and shell.css had already recorded the reason. What was missing was the rule, not the mechanism, which is why this resolution adds no new primitive and no new token.
14.3 GRID-03: Pause values are undefined · RESOLVED 2026-08-25
GRID-03: Pause values are undefinedThree types were named with no distances attached, for the reason given in §13.6, and it was the largest single gap in this chapter. §4.7 attaches them: Bound 32px, Related 56px, Related compensated 72px, Section 96px, each the screen resolution of a type rather than a redefinition of it. All three were already realised across 199 measured intervals, so the values were ratified rather than chosen.
14.4 GRID-04: Is optical compensation part of a type, or applied to it? · Open
Measured, the Related pause takes a longer distance after a block with a visible edge. Unresolved: whether that is the type's own behaviour or a correction layered on top. The answer changes how many values version 2 declares.
A second part, also unresolved: roughly 20% of measured intervals are misclassified, because each chapter keeps its own hand-written list of which blocks count as closed. A structural definition would remove the list.
14.5 GRID-05: How a bound pair is enforced on screen · RESOLVED 2026-07-25
GRID-05: How a bound pair is enforced on screenResolved. §5 now carries the canonical model: a bound pair is a directed, adjacent, non-transitive relationship between an antecedent and a consequent, with seven required properties, a lifecycle, a three-tier recognition order in which recognition is by kind and never by position, five value-free validation assertions, and a semantics-versus-presentation split. Recorded in DECISIONS.md.
The 22 measured failures were classified rather than fixed, and all 22 resolve once recognition is by kind. No individual correction is required, which is the strongest evidence the model is right. They remain in place as legacy, per the precedent set on 2026-07-25 for em dashes: reviewed as prose is next revised, not corrected mechanically.
Retained here rather than deleted so a reader can see what the chapter did not know and when that changed.
14.6 GRID-06: The complete inventory of bound pairs · Open
Six are named in §5.5 by reading existing component structure. Whether that list is complete is unknown.
14.7 GRID-07: Two spacing steps are never used · Open
The largest two steps of the scale appear in no chapter. Retire, reserve, or leave. Touches issued output (§13.7).
14.8 GRID-08: Does this chapter absorb spacing.md and replace layout.md? · RESOLVED 2026-08-25
GRID-08: Does this chapter absorb spacing.md and replace layout.md?Yes to both. Decided by Fernando on 2026-08-25. GRID-FOUNDATION-BRIEF.md had recommended absorbing spacing.md on the grounds that a scale and its meanings cannot sensibly be specified apart, and the same argument applies to layout.md: a grid whose measurements live in another file is a grid that can drift from them.
Both files were empty skeletons, every value cell blank, while carrying Governs statements claiming authority over the base unit, the scale, radii, breakpoints, containers and composition. Two chapters asserting ownership of values neither held is worse than one chapter that says plainly which values are still open. They are removed, and Git holds what they said.
This does not supply the values. They remain open, and they are tracked rather than lost:
| Absorbed from | Now open as |
|---|---|
| Base unit, scale, radii | GRID-21 below |
| Application rules, section rhythm | GRID-03, pause values |
| Breakpoints, containers | GRID-13, breakpoint values |
| Page edge, bleed | GRID-01, GRID-02 |
| Print and fixed canvases | GRID-14, canvas ownership |
The engine ships a working spacing scale and breakpoint set today. Nothing in this chapter yet authorises them, and consolidating makes that gap easier to see rather than harder, which is the point.
14.9 GRID-09: One scale with a density selector, or two scales? · Open
§7 assumes one. Unverified.
14.10 GRID-10: Is nesting depth four a constraint or an observation? · Open
Three chapters converged on it. Recorded as a warning, not enforced.
14.11 GRID-11: Alignment ownership between Typography and Grid · Open
The optical inset for large display type and the trailing-space cancellation for tracked uppercase are specified in typography.md §7. Which foundation owns their application is unresolved.
14.12 GRID-12: Does the identity's clear space compose with the page edge? · Open
identity.md §3.3 specifies clear space applied at use. Whether the page edge satisfies it, adds to it, or is independent of it is unresolved.
14.13 GRID-13: Breakpoint values are undefined · RESOLVED 2026-08-25
GRID-13: Breakpoint values are undefinedDeferred deliberately, on a stated dependency on typography.md TYPE-02. The dependency ran the other way: §10.1 names four rungs, 30 / 40 / 48 / 64rem, taken from the ladder the engine's typography.css already steps at, so TYPE-02 now has rungs to declare type against. §10.2 separates a spatial breakpoint from a component's own collapse threshold, and records the unit inconsistency as GRID-22.
14.14 GRID-14: Does this foundation own non-screen canvases? · Open
Print behaviour is inherited from colour.md and the engine. Whether A4 and social canvases fall under this chapter or under typography.md §8 is unresolved.
14.15 GRID-15: Does this chapter get a rendered chapter? · Open
Two of three mature foundations have one. A spatial system is arguably the least judgeable of all from markdown, since it can be demonstrated but not described. Recommended, not decided.
14.16 GRID-16: Should the six unpromoted engine primitives be promoted here? · Open
FOUNDATION-ARCHITECTURE-REVIEW.md Part 9 identifies six primitives proven by independent double invention. They are now duplicated a third time. Promotion is spatial work, but it may belong to the engine rather than to this foundation.
14.17 GRID-17: What satisfies the threshold for a non-prose consequent? · Open
§5.2 property 3 establishes that a binding is satisfied by enough of the consequent rather than all of it, and the engine already answers this for prose by counting lines. No answer exists for a consequent that is a container. Measured, two-thirds of the headings in the three chapters introduce a demonstration block rather than prose, so this is the majority case and it is unanswered. Candidates include the container's first child, its label, or its full extent where it is also atomic.
14.18 GRID-18: Is caption-and-figure a distinct kind of pair? · Open
Of the 22 classified failures, 15 have a demonstration block as their consequent, where the heading functions as that block's caption rather than as an introduction to prose. A judgement, not a measurement: this may be a second kind of pair with a stronger binding and a different threshold, or the same kind with a different consequent. GRID-17 cannot be answered without deciding this.
14.19 GRID-19: Where does recognition-by-kind live? · Open
§5.4 establishes that an antecedent binds because of what it is. It does not establish which layer performs that recognition. The repository already contains three pipelines that derive structure from a canonical source and fail on drift, which is the closest existing precedent. Whether recognition belongs to the engine, to a build step, or to both is an engineering decision that the model deliberately leaves open.
14.20 GRID-20: The antecedent registry · Open
§5.6 lists eight antecedent kinds read from existing structure. §5.7 assertion 5 requires every kind to be registered, because coverage is the failure mode a declared model introduces. No registry exists.
14.21 GRID-21: The base unit, the scale and the radii are undefined · RESOLVED 2026-08-25
GRID-21: The base unit, the scale and the radii are undefinedInherited from spacing.md when it was absorbed on 2026-08-25, and stated here because nothing else covers it. spacing.md declared a base unit and a nine-step scale and filled in neither, and named a radii table with no rows.
What ships today, and what no chapter authorises, read from the engine's tokens.css:
| Token | rem | px | Token | rem | px | |
|---|---|---|---|---|---|---|
space-1 | 0.25 | 4 | space-7 | 2.5 | 40 | |
space-2 | 0.5 | 8 | space-8 | 3.5 | 56 | |
space-3 | 0.75 | 12 | space-9 | 4.5 | 72 | |
space-4 | 1 | 16 | space-10 | 6 | 96 | |
space-5 | 1.5 | 24 | space-11 | 8 | 128 | |
space-6 | 2 | 32 | space-12 | 10 | 160 |
Twelve steps on a 4px base. The interval is 4px to space-4, then 8px, then 16px, then 24px, then 32px: it widens as the scale climbs, which is the behaviour §4 describes for pauses but nothing states as a rule. Radii are none 0, sm 2px, md 4px, lg 6px and pill 999px.
These values work and are in production. They were a measured implementation without a written rule, which is the inversion of how every other value in this system arrived.
Settled in §6.1, §6.2 and §6.3, on the three terms this item set. The unit is 4px, not the 8 the implementation's own comment claims. The scale's twelve steps are justified as three regions, component construction at steps 1 to 7, the editorial pauses of §4 at steps 8 to 10, and nothing at 11 and 12, which is why GRID-07 found two steps unused. The radii are tied to the rule that radius is a function of an element's own size, with a ceiling at 6px where a document would start to read as an application.
14.22 GRID-22: One breakpoint, written in two units · Open
Opened by §10.2 on 2026-08-25. 768px and 48rem, 640px and 40rem, 1024px and 64rem each express one rung twice, in different layers, and a 55.999rem maximum pairs with a 56rem minimum. §10.1 declares rem canonical. Correcting the px forms changes rendered output already issued as PDF, so it wants a superseding decision rather than a quiet edit (§13.7, AGENTS.md §6).
15. In closing
Three pause types, five bands, one page edge, and no measurements. The absence is the chapter: a pause is a relationship and the medium decides the distance, so a version that opened with numbers would have contradicted its own first principle on its first page.
The practical consequence is that spatial questions are answered by asking what the content is. How wide should this be? Whatever its role takes. How far apart? Whatever the relationship means. When may a heading be separated from what follows? Never, and not because of a distance but because it is a heading.
The chapter's sharpest lesson is a failure it documents rather than a rule it states. Twenty-two relationships broke silently because they were carried by a spacing value instead of being declared, and the only difference between the chapters that held and the chapter that did not was whether an author had wrapped a heading in an empty element. A relationship carried only by a distance is not a relationship.
Next: Identity System, the one chapter in this system that is approved.
16. Provenance
- Measured 2026-07-25 in Chromium via Playwright against the three rendered chapters: 199 intervals between top-level blocks; the correlation between each interval and whether the preceding block carried a visible border or fill; page edge, content width and reading measure at eleven viewports from 320 to 1600; grid column counts as rendered; layout nesting depth; active scroll rails; blocks exceeding the reading measure; heading-to-content intervals correlated with document position; navigation height at each viewport.
- Counted by script across the three chapters' markup: spacing-step references by step and by chapter; semantic flow-token references; structural headings inside and outside the engine's prose container.
- Source of the philosophy:
DECISIONS.md, 2026-07-25, recording Q1 to Q4. Q4 was investigated separately and returned an architectural model rather than a technique. - Reconciled from:
GRID-FOUNDATION-BRIEF.md, which carries the full 44-problem inventory and the measurements in their raw form. Nothing in this chapter contradicts it; several of its open questions are closed here by the accepted decisions. - A judgement, not a measurement: that the page edge's proportional behaviour was intentional (§2); the three density modes (§7); the alignment rule for records of unequal length (§9); the inventory of bound pairs (§5.5); every classification of an observed behaviour as intentional, accidental or artefact; and the decision to defer values (§13.6). The measurements are reproducible. The interpretations are mine and are marked as such throughout.
- Values deliberately absent. No dimension, breakpoint, column count or spacing value is specified. This is the substance of version 1, not an omission from it (§13.6), and §14 records what version 2 must supply.
- Not carried forward: nothing. This is the first spatial chapter.
spacing.mdandlayout.mdexist as empty skeletons and are not superseded by this file (GRID-08). - Status: Ready for review — not approved. Passing review is evidence of readiness, not approval. Only Fernando approves.