Session handover — 2026-07-12¶
Shipped the build half of capability-backlog #2 — the header/logo layout — as a
bounded, measured, portfolio-wide capability and deployed it live to WCP. This was
the priority #1 from session-2026-07-11-pt2-handover.md.
Went build-first (user call): the identify half (globals into the scorecard) stays
deferred, so the header was verified by rendered artifact, not a scorecard number.
What shipped (deployed live this session)¶
WCP's header now renders split-center on wcp.dcathal.org — nav items flank the
centered logo on one row (HOME FARMING COMMERCIAL | logo | RESIDENTIAL GALLERY CONTACT US)
with a SERVICE AREAS CTA pill, matching live. garvanbay stays stacked-center, byte-identical.
The capability (ADR-0009 Slice 3, header dimension):
- A bounded
layoutenum on the sharedheader-wcpblock —stacked-center(default = garvanbay/FCR-typical) ·split-center(WCP) — a variant prop on the one block, not header-wcp-vs-header-1 block-switching. - Measured on the design plane, not the matcher (the matcher is geometry-blind in the
seed path): in-page
chrome.headerRaw(logo bbox, nav-item centroids, navTop) → purelib/section-style.js#classifyHeaderLayout→ the enum. Proven on the live 1440px geometry of both sites (WCP→split, garvanbay→stacked); 9 new validate cases anchored on those measurements. - Threaded end-to-end:
seed-from-buildstampsfcr.header.layout+ CTA from the homepagechrome; transformerfromHeader,fcr.headerschema (layoutselect +ctaText/ctaHref), theHeader.astroadapter, and theheader-wcprender. inline-left(fulldevheader-1) is recognised by the classifier, routing deferred.
Rationale + the reusable lessons: new known-patterns entry "The capture plane is the
authority for header layout too" (the geometry-blind-seed-path trap generalised to the
header; a Wix header CTA pinned outside <header>; keeping a shared block's default
branch verbatim so the other consumer is byte-identical).
Wiki changes¶
- ADR-0009 — Slice 3 tracker appended (header layout landing; append-mostly).
- known-patterns.md — one new entry (capture-plane authority for header layout).
- known-issues.md — new "Header dimension — three fast-follows"
entry (topbar field extraction · header-CTA auto-detection ·
inline-leftrouting) + the deferred identify half (globals into the scorecard), each with a reopen trigger. - capability-backlog.md — #2 marked layout half deployed.
- section-style-contract.md — header/topbar row reconciled
to what shipped (
stacked-center/split-center,header-wcplayoutprop) + status. apps/cms/seed/waterfordcountypainters.json— header reconciled (layout:split-center- CTA) so seed ↔ live D1 match.
State¶
Committed to master this session-end: the capability code + the five wiki files + the WCP
seed reconciliation + this handover. Live WCP written: worker redeployed
(version b4e7a6a4-8d7a-43a2-8d37-783a3e29a260, carries the new header-wcp) + a surgical
ec_globals site-row patch (header layout + CTA; all 6 globals blocks preserved,
no pages touched). Recovery anchor: D1 Time Travel bookmark
00000077-00000000-000050a6-25af9b7f80559ca2fcefe2707d703927 (pre-write); pre-write globals
snapshot in the session scratchpad. garvanbay worker/D1 untouched (still runs pre-slice
header code; stacked render unaffected). Left alone (untracked/unrelated): infra/
(undecided ownership — known-issues), .claude/settings.local.json, scripts/.tmp/,
apps/cms/scripts/.tmp/.
Next session (priority order)¶
- Capability #2 fast-follows (known-issues "Header dimension — three
fast-follows"). Highest-leverage: TopBar field extraction (WCP's live email/location/
social-hrefs the seed dropped — likely a capture-plane miss, same class as the header
layout) closes the visible "phone-only topbar" gap. Then header-CTA auto-detection
(pinned outside
<header>). - Capability #2 identify half — globals into the scorecard. The
chrome.headerRawgeometry this slice added is the raw material; fold in as an additive reporting projection (like variant-mismatch/asset-manifest), vetoes/thresholds → Slice 6. - Capability backlog #1/#4/#6 — hero carousel+video variant (asset half → Slice 5), video gallery, matcher precision.
- Slice 6 calibration — fit
lib/calibration.jsonon the 30–50-site batch; promote hero-variant/scrim/textTone (and the two reporting detectors' vetoes) to scored then.