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 (buildSections →
matchAllSections → dedupeLayoutMap), 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.
- 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. - 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
BlogPostscarries them. Copy has a home on the page or it does not. - 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 longh2mark it homed. WCP's known orphan flipped tookand 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¶
- 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
videoDebtHOLD. Unchanged from 07-16 pt2: if it comes back, re-run the playback measurement first; if it stays dead, re-scopevideoDebtrather than engineer around a dead source — and do not relax the veto first. - 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. - Still open from earlier: garvanbay
/contacthero (its HOLD, untouched); the aligner's role-aware anchoring; Slice 6 calibration.