Skip to content

Session handover — 2026-07-10 pt2

Single-slice session: the muted-tone render bug (the residual #1 from the morning handover, top deployed-fidelity gap since 2026-07-07) is closed — and it was never a render bug. The deployed garvanbay home painted its bg-muted bands correctly all along (#f2f2f2 ours vs #f3f3f3 live, visually identical); the ours-capture probe's rgb-only parseCssColor couldn't read Chromium's oklch(…) computed serialization, read every oklch-painted tone as "no fill" → page-white → default, and fabricated the gap. Fixed instrument-side in commit 93d6bd5; scorecard re-verified across all 10 pages: SHIP held at composite 92.2, home S 83.5→84.6.

Where to look

  • Commit 93d6bd5 — the whole slice: canvas colour-normalization fallback in lib/capture-section-backgrounds.js#parseCssColor (rgb fast path kept byte-identical for live Wix captures; oklch/oklab/color()/color-mix resolved via a 1×1 canvas; covers all four call sites including the previously-null _styleRaw.textColor reads), plus both wiki updates.
  • known-patterns "The symmetric re-capture probe must parse every colour space OUR lane paints in" — the session's lesson: the blindness was asymmetric (live = legacy rgb, parsed fine; ours = oklch, all invisible), so every diff blamed our render and two sessions of debugging ruled out the wrong side (@source, D1). Detection rule: a whole class of styling "never landing" on ours + nulls in secondary captured fields = test the probe against our own lane's serialization.
  • known-issues (updated) — the muted-tone entry and the garvanbay end-to-end residual #1 closed; book-an-appointment updated to S=37.5 (the fixed instrument exposed a real, accepted divergence: the hand-crafted "Our Services" grid carries a muted band live doesn't have); scorecard latest annotated (site axes unchanged post-fix, home S 84.6).
  • No deploy, no D1 change — nothing render-side was touched; the fix is entirely in the capture lane. All four validate suites green.

Residual / next priorities

  1. Upstream emdash repro — still to be posted against #1158 (docs/pipeline/upstream-emdash-1158-repro.md; delete after filing). Operator editability stays blocked until upstream fixes the save race.
  2. WCP regen + patch with the 3b71607 pipeline (teaser CTAs, cta bodies, split galleries) — graft pattern, never a blind reseed.
  3. Durable wiki publishing — connect the Pages project to the repo; until then session-end's manual deploy is the mechanism.
  4. New (small): ours-capture reads hero scrim=none on our own render — hero-4 scrims via gradient background-image, which the overlay probe doesn't sample; a smaller instance of the same instrument-asymmetry class this session fixed for colours. Pre-existing, unchanged; matters only if scrim round-trip verification is ever wanted.
  5. Earlier residuals unchanged: home/index alias in scorecard.js's page join, re-match dup-collapse, deployed-admin OTP spot-check, ADR-0009 Slices 5/6, infra/llm-gateway/ commit-or-delete (Cathal's call).