Fable Review
This commit is contained in:
113
fable/03-feedback.md
Normal file
113
fable/03-feedback.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# Feedback
|
||||
|
||||
Ordered by how much I think each item matters. Praise is included only where
|
||||
it's load-bearing for a recommendation.
|
||||
|
||||
## 1. You are avoiding the print, and the repo shows it
|
||||
|
||||
Eight creative phases in six weeks, and the master pipeline — the thing the
|
||||
project exists for — was last fed on day two. This has the signature of a
|
||||
familiar creative pattern: exploring is reversible and always rewarding;
|
||||
printing is a commitment that risks discovering the piece doesn't work at
|
||||
scale. So the exploration space keeps widening (new generator, new renderer,
|
||||
new subject) because widening is the move that never has to survive contact
|
||||
with a wall.
|
||||
|
||||
The honest counter-argument is that the vocabulary wasn't ready. It's ready.
|
||||
The BEBC plates read as archival photographs; the watercolor stillwater study
|
||||
holds up; PRINT.md already contains the assembly recipe. Every week of further
|
||||
exploration is now producing information about the *screen* version of a *wall*
|
||||
piece. One A1/A2 test print of one strong seed would generate more course
|
||||
correction than any three future sketch series — it will tell you whether the
|
||||
grain scales, whether the δ-ray curls reward approach, whether "standing
|
||||
closer" works, and it will almost certainly reorder the roadmap.
|
||||
|
||||
## 2. Decisions are being deferred into the working tree
|
||||
|
||||
Three currently open:
|
||||
|
||||
- The wind-field milkweed (branch, Jun 17) vs. the botanical milkweed (working
|
||||
tree, Jun 25) — two incompatible `generateUmbel`s. Which milkweed is *the*
|
||||
milkweed, or are they two subjects (a field study and a specimen plate)?
|
||||
Either answer is fine; not answering is what costs.
|
||||
- The watercolor renderer: 427 good lines, uncommitted for 10 days. Ten more
|
||||
days of this and merging the branch becomes an archaeology project.
|
||||
- The GROUP_BUILDERS registry on the branch is a strictly better composition
|
||||
engine than what's on main, independent of milkweed. It could be
|
||||
cherry-picked today.
|
||||
|
||||
A useful rule given how you work (commits = sessions): **end every session with
|
||||
a commit, even a WIP one.** Your commits are already narrative; let them be
|
||||
frequent-narrative.
|
||||
|
||||
## 3. Nothing verifies that a plate contains what its scene model says
|
||||
|
||||
The ripple bug survived three sketch series because the only QA is your eye,
|
||||
and your eye judges *feeling*, not *inventory*. Determinism is the project's
|
||||
religion, but determinism without ground truth just means you reproducibly get
|
||||
the wrong image. Cheap fixes that fit the project's culture:
|
||||
|
||||
- A layer-census check: render a scene, assert every `id` in the scene model
|
||||
produced a nonempty layer/group in the output. ~30 lines, would have caught
|
||||
the ripple drop on day one.
|
||||
- Golden-seed snapshots: 3–4 canonical seeds rendered per renderer, diffed on
|
||||
commit (you already have headless Chrome plumbing in `shoot.sh`).
|
||||
- Stamp the build: embed the source git hash + date in `bubble_chamber.html`
|
||||
so staleness is visible instead of silent.
|
||||
|
||||
## 4. The look needs its own seam
|
||||
|
||||
The scene/renderer split is genuinely well-kept — which makes it strange that
|
||||
the *style* never got the same treatment. Three renderers currently disagree
|
||||
about bubble size, and each new visual feature is hand-ported (or, for PDF,
|
||||
quietly not). `bubbleStops()` already demonstrates the fix: one shared module
|
||||
of style formulas (stroke widths, alphas, radii, spectrum mixes) consumed by
|
||||
all renderers. This is a half-day of consolidation that removes the largest
|
||||
source of drift in the codebase. Do it before renderer #5, because there will
|
||||
be a renderer #5.
|
||||
|
||||
## 5. Sketch tools: keep the data, share the harness
|
||||
|
||||
The 17 QFT scripts are a legitimate serial sketchbook — the variation configs
|
||||
*are* the artwork's process record, and hardcoded OUT dirs are honest about
|
||||
their one-shot nature. But the 12-line render loop, `F()`, `paper()`, and the
|
||||
gallery HTML are copy-pasted across all of them, with signature drift. One
|
||||
40-line `renderSketch(outDir, baseSeed, variations)` harness turns every future
|
||||
sketch into a pure data file. Same for the deep-`merge()` in 5 compose tools.
|
||||
Don't retrofit the old ones; they're finished documents. Change the template
|
||||
for the next one.
|
||||
|
||||
## 6. Small structural debts worth an hour each
|
||||
|
||||
- `carpet.js`/`perspgrid.js` are compose-system primitives parked in
|
||||
`src/qft/` — they share nothing with the QFT pipeline.
|
||||
- `src/compose/composition.js` imports parameter defaults from
|
||||
`src/ui/controls.js` — the headless engine depends on the UI layer. Move
|
||||
defaults down; let the UI consume them.
|
||||
- The `MILK` pigment table just colonized core `palette.js` from the milkweed
|
||||
satellite. One entry is fine; it's the precedent to watch — palettes should
|
||||
be injectable from the satellite that owns them.
|
||||
- Delete or archive: `bubble_chamber.v2.html`, `tools/inkwash-export.mjs` (it
|
||||
says goodbye in its own header), `tools/find-semicircle.mjs`. Fix or delete
|
||||
`compositions/hero.mjs` (currently half-ignored by the code) and
|
||||
`tools/archive-wall.html` (frozen curation), or explicitly rename them as
|
||||
dated snapshots.
|
||||
- `params.js` QFT: either seed the camera/perturbation params or drop the
|
||||
"seed → complete fingerprint" claim from the header. The claim is currently
|
||||
the documentation equivalent of the ripple bug.
|
||||
|
||||
## 7. What's working — keep doing these on purpose
|
||||
|
||||
- **Literate headers.** Nearly every file explains *why the fake was chosen
|
||||
over the real*. This is the best code-as-notebook practice I've seen in a
|
||||
personal art repo, and it's why the intent/execution comparison in this
|
||||
review was even possible.
|
||||
- **The β thesis.** "Get the statistics right and the eye believes" was the
|
||||
founding bet and it paid; the outputs are convincing at thumbnail and at
|
||||
1500 px. Protect that thesis as you add renderers — watercolor already
|
||||
correctly routes 1/β² into stroke weight.
|
||||
- **Deterministic fiction.** Plate numbers and exposure dates derived from the
|
||||
seed hash — the forgery itself is reproducible. This idea is bigger than its
|
||||
current use (see ideas §2).
|
||||
- **Commits as sessions** produce a legible creative history. The fix from §2
|
||||
isn't to change the style, just the frequency.
|
||||
Reference in New Issue
Block a user