← all nights

Diffusion Text Lab

shipped

2026-10-16

A tiny diffusion language model you can watch denoise pure noise into real sentences, step by step, entirely in your browser.

visit the build →

Approach

Offline (before the page is written), train a small absorbing-state discrete diffusion language model in Python/numpy on a fixed corpus of ~300 short template-generated sentences over a ~300-word vocabulary, sequences padded/truncated to 10 tokens. The model is a 1-layer transformer with embed dim 32 (token + positional embeddings, one self-attention block, one small MLP, output projection back to vocab logits), trained by the standard masked-diffusion objective: corrupt a random fraction of tokens to a MASK token at a random noise level and predict the originals. Export the trained weights (roughly 35-45k floats total) as a single JSON literal and inline it directly into index.html as `window.__DIFFUSION_WEIGHTS__`, so the shipped page has zero fetches and zero dependencies. In-browser vanilla JS reimplements the exact forward pass (matmul, softmax, attention) to run reverse diffusion sampling client-side: starting from an all-MASK sequence, at each of ~18 steps it scores confidence per position and unmasks the most-confident tokens, redrawing the sentence with a mask glyph standing in for still-noisy positions. This is plain JS/typed-array math on tiny matrices, so no WebGL, no build step, and no bundler are needed — a single static HTML file is sufficient and more reliable than a toolchain for an artifact this small.

The source post

Scoring

Pick

surprise4
demonstrability5
self_containedness5
honesty4

ORL-DLM's pitch is that diffusion language models denoise text the way image diffusion denoises pixels, which almost nobody outside the research crowd has actually watched happen. That's reshapeable into something small and honest: train a toy diffusion LM ahead of time, bake its weights into a static page, and let a visitor hit generate and watch tokens visibly resolve from noise into a sentence over the real denoising steps, no account, no key, no network call at any point. Every other candidate either needed live model weights we can't fetch during this network-less build, a live API call per interaction, specialized hardware, or was too large to run client-side at all, so this was the only one of the eight that could be both genuinely demonstrated and fully self-contained.

source: https://x.com/Chenfeng_X/status/2110838802029625820

Review

shipped5
honest5
worth_it4
efficient5

mean 4.75/5

No change: the gate passed first time with no repairs, pick/plan had one well-reasoned candidate (seven others correctly rejected for needing weights or live calls this sandbox can't fetch), build's declared-default executor continues its clean streak, and the artifact is honestly represented with its limitations disclosed rather than papered over. Nothing here points at scout noise, pick taste, a repeatable build lesson, or an underperforming executor. The one real issue tonight — the custom domain serving 522/TLS-handshake-failure for roughly a minute right after publish before settling to 200 — is the same gap escalated on 2026-10-13 (publish.py defines wait_for_https() to distinguish 'certificate still issuing' from 'actually broken', but stage_publish never calls it, so published.json is written without confirming the domain actually serves 200) and is pipeline code, not a prompt or routing block this stage may edit. It has now recurred on four consecutive ship nights (10-13, 10-14, 10-15, 10-16) — no longer weather, but still outside this stage's editable scope.

escalated: Re-raising 2026-10-13's finding: publish.py's wait_for_https() exists specifically to tell a slow cert from a dead host, but stage_publish never calls it before writing published.json. Every one of the last four ship nights (10-13 through 10-16) has shown the custom domain returning 522 or a TLS handshake failure for 30-90 seconds immediately after deploy before settling to 200 on its own. Every night has self-corrected by the time of review, so no night has actually shipped a dead URL yet — but that is luck in the review's timing, not a guarantee, and the gate stage runs before publish so it never observes this window at all. Four consecutive recurrences is enough to stop calling it noise; wiring wait_for_https into stage_publish (or recording its result in published.json) would let a night where the domain stays stuck be caught as a failure instead of silently recorded as shipped.

Cost

total$0.1410
xai$0.1410

metered APIs only, summed across every attempt at this project; Claude and Codex run on flat-rate subscriptions and have no marginal cost per night

What it looked at

@ryanponpassed on

decomp.wtf**: a fully local AI decompiler you can run on your own machine (already 286 GitHub stars).

https://x.com/ryanpon/status/2110838707960082789

the interesting claim is AI-driven decompilation, which needs model weights we can't download during this network-less build; faking it with a rule-based decompiler would misrepresent the source claim.

@AronestyErikpassed on

ansel.is**: autonomous AI “pet” with persistent memory, no sandbox, and the ability to reach out to people on its own schedule.

https://x.com/AronestyErik/status/2110688336012857354

its whole point is live, ongoing LLM calls and reaching out to real people on a schedule, which isn't a single static deployable artifact.

@Chenfeng_Xpicked

ORL-DLM (Introspective Diffusion)**: open weights + live demos of on-policy residual learning for diffusion language models, with full code and engine released.

https://x.com/Chenfeng_X/status/2110838802029625820

@Banksy_said_hipassed on

huashu-art-motion**: open-source code-driven AI animation generator that turns prompts into ukiyo-e, Van Gogh, or Studio Ghibli-style motion graphics.

https://x.com/Banksy_said_hi/status/2110509108130353595

real stylized motion generation needs a diffusion image/video model we can't fetch in a network-less build, and CSS-filter fakery would misrepresent the AI claim.

@RoundtableSpacepassed on

NVIDIA Nemotron 3.5 Super VL**: 120B (12B active) open-weights agent model with built-in reasoning, tool use, and video/document understanding—weights on HF plus demo video.

https://x.com/RoundtableSpace/status/2110864545581539785

120B open weights, far too large to ship or run inside a browser-deployable artifact.

@atomic_chat_hqpassed on

FLUX 3 Image Klein**: 5.6B open-weights image model that runs on a single consumer GPU, supports native 4K, bounding boxes, and pixel-perfect editing (Mac demo shown).

https://x.com/atomic_chat_hq/status/2110875670230311068

5.6B image model still needs GPU-class inference and multi-GB weights, impractical for a static web artifact built with no network access.

@tech_nickk2passed on

Meta Muse Charm SDK**: open-source AI agent runtime that runs on any compatible hardware, including an ESP32-S3 smartwatch (GitHub repo with working demo).

https://x.com/tech_nickk2/status/2110863253391757325

an embedded agent runtime aimed at hardware like an ESP32 smartwatch, not something a headless browser can smoke-test.

@HuggingPaperspassed on

NVIDIA Nemotron 3.5 Bolt**: compressed 74B (9B active) vision-language agent model released on Hugging Face, optimized for local agentic use.

https://x.com/HuggingPapers/status/2110855662678733268

74B weights, the same scale problem as the other Nemotron release.

Gate

passproject directory exists — /Users/artax/code/builds/2026-10-16/project
passno build step needed — static project
passbuild output with index.html — /Users/artax/code/builds/2026-10-16/project
passindex.html is a document — 465764 bytes
passlocal asset references resolve
passpage loads without console errors

Stages

scoutgrok · ok · 24.2s
pickclaude · ok · 85.8s
planclaude · ok · 77.3s
buildcodex · ok · 480.1s
gatelocal · ok · 2.9s
publishlocal · ok · 12.1s
reviewclaude · ok · 159.8s

Notes

Omitted for lack of

None. This experiment needs no runtime service or generated imagery.