Figures · every number on this estate, with its arithmetic
Every figure,
and the command that proves it.
This estate’s recurring failure has always been the same one: a page asserting a number its own data cannot support. The hero once said forty-seven while the register said fifty-two; a guide claimed 671 rooms while serving 315. The fix was never a better proofread.
So every figure the site deals now carries cmd — a
command you can paste at the root of the tree that recomputes it from
the shipped data — and, where the data came from somewhere
else, src, the upstream it came from. The handful that
genuinely cannot be recomputed carry prose instead,
saying so in plain words. tools/mkfigures.py --check
runs all of them and fails on the first disagreement.
The table
The number, the arithmetic, the source.
One row per figure, in the order the band deals them. Command is run from the root of this tree and prints the figure and nothing else; source names where the data came from, and is a link when the upstream has a page to send you to. A figure with no command says why it has none.
146 figures shown · 141 carry a command that recomputes them · 47 name an upstream · 5 are stated rather than counted, and say why
141
Properties
Live sites and applications across four practices, each with its own domain.
python3 -c 'import json,re;d=json.loads(re.search(r"\[[\s\S]*\]",open("assets/js/portfolio-data.js").read()).group(0));print(sum(1 for p in d if not p.get("stripOnly")))'54
Live-data builds
Desks whose own code reads an upstream host — counted off the tree by tools/mkwires.py, listed one at a time at /wires/, and including the front door, which reads the Treasury itself.
python3 -c 'import json;w=open("wires/assets/js/wires.js").read();i=w.index("window.LABS_WIRES = ")+20;print(json.loads(w[i:w.rindex("}")+1])["counts"]["desks"])'181
Upstream sources
Distinct hosts the estate’s own JavaScript and PHP read — 121 asked straight from your browser, 60 through a relay on this origin, every one named on the wires desk.
python3 -c 'import json;w=open("wires/assets/js/wires.js").read();i=w.index("window.LABS_WIRES = ")+20;print(json.loads(w[i:w.rindex("}")+1])["counts"]["hosts"])'167
Assets in the book
The full register behind every live build — 14 flagships, 29 active builds and 124 strategic holdings, conservatively valued at $4.8M+.
python3 -c 'import json;t=open("assets/js/investor-data.js").read();print(len(json.loads(t[t.index("[",t.index("window.LABS_ASSETS")):t.rindex("]")+1])))'4
Practices
Live intelligence, markets and capital, consumer brands, and the studio tooling underneath them — the four the homepage names and the portfolio band filters on.
grep -c 'class="practice__n"' index.html2
Editions
Paper and dark, both drawn and both shipped. The site remembers which one you read and keeps you in it.
ls -1 index.html indexdark.html | wc -lTwo is the shape of the estate rather than a tally, so the command counts what the shape produces: the homepage ships as exactly two files, one per edition, and so does almost every page behind it.
0
JavaScript frameworks
Not one page on the estate loads React, Vue, Angular, Ember, Backbone or jQuery — plain markup, one stylesheet and a script, which is why the pages open when you click them. The one framework still here is a CSS one: eight older pages pull the Tailwind CDN at runtime and the News Hub’s classic console links a purged Tailwind build, and the command below does not count those because it does not claim to.
grep -rlE "react(-dom)?(\.production|\.development)?\.min\.js|vue(\.global|\.runtime)?\.(min\.)?js|angular(\.min)?\.js|ember\.js|backbone(\.min)?\.js|jquery(-[0-9.]+)?(\.min)?\.js" --include='*.html' --include='*.php' --include='*.js' . | wc -l19
Desks on a clock
Desks that name their own re-read cadence, in a REFRESH_MS or a POLL_MS — from ten seconds on the flight board to thirty minutes on the recall register. There is no estate-wide interval; the ninety seconds this band used to promise was the News Hub’s and the News Hub’s alone.
grep -rlE "\b(REFRESH_MS|POLL_MS)\s*=" --include='*.js' . | wc -l100%
Owned outright
Domain, code and operations on every property. Nothing here is licensed in, rented, or run by somebody else.
Ownership is a fact about registrar accounts and contracts, not a property of any file in this tree, so no command can produce it. It is stated plainly rather than computed, and the investor room is where the register behind it is set out.
$4.8M+
Book value
A conservative valuation across the active properties and the strategic holdings sitting beside them.
A valuation is a judgement, not a count. The investor room sets out the basis — flagships priced as products, active builds at partial credit, holdings at renewal cost plus comparables — and the plus sign marks the floor of a range. Nothing in this tree sums to it, so nothing here pretends to.
1
Operator
Designed, written, shipped and run in one house — which is why the answer to how something works is never “we would have to ask the vendor”.
grep -c '^ Founder' humans.txt1,512
Proved in the city register
Of the 1,748 rooms on the New York table, 1,512 carry a permit number from the city’s own inspection register; the rest are carried on their own published source, and the table says which is which.
python3 -c 'import json;print(sum(1 for r in json.load(open("nyc/restaurants.json"))["rows"] if r.get("camis")))'257,698,037,760
Pieces of sheet music
Five composers, twelve keys and every 32-bit seed — each one engraved, played and named on demand, and not one of them stored anywhere.
python3 -c 'import re;g=open("composer/js/generate.js").read();m=open("composer/js/model.js").read();print(len(re.findall(r"^ [a-z]+: +\{ fn:",g,re.M))*len(re.findall(r"^ [A-G][#b]?m?: +\{ vex:",m,re.M))*4294967296)'5,018
Tracks in the archive
Across the five era collections — 961 from the sixties, 1,021 from the seventies, 974 from the eighties, 1,105 from the nineties and 957 of techno.
python3 -c 'import glob,json,re;print(sum(len(json.loads(re.search(r"=(\[.*\]);?\s*$",open(f).read().strip(),re.S).group(1))) for f in sorted(glob.glob("song/*.llc/assets/data/*.js"))))'8,618
Languages registered
Every language-level languoid in Glottolog 5.3, shipped inside the page and searchable by name, ISO 639-3 code or glottocode.
python3 -c 'import json;t=open("tongues/assets/js/languages.js").read();print(len(json.loads(t[t.index("{"):].rstrip().rstrip(";"))["rows"]))'8,610
Jokes, metered
Forty-one categories filled to two hundred apiece, plus the 410 long-form stories — 1,142 of the whole written by hand, and every one scored by a meter that reads the English.
python3 -c 'import re;s=open("joke/script.js").read();print(len(re.findall(r"^ id: \"",s,re.M))*int(re.search(r"var TARGET = (\d+)",s).group(1))+len(re.findall(r"^ \"",open("joke/stories.js").read(),re.M)))'8,486
Padel facilities mapped
Places you can turn up and play, in 108 countries: 8,210 clustered out of OpenStreetMap at 150 metres, and 276 added by hand where OpenStreetMap carries nothing and a club’s own page printed a street address.
python3 -c 'import json;print(len(json.load(open("padel/facilities.json"))["rows"]))'254
Plates in the archive
The Orange Crush capsule series and the full product line — five shelves of light and nine of subject, every plate re-inked for three paper stocks, with a motto engine to composite and export.
grep -c "src: 'images/" pill/index.html496
Subway stations
Every station on the New York board, with the next trains both ways read off the MTA’s own countdown feed and decoded in the page.
python3 -c 'import json;t=open("transit/assets/js/stations.js").read();print(len(json.loads(t[t.index("["):t.rindex("]")+1])))'75
River gauges
Hand-verified USGS gauges, each with seven days of discharge and stage and the official flood stages ruled across the chart.
grep -c '^ {id:"' rivers/assets/js/gauges.js100
Clocks on the wall
A hundred cities in the register — Asia 25, the Americas 24, Europe 21, Africa 16, six Antarctic stations, Pacific 4, Australia 3, Atlantic 1 — computed from the browser’s own IANA zones and tinted by the sun’s real altitude.
sed -n '/^var REGISTER=\[/,/^\];/p' clockwork/assets/js/app.js | grep -c "^ {id:'"10
Treasury tenors drawn
The yield curve on the rates desk is drawn from ten maturities, three months to thirty years, today’s over last year’s, off the Treasury’s own daily series.
python3 -c 'import re;print(len(re.findall(r"\[\"BC_", re.search(r"var TENORS=\[(.*?)\];",open("money/assets/js/app.js").read().replace(chr(39),chr(34)),re.S).group(1))))'42
Cities on the weather board
Plus any city you board by name — forty-eight hours of temperature drawn and seven days barred by the page itself.
sed -n '/^var WORLD = \[/,/^\];/p' weather/assets/js/app.js | grep -c "{n:'"15
Countries on the grid
Pick one and the desk draws its last forty-eight hours of electricity, fuel by fuel, from the operators’ own numbers.
sed -n '/^var COUNTRIES = \[/,/^\];/p' grid/assets/js/app.js | grep -o "\['[a-z][a-z]', '" | wc -l65,160
Probability cells
NOAA’s OVATION aurora forecast painted whole — 360 by 181 cells over a hand-drawn equirectangular graticule, every five minutes.
python3 -c 'import re;m=re.search(r"new Uint8Array\((\d+)\*(\d+)\)",open("aurora/assets/js/app.js").read());print(int(m.group(1))*int(m.group(2)))'20M
Newspaper pages
The Library of Congress’s American newspaper archive, 1789 to 1963, searchable a word at a time from the Press Room.
This is the Library’s own published total for Chronicling America, not a count of anything shipped here — the archive is theirs and the page reads it live. Nothing in this tree holds twenty million pages to count, so the figure is attributed rather than computed; the two figures beside it, 51 state outlines and 174 years, are counted from the page.
1,410
Diamond listings
Across thirteen markets and six departments — 705 of them on 47th Street itself, the rest from Antwerp to Surat.
grep -o '"name":' jewelry/assets/js/businesses.js | wc -l464
Places in the city books
New York 146, Los Angeles 132, Miami 103 and Milwaukee 83 — every record with its own notes and every picture framed and credited.
cat nyc/index.html la/index.html miami/index.html mke/index.html | grep -o 'data-card="' | wc -l108
Countries with courts
The padel register reaches every one of them, clustered out of raw OpenStreetMap objects into places you can turn up and play.
python3 -c 'import json;r=json.load(open("padel/facilities.json"))["rows"];print(len({x[3] for x in r if x[3]}))'49
Generative algorithms
In the geometry lab alone, across twenty-one shapes, with a seed system, shareable presets and recording at 60 Mbps.
sed -n '/^ const algorithms = \[/,/^ \];/p' dmt.php | grep -c "draw: draw"8
Particle engines
A cloud, gravity wells, waves, a web, a flock, a flow, a crystal and fourteen strings — one field, eight ways to move it.
sed -n '/^var MODES = {/,/^};/p' nexus/js/nexus.js | grep -cE "^[a-z]+: \{"50
Versions of one illusion
The rotation illusion built fifty ways, each a generative variant whose perceived spin flips when your eye picks a different depth.
python3 -c 'import re;print(len(re.search(r"const versionNames=\[(.*?)\];",open("mindsphere/assets/js/lab.js").read()).group(1).split(",")))'12
Legends to beat
Twelve opponents at the chessboard, from Capablanca at depth three to Kasparov and Morphy at depth four, with the engine searching to depth eight on hard.
sed -n '/^ const levels = \[/,/^ \];/p' chess/chess-app.js | grep -c "^ {id:"15
Synthesis engines
Five drum voices, nine melodic engines and a sampler, with ninety patches, nine styles the dice roll inside, and twenty keys that remake the roll.
python3 -c 'import re;t=open("songbuilder/js/song.js").read();print(len(re.findall(r"\x27[a-z]+\x27",re.search(r"SB\.KIND_IDS = \[(.*?)\]",t,re.S).group(1))))'10
Instrument tunings
Real string targets for ten instruments — four guitar tunings, two basses, ukulele, violin, mandolin and cello — with A4 adjustable from 415 to 466 Hz for anyone playing with an old orchestra.
sed -n '/var INSTRUMENTS = \[/,/^ \];/p' tuner/js/app.js | grep -c "s: \["41
Kinds of joke
Categories in the vault, across twenty languages — 1,142 written by hand, 410 of them long-form stories.
grep -c '^ id: "' joke/script.js17
Feeds asked at once
The federated search queries every one of them in parallel and prints what each took to answer, so a slow source is visible.
sed -n '/^ var FEEDS = {/,/^ };/p' search/assets/js/app.js | grep -cE "^ [a-z]+: *function"5
Federal registers
FDA food, drug and device enforcement, USDA FSIS notices and CPSC recalls, merged newest first and stamped with the agency.
sed -n '/^var SOURCES=\[/,/^\];/p' recall/assets/js/app.js | grep -c "id:'"16
Wikipedias on the scope
A rolling sixty-second oscilloscope across sixteen language editions, human edits in ink and bot-flagged edits dimmer.
sed -n '/^var WIKIS=\[/,/^\];/p' pulse/assets/js/app.js | grep -o "{k:'" | wc -l636
Free books and courses
On eleven shelves in the Stacks — IT books, conference talks and full courses, every one of them free to read or watch.
grep -o 'u:"' 007/assets/js/library-data.js | wc -l24
Books dealt at a time
From the Open Library’s twenty-million-work catalogue, re-dealt on the button, with an access filter that says what reads free.
python3 -c 'import re;print(re.search(r"var PAGE = (\d+);",open("books/assets/js/app.js").read()).group(1))'100
Seats in a chat room
On one seven-character code, with any file to a gigabyte in and out, voice notes, polls and sealed rooms.
python3 -c 'import re;print(re.search(r"room\.max \|\| (\d+)",open("chat/chat-app.js").read()).group(1))'72h
The longest a link lives
A shared file expires between one and seventy-two hours, with an optional password. Only the link mapping is kept here.
python3 -c 'import re;print(max(int(x) for x in re.findall(r"\x27(\d+)h\x27",re.search(r"var EXPIRY_TEXT = \{(.*?)\};",open("fileshare/assets/js/app.js").read()).group(1))))'8
Invisible-text detectors
Reading a pasted string character by character for smuggled payloads, lookalike letters, bidi controls and hidden HTML.
sed -n '/^var DETS = \[/,/^\];/p' watermark/assets/js/app.js | grep -c "id: '"54
Premium .IM holdings
Single-word and single-character identity names held in reserve — fifty-four of the 167 assets in the book sit under the Isle of Man registry.
python3 -c 'import json;t=open("assets/js/investor-data.js").read();d=json.loads(t[t.index("[",t.index("window.LABS_ASSETS")):t.rindex("]")+1]);print(sum(1 for a in d if a["name"].endswith(".im")))'29
Effects on the deck
In the browser DAW: filters, distortion, bit crush, chorus, delay, reverb, the EVH jet swoosh, a stereo widener, scratch, brake and three tape stops — twenty-nine named keys.
grep -o "showFXDetails('[a-z0-9_]*')" audio.html | sort -u | wc -l48.1
Semitones a second
The exact rate the turntable brake falls at — a 0.36-second time constant is 48.1 semitones a second, measured in a render rather than tuned by ear.
python3 -c 'import re,math;t=float(re.search(r"var TAU_DOWN = ([\d.]+);",open("laband/js/deck.js").read()).group(1));print(round(12/(t*math.log(2)),1))'3
Stocks in the plate archive
Every one of the 254 plates re-inked for three paper stocks, with a density map per plate rather than one fitted curve.
sed -n '/const STOCKS = {/,/^ };/p' pill/index.html | grep -c "matte:"6
Continents on the sweep
The global test times a real request into six continents from your own browser, seventy-five named sites in all. Antarctica is the one left off, because there is nothing there to ask.
python3 -c 'import re;print(len(re.findall(r"name:",re.search(r"var CONTINENTS = \[(.*?)\n \];",open("labluxa/assets/js/app.js").read(),re.S).group(1))))'13
Rooms
Every property in the book is filed in exactly one of them, and the crawl, the drawer and the roster all read the same list.
python3 -c 'import json,re;d=json.loads(re.search(r"\[[\s\S]*\]",open("assets/js/portfolio-data.js").read()).group(0));print(len([p for p in d if p.get("stripRoom")]))'143
Doors behind the doors
Properties listed inside the rooms, each with a line saying what it does — filed without a single one landing in two places or none.
python3 -c 'import json,re;d=json.loads(re.search(r"\[[\s\S]*\]",open("assets/js/portfolio-data.js").read()).group(0));r={p["label"].lower() for p in d if p.get("stripRoom")};print(sum(1 for p in d if p.get("stripFold") in r and not p.get("stripRoom")))'24
The biggest room
The fullest room in the book. Which room that is moves as the register grows, so the cell asks the register rather than remembering an answer.
python3 -c 'import json,re,collections;d=json.loads(re.search(r"\[[\s\S]*\]",open("assets/js/portfolio-data.js").read()).group(0));r={p["label"].lower() for p in d if p.get("stripRoom")};c=collections.Counter(p["stripFold"] for p in d if p.get("stripFold") in r and not p.get("stripRoom"));print(max(c.values()))'6
The smallest room
The shortest shelf in the book — and short is not small, which is why it gets a room and not a footer.
python3 -c 'import json,re,collections;d=json.loads(re.search(r"\[[\s\S]*\]",open("assets/js/portfolio-data.js").read()).group(0));r={p["label"].lower() for p in d if p.get("stripRoom")};c=collections.Counter(p["stripFold"] for p in d if p.get("stripFold") in r and not p.get("stripRoom"));print(min(c.values()))'24
Instruments in one room
Earth alone points this many instruments at the same planet: the air over a city, the storms crossing it, the ground moving under it, the water at its edges and the power being burned.
python3 -c 'import json,re,collections;d=json.loads(re.search(r"\[[\s\S]*\]",open("assets/js/portfolio-data.js").read()).group(0));c=collections.Counter(p.get("stripFold") for p in d if not p.get("stripRoom"));print(c["earth"])'224
Drawers carrying the map
Every page on the estate with a hamburger lists all thirteen rooms, generated from one file — so the map is the same map whichever door you came in by.
grep -rl 'ROOMS:START' --include='*.html' --include='*.php' . | wc -lThis one moves every time the estate gains a page, which is why it is the figure most likely to fail --check on a build that added one. That is the tool working: re-run it and the number follows the tree.
$40.03T
The national debt
$40,032,876,505,819.31 as the Treasury filed it on 21 August 2026 — read live from its own Debt to the Penny series, not from a ticker that estimates between filings.
The only figure on the band that is fetched rather than counted. The answer lives at the Treasury and moves every business day, so no command over this tree can produce it; the number above is the last reading taken by hand, dated in the note, and site.js replaces it with today’s the moment the figure is dealt.
72
Voices on file
The sneaker desk keeps a register of 72 named accounts that move the culture, each with a handle, a beat and a written description.
grep -c 'handle: "@' sneaker/assets/js/sneaker-data.js151
Account links
Every one of those 72 voices carries its real profile links — 151 of them across Instagram, YouTube, X, TikTok and LinkedIn.
grep -o 'type:"' sneaker/assets/js/sneaker-data.js | wc -l50
Releases on file
The release book holds 50 shoes, each with its retail price, a resale low and high, and a hype score.
grep -c 'hype:' sneaker/assets/js/sneaker-data.js41
Drawn plates
Only 9 of the 50 shoes have a real photograph, so the other 41 get a drawn typographic plate rather than a stock picture standing in for a shoe.
python3 -c 't=open("sneaker/assets/js/sneaker-data.js").read();print(t.count("hype:")-t.count("localImg:"))'14
Silhouette rules
The drawn plate names the shoe’s silhouette by reading it out of the shoe’s own name, using 14 pattern rules covering AJ, Dunk, AF1, Air Max, Kobe, Yeezy, Samba and more.
sed -n '/var SIL = \[/,/^ \];/p' sneaker/assets/js/app.js | grep -c '^ \[/'24
Pairs quoted
Two opposed ticker rails run the season’s reading — 24 pairs in all, each with a price, a percentage move and a link to its listing.
grep -c 'market: "' sneaker/assets/js/sneaker-data.js13
Months of drops
The release calendar spans 13 distinct months, from November 2025 through November 2026.
grep -o 'release: "[0-9]\{4\}-[0-9]\{2\}' sneaker/assets/js/sneaker-data.js | sort -u | wc -l19
Can editions
The water brand ships 19 numbered can editions, each with its own name, tagline, accent colour and written description.
grep -c 'src: "images/v[0-9]' liquid/assets/js/liquid-data.js10
Glass bottles
Alongside the cans sit 10 premium glass editions, each addable to a working in-browser cart at a fixed $4.99.
grep -c 'src: "images/glass/' liquid/assets/js/liquid-data.js16,252
Padel courts mapped
The padel atlas holds 8,486 clubs in 108 countries, and between them they carry 16,252 individual courts.
python3 -c 'import json;print(sum(x[7] for x in json.load(open("padel/facilities.json"))["rows"]))'1,748
NYC restaurants on file
THE TABLE lists 1,748 New York restaurants across all five boroughs and 213 named neighbourhoods.
python3 -c 'import json;print(len(json.load(open("nyc/restaurants.json"))["rows"]))'524
Michelin-starred rooms
Yum’s world collection holds 524 Michelin-starred restaurants — 256 with one star, 129 with two and 139 with three.
python3 -c 'import json;print(sum(1 for r in json.load(open("yum/restaurants.json")) if r["michelin_stars"]))'518
Kosher rooms registered
A second, separate register of 518 kosher restaurants in 100 towns across 27 countries sits beside the main collection.
python3 -c 'import json;print(len(json.load(open("yum/kosher.json"))))'24
Display typefaces
The Logo Lab sets a wordmark in any of 24 display families, each requested at the single weight that actually exists on Google Fonts rather than a browser-synthesised bold.
python3 -c 'import re;t=open("dina/assets/js/type.js").read();i=t.index("var FONTS = [");print(len(re.findall(r"^ F\(",t[i:t.index(chr(10)+" ];",i)],re.M)))'39
Filter looks
Multipics carries 39 named colour looks — VINTAGE, FROST, MATRIX, TOXIC, VOID and the rest — any of which can be laid over a multi-layer photographic composite.
python3 -c 'import re;t=open("multi/multi.php").read();i=t.index("const normalFilters = [");print(len([x for x in re.findall(r"name: \"([^\"]+)\"",t[i:t.index("];",i)]) if x != "OFF"]))'20
Measured palettes
NEXUS carries ten colour themes and authors each one twice — once for paper, once for dark — because a colour that reads on black is washed out on white.
python3 -c 'import re;t=open("nexus/js/nexus.js").read();i=t.index("var THEMES = [");print(len(re.findall(r"id: \x27",t[i:t.index(chr(10)+"];",i)]))*2)'13
Canvas transitions
The Media Wall’s slideshow moves between collages with 13 canvas transitions, including a pixel dissolve, a psychedelic warp and three levels of heavy digitisation.
python3 -c 'import re;t=open("mediawall/mediawall.php").read();i=t.index("const transitions = [");print(len([x for x in re.findall(r"type: \"(\w+)\"",t[i:t.index(chr(10)+"];",i)]) if x != "none"]))'8
Colour modes
Illusion paints its nested particle spheres by one of eight colour modes — rainbow, position, time, neon, pastel, fire, mono and galaxy — and the mode is what makes the depth flip easy to trigger.
python3 -c 'import re;print(len(re.search(r"modes=\[([^\]]*)\]",open("illusion/index.html").read()).group(1).split(",")))'10,911
Objects propagated
ORBIT ships the catalogue itself — 21 stations, 157 naked-eye objects and 10,733 Starlink satellites, 10,911 in all — and propagates every one of them in the browser with the SGP4 model the elements are published for. No server does the orbital arithmetic.
python3 -c 'import json;t=open("orbit/assets/js/orbit-data.js").read();d=json.loads(t[t.index("{"):t.rindex("}")+1]);print(sum(v.count(chr(10)+"1 ") for v in d["groups"].values()))'157
Bright enough to see
Of everything ORBIT tracks, 157 are on Celestrak’s visual list: the objects a person standing outside can actually see cross the sky without a telescope.
python3 -c 'import json;t=open("orbit/assets/js/orbit-data.js").read();d=json.loads(t[t.index("{"):t.rindex("}")+1]);print(d["groups"]["visual"].count(chr(10)+"1 "))'242
Countries drawn
Every country ATLAS draws has its area computed spherically from the very polygons on screen rather than copied from a table, so the figure and the shape can never disagree — Nepal comes out at 147,194 km² against the 147,181 the country publishes, which is 0.009% out.
python3 -c 'import json;t=open("atlas/assets/js/atlas-data.js").read();print(len(json.loads(t[t.index("{"):t.rindex("}")+1])["countries"]))'217
Countries reporting
Twenty-one World Bank indicators reach 217 of the 242 countries ATLAS draws, each stamped with the year that country last reported it. The 25 the Bank does not carry get no block at all rather than a grid of dashes.
python3 -c 'import json;t=open("atlas/assets/js/atlas-data.js").read();print(sum(1 for c in json.loads(t[t.index("{"):t.rindex("}")+1])["countries"] if c.get("ind")))'216
Dial combinations
Clockwork draws its clock faces from scratch on canvas: 18 dials named after real horological types and 12 hand shapes, which is 216 different ways for a clock on the page to look.
python3 -c 'import re;t=open("clockwork/assets/js/app.js").read();f=t.index("var FACES");h=t.index("var HANDS");print(len(re.findall(r"\{ id: \x27",t[f:h]))*len(re.findall(r"\{ id: \x27",t[h:h+40000])))'85
Cities on the road desk
The traffic desk watches 85 cities on six continents, and every single one of them has its own administrative boundary drawn on the map — no tile provider and no mapping library anywhere on the page.
grep -c "^ id: '" traffic/assets/js/cities.js40
Named lunar features
The moon on the page is drawn, not stencilled: 27 named seas, 7 ray craters and 6 dark-floored craters are each projected onto the disc from their real selenographic latitude and longitude.
python3 -c 'import re;t=open("assets/js/moon-core.js").read();print(sum(len(re.findall(r"\[\x27",re.search(r"var "+k+r" = \[(.*?)\];",t,re.S).group(1))) for k in ("MARIA","RAYS","DARKC")))'177
Country outlines
The world map behind the traffic desk is 177 country polygons from Natural Earth, encoded as delta rings and stroked by hand onto a canvas rather than fetched as map tiles.
grep -c '{ n: "' traffic/assets/js/world.js410
Hand-written stories
The joke vault holds 410 long-form story jokes, ten in every category, all written by hand — the generator builds one-liners and never touches these.
grep -c '^ "' joke/stories.js24
Comic forms
The joke engine composes from 24 named comic forms — the definition, the rule of three, false precision, the epitaph, the whodunnit — and a shape meter throws away the attempts that score badly.
sed -n '/^ var FORMS = {/,/^ };/p' joke/engine.js | grep -c "^ [a-zA-Z_]*: function"20
Languages, written native
480 of the jokes are written out in 20 languages — 24 per language, retold as the joke would be told there rather than machine-translated, with Hebrew, Arabic, Persian and Yiddish laid out right-to-left.
grep -c "endonym: '" joke/native.js31
Opening book lines
The chess bots open out of a book of 31 catalogued positions, so the first eight plies vary instead of replaying one line every game.
sed -n '/^ var BOOK = {/,/^ };/p' chess/chess-app.js | grep -c "':"4
Vegas house decks
Cards ships four period casino decks — Golden Nugget filigree, Bellagio guilloche, Flamingo deco, the Sands atomic — with every face, pip and back drawn as SVG and not one card image in the folder.
sed -n '/^ const DECKS = {/,/^ };/p' cards/index.html | grep -cE "^ [a-z]+: *\{"26
Leagues on the wire
EZ Score reads twenty-six leagues from a single keyless public scoreboard — the American majors and their college divisions, eleven football leagues and the European cups, ATP and WTA — and renders only what comes back.
python3 -c 'import re;t=open("ezscore/assets/js/ezscore.js").read();i=t.index(" var LEAGUES = {");print(len(re.findall(r"^ [a-z0-9]+: *\{[^}]*path: *\x27",t[i:t.index(chr(10)+" };",i)],re.M)))'20
Rule test positions
The backgammon move generator ships with a self-test of twenty hand-checked positions — entering from the bar, the dance, the forced higher die, overshoot bearing off, the hit — that anyone can run from the browser console.
grep -o '/\* C[0-9]* —' backgammon/assets/js/app.js | wc -l33,144
Zip centroids shipped
Rx.Luxury carries the latitude and longitude of every one of America’s 33,144 ZIP Code Tabulation Areas in the page itself, so "clinicians within ten miles of 11201" is arithmetic rather than a network call.
python3 -c 'import re;print(len(re.search(r"var BLOB = \"([^\"]*)\"",open("rxluxury/js/zips.js").read()).group(1))//18)'1,248
Symptom descriptions
The condition table is written in 1,248 distinct clinical phrases — not "chest pain" but "crushing, squeezing or heavy pain or pressure in the centre of the chest".
python3 -c 'import json;t=open("rxluxury/js/conditions.js").read();s=t[t.index("=",t.index("var CONDITIONS ="))+1:].strip();d=json.loads(s[:s.rindex("]")+1]);print(len({y for x in d for y in x["symptoms"]}))'932
Red-flag lines
Every one of the 219 conditions carries its own written red flags — 932 lines in all — and they are printed above the candidate list, never inside it.
python3 -c 'import json;t=open("rxluxury/js/conditions.js").read();s=t[t.index("=",t.index("var CONDITIONS ="))+1:].strip();d=json.loads(s[:s.rindex("]")+1]);print(sum(len(x["redFlags"]) for x in d))'219
Conditions on the table
The symptom checker narrows against a hand-built table of 219 conditions across eight body systems, 38 of them graded as emergencies.
python3 -c 'import json;t=open("rxluxury/js/conditions.js").read();s=t[t.index("=",t.index("var CONDITIONS ="))+1:].strip();print(len(json.loads(s[:s.rindex("]")+1])))'85
Symptom chips
The whole checker is driven by 85 plain-English symptom chips spread over 22 body regions, and tapping the drawn figure lights the same chip.
python3 -c 'import json,re;t=open("rxluxury/js/conditions.js").read();S=json.loads(re.search(r"var SYMPTOMS = (\{.*?\});"+chr(10),t,re.S).group(1));print(sum(len(v) for v in S.values()))'75
NUCC specialty strings
Each condition names the exact federal NUCC taxonomy strings that find the right kind of doctor — 75 of them across the primary field and the also-see list — because the NPPES register matches on that wording and nothing else.
python3 -c 'import json;t=open("rxluxury/js/conditions.js").read();s=t[t.index("=",t.index("var CONDITIONS ="))+1:].strip();d=json.loads(s[:s.rindex("]")+1]);print(len({x["taxonomy"] for x in d if x.get("taxonomy")}|{a for x in d for a in x.get("alsoSee",[])}))'8
Federal facility files
The facilities desk searches eight separate federal registers — hospitals, health centres, rural clinics, surgery centres, dialysis, hospice, home health and skilled nursing — each with its own field names checked on arrival.
sed -n '/var FACILITY_KINDS = \[/,/^ \];/p' rxluxury/js/app.js | grep -c 'id: "'16
MRI phantom slices
The imaging lab can generate its own 16-slice, 256x256 Shepp-Logan MRI study in the browser from ten ellipses, so there is something to scroll and window without uploading a real scan.
python3 -c 'import re;print(re.search(r"for \(let z = 0; z < (\d+); z\+\+\)",open("rxluxury/js/dicom.js").read()).group(1))'18
Surveillance queries
Hanta’s outbreak archive sweeps eighteen different news queries in parallel every run — by agency, by country, by strain and by syndrome — and keeps up to a thousand deduplicated articles.
grep -c 'news.google.com/rss/search?q=' hanta/HantaProbe.js165
Domains for sale
The sales desk lists a portfolio of 165 real domain names, spread across 45 different endings.
python3 -c 'import io,re;print(len(re.findall(r"\"[^\"]+\"",re.search(r"var ALL_DOMAINS\s*=\s*\[(.*?)\];",io.open("buydomains/index.html",encoding="utf-8").read(),re.S).group(1))))'110
TLDs checked at once
The domain checker sweeps a name across 110 top-level domains, and tags each one as ICANN-contracted or not — because a "not found" from a country registry cannot honestly be read as "free".
python3 -c 'import re;t=open("domains/assets/js/app.js").read();b=t[t.index("var TLD_SETS = {"):t.index("/* The registrable suffix")];print(len(dict.fromkeys(re.findall(r"\x27\.([a-z.]+)\x27",b))))'75
Sites swept worldwide
The global test times a real request to each of 75 named websites — six to twenty-five per continent, across all six.
python3 -c 'import re;b=re.search(r"var CONTINENTS = \[(.*?)"+chr(10)+r" \];",open("network/assets/js/app.js").read(),re.S).group(1);print(len(re.findall(r"\x27[a-z0-9.-]+\.[a-z]{2,}\x27",b)))'50
Wire actions
A chat room speaks to its server in 50 named actions — post, react, poll, vote, pin, edit, redact, knock, admit, kick, lock, guard and the rest.
python3 -c 'import re;print(len(set(re.findall(r"[$]action\s*===\s*.([a-z]+).",open("chat/chat-sync.php").read()))))'42
Ports named
TAP reads a raw packet capture in the browser and turns 42 port numbers into named services, deciding port 443 by protocol — UDP is QUIC, TCP is HTTPS.
python3 -c 'import re;print(len(re.findall(r"(\d+): *\"",re.search(r"PORTMAP = \{(.*?)"+chr(10)+r" \};",open("tap/assets/js/tap-engine.js").read(),re.S).group(1))))'29
Accented domains
29 of the names on the sales desk are internationalized — ė.tv, ü.art, zöe.co, láb.com — domains written outside the plain ASCII alphabet.
python3 -c 'import io,re;print(len([n for n in re.findall(r"\"([^\"]+)\"",re.search(r"var ALL_DOMAINS\s*=\s*\[(.*?)\];",io.open("buydomains/index.html",encoding="utf-8").read(),re.S).group(1)) if any(ord(c)>127 for c in n)]))'2,000
Certificates per read
Paper Trail reads the public Certificate Transparency log for any domain you name and draws its newest 2,000 certificates on a timeline, one lane per issuing authority.
python3 -c 'import re;print(re.search(r"[$]cap *= *(\d+);",open("papertrail/ct-proxy.php").read()).group(1))'197
Builds compared
The changelog was not written from memory — 197 shipped archives were opened and compared to the one before them, file by file, on the checksum of every file inside.
python3 -c 'import re,json;t=open("changelog/assets/js/builds.js").read();b=re.sub(r"([{,])(\w+):","\\1"+chr(34)+"\\2"+chr(34)+":",t[t.index("[",t.index("window.LABS_BUILDS")):t.rindex("]")+1]);print(len(json.loads(b)))'2,238
Source changes
Across those builds, 2,238 individual source files were changed — counting only a property’s own JavaScript, CSS, PHP and Python, with shared chrome and restamped HTML deliberately left out.
python3 -c 'import re,json;t=open("changelog/assets/js/builds.js").read();b=re.sub(r"([{,])(\w+):","\\1"+chr(34)+"\\2"+chr(34)+":",t[t.index("[",t.index("window.LABS_BUILDS")):t.rindex("]")+1]);print(sum(x["w"] for x in json.loads(b)))'48
Properties born
48 property directories that did not exist at the start of the record existed by the end of it, each one dated to the exact build it first appeared in.
python3 -c 'import re,json;t=open("changelog/assets/js/builds.js").read();b=re.sub(r"([{,])(\w+):","\\1"+chr(34)+"\\2"+chr(34)+":",t[t.index("[",t.index("window.LABS_BUILDS")):t.rindex("]")+1]);print(len({n for x in json.loads(b) for n in x["n"]}))'82
Desks worked on
82 different properties received deep source work somewhere in the run, so the record names not just how much changed but exactly which desk it changed on.
python3 -c 'import re,json;t=open("changelog/assets/js/builds.js").read();b=re.sub(r"([{,])(\w+):","\\1"+chr(34)+"\\2"+chr(34)+":",t[t.index("[",t.index("window.LABS_BUILDS")):t.rindex("]")+1]);print(len({p for x in json.loads(b) for p in x["p"]}))'128
Framed in turn
The walk opens 128 of the site’s own properties one at a time in a frame on the page — every property served from this host except the page you are standing on.
python3 -c 'import json,re;d=json.loads(re.search(r"\[[\s\S]*\]",open("assets/js/portfolio-data.js").read()).group(0));print(len([p for p in d if p.get("label") and not p.get("external") and not p.get("stripRoom")])-1)'6
Frame verdicts
A property that will not load in the frame never leaves a blank rectangle: the walk has six separately named verdicts and prints the matching sentence plus a working link.
python3 -c 'import re;Q=chr(39);t=open("in-house/assets/js/app.js").read();print(len(set(re.findall("why = "+Q+"([^"+Q+"]+)"+Q,t))|set(re.findall("failed"+chr(92)+"([^,]+, "+Q+"([^"+Q+"]+)"+Q,t))))'22
Citable clauses
The legal page hands out 22 permanent addresses — thirteen numbered clauses plus nine sub-clauses — so a specific sentence can be cited rather than the whole document.
python3 -c 'import re;t=open("legal/index.html").read();print(len(re.findall(r"<section class=\"band[^\"]*\" id=\"[a-z0-9-]+\"",t))+len(re.findall(r"<h3 id=\"[a-z0-9-]+\"",t)))'5
Places data leaves
The privacy clause names exactly five things on the whole site that send anything out of your browser, and says what each one sends and why.
python3 -c 'import re;t=open("legal/index.html").read();i=t.index("id=\"privacy-sends\"");print(len(re.findall(r"<li>",t[i:t.index("</ul>",i)])))'7
Wiring surfaces
The method holds that a property exists on seven surfaces or not at all — register, site index, generator, menus, sitemaps, page head and cache stamps.
python3 -c 'import re;t=open("shipwright/index.html").read();i=t.index("id=\"wiring\"");print(len(re.findall(r"class=\"sv__c\"",t[i:t.index("</section>",i)])))'8
Traps disarmed
Eight traps that were actually sprung on this estate are written down on the page so nobody springs them a second time.
python3 -c 'import re;t=open("shipwright/index.html").read();i=t.index("id=\"lore\"");print(len(re.findall(r"<li>",t[i:t.index("</section>",i)])))'7,661
Listings on the wheel
The stocks desk carries every common listing on the NYSE and Nasdaq taken from the SEC’s own exchange file, and its roulette button draws one of the 7,661 completely at random — shipping trusts, closed-end funds and SPAC warrants included.
python3 -c 'import json;t=open("stocks/universe.js").read();print(len(json.loads(t[t.index("["):t.rindex("]")+1])))'10
Rinse components
The Rinse Detector scores how much you are overpaying for an entry from ten independent measurements — stretch, position, heat, room, volatility, friction, lockout, effort, passenger and valuation — re-weighted for each of four holding horizons, with every horizon’s weights summing to exactly 100.
python3 -c 'import re;print(len(re.findall(r"\w+:",re.search(r"d7: *\{([^}]*)\}",open("stocks/assets/js/rinse.js").read()).group(1))))'15
GAAP tags tried
Six financial figures are pulled straight out of SEC XBRL filings rather than a vendor summary, and because US GAAP has renamed several of them, each figure is tried against up to four different tag names — fifteen in all — with the freshest filing winning rather than the first tag that answers.
python3 -c 'import re;print(len(re.findall(r"\x27[A-Z][A-Za-z]+\x27",re.search(r"[$]CONCEPTS = \[(.*?)"+chr(10)+r"\];",open("stocks/sec-proxy.php").read(),re.S).group(1))))'26
Hero pitches dealt
The investor data room re-deals its own sales pitch on every load: twenty-six complete hero variants — each with its own badge, headline, subheadline, trust line and valuation line — drawn from two pools, one weighted and one uniform, and never the same one twice in a row.
The hero pool lives in the data room’s own page script rather than in a data file this tree can count, and no grep over it separates a variant from the machinery that deals one. It is the last figure on the band without a command, and it is flagged here rather than given a number nothing can check.
31
Currencies named
The FX board quotes thirty-one currencies against any base you pick off the European Central Bank’s daily reference fixings, keyless and read by the page itself, with a code the feed sends that isn’t on the list shown by its code alone rather than guessed at.
python3 -c 'import re;print(len(re.findall(r"[A-Z]{3}:",re.search(r"var NAMES=\{(.*?)\};",open("money/assets/js/app.js").read(),re.S).group(1))))'66
News wires read
The News Hub pulls from 66 distinct named news feeds — eleven Washington desks, twenty-three world bureaux weighted Europe-first, and the business, AI and technology wires — and files every story it gets into a desk itself.
grep -c "=> 'https" newshub/feed-sources.php63
Market instruments
One batched request fills the console’s market boards with 63 live instruments: 39 world stock indices across 31 countries, 18 front-month commodity futures, and 6 benchmark yields and currency pairs.
python3 -c 'import re;t=open("newshub/console-classic-paper.html").read();print(sum(len(re.findall(r"s: \x27",t[t.index("const "+k+" = ["):t.index(chr(10)+" ];",t.index("const "+k+" = ["))])) for k in ("MARKETS","COMMODITIES","RATESFX")))'22
Artist themes
The live news console can be repainted in 22 named palettes — Dalí, Van Gogh, Chagall, Picasso, Klimt, Hokusai among them — and each one is re-inked for both the paper and the dark edition.
python3 -c 'import re;t=open("newshub/console-classic-paper.html").read();i=t.index("const ARTIST_THEMES = [");print(len(re.findall(r"\{ *id:",t[i:t.index(chr(10)+"];",i)])))'1,073
Domains in the probe pool
The network probe on the tech desk carries a hand-curated pool of 1,073 distinct high-traffic domains, spanning every populated continent, and times the handshake to whichever of them it is pointed at.
python3 -c 'import re;print(len(re.findall(r"\"[^\"]+\"",re.search(r"const sitePool = \[(.*?)"+chr(10)+r"\];",open("newsy/sites-global-1000.js").read(),re.S).group(1))))'20
Named grounds
Newsy lets the reader set the page’s own ground from a ten-step ladder in each edition — 20 named greys in all, from Chalk down to Stone and from Void up to Steel, each with its ink contrast solved for it.
python3 -c 'import re;print(len(re.findall(r"\[\x27[A-Z][a-z]+\x27, *\x27#",open("newsysite/newsy2.js").read())))'51
State outlines drawn
The Press Room draws all fifty states and the District of Columbia as traced outlines, then asks the Library of Congress one separate faceted question per state to ink a single word across the map.
grep -c '^{n:"' press/assets/js/states.js174
Years of newsprint
A word typed into the Press Room is searched across 174 years of digitised American newspaper pages, 1789 to 1963, the full span the Library’s Chronicling America collection covers.
python3 -c 'import re;m=re.search(r"v<(\d{4})\|\|v>(\d{4})",open("press/assets/js/app.js").read());print(int(m.group(2))-int(m.group(1)))'2,421
Artists named
Across those five eras the register names 2,421 distinct artists, from doo-wop groups to techno producers.
python3 -c 'import glob,json,re;print(len({x[0] for f in sorted(glob.glob("song/*.llc/assets/data/*.js")) for x in json.loads(re.search(r"=(\[.*\]);?\s*$",open(f).read().strip(),re.S).group(1))}))'90
Synth patches
Songbuilder’s instrument cabinet holds 90 hand-tuned patches spread over nine synthesis engines, and not one of them is a sample.
python3 -c 'import re;t=open("songbuilder/js/voices.js").read();i=t.index(" var P = [");print(len(re.findall(r"\{ n: \x27",t[i:t.index(chr(10)+" ];",i)])))'24
Singers and rappers
Songbuilder can put words to a track in 24 different deliveries: thirteen rap voices paced against the bar and eleven sung ones, each with its own octave, vibrato and rasp.
python3 -c 'import re;t=open("songbuilder/js/lyrics.js").read();print(sum(len(re.findall(r"\{ k:\x27",t[t.index("var "+k+" = ["):t.index(chr(10)+" ];",t.index("var "+k+" = ["))])) for k in ("RAP","SING")))'44
Audio-reactive modes
VIZZI draws what it hears 44 different ways — thirty-four of its own, from a triggered oscilloscope and a vectorscope to metaballs, a cellular automaton ruled by the spectrum and the real moon, plus the ten reactors lifted whole out of the audio deck.
python3 -c 'import re,glob;n=sum(len(re.findall(r"M\.register\(\{",open(f).read())) for f in glob.glob("vizzi/assets/js/*.js"));t=open("vizzi/assets/js/audiomodes.js").read();print(n-1+len(re.findall(r"^ \[\x27[a-z]{2,4}\x27, \x27",t,re.M)))'46
Formats read from bytes
The converter identifies forty-six file formats from their magic bytes rather than their names, so a mislabelled file is caught before anything is converted.
python3 -c 'import re;t=open("omnifile/assets/js/app.js").read();i=t.index(" var TYPES = {");print(len([x for x in re.findall(r"^ ([a-z0-9]+): *\{",t[i:t.index(chr(10)+" };",i)],re.M) if x != "unknown"]))'112
Filename extensions
One hundred and twelve distinct filename extensions are mapped to the format they claim to be, so the tool can say when a name and its bytes disagree.
python3 -c 'import re;t=open("omnifile/assets/js/app.js").read();i=t.index(" var TYPES = {");b=t[i:t.index(chr(10)+" };",i)];print(len({e for m in re.finditer(r"ext: \[([^\]]*)\]",b) for e in re.findall(chr(39)+"([^"+chr(39)+"]+)"+chr(39),m.group(1))}))'62
EXIF fields named
The photograph reader carries its own TIFF walker that decodes sixty-two EXIF, IFD0 and GPS tags by name — camera, lens, serial numbers, timestamps and coordinates — entirely inside the page.
python3 -c 'import re;t=open("glass/assets/js/app.js").read();print(sum(len(re.findall(r"\x27[A-Za-z]",re.search(r"var "+k+r"=\{(.*?)\};",t,re.S).group(1))) for k in ("TAGS_IFD0","TAGS_EXIF","TAGS_GPS")))'57
Lookalike letters
Fifty-seven Cyrillic, Greek, Armenian and Cherokee characters are mapped to the Latin letters they impersonate, which is how a spoofed domain in a pasted sentence gets caught.
python3 -c 'import re;t=open("watermark/assets/js/app.js").read();print(len(re.findall(r"\x27[^\x27]+\x27 *:",re.search(r"var CONFUSABLE = \{(.*?)"+chr(10)+r"\};",t,re.S).group(1))))'12
Handoff destinations
Whatever is in the search box can be handed off in one tap to twelve other places — seven AI assistants and five classic engines — in a new tab, with nothing stored.
python3 -c 'import re;t=open("search/assets/js/app.js").read();print(sum(len(re.findall(r"\{ n: \x27",re.search(r"var "+k+r" = \[(.*?)\];",t,re.S).group(1))) for k in ("AI","ENG")))'10
Search lenses
Ten named lenses — places, books, art, news, social, images, academic, code and two more — each ask a different subset of the feeds, so the same query gets a different panel of sources.
sed -n '/^ var LENSES = {/,/^ };/p' search/assets/js/app.js | grep -cE "^ [a-z]+: *"6
Filename match modes
A filename can be matched six different ways against your own disk — contains, starts, ends, exact, regular expression and fuzzy — with nothing ever leaving the machine.
grep -c 'data-name-mode="' filesearch/index.html4,853
Family nodes
Every language on the page shows its full descent, drawn from a tree of 4,853 named family and subgroup nodes.
python3 -c 'import json;t=open("tongues/assets/js/languages.js").read();print(len(json.loads(t[t.index("{"):].rstrip().rstrip(";"))["nodes"]))'26
Deepest family chain
The longest classification chain in the register descends twenty-six named levels before it reaches a single language.
python3 -c 'import json;t=open("tongues/assets/js/languages.js").read();d=json.loads(t[t.index("{"):].rstrip().rstrip(";"));print(max(len(r[3].split("/")) for r in d["rows"] if r[3]))'1,239
Marked extinct
1,239 of the languages in the register carry Glottolog’s ‘extinct’ endangerment status, and the page inks each one on its map.
python3 -c 'import json;t=open("tongues/assets/js/languages.js").read();d=json.loads(t[t.index("{"):].rstrip().rstrip(";"));e=d["aes"].index("extinct");print(sum(1 for r in d["rows"] if r[8]==e))'636
Free works shelved
The Stacks is a hand-checked reading list of 636 books and recordings, every one legitimately free at the source it links to.
grep -o 'u:"' 007/assets/js/library-data.js | wc -l304
Source domains
Those entries point at 304 different hosts — university pages, standards bodies, conference archives and authors’ own sites — not one publisher’s catalogue.
grep -o 'u:"https\?://[^/"]*' 007/assets/js/library-data.js | sed 's|.*//||' | sort -u | wc -l7
Relation drawers
Word Lab opens seven drawers on one word at once: perfect rhymes, near rhymes, sounds-like, means-like, adjectives for it, and the words most often found before and after it.
python3 -c 'import re;print(len(re.findall(r"\{",re.search(r"var DRAWERS=\[(.*?)\];",open("wordlab/assets/js/app.js").read(),re.S).group(1))))'60
Seed words
The deal button draws from a curated list of sixty words, picked because their drawers come back full.
python3 -c 'import re;print(len(re.findall(r"\x27[a-z]+\x27",re.search(r"var SEEDS=\[(.*?)\];",open("wordlab/assets/js/app.js").read(),re.S).group(1))))'27
Cover motifs
A book the library holds no photograph of gets a drawn cover instead, its emblem chosen from twenty-seven line motifs by the words in the title itself.
python3 -c 'import re;t=open("books/assets/js/app.js").read();i=t.index("var GEN_MOTIFS = {");print(len(re.findall(r"^ [a-z]+: *.<",t[i:t.index(chr(10)+"};",i)],re.M)))'Nothing in the table matches that.
Run them
Nothing here needs a key or a network.
Every command reads files that ship with the site. Open a shell at
the root of the tree — the directory holding
index.html and assets/ — and paste
one. It prints one number. If that number is not the one printed
beside it on this page, the figure is wrong and the figure is what
gets fixed.
To run all of them at once:
python3 tools/mkfigures.py --check. It executes every
command against the tree, compares each answer to the figure the
register carries, and exits non-zero on the first one that
disagrees — then re-renders this table into both editions and
fails if what is shipped is not what the register now says. It reads
the tree, never a file it wrote itself, so it cannot agree with
itself into a wrong answer.
Python 3 and a POSIX shell are the whole toolchain for this table:
nothing on this page is compiled, and nothing has to be installed to
run a command off it. The estate as a whole is not quite free of a
build step, and it is better to say so here than to let somebody
find it — eight pages still pull the Tailwind CDN at runtime,
the News Hub’s classic console links a purged Tailwind
stylesheet in both its editions, and the root
package.json still declares the npm script that builds
one. Not one figure in this table depends on any of that.
About
Why a figure carries its own arithmetic.
A number written into a page is true on the day it is written and unverifiable every day after. It does not decay loudly: the register gains a property, a data file gains rows, a table is rebuilt with more conditions in it, and the sentence beside the old number goes on reading perfectly well. Nothing on the page can tell you it has stopped being true.
Writing the command down changes what the number is. It stops being a claim and becomes a derivation, and a derivation can be re-run. The first run of these commands moved eighteen figures on this estate — the clock wall was reading 64 against a register of a hundred cities, the symptom checker was reading 148 conditions against a table of 219, and the “90-second refresh” the front page had promised for a year was one desk’s cadence and nobody else’s.
What cannot be recomputed says so. A valuation is a
judgement. Ownership is a fact about registrar accounts. The Library
of Congress’s page count is the Library’s, not ours. The
national debt lives at the Treasury and moves every business day.
Those figures carry prose instead of a command, and the
prose is printed on this page beside them — because a gap where
a command should be reads as an oversight, and a sentence saying
“no command can produce this, and here is why” reads as
what it is. Questions to
labs@labs.llc.