Skip to content

Session handover — 2026-07-16 pt2

Two slices, and both were saved by measuring a wiki claim instead of building on it. VOD acquisition (ADR-0010 Slice F) was scoped, probed, and killed by its own Step 0 — the source is down, not just hard to reach. The FAQ-heading fix shipped, closed the 20th FAQ, and unmasked a bigger gap underneath it.

Nothing about the Wix→WooCommerce lane this session; that work lives in DCathal/replatform-woo.

Where to look

  • ADR-0010 — new fourth amendment: the third media surface is down at source, plus a correction to how "not in the pool" was established (the join misses its own positive control). Slice F row flipped Planned → BLOCKED AT SOURCE.
  • ADR-0011 Slice 1d row — the 20th FAQ closed.
  • ADR-0009 Slice 5 row — the gallery bucket's acquisition is blocked, and it is not three independent slices.
  • known-issues — the gallery-bucket entry carries the block + the reopen gate; the "19 are library cruft" claim is corrected; the home-FAQ heading entry is deleted (fixed) and replaced by the cta-band segmentation gap it unmasked.
  • known-patterns — four new entries (below).

What shipped

FAQ heading extraction (lib/matchers/FAQ.js). The heading now anchors to the accordion by document order (headingBeforeAccordion), not .first(). Wix puts WCP home's cta ribbon and FAQ band in one <section>, so .first() was handing the FAQ block the cta's copy.

Measured before shipping, not after: blast radius across both reference sites was 45 sections unchanged / 0 declines / 2 changed (both the home wrapper double, which dedupe collapses to one block). garvanbay seed 0 diffs. Both lanes exercised — 47 static-lane FAQ sections translate clean, 0 throws.

The 20th FAQ fell out of it for free. With its own heading, home's FAQ passed the Slice-1d join guard and paired with the real capture section: tone brand→default, _bg→#ffffff, align→left. Landed by surgical sync-style-to-d1 (1 block patched, 13 preserved) + a committed-seed patch of exactly 4 fields; no redeploy (existing rendered fields, read from D1 at request time). Verified on the artifact — an independent re-capture of the deployed page reports default/#ffffff/left.

The real stop — VOD acquisition is blocked at source

The wiki's Slice F plan (enumerate channel → mint token → HLS → ffmpeg → R2) presumes the VOD API answers. It does not. Every _api/vod/.../lists/ and .../play/ call on live WCP returns 403 "Internal server error of auth middleware"; 0 HLS requests fire; 0 <video> elements mount. The widget still paints a poster + "Play Video", so the page looks video-bearing — the failure is console-only.

Reproduced 5 ways (headless/headed × default/real UA × consent declined/accepted × all 4 tabs). Each of those was a live hypothesis first — the signed ctToken literally embeds HeadlessChrome/149…, and Wix's own cookie banner warns that declining functional cookies "may disrupt the website experience". Three plausible wrong stories, each one run to kill.

It is wider than the gallery. roof-painting (the fcr.about ×11 bucket) fires the same call, same 403. ~24 of the 27 missing videos are behind one account-side question, not three render slices. Cathal is checking the Wix Video app's status on the WCP account (2026-07-17); that gates everything. If it comes back: re-run the playback measurement first.

Cleanest statement of the split, and a control worth keeping — same URL form, no API, no token: GET video.wixstatic.com/video/<id>/480p/mp4/file.mp4206 video/mp4 for the hero, 403 text/plain for the gallery videos.

Corrections

"Of the pool's 46, 19 are library cruft" is false. It is 46 − 27 over sets whose intersection is zero — the 27 referenced videos are all VOD (absent from the pool), the 46 pool videos are all unreferenced. The shortfall (live 27, ours 1) is correct and the veto stands; only the cruft gloss was arithmetic with no join under it. The tell was already written down: the same entry noted the hero "does not appear in the pool in the capture's id form"the one video known to be in the pool also failed the join.

"The live player streams tokenized HLS" (07-15) describes an endpoint that answered. Today it 403s. Recorded as a discrepancy, not silently overwritten — it is either a 24-hour-old breakage or a context difference, and it is not resolvable from here.

What the FAQ fix unmasked — and a number that got worse honestly

There is no <section> for the home cta band: one Wix wrapper, two bands, one block emitted. The cta copy was only ever visible because it was squatting in the FAQ's heading slot — so fixing the heading made a pre-existing loss visible. Not a regression (the A/B proves the cta-strip's heading was "" in both base and applied).

Home's S fell 81.6 → 79.6, and the lower number is the true one: the drop row re-attributes from faq (weight 0.75) to content (weight 1.0) — our FAQ used to pair with live's cta row because their headings matched. Do not reconcile this by touching thresholds. The fix is segmentation (the SPLIT_TRANSLATORS shape), and where it belongs is deliberately not guessed at in known-issues.

New known-patterns

  • "A Wix wrapper can hold TWO bands" — document-order heading anchoring; and why the second band's absence, not the heading, is the real defect.
  • "An honest re-attribution can LOWER a score" — diff the rows, not the number.
  • "Before scoping an ACQUISITION pipeline, measure that the SOURCE still serves the asset" — plus the three instrument-faults that each nearly became the finding.
  • "A set-difference is not a number until you have measured the INTERSECTION" — check the join against a positive control.

Next

  1. Wix Video app status (Cathal, 2026-07-17) — gates ~24 of the 27 videos and WCP's only remaining HOLD. If it stays dead, the honest move is to re-scope videoDebt (live can't serve them either, so omitting them may be faithful) — not to keep engineering around a dead source, and not to relax the veto first.
  2. The cta-band segmentation slice — measure how many sites carry a two-band wrapper before choosing between a matcher special-case and a buildSections change; the answer sets the blast radius.
  3. Still open from earlier: garvanbay /contact hero (its HOLD, untouched); the aligner's role-aware anchoring; Slice 6 calibration.

The through-line

The wiki's untested proposals are now 5 for 5. Slice F's plan was written by a session that never called the endpoint; today's probe found it 403ing before a line of the pipeline existed. The FAQ entry's "fix the accordion's own heading sourcing" was closer — but its remedy was unbuildable as written (the heading is neither inside the accordion nor a DOM sibling), and it framed as an extraction bug what is really a segmentation gap.

And the newer half: check your own instrument before you believe your finding. Headless UA, cookie consent, and a click that landed on the wrong gallery each produced a confident, plausible, wrong story this session. The screenshot caught the third — it is the only probe that shows what you did rather than what you meant.