Session handover — 2026-09-03¶
Continues 2026-09-02 pt4.
This was the day the plan changed. The owner looked at the corpus side by side — live site
beside our rebuild, 38 pairs — and said none of them are shippable. The machine had said
15. That single act voids the calibration Slice 6 was waiting six sessions for, and it
redirects the work: not "tune the score", but fix what is visibly wrong in every rebuild,
then deploy behind noindex and let an agent loop close the rest against a score. The
second half of the day started on the fixes: two of the five cheap defect classes are done and
proved; three are untouched.
Where to look¶
known-issues — read these five in this order, they are one argument:
- "Deploy-noindex + agent-driven fix loop — this REORDERS the critical path" — the owner's direction and what it changes.
- "Do we need our own setup/deploy and our own scoring UI?" — mostly no;
review.htmlalready exists and now shows live beside ours. - "THE CALIBRATION IS VOID — the owner labelled 0/38 shippable, and the machine said 15" — the composite is ranking something, but not shippability.
- "DEFECT-CLASS INVENTORY — what is actually wrong with the rebuilds" — twelve classes from reading 12 pairs closely, ranked by how often they appear. Now carries a status block: classes 1 (footer stub) and 8 (paragraphs shattered) are FIXED with measurements; classes 2, 3, 5 are labelled untested hypothesis with a reopen trigger. This is the work queue for the next session.
- "EXPERIMENT — first agent-loop pass on
criticalSectionDropped" — the veto that was holding 33 sites was largely a false positive.
Also today, on mobile: the "Mobile is UNMEASURED" entry gained three follow-ups — there is
no phone-width test by construction (everything runs at 1440×900), the garvanbay hero
letterbox is reproduced (hero band 390×553, image 390×215, cause not fully found), and
scripts/probe-mobile.mjs now measures 10 corpus sites at a real device profile — and
corrected two claims made earlier the same day (the "38% crop" figure was invented; measured
is 11%).
known-patterns — five new entries. The one to read first is "Globals reach the transformer TRANSLATED, sections reach it RAW": it is why a one-line footer bug diagnosed in May sat unfixed for four months — the footer rendered, as a stub, so every count said it was present. The others: verifying a shared primitive by rendering the old inputs with Astro's scoped hash normalised out; Wix's three paragraph-break conventions and why a sentence splitter destroys all of them; a phone-sized viewport is not a phone; and a tooling trap (doubled backslashes are halved in heredocs) that cost time twice.
What shipped¶
| commit | what |
|---|---|
dee69c1 |
"do we need our own deploy + scoring UI?" — mostly no, one already exists |
2393e52 |
deploy-noindex + agent fix loop reorders the critical path |
4e1e0b6 |
experiment: criticalSectionDropped is largely a false positive |
38158a0 7429474 8c21be0 |
mobile: no test by construction; probe added; hero letterbox reproduced |
e57a9b8 |
review.html shows live beside ours (links alone were unusable) |
ddcc768 |
calibration is void — owner 0/38, machine 15 |
af83fd1 |
the defect-class inventory, 12 classes from 12 pairs |
81707a1 |
fixes 1 + 8: footer restored (matcher, transformer, schema, primitive, adapter), paragraph structure kept (both splitters + br-aware matchers) |
Nothing was deployed today. The fixes are pipeline changes, proved on regenerated seeds and a
rendered regression fixture; the live workers (garvanbay, WCP) are unchanged and still noindex.
What proved the two fixes¶
- Footer. All 64 corpus seeds regenerated against HEAD's: design credit 0 → 44 sites,
socials 0 → 24, footer logo 0 → 13, legal links 0 → 9, badges 0 → 13, columns 105 → 178.
Copyright 0/63 is faithful — no corpus home page carries a © line. Only
fcr.footerblocks changed. garvanbay's old footer node and the old static-lane props render DOM-identical before and after; the one CSS change is the column count becoming a variable. The CMS builds with all 23 block types renderable. - Paragraphs. 1,168 corpus bodies: rendered paragraphs 4,308 → 2,881 and zero bodies
changed a character — only where the breaks fall.
translate.smoke48 pass / 5 fail before and after (the 5 are pre-existing). rmla.ie assembled in the static lane renders the CTA body as one paragraph.
The honest parts¶
- The calibration Slice 6 waited six sessions for is dead on arrival. Not because the labels never came — because when they came they were 0/38, and a precision cut needs at least one positive. The instrument measures section presence and tone; the owner judges what is inside the section. Nine of twelve defect classes leave the section present.
- Two of my own claims were corrected within hours, again (yesterday it was also two). The "38% hero crop" was hand-arithmetic from an assumed box; measured, 11%. The mobile probe caught it. The pattern across two days is the same: a number stated before it was measured.
- A bug the wiki had correctly diagnosed in May was still there. "Footer credit never reaches the seed — credit vs partnerLogos, one-line fix." It was one line, and it was right, and nobody did it because the footer rendered. The fix today was not one line — the schema, primitive and adapter had no fields for any of it — but the diagnosis was.
- The paragraph fix needed three attempts to be right, and two of the wrong attempts
passed: source newlines after
<br>read as a double break (split "See how we" off as a heading), and a NUL sentinel the HTML parser silently dropped (produced the old output, no error). The zero-character-change check is what caught both. Keep it. - Working tree leftovers not committed, on purpose:
calibration/pairs/(41 JPEGs, an earlier form of theshots/thatreview.htmlnow uses — delete or ignore), the peer'sapps/cms/seed/wcp-scan.json/apps/cms/sites/wcp-scan.jsonc,infra/,apps/cms/scripts/.tmp/,scripts/.tmp/.calibration/labels.csvhad been wiped to its header row by something this session; restored from HEAD.
Next session¶
- Classes 5, 3, 2 in that order — headings, tick lists, hero scrim. Each has a concrete
case in the inventory status block and an untested mechanism. Regenerate the 64 seeds and
diff against the previous set after each; the scratchpad scripts are gone with the session,
but the method is one loop over
corpus-crawl/*/callingseed-from-build.js --out. - Re-read the 12 inventory pairs after the five are done. That is the reopen trigger for every hypothesis, and the only check the owner trusts.
- Deploy-noindex loop — the reordered critical path. Blocked on nothing technical now that the score is known to be blind; blocked on deciding what score the agent loop closes against. The inventory's twelve classes are the candidate list.
- Mobile hero: cause still not fully found (
hero-4.astroimage height inside the absolute band). Owner-visible on a phone today.
Decisions for the owner¶
- Mobile target — Wix mobile is a separately authored view; do we match it, or a sane responsive default? Every mobile measurement is provisional until this is answered.
- Cookie/consent and mail system — still open from previous handovers.
- Which score does the agent loop close against once deploy-noindex is live. The composite is void for shippability; the defect inventory is a checklist, not a score.