From a15fccbf1d10e39900fb7971f4b3b1bb342f111b Mon Sep 17 00:00:00 2001 From: Paul Keen <125715+pftg@users.noreply.github.com> Date: Fri, 21 Aug 2026 12:58:30 +0200 Subject: [PATCH] Record both redesign lanes, and remove three confusions while doing it Paul opened a from-scratch design exploration ALONGSIDE the extraction, not instead of it. Without this, a cold session reads the stitch output as approved direction - or reads ADR-0003 and does not know the exploration exists. **Extraction governs; discovery has no authority.** ADR-0003 says plainly this is "extraction and propagation, not a redesign" - the system comes from the course page and /services/vibe-code-rescue/. Discovery produces candidate designs and never a PR, and wins only via a superseding ADR carrying evidence, because 2.1/2.2 already shipped the extracted system to the blog - 77% of the site's Google traffic. Brand invariants (logo, ruby #cc342d, display face, covers) stay fixed even in discovery: "from scratch" means layout, structure and components, not a rebrand nobody asked for. The discovery brief deliberately never mentions the course page - anchoring it there reproduces extraction wearing a different hat and proves nothing. First artifact recorded: Stitch project 4487418121858436329, which produced a system it named "Artifact Editorial" and, unprompted, rejected the logo wall, the testimonial carousel and the repeated "Book a call". Also disambiguated from the older Claude Design project, which renders the EXTRACTED system. Three confusions found and removed while writing this up: 1. "Held until the read is in" hid a date. The 2.4 gate needs a read due ~2026-09-17 - 28 days after the e1fa5409d DEPLOY, which was never confirmed. It reads as imminent and is not, so anything depending on 2.4 is parked until mid-September and the first action on picking it up is confirming that live date. Writing the read up early does not unblock it; it pre-writes a conclusion the data cannot support. 2. Phase 2.5 has no spec. 2.1 and 2.2 each got one (20.03, 20.04); 2.5 is nine words in a table cell. Its first deliverable is 20.05, not code - and the binding constraint is canon-sensitive copy across 12 pages rather than the code-line cap. Only 2 of 12 service pages carry screenshot baselines, so ten money pages would otherwise ship visually blind. 3. The sequencing decision was unrecorded. Next unit is 2.3, not 2.5, decided by a three-lens panel that SPLIT: the ICP lens ranked service pages first, the risk lens won on facts the ICP lens did not have. Recorded with the reasoning because it deviates from "biggest ICP impact first" and a cold session would otherwise reverse it. Gates: bin/hugo-build clean; v0.2 okf_validate .okf exits 0. Concept stamped with measured UTC. Docs + bundle only. Co-Authored-By: Claude Opus 5 --- .okf/log.md | 39 +++++++++++++ .okf/workflows/index.md | 2 +- .okf/workflows/site-redesign-rollout.md | 36 +++++++++++- .../20-29-strategy/20.01-rollout-plan.md | 32 +++++++++++ .../2608-site-design-system/README.md | 57 +++++++++++++++++++ 5 files changed, 163 insertions(+), 3 deletions(-) diff --git a/.okf/log.md b/.okf/log.md index e0c211660..ff9f9eb06 100644 --- a/.okf/log.md +++ b/.okf/log.md @@ -51,6 +51,45 @@ make it green: restructure same-day entries under one heading, and add `timestamp` to the 23 concepts missing it (anchored to each file's last commit time, which is verifiable - never invented). +## 2026-08-21 - two lanes on the redesign, and three confusions removed + +Paul opened a from-scratch design exploration ALONGSIDE the extraction, not +instead of it. Recorded everywhere a cold session might read one as the other: +`docs/projects/2608-site-design-system/README.md`, the rollout plan, and +[workflows/site-redesign-rollout.md](workflows/site-redesign-rollout.md). + +**Extraction governs; discovery has no authority.** ADR-0003 states plainly that +this is "extraction and propagation, not a redesign" - the system comes from the +course page and `/services/vibe-code-rescue/`. The discovery lane produces +candidate designs and never a PR; it wins only via a superseding ADR carrying +evidence, because 2.1/2.2 already shipped the extracted system to the blog, +which is 77% of the site's Google traffic. Brand invariants (logo, ruby, display +face, covers) are fixed even in discovery - "from scratch" means layout, +structure and components, not a rebrand. + +The discovery brief deliberately never mentions the course page. Anchoring it +there would reproduce extraction wearing a different hat and prove nothing. +First artifact: Stitch project `4487418121858436329`, which produced a system it +called "Artifact Editorial" and, unprompted, rejected the logo wall, the +testimonial carousel and the repeated "Book a call". + +Three confusions removed while writing this up: + +1. **"Held until the read is in" hid a date.** The 2.4 gate needs a read due + approximately 2026-09-17 - 28 days after the `e1fa5409d` DEPLOY, which was + never confirmed. It reads as imminent and is not. Anything depending on 2.4 + is parked until mid-September, and the first action on picking it up is + confirming that live date. +2. **Phase 2.5 has no spec.** 2.1 and 2.2 each got one; 2.5 is nine words in a + table cell. Its first deliverable is `20.05`, not code - and the binding + constraint is canon-sensitive copy across 12 pages, not the code-line cap. + Only 2 of 12 service pages carry screenshot baselines. +3. **The sequencing decision was unrecorded.** Next unit is 2.3, not 2.5, + decided by a three-lens panel that SPLIT - the ICP lens ranked service pages + first, the risk lens won on facts the ICP lens lacked (no spec, 2/12 + baselines, and 2.3 rehearses the gate chain that failed in #540 at near-zero + blast radius). + ## 2026-08-21 - what 15 review findings on one document taught, and one rule reversed Closing the OKF gap on PRs #541/#543: the delivery prompt shipped and was then diff --git a/.okf/workflows/index.md b/.okf/workflows/index.md index 4f1824fd3..97fbbdf6b 100644 --- a/.okf/workflows/index.md +++ b/.okf/workflows/index.md @@ -7,7 +7,7 @@ * [Blog Post Pipeline](blog-pipeline.md) - mandatory end-to-end workflow for writing/publishing blog posts, plus the execute-don't-read claims gate, the frontmatter claims check, and the `## Sources` citation convention * [LinkedIn Post Pipeline](linkedin-post-pipeline.md) - Paul Keen voice rules and posting workflow * [CSS Maintainability Redesign](css-maintainability-plan.md) - approved plan for hand-editable CSS + FL-Builder retirement -* [Rescue Room rollout sequence](site-redesign-rollout.md) - why phases are ordered by whether layout moves, why blog runs before site-wide chrome, why phase status must be checked against git rather than the plan table, and the gates that block regardless +* [Rescue Room rollout sequence](site-redesign-rollout.md) - why phases are ordered by whether layout moves, why blog runs before site-wide chrome, why phase status must be checked against git rather than the plan table, and the gates that block regardless; plus the extraction-vs-discovery lane split and the 2.4 gate date * [Visual Scroll Gate](visual-scroll-gate.md) - blocking pre-handback visual walk for content/visual changes * Test suites, rake tasks, and the visual-regression gate live in [test-gates](/build/test-gates.md) (`workflows/testing.md` was squashed into it 2026-08-20 - it duplicated the gate rules and still carried the superseded "run both suites per commit" instruction) * [Analytics Access](analytics-access.md) - live GA4 + Search Console MCP servers, correct property IDs, credential split, data-lag traps, and why GA4 sessions must be reconciled against GSC clicks before being quoted diff --git a/.okf/workflows/site-redesign-rollout.md b/.okf/workflows/site-redesign-rollout.md index eca37444b..90ebcfbc0 100644 --- a/.okf/workflows/site-redesign-rollout.md +++ b/.okf/workflows/site-redesign-rollout.md @@ -7,8 +7,8 @@ tags: [design, rollout, sequencing, decision, adr] status: stable generated: by: claude/opus-5 - at: 2026-08-20T23:11:35Z -timestamp: 2026-08-20T23:44:03Z + at: 2026-08-21T10:57:01Z +timestamp: 2026-08-21T10:57:01Z --- # Why this concept exists @@ -119,6 +119,38 @@ learning whether the design engages anyone before the whole site commits to it. moves PDFs too. Scope tripwire: `macos/{desktop,mobile}/course/chapter.png` must come out byte-identical. +# Two lanes: extraction governs, discovery explores + +Since 2026-08-21 the redesign runs an **extraction** lane and a **discovery** +lane at once, and conflating them is the live confusion risk. + +* **Extraction governs.** ADR-0003 is the decision of record and says plainly + that it is "extraction and propagation, not a redesign" - the system is taken + from the two pages already implementing it (course page, + `/services/vibe-code-rescue/`). 2.1/2.2 shipped it to the blog. +* **Discovery has no authority.** A from-scratch exploration (Paul, 2026-08-21) + runs ALONGSIDE extraction, not instead of it. Its brief deliberately never + mentions the course page - anchoring it there reproduces extraction wearing a + different hat and proves nothing. Output is candidate designs, never a PR. +* **Brand invariants are fixed even in discovery**: logo, ruby `#cc342d`, + display face, cover system. "From scratch" means layout, structure and + components. +* **Switching lanes costs shipped work.** Discovery wins only via a superseding + ADR carrying evidence, because 2.1/2.2 already shipped the extracted system to + the blog - 77% of the site's Google traffic. + +A discovery lane does not consume WIP: it produces nothing mergeable, so it +cannot collide with the delivery lane. That is continuous discovery, not a third +parallelism exception. + +# The 2.4 gate is time-bound, and "held until the read is in" hides the date + +The homepage phase is gated on a blog engagement read due **28 days after the +`e1fa5409d` deploy, approximately 2026-09-17** - and that clock starts at the +first production DEPLOY, which was never confirmed. Writing the read up early +does not unblock anything; it pre-writes a conclusion the data cannot support. +Confirm the live date first, because the window is measured from it. + # Citations [1] `docs/projects/2608-site-design-system/20-29-strategy/20.01-rollout-plan.md` diff --git a/docs/projects/2608-site-design-system/20-29-strategy/20.01-rollout-plan.md b/docs/projects/2608-site-design-system/20-29-strategy/20.01-rollout-plan.md index d5e5564af..2ebcfb1ce 100644 --- a/docs/projects/2608-site-design-system/20-29-strategy/20.01-rollout-plan.md +++ b/docs/projects/2608-site-design-system/20-29-strategy/20.01-rollout-plan.md @@ -238,6 +238,38 @@ bot-filtered): blog pages **25.2% avg scroll depth, 26.3s avg engagement, - Watch Clarity recordings of ≥20 post sessions in week one after ship — the qualitative gate stays primary at this traffic. +**The 2.4 gate is time-bound, and the date is NOT soon (recorded 2026-08-21).** +"Held until the read is in" reads as imminent; it is not. Per +[40.01](../40-49-measurement/40.01-blog-engagement-baseline.md) the read is due +**28 days after the `e1fa5409d` deploy — ≈2026-09-17**, and that clock starts at +the first production DEPLOY, which was never confirmed (deploys were managed by +another session at merge time). So: + +* Writing the read up before the window closes does not unblock 2.4 — it + pre-writes a conclusion the data cannot support. +* Anything that depends on 2.4 is parked until mid-September. Plan around it + rather than waiting on it. +* **First action when picking this up:** confirm the live date of `e1fa5409d`, + because the whole 28-day window is measured from it and it is currently + unknown. + +**Sequencing decided 2026-08-21 (three-lens panel, recorded here because it +deviates from "biggest ICP impact first").** Next unit is **2.3 course-single**, +not 2.5. The panel split — the ICP lens ranked service pages first (they are the +worst ICP betrayal per unit of traffic, at the highest purchase intent), the +risk lens ranked 2.3 first and won on facts the ICP lens did not have: + +* **2.5 has no spec.** 2.1 and 2.2 each got one (20.03, 20.04); 2.5 exists as + nine words in a table cell. Its first deliverable is `20.05`, not code. +* **Baseline coverage on service pages is 2 of 12** — ten money pages would ship + visually blind. +* 2.3 is ~47 lines, baseline-covered, and rehearses the exact gate chain that + failed in #540 (merge-base run, CI baseline record, browser-computed seam/AA) + at near-zero blast radius, before that chain is trusted across 12 money pages. +* The plan already sequences 2.3 "immediately after 2.2", and 2.2 shipped + 2026-08-20 — so 2.3 is overdue, not a detour. + + ### 2.4 (homepage) carries an extra, blocking gate The homepage cut removes the twelve service tiles and the framework logo grid. diff --git a/docs/projects/2608-site-design-system/README.md b/docs/projects/2608-site-design-system/README.md index ea38b7108..67c5b2c80 100644 --- a/docs/projects/2608-site-design-system/README.md +++ b/docs/projects/2608-site-design-system/README.md @@ -40,6 +40,48 @@ mobile; and a lead conversion event exists so the next change can be measured. page, and `/services/vibe-code-rescue/` as a dark-variant campaign page. Phase 1a is unblocked — see [20.02](20-29-strategy/20.02-phase-1a-plan.md). +## Two lanes — read this before changing any design artifact + +Since 2026-08-21 this project runs **two lanes at once**, and confusing them is +the failure this section exists to prevent. + +| Lane | Authority | Produces | Status | +|---|---|---|---| +| **Extraction** (governing) | **ADR-0003** — the decision of record | merged CSS, shipped phases | active; 2.1/2.2 shipped, 2.3 next | +| **Discovery** (exploration) | **none** — informs a future decision | candidate designs only, never a PR | opened 2026-08-21 (Paul) | + +**Extraction is still the decision.** ADR-0003 is explicit: *"this ADR is not +proposing a new language… That makes this extraction and propagation, not a +redesign."* The system is taken from the two pages that already implement it — +the course page and `/services/vibe-code-rescue/`. Nothing below changes that. + +**Discovery answers a different question:** what would a designer produce for +this ICP with no anchor at all? Paul asked for it 2026-08-21 *alongside* +extraction, explicitly not instead of it. Its brief deliberately never mentions +the course page — anchoring it there would reproduce extraction wearing a +different hat and prove nothing. + +**Fixed even in discovery** (ADR-0003 brand invariants, not up for exploration): +logo, ruby `#cc342d`, display face, cover system. "From scratch" means layout, +structure and components — a rebrand was not asked for. + +**Discovery artifacts so far** — Stitch project `4487418121858436329` +("JetThoughts — From-Scratch Exploration"), generated 2026-08-21. It produced a +system it named *"Artifact Editorial"*: warm paper `#fbf9f8`, Source Serif 4 +headlines with Hanken Grotesk body, sharp 0px corners, ruby reserved for +critical actions only, evidence-over-assertion structure. Unprompted, it +rejected the logo wall, the testimonial carousel and the repeated +"Book a call". A Claude Design project (*JetThoughts — Rescue Room*, 14 +previews) predates this and renders the EXTRACTED system — do not confuse the +two. + +**What it would take for discovery to win:** a superseding ADR, with evidence +that it beats the extracted system for the ICP. Until that exists, discovery +output has **no authority** and must not be implemented. The cost of switching +is not theoretical: 2.1 and 2.2 already shipped the extracted system to the +blog, which carries 77% of the site's Google traffic. + + ## Current state **Re-sequenced 2026-08-20 (Paul): BLOG FIRST** — confirm engagement on the @@ -79,6 +121,21 @@ estimated) the cheapest viable test needs 192 days. ## Outstanding +**Phase 2.5 has no spec — write `20.05` before any 2.5 code.** 2.1 and 2.2 each +got a written spec (`20.03`, `20.04`); 2.5 is nine words in the Phase 2 table: +"stock photo → month-one card, decision table, 4-step timeline". Found +2026-08-21 while sequencing. Two things the spec must settle, because they are +not CSS decisions: + +* The real bulk of 2.5 is **per-page frontmatter copy ×12**, not stylesheet — + and that copy is canon-sensitive. `content/services/fractional-cto/index.md` + already carries "15+ years of industry experience" in its FAQs, the exact + figure class corrected on 2026-08-14. Copy review, not the ~500-line code cap, + is the binding constraint. +* **Only 2 of 12 service pages have screenshot baselines** (`fractional_cto`, + `app_web_development`). Ten ship visually blind unless coverage is added + first — the plan's own 0.3 coverage rule applies. + **Regenerate root `DESIGN.md` against ADR-0003.** It still frames dark JetVelocity as *"normative for new brand/conversion surfaces"*, calls LIGHT page chrome *"legacy/incumbent"*, and specifies `#1a8cff` primary buttons —