The five documents under presets-builtin/ each name the whole look tag. That was the only
shape a preset could take until the subset picker landed; it is now one shape among several,
and it is the wrong one for a shipped starting point.
Why it matters
Panel groups now derive open from the document: a group is shown when one of its parameters
carries keyframes or sits off its default. On a fresh project the four collapsible groups —
Reading · detail, Region, Displacement, Optical — are shut, and the panel is quiet.
Applying blackwall.json moves eleven values off their defaults (bloom, rgbSplit, scanlines,
grain, glitch, pointSize, trails, scan, rim, fade, wake), which reveals Optical, Displacement,
Points, Colour and Time in one gesture. So the quiet panel is an authoring benefit — you
start from defaults and add — and invisible to anybody who starts from a shipped look.
Those twelve values are the old hardcoded setMode(4) bundle carried across when the readings
were unbundled from the grade. They were never chosen as a minimal set, because nothing before
now could express one.
What to do
Re-author each of the five against real footage, naming only the values the look actually
needs. The save dialog writes a subset directly, so this is authoring rather than hand-editing
JSON.
This needs the sensor and a person judging the result on screen. The incentive here leans
the wrong way: a sparser file flatters the panel, and a look graded to flatter a panel is a
worse look. If Blackwall honestly needs eleven post values, it should keep eleven. The point is
to remove what it does not need, not to hit a number.
The constraint that will bite
keyframe-check section 6e clicks .kf[aria-label="bloom keyframe"]. bloom lives in
Optical, Playwright's click requires visibility, and the click only lands because 6e applies
the Blackwall look first — which moves four Optical parameters (bloom 0 to 0.5, rgbSplit 0 to
1.6, scanlines 0 to 0.35, grain 0 to 0.22) off their defaults and so derives the group open.
Measured at both endpoints: with Optical at defaults the diamond exists in the document but
isVisible() is false and the click times out after 5s.
So a Blackwall that stops moving Optical off its defaults turns keyframe-check 6e into a
30-second timeout — arriving as a crash with zero failed assertions rather than as a finding.
Either keep an Optical value in Blackwall, or change what 6e applies first. The dependency is
recorded in docs/proof-tools.md under keyframe-check.
Acceptance
- Each of the five names only what it needs, judged on screen against real footage.
keyframe-check still passes, or 6e's fixture is updated in the same change with the reason
stated.
registry-check still passes — it hashes each reading at 1.0 against a pre-readings commit,
so the readings' own defaults must not move.
library-check and editor-check still pass.
Background
The reveal mechanism and the subset picker shipped together; README.md's Presets section
carries the semantics. Deliberately not in scope here: per-group bypass, which is what "remove
this effect" will eventually mean and which is named but unbuilt.
The five documents under
presets-builtin/each name the whole look tag. That was the onlyshape a preset could take until the subset picker landed; it is now one shape among several,
and it is the wrong one for a shipped starting point.
Why it matters
Panel groups now derive open from the document: a group is shown when one of its parameters
carries keyframes or sits off its default. On a fresh project the four collapsible groups —
Reading · detail,Region,Displacement,Optical— are shut, and the panel is quiet.Applying
blackwall.jsonmoves eleven values off their defaults (bloom, rgbSplit, scanlines,grain, glitch, pointSize, trails, scan, rim, fade, wake), which reveals Optical, Displacement,
Points, Colour and Time in one gesture. So the quiet panel is an authoring benefit — you
start from defaults and add — and invisible to anybody who starts from a shipped look.
Those twelve values are the old hardcoded
setMode(4)bundle carried across when the readingswere unbundled from the grade. They were never chosen as a minimal set, because nothing before
now could express one.
What to do
Re-author each of the five against real footage, naming only the values the look actually
needs. The save dialog writes a subset directly, so this is authoring rather than hand-editing
JSON.
This needs the sensor and a person judging the result on screen. The incentive here leans
the wrong way: a sparser file flatters the panel, and a look graded to flatter a panel is a
worse look. If Blackwall honestly needs eleven post values, it should keep eleven. The point is
to remove what it does not need, not to hit a number.
The constraint that will bite
keyframe-checksection 6e clicks.kf[aria-label="bloom keyframe"].bloomlives inOptical, Playwright's click requires visibility, and the click only lands because 6e appliesthe Blackwall look first — which moves four Optical parameters (bloom 0 to 0.5, rgbSplit 0 to
1.6, scanlines 0 to 0.35, grain 0 to 0.22) off their defaults and so derives the group open.
Measured at both endpoints: with Optical at defaults the diamond exists in the document but
isVisible()is false and the click times out after 5s.So a Blackwall that stops moving Optical off its defaults turns
keyframe-check6e into a30-second timeout — arriving as a crash with zero failed assertions rather than as a finding.
Either keep an Optical value in Blackwall, or change what 6e applies first. The dependency is
recorded in
docs/proof-tools.mdunderkeyframe-check.Acceptance
keyframe-checkstill passes, or 6e's fixture is updated in the same change with the reasonstated.
registry-checkstill passes — it hashes each reading at 1.0 against a pre-readings commit,so the readings' own defaults must not move.
library-checkandeditor-checkstill pass.Background
The reveal mechanism and the subset picker shipped together;
README.md's Presets sectioncarries the semantics. Deliberately not in scope here: per-group bypass, which is what "remove
this effect" will eventually mean and which is named but unbuilt.