⛏️ TIER 0 — READ FIRST (Apr 27 structural fix Layer 3): BSP_Bricks_Codebase_Documentation.html
Required §13 Canonical Build SOP · §15 Service Page Build · §6 Page 8 schema · §4 Child theme native-save · §7 Failure modes.
Attestation required: /tmp/codebase_doc_read_attestation_{session_id}.json with {doc_sha, sections_read, ts}. Cutover_rehearsal step 25 verifies.
Without attestation: any Bricks-execution work is producer-as-verifier-collapse-prone. Apr 27 smoke gate caught a 100% false-fail in M2 sanitizer chain that documented in §5 — fix was alias-tolerant assertion. The structural fix codifies: don't code-execute against Bricks without reading the doc.
✅ APR 27 END-OF-DAY · 22/22 cloned + Defense-in-Depth shipped: See MH section bsp-apr27-end-of-day-final-state for the full Mon recovery + structural fix arc receipts. Pages provisioned, native-save callers consolidated on dispatcher_safety.native_save_with_external_verify, mining briefs ready (location 14/14 + service 7/7), Figma Codebase Doc shipped. Tue AM dispatch readiness: GREEN with content-swap caveat (council fills per-page content from briefs).

⚠️ Apr 27 10:25 CT correction: Earlier handoff referenced "post 999" for the smoke gate. Producer-as-verifier check found 999 is the auditor's fake-fixture decoy. Smoke fixture corrected to canonical post 258 (M1 baseline 146). Smoke ran 10/10 PASS 5.82s. See MH bsp-apr27-smoke-gate-built-and-fixtures-corrected.

📡 Mon AM Cold-Start Handoff Packet · 08:00 CT

Where Robert Left Off Sun PM · What Mon AM Dispatch Fires Against

3-min orient before the 08:00 CT dual council dispatch. Fresh Claude Code session opens this first, runs the rehearsal preflight, surfaces top-5, awaits Robert's fire command. All decisions through Apr 26 are LOCKED — do not relitigate.

24-Gate Rehearsal
16 PASS · 0 FAIL · 2 stale-WARN · 6 INFO
Dispatcher Fixes Shipped
13 / 79 audited (Apr 26 night)
Phase 1 Scope
30 pages · May 1 LOCKED
Bible (Cutover Plan v4)
103,474 B · sha=1bb9ab28...
Bricks Codebase Doc
1,275,807 B · sha=dd805467... · disk == nginx
🎯

Top 5 — What Robert needs to know RIGHT NOW

3-min ORIENT
  1. Phase 1 = 30 pages locked, May 1 holds, no scope cut, no slip. 9 service + 15 location + 6 informational. v4 launch verdict.
  2. Mon 08:00 CT dual council dispatch ready to fire. Dispatch A: populate_service_pages.py (7 pages · 5A/2B). Dispatch B: populate_location_pages.py (15 cities). Both shipped Sun PM with M1 + M2 safety gates baked in.
  3. 13 dispatcher fixes shipped Apr 26 night. 24-gate rehearsal: 16 PASS · 0 FAIL · 2 stale-WARN · 6 INFO. Both WARNs reflect resolved decisions, not failures.
  4. Decisions through Apr 26 LOCKED. Slug = Approach 2 · Phase 1 = 30 pages · Template split = 5A/2B · Coupons → homepage 301 · Septic deletion · Last-mile parallel · Kalen iframe dashboard.
  5. Producer-as-verifier rule applies. Every claim needs sha256 / smoke test / file path. No fabrication. No "should work" — show the receipt.
📋

Mon AM Execution Path · 07:55 → 17:00 CT

TIMELINE
07:55 CT
Robert pastes bootup prompt into fresh Claude Code window (see §Bootup below). Fresh session reads handoff + runs rehearsal preflight. Reports top-5 + readiness verdict.
08:00 CT
Dual council dispatch fires. Dispatch A (services) + Dispatch B (locations) parallel via council v2. Strategist + Critic + Researcher + Auditor each fire. Components 9 (TIER 0) + 10 (conv-hyp floor) enforce. Critic intelligence (BRICKS_HARD_RULES + KNOWN_TECH_DEBT + Theo test) gate.
11:00 CT
Native-save smoke test gate. POST /bsp/v3/bricks/native-save × 10 against canonical post 258 (M1 baseline 146 elements verified Apr 27) + rollback. Pre-req for both dispatches to start writing.
13:00 CT
Both v1 scripts ready. CITY_ZIPS extended for 6 TIER B (spring-hill, edgerton, gardner, de-soto, bonner-springs, stilwell). M1 baselines verified per page.
17:00 CT
Sewer-repair trial run + Playwright independent verify. One service page populated end-to-end. Cache purge. Independent re-read. M2 sanitizer assertion validates write trust. N1 changelog auto-appends + git commits.
🔒

Locked Decisions — DO NOT relitigate

10 LOCKED
#DecisionLockMH ref
1Slug restructure: Approach 2 (rename at cutover bundled with redirect-on + theme switch)Apr 26bsp-apr27-cutover-v4-decisions-locked
2Phase 1 scope: 30 pages May 1 — no cut, no slipApr 26bsp-apr27-cutover-v4-decisions-locked
3/coupons/ on May 1: 301 → homepage; page build = Phase 2Apr 26bsp-apr27-cutover-v4-decisions-locked
4/septic-system/: DELETE on stagingApr 26bsp-apr27-cutover-v4-decisions-locked
5Template A/B split: 5A (Sewer Repair · Sewer Cleaning · Drain Cleaning · Sump Pump Emergency · Leak Repair) / 2B (Trenchless · Water Heater Repair)Apr 26bsp-apr27-cutover-v4-decisions-locked
6Last-mile build: PARALLEL via council v2 dispatcher Mon 08:00Apr 26bsp-apr27-cutover-v4-decisions-locked
7Kalen review: Interactive iframe dashboard at /preview/may1/ + Slack DM thread per pageApr 26bsp-apr27-cutover-v4-decisions-locked
8Drain Cleaning canonical: 2 redirects (flat slug + /plumbing-services/) → /services/drains/drain-cleaning/Apr 26bsp-apr26-v3-cutover-fully-locked
9Water Heaters: 301 BOTH old URLs → /services/water-heaters/water-heater-repair/Apr 26bsp-apr26-v3-cutover-fully-locked
10RSA bulk-update: Same-day Friday May 1 bundle (11 RSAs · 9 URL + 3 review-count syncs)Apr 26bsp-apr26-v3-cutover-fully-locked
🛡️

13 Dispatcher Fixes · Apr 26 Night

SHIPPED

79-blindspot audit (Round 1 + 2 + 3) → 13 critical fixes deployed. Tier 2 batch deferred to Wed AM (don't stack 9 hardening changes night before launch). Phase 2 hardening for O3 + O4.

F1 · Round 2 code-level
protocol_gates truncation
council_runtime.py [:14000] → [:20000] · sha=49e832cd6e5486ff (later 05d1e703acc3c523)
F2 · Round 2 code-level
Component 9 TIER 0 authority
source_precedence.py · BRICKS_DOC_AUTHORITY_SOURCE constant · Bricks Doc pinned above date · sha=7db7ed49b97abde5
F3 · Round 2 code-level
Auditor § citation grep
auditor_tools.py · verify_bricks_section_citation() · §13/§15 OK · §99 FLAG · sha=375fb2082b2ff8a0
F4 · Round 2 code-level
Freshness gate cron
bricks_codebase_freshness.py · cron Sun 7PM CT · cache: bricks_codebase_canon.json · sha=3d8b65fd3feda9ef
L1+L4 · Round 3 Tier 0
Doc section loader + Apr 17 facts
bricks_doc_section_loader.py · 40 sections indexed · 5 facts (page_8: 118→133) · sha=e95e4527eb20af17
N4 · Round 3 Tier 0
Pre-flight freshness re-check
freshness_preflight.py · check_freshness_now(strict=True) · wired into council_runtime · sha=3d8b65fd3feda9ef
M1 · Round 3 Tier 1
Read-patch-write-verify
dispatcher_safety.py · diff_against_baseline · post 258 = 146 ✅ · sha=7eab8c0034684ef2
M1 · Round 3 Tier 1
populate_service_pages.py
7-page dry-run sweep clean (5A + 2B) · sha=ea1606db86e6aafe
M1 · Round 3 Tier 1
populate_location_pages.py
15-city dry-run sweep clean (9 TIER A + 6 TIER B) · sha=b10bf5b64fe07fcf
M2 · Round 3 Tier 1
Sanitizer chain assertion
in dispatcher_safety.py · 4 smoke tests pass: happy=OK · ERR=FLAG · MISSING=FLAG · Slack alert wires
N1 · Round 3 Tier 1
Git-backed changelog auto-append
dispatcher_changelog_hook.py · file-lock + idempotent + git commit live (after git init Sun) · sha=16ac0c0b75edaec9
O5+O1+O2 · Round 3 Tier 3
Critic intelligence (Hard Rules + Tech Debt + Theo)
dispatcher_intelligence.py · 20 BRICKS_HARD_RULES · 67/48 snippet bloat detected · §16 slop · wired into critic_prompt · sha=6cd3670ae2763248
+ 3 cutover gates
step_19/20/21 + step_22/23/24
cutover_rehearsal.py · 24 gates total · all 6 new gates PASS
📅

Daily Focus · Mon → Fri (compressed)

CADENCE
DayRobert focus (terminal + Bricks UI)AudreyGate
Mon Apr 27 · TODAY08:00 dual council dispatch · 11:00 native-save smoke 10/10 · 13:00 v1 scripts ready · 17:00 sewer-repair trial + Playwright2 scripts at v1 + smoke 10/10
Tue Apr 29Full parallel populate: 7 service + 15 location · Build Kalen review dashboard /preview/may1/(optional) Template A/B mockup review · Slack 👍 · ~15 min22/22 pages DRAFT · Dashboard live
Wed Apr 306 informational pages · Kalen batch 2 · publish DRAFT → READY≥ 25/30 READY
Thu May 1Final QA · Playwright sweeps · curl matrix preflight · Kalen final approval(optional) visual sweep dashboard · ~20 min30/30 APPROVED · cutover_rehearsal PASS
Fri May 2 · CUTOVER08:00 CT: backup → slug rename Bricks UI (9 pages) → Rank Math rules ENABLE → theme switch Oxygen→Bricks → curl verify · monitor 90 minPhase 1 LIVE · 30 pages · Big Sale tracking intact

Daily standup 09:00 CT — 5-min Slack post: yesterday's gate hit/missed · today's 1-line focus · blockers (P/I/S/D/N format).

🚨

Open Items + Sun Morning Housekeeping

2 STALE WARN

Both stale, NOT blockers — they reflect resolved decisions but the gate logic hasn't been re-baselined.

Refresh both Sun morning if you want clean rehearsal output. Not blockers for Mon 08:00 fire.

Tier 2 deferred to Wed AM (stability rule — don't stack 9 hardening changes the night before launch): L2 sha256+URL revalidation · L3 BeautifulSoup parse · L5 Mario operating principles · M3 CSS specificity gate · M4 CSS @media append rule · N2 MH back-reference · N3 serialized changelog queue.

Phase 2 hardening: O3 snippet count auto-update · O4 cleanup candidates auto-surface.

📚

Canonical Index — Where to Find Things

SSoT
AssetPath / URL
📖 Week Bible (Cutover Plan v4)BSP_Friday_May_1_Cutover_Plan.html
🧱 Bricks Codebase DocBSP_Bricks_Codebase_Documentation.html · sha=dd8054672d346567
📜 Master Session HistoryBSP_Master_Session_History.html
🛡️ Cutover rehearsal (24 gates)/opt/nexus/nexus/scripts/cutover_rehearsal.py
⚙️ Council runtime/opt/nexus/nexus/scripts/council_runtime.py · sha=05d1e703acc3c523
📦 Populate scripts/opt/nexus/nexus/scripts/populate_service_pages.py
/opt/nexus/nexus/scripts/populate_location_pages.py
🔒 Dispatcher safety + intelligencedispatcher_safety.py · dispatcher_intelligence.py · dispatcher_changelog_hook.py · freshness_preflight.py · bricks_doc_section_loader.py
🎨 Audrey Libraryaudrey_creative_library.html
⚔️ Battle PlanBSP_Website_Platform_Battle_Plan.html
📘 Menu Page Strategy PlaybookBSP_Menu_Page_Strategy_Playbook.html
📡 GCLID CheatsheetBSP_Ads_Attribution_Breakthrough.html
🗂️ MH entries Apr 26-27bsp-apr27-cutover-v4-published · bsp-apr27-cutover-v4-decisions-locked · bsp-apr27-week-of-may-1-bible-promoted · bsp-apr27-dispatcher-codebase-doc-integration · bsp-apr27-round-2-blindspot-audit · bsp-apr27-f2-f3-fixed-bricks-doc-tier-0 · bsp-apr27-round-3-architecture-blindspots · bsp-apr27-tier-1-and-3-dispatcher-shipped · bsp-apr27-monday-am-handoff-packet

What Mon AM Fresh Session Needs From Robert

DECISIONS
🔄

Rollback / Stop Conditions

BRAKES

30-min rollback budget · 3-step procedure (per v3 §7 runbook):

  1. Theme switch Bricks → Oxygen (1-click in WP admin)
  2. Toggle "May 1 Cutover" Rank Math redirect group OFF (1-click bulk action)
  3. Unpublish new pages (revert post status to draft for any nested-slug pages)

Stop conditions: Big Sale tracking pixel breaks · Smart Bidding new error class · >5% conv rate drop within 30 min of cutover · M1 abort fires 3+ times across populate runs · sanitizer chain ERR cluster.

📋

The Bootup Prompt — Paste Mon 7:55am CT

CLIPBOARD
📋 PASTE THIS MON 7:55AM CT
COLD START · BSP MAY 1 CUTOVER · MON 2026-04-27 08:00 CT

Read these in order, no skimming:
1. https://morpheus.callbrightside.com/documents/BSP_Monday_AM_Handoff.html (handoff packet)
2. https://morpheus.callbrightside.com/documents/BSP_Friday_May_1_Cutover_Plan.html (week bible)
3. MH section bsp-apr27-monday-am-handoff-packet (durable history)

Then run:
  ssh dovew@34.55.179.122 "cd /opt/nexus/nexus/scripts && python3 cutover_rehearsal.py --preflight"

Report back:
  1. Top 5 things Robert needs to know RIGHT NOW (status, blockers, decisions awaiting)
  2. Mon 08:00 CT dispatch readiness verdict (GREEN / YELLOW / RED)
  3. What you need from Robert before 08:00 fire

Robert's seat: greenlight Mon AM dispatch, walk Mon-Thu sprint, ship May 1.
Producer-as-verifier rule: every claim needs sha256 / smoke test / file path. No fabrication.
All decisions through Apr 26 LOCKED — do NOT relitigate.

AWAIT Robert's fire command before any execution beyond rehearsal preflight.

Also saved to /opt/nexus/nexus/scripts/output/playbooks/MONDAY_AM_BOOTUP_PROMPT.txt for direct file copy.