Finish the migration: all 65 scenes on the identity artifacts

Two helpers made the bulk of it mechanical. `inkStroke` is a drop-in for
sigEdge — the same line at the identity's weight rather than the track's — and
`castForm` is a drop-in for sigForm, same signature so call sites do not change
shape. With those in place the substitution table is one-to-one:

    sigForm(  -> castForm(     sigShape( -> castMain(     sigEdge( -> inkStroke(

Forty-seven scenes went through that pass in one run: twenty-six take the cast
and the ink, twenty-one take the ink alone. Then the gate ran over all sixty-five
and found three the pass had broken, which is the entire reason it exists.

Spectrum Sculpture rendered pure black. It had been using sigShape as a RADIAL
METRIC rather than drawing it, and the cast carries notches and a hollow — an
annulus used as a radius turns a sculpture inside out. Reverted to sigShape and
dropped to ink only. The lesson generalises: a scene that reads a form as
geometry is not a scene that draws it, and the classifier cannot tell those
apart from the source.

Eclipse Field stopped honouring its `style` trait. It opts out of surface grain,
so sigEdge was its only style evidence, and the ink replaced it. The trait claim
is now dropped — and so is the lint change that had let inkMask count as style
evidence, which was wrong and was hiding exactly this. A trait is a property of
the track a scene may honour; an artifact is content it draws. Taking the ink
says nothing about whether a scene responds to u_sigLine.

Circuit Bloom went empty at the bottom of its `grown` range, where the pads were
carried by a hairline and the ink's stroke is thinner than the edge it replaced.
Now filled as well as stroked.

Also: the backtick check now covers every shader literal rather than only the
preamble, because a mechanical pass over sixty files reintroduced one
immediately. Three rounds lost to that typo is enough.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Dejvino
2026-08-18 06:39:19 +02:00
co-authored by Claude Opus 5
parent e5bb7d77e0
commit 2d3ed8eb02
49 changed files with 234 additions and 123 deletions
+3 -2
View File
@@ -11,6 +11,7 @@ export const pylonGrid = {
// Personality: see look/Personality.js.
// Takes the track's surface grain, but lightly — this is drawn, not filmed.
texture: 0.4,
consumes: ['cast', 'ink'],
traits: ['shape', 'space'],
params: {
@@ -72,7 +73,7 @@ vec4 scene(vec2 uv, vec2 p) {
// Crown stamped in the track's signature form.
vec2 crown = vec2(cx, yTop);
float size = (0.06 + 0.2 * scale) * (1.0 + u_beat * 0.4);
col += pal(3) * sigForm(p, crown, size) * inten * (0.6 + u_pulse);
col += pal(3) * castForm(p, crown, size) * inten * (0.6 + u_pulse);
col += pal(int(mod(fr, 4.0))) * exp(-dot(p - crown, p - crown) * 60.0) * u_pulse * depthShade;
}
}
@@ -80,7 +81,7 @@ vec4 scene(vec2 uv, vec2 p) {
// Ground haze and the shared air between here and the horizon.
col = sigAir(col, p, smoothstep(0.0, 1.6, abs(p.y - hy)));
col += sigGrain(uv);
return vec4(col, 1.0);
return vec4(inkValue(col), 1.0);
}
`,
};