From 4ee889e6eb695f3502fd6acc156605ee21c09304 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Wed, 9 Sep 2026 21:31:04 -0400 Subject: [PATCH] papers: the year's traffic, read four ways, and the gallery iframe that wasn't an audience MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aesthetic Network Traffic Report (arxiv-traffic) — 276,645,410 edge requests across sixteen zones against 71,143 direct human boots, pulled from Cloudflare zone analytics, the boots collection, lith's Caddy log and the piece-hit ledger. The first pass counted 118,982 "human" boots and called February the largest audience event in the project's history. It was top.kidlisp.com cycling codes in iframes on a screen in the LA timezone at a flat 1,600-2,300 boots every hour including four in the morning. Section 2.1 now separates embedded boots from arrivals, and every count of people in the paper is direct-only. What survives: /api/version is 57.0% of a day's requests and handle-colors another 16.4%; 45.6% of requests come from our own headless Chrome; the audience is 5,776 people in 106 countries and 93.5% of them never come back; justforfun.io converts better than Google; macpal-status has returned 500 to every call for long enough that nobody noticed; and the KidLisp registry stopped recording reads on 19 April. Data provenance and the four instruments' blind spots are in arxiv-traffic/data/README.md. Aesthetic Eye passed on the funnel figure and the brand period. Claude-Session: https://claude.ai/code/session_016Qtcrd9WiVLF3wrFL3wCSu --- papers/arxiv-traffic/aesthetic-eye.json | 51 + papers/arxiv-traffic/data/README.md | 56 ++ .../arxiv-traffic/data/ac-24h-browser-mix.csv | 13 + papers/arxiv-traffic/data/ac-24h-path-mix.csv | 16 + papers/arxiv-traffic/data/boots-daily.csv | 229 +++++ papers/arxiv-traffic/data/boots-monthly.csv | 10 + .../data/cloudflare-zone-monthly.csv | 95 ++ .../data/cloudflare-zone-ytd.csv | 17 + papers/arxiv-traffic/data/entry-paths.csv | 37 + papers/arxiv-traffic/data/geography.csv | 21 + papers/arxiv-traffic/data/lith-snapshot.txt | 56 ++ papers/arxiv-traffic/data/piece-hits-top.csv | 26 + papers/arxiv-traffic/data/referrers.csv | 26 + papers/arxiv-traffic/data/retention.csv | 5 + papers/arxiv-traffic/data/signed-in.csv | 4 + papers/arxiv-traffic/references.bib | 63 ++ .../arxiv-traffic/traffic-source-README.txt | 8 + papers/arxiv-traffic/traffic-source.zip | Bin 0 -> 18426 bytes papers/arxiv-traffic/traffic.atfi | 2 + papers/arxiv-traffic/traffic.tex | 940 ++++++++++++++++++ papers/cli.mjs | 12 + .../papers.aesthetic.computer/platter.html | 25 +- 22 files changed, 1700 insertions(+), 12 deletions(-) create mode 100644 papers/arxiv-traffic/aesthetic-eye.json create mode 100644 papers/arxiv-traffic/data/README.md create mode 100644 papers/arxiv-traffic/data/ac-24h-browser-mix.csv create mode 100644 papers/arxiv-traffic/data/ac-24h-path-mix.csv create mode 100644 papers/arxiv-traffic/data/boots-daily.csv create mode 100644 papers/arxiv-traffic/data/boots-monthly.csv create mode 100644 papers/arxiv-traffic/data/cloudflare-zone-monthly.csv create mode 100644 papers/arxiv-traffic/data/cloudflare-zone-ytd.csv create mode 100644 papers/arxiv-traffic/data/entry-paths.csv create mode 100644 papers/arxiv-traffic/data/geography.csv create mode 100644 papers/arxiv-traffic/data/lith-snapshot.txt create mode 100644 papers/arxiv-traffic/data/piece-hits-top.csv create mode 100644 papers/arxiv-traffic/data/referrers.csv create mode 100644 papers/arxiv-traffic/data/retention.csv create mode 100644 papers/arxiv-traffic/data/signed-in.csv create mode 100644 papers/arxiv-traffic/references.bib create mode 100644 papers/arxiv-traffic/traffic-source-README.txt create mode 100644 papers/arxiv-traffic/traffic-source.zip create mode 100644 papers/arxiv-traffic/traffic.atfi create mode 100644 papers/arxiv-traffic/traffic.tex diff --git a/papers/arxiv-traffic/aesthetic-eye.json b/papers/arxiv-traffic/aesthetic-eye.json new file mode 100644 index 0000000000..d9b8cbdb9e --- /dev/null +++ b/papers/arxiv-traffic/aesthetic-eye.json @@ -0,0 +1,51 @@ +{ + "schema": 1, + "paper": "Aesthetic Network Traffic Report", + "pdf": "traffic.pdf", + "expectedDiagrams": 1, + "visualInference": true, + "pdfSha256": "a36fd8fd44ae18d3ac603cc01f62f6b30881b842326936354d28f4cd6c52c766", + "reviewedAt": "2026-09-10T03:45:00Z", + "reviewer": { + "kind": "visual-inference", + "agent": "Claude" + }, + "brand": { + "canonicalName": "Aesthetic.Computer", + "dotColor": "#B44887", + "design": "pass", + "checks": { + "period": "pass", + "dotColor": "pass" + }, + "notes": "Verified at 800 dpi on the page-1 byline: the period between 'Aesthetic' and 'Computer' renders in AC pink against the gray byline run. Confirmed again in the abstract and in the page-6 bibliography entries, which route through the same \\ac macro. Domain names are set in \\texttt throughout (aesthetic.computer, notepat.com) and are literal hostnames, not wordmarks." + }, + "diagrams": [ + { + "id": "reduction-funnel", + "page": 3, + "crop": [ + 0.52, + 0.05, + 0.39, + 0.2 + ], + "design": "pass", + "checks": { + "tangents": "pass", + "type": "pass", + "balance": "pass", + "spaceUse": "pass", + "hierarchy": "pass", + "edgeRouting": "pass" + }, + "notes": "Rebuilt twice. The first render centered fixed-width bands on a shared axis and set each count in white inside its band; the widest band ran under its own left-hand label and the palest fills left white numerals unreadable. Recast as a left-aligned log10 bar chart: label above each bar in gray, count outside the bar end in acdark on white, bar length log10 of the value so all six orders of magnitude stay visible without a scale break. The second rebuild corrected the data rather than the drawing: bands 4-6 were re-cut on direct (non-embedded) boots after an always-on gallery iframe was found inside the human total. The chart carries no connectors; edgeRouting passes vacuously because nothing in the figure implies a direction it does not draw." + } + ], + "history": [ + { + "reviewedAt": "2026-09-10T03:45:00Z", + "notes": "Re-reviewed after the embedded-boot correction. Section 5, Tables 3, 4 and 6, Figure 1, the abstract, the appendix entry-shape paragraph and the conclusion were all re-cut on 71,143 direct boots instead of 118,982 mixed ones. Page count went 7 -> 8 -> 7: the appendix table and two trimmed paragraphs plus a footnotesize bibliography pulled the references and the source-bundle plaque back onto page 7, so the document no longer ends on a near-empty page. All seven pages re-inspected at 100 dpi; Table 1 checked for the earlier zone-name overrun, Table 7 for the earlier justification stretch, both clean." + } + ] +} \ No newline at end of file diff --git a/papers/arxiv-traffic/data/README.md b/papers/arxiv-traffic/data/README.md new file mode 100644 index 0000000000..a462d8e5af --- /dev/null +++ b/papers/arxiv-traffic/data/README.md @@ -0,0 +1,56 @@ +# Data provenance — Aesthetic Network Traffic Report + +All files pulled 2026-09-09 (evening, UTC). Four instruments, four different +things they can see. Nothing here is estimated; where an instrument is blind, +the column is absent rather than filled. + +## Files + +| File | Instrument | Window | Notes | +|---|---|---|---| +| `cloudflare-zone-ytd.csv` | Cloudflare zone analytics (`httpRequests1dGroups`) | 2026-01-01 → 2026-09-09 | All 16 zones on the account. `daily_unique_sum` is the **sum of daily unique-IP counts**, not distinct visitors for the period — it double-counts anyone present on more than one day, and it counts crawlers. | +| `cloudflare-zone-monthly.csv` | same | same | Per zone per month. | +| `ac-24h-path-mix.csv` | Cloudflare `httpRequestsAdaptiveGroups` | 2026-09-08 23:00 → 2026-09-09 23:00 UTC | Free-plan adaptive queries are capped at a 1-day range, so this is a single representative day, not a year. Zone total for the window: 1,927,263. | +| `ac-24h-browser-mix.csv` | same | same | `userAgentBrowser` is Cloudflare's classification. | +| `lith-snapshot.txt` | Caddy JSON access log on `lith.aesthetic.computer` | 2026-09-09 19:41 → 23:16 UTC (3.75 h) | 103,451 requests. Caddy rotates on size and retains ~4 h at current volume, so this is the whole of what the origin can be asked about. | +| `boots-daily.csv`, `boots-monthly.csv` | `boots` collection (MongoDB) | 2026-01-24 → 2026-09-09 | One document per page load **that executed JavaScript**. Filtered to remove `localhost`/`localDev`, IP-literal hosts, and bot user-agents. | +| `retention.csv`, `geography.csv` | same | 2026-07-14 → 2026-09-09 | Restricted to the window where client IP and country are trustworthy (see *Known gaps*). | +| `entry-paths.csv`, `referrers.csv`, `signed-in.csv` | same | 2026-01-24 → 2026-09-09 | | +| `piece-hits-top.csv` | `piece-hits` collection | 2025-12-31 → 2026-09-09 | Server-side HTML route counter. Includes crawler and exploit-probe paths (see *Known gaps*). | + +## What is solid + +- Cloudflare edge request, page-view and daily-unique counts per zone for the + full year. Cloudflare is in front of every zone; nothing bypasses it. +- Boot-log records from 2026-01-24 (the day `/api/boot-log` shipped) onward. + Every field written by the browser — host, path, referrer, user-agent, + language, timezone, screen, embedded flag — is reliable for the whole period. +- The lith request mix and 5xx tally for the sampled 3.75 hours. + +## What is soft + +- **Client IP and geography before 2026-07-14.** `boot-log.mjs` read + Netlify `x-nf-*` headers until commit `9dbe9b83fa`; on lith those headers do + not exist, so `server.country` was null on every boot before that date and + `server.ip` recorded the Cloudflare edge address rather than the client. + Any per-client count before 2026-07-14 is an undercount and is not used. +- **Bot classification** is user-agent-based. Well-behaved crawlers identify + themselves; headless browsers driving our own fleet do not, and are + separated by host and by request pattern instead. +- **Cloudflare Web Analytics (RUM)** is installed on 10 zones but its beacon + fires from our own headless browsers as readily as from people, and the + free tier both samples and rounds (aesthetic.computer reports exactly + "50000" visits in two consecutive months). It is not used for any figure. + +## Known gaps + +- `piece-hits` accepts any slug the HTML router saw. The second most-hit + "piece" of 2026 is `+CSCOE+/logon.html` (20,435), a Cisco VPN exploit probe. +- The `kidlisp` collection stopped recording reads on 2026-04-19 and stopped + receiving new codes on 2026-06-17, while `/api/store-kidlisp` continues to + serve ~290 requests every 3.75 h. Its `hits` and `lastAccessed` columns are + frozen and are not used for anything in this report. +- `@handles` documents carry no creation timestamp, so handle registration + cannot be plotted over time. Only the total (2,973) is available. +- Caddy log retention (~4 h) means the origin cannot answer any question + about the past. diff --git a/papers/arxiv-traffic/data/ac-24h-browser-mix.csv b/papers/arxiv-traffic/data/ac-24h-browser-mix.csv new file mode 100644 index 0000000000..eca189c47e --- /dev/null +++ b/papers/arxiv-traffic/data/ac-24h-browser-mix.csv @@ -0,0 +1,13 @@ +browser,requests,share_pct +ChromeHeadless,878712,45.59 +Unknown,399015,20.70 +Chrome,315948,16.39 +Firefox,151034,7.84 +MobileSafari,93921,4.87 +ChromeMobile,50218,2.61 +SamsungInternet,22222,1.15 +Safari,7590,0.39 +Curl,6422,0.33 +AppleBot,1054,0.05 +GoogleBot,613,0.03 +ChromeDerivative,275,0.01 diff --git a/papers/arxiv-traffic/data/ac-24h-path-mix.csv b/papers/arxiv-traffic/data/ac-24h-path-mix.csv new file mode 100644 index 0000000000..c8f74949d9 --- /dev/null +++ b/papers/arxiv-traffic/data/ac-24h-path-mix.csv @@ -0,0 +1,16 @@ +path,requests,share_pct +/api/version,1098386,56.99 +/.netlify/functions/handle-colors,315508,16.37 +/api/piece-hit,68902,3.58 +/,64428,3.34 +/api/piece-log,30581,1.59 +/aesthetic.computer/lib/parse.mjs,8918,0.46 +/cdn-cgi/rum,8457,0.44 +/aesthetic.computer/lib/num.mjs,8024,0.42 +/aesthetic.computer/bios.mjs,7933,0.41 +/api/macpal-art,6447,0.33 +/api/macpal-status,6423,0.33 +/aesthetic.computer/lib/text.mjs,5900,0.31 +/aesthetic.computer/lib/frame-capture.mjs,5749,0.30 +/aesthetic.computer/lib/graph.mjs,5678,0.29 +/aesthetic.computer/lib/pack-mode.mjs,5584,0.29 diff --git a/papers/arxiv-traffic/data/boots-daily.csv b/papers/arxiv-traffic/data/boots-daily.csv new file mode 100644 index 0000000000..189b466266 --- /dev/null +++ b/papers/arxiv-traffic/data/boots-daily.csv @@ -0,0 +1,229 @@ +date,human_boots,distinct_client_ips +2026-01-24,210,0 +2026-01-25,267,0 +2026-01-26,259,0 +2026-01-27,447,0 +2026-01-28,415,0 +2026-01-29,783,0 +2026-01-30,525,0 +2026-01-31,697,0 +2026-02-01,665,0 +2026-02-02,723,0 +2026-02-03,562,0 +2026-02-04,401,0 +2026-02-05,1180,0 +2026-02-06,4067,0 +2026-02-07,3830,0 +2026-02-08,484,0 +2026-02-09,738,0 +2026-02-10,954,0 +2026-02-11,2074,0 +2026-02-12,1696,0 +2026-02-13,8036,120 +2026-02-14,7395,170 +2026-02-15,7430,138 +2026-02-16,6622,133 +2026-02-17,790,323 +2026-02-18,529,201 +2026-02-19,657,166 +2026-02-20,642,169 +2026-02-21,409,117 +2026-02-22,470,117 +2026-02-23,940,140 +2026-02-24,839,122 +2026-02-25,868,156 +2026-02-26,681,198 +2026-02-27,407,135 +2026-02-28,450,128 +2026-03-01,493,123 +2026-03-02,297,110 +2026-03-03,86,43 +2026-03-04,418,122 +2026-03-05,464,168 +2026-03-06,331,123 +2026-03-07,266,95 +2026-03-08,269,115 +2026-03-09,290,107 +2026-03-10,326,107 +2026-03-11,279,112 +2026-03-12,535,135 +2026-03-13,444,72 +2026-03-14,391,20 +2026-03-15,371,24 +2026-03-16,360,40 +2026-03-17,312,39 +2026-03-18,334,25 +2026-03-19,413,43 +2026-03-20,223,33 +2026-03-21,282,25 +2026-03-22,284,21 +2026-03-23,335,35 +2026-03-24,283,22 +2026-03-25,307,34 +2026-03-26,291,30 +2026-03-27,316,24 +2026-03-28,204,78 +2026-03-29,394,150 +2026-03-30,626,180 +2026-03-31,414,168 +2026-04-01,415,159 +2026-04-02,401,134 +2026-04-03,242,103 +2026-04-04,275,94 +2026-04-05,199,88 +2026-04-06,249,115 +2026-04-07,275,116 +2026-04-08,724,152 +2026-04-09,383,131 +2026-04-10,329,117 +2026-04-11,207,67 +2026-04-12,301,74 +2026-04-13,342,98 +2026-04-14,257,99 +2026-04-15,451,116 +2026-04-16,589,122 +2026-04-17,437,144 +2026-04-18,378,102 +2026-04-19,317,117 +2026-04-20,478,124 +2026-04-21,476,148 +2026-04-22,337,100 +2026-04-23,453,96 +2026-04-24,387,107 +2026-04-25,767,109 +2026-04-26,517,92 +2026-04-27,688,106 +2026-04-28,342,105 +2026-04-29,334,108 +2026-04-30,574,165 +2026-05-01,309,96 +2026-05-02,312,89 +2026-05-03,262,72 +2026-05-04,267,88 +2026-05-05,326,88 +2026-05-06,247,99 +2026-05-07,280,75 +2026-05-08,277,101 +2026-05-09,309,98 +2026-05-10,219,97 +2026-05-11,273,86 +2026-05-12,210,92 +2026-05-13,388,114 +2026-05-14,225,86 +2026-05-15,241,96 +2026-05-16,66,34 +2026-05-18,282,104 +2026-05-19,304,110 +2026-05-20,273,95 +2026-05-21,270,94 +2026-05-22,384,134 +2026-05-23,372,103 +2026-05-24,354,91 +2026-05-25,289,107 +2026-05-26,302,104 +2026-05-27,263,92 +2026-05-28,484,127 +2026-05-29,288,101 +2026-05-30,372,120 +2026-05-31,227,75 +2026-06-01,340,138 +2026-06-02,208,104 +2026-06-03,285,106 +2026-06-04,551,126 +2026-06-05,354,122 +2026-06-06,241,60 +2026-06-07,287,120 +2026-06-08,527,195 +2026-06-09,470,233 +2026-06-10,375,177 +2026-06-11,364,146 +2026-06-12,283,124 +2026-06-13,273,106 +2026-06-14,301,116 +2026-06-15,476,98 +2026-06-16,236,82 +2026-06-17,400,109 +2026-06-18,264,82 +2026-06-19,208,55 +2026-06-20,336,146 +2026-06-21,183,60 +2026-06-22,238,80 +2026-06-23,272,86 +2026-06-24,192,66 +2026-06-25,270,57 +2026-06-26,287,84 +2026-06-27,180,52 +2026-06-28,194,60 +2026-06-29,219,81 +2026-06-30,265,83 +2026-07-01,226,89 +2026-07-02,257,79 +2026-07-03,237,78 +2026-07-04,154,61 +2026-07-05,245,76 +2026-07-06,287,49 +2026-07-07,291,92 +2026-07-08,246,97 +2026-07-09,301,88 +2026-07-10,267,94 +2026-07-11,193,63 +2026-07-12,254,97 +2026-07-13,213,98 +2026-07-14,293,110 +2026-07-15,310,145 +2026-07-16,85,37 +2026-07-17,89,28 +2026-07-18,244,66 +2026-07-19,147,55 +2026-07-20,489,68 +2026-07-21,367,190 +2026-07-22,200,72 +2026-07-23,196,86 +2026-07-24,202,69 +2026-07-25,242,74 +2026-07-26,187,56 +2026-07-27,180,59 +2026-07-28,220,62 +2026-07-29,246,99 +2026-07-30,194,59 +2026-07-31,210,55 +2026-08-01,214,80 +2026-08-02,211,81 +2026-08-03,296,105 +2026-08-04,265,79 +2026-08-05,220,93 +2026-08-06,246,99 +2026-08-07,339,118 +2026-08-08,228,105 +2026-08-09,685,120 +2026-08-10,333,131 +2026-08-11,279,119 +2026-08-12,301,112 +2026-08-13,324,111 +2026-08-14,305,150 +2026-08-15,229,106 +2026-08-16,298,104 +2026-08-17,225,107 +2026-08-18,262,142 +2026-08-19,310,154 +2026-08-20,480,169 +2026-08-21,279,127 +2026-08-22,307,117 +2026-08-23,313,107 +2026-08-24,272,106 +2026-08-25,295,140 +2026-08-26,362,154 +2026-08-27,415,183 +2026-08-28,292,106 +2026-08-29,267,107 +2026-08-30,309,116 +2026-08-31,290,101 +2026-09-01,258,92 +2026-09-02,809,584 +2026-09-03,667,440 +2026-09-04,322,106 +2026-09-05,304,122 +2026-09-06,291,155 +2026-09-07,252,133 +2026-09-08,332,147 +2026-09-09,366,203 diff --git a/papers/arxiv-traffic/data/boots-monthly.csv b/papers/arxiv-traffic/data/boots-monthly.csv new file mode 100644 index 0000000000..f18e4755ad --- /dev/null +++ b/papers/arxiv-traffic/data/boots-monthly.csv @@ -0,0 +1,10 @@ +month,human_boots,distinct_client_ips,reached_running_boot,error_status,embedded,mobile +2026-01,3603,0,2519,80,751,0 +2026-02,54539,1220,49682,280,43584,3154 +2026-03,10638,1083,7395,89,1385,3986 +2026-04,12124,1253,8890,77,824,4494 +2026-05,8675,1144,6283,90,292,3896 +2026-06,9079,1287,6715,85,372,3959 +2026-07,7272,1721,6153,96,307,2949 +2026-08,9451,3126,7639,520,250,4285 +2026-09,3601,1875,2600,17,77,1049 diff --git a/papers/arxiv-traffic/data/cloudflare-zone-monthly.csv b/papers/arxiv-traffic/data/cloudflare-zone-monthly.csv new file mode 100644 index 0000000000..9fd455e893 --- /dev/null +++ b/papers/arxiv-traffic/data/cloudflare-zone-monthly.csv @@ -0,0 +1,95 @@ +zone,month,requests,pageviews,daily_unique_sum +aesthetic.computer,2026-01,1041151,15212,21836 +aesthetic.computer,2026-02,13585864,124792,42662 +aesthetic.computer,2026-03,17284340,351078,69310 +aesthetic.computer,2026-04,25038547,788462,61699 +aesthetic.computer,2026-05,36520869,884199,70780 +aesthetic.computer,2026-06,34563798,1237581,74578 +aesthetic.computer,2026-07,35604282,1069033,81097 +aesthetic.computer,2026-08,52552308,1220561,113094 +aesthetic.computer,2026-09,24672203,562495,43010 +danzballet.studio,2026-07,6669,2208,671 +danzballet.studio,2026-08,10568,7077,2298 +danzballet.studio,2026-09,2877,2197,597 +drvkforlife.com,2026-05,5,2,4 +false.work,2026-01,58251,2257,3347 +false.work,2026-02,39874,3441,5102 +false.work,2026-03,79561,4949,6791 +false.work,2026-04,58966,7755,4624 +false.work,2026-05,73502,9901,5319 +false.work,2026-06,86955,27770,5182 +false.work,2026-07,74090,18444,5863 +false.work,2026-08,95837,24403,6254 +false.work,2026-09,19239,2947,1797 +jas.life,2026-01,1290693,94535,66117 +jas.life,2026-02,1063408,108410,78338 +jas.life,2026-03,1501745,170580,161676 +jas.life,2026-04,1643440,224445,124036 +jas.life,2026-05,3337653,180294,73428 +jas.life,2026-06,6434465,198129,67983 +jas.life,2026-07,4282166,227803,126767 +jas.life,2026-08,8186663,342619,171243 +jas.life,2026-09,427228,57944,35741 +justanothersystem.org,2026-02,2,0,1 +justanothersystem.org,2026-03,2038,1154,407 +justanothersystem.org,2026-04,41645,17155,2223 +justanothersystem.org,2026-05,35600,17850,2415 +justanothersystem.org,2026-06,52058,22521,2670 +justanothersystem.org,2026-07,44460,22658,2845 +justanothersystem.org,2026-08,92523,56068,3238 +justanothersystem.org,2026-09,17426,8448,1005 +kidlisp.com,2026-01,19940,10795,1443 +kidlisp.com,2026-02,117893,75836,4886 +kidlisp.com,2026-03,217495,180821,6728 +kidlisp.com,2026-04,64777,50553,4274 +kidlisp.com,2026-05,119858,85198,5194 +kidlisp.com,2026-06,176448,117833,5191 +kidlisp.com,2026-07,224806,127459,5554 +kidlisp.com,2026-08,278020,140673,6293 +kidlisp.com,2026-09,46845,32147,1764 +laklok.com,2026-05,3389,87,74 +laklok.com,2026-06,824426,2941,3819 +laklok.com,2026-07,240634,1904,3591 +laklok.com,2026-08,1214559,2719,4349 +laklok.com,2026-09,42600,721,1003 +menuband.app,2026-07,262662,9325,2246 +menuband.app,2026-08,32253,9129,2629 +menuband.app,2026-09,7132,3999,792 +notepat.com,2026-02,89386,667,6932 +notepat.com,2026-03,74253,1663,9168 +notepat.com,2026-04,59022,1502,8468 +notepat.com,2026-05,69131,1483,8686 +notepat.com,2026-06,139682,1599,8859 +notepat.com,2026-07,107474,1705,9100 +notepat.com,2026-08,173235,2173,9155 +notepat.com,2026-09,13593,668,2623 +oskiewar.com,2026-09,1,0,1 +prompt.ac,2026-02,18300,0,1169 +prompt.ac,2026-03,55189,6,3451 +prompt.ac,2026-04,53248,15,3200 +prompt.ac,2026-05,80691,39,3139 +prompt.ac,2026-06,32093,32,2075 +prompt.ac,2026-07,52679,1914,2546 +prompt.ac,2026-08,130435,2225,3903 +prompt.ac,2026-09,34812,6375,1369 +quiltnet.org,2026-05,5177,2516,1394 +quiltnet.org,2026-06,6609,3462,1806 +quiltnet.org,2026-07,14237,9946,2246 +quiltnet.org,2026-08,15838,8692,1959 +quiltnet.org,2026-09,3068,1964,635 +regarde.io,2026-06,16654,10968,1034 +regarde.io,2026-07,10020,6210,1139 +regarde.io,2026-08,20157,14045,1593 +regarde.io,2026-09,18446,13239,650 +sotce.net,2026-01,224978,11253,10342 +sotce.net,2026-02,218814,8471,8698 +sotce.net,2026-03,160567,9600,10967 +sotce.net,2026-04,179653,7376,8880 +sotce.net,2026-05,118484,5993,8195 +sotce.net,2026-06,131676,6430,8216 +sotce.net,2026-07,183627,11605,8225 +sotce.net,2026-08,163069,6394,8907 +sotce.net,2026-09,56028,3779,2857 +whistlegraph.org,2026-07,51307,11816,6309 +whistlegraph.org,2026-08,37016,12902,7063 +whistlegraph.org,2026-09,10055,3137,2272 diff --git a/papers/arxiv-traffic/data/cloudflare-zone-ytd.csv b/papers/arxiv-traffic/data/cloudflare-zone-ytd.csv new file mode 100644 index 0000000000..d94c6310da --- /dev/null +++ b/papers/arxiv-traffic/data/cloudflare-zone-ytd.csv @@ -0,0 +1,17 @@ +zone,zone_created,ytd_requests,ytd_pageviews,ytd_daily_unique_sum,first_day_with_data +aesthetic.computer,2023-08-16,240863362,6253413,578066,2026-01-01 +jas.life,2025-04-29,28167461,1604759,905329,2026-01-01 +laklok.com,2026-05-31,2325608,8372,12836,2026-05-31 +sotce.net,2024-11-01,1436896,70901,75287,2026-01-01 +kidlisp.com,2026-01-19,1266082,821315,41327,2026-01-19 +notepat.com,2026-02-08,725776,11460,62991,2026-02-08 +false.work,2026-01-08,586275,101867,44279,2026-01-08 +prompt.ac,2026-02-17,457447,10606,20852,2026-02-17 +menuband.app,2026-07-05,302047,22453,5667,2026-07-05 +justanothersystem.org,2026-02-02,285752,145854,14804,2026-02-02 +whistlegraph.org,2026-07-08,98378,27855,15644,2026-07-08 +regarde.io,2026-06-11,65277,44462,4416,2026-06-11 +quiltnet.org,2026-05-15,44929,26580,8040,2026-05-15 +danzballet.studio,2026-07-27,20114,11482,3566,2026-07-27 +drvkforlife.com,2026-05-23,5,2,4,2026-05-24 +oskiewar.com,2026-08-08,1,0,1,2026-09-09 diff --git a/papers/arxiv-traffic/data/entry-paths.csv b/papers/arxiv-traffic/data/entry-paths.csv new file mode 100644 index 0000000000..eed6e10f26 --- /dev/null +++ b/papers/arxiv-traffic/data/entry-paths.csv @@ -0,0 +1,37 @@ +month,entry_class,boots +2026-01,root/prompt,1655 +2026-01,kidlisp code,505 +2026-01,handle page,15 +2026-01,named piece,1428 +2026-02,named piece,4570 +2026-02,handle page,43 +2026-02,root/prompt,7362 +2026-02,kidlisp code,42564 +2026-03,kidlisp code,1038 +2026-03,named piece,3922 +2026-03,root/prompt,5623 +2026-03,handle page,55 +2026-04,kidlisp code,731 +2026-04,handle page,24 +2026-04,root/prompt,5844 +2026-04,named piece,5525 +2026-05,named piece,3797 +2026-05,handle page,33 +2026-05,kidlisp code,79 +2026-05,root/prompt,4766 +2026-06,kidlisp code,717 +2026-06,named piece,4233 +2026-06,root/prompt,3785 +2026-06,handle page,344 +2026-07,handle page,89 +2026-07,root/prompt,3246 +2026-07,named piece,3856 +2026-07,kidlisp code,81 +2026-08,kidlisp code,162 +2026-08,root/prompt,4773 +2026-08,named piece,4360 +2026-08,handle page,156 +2026-09,kidlisp code,22 +2026-09,handle page,173 +2026-09,root/prompt,1329 +2026-09,named piece,2077 diff --git a/papers/arxiv-traffic/data/geography.csv b/papers/arxiv-traffic/data/geography.csv new file mode 100644 index 0000000000..85c6e15a7b --- /dev/null +++ b/papers/arxiv-traffic/data/geography.csv @@ -0,0 +1,21 @@ +country,boots,distinct_clients +US,3570,1388 +DK,7443,934 +NO,865,486 +CN,318,300 +SG,215,211 +FR,188,152 +BR,150,121 +NL,272,70 +GB,187,69 +IN,89,67 +DE,120,63 +AR,79,61 +CA,90,55 +HK,53,51 +BD,49,49 +PK,44,44 +MX,45,40 +VN,44,39 +TR,469,38 +PH,100,32 diff --git a/papers/arxiv-traffic/data/lith-snapshot.txt b/papers/arxiv-traffic/data/lith-snapshot.txt new file mode 100644 index 0000000000..e428386878 --- /dev/null +++ b/papers/arxiv-traffic/data/lith-snapshot.txt @@ -0,0 +1,56 @@ +#window,103451,1788982898,1788996400 +== PATHS +/api/version,53315 +/.netlify/functions/handle-colors,11988 +/api/piece-hit,9647 +/,9110 +/api/piece-log,2385 +/api/macpal-art,1097 +/api/macpal-status,1089 +/handle,986 +/wp-admin/index.php,488 +/api/bdf-glyph,409 +/api/boot-log,302 +/aesthetic.computer/bios.mjs,299 +/aesthetic.computer/lib/parse.mjs,293 +/api/store-kidlisp,291 +/wp-login.php,261 +/aesthetic.computer/lib/disk-worker-manifest.json,212 +/api/kidlisp-log,206 +/l5-hello.lua,142 +/api/chat/messages,135 +/run,129 +== HOSTS +aesthetic.computer,97569,28045,69524 +sotce.net,830,430,400 +data.aesthetic.computer,824,4,820 +laklok.com,816,10,806 +209.38.133.33:443,687,599,88 +www.danzballet.studio,554,489,65 +prompt.ac,552,14,538 +danzballet.studio,526,465,61 +builds.false.work,224,194,30 +209.38.133.33,133,2,131 +sitemap.aesthetic.computer,130,126,4 +whistlegraph.org,89,7,82 +www.notepat.com,86,5,81 +justanothersystem.org,75,55,20 +jas.life,48,28,20 +papers.aesthetic.computer,45,20,25 +notepat.com,42,33,9 +news.aesthetic.computer,36,16,20 +www.whistlegraph.org,21,13,8 +keeps.aesthetic.computer,21,0,21 +== 5XX +/api/macpal-status,500,618 +/api/macpal-art,500,310 +/api/flux,503,73 +/api/pruttivox,503,15 +/api/painting-metadata,500,9 +/.well-known/passkey-endpoints,500,5 +/api/session/properties,500,4 +/robots.txt,500,2 +/api/mood/all,500,2 +/api/pixel/2048:conform/xij.png,500,1 +/wp-includes/css/buttons.css,500,1 +/media/system/js/core.js,500,1 diff --git a/papers/arxiv-traffic/data/piece-hits-top.csv b/papers/arxiv-traffic/data/piece-hits-top.csv new file mode 100644 index 0000000000..3e9d9c5145 --- /dev/null +++ b/papers/arxiv-traffic/data/piece-hits-top.csv @@ -0,0 +1,26 @@ +piece,type,server_hits,first_hit,last_hit +prompt,system,4994635,Wed Dec 31,Wed Sep 09 ++CSCOE+/logon.html,system,20435,Wed Apr 01,Mon Sep 07 +laer-klokken,system,19800,Wed Dec 31,Wed Sep 09 +nopaint,system,11093,Thu Apr 23,Wed Sep 09 +notepat,system,10981,Wed Dec 31,Wed Sep 09 ++webvpn+/index.html,system,9802,Tue Apr 14,Thu Aug 06 +$bop,system,3775,Fri Jan 02,Wed Sep 09 +$4xa,system,3172,Tue Jan 13,Wed Sep 09 +$ceo,system,2927,Sat Jan 03,Wed Sep 09 +$roz,system,2858,Fri Jan 02,Wed Sep 09 +$pie,system,2798,Sat Jan 03,Wed Sep 09 +$cow,system,2517,Sat Jan 03,Wed Sep 09 +starfield,system,2094,Sat Mar 28,Wed Sep 09 +$nsh,system,1940,Wed Jan 14,Tue Sep 08 +$4bb,system,1906,Mon Jan 05,Wed Sep 09 +$dlb,system,1830,Tue Jan 20,Wed Sep 09 +api/.env,system,1817,Thu Jan 01,Wed Sep 09 +$rzo,system,1785,Tue Jan 20,Wed Sep 09 +$9ay,system,1745,Tue Jan 13,Wed Sep 09 +$87a,system,1743,Sun Jan 04,Wed Sep 09 +$isd,system,1730,Thu Jan 22,Wed Sep 09 +$wa9,system,1721,Tue Jan 20,Wed Sep 09 +prutti,system,1710,Wed Dec 31,Wed Sep 09 +$17m,system,1666,Tue Jan 20,Wed Sep 09 +$c4x,system,1660,Sun Jan 04,Wed Sep 09 diff --git a/papers/arxiv-traffic/data/referrers.csv b/papers/arxiv-traffic/data/referrers.csv new file mode 100644 index 0000000000..4c8d579902 --- /dev/null +++ b/papers/arxiv-traffic/data/referrers.csv @@ -0,0 +1,26 @@ +referrer_host,boots,distinct_clients,reached_running_boot,landed_on +www.google.com,926,553,797,laklok.com www.aesthetic.computer nopaint.art sitemap.aesthetic.computer aesthetic.computer notepat.com +jas.life,886,511,633,aesthetic.computer nopaint.art +bing.com,504,130,472,laklok.com nopaint.art oskiewar.com aesthetic.computer +justforfun.io,487,437,458,aesthetic.computer nopaint.art +mail.google.com,454,181,427,aesthetic.computer +www.tiktok.com,236,185,184,aesthetic.computer +com.google.android.googlequicksearchbox,219,139,193,aesthetic.computer nopaint.art notepat.com +cloudhiker.net,202,179,158,nopaint.art aesthetic.computer +l.instagram.com,170,105,153,laklok.com nopaint.art aesthetic.computer www.laklok.com +www.facebook.com,161,119,54,laklok.com www.aesthetic.computer nopaint.art aesthetic.computer www.laklok.com +www.raster.art,91,73,41,aesthetic.computer +l.facebook.com,87,27,81,www.aesthetic.computer aesthetic.computer +opensea.io,87,70,26,aesthetic.computer +openweird.com,81,78,70,nopaint.art aesthetic.computer +github.com,76,54,70,nopaint.art aesthetic.computer +m.facebook.com,59,54,51,aesthetic.computer laklok.com nopaint.art +duckduckgo.com,54,35,52,aesthetic.computer www.aesthetic.computer +tangled.org,52,39,46,aesthetic.computer +ufoteologi.dk,49,20,39,aesthetic.computer +whistlegraph.org,46,30,36,aesthetic.computer +facebook.com,43,16,35,www.aesthetic.computer aesthetic.computer +luma.com,35,19,28,aesthetic.computer +go.bsky.app,33,29,30,aesthetic.computer +rhizome.org,32,26,29,aesthetic.computer +www.pointlesssites.com,30,24,28,nopaint.art aesthetic.computer diff --git a/papers/arxiv-traffic/data/retention.csv b/papers/arxiv-traffic/data/retention.csv new file mode 100644 index 0000000000..21c78712e2 --- /dev/null +++ b/papers/arxiv-traffic/data/retention.csv @@ -0,0 +1,5 @@ +days_active,clients,boots +1 day,5675,10925 +2-4 days,331,2631 +5-9 days,35,1056 +10+ days,19,2535 diff --git a/papers/arxiv-traffic/data/signed-in.csv b/papers/arxiv-traffic/data/signed-in.csv new file mode 100644 index 0000000000..c4473a5393 --- /dev/null +++ b/papers/arxiv-traffic/data/signed-in.csv @@ -0,0 +1,4 @@ +month,signed_in_boots,distinct_handles +2026-07,1870,41 +2026-08,4957,73 +2026-09,1299,31 diff --git a/papers/arxiv-traffic/references.bib b/papers/arxiv-traffic/references.bib new file mode 100644 index 0000000000..afd458d002 --- /dev/null +++ b/papers/arxiv-traffic/references.bib @@ -0,0 +1,63 @@ +@misc{cloudflare2026graphql, + author = {{Cloudflare, Inc.}}, + title = {{GraphQL Analytics API}}, + year = {2026}, + note = {\url{https://developers.cloudflare.com/analytics/graphql-api/}}, +} + +@misc{cloudflare2026datasets, + author = {{Cloudflare, Inc.}}, + title = {Analytics datasets and retention limits}, + year = {2026}, + note = {\url{https://developers.cloudflare.com/analytics/graphql-api/features/data-sets/}}, +} + +@misc{caddy2026log, + author = {{Caddy Web Server}}, + title = {Log directive and JSON access-log encoder}, + year = {2026}, + note = {\url{https://caddyserver.com/docs/caddyfile/directives/log}}, +} + +@article{nielsen1993response, + author = {Nielsen, Jakob}, + title = {Response Times: The 3 Important Limits}, + journal = {Usability Engineering}, + publisher = {Morgan Kaufmann}, + year = {1993}, +} + +@misc{scudder2026ac, + author = {{@jeffrey}}, + title = {{Aesthetic}{\acdot}{Computer} '26: A Mobile-First Runtime for Creative Computing}, + year = {2026}, + note = {arXiv preprint draft in repository}, +} + +@misc{scudder2026audit, + author = {{@jeffrey}}, + title = {Network Audit: Who Uses {Aesthetic}{\acdot}{Computer} and What Do They Make?}, + year = {2026}, + note = {arXiv preprint draft in repository}, +} + +@misc{scudder2026ios, + author = {{@jeffrey}}, + title = {{iOS} So Far: Ten Years of {Aesthetic}{\acdot}{Computer} on Apple's Store}, + year = {2026}, + note = {arXiv preprint draft in repository}, +} + +@misc{scudder2026kidlisp, + author = {{@jeffrey}}, + title = {{KidLisp}: A Minimal Lisp for Generative Art}, + year = {2026}, + note = {arXiv preprint draft in repository}, +} + +@misc{scudder2026url, + author = {{@jeffrey}}, + title = {The {URL} Tradition}, + year = {2026}, + note = {arXiv preprint draft in repository}, +} \ No newline at end of file diff --git a/papers/arxiv-traffic/traffic-source-README.txt b/papers/arxiv-traffic/traffic-source-README.txt new file mode 100644 index 0000000000..f2988873b8 --- /dev/null +++ b/papers/arxiv-traffic/traffic-source-README.txt @@ -0,0 +1,8 @@ +traffic — embedded source bundle + +Included files +- references.bib (BIB source) +- traffic.tex (TEX source) + +Purpose +This machine-readable bundle accompanies the rendered PDF for accessibility, audit, quotation, and reproducible editing. The PDF remains the canonical reading edition. The bundle is deliberately limited to text source files; private evidence, credentials, raw datasets, generated PDFs, and unlisted assets are excluded. diff --git a/papers/arxiv-traffic/traffic-source.zip b/papers/arxiv-traffic/traffic-source.zip new file mode 100644 index 0000000000000000000000000000000000000000..c1f9e60e7883314053e7e0f1391bbc4c12136d40 GIT binary patch literal 18426 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 I&~OLw0PHG*kpKVy literal 0 HcmV?d00001 diff --git a/papers/arxiv-traffic/traffic.atfi b/papers/arxiv-traffic/traffic.atfi new file mode 100644 index 0000000000..09871147a4 --- /dev/null +++ b/papers/arxiv-traffic/traffic.atfi @@ -0,0 +1,2 @@ +\attachfile@timezone{} +\attachfile@file[]{747261666669632D736F757263652E7A6970} diff --git a/papers/arxiv-traffic/traffic.tex b/papers/arxiv-traffic/traffic.tex new file mode 100644 index 0000000000..052e3c77d8 --- /dev/null +++ b/papers/arxiv-traffic/traffic.tex @@ -0,0 +1,940 @@ +% !TEX program = xelatex +\documentclass[10pt,letterpaper,twocolumn]{article} + +% === GEOMETRY === +\usepackage[top=0.75in, bottom=0.75in, left=0.75in, right=0.75in]{geometry} + +% === FONTS === +\usepackage{fontspec} +\setmainfont{Latin Modern Roman}[ + Extension=.otf, + UprightFont=lmroman10-regular, + BoldFont=lmroman10-bold, + ItalicFont=lmroman10-italic, + BoldItalicFont=lmroman10-bolditalic, +] +\setsansfont{Latin Modern Sans}[ + Extension=.otf, + UprightFont=lmsans10-regular, + BoldFont=lmsans10-bold, + ItalicFont=lmsans10-oblique, + BoldItalicFont=lmsans10-boldoblique, +] +\setmonofont{Latin Modern Mono}[ + Extension=.otf, + UprightFont=lmmono10-regular, + ItalicFont=lmmono10-italic, + Scale=0.85, +] +% YWFT Processing carries the display title only. Its punctuation glyphs +% are unreliable and its charset omits dashes, so nothing with a mark in +% it is ever set in this face. +\newfontfamily\acbold{ywft-processing-bold}[ + Path=../../system/public/type/webfonts/, + Extension=.ttf +] + +% === PACKAGES === +\usepackage{xcolor} +\usepackage{titlesec} +\usepackage{enumitem} +\usepackage{booktabs} +\usepackage{tabularx} +\usepackage{fancyhdr} +\usepackage{hyperref} +\usepackage{xurl} +\usepackage{graphicx} +\usepackage{ragged2e} +\usepackage{microtype} +\usepackage{natbib} +\usepackage{tikz} +\usetikzlibrary{positioning,arrows.meta,calc,shapes.geometric} +\usepackage{../ac-source-bundle} + +% === COLORS === +\definecolor{acpink}{RGB}{180,72,135} +\definecolor{acpurple}{RGB}{120,80,180} +\definecolor{acdark}{RGB}{64,56,74} +\definecolor{acgray}{RGB}{119,119,119} +\definecolor{acgreen}{RGB}{46,150,72} +\definecolor{acblue}{RGB}{54,110,190} +\definecolor{acamber}{RGB}{201,138,20} + +% === HYPERREF === +\hypersetup{ + colorlinks=true, + linkcolor=acpurple, + urlcolor=acpurple, + citecolor=acpurple, + pdfauthor={@jeffrey}, + pdftitle={Aesthetic Network Traffic Report}, +} + +% === SECTION FORMATTING === +\titleformat{\section} + {\normalfont\bfseries\normalsize\uppercase} + {\thesection.} + {0.5em} + {} +\titlespacing{\section}{0pt}{1.2em}{0.3em} +\titleformat{\subsection} + {\normalfont\bfseries\small} + {\thesubsection} + {0.5em} + {} +\titlespacing{\subsection}{0pt}{0.8em}{0.2em} + +% === HEADER/FOOTER === +\pagestyle{fancy} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\fancyhead[C]{\footnotesize\color{acgray}\textit{Aesthetic Network Traffic Report}} +\fancyfoot[C]{\footnotesize\thepage} + +% === LISTS, COLUMNS, PARAGRAPHS === +\setlist[itemize]{nosep, leftmargin=1.2em, itemsep=0.15em} +\setlist[enumerate]{nosep, leftmargin=1.4em, itemsep=0.15em} +\setlength{\columnsep}{1.8em} +\setlength{\parindent}{1em} +\setlength{\parskip}{0.3em} +\tolerance=800 +\emergencystretch=1em +\hyphenpenalty=50 + +% === BRAND === +\newcommand{\acdot}{{\color{acpink}.}} +\newcommand{\ac}{Aesthetic{\acdot}Computer} + +% === TIKZ STYLES === +\tikzset{ + band/.style={draw=acgray!60, line width=0.5pt, fill=white, + inner sep=0pt, font=\scriptsize\sffamily, text=acdark, align=center}, + tag/.style={font=\scriptsize\sffamily, text=acgray, align=left}, + tagr/.style={font=\scriptsize\sffamily, text=acgray, align=right}, +} + +\begin{document} + +\twocolumn[{% +\begin{center} +{\acbold\fontsize{27pt}{31pt}\selectfont\color{acdark} Aesthetic Network Traffic Report}\par +\vspace{0.55em} +{\itshape\fontsize{13pt}{16pt}\selectfont\color{acpink} +Sixteen domains, four instruments, and the distance between a request and a person}\par +\vspace{0.6em} +{\small\color{acgray} \href{https://prompt.ac/@jeffrey}{@jeffrey} \,$\cdot$\, \ac{} \,$\cdot$\, ORCID \href{https://orcid.org/0009-0007-4460-4913}{0009-0007-4460-4913}}\par +\vspace{0.25em} +{\small\color{acgray} 9 September 2026}\par +\vspace{0.55em} +{\color{acpink}\rule{\textwidth}{1.2pt}} +\vspace{0.5em} +\end{center} + +\begin{quote} +\small\noindent\textbf{Abstract.} +Between 1~January and 9~September 2026 the sixteen domains of the +\ac{} network served \textbf{276,645,410} requests at the edge. Over +the same period the runtime recorded \textbf{71,143} direct boots in +which a human browser actually executed the application, plus 47,839 +more inside an iframe --- a ratio of about 3,889 edge requests to every +one direct arrival. This report reads +that gap from four primary instruments: Cloudflare zone analytics for +all sixteen zones, the runtime's own boot telemetry in MongoDB, the +Caddy access log on the lith origin, and the server-side piece-hit +ledger. Three findings organize it. First, the traffic is +overwhelmingly the network talking to itself: on a representative day +\texttt{/api/version} was 57.0\% of all requests to +\texttt{aesthetic.computer} and \texttt{handle-colors} another 16.4\%, +while 45.6\% of requests came from headless Chrome we operate. +Second, the human layer is small, real, flat, and almost entirely +non-returning --- 5,776 distinct clients across 106 countries in the +eight weeks where client identity is trustworthy, of which 93.5\% +appeared on exactly one day and 18 clients produced 15.0\% of all +boots. It has no growth trend and no seasonal event; the one apparent +spike in the record turned out to be an always-on gallery page of our +own. Third, the one external channel that both delivers volume and +survives contact with the runtime is the serendipity-directory web: +\texttt{justforfun.io} sent 437 distinct clients whose pieces started +94\% of the time, better than search, better than social, and better +than any surface the project has ever paid attention to. I close with +ten ranked openings, each tied to the measurement that motivates it. +\end{quote} +\vspace{0.5em} +}] + +\section{Introduction} + +The question that produced this report was asked casually: how many +people used \ac{} this year? The honest first answer was that nobody +knew, because the number that comes to hand --- requests --- is off by nearly four orders of magnitude from the number that +matters, and nothing in the stack had ever been asked to reconcile +them. Worse, the first pass at the reconciliation was itself wrong: the +biggest apparent audience event of the year turned out to be a gallery +page of our own, left running in a browser +(\S\ref{sec:method-embed}). + +\ac{} is a runtime and social network for creative computing whose +principal surface is a URL~\citep{scudder2026ac,scudder2026url}. Over +2026 it stopped being one URL. Thirteen new domains were added to the +account this year, bringing the network to sixteen: piece-specific +front doors (\texttt{notepat.com}, \texttt{kidlisp.com}, +\texttt{laklok.com}, \texttt{oskiewar.com}), project sites +(\texttt{whistlegraph.org}, \texttt{quiltnet.org}, +\texttt{menuband.app}), client work (\texttt{regarde.io}, +\texttt{danzballet.studio}, \texttt{drvkforlife.com}), and personal +publishing (\texttt{jas.life}, \texttt{justanothersystem.org}). +Each was pointed at the same runtime or at a static build beside it, +and each began accumulating numbers that nobody read. + +This report reads them. It is a successor to the 2026 network +audit~\citep{scudder2026audit}, which asked who uses \ac{} and what +they make; the question here is narrower and more mechanical --- what +arrives, from where, what happens to it, and what breaks on the way. +The posture follows the recent store audit~\citep{scudder2026ios}: +every number comes from a primary pull, and the paper ends in ranked +actions rather than in a shrug. + +Three questions structure it. Section~\ref{sec:method} establishes what +each instrument can and cannot see, because the answer turns almost +entirely on that. Sections~\ref{sec:network} and~\ref{sec:selftalk} ask +what the 276 million requests actually are. +Sections~\ref{sec:human} through~\ref{sec:health} ask who the people +are, how they arrive, whether they return, and what fails while they +are here. Section~\ref{sec:openings} answers the third question --- what +to do --- as ten ranked openings. + +\section{Method} +\label{sec:method} + +Four instruments, pulled on 9~September 2026. They see different things, +and the differences are the report. + +\textbf{Cloudflare zone analytics.} Every one of the sixteen domains is +proxied through Cloudflare, so nothing reaches an origin without being +counted at the edge~\citep{cloudflare2026graphql}. Daily request, +page-view and unique-IP counts were pulled per zone for +2026-01-01 through 2026-09-09 via the GraphQL +\texttt{httpRequests1dGroups} dataset. All sixteen zones are on the free +plan, which retains this dataset for the full year but restricts the +higher-resolution \texttt{httpRequestsAdaptiveGroups} dataset --- the one +carrying path, user-agent and cache +dimensions --- to a one-day query window~\citep{cloudflare2026datasets}. +Every path-level figure in this report is therefore a single +representative day: 2026-09-08 23:00 to 2026-09-09 23:00 UTC. + +\textbf{Boot telemetry.} \texttt{/api/boot-log} writes one MongoDB +document per page load \emph{that executes JavaScript}, carrying host, +path, referrer, user-agent, language, timezone, screen geometry, an +embedded-in-iframe flag, a signed-in handle once auth resolves, and a +timestamped event trace of the boot itself. It shipped 2026-01-24, so +the boot series covers 228 of the year's 252 days. Because the beacon +requires a working JavaScript runtime, crawlers that fetch HTML and +stop are structurally invisible to it --- which is exactly why it is the +report's human-layer instrument. Records were filtered to remove +\texttt{localhost} and \texttt{localDev} loads, IP-literal hosts, and +bot user-agents, leaving 118,982 boots, which then split into 71,143 +\emph{direct} boots and 47,839 boots inside an iframe +(\S\ref{sec:method-embed}). + +\textbf{Origin access log.} Caddy on \texttt{lith.aesthetic.computer} +writes a JSON access log with full request headers~\citep{caddy2026log}. +It rotates on size and retains roughly four hours at current volume, so +it can answer questions about the present and none at all about the +past. The sample used here is 103,451 requests over 3.75 hours on the +evening of 9~September. + +\textbf{Piece-hit ledger.} \texttt{/api/piece-hit} maintains a +server-side counter per piece slug, incremented by the HTML index route +on every page render including renders to crawlers. It is the only +year-long record of what the router served, and it is polluted (\S\ref{sec:faults}). + +\subsection{What is not trustworthy, and why} + +Two instruments were pulled and then set aside, and one field was +date-bounded. Recording this is not throat-clearing: three of the +report's four surprises are visible only because a number that looked +authoritative was checked. + +\textbf{Client IP and country before 2026-07-14.} \texttt{boot-log.mjs} +read Netlify \texttt{x-nf-*} geo headers until commit +\texttt{9dbe9b83fa}. Production moved to lith --- Caddy and Express behind +Cloudflare --- where those headers do not exist, so \texttt{server.country} +was null on every boot ever recorded before that commit and +\texttt{server.ip} held the Cloudflare edge address rather than the +visitor's. Any per-client count before 2026-07-14 is an undercount of +unknown size. Every distinct-client figure in this report is therefore +restricted to the 58-day window 2026-07-14 to 2026-09-09, and the +earlier months are reported in boots only. + +\textbf{Cloudflare Web Analytics.} A RUM beacon is installed on ten of +the sixteen zones. It is not used here for two reasons: the free tier +samples and rounds hard enough to report exactly ``50000'' visits for +\texttt{aesthetic.computer} in two consecutive months, and the beacon +fires from the headless browsers this project operates as readily as +from people --- which, as \S\ref{sec:selftalk} shows, is most of the +traffic. + +\textbf{Daily unique IPs.} Cloudflare's per-day unique count is +reported per zone in the data bundle but is used in this text only as a +shape, never as an audience. It sums across days, so a visitor present +on thirty days counts thirty times, and it counts crawlers. + +\label{sec:method-embed} +\textbf{Embedded boots are not arrivals.} 47,839 of the 118,982 +filtered boots ran inside an iframe, and they are not people opening +the network. 29,318 of them carry a \texttt{*.kidlisp.com} wall page +as referrer --- \texttt{top.kidlisp.com} alone accounts for 25,996 --- +and a further 16,485 carry no referrer at all. Nearly all of the +second group fall in February, report the +\texttt{America/Los\_Angeles} timezone, enter at a bare +\texttt{\$code}, and arrive at a flat 1,600 to 2,300 boots in +\emph{every hour of the day}, night included. That is an always-on +gallery page cycling KidLisp codes in iframes, not an audience. It +produced 43,584 boots in February, or 79.9\% of that month, and it is +the reason the first pass at this report mistook a screen in a room for +the largest audience event in the project's history. Every count of +people below is therefore taken over direct boots only; embedded boots +are reported separately where they matter, as in the marketplace +referrers of \S\ref{sec:arrival}. + +\section{The network as it stands} +\label{sec:network} + +Table~\ref{tab:zones} is the whole account. Thirteen of the sixteen +zones were created during 2026; only \texttt{aesthetic.computer} (2023), +\texttt{sotce.net} (2024) and \texttt{jas.life} (2025) predate the year. + +\begin{table}[t] +\centering +\footnotesize +\caption{The sixteen zones, 2026-01-01 to 2026-09-09, ordered by edge requests. ``Added'' is the month the zone joined the account; a year means it predates 2026. Per-day unique-IP counts are in the data bundle and are deliberately not reproduced here (\S\ref{sec:method}).} +\label{tab:zones} +\scriptsize +\begin{tabular}{@{}l l r r@{}} +\toprule +\textbf{Zone} & \textbf{Added} & \textbf{Requests} & \textbf{Page views} \\ +\midrule +\texttt{aesthetic.computer} & 2023 & 240,863,362 & 6,253,413 \\ +\texttt{jas.life} & 2025 & 28,167,461 & 1,604,759 \\ +\texttt{laklok.com} & May & 2,325,608 & 8,372 \\ +\texttt{sotce.net} & 2024 & 1,436,896 & 70,901 \\ +\texttt{kidlisp.com} & Jan & 1,266,082 & 821,315 \\ +\texttt{notepat.com} & Feb & 725,776 & 11,460 \\ +\texttt{false.work} & Jan & 586,275 & 101,867 \\ +\texttt{prompt.ac} & Feb & 457,447 & 10,606 \\ +\texttt{menuband.app} & Jul & 302,047 & 22,453 \\ +\texttt{justanothersystem.org} & Feb & 285,752 & 145,854 \\ +\texttt{whistlegraph.org} & Jul & 98,378 & 27,855 \\ +\texttt{regarde.io} & Jun & 65,277 & 44,462 \\ +\texttt{quiltnet.org} & May & 44,929 & 26,580 \\ +\texttt{danzballet.studio} & Jul & 20,114 & 11,482 \\ +\texttt{drvkforlife.com} & May & 5 & 2 \\ +\texttt{oskiewar.com} & Aug & 1 & 0 \\ +\midrule +\textbf{Total} & & \textbf{276,645,410} & \textbf{9,161,381} \\ +\bottomrule +\end{tabular} +\end{table} + +Two things are visible immediately. The distribution is not long-tailed +but bimodal: two zones carry 97.2\% of all requests, and the bottom four carry, +between them, about forty-nine minutes of the top one. +\texttt{drvkforlife.com} served five requests in a year; +\texttt{oskiewar.com}, registered in August for a game that has shipped +twenty thousand recorded matches, served one. A domain that has served +five requests in a year is not a surface. It is a renewal notice. + +Second, page views and requests do not track. \texttt{laklok.com} took +2.3 million requests against 8,372 page views, a ratio of 278:1; +\texttt{kidlisp.com} took 1.27 million requests against 821,315 page +views, a ratio of 1.5:1. The first is a runtime endpoint being +hammered; the second is a static site being read. The account contains +both kinds of object and the aggregate number describes neither. + +\section{What the requests actually are} +\label{sec:selftalk} + +Table~\ref{tab:mix} resolves the top zone for one full day. The day +carried 1,927,263 requests. Five paths are 81.9\% of them, and not one +of the five is a person opening a piece. + +\begin{table}[t] +\centering +\footnotesize +\caption{\texttt{aesthetic.computer} request mix, 2026-09-08 23:00 to 2026-09-09 23:00 UTC. Zone total 1,927,263.} +\label{tab:mix} +\begin{tabularx}{\columnwidth}{@{}X r r@{}} +\toprule +\textbf{Path} & \textbf{Requests} & \textbf{Share} \\ +\midrule +\texttt{/api/version} & 1,098,386 & 57.0\% \\ +\texttt{/.netlify/functions/handle-colors} & 315,508 & 16.4\% \\ +\texttt{/api/piece-hit} & 68,902 & 3.6\% \\ +\texttt{/} & 64,428 & 3.3\% \\ +\texttt{/api/piece-log} & 30,581 & 1.6\% \\ +\texttt{/aesthetic.computer/lib/parse.mjs} & 8,918 & 0.5\% \\ +\texttt{/cdn-cgi/rum} & 8,457 & 0.4\% \\ +\texttt{/aesthetic.computer/lib/num.mjs} & 8,024 & 0.4\% \\ +\texttt{/aesthetic.computer/bios.mjs} & 7,933 & 0.4\% \\ +\texttt{/api/macpal-art} & 6,447 & 0.3\% \\ +\midrule +\textbf{Top five} & \textbf{1,577,805} & \textbf{81.9\%} \\ +\bottomrule +\end{tabularx} +\end{table} + +\texttt{/api/version} is a build-freshness check. The origin log shows +its cadence directly: one client made 12,122 requests to it in 3.75 +hours, or one every 1.04 seconds, and seven clients between them +accounted for 51,882 of the sample's 53,315 hits on that path. It is a +one-hertz poll, per open tab, forever. Cloudflare answered 1,159,323 +requests that day with a \texttt{dynamic 304} --- uncached, forwarded to +the origin, and empty. The poll is not serving anyone; it is +maintaining a heartbeat that nothing listens to at that resolution. + +\texttt{handle-colors} is worse in kind if not in volume: 315,508 +requests a day for a colour lookup, issued from \texttt{disk.mjs} and +\texttt{disk.worker} at roughly two-thirds of a hertz per session. It +is a pure function of a handle, and it is being fetched over the +network sixty times a minute. + +\texttt{/api/piece-hit} is the origin talking to itself. The HTML index +route records a hit by issuing an HTTP POST, via \texttt{got}, to its +own public URL --- out through Cloudflare and back in. In the origin +sample, 9,647 of 103,451 requests (9.3\%) came from lith's own address +carrying the \texttt{got} user-agent. Every page render costs a second +round trip through the CDN to increment a counter that is one process +away. + +The user-agent split confirms the shape. Of the day's 1,927,263 +requests, \textbf{878,712 (45.6\%) were classified \texttt{ChromeHeadless}} --- +the project's own oven, capture and streaming fleet --- and a further +399,015 (20.7\%) were unclassifiable. Chrome, Firefox, Mobile Safari, +Chrome Mobile, Samsung Internet and Safari together, which is the whole +of what a person could plausibly be holding, account for 640,933 +requests, or 33.3\%. And most of that third is the polling described +above, issued by browsers that people had already opened. + +Figure~\ref{fig:funnel} states the reduction end to end. + +\begin{figure}[t] +\centering +\begin{tikzpicture}[x=1pt,y=1pt] +\definecolor{c1}{RGB}{214,203,232} +\definecolor{c2}{RGB}{196,180,224} +\definecolor{c3}{RGB}{176,155,216} +\definecolor{c4}{RGB}{150,122,206} +\definecolor{c5}{RGB}{122,88,194} +\definecolor{c6}{RGB}{180,72,135} +\foreach \i/\w/\c/\lab/\val in { + 0/141.4/c1/{edge requests, all 16 zones}/{276{,}645{,}410}, + 1/113.3/c2/{HTML page views}/{9{,}161{,}381}, + 2/108.9/c3/{server-side piece hits}/{5{,}390{,}161}, + 3/73.2/c4/{direct human boots}/{71{,}143}, + 4/52.5/c5/{distinct clients, 58 days}/{5{,}776}, + 5/13.4/c6/{clients returning on 5+ days}/{51}} +{ + \node[anchor=south west, tag] at (0,-\i*23+3.5) {\lab}; + \fill[\c] (0,-\i*23-4.5) rectangle (\w,-\i*23+2.5); + \node[anchor=west, font=\scriptsize\sffamily\bfseries, text=acdark] + at (\w+4,-\i*23-1) {\val}; +} +\end{tikzpicture} +\caption{The network's year, reduced. Each band is measured by a different instrument (\S\ref{sec:method}). Bar length is $\log_{10}$ of the count, so six orders of magnitude stay visible in one frame. Period is 2026-01-01 to 2026-09-09, except the bottom two bands (2026-07-14 to 2026-09-09). A further 47,839 boots ran inside an iframe and are excluded from the bottom three bands (\S\ref{sec:method-embed}).} +\label{fig:funnel} +\end{figure} + +\section{The human layer} +\label{sec:human} + +71,143 boots opened the runtime directly --- not inside anybody's +iframe --- between 24~January and 9~September. +Table~\ref{tab:months} breaks them down. + +\begin{table}[t] +\centering +\footnotesize +\caption{Direct human boots by month. ``Ran'' is the share whose event trace reached \texttt{running boot}, the point at which the piece is on screen. Clients before July are undercounts (\S\ref{sec:method}) and are omitted. Embedded boots are excluded throughout (\S\ref{sec:method-embed}).} +\label{tab:months} +\vspace{0.35em} +\begin{tabular}{@{}l r r r r@{}} +\toprule +\textbf{Month} & \textbf{Boots} & \textbf{Ran} & \textbf{Mobile} & \textbf{Clients} \\ +\midrule +Jan (from 24th) & 2,852 & 64.8\% & --- & --- \\ +Feb & 10,955 & 67.5\% & 26.3\% & --- \\ +Mar & 9,253 & 66.7\% & 41.4\% & --- \\ +Apr & 11,300 & 73.5\% & 38.9\% & --- \\ +May & 8,383 & 72.4\% & 45.8\% & --- \\ +Jun & 8,707 & 74.3\% & 44.8\% & --- \\ +Jul & 6,965 & 85.6\% & 41.1\% & 1,579 \\ +Aug & 9,201 & 81.3\% & 45.9\% & 2,970 \\ +Sep (to 9th) & 3,527 & 72.0\% & 29.5\% & 1,847 \\ +\midrule +\textbf{Total} & \textbf{71,143} & \textbf{73.4\%} & & \\ +\bottomrule +\end{tabular} +\end{table} + +The striking thing about this table is that nothing happens in it. +Every full month of 2026 sits between 8,383 and 11,300 direct boots. +There is no growth, no decay, and --- once the gallery page of +\S\ref{sec:method-embed} is removed --- no event. The network has run +at roughly 300 human boots a day, every day, for eight months, through +thirteen domain launches, an installation, a native OS release and a +game. + +What does move is the client count in the trustworthy window: 1,579 in +July, 2,970 in August, 1,847 in the first nine days of September. +Across the whole 58-day window the runtime was opened directly by +\textbf{5,776 distinct clients in 106 countries}. Flat boots against a +rising client count means the same volume spread across more people: +more strangers, each staying less. That is the shape of a site being +discovered, not of one being used. + +The one durable destination is the Danish clock. +\texttt{/laer-klokken} took 22,278 direct boots across the year and +never fell below 2,441 in any full month, peaking at 4,157 in April, +with 998 distinct clients opening it between June and September alone. +It is the only piece in the network with a habit attached to it, and it +is a clock --- an object whose entire proposition is that you look at it +again tomorrow. + +The geography follows from that. Table~\ref{tab:geo} ranks by client +rather than by volume, which separates a distributed audience from a +single busy machine: Turkey sits high by boots and nearly nowhere by +clients, because almost all of it is one \ac{} Native OS device polling +from a single address. + +\begin{table}[t] +\centering +\footnotesize +\caption{Top countries by distinct client, direct boots, 2026-07-14 to 2026-09-09. 106 countries appear in total.} +\label{tab:geo} +\vspace{0.35em} +\begin{tabularx}{\columnwidth}{@{}Xrr@{\hspace{1.2em}}Xrr@{}} +\toprule +& \textbf{Cl.} & \textbf{Boots} & & \textbf{Cl.} & \textbf{Boots} \\ +\midrule +US & 1,220 & 3,296 & NL & 69 & 270 \\ +DK & 935 & 7,447 & IN & 66 & 81 \\ +NO & 486 & 865 & GB & 59 & 163 \\ +CN & 280 & 296 & AR & 52 & 66 \\ +SG & 199 & 202 & DE & 51 & 97 \\ +FR & 146 & 182 & HK & 51 & 53 \\ +BR & 119 & 146 & BD & 49 & 49 \\ +\bottomrule +\end{tabularx} +\end{table} + +935 Danish clients produced 7,447 boots in 58 days against 3,296 from +1,220 American ones. The clock is the whole of that difference. + +Roughly 42\% of direct boots are mobile. The signed-in layer is much +smaller than the identity layer suggests: 2,973 handles are registered, +and 41, 73 and 31 distinct handles appeared in July, August and the +first nine days of September respectively. In its best month the +network was used, while signed in, by 2.5\% of the people who have ever +claimed a name on it. + +\section{Arrival} +\label{sec:arrival} + +Only about one direct boot in twelve carries an external referrer. What +those referrers are is the most actionable table in the report. + +\begin{table}[t] +\centering +\footnotesize +\caption{External referrers by boots, whole year. ``Run'' is the share of arrivals whose trace reached \texttt{running boot}. Rows marked $\ddagger$ deliver every arrival inside an iframe. Sources referring fewer than 30 boots are omitted.} +\label{tab:ref} +\begin{tabularx}{\columnwidth}{@{}X r r r@{}} +\toprule +\textbf{Referrer} & \textbf{Boots} & \textbf{Clients} & \textbf{Run} \\ +\midrule +www.google.com & 926 & 553 & 86\% \\ +jas.life & 886 & 511 & 71\% \\ +bing.com & 504 & 130 & 94\% \\ +\textbf{justforfun.io} & 487 & 437 & \textbf{94\%} \\ +mail.google.com & 454 & 181 & 94\% \\ +www.tiktok.com & 236 & 185 & 78\% \\ +google (Android search) & 219 & 139 & 88\% \\ +\textbf{cloudhiker.net} & 202 & 179 & 78\% \\ +l.instagram.com & 170 & 105 & 90\% \\ +www.facebook.com & 162 & 119 & \textbf{33\%} \\ +www.raster.art$\ddagger$ & 91 & 73 & 45\% \\ +opensea.io$\ddagger$ & 87 & 70 & 30\% \\ +\textbf{openweird.com} & 81 & 78 & 86\% \\ +github.com & 76 & 54 & 92\% \\ +duckduckgo.com & 54 & 35 & 96\% \\ +tangled.org & 52 & 39 & 88\% \\ +whistlegraph.org & 46 & 30 & 78\% \\ +go.bsky.app & 33 & 29 & 91\% \\ +rhizome.org & 32 & 26 & 91\% \\ +\textbf{pointlesssites.com} & 30 & 24 & 93\% \\ +\bottomrule +\end{tabularx} +\end{table} + +Read the clients column, not the boots column. \texttt{bing.com} sent +504 boots from 130 clients --- a handful of people reloading, or a +crawler with a browser. \texttt{justforfun.io} sent 487 boots from +\textbf{437 distinct clients}: 437 different people, one visit each, +94\% of whom got a running piece. By that measure it is the single +best-performing external surface the network has, ahead of Google. + +\texttt{justforfun.io}, \texttt{cloudhiker.net}, +\texttt{openweird.com} and \texttt{pointlesssites.com} are the same +kind of object --- serendipity directories, the ``random interesting +website'' genre that survived the social era by not competing with it. +Alongside them in the referrer tail sit +\texttt{tinytools.directory}, \texttt{dog-house.neocities.org} and +\texttt{sadgrlonline.github.io}: personal link pages and small-web +indexes. Nobody at this project submitted anything to any of them on +purpose. + +Where they point is \texttt{nopaint.art}, which is not in +Table~\ref{tab:zones} because its DNS sits outside this Cloudflare +account, and which nonetheless quietly became the network's best +front door. It took 1,238 boots from \textbf{1,069 distinct clients}, +essentially all of them landing on \texttt{/}: 431 from +\texttt{justforfun.io}, 76 from \texttt{openweird.com}, 47 from Google, +29 from \texttt{pointlesssites.com}, 14 from a Neocities page, 12 from +Reddit. One piece, one path, no prompt, no login --- and a run rate that +beats the main domain. + +Three referrers lose most of what they send. +\texttt{www.facebook.com} arrivals reach graphics initialisation 94\% +of the time and \texttt{running boot} only 33\% of the time: the canvas +appears and they are gone within the second it takes to load the piece. +\texttt{opensea.io} (289 boots, all inside an iframe) and +\texttt{www.raster.art} (140 boots, all embedded) run 57\% and 56\% of +the time, and contribute most of the report's zero-event +records --- boots that registered and then never reported another line. +Embedded playback of a token's artwork is a materially worse experience +than opening the same piece directly, and it is measurable. + +\section{Return} +\label{sec:return} + +Table~\ref{tab:ret} is the retention picture over the trustworthy +window. It is the least comfortable table here. + +\begin{table}[t] +\centering +\footnotesize +\caption{Days active per distinct client, direct boots, 2026-07-14 to 2026-09-09 (58 days).} +\label{tab:ret} +\vspace{0.35em} +\begin{tabularx}{\columnwidth}{@{}X r r r@{}} +\toprule +\textbf{Days active} & \textbf{Clients} & \textbf{Boots} & \textbf{Share of boots} \\ +\midrule +1 day & 5,401 & 10,512 & 63.1\% \\ +2--4 days & 323 & 2,604 & 15.6\% \\ +5--9 days & 33 & 1,035 & 6.2\% \\ +10+ days & 18 & 2,503 & 15.0\% \\ +\midrule +\textbf{Total} & \textbf{5,776} & \textbf{16,660} & \\ +\bottomrule +\end{tabularx} +\end{table} + +93.5\% of the people who opened a piece did so on exactly one day and +never came back. Fifty-one clients --- fifty-one --- returned on five or +more days, and eighteen of those produced 15.0\% of every direct boot +in the window. The network has an audience of nearly six thousand and a +community of about fifty. + +The making signals agree. Paintings saved per month ran 46, 47, 67, +39, 38, 23, 78, 142 from January to August --- a real recovery in the +second half, and still under five a day. Chat messages fell from 876 in +March to 38 in August and 5 in the first nine days of September, against +12,449 in the same collection for 2024; mood posts fell from 52 in +March to 13 in August. Hearts, the reaction primitive added in +February, rose steadily to 65 in August. The parts of the network that +ask for a sentence are emptying; the parts that ask for a tap are +holding. + +\section{Endpoint health} +\label{sec:health} + +\subsection{Boot latency} + +Median boot time for direct arrivals held between 3.0 and 4.6 seconds +from March onward, with the 90th percentile between 6.5 and 9.0 +seconds. January and February are worse --- p50 10.4~s and 6.6~s --- +because client-side timing then covered module-graph fetches later +moved behind the service worker. For September the figures are +p50~2.98~s and p90~8.32~s. The classical usability threshold +for holding attention is one second for flow and ten seconds for +abandonment~\citep{nielsen1993response}; a tenth of arrivals are at or +past the second of those limits before the instrument makes a sound. + +\subsection{Errors and unresolved boots} + +Explicit boot errors are rare and concentrated: 1,334 across the year, +of which 520 fell in August. The dominant terminal event is +\texttt{connection error --- retrying}, 514 occurrences since June, +followed by module-load retries. These are network failures on the +module graph, which is the same failure surface addressed by the +service-worker timeout race shipped in September. + +A larger category is quieter. In September, 1,213 of 3,601 boots +remain at status \texttt{started}: the document was created and the +completion write never arrived. 299 of them carry zero events at all; +281 stall at \texttt{loading core modules}; 193 recorded +\texttt{running boot} --- meaning the piece did start --- and were never +marked complete. This is a mix of real abandonment and a telemetry +write that does not survive a closing tab, and the two cannot currently +be separated. It is why this report uses ``reached \texttt{running +boot}'' rather than ``status success'' as its completion measure. + +On the origin, 1,190 responses in a 3.75-hour sample were 5xx. +They are almost entirely two endpoints: \texttt{/api/macpal-status} +(618) and \texttt{/api/macpal-art} (310) returned 500 continuously, +which extrapolates to roughly six thousand errors a day, with +\texttt{/api/flux} adding 73 503s and \texttt{/api/pruttivox} 15. +Two broken endpoints have been failing on every call, at volume, for +long enough that nobody noticed. + +The origin also absorbs a steady scan load --- 488 requests to +\texttt{/wp-admin/index.php} and 261 to \texttt{/wp-login.php} in the +same 3.75 hours --- which is unremarkable in itself and consequential +only because of what it does to the piece ledger. + +\subsection{Instrumentation faults} +\label{sec:faults} + +Four defects change what can be claimed, and all four are cheap to fix. + +\begin{table}[t] +\centering +\footnotesize +\caption{Measurement defects found while assembling this report.} +\label{tab:faults} +\begin{tabularx}{\columnwidth}{@{}>{\raggedright\arraybackslash}p{0.30\columnwidth}>{\raggedright\arraybackslash}X@{}} +\toprule +\textbf{Defect} & \textbf{Consequence} \\ +\midrule +Geo headers wrong until 2026-07-14 & No country and no true client IP for the first six months of the year. Fixed in \texttt{9dbe9b83fa}. \\ +\addlinespace +\texttt{piece-hits} accepts any slug & The second most-hit ``piece'' of 2026 is \texttt{+CSCOE+/logon.html}, a Cisco VPN exploit probe, at 20,435 hits; \texttt{+webvpn+/index.html} is sixth at 9,802. \\ +\addlinespace +KidLisp registry dark & The \texttt{kidlisp} collection last recorded a read on 2026-04-19 and last accepted a new code on 2026-06-17, while \texttt{/api/store-kidlisp} still takes \textasciitilde290 requests every 3.75\,h. Its \texttt{hits} and \texttt{lastAccessed} columns are frozen. \\ +\addlinespace +No product analytics & \texttt{shared/posthog-policy.mjs} classifies every endpoint in the system for PostHog, with per-class exclusions. No project token is configured in the repository or the vault. The policy is complete and the instrument was never installed. \\ +\bottomrule +\end{tabularx} +\end{table} + +The KidLisp gap is the expensive one. KidLisp codes are the artifact +the network was built to pass around~\citep{scudder2026kidlisp}, and +the canonical record of their creation and access has been blind for a +quarter of the year while the codes themselves continue to serve. + +\section{Ten openings} +\label{sec:openings} + +Ranked by expected effect per hour of work. Each names the measurement +that motivates it. + +\textbf{1. Stop polling \texttt{/api/version} at one hertz.} +1,098,386 requests in a day, 57.0\% of the zone, answered 1,159,323 +times with an empty 304. A 60-second interval with edge caching, or a +push over the session socket that already exists, removes about +1.08~million requests a day and makes every other number in this report +legible for the first time. Nothing downstream needs second-resolution +build freshness. + +\textbf{2. Stop fetching \texttt{handle-colors} over the network.} +315,508 requests a day, 16.4\% of the zone, for a pure function of a +handle called from \texttt{disk.mjs} and \texttt{disk.worker}. Compute +it locally or ship it as an immutable hashed asset. Openings 1 and 2 +together are 73.4\% of the top domain's traffic. + +\textbf{3. Call \texttt{piece-hit} in process.} lith issues 9,647 HTTP +POSTs to its own public URL in 3.75 hours, out through Cloudflare and +back. It is one function call away. Fix the slug filter in the same +change so the ledger stops recording exploit probes as pieces. + +\textbf{4. Fix the two endpoints that fail on every call.} +\texttt{/api/macpal-status} and \texttt{/api/macpal-art} returned 500 +to 928 of 928 requests in the sample. Add the alert while you are +there: 5xx rate per endpoint is one Grafana panel, and its absence is +the reason this went unnoticed. + +\textbf{5. Restore the KidLisp registry, then read it.} No creation +record since 17~June and no read record since 19~April, for the +language the network is named around. Direct arrivals at a bare \texttt{\$code} fell from 681 in June to 22 +in the first nine days of September, and with the registry dark there +is no way to tell whether people stopped making codes or the store +stopped saying so. + +\textbf{6. Submit every domain to the serendipity directories.} +\texttt{justforfun.io} delivered 437 distinct clients at a 94\% run +rate without being asked. \texttt{cloudhiker.net}, +\texttt{openweird.com}, \texttt{pointlesssites.com} and +\texttt{tinytools.directory} did the same at smaller scale. These are +submission forms, not campaigns; the cost is an afternoon and the +measured conversion beats Google. Submit \texttt{nopaint.art}, +\texttt{notepat.com}, \texttt{kidlisp.com}, \texttt{laklok.com} and +\texttt{oskiewar.com} separately, because each is a single-purpose page +of exactly the kind those indexes list. + +\textbf{7. Treat \texttt{nopaint.art} as the front door it already +is.} 1,069 distinct clients, one path, no prompt, no login, a better +run rate than the main domain. It is the only surface in the network +that a stranger can succeed at in four seconds. Everything the project +wants a newcomer to find should be reachable from it, and the same +shape --- one piece, one path, no chrome --- should be what every other +piece domain serves at \texttt{/}. + +\textbf{8. Give the 5,776 a reason to come back.} 93.5\% of clients +appeared on exactly one day, and the only retention instrument in the +whole record is a push-token collection holding three rows. The +network already knows what works: \texttt{/laer-klokken} held 2,441 to +4,157 boots a month for eight months because a clock is worth opening +again tomorrow. Build the second one, and give people a low-friction +way to be told when it changes. + +\textbf{9. Cut p90 boot time below four seconds.} p50 is 2.98~s and +p90 is 8.32~s, and 73.4\% of direct boots reach \texttt{running boot} +against 94\% for the best-converting referrer. Strangers on cold caches +are the gap. The service-worker and immutable-bundle work shipped in +September addresses the module graph; the remaining cost is bios and +its imports, which are still fetched as thirty-two separate files. + +\textbf{10. Decide about the empty domains.} \texttt{drvkforlife.com} +served five requests this year and \texttt{oskiewar.com} served one, +for a game with twenty thousand recorded matches. Either point them at +something --- \texttt{oskiewar.com} at the game, per opening 7 --- or let +them lapse. Sixteen zones with two carrying 97.2\% of traffic is not a +network; it is one network and fourteen parked names. + +\section{Ethics, privacy, limitations} + +No individual is identified in this report. Boot telemetry records a +handle only after authentication resolves, and handles appear here only +as counts. IP addresses were used to count distinct clients and to +separate a single busy machine from a distributed audience; they are +not reproduced, and the shipped data bundle contains no address, no +handle and no user agent string. Geography is reported at country +level, as Cloudflare supplies it. The one client examined +individually --- the Turkish address making 14,366 requests --- is a device +this project operates. + +Three limitations bound the conclusions. Distinct-client counts rest on +IP addresses, which conflate households behind a NAT and split mobile +users who roam; they are a floor, not a census. The path-level and +user-agent figures come from a single day, because the free Cloudflare +tier will not answer a wider question, and a single day in early +September may not represent the year. The completion measure (``reached \texttt{running boot}'') cannot +distinguish a boot that failed from a person who left after one second, +which is precisely the ambiguity opening~4 of the telemetry work should +remove. And the direct/embedded split rests on a browser-reported flag +plus a referrer: an always-on display that reports neither would still +be counted as a person, and this report found one such surface only +because its hourly profile was flat at four in the morning. + +\section{Conclusion} + +The network served 276,645,410 requests and was opened by roughly +5,800 people, fifty-one of whom came back on more than four days. Both +numbers are true, and the distance between them is not a measurement +artifact --- it is a description of the system. Ninety-three percent of +the traffic is the network talking to itself at one hertz, the largest +apparent audience event in the record was a screen in a room, and the +instrument that could have told us either of those things was never +installed. + +What the data does not show is a demand problem. About a hundred new machines a day, three hundred boots, have arrived +every day for eight months --- from search, from a Danish clock, and most +efficiently from a handful of volunteer indexes of interesting websites +that nobody here has ever contacted. +When they arrive at a single-purpose page they succeed nine times in +ten; when they arrive at a prompt, seven times in ten; when they arrive +inside a marketplace iframe, one time in three. What the data does show +is a returning problem, and a clock in Denmark is the only thing in +eight months that has solved it. The openings above are ordered by that +difference. Nine of the ten cost less than a day. + +\section{Appendix: the router's year} +\label{sec:appendix} + +Table~\ref{tab:pieces} sets the two ledgers side by side. The left panel +is every request the HTML router answered for a slug, crawlers included; +the right panel is the same period counted in humans who actually ran +the piece. They disagree about almost everything, and the disagreement +is the report in miniature. + +\begin{table}[h] +\centering +\footnotesize +\caption{Left: top slugs by server-side hit, 2025-12-31 to 2026-09-09, from the \texttt{piece-hits} ledger. Right: top named destinations by distinct human client, 2026-06-01 to 2026-09-09, from boot telemetry. Rows marked $\dagger$ are exploit probes the ledger records as pieces (\S\ref{sec:faults}).} +\label{tab:pieces} +\vspace{0.35em} +\begin{tabular}{@{}l r@{\hspace{1.1em}}l r r@{}} +\toprule +\textbf{Slug} & \textbf{Hits} & \textbf{Piece} & \textbf{Cl.} & \textbf{Boots} \\ +\midrule +\texttt{prompt} & 4,994,635 & \texttt{laer-klokken} & 998 & 8,654 \\ +\texttt{+CSCOE+/}$\dagger$ & 20,435 & \texttt{starfield} & 290 & 431 \\ +\texttt{laer-klokken} & 19,800 & \texttt{notepat} & 182 & 231 \\ +\texttt{nopaint} & 11,093 & \texttt{nopaint} & 126 & 177 \\ +\texttt{notepat} & 10,981 & \texttt{laklok} & 112 & 499 \\ +\texttt{+webvpn+/}$\dagger$& 9,802 & \texttt{chat} & 86 & 115 \\ +\texttt{\$bop} & 3,775 & \texttt{kidlisp} & 55 & 88 \\ +\texttt{\$4xa} & 3,172 & \texttt{r8dio} & 52 & 102 \\ +\texttt{\$ceo} & 2,927 & \texttt{baktok} & 49 & 78 \\ +\texttt{\$roz} & 2,858 & \texttt{prutti} & 42 & 56 \\ +\texttt{\$pie} & 2,798 & \texttt{processing} & 41 & 44 \\ +\texttt{\$cow} & 2,517 & \texttt{list} & 35 & 51 \\ +\texttt{starfield} & 2,094 & \texttt{@jeffrey} & 30 & 40 \\ +\texttt{\$nsh} & 1,940 & \texttt{girlfriend} & 26 & 43 \\ +\texttt{api/.env}$\dagger$ & 1,817 & \texttt{dannom} & 16 & 36 \\ +\bottomrule +\end{tabular} +\end{table} + +Three readings. First, \texttt{prompt} --- the default piece, served for +every bare load of the domain --- is 92.7\% of the ledger's 5,390,161 +recorded hits, which makes the ledger a measure of the front page and +not of the catalogue. Second, three of the fifteen most-hit slugs of +2026 are exploit probes: \texttt{+CSCOE+/logon.html} and +\texttt{+webvpn+/index.html} are Cisco VPN reconnaissance, and +\texttt{api/.env} is a credentials sweep that has run every day since +1~January. Each of them out-ranks every KidLisp code in the system. +Third, the human panel is two orders of magnitude smaller and ranks +differently: \texttt{starfield}, which does not appear in the ledger's +top twelve, is the second most-visited named piece by real people, and +\texttt{laklok} draws 4.5 boots per client --- the highest repeat rate of +any destination outside the clock itself. + +One more distribution belongs here, because it is the clearest picture +of how the network is actually addressed. Sorting all +71,143 direct boots by the shape of the entry URL gives 38,154 +arrivals at the root or \texttt{/prompt} (53.6\%), 30,439 at a named +piece (42.8\%), 1,620 at a bare KidLisp \texttt{\$code} (2.3\%), and +930 at a \texttt{@handle} page (1.3\%). Two of those numbers are +uncomfortable. A person opens somebody else's KidLisp code by its +three-letter name about six times a day across the entire network: +outside the gallery iframe, the sharing gesture the language was +designed around is almost unused. And the \texttt{@handle} page, the +one surface that would make a person findable, is 1.3\% of arrivals in +a system holding 2,973 registered names. The named-piece share does +grow --- 32\% of February's direct boots, 58\% of September's --- which +is the report's one unambiguous trend: people increasingly arrive at a +thing rather than at a prompt. + +The practical consequence is opening~3. A ledger that cannot tell a +piece from a probe cannot be used to decide what to build next, which +is the only reason to keep it. + +\bibliographystyle{plainnat} +\setlength{\bibsep}{1.2pt plus 0.2ex} +{\footnotesize +\bibliography{references} +} + +\end{document} diff --git a/papers/cli.mjs b/papers/cli.mjs index 3ad1db1a29..7babb6aa68 100755 --- a/papers/cli.mjs +++ b/papers/cli.mjs @@ -333,6 +333,16 @@ const PAPER_MAP = { siteName: "nom-games-26-arxiv", title: "The nom Games", }, + "arxiv-ios-so-far": { + base: "ios-so-far", + siteName: "ios-so-far-26-arxiv", + title: "iOS So Far", + }, + "arxiv-traffic": { + base: "traffic", + siteName: "aesthetic-network-traffic-26-arxiv", + title: "Aesthetic Network Traffic Report", + }, "arxiv-turf": { base: "turf", siteName: "taking-turf-26-arxiv", @@ -534,6 +544,7 @@ const CATEGORIES = [ "arxiv-score-analysis", "arxiv-comp-strats", "arxiv-nom", + "arxiv-ios-so-far", "arxiv-granularity", "arxiv-turf", "essay-may-26", @@ -554,6 +565,7 @@ const CATEGORIES = [ dirs: [ "arxiv-archaeology", "arxiv-hand-and-loop", + "arxiv-traffic", "arxiv-network-audit", "arxiv-diversity", "arxiv-open-schools", diff --git a/system/public/papers.aesthetic.computer/platter.html b/system/public/papers.aesthetic.computer/platter.html index 88aa10939f..e4a15f5fd0 100644 --- a/system/public/papers.aesthetic.computer/platter.html +++ b/system/public/papers.aesthetic.computer/platter.html @@ -312,7 +312,7 @@

Research Platter

Full knowledge base for Aesthetic Computer papers and research.
- 499 pieces · 128 lib modules · 143 functions · 173 plans · 132 reports · 10 studies · 23+ readings · 68 papers + 506 pieces · 133 lib modules · 147 functions · 173 plans · 133 reports · 10 studies · 23+ readings · 74 papers
@@ -329,7 +329,7 @@
▼

Papers

- 68 publications + 74 publications
Aesthetic Computer '26 — A Mobile-First Runtime for Creative Computing (arXiv, 5pp) @@ -559,7 +559,7 @@ @@ -618,7 +618,7 @@