Skip to content

Session handover — 2026-07-18

A strategy session that ended with the corpus actually running. An independent structural evaluation (two blind reviews — deep-reasoner + Codex — plus two code fact-sweeps, synthesised in-session) surfaced the lane incoherence; Cathal resolved it same-day (CMS worker fleet is the sole ship lane); the corpus vehicle was scoped, built, positive-controlled and fed its first two blind sites before close. The emdash save-race repro was also finally filed upstream.

Where to look

  • ADR-0013 (Proposed — promotion is Cathal's call; pointer notes into ADR-0003/0008/0009 + the CLAUDE.md line fix deliberately wait for acceptance, per its checklist). CMS fleet = sole ship lane; static assembler demoted to internal tooling (its launch-gated deferrals void); Slice 6 corpus re-specced to score the CMS render; self-service confirmed a product promise.
  • scope-2026-07-18-cms-batch-runner — the slice, Step-0 recipe (headless local tenant via emdash seed -d against miniflare's sqlite), the three traps, the runbook. All done-criteria met except the EC2 re-run.
  • scripts/run-cms-batch.mjs — the runner. calibration/corpus-hosts.txt seeded with 3 sites.
  • known-issues — NEW: the Wix mesh-generation segmentation gap (first blind finding; prevalence is the reopen number); Slice 6 entry gains the vehicle re-spec + first blind scores; header fast-follow #3 (inline-left) trigger FIRED; the save-race entry records the upstream filing (#1158 comment).
  • known-patterns — new entry: "A local HTTP probe is only as honest as the PORT'S OWNER" (the quick-spike workerd interception; responder-identity assertion now in the runner).

What shipped

  • The structural evaluation. Verdict: A-grade craft, C-grade allocation; both blind reviewers independently ranked the same top risks (uncalibrated gate, blocked self-service, unproven provisioning, lane divergence, 2-site polish loop, Woo-lane dilution). The actionable core became ADR-0013 + this slice. Residue not yet adopted (owner's call, from the synthesis): a production-readiness ladder separate from fidelity; "no new bounded dimension without corpus evidence" as a scope-gate; a validate/CI pass for the producer layer (matchers/transformer have zero coverage; no test runner); Woo-lane quarantine behind a written trigger + portfolio segmentation tally; a housekeeping session (dead assembler generations, .tmp sediment, stale README, known-patterns split).
  • The batch runner (scripts/run-cms-batch.mjs): 13 stages, resumable, loud-continue, committed-seed protection, responder-identity assertion, zero production writes by construction. Positive control exact: local serve of WCP scores S 82.1 / T 100 / G 84.4 → 87.2 HOLD(videoDebt) — the deployed baseline to 0.1. batch-scorecard consumes its output (2 sites, 0 skipped).
  • First blind results (criterion b — 3/3 unattended): salttherapysolutions.ie 89.7 (S 87.8 — a never-seen site above τ_ship on axes; held by chromeDisagree = exactly the known unrouted inline-left header, + videoDebt/deadAssetRef) and sweeneyofwexford.ie 33.3 (S=0, honest: old-generation mesh markup has no <section> elements — segmentation gap, not an instrument bug).
  • The .ie convention lifted (owner direction): domainFor(site) in resolve-site.mjs reads a new "domain" descriptor field (fallback <site>.ie keeps descriptor-less flows byte-identical — regression-checked); threaded through wix-api / transform-seed-images / emit-theme-css; both reference descriptors carry explicit domains; runner synthesizes local-only descriptors with fake D1 ids + first-label collision guard.
  • emdash intelligence: emdash is Cloudflare's own OSS product (launched 2026-04-01) — upstream-longevity risk down. 0.29.0 (current latest) touches nothing in the save path; #1158 was closed before the 0.28.1 repro, so the repro comment (filed from DCathal, sanitized — no business context) is the correction upstream needs. Draft deleted per its own instruction.

The honest parts

  • ADR-0013 is Proposed — nothing in 0003/0008/0009 was edited; if the decision shifts at review, only the new files move.
  • The impostor-port detour cost two rebuilds before the port owner was checked — banked as the known-patterns entry and as two hard assertions in the runner.
  • The runner's identity sentinel passes on chrome alone (sweeneyofwexford proved it) — it is an anti-interception check, not a content check.
  • salttherapysolutions' videoDebt may partly be the Wix API key's site-access restriction (images need no API; videos do) — unverified; widen the key before reading corpus video-debt numbers as capture debt.
  • builds/ artifacts for the two new sites (incl. their committed theme.json) live only on this box until the EC2 port.

Next — corpus BEFORE fixes (owner's call, 2026-07-18, and it matches the

evaluation's own "no new dimension work without corpus evidence" rule)

  1. Prepare the vehicle, not fixes: widen the Wix API key's site access (account-side — NOT a fix: without it every corpus site's videoDebt conflates "capture debt" with "key couldn't see the site", contaminating the very issue list the corpus exists to produce); EC2 port + re-run the positive control there (or accept an overnight run on the Windows box); promote/amend ADR-0013 when reviewed (the corpus can run on Proposed).
  2. Run the whole 30–50-site corpus (Cathal picks: team-built, spread verticals, a few expected-failures; tally e-commerce/booking while picking — it prices the Woo lane and the booking question). Measure everything, fix nothing mid-run.
  3. Fix from the aggregated ranked list — inline-left (trigger already fired), the mesh-generation gap, and whatever else surfaces, ordered by how many sites each fix closes, not by discovery order. Only a defect that breaks MEASUREMENT itself may jump the queue (none currently does — even the mesh gap scores honestly).
  4. Watch #1158 for an upstream response; re-run the 2-trial repro on any release touching the save path.
  5. The evaluation residue list above, as bandwidth allows.