155 lines
8.7 KiB
Markdown
155 lines
8.7 KiB
Markdown
|
|
# Intent vs. execution
|
|||
|
|
|
|||
|
|
The project states its intent unusually well, in four layers:
|
|||
|
|
|
|||
|
|
- **originalprompt.md** (May 19): "One goal is large format print. Vector
|
|||
|
|
graphics are ideal. …seed/hash concept for reproducibility. This is an art
|
|||
|
|
project."
|
|||
|
|
- **DESIGN.md**: one renderer-agnostic scene model, many renderers; "get the β
|
|||
|
|
statistics right and the image reads as authentic."
|
|||
|
|
- **PRINT.md**: a ~2.5 × 4 m wall piece, assembled from registered SVG geometry
|
|||
|
|
+ raster texture layers.
|
|||
|
|
- **roadmap.md**: the feelings — awe, stillness, melancholy, scale-vertigo, the
|
|||
|
|
numinous — and a guiding test: *"does it deepen the sense that we are looking
|
|||
|
|
at a real trace of something unseen — and does it reward standing closer?"*
|
|||
|
|
|
|||
|
|
Below, each declared intent against what the repo actually shows.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. "Large-format print" — the founding goal is the least-executed one
|
|||
|
|
|
|||
|
|
The print pipeline is real and good: `tools/render.sh`, a hand-rolled CMYK PDF
|
|||
|
|
writer with OCG layers (`src/render/pdf.js`, 295 lines, genuinely impressive),
|
|||
|
|
Inkscape-convention layered SVG, resolution math in PRINT.md.
|
|||
|
|
|
|||
|
|
The execution record: `output/masters/` holds 7 masters across 5 seeds, **all
|
|||
|
|
dated May 20–21** — the first 48 hours. No master exists from any of the eight
|
|||
|
|
creative phases since. No `_9000.png` photographic master is on disk. The tiled
|
|||
|
|
renderer PRINT.md names as the escape hatch for the 4 m dimension
|
|||
|
|
(`tools/render-tiled.mjs` — "ask and I'll build it") was never built. The dev
|
|||
|
|
entry `index.html` still says "Print target: 24″ × 24″", contradicting the
|
|||
|
|
2.5 × 4 m ambition in PRINT.md — neither has been updated because neither has
|
|||
|
|
been tested against a physical object.
|
|||
|
|
|
|||
|
|
Every phase since May 21 stopped at 1300–1600 px exploration renders. The
|
|||
|
|
roadmap's guiding test — "does it reward standing closer?" — is a question about
|
|||
|
|
a physical print viewed by a body, and it has never once been asked of a
|
|||
|
|
physical print. **The project optimizes a feeling it has not yet measured.**
|
|||
|
|
|
|||
|
|
## 2. "One scene model, many renderers" — the seam holds; the look leaks
|
|||
|
|
|
|||
|
|
DESIGN.md's architectural claim is verifiably true in the strict sense: all 11
|
|||
|
|
files in `src/scene/` are pure data, zero canvas/DOM references. Bubble
|
|||
|
|
positions come from one shared salted stream and land identically in raster,
|
|||
|
|
SVG, and PDF. The discipline held for six weeks of feature growth. That is rare
|
|||
|
|
and worth saying plainly.
|
|||
|
|
|
|||
|
|
But the *look* was never given the same seam. Style decisions live triplicated
|
|||
|
|
as freehand copies inside the three renderers, and they have already drifted:
|
|||
|
|
|
|||
|
|
- Bubble radius: `rr*foot(soft)` in canvas, `b.r*scale*1.15` in SVG,
|
|||
|
|
`b.r*scale` (no 1.15) in PDF — three renderers, three bubble sizes.
|
|||
|
|
- Fiducial arm length: 6u canvas, 9u SVG, 8u PDF.
|
|||
|
|
- ~150–200 lines of formulas (under-stroke width, bubble alpha, disk-stroke
|
|||
|
|
alpha, iridescent spectrum mix) exist in verbatim triplicate.
|
|||
|
|
- PDF quietly lags: no vignette, no media layer (grease pencil / réseau / film
|
|||
|
|
furniture), no shock stains, no fingerprints. Fingerprints are canvas-only.
|
|||
|
|
Whole parameters (`boundaryY/R`, `diskPressure`, `emit`, `transparentPaper`)
|
|||
|
|
exist only in the SVG renderer.
|
|||
|
|
|
|||
|
|
`bubbleStops()` in palette.js — one edge profile consumed by both the canvas
|
|||
|
|
sprite gradient and the SVG radial gradient — is the model the rest of the look
|
|||
|
|
logic should have followed. The architecture document describes the seam that
|
|||
|
|
exists; it does not mention the seam that's missing.
|
|||
|
|
|
|||
|
|
## 3. "Determinism is a feature. The seed as a true name" — true at the altar, loose in the pews
|
|||
|
|
|
|||
|
|
The salt discipline (`makeRng(seed, 'subsystem')`) is followed at feature
|
|||
|
|
granularity: changing cosmic count cannot move the shock disk; `eventX/eventY`
|
|||
|
|
overrides still burn their rng draws so downstream is stable. Someone thought
|
|||
|
|
about this carefully.
|
|||
|
|
|
|||
|
|
But within modules the promise breaks: dialing `shockStriations` reshuffles the
|
|||
|
|
rim segments, rings, stains, *and* core cracks; the `artifacts` slider re-rolls
|
|||
|
|
every scratch and dust speck instead of fading them; the density slider —
|
|||
|
|
nominally a render-mode param — reshuffles every bubble position on every
|
|||
|
|
track. And the theology weakens with distance from the original generator:
|
|||
|
|
PRINT.md admits manual slider tweaks are *not* part of the seed fingerprint;
|
|||
|
|
`src/qft/params.js` claims "seed → complete fingerprint" while the camera,
|
|||
|
|
ripples, vortices, and wavepackets have **no seeded path at all** — a bare QFT
|
|||
|
|
seed always yields the default isometric lattice. The true name names less and
|
|||
|
|
less of the plate the further you get from `src/scene/`.
|
|||
|
|
|
|||
|
|
## 4. The confirmed bug that is secretly the thesis
|
|||
|
|
|
|||
|
|
`renderQFTSVG` silently drops ripple grids. The scene builder creates
|
|||
|
|
`id:'ripple'` grids; the renderer emits only `cubic`, `schlegel`, and `e8`
|
|||
|
|
layers (`src/qft/renderer.js:178-181`). Verified at runtime: a scene declaring
|
|||
|
|
ripples renders an SVG with no ripple geometry. This has been true since the
|
|||
|
|
single "Added QFT" commit.
|
|||
|
|
|
|||
|
|
Consequence: sketch08's entire premise ("RIPPLES — concentric expanding
|
|||
|
|
wavefronts"), sketch09's `03_vortex-with-spinning-ripples`,
|
|||
|
|
`15_perturbation-cascade`, `17_spectral-vortex-storm` — **106 hand-authored
|
|||
|
|
variation configs, and every one that invoked ripples shipped a plate whose
|
|||
|
|
label describes a feature absent from the image.** Two subsequent sketch series
|
|||
|
|
were art-directed on top of it. Nobody noticed, because the plates were judged
|
|||
|
|
by eye against feelings, not against their own scene models.
|
|||
|
|
|
|||
|
|
Note what happened here: a project whose subject is *evidence of the invisible*,
|
|||
|
|
which forges archival captions ("PLATE 095 · EXPOSED 1972"), produced a
|
|||
|
|
catalogue of plates whose captions confidently describe invisible content. The
|
|||
|
|
fiction became true by accident. There are two valid responses — fix it, or
|
|||
|
|
recognize it (see [04-ideas.md](04-ideas.md) §3, the neutrino argument) — but
|
|||
|
|
the current state, where the archive lies and the author doesn't know, is the
|
|||
|
|
only wrong one.
|
|||
|
|
|
|||
|
|
## 5. "The series is an argument" — the argument exists; it's the repo itself
|
|||
|
|
|
|||
|
|
Roadmap principle 5 wants Becher-typology grids, a fabricated catalogue, an
|
|||
|
|
archive. Phase 4 is marked "in progress" and the media layer (grease pencil,
|
|||
|
|
sprockets, réseau) shipped beautifully — the BEBC-1973 output plate genuinely
|
|||
|
|
reads as a worn archival photograph; I looked.
|
|||
|
|
|
|||
|
|
Meanwhile, without noticing, the project *built an actual archive*: 19 output
|
|||
|
|
directories, 675 tracked files, ten gallery `index.html`s, sketch series 01–09,
|
|||
|
|
templates 1–4, a wall-mock (`tools/archive-wall.html`) frozen at the May 29
|
|||
|
|
curation. It has the true properties of real archives: numbered series with
|
|||
|
|
missing entries (perspective1/2 scripts deleted, their outputs orphaned),
|
|||
|
|
instruments that no longer match their plates (`compositions/hero.mjs` uses
|
|||
|
|
radial-grid keys the code no longer reads), mislabeled holdings (§4), and an
|
|||
|
|
expedition that never reported back (the `milkweed-wind-field` branch). The
|
|||
|
|
fabricated-archive artwork the roadmap plans is a *simulation* of what the repo
|
|||
|
|
has *actually become*. That inversion is the most interesting unexploited
|
|||
|
|
material in the project.
|
|||
|
|
|
|||
|
|
## 6. Physics honesty — the one place intent and execution fully agree
|
|||
|
|
|
|||
|
|
The code is candid about its fakery in a way most generative-art code isn't:
|
|||
|
|
δ-rays are analytic log spirals because integrating to sub-percent radii "is
|
|||
|
|
unreliable" (the header says so); the shock disk announces "Not physics — a
|
|||
|
|
chamber/window pressure artifact"; every particle in this universe has mass 1;
|
|||
|
|
V-decays conserve neither momentum nor anything else. The load-bearing claim —
|
|||
|
|
get the 1/β² bubble statistics right and the eye accepts everything — is
|
|||
|
|
correct, and the outputs prove it. One comment lies (`delta.js:53` claims the
|
|||
|
|
angular step gets finer toward the center; the formula coarsens it), which is
|
|||
|
|
the kind of thing that only matters because the rest of the codebase has earned
|
|||
|
|
the habit of being believed.
|
|||
|
|
|
|||
|
|
## 7. The drift nobody wrote down
|
|||
|
|
|
|||
|
|
The documents describe a project: *one generator, deepened along a staged plan.*
|
|||
|
|
The git history records a different project: *a widening fleet of instruments* —
|
|||
|
|
bubble chamber → QFT lattices → carpet/perspective primitives → composition
|
|||
|
|
schema → art-historical templates → element liberation → watercolor → milkweed —
|
|||
|
|
where each phase spawns a fork-and-mutate tool family and a fresh output
|
|||
|
|
directory, and commits are creative sessions ("vast ocean", "Element
|
|||
|
|
Liberation"), not code changes. Neither mode is wrong. But the roadmap still
|
|||
|
|
narrates mode one while the hands do mode two, which is why Phase 3 (the
|
|||
|
|
translucent stacked print — the *stated* strongest fusion) has had no work at
|
|||
|
|
all while two unplanned renderers and two unplanned subject-matters shipped.
|
|||
|
|
The truest sentence in the repo is in the memory index, not the roadmap:
|
|||
|
|
"typology MATRIX of standalone singles." The roadmap should be made to say what
|
|||
|
|
the project has decided by doing.
|