Signal v2 Ecosystem Rollout — SHIPPED record (branch signal-v2-rollout)
Status: SHIPPED & LIVE (2026-08-03). Owner approved go-live in-session
("Approved to go online"); the branch was pushed, auto-merged to main, and
deployed via the human-token pipeline:
- Deploy #48 (
workflow_dispatch, success, sha98b4184) — the full capability site + story rollout went live and was verified on mizoki3.com. Post-deploy live verification surfaced one gate-coverage gap (the §-mark extractor missed multi-classclass="mark sec-mark"markup and could pass vacuously); fixed and hardened in9d6c5a1— gate-only, no served content. - Deploy #49 (success, sha
6db204c) — "The Doorman Problem" published per owner instruction ("Publish it approved"): manifest entry, Field Notes card, clean route/blog/doorman-problemwith 301 shims, feeds and /blog lastmod updated; live-verified.
Everything below is preserved as the shipping-time record.
Why this PR is not open yet (read first)
The runbook assumed "merge = production deploy". Reality on this repo (verified 2026-08-02/03):
- Any pushed branch lands on
mainautomatically.auto-merge-ai-branches.ymlmerges every push onclaude/**/gemini/**/codex/**/copilot/**/cursor/**;auto-sync-main.ymlmerges every OTHER branch. Neither has a skip guard, so even pushingsignal-v2-rolloutto open a PR would put it onmainwithin minutes — before any human review. - Merging to
mainno longer auto-deploys.deploy-homepage.ymlhas been dispatch-only since 2026-07-30: production uploads require a human to run the workflow from the Actions UI and typeAPPROVED. Merge puts the change on the source-of-truth branch; deploy is a second, separately-gated human act.
So the real hazard is the bots, not the merge button. The owner chose to keep the branch local until preview. Shipping steps below reflect that.
Owner's exact shipping steps
- Preview locally (phone + desktop):
cd "# MIZ OKI 3.5" && pip install flask && python3 -c "from app import create_app; create_app().run(port=8080)"then openhttp://localhost:8080/signal(hub),/signal/thresholds,/signal/budget,/signal/creative,/signal/audiences,/signal/measurement,/demo,/demo/signal,/executive-briefing/,/blog/doorman-problem.html(unlisted draft),/sitemap.xml. - Ship to main — either path works; both end on
mainbecause of the bots: -git push -u origin signal-v2-rollout(auto-sync merges it), or - merge locally and pushmainyourself for an atomic landing. Note: the branch edits.github/workflows/deploy-homepage.yml; pushing workflow files over HTTPS may be rejected without theworkflowOAuth scope — use the SSH remote if that happens (repo precedent). - Deploy (only when ready to publish): Actions → "Deploy MIZ OKI 3.5 Homepage" →
type
APPROVED. The run now gates on BOTH the design canon AND the new truth-discipline content gate before building. - After deploy: spot-check
https://mizoki3.com/signaland/signal/budget. - Optional follow-ups: publish the blog draft (3-step checklist in the comment at
the top of
blog/doorman-problem.html); when the first real pilot completes, follow the story bank's upgrade path — one verified number replaces its composite.
Rollback
- Pre-rollout signal page preserved at
archive/signal-v1.html.bak(repo root, outside the site build context). To roll back the page only:cp archive/signal-v1.html.bak "# MIZ OKI 3.5/signal.html", remove the fivesignal-*.htmlcapability pages + their routes/sitemap entries inapp.py, then re-run the suite and redeploy via the same APPROVED dispatch. - Full rollback: revert the branch's commits (all changes are additive or in-place edits with canon re-pins; no history rewritten).
- The live site is untouched until a human runs the APPROVED dispatch — before that,
rollback is just not-merging / reverting on
main.
PR body (paste below this line when opening the PR)
Signal v2 — complete media-buying capability site + story rollout
Replaces the single /signal page with a six-page capability site and threads its
"doorman" narrative through the demo hub, the executive briefing, and an unlisted
blog draft — under a hard, tested truth discipline.
Before: one /signal page (ORACLE-era copy, rewritten 2026-07-30 as Signal
Intelligence Division).
After:
- /signal — hub, 9 filed sections (§01 the gap → §09 see it run), night-dossier v1.5.
- /signal/thresholds — ReLU threshold discovery, binary search, 85/15
exploit–explore, momentum on a leash. All numbers are the Boss modules' real
operating defaults, framed as defaults.
- /signal/budget — ReLU-gated reallocation, pacing clamps, funnel-position bids,
staged rollout rails (shadow → canary 10% → 20% → 70% + permanent 10% holdout).
- /signal/creative — fatigue detection (z-score triggers), four rotation
strategies, Thompson sampling.
- /signal/audiences — uplift cohorts (persuadables vs sure things), consent-gated
identity spine, probabilistic IDs excluded from causal math.
- /signal/measurement — caused-vs-anticipated ledger, holdout/geo/ghost-bid
experiments, drift monitor, weight back-propagation.
- Demo hub + /demo/signal: one doorman-framing sentence each.
- Executive briefing signal pack: doorman statusQuo line, 9-of-14 geo-test proof
metric (composite), privacy-posture board talking point (owner-approved diff).
- blog/doorman-problem.html: unlisted draft, publish checklist in-file.
- docs/marketing/signal-story-bank.md: canonical story bank; governance pointers
in both CLAUDE.md files.
Truth discipline (enforced, not aspirational)
- New CI gate # MIZ OKI 3.5/scripts/content_qa.py — runs in deploy-homepage.yml
beside the canon guard and in the test suite (tests/test_content_qa.py). Fails on:
affirmative "mind-reading"/"guaranteed", present-tense deployed-intent claims,
intent/ORACLE copy without "Preview · in development" in the same section,
%/× numbers without an illustrative/composite/operating-default label in their
section, and §-mark sequence breaks. The gate self-tests on seeded violations
(6/6 caught) and on a clean sample (0 false findings) before every scan.
- Gate findings fixed across 8 files, including preview framing added to the
briefing-adjacent ORACLE section on /demo/signal and one (composite) label
per briefing domain proof block (canon re-pinned each time).
QA results
- Suite: 302 tests, 2 failures — both pre-existing homepage failures reproduced at
the pre-rollout baseline commit (favicon-set + liveTeaser), untouched by this work.
- Canon guard: 20/20 surfaces match v1.5-night-dossier (lockfile re-pinned in the
same commits as each approved canon edit).
- Content gate: self-test 6/6 fired + clean scan across 10 scoped files.
- Linkcheck: 17 pages crawled, 50 internal targets; only the 2 pre-existing
/pricing → /#platform,/#governance anchors fail (pre-date this branch).
- Playwright: 6 signal pages — §-sequence, labeled SVG exhibits, no 380 px
horizontal overflow; briefing/demo/hub render checks green, zero page errors.
- Sitemap: rollout pages carry lastmod 2026-08-03; link previews verified
(title/description/og:title/og:description/og:image present, og assets resolve).
Deploy safety: merging this PR does NOT deploy. Production uploads happen only
via the dispatch-only "Deploy MIZ OKI 3.5 Homepage" workflow with a typed APPROVED
token, which now also runs the truth-discipline gate. Rollback: restore
archive/signal-v1.html.bak (details above).