Clockford™ Beta opens

The census · Sources

Where every number on this site comes from.

Each figure below was computed in your browser a moment ago from the census files, after they were checked against the seal, and compared with the figure printed on the pages.

Servers
31,309one lot each
Registry listings
101,219folded into those servers
Census
12 September 2026370 days of arrivals
Sealed files
71,425,344 bytes, SHA-256

With JavaScript off, nothing has been computed in your browser: this page shows the figures as printed and the fingerprints as sealed. The check and the recount run when JavaScript is on.

01 · The check

The check

7 files · sealed 12 September 2026

The six census files: size and SHA-256 fingerprint, sealed and computed now
filebytesSHA-256check
days.json4,236 a4c1a40a92db6a801249fa2a71ea135dabfe9f55c2a7090a648e4b22793c2377sealed · checked when JavaScript runs
lots.txt62,618 c91198af1df17c502af2f8f62020c63edf44105c544b252ab9bae1d82c793236sealed · checked when JavaScript runs
names.txt1,008,836 5edcaa377316bebe2413d4a97db2f8a13f2915fff8f598c3300de64ac31ff412sealed · never read by this page: no page on this site prints a server's name
vers.txt64,394 8bc4f76c57e39bb6ecb8098f2327300577a20ec6d3d436bff8b48200f4efaa74sealed · checked when JavaScript runs
lamps.json62,619 ec1e03524851c0873d7f9c894e88caf96bc5aaf5fb41c67646a05001856d52aesealed · checked when JavaScript runs
lots2.txt219,163 6af4f16ea7b99c9ced640d73942b258b157f01ee33c6f6cc5378103723ad799asealed · checked when JavaScript runs
root1,425,344 707adaff001d85fc056c14c0eaff978b18c9ee8f98782f2dff1038d765f062ddthe fingerprint of the six fingerprints, as sealed

same bytes as sealed differs from the seal not read here

02 · The recount

Six figures, counted again from the bytes.

The site's headline numbers are not typed anywhere. Scroll, and each one is counted again from its file as you read: the figure is how far into the file you are, and it lands where the file ends.

The site's headline numbers are not typed anywhere. Each one below is counted again from its file in your browser, and compared with the figure printed on the pages.

01 data/lots.txt

31,309 servers.

One lot for each server in the census, however many versions it shipped.

lots.txt holds two characters for every server, in the order they were first seen: its condition, then its height. So the number of servers is the file's length divided by two.

rule
lots.txt length ÷ 2
bytes
62,618
check
days.json, summed, gives the same

Every square in the picture is one of those servers. Its colour is the band of the day it was first seen, from days.json: the town fills from the oldest, and the newest band fills the last rows.

Printed across the site: 31,309

02 data/days.json

370 days. The busiest brought 1,438.

From the first server seen, on 8 September 2025, to the census, on 12 September 2026.

days.json is a list with one entry per day: how many servers were first seen that day, split four ways by condition. The number of entries is the number of days. The entry with the largest sum is the busiest day.

days
days.json length
busiest
the day with most arrivals; the first, should two tie
found
9 September 2026

Watch the busiest-so-far mark: it moves each time a day beats every day before it, and it stops moving three days before the census.

Printed across the site: 370 · 1,438

03 data/days.json

333 a day.

The river's width is arrivals per day, averaged over the 30 full days before the census.

Those days run from 13 Aug to 11 Sep 2026. The census day itself is left out: the census ran at 06:59 UTC that day, so the day is not complete.

rule
the 30 days before the census day, summed, ÷ 30, rounded
sum
9,989
river
0.70 wide on such a day, 3.02 on the busiest

Printed across the site: 333

04 data/days.json

42.5% orchid.

On this site, a colour is a date. The census year is cut into seven bands, and the newest, orchid, holds more of the town than any other.

Orchid began on 23 July 2026. 13,314 servers were first seen in its 52 days, out of 31,309.

band
the day first seen × 7 ÷ 370, rounded down, the last band ending at the census
share
the band's servers ÷ all servers

Orchid stays at nothing until the scan reaches its first day, then climbs faster than any band before it. The Ribbon at the foot of every page is this bar, finished.

Printed across the site: 42.5%

05 data/lamps.json

13,107 shipped an update.

In the 30 days before the census, that many servers shipped a version, and a server's first version counts.

lamps.json holds one digit per server, in the same order as the lots: 1 if the server was updated within 30 days of the census, otherwise 0. Counting the 1s gives the figure.

rule
lots marked 1 in lamps.json
new
10,029 of them were first seen in those 30 days
older
3,078 of the 21,280 older servers

A server first seen in the window counts as updated, so the cream crowds into the last rows. This figure feeds the lamps, and the site never calls it a count of lamps.

Printed across the site: 13,107

06 data/lamps.json · the town's layout

841 lamps. The middle one burns at 18%.

Lamps stand at the street corners. A lamp's brightness is the share of the servers on its four blocks that shipped an update in those 30 days.

The corners come from the town's layout, the updates from lamps.json. Sort the 841 shares and take the middle one: 18%.

lamps
one per corner inside the grid of blocks
median
sorted shares, the one at ⌊(n − 1) ÷ 2⌋
full
165 burn at 100%

Every lamp is lit: all 841 have at least one updated server beside them. That is why brightness is a share and not on or off. The rule was meant to show upkeep and shows arrival instead: the bright corners are where the newest servers stand.

Printed across the site: 841 · 18%

03 · Provenance

Where the six files come from.

  1. 1 · the registry

    The official MCP Registry's public listings: one entry for every version of every server.

    101,219 listings

  2. 2 · the census

    Folded to one record per server, with when it was first seen and last updated, and its status, repository and host.

    31,309 servers · 12 September 2026

  3. 3 · the census build

    One script sorts the servers by the day they were first seen and writes six files. It is the only way these files ever change.

    the census build script

  4. 4 · the seal

    Each file is fingerprinted with SHA-256 and the fingerprints are sealed with the app. The map, and this page, check them on every load.

    the census seal

What the census build writes
fileone entry perwhat it holds
days.jsondayservers first seen that day: sound, facade, tower, condemned
lots.txtservertwo characters: its condition, then its height (a floor for each doubling of versions)
names.txtserverits name. Published with the other census files so the seal can be checked, and never loaded or printed by a page on this site.
vers.txtserverhow many versions it shipped
lamps.jsonserver1 if it was updated within 30 days of the census, otherwise 0
lots2.txtserverseven characters: days since its last version, hosted or installable, the quarter it was first seen, and a number shared by servers from the same publisher (a number, never a name). Sealed, not drawn on the map yet.

Metadata only. Everything in the census comes from public registry listings. Nothing in it came from connecting to a server, and nothing on this site connects to one. The only requests this page makes go to this site's own server.

04 · The town

How the census becomes a town

The official MCP Registry lists every version of a server as its own entry. The census folds its 101,219 listings into 31,309 servers, one per server, and each server gets one lot.

The lots are laid out in a square spiral, in the order the servers were first seen: the oldest at the centre, the newest on the rim. The smallest square that holds them all is 177 cells a side, which leaves 20 cells empty.

A house's height is the versions it has shipped: a floor for each doubling. Its colour on the map is its condition under the registry's own rules: sound, a facade (no repository behind it), a tower (a host shared with fifty or more servers), or condemned (deprecated). On this site's front page, colour is instead the day a server was first seen, in seven bands.

Lamps and the river are counted in the recount above.

The sea has no number. It stands for every server that is not in the census, and we do not know how many that is.

No page on this site prints a server's name, and none grades a server. Inside the product, a server's card says: Listed is not endorsed, and the town has never connected to these servers.

The census is a snapshot of 12 September 2026. It changes only when a person rebuilds it from its source and reseals it by hand. Nothing here updates on its own.

05 · The bands

The seven bands

bandfirst seendaysserversshare of the town
coral8 Sep – 30 Oct 2025537422.4%
tangerine31 Oct – 22 Dec 2025533891.2%
citrine23 Dec 2025 – 13 Feb 2026538182.6%
mint14 Feb – 7 Apr 2026533,40410.9%
lagoon8 Apr – 30 May 2026534,89915.6%
azure31 May – 22 Jul 2026537,74324.7%
orchid23 Jul – 12 Sep 20265213,31442.5%

The rule: band = the day first seen × 7 ÷ 370, rounded down, the last band ending at the census. Seven bands rather than a smooth ramp, so that every edge in the picture is a real date in this table.

06 · Every figure

Every figure the site prints, with its rule and its source.

Generated from the site's book of figures, never written by hand. Printed values below; with JavaScript on, each is computed again and compared.

The seven fields of a band (name, first and last day, days, dates, servers, share) are listed below for coral, band 0; bands 1–6 follow the same rules from the same file, and their values are the rows of The seven bands.

The census itself 9

FigureWhat it isRuleSourcePrintedComputed nowMatch
census.datethe day of the censusthe seal, censusthe census seal12 September 2026needs JavaScript
census.dateShortthe day of the census, shortthe seal, censusthe census seal12 Sep 2026needs JavaScript
census.firstDaythe first day any server was seenday 0data/days.json8 September 2025needs JavaScript
census.firstDayShortthe first day, shortday 0data/days.json8 Sep 2025needs JavaScript
census.serversservers in the census, one lot eachlots.txt length ÷ 2 (= days.json summed)data/lots.txt31,309needs JavaScript
census.daysdays from the first server to the censusdays.json lengthdata/days.json370needs JavaScript
census.listingsregistry listings folded into those serversvers.txt summeddata/vers.txt101,219needs JavaScript
census.filesfiles in the censusthe sealed filesthe census seal7needs JavaScript
census.bytesbytes in the six files togetherthe sealed files' sizes summeddata/*1,425,344needs JavaScript

Arrivals, day by day 22

FigureWhat it isRuleSourcePrintedComputed nowMatch
day0.countservers first seen on day 0arrivals on day 0data/days.json1needs JavaScript
day1.countservers first seen on day 1arrivals on day 1data/days.json53needs JavaScript
others.countevery server after the firstservers − 1data/days.json31,308needs JavaScript
half.daysthe fewest final days that hold half the townthe fewest final days holding half the town (days 304–369)data/days.json66needs JavaScript
half.countservers first seen in those daysthe fewest final days holding half the town (days 304–369)data/days.json15,819needs JavaScript
half.sharetheir share of the townthe fewest final days holding half the town (days 304–369)data/days.json50.5%needs JavaScript
half.fromthe first of those daysthe fewest final days holding half the town (days 304–369)data/days.json9 July 2026needs JavaScript
asof.defaultthe day the loupe opens onthe loupe's default day (303)data/days.json8 July 2026needs JavaScript
asof.standingservers standing at the end of that daystanding at the end of day 303data/days.json15,490needs JavaScript
asof.afterservers first seen after itfirst seen after day 303data/days.json15,819needs JavaScript
busiest.countarrivals on the busiest daythe day with most arrivals (day 366)data/days.json1,438needs JavaScript
busiest.datethe busiest daythe day with most arrivals (day 366)data/days.json9 September 2026needs JavaScript
busiest.dateShortthe busiest day, shortthe day with most arrivals (day 366)data/days.json9 Sep 2026needs JavaScript
busiest.dateDayMonththe busiest day, day and monththe day with most arrivals (day 366)data/days.json9 Septemberneeds JavaScript
arrivals.avgarrivals a day, the 30-day averagethe 30 full days before the census day (339–368), ÷ 30, roundeddata/days.json333needs JavaScript
arrivals.totalarrivals in those 30 daysthe 30 full days before the census day (339–368), ÷ 30, roundeddata/days.json9,989needs JavaScript
arrivals.fromthe first of those daysthe 30 full days before the census day (339–368), ÷ 30, roundeddata/days.json13 Augneeds JavaScript
arrivals.tothe last of those daysthe 30 full days before the census day (339–368), ÷ 30, roundeddata/days.json11 Sep 2026needs JavaScript
river.avgWidththe river's width on an average day, in town unitsriverWidth(average, average) from the river's drawingdata/days.json0.70needs JavaScript
river.floodWidththe river's width on the busiest dayriverWidth(busiest, average) from the river's drawingdata/days.json3.02needs JavaScript
crates.todaycrates on the quay on an average daycrateCount(average) from the quay's drawingdata/days.json34needs JavaScript
crates.floodcrates on the quay on the busiest daycrateCount(busiest) from the quay's drawingdata/days.json144needs JavaScript

The seven bands 53

FigureWhat it isRuleSourcePrintedComputed nowMatch
band.0.countcoral: servers first seen in the banddays with min(6, floor(d × 7 ÷ 370)) = 0, summeddata/days.json742needs JavaScript
band.1.counttangerine: servers first seen in the banddays with min(6, floor(d × 7 ÷ 370)) = 1, summeddata/days.json389needs JavaScript
band.2.countcitrine: servers first seen in the banddays with min(6, floor(d × 7 ÷ 370)) = 2, summeddata/days.json818needs JavaScript
band.3.countmint: servers first seen in the banddays with min(6, floor(d × 7 ÷ 370)) = 3, summeddata/days.json3,404needs JavaScript
band.4.countlagoon: servers first seen in the banddays with min(6, floor(d × 7 ÷ 370)) = 4, summeddata/days.json4,899needs JavaScript
band.5.countazure: servers first seen in the banddays with min(6, floor(d × 7 ÷ 370)) = 5, summeddata/days.json7,743needs JavaScript
band.6.countorchid: servers first seen in the banddays with min(6, floor(d × 7 ÷ 370)) = 6, summeddata/days.json13,314needs JavaScript
band.0.sharecoral: the band's share of the towncount ÷ serversdata/days.json2.4%needs JavaScript
band.1.sharetangerine: the band's share of the towncount ÷ serversdata/days.json1.2%needs JavaScript
band.2.sharecitrine: the band's share of the towncount ÷ serversdata/days.json2.6%needs JavaScript
band.3.sharemint: the band's share of the towncount ÷ serversdata/days.json10.9%needs JavaScript
band.4.sharelagoon: the band's share of the towncount ÷ serversdata/days.json15.6%needs JavaScript
band.5.shareazure: the band's share of the towncount ÷ serversdata/days.json24.7%needs JavaScript
band.6.shareorchid: the band's share of the towncount ÷ serversdata/days.json42.5%needs JavaScript
band.0.fromcoral: the band's first dayfirst day of the banddata/days.json8 Sep 2025needs JavaScript
band.1.fromtangerine: the band's first dayfirst day of the banddata/days.json31 Oct 2025needs JavaScript
band.2.fromcitrine: the band's first dayfirst day of the banddata/days.json23 Dec 2025needs JavaScript
band.3.frommint: the band's first dayfirst day of the banddata/days.json14 Feb 2026needs JavaScript
band.4.fromlagoon: the band's first dayfirst day of the banddata/days.json8 Apr 2026needs JavaScript
band.5.fromazure: the band's first dayfirst day of the banddata/days.json31 May 2026needs JavaScript
band.6.fromorchid: the band's first dayfirst day of the banddata/days.json23 Jul 2026needs JavaScript
band.0.tocoral: the band's last daylast day of the banddata/days.json30 Oct 2025needs JavaScript
band.1.totangerine: the band's last daylast day of the banddata/days.json22 Dec 2025needs JavaScript
band.2.tocitrine: the band's last daylast day of the banddata/days.json13 Feb 2026needs JavaScript
band.3.tomint: the band's last daylast day of the banddata/days.json7 Apr 2026needs JavaScript
band.4.tolagoon: the band's last daylast day of the banddata/days.json30 May 2026needs JavaScript
band.5.toazure: the band's last daylast day of the banddata/days.json22 Jul 2026needs JavaScript
band.6.toorchid: the band's last daylast day of the banddata/days.json12 Sep 2026needs JavaScript
band.0.dayscoral: days in the banddays in the banddata/days.json53needs JavaScript
band.1.daystangerine: days in the banddays in the banddata/days.json53needs JavaScript
band.2.dayscitrine: days in the banddays in the banddata/days.json53needs JavaScript
band.3.daysmint: days in the banddays in the banddata/days.json53needs JavaScript
band.4.dayslagoon: days in the banddays in the banddata/days.json53needs JavaScript
band.5.daysazure: days in the banddays in the banddata/days.json53needs JavaScript
band.6.daysorchid: days in the banddays in the banddata/days.json52needs JavaScript
band.0.rangecoral: the band's datesfrom and to, the year written once when both share itdata/days.json8 Sep – 30 Oct 2025needs JavaScript
band.1.rangetangerine: the band's datesfrom and to, the year written once when both share itdata/days.json31 Oct – 22 Dec 2025needs JavaScript
band.2.rangecitrine: the band's datesfrom and to, the year written once when both share itdata/days.json23 Dec 2025 – 13 Feb 2026needs JavaScript
band.3.rangemint: the band's datesfrom and to, the year written once when both share itdata/days.json14 Feb – 7 Apr 2026needs JavaScript
band.4.rangelagoon: the band's datesfrom and to, the year written once when both share itdata/days.json8 Apr – 30 May 2026needs JavaScript
band.5.rangeazure: the band's datesfrom and to, the year written once when both share itdata/days.json31 May – 22 Jul 2026needs JavaScript
band.6.rangeorchid: the band's datesfrom and to, the year written once when both share itdata/days.json23 Jul – 12 Sep 2026needs JavaScript
band.0.namecoral: the band's namethe band's name(the band rule)coralneeds JavaScript
band.1.nametangerine: the band's namethe band's name(the band rule)tangerineneeds JavaScript
band.2.namecitrine: the band's namethe band's name(the band rule)citrineneeds JavaScript
band.3.namemint: the band's namethe band's name(the band rule)mintneeds JavaScript
band.4.namelagoon: the band's namethe band's name(the band rule)lagoonneeds JavaScript
band.5.nameazure: the band's namethe band's name(the band rule)azureneeds JavaScript
band.6.nameorchid: the band's namethe band's name(the band rule)orchidneeds JavaScript
orchid.sincethe newest band's first dayband 6's first day, longdata/days.json23 July 2026needs JavaScript
early.countservers in the three oldest bandsbands 0–2 summeddata/days.json1,949needs JavaScript
early.sharetheir share of the townbands 0–2 ÷ serversdata/days.json6.2%needs JavaScript
early.tothe last day of the three oldest bandsthe last day of band 2data/days.json13 February 2026needs JavaScript

Condition and height 8

FigureWhat it isRuleSourcePrintedComputed nowMatch
class.soundsound houses (active, with a repository)lots.txt class characters counteddata/lots.txt18,992needs JavaScript
class.facadefacades (no repository behind them)lots.txt class characters counteddata/lots.txt6,539needs JavaScript
class.towertowers (a host shared with fifty or more servers)lots.txt class characters counteddata/lots.txt5,444needs JavaScript
class.condemnedcondemned houses (deprecated)lots.txt class characters counteddata/lots.txt334needs JavaScript
height.onesservers that shipped one versionlots with one versiondata/vers.txt19,646needs JavaScript
height.onesSharetheir share of the townlots with one version ÷ serversdata/vers.txt62.7%needs JavaScript
height.onesPhrasethat share, in wordsthe share rounded down to tenths, in wordsdata/vers.txtsix in tenneeds JavaScript
vers.maxthe most versions any one server shippedthe largest entry in vers.txtdata/vers.txt1,176needs JavaScript

Lamps and upkeep 14

FigureWhat it isRuleSourcePrintedComputed nowMatch
lamps.countlamps, one per street cornerintersections 1…29 each waydata/lamps.json841needs JavaScript
lamps.litlamps lit by the rulelit by the rule (the lamp rule)data/lamps.json841needs JavaScript
lamps.fulllamps at full brightnessintersections whose share is 1data/lamps.json165needs JavaScript
lamps.fullNearestblocks from the centre to the nearest full lampthe fewest blocks (Chebyshev) from the centre block to any block beside a 100% lampdata/lamps.json13needs JavaScript
lamps.medianthe median lamp's brightness sharemedian share (sorted[⌊(841 − 1) ÷ 2⌋])data/lamps.json18%needs JavaScript
lots.updatedservers that shipped an update in the 30 days before the censuslots marked 1 in lamps.json (never called "lamps")data/lamps.json13,107needs JavaScript
lots.updatedNewof them, first seen in those 30 daysof those, first seen 13 Aug – 12 Sep 2026 (days 339–369)data/lamps.json, data/days.json10,029needs JavaScript
lots.updatedNewSharetheir share of the updatedof those, first seen 13 Aug – 12 Sep 2026 (days 339–369)data/lamps.json, data/days.json76.5%needs JavaScript
lots.olderservers first seen before those 30 daysservers first seen before day 339; of them, marked 1data/lamps.json, data/days.json21,280needs JavaScript
lots.olderShippedof them, updated in the 30 daysservers first seen before day 339; of them, marked 1data/lamps.json, data/days.json3,078needs JavaScript
lots.olderShippedSharetheir share of the olderservers first seen before day 339; of them, marked 1data/lamps.json, data/days.json14.5%needs JavaScript
oldtown.countservers first seen in September 2025servers first seen in September 2025; of them, marked 1data/days.json, data/lamps.json456needs JavaScript
oldtown.litof them, updated in the 30 daysservers first seen in September 2025; of them, marked 1data/days.json, data/lamps.json31needs JavaScript
oldtown.litSharetheir shareservers first seen in September 2025; of them, marked 1data/days.json, data/lamps.json6.8%needs JavaScript

The square 3

FigureWhat it isRuleSourcePrintedComputed nowMatch
grid.sidecells on a side of the square the lots fillG from the town's layoutthe town's layout177needs JavaScript
grid.cellscells in that squareG² from the town's layoutthe town's layout31,329needs JavaScript
grid.sparecells left emptyG² − N from the town's layoutthe town's layout20needs JavaScript

The seal 4

FigureWhat it isRuleSourcePrintedComputed nowMatch
seal.rootthe seal's root fingerprint, first 8 charactersthe seal, root, first 8 hexthe census seal707adaffneeds JavaScript
tamper.lotthe lot the tamper test flipsthe lot holding lots.txt byte length >> 1, counted from 1data/lots.txt15,655needs JavaScript
tamper.bytethe byte of lots.txt the tamper test flipslots.txt byte length >> 1 (The Witness's check)data/lots.txt31,309needs JavaScript
lotsfile.bytesthe size of lots.txtlots.txt size in bytesdata/lots.txt62,618needs JavaScript

Figures from the code 1

FigureWhat it isRuleSourcePrintedComputed nowMatch
facade.depthhow deep a facade is drawn, in town unitsFACADE_DEPTH (code)the town's buildings0.14needs JavaScript

Watch the census fall into a well →