fix(skill): eval feedback — font src paths, WCAG pairings, flash-through-white regression

Five fixes from Ular's first-pass workflow run:

1. step-1-design.md Fonts section — sub-agents pointed @font-face for
   "ES Build Neutral" at the Inter .woff2 files because DESIGN.md
   only named families, never emitted exact src: paths. Now the
   Fonts section example shows per-family + per-weight file paths
   AND a copy-verbatim @font-face block sub-agents can paste, so
   there's no inference step. Adds an explicit narrative of the
   real failure mode and how to avoid it.

2. beat-builder-guide.md FONTS rule — was "brand fonts with
   capture/assets/fonts/ path need @font-face in <style>." Now:
   "copy the @font-face block VERBATIM from DESIGN.md. Do NOT guess
   which .woff2 file belongs to which family — capture filenames
   are content-hashed and there is no visible mapping. If DESIGN.md
   doesn't include exact src: paths per family, STOP and ask the
   main agent; never pair an arbitrary .woff2 with a family name
   from memory."

3. step-1-design.md Colors section — Sub-agents reproduced brand
   colors faithfully and hit WCAG AA failures on dark surfaces
   (#68686A on #18191B = 3.16:1). Now the Colors section example
   computes per-pairing contrast ratios with /⚠/ markers,
   documents the dark-surface substitute color when the brand's own
   palette fails, and points at the /hyperframes-contrast skill for
   ratio computation. Sub-agents pick text colors by surface
   context, not by "this is the brand's secondary text color."

4. capabilities.md flash-through-white entry — the "ideal as
   invisible bridge at duration: 0.01" framing caused agents to
   scatter white flashes through every composition as transition
   bridges. The fix was documented in the branch's HANDOFF but
   never landed. Now: "Fade through white midpoint — a visible
   white flash between scenes. Use only when the brand specifically
   calls for a white-flash beat boundary; this is NOT a neutral
   'default' transition."

5. step-6-validate.md Warnings list — adds a paragraph on WCAG
   contrast false positives. The validator samples at fixed
   timestamps; elements at opacity:0 / mid-fade get measured as if
   fully visible, producing spurious failures. Tells the agent to
   verify visually before changing colors to clear a WCAG warning
   — bumping a color to fix a sampling artifact changes brand
   identity for no real benefit.
This commit is contained in:
ukimsanov
2026-05-21 11:08:52 -07:00
parent e5160b6022
commit 24aef5475c
4 changed files with 69 additions and 30 deletions
@@ -99,22 +99,22 @@ The runtime registers these adapters in order; each implements `discover()` / `s
### The 14 shaders
| Name | Visual | Notes |
| ------------------- | -------------------------------------------------------------------------------------- | -------------------------------------- |
| domain-warp | Multi-octave FBM warps both scenes oppositely; organic dissolve edge with accent flash | Uses NQ noise bundle |
| ridged-burn | Ridged multifractal mask reveals B; accent → bright → white burn ramp; sparks | NQ |
| whip-pan | 10-sample horizontal motion blur + lateral crossfade | No noise |
| sdf-iris | Aspect-corrected circle SDF expansion + accent-tinted glow rings | — |
| ripple-waves | Radial standing-wave UV displacement + tinted crossfade | — |
| gravitational-lens | Pinch pull toward center + R/B chromatic separation | — |
| cinematic-zoom | 12 RGB-offset radial zoom blur samples (chromatic zoom streak) | — |
| chromatic-split | R/B radial channel shift outward / inward; G fixed | Distinct from CSS chromatic aberration |
| swirl-vortex | CCW swirl with FBM noise; reciprocal on incoming | NQ |
| thermal-distortion | Vertical sin + FBM horizontal displacement; warm haze | NQ |
| flash-through-white | Fade through white midpoint; ideal as invisible bridge at `duration: 0.01` | No accent |
| cross-warp-morph | FBM vector field displaces both scenes; third FBM biases irregular wipe | NQ |
| light-leak | Fixed off-frame leak with exponential falloff + accent warmth + ridge flare | Hard-coded leak anchor |
| glitch | Line displacement + RGB lateral split + scan modulation + posterization + flicker | Deterministic |
| Name | Visual | Notes |
| ------------------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| domain-warp | Multi-octave FBM warps both scenes oppositely; organic dissolve edge with accent flash | Uses NQ noise bundle |
| ridged-burn | Ridged multifractal mask reveals B; accent → bright → white burn ramp; sparks | NQ |
| whip-pan | 10-sample horizontal motion blur + lateral crossfade | No noise |
| sdf-iris | Aspect-corrected circle SDF expansion + accent-tinted glow rings | — |
| ripple-waves | Radial standing-wave UV displacement + tinted crossfade | — |
| gravitational-lens | Pinch pull toward center + R/B chromatic separation | — |
| cinematic-zoom | 12 RGB-offset radial zoom blur samples (chromatic zoom streak) | — |
| chromatic-split | R/B radial channel shift outward / inward; G fixed | Distinct from CSS chromatic aberration |
| swirl-vortex | CCW swirl with FBM noise; reciprocal on incoming | NQ |
| thermal-distortion | Vertical sin + FBM horizontal displacement; warm haze | NQ |
| flash-through-white | Fade through white midpoint — a visible white flash between scenes | No accent. Use only when the brand specifically calls for a white-flash beat boundary; this is NOT a neutral "default" transition. |
| cross-warp-morph | FBM vector field displaces both scenes; third FBM biases irregular wipe | NQ |
| light-leak | Fixed off-frame leak with exponential falloff + accent warmth + ridge flare | Hard-coded leak anchor |
| glitch | Line displacement + RGB lateral split + scan modulation + posterization + flicker | Deterministic |
### Public API