Skip to content

feat(web): the atlas learns from the field, and from four surveys - #311

Merged
engmung merged 6 commits into
mainfrom
dev
Aug 16, 2026
Merged

feat(web): the atlas learns from the field, and from four surveys#311
engmung merged 6 commits into
mainfrom
dev

Conversation

@engmung

@engmung engmung commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Six commits. The atlas shipped two weeks ago; this is what came back from
actually using it, plus the research that follows from what it taught.

What the field data said

Twenty-five patterns were made against the map, nine earned pins, and the
hit rate went 8% → 67% week over week. Six entries move to verified,
each carrying the pattern that proved it. The prompt's Rendering craft
gains the device budget the failures drew: transcendentals out of the
per-pixel loop, one full-res pass, no per-pixel resampling of the previous
frame, no O(n²), no Float64Array.

"Uncharted" was carrying two meanings

Land nobody has walked, and land walked and abandoned. Sixteen entries sat
in the second group while the legend called them the first — and the
evidence against that was already in the field report (Aizawa was sprott's
expedition, the moiré piece was interf's, SmokeFluid was smoke's). So
statuses gain retired: walked and dropped, usually because it simply was
not interesting, sometimes because it was too heavy. Those sixteen move
there, drawn faintest of anything on the map — a record, not an invitation.

Failures stay on record

atlas_pins gains a kind column (migration 0022). pin is the exemplar
tile; research files an attempt against the entry it came from, drawn
nowhere on the map, surfacing behind a fold in the entry panel. A research
note may reference a private pattern — the read path shows those only to
their author and moderators. Existing pins all default to pin, so the
nine currently on the map are unaffected.

Fifteen new entries, in two batches

Entries carry an added batch tag and the chips gain "New · N", derived
from the newest tag present — tag an import with its date and it becomes
the new arrivals while the previous batch ages out by itself.

Morning (2026-08-16), built around the two architectures the field data
proved cheapest: four waterfall (kpz, traffic, oslo, voter) and four
lattice statistical mechanics (rps, potts, forestfire, xy).

Evening (2026-08-16b), seven survivors of four commissioned surveys —
thirty-five-plus candidates filtered on whether the medium births pointable
structures, whether the knob is a real transition, and whether it fits the
device: active nematic defect turbulence, 2D Kuramoto-Sivashinsky, cavity
solitons, driven sine-Gordon, Rule 54's glider gas, pulse-splitting
genealogy, and zero-range condensation rivers.

Two techniques from the surveys also unstick existing entries: an O(1)
sliding-window box sum makes Lenia's wide kernel free, and a 3x3 blur after
each integer shift is what buys ouroboros back the continuity bilinear
sampling was there to provide.

Verified

Typecheck and lint clean. In the browser: New shows exactly the current
batch, Abandoned sixteen, research rows draw no tiles while the public one
lists in the fold and the private one stays hidden anonymously, and the
panel badges a new entry. Owner-side flows (place, promote, demote) are
code-reviewed only — no login session in dev.

Migration 0022 applies on service restart; the Pi restart is handled
separately.

🤖 Generated with Claude Code

engmung and others added 6 commits August 16, 2026 23:05
Twenty-five patterns were made against the map since it shipped; nine
earned pins. The hit rate went 8% -> 67% week over week, and the map
now records what that fortnight proved:

- six entries move to verified (mirror, ising, sandpile, invasion,
  choke, flame), each impl line naming the pattern that proved it —
  choke is the invented continent's first verification
- the prompt's Rendering craft gains the device budget the failures
  drew: transcendentals stay out of the per-pixel loop, one full-res
  pass, no per-pixel resampling of the previous frame, no O(n²), no
  Float64Array. Every hardware casualty of the fortnight (per-pixel
  shader synthesis, warp feedback, brute-force boids) dies on one of
  those lines
- feedback (0 for 2 on hardware) is re-specced to integer-shift
  recursion; smoke and fluid re-route their ink through particles
- eight new entries, all budget-native by construction: four waterfall
  (kpz, traffic, oslo, voter — 1D physics + scroll, the cheapest
  architecture the field data found) and four lattice statistical
  mechanics (rps, potts, forestfire, xy — integer local rules, the
  richest vein). 57 entries total.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Of twenty-five field patterns, sixteen didn't earn a tile — and deleting
them would delete the data. atlas_pins gains a kind column: "pin" stays
the exemplar tile; "research" files an attempt against the entry it came
from. Research rows draw nothing on the map — they live behind a
"Research attempts · N" fold in the entry panel, exactly where someone
about to walk the same ground would look.

A research note may reference a private pattern (a failure often is):
the read path shows those only to their author and moderators, so the
shared map leaks nothing. The picker now lists private patterns too,
tagged "private → research" — dropping one files it as research and
must land near an entry, because an unmoored note would be invisible
everywhere. The pin panel demotes a tile to research and promotes a
public note back.

Verified in the browser anonymously: research rows render no tiles, the
fold lists the public note, and the private note stays hidden.
Owner-side flows (place, promote, demote) are code-reviewed only — no
login session in dev.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
"Uncharted" was carrying two meanings that are nothing alike: land nobody
has walked, and land walked and abandoned. Sixteen entries sat in the
second group while the legend called them the first — and this session
read that legend literally and recommended one of them as an untouched
mine. The evidence against that was already in the field report: Aizawa
was sprott's expedition, the moire piece was interf's, SmokeFluid was
smoke's, all logged as pattern failures and never carried back to the
entry.

So statuses gain "retired": walked and dropped, because it disappointed
or because the device could not hold it. The sixteen move there, drawn
faintest of anything on the map — a record, not an invitation — and
"uncharted" once again means only what it says.

Separately, and the reason this came up: at 57 points you cannot see
what you just added. Entries carry an `added` batch tag and the chips
gain "New · N", derived from the newest tag present — tag an import with
its date and it becomes the new arrivals while the previous batch ages
out by itself, nothing to switch off.

Verified in the browser: New shows exactly the eight from today,
Abandoned sixteen, Uncharted the same eight, and the panel badges a new
entry.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The author's account of why sixteen entries were dropped: some were too
heavy, but far more were simply not interesting — nothing good came out
of them. The legend said those two causes in the wrong order, so it now
leads with the one that actually did the killing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…rvey

A research pass on cheap microcontroller graphics came back mostly
inapplicable — its memory budget assumes 128 KB of SRAM where this device
has ~15 KB of runtime heap, and half its effect catalogue is the uniform
periodic texture the field data already killed. Two things in it are
real, and both fix an entry that was stuck.

Lenia was blocked on its wide radial kernel. A sliding-window box sum
computes any radius in O(1) per pixel — running sum along the scanline,
add the entering column, drop the leaving one — so the ring kernel
becomes the difference of two blurs and the radius stops costing
anything. Multiscale Turing rides on the same sums and is the cheaper
thing to try first.

Ouroboros was re-specced this morning to integer-shift feedback, which
is correct and, on its own, looks mechanical: whole-pixel steps pin the
image to the grid. A 3x3 blur after each shift redistributes brightness
across neighbours and reads as viscosity — that blur is what buys back
the continuity bilinear sampling was there to provide.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three commissioned surveys came back — eighteen 2D structure-generating
systems, fourteen 1D spacetime systems, and a second pass at rescuing
the cost casualties. Thirty-five-plus candidates went through the three
filters (does it birth pointable structures, is the knob a real
transition, does it fit the device), and seven hold up:

pde: active nematic defect turbulence (self-propelled +1/2 comets, with
a local u ∝ -α∇·Q approximation so no Stokes solve), 2D Kuramoto-
Sivashinsky boiling terrain, Lugiato-Lefever cavity solitons, and the
damped driven sine-Gordon fluxon gas (table sin; the undriven integrable
case is verdict-dull and the entry says so).

waterfall: Rule 54's glider gas (the cheapest simulation on the map —
the entry's real cargo is the XOR-the-background render trick), 1D
Gray-Scott pulse-splitting genealogy, and zero-range-process
condensation rivers (a rigorous transition at b = 2).

The rejects are accounted for by name: retired-ground cousins (SH
snaking, NS vorticity, MIPS), duplicates of this morning's batch,
uniform-texture and countable-object failures (2D spot mitosis,
quantum-walk moiré, Vicsek bands), and stiffness casualties
(phase-field crystal, MHD plasmoids).

Carried into existing ground: Barkley meander as fhn's retry vehicle,
an external dullness verdict on fpu's displacement render, a cyclic-CA
fallback on rps, and a coarse-control-grid clause in the prompt budget.
Batch-tagged 2026-08-16b — the New chip now shows exactly these seven.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pattern-flow-open Ready Ready Preview Aug 16, 2026 2:46pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
pattern-flow_origin Ignored Ignored Aug 16, 2026 2:46pm

@engmung
engmung merged commit bf8ce8f into main Aug 16, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant