Skip to content

Session handover — 2026-07-17

One slice, deliberately small: measure the cta-band segmentation gap before anyone picks a fix for it. The video lane stayed parked (see below). The measurement answered a question nobody scoped and failed to answer the one it was aimed at — both of which are recorded, because the second half is the honest part.

Where to look

  • known-issues — "The home cta band has NO BLOCK" gains a MEASURED 2026-07-17 subsection: the numbers, the verdict, and an explicit note that the reopen trigger should NOT be read as fired.
  • known-patterns — one new entry, "An h2 is not a band", directly after the two-band-wrapper entry it extends.
  • scripts/measure-two-band-wrappers.js — new, read-only, runs the real seed lane. node scripts/measure-two-band-wrappers.js --all.
  • Nothing deployed. No seed, no D1, no capture artifact touched.

What shipped

A prevalence measurement over the whole local corpus — WCP 25 pages + garvanbay 10 = 35 pages, 326 surviving sections. It runs the real pipeline (buildSectionsmatchAllSectionsdedupeLayoutMap), not a replica: buildSections was exported from lib/cms/seed-from-build.js (a one-line additive change; buildSeed untouched) rather than copied, because the three scratchpad replicas have already drifted — scripts/.tmp/rematch-check.js's version is bare $('section') with no header/pinned/blog/footer handling.

WCP garvanbay
sections with ≥2 band h2s 2 1
two-band wrappers (copy orphaned) 1 (index §comp-lyzscb43) 0

The result, and what it does NOT say

The corpus does not settle quirk-vs-pattern. n=2 with 1 hit is 50/50. The known-issues reopen trigger ("the first other site measured with a two-band wrapper") reads as fired if you squint — garvanbay does carry the shape — so the entry now says plainly that it is not. ADR-0010's second amendment is the standing warning against promoting a one-site measurement to a contract, and this is the same trap wearing a better number.

What it did settle is more useful, and nobody scoped it. The two-band SHAPE is 2/2 — both sites, both on the home page, both paired with FAQ. garvanbay's home FAQ section comp-l60lrz7n holds its accordion and a 3-card article-teaser band nested in the same <section> (verified: 1 post-list-pro-gallery node inside it). It loses nothing, because buildSections enumerates that band through its dedicated [class*="post-list-pro-gallery"] branch, so BlogPosts#blog-16 emits it. WCP's cta ribbon has no such branch.

So the variable is not whether Wix bundles two bands into one <section> — it does, on both sites. It is whether the second band has an independent enumeration path. buildSections already grants exactly that to one band type. That is evidence for a buildSections-level branch over a FAQ-matcher special-case — not acted on, because one confirmed instance does not set a blast radius, and the fix location stays deliberately unchosen (as it has since 07-16 pt2).

The through-line — the instrument was wrong three times, and the third was the dangerous one

The detector proposed at scope-lock (a section with ≥2 distinct h2s) was wrong three ways. Each wrong version returned a confident number.

  1. Wix marks CARD titles as h2. WCP's 4-card USP ribbon, garvanbay's 3-card teaser feed. No structural test separates them from the real defect — the discriminator is not DOM shape but whether the copy survives into a block's props.
  2. Section-scoped orphan-checking INVENTS the defect. It reported garvanbay as a two-band wrapper; its teaser h2s really are absent from the FAQ block's props, but BlogPosts carries them. Copy has a home on the page or it does not.
  3. Bidirectional substring matching HIDES it. Once the haystack was every block on the page, n.includes(p) let any short prop ("24/7", "Call") sitting inside a long h2 mark it homed. WCP's known orphan flipped to ok and both sites reported zero.

Faults 1–2 inflate the count. Fault 3 zeroes it — the flattering answer, the one nobody re-checks, and the one that would have closed the entry as "not a real problem". It was caught only by the positive control (the known WCP case must be detected). That is the whole argument for running a detector against a case whose answer you already know before believing it on cases you don't — the ADR-0010 fourth-amendment lesson (a join that misses its own positive control proves nothing), arriving under its own power a day later.

Next

  1. The Wix Video app status (Cathal, was due 2026-07-17) — parked this session by decision, not forgotten. It still gates ~24 of the 27 missing videos and WCP's videoDebt HOLD. Unchanged from 07-16 pt2: if it comes back, re-run the playback measurement first; if it stays dead, re-scope videoDebt rather than engineer around a dead source — and do not relax the veto first.
  2. The cta-band segmentation slice — now needs one more site with an orphaned band, not more analysis of the two we have. The measurement is one command (node scripts/measure-two-band-wrappers.js --all), so run it on the next crawl that lands locally rather than re-deriving any of this.
  3. Still open from earlier: garvanbay /contact hero (its HOLD, untouched); the aligner's role-aware anchoring; Slice 6 calibration.