Plan · v1 draft · for red-pen

Wednesday Readiness

Everything that must be true before we start moving sites for real on Wednesday — what blocks, what should ride along, and the four calls only Robert can make.

Draft for Robert’s red pen · builds start on blockers only · Wednesday is gated on the Tuesday rehearsal
The bar. A teammate files a site and, with no one from engineering in the loop: a clean copy lands in about thirteen minutes with forms already working safely · QA walks it · the site flips to its real address with real recipients · and every step leaves a receipt someone else could check. Ready means that whole walk works for a stranger — not that each piece worked once for us.
↘ go deeper — standing facts this plan builds on
Tonight’s door proof closed end-to-end on valleyoak (same-origin form → Turnstile verified server-side → POST 200 through plane forwarder → lead row afe4ecff → email received by Robert). All five lane fixes merged (#29 #32 #33 #34 #37). Robert’s ruling: existing run-through repos get deleted and re-run fresh — so no legacy-compat work appears anywhere below; every site carries all fixes by construction. Pilot mode is the safety floor: delivery pinned to digitalempathyleads@gmail.com until a site is deliberately flipped.

The journey — one site moving through Wednesday’s system

Follow a single practice site filed on Wednesday morning. Each stop names what must be true there — and the build that makes it true. Builds marked blocker must land before Wednesday; every build gets an independent validator before it counts.

  1. The site is filed and a clean copy lands (~13 min). The door picks it up, copies it, and reports honestly — done, parked for review, or failed — without ever re-running itself in a loop. This works today; one regression taints it.
    Blocker B7 — the lost cursor images. An evening merge made copies silently drop the little grab-cursor images sliders use. Every Wednesday site would ship the miss. Two suspect changes, receipts in hand; a builder bisects and fixes with the desk’s fixture as the red leg.
    ↘ go deeper
    Lane issue #38. Measured: folds at tip 7e01d269 miss iLightbox closedhand.cur (two path forms, cursor:url() carriers in fusion-styles min.css) that 28901430f captures. Bisect window #22..#32, prime suspects #26 (hidden-URL-carriers rework) / #30 (stranded-refs belt). Fix belongs in the carrier family with cursor:url() as a named carrier class + the Adamson fixture as the red-first leg. Dispatched builder + paired validator.
  2. A real visitor uses the form — and it just works. This is the stop tonight’s proof exercised by hand; three builds make it true for strangers.
    Blocker B1 — the dead bot-check. Swapped forms still carry the old provider’s bot-check as a required question whose machinery we deliberately removed — a real visitor gets stuck on it forever. The swap must retire that line; our own bot-check (which works, proven tonight) stays the gate.
    Blocker B3 — your allowlist keystroke. The bot-check only trusts pages on our old domain. The new domain, and every practice’s real address, must be added to its trust list before forms work there. One sitting in the dashboard — only you hold that widget.
    Blocker B6 — the email floor. Lead emails are raw text today. By Wednesday: a clean, readable layout with the practice’s name. The faithful version — each practice’s own painstakingly-designed template, captured from where it already lives — rides the recipient build and is not Wednesday-gated.
    ↘ go deeper
    B1: il-form-rewrite neutralizes the vestigial JotForm captcha line (g-recaptcha-response required-field + its validation hook) during the swap; Turnstile injection unchanged. Red fixture: tonight’s valleyoak form, where submission was client-blocked until the field was hand-satisfied. Also folds in: strip dns-prefetch/preconnect hints of killed hosts; the JotForm event-tracker beacon 404 (cosmetic) is accepted-and-named, not fixed. Owner: keeper.

    B3: Turnstile widget (sitekey 0x4AAAAAAEaeUNgjmXm_W2cg, Robert-held) allowlist grows: digitalempathysites.com + Wednesday’s practice real-domains. pages.dev stays refused by design.

    B6: form-intake-api email renderer replaces raw text with an HTML field-table (practice name in subject). Faithful tier = capture each form’s JotForm notification template via the API at swap time, placeholder-mapped at send — canon #2109, rides build 18. Owner: canon desk, small build.
  3. The completeness gate judges the copy — on its real address. Wednesday sites serve on their own domains. Today the gate goes blind in exactly that mode.
    Blocker B2 — the real-address blind spot. When a copy serves on the practice’s own domain, the checker stops recognizing the site’s references to itself and cries wolf on dozens of healthy files — every real cutover would arrive pre-failed. The diagnosis is already done (the desk proved all 61 alarms false, with receipts); the fix teaches the matcher that a site pointing at its own address is pointing at itself.
    Blocker B4 — the database keeps up with its code. The leads database crashed tonight because a deploy shipped code newer than the database’s shape, and nothing reconciles them. Real leads start Wednesday; the deploy pipeline gets a migration step so this class dies.
    ↘ go deeper
    B2: lane #39 — serveHost == originHost mode; matcher must treat origin-absolute URLs as self-ref candidates. Fires at both measured SHAs (mode-first-use, not regression). Red fixture: the desk’s 61-row Adamson set. May need a canon-side port; the fix PR names it.

    B4: canon #2107 — live neuron-leads D1 was missing the tag column (tonight’s 1101 crash, hand-fixed by Robert) and the entire delivery_outcomes table. Deploy workflow gains a migration/schema-reconcile step + a drift check that reds before a visitor finds it.
  4. The site flips live — real domain, real recipients, provably safe. The one stop where readiness partly depends on a build owned elsewhere.
    Blocker B5 — an honest ETA, then a decision. Flipping delivery from our safe inbox to the practice’s real people needs the recipient-retrieval build on the Neuron desk. Today’s first action is getting its honest Wednesday ETA. If it can’t land: the explicit fallback is cutting over with forms still in safe mode — leads to our inbox, forwarded by hand — flipping per-site as the build lands. Whether that fallback is acceptable for the first batch is your call #1.
    ↘ go deeper
    Build 18 (Neuron desk): JotForm API + WPE retrieval of true recipients, producing the LIVE stamp’s first receipt. The ratified flip contract stands: LIVE requires dated retrieval provenance + Robert per-site sign-off + confirmed test delivery; the conductor’s composed proof (pre-flip gate, post-flip probe pair); cutover refuses the real domain while PILOT. Edge mechanics for real domains ride the desk’s edge-ready gate (DNS + routes row + UA-carrying 200), proven on the Adamson rehearsal. Plane routes for the new zone are config-pinned as of tonight (#40/#41) — un-clobberable by deploys.
  5. Tuesday night: the dress rehearsal is the gate on Wednesday itself. One site walked end-to-end as a stranger would — filed, copied onto the new domain, form tested in safe mode, flipped to its real address, a real submission on the live domain reaching its destination, then a cold walk by you or Alie. Green rehearsal = Wednesday is a GO. Any red names its own blocker by construction. Alongside it on Tuesday: the four remaining pilot sites are deleted and re-run as one batch — which also validates your delete-and-rerun ruling, exercises forms on every site shape, and produces the first honest batch-timing number for Alie’s manual.
    ↘ go deeper
    Rehearsal candidate: Adamson (already the desk’s live real-address rehearsal) or one rerun pilot flipped to a test hostname. Rerun batch: huntingtonpet, milfordanimalvet, lakepine, fortmillvet (Fort Mill’s rerun also onboards it — it currently has no routes row / no DNS). Repo deletion is sanctioned by your word once, executed by the desk — agents never delete outside named scope. Field-manual updates ship with the batch: forms + safe-mode semantics, the parked-request flag, new domain scheme, batch timing, the services-the-copy-blocks line (PR #25).

Deliberately after Wednesday

The speed probe (spec parked; fires after the reruns) · faithful per-practice email templates · the door’s reopen-instructions trap · the lint that reads comments as wiring · cosmetic beacon 404 · sandbox bay jobs (blocked on a credential step). None of these change what a Wednesday site experiences.

Honest risks

Build 18 is not ours to schedule

The live-flip depends on another desk’s build. The plan converts that from a hope into a decision: honest ETA today, explicit safe fallback if it misses, your call on the fallback.

Two days is tight for seven blockers

They parallelize across the keeper, dispatched builders, and two desks — but validation is not skipped to make the date. If a blocker misses, Wednesday’s batch shrinks to what the rehearsal actually proved, rather than the bar bending.

The new domain is two days old

Adamson is the only site that has ever served on it, and one deploy already knocked it dark for an hour tonight. The routes are now config-pinned, but the rehearsal deliberately walks the new-domain path before any client site does.

Your four calls

1 — The fallback

If recipient retrieval misses Wednesday: acceptable to cut the first sites over with forms in safe mode (leads to our inbox, hand-forwarded), flipping per-site as it lands? Plan assumes yes.

2 — The domain

Wednesday’s batch on the new digitalempathysites.com scheme, or one more week on the old address? Plan assumes the new one.

3 — The reruns

Say the word on deleting the four existing pilot repos; and should the Tuesday rerun double as the twelve-wide load test, or stay at four?

4 — The allowlist sitting

When you grow the bot-check’s trust list, do you want Wednesday’s practice real-domains added in the same sitting? Needs the Wednesday site list from you or Alie.