How it was made · site 409 · Generative Assets
A coolroom argument, drawn in watts and dimensioned in millimetres.
Setpoint Coldrooms is a fictional Bibra Lake refrigeration business. Its customer is a butcher whose room will not hold 2 °C in February and who has been told he needs a bigger machine. The page has one job: turn “how big a coolroom do I need” into a booked site measure — with the heat load, the plant duty and the price already drawn on the screen, including the two answers that are worth money to refuse.
The signature
The Load — a box drawn to scale beside the heat leaving it.
One SVG scene, three parts on a shared baseline. On the left the room in true-scale section: the panel thickness is a real dimension, the ambient temperature is a dashed line above the box, the setpoint is a dashed line inside it, and the difference between them is dimensioned down the left-hand margin. On the right the heat-load stack — five bands in watts, each labelled with its own figure: transmission through the panel, infiltration through the door, product pull-down, lights, evaporator fans — with the ten per cent design margin drawn as a hatched extension up to the plant duty and the condensing unit’s capacity struck across the column above it. Underneath, a fixed rule from 0 to 36 kW carrying every machine in the catalogue, with this room marked on it and the same room the other way round marked beside it.
The argument the page is making is in the colour: the boldest thing on the page is the heat, not the cold. You are not buying cold. You are buying the removal of heat, and the drawing shows you exactly how much of it there is and where it gets in.
The scene is laid out in real CSS pixels, not in a fixed viewBox
A fixed viewBox scaled to the container renders every label at whatever size the ratio happens to give — at 375 px wide that is around 5 px. So the scene measures its container on every draw and lays out in real pixels: the smallest label on the drawing is 9.5 px at every width from 375 to 1200, at 1× and at 2×, asserted in the harness. Below 520 px of scene width the room and the stack stack vertically; above it they sit side by side.
The drawing is assembled synchronously and the entrance runs from the loop
An SVG scene assembled after the animation loop starts can receive no paint invalidation in headless Chrome, so the whole thing is built in one synchronous pass and the entrance choreography is driven from a single requestAnimationFrame loop that raises three group opacities on a 170 ms stagger, with a 1,700 ms settle-timer backstop. It runs on a cold-load flag only. A resize never re-enters it — taking a clipped screenshot changes device metrics and therefore fires the resize handler, and a page that replays its entrance on resize photographs as an empty box while every assert stays green.
The delta clamp on that loop is dt = min(max(now - last, 0) / 1000, 0.05). Clamped at zero as well as capped: the rAF timestamp is the frame’s vsync time and can precede the performance.now() captured when the loop was scheduled, which makes the first frame’s delta negative.
This signature settles once and then stops, on purpose
After the entrance the scene is a still drawing. That is the correct behaviour for a technical drawing — and it makes the page read as dead to a passive two-frame pixel diff and to a DOM-mutation counter. The page therefore proves it is alive the only honest way: drive a control and diff. The harness does exactly that, and window.__coolroom.settled is the gate everything else waits on. Nothing in this build is gated on elapsed seconds.
The model
Integer safety was the whole engineering problem.
The envelope of a box is 2LW + 2h(L + W). With the four internal heights this page offers — 2,400 / 2,700 / 3,000 / 3,600 mm — that expression is not an integer, and it is multiplied straight into every watt figure and every panel price. The first draft of this model put a float into 155,778 of its 259,634 priced cells. The fix is to hold the envelope in tenths of a square metre and the volume in tenths of a cubic metre, with the height converted to whole decimetres first:
area10 = 20·L·W + 2·(H_mm / 100)·(L + W) // envelope, tenths of m²
vol10 = L·W·(H_mm / 100) // volume, tenths of m³
dT = ambient − setpoint // whole degrees
transmission = floor(U · area10 · dT / 10000) // U in mW/m²K
infiltration = floor(openings · vol10 · dT · 12 / 10000)
product = floor(kg · Wh_per_kg / 24)
lights = floor(L · W · 8)
fans = floor((transmission + infiltration + product) · 5 / 100)
heat load = the sum of the five
with margin = floor(heat load · 110 / 100) // the +10% is floored into whole watts
plant duty = ceil(with margin · 24 / run hours)
price = ceil(area10 / 10) · panel rate // you buy whole panels
+ door (3,400, or 5,200 heated for sub-zero)
+ insulated floor and heater mat on any sub-zero room (96/m² + 3,800)
+ the condensing unit
+ commissioning and refrigerant, ARC-licensed (2,450)
+ a temperature data logger (1,180)
total = max(price, 17,000)
Every field the price function returns is asserted with Number.isInteger() before it leaves, and the state probe exposes an integerSafe flag that the harness reads on every driven cell. The independent oracle enumerated the full 672,000-cell control grid — 259,634 priced, 75,600 panel-illegal, 336,000 blast-refusal, 766 past one system — and found zero non-integer fields.
The unit catalogue
| Condensing unit | Fitted | Condensing unit | Fitted |
|---|---|---|---|
| 2 kW | $6,400 | 12 kW | $20,400 |
| 3 kW | $7,800 | 18 kW | $28,800 |
| 5 kW | $10,600 | 25 kW | $38,500 |
| 8 kW | $14,900 | 35 kW | $52,000 |
The page fits the smallest unit in the catalogue at or above the duty. Past 35 kW it stops and says so.
What the model produces
| Cell | Heat load | Plant duty | Machine | Total |
|---|---|---|---|---|
| Rest — 4.0 × 3.0 × 2.4 m chiller at +2, warehouse at 32, 100 mm, 40 openings, 250 kg | 1,148 W | 1,893 W | 2 kW | $21,492 |
| The same box as a −18 freezer, everything else held | 2,633 W | 3,862 W | 5 kW | $32,444 |
| Cheapest — 2 × 2 × 2.4 m cellar at +12, air-conditioned, 75 mm, 10 openings, nothing warm | 145 W | 239 W | 2 kW | $17,000 subtotal $16,734 |
| Dearest — 10 × 6 × 3.6 m freezer at −18, air-conditioned, 200 mm, 80 openings, 2,000 kg | 19,952 W | 29,263 W | 35 kW | $120,894 |
| Largest duty inside one system — 6 × 6 × 2.4 m hard freeze at −25, west wall, 200 mm, 160 openings, 2,000 kg | 23,852 W | 34,983 W | 35 kW | $95,906 |
The cheapest cell the estimator can produce is $17,000, and that is exactly the “from” floor printed against coolroom supply and install in the services grid. The freezer-room floor of $23,306 and the plant-replacement floor of $6,400 were derived the same way — the cheapest sub-zero cell anywhere on the grid, and the cheapest unit in the catalogue. A grid floor the calculator cannot reach is a number that argues with the page.
Where the oracle and the spec disagreed
Four disagreements, all reported, none resolved quietly.
The page was built against an independently reimplemented oracle — the model written a second time from the brief’s prose, not copied from its code. Where the two disagreed, the page ships the reading that reproduces the pinned endpoints, and the disagreement is written down here rather than tidied away on either side.
1. The duty formula as written does not produce the duty as pinned
The brief writes the plant duty inline as ceil(load × 1.1 × 24 / runHours). On the rest cell that evaluates to 1,895 W, not the pinned 1,893 W — because 1148 × 1.1 is 1262.8000000000002 in IEEE doubles and the expression never returns to whole watts. The enumerated model floors the ten per cent margin into whole watts first (floor(load × 110 / 100) = 1262) and then stretches over the running hours. Shipped: the floor-first form, which reproduces every pinned endpoint and is the only one of the two that satisfies the brief’s own integer-safety rule. The inline formula is the defect.
2. The “dearest” worked example does not pin every control its answer depends on
It is written as “10 × 6 × 3.6 m freezer at −18, 200 mm panel” and names no ambient, no door openings and no product. Those coordinates are not free. The dearest priced cell is at air-conditioned ambient, 80 openings and 2,000 kg a day — and the same room at 160 openings is not dearer, it is a refusal: the duty crosses 35 kW and there is no single system to price. A hotter ambient does the same thing. Shipped as enumerated; reported because a worked example must state every control its answer depends on.
3. The smallest drawn total is not the cheapest cell
The brief argues the fixed stack axis by saying “the smallest drawn total (the cheapest cell, 239 W) occupies 0.7 % of the axis”. The cheapest cell is a price extremum; the smallest drawn quantity is a duty extremum, and they are different cells. The cheapest cell takes the 75 mm panel and draws 239 W; the smallest duty anywhere on the grid is 135 W — the same 2 × 2 m cellar with the 200 mm panel, which costs more. That is 0.375 % of a 36,000 W axis, not 0.7 %. Same shape as the clamp-versus-extremum lesson: a minimum charge makes the cheapest total a tie across many cells, and says nothing about the smallest of any other quantity.
4. A single fixed 0–36,000 W axis cannot carry five labelled bands
This one is a composition disagreement, and it is the largest change in the build. The brief pins the stack to a fixed 0–36,000 W axis and, separately, pins the stack to five labelled bands. Those two pins are not simultaneously satisfiable. On that axis the rest state’s 1,893 W plant duty occupies 5.3 % of the column; on a 320 px column its five bands measure 3.4, 3.7, 1.8, 0.9 and 0.4 pixels — three of the five under two pixels — and the comparison the drawing exists to make, the plant duty against the machine’s 2,000 W capacity, is a gap of one pixel. The pinned 6 px minimum band would then be drawing four bands at a size the arithmetic never asked for, which is a bar chart of nothing. The drawing would be unreadable in exactly the place it is meant to argue.
Shipped: the fixed axis is kept and moved to the job it is actually good at. The stack is view-fit, so five bands and the duty-versus-capacity gap are always legible; the fixed 0–36,000 W rule is drawn beneath it as the machine ladder, carrying all eight condensing units with this room marked on it — and, right beside it, the same room the other way round. The brief’s stated reason for a fixed axis was “to compare a chiller against a freezer at a glance”, and the ladder does that better than the stack could: at rest it shows a chiller at 1,893 W (5.3 % along the rule) and the identical box at −18 at 3,862 W (10.7 %), side by side on one honest scale, which is the decision most customers are actually making. On the shipped view-fit frame the same five bands measure 49, 53, 27, 12 and 6 px and the duty-to-capacity gap is 14 px — every band clears the pinned 6 px floor on its own arithmetic rather than by being propped up to it.
The view-fit rule is deterministic and stated on the page: the axis top is the smallest value from a fixed ladder (1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8 × 10k) at or above max(load, duty, min(capacity, ceil(duty × 8 / 5))) × 23 / 20. That last term is what keeps a 2 kW machine from flattening a 145 W cellar — where the smallest machine we fit is more than 1.6× the room’s duty, its line clamps to the top of the frame with an arrow and reads “N× this room’s duty”, which is a truer statement than a bar at 3 % height. The brief’s minimum 6 px band rule is shipped as pinned.
And one correction to a real standard, which outranks the spec
The brief names “AS/NZS 5149”. The Australian/New Zealand adoption of the ISO refrigerating-systems safety standard is designated AS/NZS ISO 5149 (parts 1–4) — the ISO is part of the number, not a description of it. The page ships the correct designation, because a claim about a real standard is not an arithmetic disagreement to be reproduced.
The same applies one level down. The brief describes “the ARC RTA licence required to handle refrigerant”. Those are two different instruments: a Refrigerant Trading Authorisation is held by the business and is what lets it acquire, possess and dispose of refrigerant, while an individual technician holds a Refrigerant Handling Licence. Both are administered by the Australian Refrigeration Council under the Commonwealth ozone-protection and synthetic-greenhouse-gas regulations. The page carries both, correctly: the trust strip shows the business’s RTA placeholder and says technicians hold their own handling licences.
The Food Standards Code 3.2.2 figure in the brief is right, and is named as the Code’s and not ours wherever the setpoint appears: potentially hazardous food is to be held at or below 5 °C. The page never claims to deliver a food-safety outcome.
The refusals
Two answers this page will not price, and one note that recommends something we don’t sell.
A demonstration that only says yes is a brochure. Both refusals are reachable from the controls, both are enumerated, and neither prints a dollar figure anywhere in the estimator — not in the badge, not in the ledger, not in the drawing, not in the hero line.
Blast chilling — 336,000 enumerated cells
The mode chip multiplies the whole grid. Choosing it greys the room, removes the stack and the ladder entirely, and replaces them with the refusal: “That’s a blast chiller, not a coolroom. Pulling hot product down inside ninety minutes takes several times the plant a storage room needs, and the airflow matters as much as the machine. We build them — but we quote them on site with your product and your trays in front of us, not from a web page.” The badge carries the short form at every width, because a refusal that needs a wide viewport to be legible is not a refusal.
Past one system — 766 enumerated cells
When the duty crosses 35 kW there is no unit in the catalogue. Here the page keeps drawing the watts — it knows them, and they are the point — and refuses only the price: the region above the duty is hatched in the refusal red and reads “past every machine”, the ladder marker sits hard against the right end of the 36 kW rule, and the ledger prints the load breakdown with no total under it.
The door note — 172,790 firing cells
The page’s own FAQ says a room that will not hold in February is usually the door, not the machine. So the ledger says it arithmetically, wherever the arithmetic is true: when infiltration exceeds transmission, a note names both figures and recommends a strip curtain and a closer that actually closes — and then says plainly that it is not on the list. It fires in 172,790 priced cells and is absent in 86,844, and the harness asserts both branches across the whole door-openings axis rather than only where it shows. It recommends nothing this page sells, and nothing this page can even select, so there is no cell where its recommendation is illegal.
The forced control
The panel is forced up by two different controls, and it does not restore until both let go.
Every panel below the minimum for the current setpoint and the current ambient is disabled with an on-page reason. The minimum is the larger of the two, so the same 100 mm cap can arrive from either direction — and the interesting state is the partial unwind, where one constraint lifts and the other does not.
| # | Change | Panel | Memory | What happens |
|---|---|---|---|---|
| 1 | Chiller at +2, indoors air-conditioned | 75 mm | — | legal, nothing forced |
| 2 | Setpoint → −18 | 100 mm | 75 | FORCED; 75 disabled with its reason |
| 3 | Ambient → outdoor west wall | 100 mm | 75 | the same cap, now imposed by a second control |
| 4 | Setpoint → back to +2 | 100 mm | 75 | PARTIAL UNWIND — re-evaluates and holds; it does not restore |
| 5 | Ambient → back to air-conditioned | 75 mm | — | both constraints gone, 75 RESTORES, memory spent |
| 6 | Setpoint → −25 | 150 mm | 75 | FORCED to 150; 100 is not enough and is disabled |
The restore memory is cleared by any explicit choice the user makes to the panel while it is free — pick 200 mm during a forced state and unwinding leaves you on 200, not back on 75. Both halves are driven and asserted.
The disable reason is a claim about a set, so it is written per cause
A single reason string covering every disabled cell would end up arguing with the trade. Three are shipped, and the binding constraint picks which one shows:
- −18 bars 75 mm: “75 mm won’t hold minus eighteen, and the floor will sweat and lift. It’s not a price decision.” (Where an outdoor wall bars it too, the string says so as well.)
- −25 bars 100 mm: “100 mm won’t hold minus twenty-five. Below minus twenty the panel is doing structural work as well as insulating, and 150 is where that starts.”
- An outdoor wall bars 75 mm: “75 mm on an outdoor wall in a Perth summer sweats on the outside face and the panel delaminates from the skin in. It’s not a price decision.”
The ambient chip is price-neutral, and the page says exactly when
Moving from an outdoor shaded wall to a west wall, with the panel and the machine both holding, changes the total in zero of 3,099 comparable vectors — but it moves the heat load in every one of them. The chip is not inert; it decides whether you cross a line, and the page says so in its own words: “a hotter wall doesn’t cost you anything until it pushes you up a panel or up a machine. Then it costs you a lot, and the drawing shows you where the line is.”
Palette
A stainless panel, a frosted evaporator, and the heat coming through the wall.
Every ratio below was computed with WCAG arithmetic from these exact hexes, against every ground each token is actually used on — including the fills inside the drawing, which is where a contrast run usually goes wrong. The rule the palette runs on: the accent draws lines, the ink carries words.
Scene fills, and the labels that cross them
| Fill | Where | Body ink on it |
|---|---|---|
| #DCE3E4 | Room interior | 13.61:1 |
| #C9D2D3 | The panel itself, and the cartons on the floor | 11.5:1 |
| #E7E2DA | Ambient air, the scene ground | 13.73:1 |
| #E09A3C | The load bands, at 1.0 / 0.88 / 0.76 / 0.64 / 0.52 alpha | 7.46 → 10.03:1 |
| #9EC2CE | The evaporator and the door leaf | 9.32:1 |
| #DDE3E3 / #C3D6DC | The service-area map: land and sea | 13.63 / 11.77:1 |
Two labels in the drawing cross a line or a fill — the ambient temperature over its own dashed rule, and the setpoint over its rule inside the room. Both are set in the body ink with a ground-coloured halo via paint-order: stroke, which is the same treatment every label on the service-area map gets. The band alphas only ever lighten the ground under a dark ink, so the measured ratio improves down the ramp rather than degrading.
Type
Space Grotesk 700/500 for display — a technical grotesque with enough character to carry a number-led page without reading as a spreadsheet. Source Sans 3 400/500/600 as the workhorse, at 17 px on mobile and 18 px on desktop. Space Mono for every watt, degree, millimetre and dollar, which is what makes a column of figures scannable and keeps a changing readout from reflowing under your eye.
The typographic bravery is the setpoint chips: the sign gets its own optical weight so that −18 reads as a different kind of number from +2, not merely a smaller one. That distinction is the whole commercial decision on this page.
Conversion decisions
Why the page is shaped like this.
- The drawing is the hero, not below it. At 1200 px the scene and its price badge both sit inside the first 750 px — which is the thumbnail frame, and the thumbnail is the commercial argument. The rest total appears as a real text node in the hero copy and on the badge, so the argument survives a crop.
- The badge is on the artwork, and never over the drawn subject. Above 640 px of viewport it sits upper-left in the ambient air above the room, and the scene reserves its measured height rather than assuming an aspect ratio. At 640 and below it docks directly beneath the drawing and switches to the pinned short forms. The rectangle-intersection assert runs at 375, 900, 1000, 1100 and 1200, at 1× and 2×.
- Above the fold at 375: business name, the value proposition naming coolrooms, freezer rooms and the Perth metro, the registration and insurance line, and both calls to action — the last of them ending at 611 px, inside the shortest phone viewport. The masthead clears by 31 px between the wordmark’s right edge and the call button’s left.
- The sticky bar is judged by what it does, not what it says. Below 641 px it owns a
tel:link and an in-page anchor to the quote form, both 48 px tall. The copy is in the trade’s voice — “Call the workshop”, “Book the measure” — not in a conversion word list. - The form asks six things and no more: name, phone, suburb, business type, what goes in it, and anything else. “What goes in it” is the question a refrigeration business actually needs answered, and it is the one that makes the callback useful. The confirmation is local and designed, it says plainly that nothing was sent, and it carries the drawn scenario forward — the room you configured arrives with the enquiry, which turns a demo interaction into a warm lead.
- Every field pattern is proved by driving it. Chrome compiles
patternas a v-flag regex, which rejects literal specials that older flavours accepted — an unescaped-,(,)or/inside a character class throws at validation time and leaves the field silently validating nothing. The harness feeds each pattern a deliberately invalid value and asserts the rejection. - The honesty line travels with the setpoint. Wherever a temperature appears, so does “we size the plant and we log the temperature. Whether the food is safe is your food-safety program, and a coolroom is one line in it.”
Local SEO
What we’d ship for the real business — and why none of it is live here.
Setpoint is fictional, so this page emits no business-shaped structured data at all. Its live JSON-LD is restricted to WebPage, CreativeWork, WebSite, BreadcrumbList and ListItem, and the WebPage node names the page a demonstration. Putting a fictional business into a real index is dishonest markup, and the aggregate rating is the worst offender because it is the one search engines render.
For a real client this is the block that would go live, with their verified details, their Google Business Profile URL, and reviews pulled from wherever they genuinely live:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HVACBusiness",
"@id": "https://setpointcoldrooms.com.au/#business",
"name": "Setpoint Coldrooms",
"description": "Coolroom and freezer room design, supply, installation and service across the Perth metropolitan area.",
"url": "https://setpointcoldrooms.com.au/",
"telephone": "+61 8 XXXX XXXX",
"priceRange": "$$",
"image": "https://setpointcoldrooms.com.au/img/workshop.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "Unit X, XX Example Road",
"addressLocality": "Bibra Lake",
"addressRegion": "WA",
"postalCode": "6163",
"addressCountry": "AU"
},
"geo": { "@type": "GeoCoordinates", "latitude": -32.0966, "longitude": 115.8195 },
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "06:30", "closes": "17:00" },
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday", "opens": "07:00", "closes": "12:00" }
],
"areaServed": [
{ "@type": "City", "name": "Perth" },
{ "@type": "AdministrativeArea", "name": "City of Cockburn" },
{ "@type": "AdministrativeArea", "name": "City of Stirling" }
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Refrigeration services",
"itemListElement": [
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Coolroom supply and installation" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Freezer room supply and installation" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Condensing unit replacement" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Breakdown service and repairs" } }
]
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9", "reviewCount": "68"
},
"review": [
{ "@type": "Review",
"author": { "@type": "Person", "name": "A real, named, consenting customer" },
"reviewRating": { "@type": "Rating", "ratingValue": "5" },
"datePublished": "2026-02-14",
"reviewBody": "Their words, not ours." }
],
"sameAs": [
"https://www.google.com/maps/place/?q=place_id:REAL_PLACE_ID",
"https://www.facebook.com/realprofile"
]
}
</script>
Alongside it we would ship a Service node per services-grid entry, an FAQPage block matching the six questions verbatim, and a BreadcrumbList — and we would keep the aggregate rating in step with the real review count rather than letting it drift, because a stale rating is the fastest way to lose a rich result.
The three passes
What each pass found, and what changed because of it.
Every pass drove the page rather than reading it: the form submitted empty and filled, every chip and both steppers exercised, the full six-step forced-panel chain walked, both refusals driven, and one rapid-fire pass firing nine control clicks in a single evaluate with no settle between them.
Pass 1 — Craft
- The plant duty and the machine wrote over each other. At rest the duty is 1,893 W and the machine is 2,000 W — thirteen pixels apart on the stack — and both labels were placed above their own lines. The duty label now sits below its rule and the machine label above its own, and the five band labels are spread beneath a floor computed from the duty label’s position rather than from the top of the column.
- Two dimensions shared a baseline. The panel-thickness dimension and the room-length dimension both landed on the same line and rendered as a single run reading “100 mm panel 4.0 m”. The panel dimension moved to the top wall.
- A five-pixel dimension read as the letter H. With no extension lines, two witnesses 5 px apart joined by a 5 px rule is a capital H sitting in the drawing. The dimension line now runs 11 px past each witness.
- The ladder ran off the right edge at 375. The unit label and the last tick overlapped, and the caption was cut mid-word. The last tick now reads “35 kW” end-anchored and the caption has a pinned narrow form.
- The hero said “the room drawn beside this” — false at 375, where the room is below. Changed to a width-agnostic line.
- At 1000 px the hero was a single column with roughly half the fold empty beside it, and the scene stacked vertically to 761 px. The scene’s side-by-side threshold dropped to 520 px of scene width and the two-column hero now starts at 1000, which brought the scene to 505 px and filled the fold.
- The registration line wrapped “public / liability”; restructured to three clean lines.
Pass 2 — Depth
- The second-read detail is the door note. The FAQ argues that a room that will not hold is usually the door; the ledger now proves it arithmetically wherever it is true, naming both figures and recommending a strip curtain and a closer — then saying that neither is on the list. It fires in 172,790 priced cells, is absent in 86,844, and the harness drives the whole door-openings axis asserting both branches.
- The counterfactual marker. The machine ladder carries a second, hollow marker: the same room the other way round. Set a chiller and it shows you the freezer; set a freezer and it shows you the chiller. That is the comparison the fixed axis was pinned to make, and it is now the one thing the fixed axis does.
- The cartons are real. The kilograms-a-day chip draws up to five cartons on the floor of the room, and the zero state draws an empty room with the pull-down band struck through.
- “107 W in hand” moved off the drawing and into the ledger row for the machine, where it reads as part of the sizing decision rather than as a third label competing for the same 13 px.
Pass 3 — Hardening
- 375 px: masthead clears by 31 px; no horizontal overflow at any tested width; the smallest label in the drawing is 9.5 px at every width and at 2×; every scene label sits inside the drawing’s own box.
- Mid widths: the badge-versus-subject rectangle assert runs at 900, 1000 and 1100 as well as 375 and 1200, and at device pixel ratio 2, because a badge fixed in pixels over a scene sized as a fraction of its width only collides in the middle of the range.
- Reduced motion settles the scene immediately with every group opaque and all 38 labels rendered — a settled frame, never a blank one.
- Rapid fire: nine control clicks dispatched in one evaluate with no settle between them. Every handler bumps the animation token before it swaps state, so an in-flight entrance cannot outlive the scene data it was drawing. Zero console errors, and the page lands on the oracle’s total for wherever it ended up.
- Comes to rest visible: after driving the controls and then leaving the page entirely alone, every animated group is asserted opaque. A liveness probe proves a page moves; this proves it stops somewhere you can read.
- One ornament removed: the price badge had a two-pixel offset shadow — a soft edge on a page whose whole argument is drawn in hairlines. It is gone. The door swing arc went with it in Pass 1; it was reaching 100 px into the load stack.
- The prose was re-derived, not re-read. Every number in body copy was recomputed from the shipped model: the running-cost FAQ (a 2 kW unit at a COP near 2.4 draws about 830 W; sixteen hours a day is 4,865 kWh a year, about $1,557 at 32 c/kWh, quoted as “about 4,900 kWh” and “around $1,560”), the freezer floor of $23,306, and the chiller-to-freezer delta of 1,969 W and $10,952.
- Both pages were scanned for a word character followed by
=and a typographic double quote before committing. Twenty-one of those shipped in a guide last wave, every one of them silently killing a class rule while every assert stayed green. Zero here.
Verification
What was actually checked.
- An independent oracle, reimplemented from the brief’s prose rather than its code: 84 assertions over the full 672,000-cell grid, covering the enumerated counts, both refusal populations, the minimum-charge binding set, every worked figure, the whole forced-panel chain, the ambient-neutrality claim under its stated held-equal condition, the door note’s firing set, and integer safety on every field of every priced cell.
- 174 headless assertions against the running page, every one of them comparing the live state probe to an oracle recomputed inside the harness — never to the page’s own function.
- Screenshots at 375, 1000 and 1200 at native resolution, looked at. Four of the seven Pass 1 defects above are invisible to any assertion suite: they are compositions, and only pixels prove a composition.
What would change for the real client
Their photographs of their own installs, their reviews pulled live from their Google Business Profile, and their unit catalogue and panel rates behind the estimator instead of ours. The integration that matters for a coolroom business is simPRO — the asset register and the service-contract scheduling, because this trade lives on the annual service agreement and the breakdown response, not on the install. An enquiry from this form would create a lead against the site’s asset record, the site measure would be a scheduled job with the drawing attached, and the commissioning sheet and twelve months of logged temperature would hang off the asset rather than off a filing cabinet. If they run Simpro Premium the same form can raise the job directly; if they run Tradify or AroFlo the lead goes in as an enquiry and the tech picks it up on the phone in the van.