Skip to content

fix(course): ICP journey fixes - branch-aware nav, legacy-page rewrites, citations, covers (40.17)#354

Merged
pftg merged 7 commits into
masterfrom
icp-journey-fixes
Jul 11, 2026
Merged

fix(course): ICP journey fixes - branch-aware nav, legacy-page rewrites, citations, covers (40.17)#354
pftg merged 7 commits into
masterfrom
icp-journey-fixes

Conversation

@pftg

@pftg pftg commented Jul 11, 2026

Copy link
Copy Markdown
Member

Summary

Executes the full improvement plan from the ICP customer-journey audit (40.17): 6 audit agents walked all 44 journey pages in a browser as "Sam" and found the journey breaks at the navigation layer and two legacy companion pages - this PR fixes all P1s, the P2 trust surface, and the P3 polish in six commits.

Per-commit

  1. 83410cf — branch-aware nav strip + walkthrough nav (P1 Add blog index page without styles #1-2): course_sequence.yaml entries can declare branches; the strip now shows the real routing at 2.4 (run-your-interviews loop), 2.5 (build/pivot/kill gate), 5.1 (core vs optional) instead of a wrong linear Next. Frontmatter nav puts the strip on the 5 Mia walkthroughs + vibe-prd-template; the M5 walkthrough (most-linked dead end) now exits to Going-further. Glossary utility link under every strip; landing orientation ranked.
  2. 9519a0a — two RED legacy companions rewritten (P1 Style blog pages #4-5): build-path worksheet gate now matches 4.1 (no pre-order requirement; 6A/6B/5.2 ghost routes purged; jargon translated); self-serve stack walkthrough repaced from 4-week full-time to session-based 10-week evenings canon, webhook debugging Dashboard-first.
  3. 5f66246 — citations, glossing, scannability + 5.6 completion moment: 30 dead external links replaced (all curl-verified 200) or removed; 5.6 now declares the core course complete and routes finishers to Going-further; H2s added to the 1.2-1.5 text walls; glossary grammar bug + forward CTAs; ~14 first-mention glosses; 5.3 SVG stale "8.1"→"5.1".
  4. 9541adb — 10 covers regenerated (P2 Add the ability to use custom urls #8-9): wrong-promise badges fixed (Clay+Lindy/$200-500, Keep/Rebuild, Module 4B, Hostage list, TIME 90 min); byte-identical cover reuse on 5.4/5.5 and churn/pivot replaced with distinct topic covers.
  5. 0ef7e2d — cold-eyes review round: 3 claims source-truthed on the slopsquatting page (fabricated Snyk reproduction, ToxicSkills trajectory, requestz incident count) + worksheet signal attribution.
  6. bd37723 — docs: 40.17 §8 execution log + tracker.

+43 banned-string ratchet signatures across the sprint (every fixed defect is regression-guarded).

Test evidence

  • bin/validate-course: 8/8 validators green on every commit
  • bin/rake test:critical: 46 runs, 0 failures
  • bin/test (macOS): 46 runs, 0 failures, 84 screenshots, no diffs
  • bin/dtest (Linux/Docker): 46 runs, 0 failures, 84 screenshots, no diffs
  • Visual scroll-gate spot checks at 1280×800 + 390×844: 2.5 gate renders 3 stacked branch cards, 2.4/5.1 branch strips correct, M5 walkthrough Prev/Home/Next→Going-further, no horizontal overflow, new covers inspected (no clipping)
  • Cold-eyes diff-regression reviewer: SHIP after the 4 surgical fixes in commit 5

🤖 Generated with Claude Code

https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

Summary by CodeRabbit

  • New Features
    • Added outcome-based course navigation with tailored next steps and improved navigation across walkthroughs and templates.
    • Added “Back to the course” links to the FAQ and glossary pages.
  • Content Updates
    • Refined worksheets, decision trees, outreach guidance, pricing lessons, and self-serve build instructions with clearer examples and terminology.
    • Reorganized smoke-test and stack walkthrough lessons into easier-to-follow sections and phases.
  • Documentation
    • Refreshed further-reading resources, citations, links, and hiring-platform guidance throughout the course.

Paul Keen and others added 6 commits July 11, 2026 18:59
… orientation (40.17 P1 #1-2)

- course-prev-next partial: sequence entries may declare 'branches'
  (2.4 run-interviews loop, 2.5 build/pivot/kill gate, 5.1 core-vs-
  optional) so the strip never contradicts the footer routing
- frontmatter fallback (course_nav_prev/next) puts the strip on the 5
  Mia walkthroughs + vibe-prd-template; M5 walkthrough now exits to
  the landing Going-further section instead of dead-ending
- glossary utility link under every strip (glossary was reachable from
  one landing card only)
- landing orientation line ranked: Ch0 first, quickstart as the
  time-poor alternative

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
… stack-walkthrough pace (40.17 P1 #4-5)

build-path-decision-worksheet:
- Q1 gate now matches 4.1 canon (M1-M2 evidence; pre-orders explicitly
  deferred to Module 5) - no more false 'not ready' bounce
- route ghosts 6A/6B/5.2/Module-2-retake replaced with real slugs
- Q2 jargon translated to Sam-answerable plain English

self-serve-stack-walkthrough:
- reframed from 4-week full-time to session-based with the 10-week
  evenings pace as primary (matches 4.4 + Mia canon)
- webhook debugging is Dashboard-first; Stripe CLI demoted to optional
  branch (keeps 4.3's no-terminal promise)
- 2 dead docs.stripe.com URLs replaced with verified 200s

+9 ratchet signatures for the removed defects

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…t (40.17 P1 #3/6, P2 #7/11-14, P3 #15-17/20)

Citations (all replacements curl-verified 200):
- 30 dead external links replaced across 18 files (Steve Blank, Lenny,
  YC Library, First Round, SaaStr, Stripe docs, Vanta, ICANN, Snyk,
  Veracode, Octoverse, ProfitWell->Paddle, Bolster, Wes Kao, Pragmatic
  Engineer, latent.space, Simon Willison; 2 archive.org snapshots for
  JTBD sources); dead gocofound.com removed entirely (DNS gone)
- fabricated '47% of all merged PRs' Octoverse stat corrected to the
  sourced ~46%-of-code-by-Copilot-users figure

Journey fixes:
- 5.6 footer now declares the core course COMPLETE and routes finishers
  to Going-further (graduation was stranded on optional 5.7)
- H2 subheadings added to 1.2-1.5 (four ~1,000-word walls, zero
  headings); glossary grammar bug + softened rescue lede; glossary and
  FAQ forward CTAs; validation-tools-field-guide linked from 1.1
- 2.4 research-panel cost explained ($0 default vs paid shortcut)
- glosses at first mention: ICP/SOW (4.1), IP/DBA (4.2), Calendly (5.4),
  Apollo/Sales Navigator (5.7), CSV/CRM (3.2), SKU (churn), Cursor
  (vibe-prd-template); 4.3 'Modules 1-4' slip + prototype-reuse
  repetition trimmed; quickstart fear anchor $10K+ -> $30K+
- 5.3 network-buckets.svg stale '8.1' -> '5.1'; friday-demo-template
  demo credential un-mailto'd; churn/pivot 'X of N' denominators
  dropped; hire-track named consistently

+30 ratchet signatures for the removed defects

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…7 P2 #8-9)

Wrong-promise badges fixed: 2.4 (Clay+Lindy/$200-500 -> Gmail+list/$0
panels optional), 4.1 (Keep/Rebuild rescue tree -> 4 build paths, 30min
-> 14min), 4.5 (Module 4B -> OPTIONAL Next 5.1), ownership-checklist
(Hostage list -> 12-row ownership audit), outreach-sequence-template
(Clay+Lindy -> Gmail+NeetoCal+Reddit), 1.1 (TIME 90 min -> EXERCISE
90 min vs the 6-min-read byline)

Cover reuse killed: distinct covers for 5.4 (message variants + Loom)
and 5.5 (reply tracker) - both previously byte-identical to 5.3's; new
Going-Further covers for churn (leaky bucket) and pivot (decision
ledger) - both previously reusing 5.1's Sean Ellis gauge

Stale metadata aligned: 4.1 + 2.4 cover_image_alt describe the new art;
churn og_title old-spine '7.5 ·' prefix dropped

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…aims + worksheet signal attribution

Diff-regression reviewer verified the fixes against their cited sources:
- 'Snyk reproduction confirmed rate had not improved' - not in the
  cited article; now states the supported ~1-in-5 hallucination rate
- ToxicSkills 13.4% re-stamped to the real frame (534 ClawHub skills,
  Feb 2026) and the fabricated June-Sept-vs-Q1 trajectory dropped
- fabricated '12 codebases with hallucinated requestz' replaced with
  the article's real huggingface-cli 30k-download datapoint
- worksheet Good-example 8% now attributed to email sign-ups (the 1.4
  'Promising' band), not the 1.5 Buy-button price test

+3 ratchet signatures

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…complete

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@pftg, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 30 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: b9ae8bdb-f669-41f0-9ead-5546647517c6

📥 Commits

Reviewing files that changed from the base of the PR and between bd37723 and ad03ba9.

⛔ Files ignored due to path filters (2)
  • content/course/tech-for-non-technical-founders-2026/friday-demo-rule-founder-progress/demo-rule.svg is excluded by !**/*.svg
  • content/course/tech-for-non-technical-founders-2026/weekly-dev-report-template-founders/five-sections.svg is excluded by !**/*.svg
📒 Files selected for processing (18)
  • content/course/tech-for-non-technical-founders-2026/_index.md
  • content/course/tech-for-non-technical-founders-2026/agency-uses-ai-follow-up-questions/index.md
  • content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md
  • content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md
  • content/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/index.md
  • content/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/index.md
  • content/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/index.md
  • content/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/index.md
  • content/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/index.md
  • content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md
  • content/course/tech-for-non-technical-founders-2026/slopsquatting-ai-supply-chain-attack/index.md
  • content/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/index.md
  • content/course/tech-for-non-technical-founders-2026/three-questions-turn-standup-into-proof/index.md
  • content/course/tech-for-non-technical-founders-2026/vibe-prd-template/index.md
  • content/course/tech-for-non-technical-founders-2026/weekly-dev-report-template-founders/index.md
  • content/course/tech-for-non-technical-founders-2026/where-to-hire-developer-2026-map/index.md
  • data/course_banned_strings.yaml
  • docs/projects/2605-tech-for-non-technical-founders/40-49-review/40.17-icp-customer-journey-live-walk-2026-07-11.md
📝 Walkthrough

Walkthrough

The course gains branch-aware navigation, fallback navigation metadata, revised decision-path guidance, a session-based self-serve walkthrough, reorganized lesson sections, updated references, and expanded banned-string regression coverage.

Changes

Course navigation and decision paths

Layer / File(s) Summary
Branch-aware navigation
data/course_sequence.yaml, themes/beaver/..., content/course/.../module-*-walkthrough-mia/index.md
Conditional destinations, fallback navigation metadata, stacked branch links, course-home navigation, and glossary links are added.
Decision-path guidance
content/course/.../build-path-decision-worksheet/index.md, .../hire-track-supplementary-reference/index.md, .../should-you-hire-2026-decision-tree/index.md
Validation thresholds, backend criteria, routing instructions, platform listings, and hiring terminology are revised.
Self-serve walkthrough
content/course/.../self-serve-stack-walkthrough/index.md
The guide moves from weekly pacing to four phases with session-based Stripe, Supabase, webhook, analytics, and troubleshooting instructions.

Lesson and reference updates

Layer / File(s) Summary
Lesson structure and wording
content/course/.../smoke-test-*, .../price-hypothesis-on-smoke-test-page/index.md, .../github-aws-database-ownership-checklist/index.md, .../five-tech-words-stop-nodding-at/index.md
New section headings, terminology definitions, accessibility text, examples, and workflow explanations are added or revised.
References and regression coverage
content/course/.../*, data/course_banned_strings.yaml, docs/projects/...
External links, citations, project status notes, and banned strings are updated to reflect the revised course content.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Learner
  participant CoursePage
  participant NavigationTemplate
  participant CourseSequence
  Learner->>CoursePage: open course chapter
  CoursePage->>NavigationTemplate: render current page navigation
  NavigationTemplate->>CourseSequence: resolve slug and outcome branches
  CourseSequence-->>NavigationTemplate: return next, previous, or branch destinations
  NavigationTemplate-->>Learner: display course links and routing options
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main PR changes: branch-aware navigation, legacy-page rewrites, citation updates, and cover-related fixes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch icp-journey-fixes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 16

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md (4)

366-372: 🔒 Security & Privacy | 🔴 Critical | 🏗️ Heavy lift

Prevent clients from writing subscription_status.
content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md:445-446 still lets an authenticated user update their own coaches row, so subscription_status can be set from the client unless billing state is moved to a server-only table or writes to that column are blocked server-side. RLS only limits which rows are updateable; it does not protect individual columns.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md`
around lines 366 - 372, Update the self-serve stack guidance around the
authenticated user update policy for the coaches table so clients cannot write
subscription_status. Block that column explicitly in server-side database
permissions or move billing state to a server-only table, while preserving
allowed client updates to other coaches fields and ensuring only trusted
webhook/server logic can set subscription_status.

Source: MCP tools


209-215: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Align the Stripe price with the $1 flow. Phase 3 creates a $29/month Price ID, but the rest of the walkthrough expects a $1 charge. Add a dedicated $1 test/live price and use that Price ID, or change the Phase 3 instructions and checklist to $29 so Checkout doesn’t charge the wrong amount.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md`
around lines 209 - 215, Align the Stripe price configured in Session 1 with the
amount used throughout the walkthrough: either create and reference a dedicated
$1 test/live Price ID, or update the Phase 3 instructions and checklist to
consistently use $29. Ensure the Checkout configuration and documented
expectations use the same price.

Source: MCP tools


224-228: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Derive the coach from auth, not the browser payload.
create-checkout should read the authenticated user from the Supabase JWT and map that to the coach server-side; don’t accept coachId from supabase.functions.invoke(...). Also allowlist the priceId in the function before creating the Stripe session.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md`
around lines 224 - 228, Update the /upgrade flow and create-checkout function so
coachId is not sent from the browser; derive the authenticated user from the
Supabase JWT and resolve the corresponding coach server-side. Validate priceId
against an explicit allowlist before calling stripe.checkout.sessions.create(),
while preserving the existing checkout redirect behavior and staging
success/cancel URLs.

Source: MCP tools


168-178: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Add an INSERT policy for coaches.

The later SQL only defines select/update policies on coaches, but Session 3 inserts a new coach row after supabase.auth.signUp(). With RLS on, that write will fail unless it uses a privileged path or you add a matching for insert policy.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md`
around lines 168 - 178, Add an explicit INSERT policy for the coaches table in
the RLS setup described in Session 2, allowing the authenticated signup flow in
Session 3 to create its coach row. Align the policy with the existing coaches
ownership rules and ensure it is included alongside the other coaches policies.

Source: MCP tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@content/course/tech-for-non-technical-founders-2026/_index.md`:
- Line 44: Update the orientation text in the course index so “Chapter 1.1”
links directly to the same chapter URL used by the FAQ reference, preserving the
surrounding wording and existing links.

In
`@content/course/tech-for-non-technical-founders-2026/agency-uses-ai-follow-up-questions/index.md`:
- Line 183: Update the Veracode GenAI Code Security Report citation text to
replace “shipped” with “tested” or “generated,” accurately describing the
report’s measured code samples without implying production deployment.

In
`@content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md`:
- Around line 68-82: Align the smoke-test metric used by the worksheet’s YES
criteria with the “Good” example: ensure both refer to the same tracked event
and threshold, or explicitly define how the 8% email-sign-up rate satisfies the
6%+ fake-“Buy” click requirement. Update the related content at both referenced
sections consistently.
- Around line 189-195: The Q5 decision flow and verdict table currently assign
overlapping and incomplete conditions to Path 2. Define one authoritative set of
mutually exclusive rules covering Q2, budget, and Q5, then update the decision
flow near the Path 2/Path 3 branches and the verdict table around the referenced
rows so every answer combination reaches exactly one path and the required Q5
answer is collected before branching.

In
`@content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md`:
- Line 84: Replace the realistic credentials in the Friday demo template example
with unmistakably fake placeholders, using an invalid-domain email and clearly
synthetic password while preserving the surrounding login instruction.

In
`@content/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/index.md`:
- Line 97: Update the domain-transfer paragraph and both ICANN policy links to
use the current 2024 policy page. Revise the timing sentence around the domain
transfer guidance to distinguish the five-day AuthInfo-code or lock-removal
requirement, the separate five-day registry NACK response window, and the
conditional 60-day post-registration or transfer lock, avoiding the generic
five-day approval-window claim.

In
`@content/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/index.md`:
- Around line 104-107: Update the section heading in the supplementary hiring
reference to say “Six platforms ranked” instead of “Seven platforms ranked,”
keeping the surrounding platform list and content unchanged.

In
`@content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md`:
- Line 262: Update the troubleshooting guidance around the Stripe webhook
debugging prompt to prohibit sharing full payment payloads or Edge Function code
with external AI tools. Instruct users to redact PII, secrets, keys, metadata,
and internal URLs, and share only minimal sanitized excerpts while preserving
the existing debugging intent.
- Around line 230-234: Update the stripe-webhook setup instructions to disable
Supabase JWT verification for this function and require Stripe-Signature
validation using the raw request body and configured webhook secret before
processing events. Ensure the handler rejects missing or invalid signatures and
only updates subscription status after verification.
- Around line 230-234: Align the Stripe lifecycle documentation between Session
3 and the checklist around the supported events: either add handlers for
customer.subscription.updated, customer.subscription.deleted, and
invoice.payment_failed using the persisted Stripe customer mapping, or remove
those events from the checklist so it only promises checkout.session.completed.
- Around line 291-293: Update the “Session 4 - watch the analytics” section to
separate analytics/conversion tracking from session replay: either limit
Plausible guidance to analytics and conversion events, or explicitly identify
PostHog as the replay tool before discussing session recordings and user
behavior.
- Line 264: Update the idempotency guidance around the webhook handler to use an
atomic Stripe event ledger: enforce a unique constraint on the event ID and
atomically insert or claim the event before executing side effects. Remove the
race-prone WHERE event_id = $1 AND processed = true pre-check, and return 200
without reprocessing when the event was already claimed.

In
`@content/course/tech-for-non-technical-founders-2026/slopsquatting-ai-supply-chain-attack/index.md`:
- Around line 135-143: Remove the unsupported “including hallucinated
dependencies” wording and the three production-incident bullets from the
threat-data section. Retain the supported Snyk statistic and its citation, and
keep the surrounding discussion intact unless separate sources explicitly
verifying each claim are added.

In
`@content/course/tech-for-non-technical-founders-2026/vibe-prd-template/index.md`:
- Line 49: Update the introductory blurb in the course template to remove the
extra “from,” so it says the deliverable can ship on Tuesday morning.

In
`@content/course/tech-for-non-technical-founders-2026/where-to-hire-developer-2026-map/index.md`:
- Around line 75-80: Update the platform-count references near the “seven-row
list” and “The 7 platforms ranked” text to reflect the page’s six listed
platforms, ensuring all reader guidance consistently says six rather than seven.

In
`@docs/projects/2605-tech-for-non-technical-founders/40-49-review/40.17-icp-customer-journey-live-walk-2026-07-11.md`:
- Line 137: Correct the typo “repaced” in the Wave 2 status entry, replacing it
with “re-paced” or “replanned” while preserving the rest of the sentence.

---

Outside diff comments:
In
`@content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md`:
- Around line 366-372: Update the self-serve stack guidance around the
authenticated user update policy for the coaches table so clients cannot write
subscription_status. Block that column explicitly in server-side database
permissions or move billing state to a server-only table, while preserving
allowed client updates to other coaches fields and ensuring only trusted
webhook/server logic can set subscription_status.
- Around line 209-215: Align the Stripe price configured in Session 1 with the
amount used throughout the walkthrough: either create and reference a dedicated
$1 test/live Price ID, or update the Phase 3 instructions and checklist to
consistently use $29. Ensure the Checkout configuration and documented
expectations use the same price.
- Around line 224-228: Update the /upgrade flow and create-checkout function so
coachId is not sent from the browser; derive the authenticated user from the
Supabase JWT and resolve the corresponding coach server-side. Validate priceId
against an explicit allowlist before calling stripe.checkout.sessions.create(),
while preserving the existing checkout redirect behavior and staging
success/cancel URLs.
- Around line 168-178: Add an explicit INSERT policy for the coaches table in
the RLS setup described in Session 2, allowing the authenticated signup flow in
Session 3 to create its coach row. Align the policy with the existing coaches
ownership rules and ensure it is included alongside the other coaches policies.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 80ae6272-596a-4749-9709-5a13a2511c7a

📥 Commits

Reviewing files that changed from the base of the PR and between fbb0437 and bd37723.

⛔ Files ignored due to path filters (11)
  • content/course/tech-for-non-technical-founders-2026/customers-leaving-churn-triage-not-acquisition/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/network-buckets.svg is excluded by !**/*.svg
  • content/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/outreach-sequence-template/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/ownership-checklist/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/pivot-or-persevere-decision-framework/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/cover.png is excluded by !**/*.png
  • content/course/tech-for-non-technical-founders-2026/vibe-coding-ceiling-signals/cover.png is excluded by !**/*.png
📒 Files selected for processing (44)
  • content/course/tech-for-non-technical-founders-2026/_index.md
  • content/course/tech-for-non-technical-founders-2026/agency-uses-ai-follow-up-questions/index.md
  • content/course/tech-for-non-technical-founders-2026/ai-token-bill-dev-shop-pass-through-cost/index.md
  • content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md
  • content/course/tech-for-non-technical-founders-2026/channel-selection-before-outbound/index.md
  • content/course/tech-for-non-technical-founders-2026/customers-leaving-churn-triage-not-acquisition/index.md
  • content/course/tech-for-non-technical-founders-2026/faq/index.md
  • content/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/index.md
  • content/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/index.md
  • content/course/tech-for-non-technical-founders-2026/five-tech-words-stop-nodding-at/index.md
  • content/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/index.md
  • content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md
  • content/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/index.md
  • content/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/index.md
  • content/course/tech-for-non-technical-founders-2026/module-1-walkthrough-mia/index.md
  • content/course/tech-for-non-technical-founders-2026/module-2-walkthrough-mia/index.md
  • content/course/tech-for-non-technical-founders-2026/module-3-walkthrough-mia/index.md
  • content/course/tech-for-non-technical-founders-2026/module-4-walkthrough-mia/index.md
  • content/course/tech-for-non-technical-founders-2026/module-5-walkthrough-mia/index.md
  • content/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/index.md
  • content/course/tech-for-non-technical-founders-2026/outbound-without-sales-team/index.md
  • content/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/index.md
  • content/course/tech-for-non-technical-founders-2026/pivot-or-persevere-decision-framework/index.md
  • content/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/index.md
  • content/course/tech-for-non-technical-founders-2026/quickstart/index.md
  • content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/index.md
  • content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/index.md
  • content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md
  • content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md
  • content/course/tech-for-non-technical-founders-2026/slopsquatting-ai-supply-chain-attack/index.md
  • content/course/tech-for-non-technical-founders-2026/smoke-test-build-page/index.md
  • content/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/index.md
  • content/course/tech-for-non-technical-founders-2026/smoke-test-wire-tracking/index.md
  • content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md
  • content/course/tech-for-non-technical-founders-2026/vibe-coding-ceiling-signals/index.md
  • content/course/tech-for-non-technical-founders-2026/vibe-prd-template/index.md
  • content/course/tech-for-non-technical-founders-2026/weekly-dev-report-template-founders/index.md
  • content/course/tech-for-non-technical-founders-2026/where-to-hire-developer-2026-map/index.md
  • data/course_banned_strings.yaml
  • data/course_sequence.yaml
  • docs/projects/2605-tech-for-non-technical-founders/40-49-review/40.17-icp-customer-journey-live-walk-2026-07-11.md
  • docs/projects/2605-tech-for-non-technical-founders/TASK-TRACKER.md
  • themes/beaver/assets/css/single-post.css
  • themes/beaver/layouts/partials/blog/course-prev-next.html

Comment thread content/course/tech-for-non-technical-founders-2026/_index.md Outdated
> Bad: "I will send you a Loom of it after the demo."
>
> Good: "staging.acme.app/dashboard. Login: founder@test.com / demo1234."
> Good: "staging.acme.app/dashboard. Login: `founder@test.com / demo1234`."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n-- target file excerpt --\n'
sed -n '1,140p' content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md | cat -n

printf '\n-- search for demo credentials / placeholders in nearby course content --\n'
rg -n --hidden --glob 'content/course/tech-for-non-technical-founders-2026/**/*.md' \
  'founder@test\.com|demo1234|staging\.acme\.app|fake|placeholder|demo' \
  content/course/tech-for-non-technical-founders-2026

Repository: jetthoughts/jetthoughts.github.io

Length of output: 50389


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Find the repo file list and locate likely related templates.
git ls-files 'content/course/tech-for-non-technical-founders-2026/**' | sed -n '1,200p'

printf '\n-- exact file context --\n'
cat -n content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md | sed -n '70,95p'

Repository: jetthoughts/jetthoughts.github.io

Length of output: 16471


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n-- weekly-dev-report-template-founders context --\n'
sed -n '56,120p' content/course/tech-for-non-technical-founders-2026/weekly-dev-report-template-founders/index.md | cat -n

printf '\n-- three-questions-turn-standup-into-proof context --\n'
sed -n '60,80p' content/course/tech-for-non-technical-founders-2026/three-questions-turn-standup-into-proof/index.md | cat -n

Repository: jetthoughts/jetthoughts.github.io

Length of output: 10754


Use an obviously fake login here. founder@test.com / demo1234 looks like a real credential pair; replace it with an unmistakably synthetic placeholder such as demo@example.invalid / example-password.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md`
at line 84, Replace the realistic credentials in the Friday demo template
example with unmistakably fake placeholders, using an invalid-domain email and
clearly synthetic password while preserving the surrounding login instruction.

Comment thread content/course/tech-for-non-technical-founders-2026/vibe-prd-template/index.md Outdated
…m anchor-text class

Premium bar (user-reported): raw course paths as visible anchor text
replaced with named anchors (2.1 Mom Test script, 4.2 ownership
checklist); class ratchet-banned

CodeRabbit review comments (all 15 verified and addressed):
- worksheet: Q1 metric un-conflated (Promising band = 1.4 email
  sign-ups, not the 1.5 Buy button); verdict table aligned with the
  authoritative Q1-Q5 flow (Path 2/3/4 conditions now partition every
  answer combination)
- stack-walkthrough: verify_jwt-off + Stripe-Signature verification
  step added (deliveries 401 otherwise); AI-paste debugging now says
  redact PII/secrets; idempotency upgraded to atomic unique-constraint
  event ledger; Stripe checklist scoped to the one wired event;
  PostHog/Plausible replay capability untangled
- slopsquatting: three unsupported production-incident bullets removed
  (cited article covers a different attack); further-reading annotation
  neutralized
- 4.2: current ICANN Transfer Policy URL + precise code-release/
  transfer-release/60-day-lock timing
- counts: 'Seven platforms ranked' / 'The 7 platforms ranked' /
  'seven-row list' -> six after gocofound removal
- demo credential founder@test.com/demo1234 -> demo@example.com
  everywhere (incl. 2 SVGs); landing 'Chapter 1.1' now a link;
  Veracode 'shipped' -> 'tested samples'; vibe-prd 'ship from on'
  grammar; 40.17 typo

+11 ratchet signatures

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
@pftg

pftg commented Jul 11, 2026

Copy link
Copy Markdown
Member Author

All 15 CodeRabbit comments verified against the code and addressed in ad03ba9 (none were stale):

  • Worksheet logic (2 majors): Q1 no longer conflates the 1.4 email-signup "Promising" band with the 1.5 Buy-button price test, and the 4-path verdict table now matches the authoritative Q1→Q5 flow exactly (Path 2 = light/mid + own-time OR $1.6-4K with senior eng; Path 3 = $1.6-4K without senior eng OR $5-30K; Path 4 = heavy or $30K+).
  • Stack walkthrough (4): added the verify_jwt-off + Stripe-Signature step (webhook deliveries 401 without it), scoped the Stripe checklist to the one event the walkthrough wires, added PII/secret redaction to the AI-paste debugging step, and upgraded idempotency guidance to an atomic unique-constraint event ledger. Plausible/PostHog replay capability untangled.
  • Unsupported claims (2): the three slopsquatting "production incidents" bullets are removed (the cited SecurityWeek piece covers a different attack); Veracode "shipped" → "tested samples".
  • ICANN: current Transfer Policy URL + separate code-release / transfer-release / 60-day-lock timing in both places.
  • Counts/polish: seven→six platform references (heading, H2, prose), landing "Chapter 1.1" is now a link, demo credential is now demo@example.com / example-pass-123 everywhere including two SVGs, "ship from on" grammar, "repaced" typo.

Each fixed string is added to the banned-strings ratchet in the same commit (+11 signatures). Validators 8/8, build green, test:critical 46/46.

🤖 Generated with Claude Code

@pftg pftg merged commit 76acb4f into master Jul 11, 2026
3 checks passed
@pftg pftg deleted the icp-journey-fixes branch July 11, 2026 18:10
pftg pushed a commit that referenced this pull request Jul 11, 2026
…ernal pilot + funnel instrumentation

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
pftg pushed a commit that referenced this pull request Jul 11, 2026
…ASCII cards + print polish

- worksheet Q2/Q4 code blocks showed raw '[hire-track reference](/course/...)'
  markdown (links can't render inside pre; the Q2 line also overran the
  card edge) - now plain text pointing at the verdict table's real links;
  defect was live on the web page too (introduced in PR #354)
- worksheet prose metric aligned: '8% smoke-test click rate' -> 'sign-up
  rate' (matches the corrected Q1/Good-example metric)
- print CSS hides the self-referential 'Prefer paper? Download the PDF'
  line on paper (p:has(a[data-course-event=pdf-download]))
- all 5 PDFs regenerated and re-inspected

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
pftg added a commit that referenced this pull request Jul 12, 2026
…y polish, printable PDFs (#356)

* feat(course): Sprint A - funnel instrumentation + Clarity hook + pilot kit revival + dynamic footer year

- GA4 course events via data-course-event attrs + delegated listener
  partial: start-course/quickstart (landing hero), branch-click (2.4/
  2.5/5.1 gate cards, from→to label), glossary-click, pdf-download
- Microsoft Clarity template hook gated on microsoftClarity param
  (inert until the project ID is set - Paul action recorded in 40.18)
- external validation pilot kit revived as 40.18 (deferral conditions
  met); revival-status section lists what's live + remaining actions
- footer © year now dynamic (now.Year); dead copyright param removed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* fix(course): Sprint B media/typography - TL;DR accent, de-stacks, M1 visuals, 5.7 mermaid

- render-blockquote hook adds .bq-tldr to TL;DR callouts; purple accent
  gives the lesson-head stack visual hierarchy (verified: 1 per lesson,
  other blockquotes untouched)
- outreach-sequence-template: Day-3 bump variants merged into one
  blockquote (adjacent-box count now 0)
- 4.3: $0 Concierge MVP callout de-stacked to neutral prose (decision
  criterion leads, trade-off stated); 5.7: $0-stack callout de-stacked
  into the pipeline section as an equal free-vs-paid tooling choice
- 1.5: off-style flow SVG rebuilt as 'same button, two framings' using
  the lesson's own copy; 1.3: GA4 sublabel factual fix; 1.2 anatomy SVG
  already correct (kept)
- 5.7 stages mermaid TB→LR (was a ~1,200px vertical wall)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* feat(course): Sprint B covers - 5 walkthrough heroes + artifact-trail SVGs + 21 stale badges fixed

- each Mia walkthrough gets a family-style hero cover (story-thread
  motif, per-module artifact terminal) + an inline artifact-trail SVG
  mapping that module's lesson outputs + cover/og frontmatter - the
  most-linked pages in the course are no longer pure text walls
- 21 companion covers carried the retired 'Curriculum NN/30' counter
  (incl. the ICP-flagged glossary '08/30'); pill now reads
  'Curriculum 2026' with title/chips/motif preserved pixel-for-pixel
- 6 companions verified already-clean and skipped

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* feat(course): Sprint C - printable PDF thin slice (5 worksheets + pipeline)

- bin/generate-template-pdfs: headless-Chrome print-to-PDF over the
  built pages (own temp profile; slug list at top; regenerate when the
  5 source pages change - markdown stays the single source)
- @media print block in single-post.css: hides site chrome/nav strip,
  black-on-white, break-inside guards for tables/pre/blockquotes
- 5 print-verified PDFs shipped as bundle resources with a
  'Prefer paper? Download the PDF' line (data-course-event=
  pdf-download feeds the GA4 funnel): build-path worksheet, Mom Test
  script, ownership checklist, validated problem statement, operating
  kit (DPA)
- landing 'Free templates' section stays down per the 2026-05-21 deal
  until the full set exists; the other 9 gate on pilot download demand

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* fix(course): 5.7 cadence mermaid - bump diagram fontSize for the LR layout

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* docs(course): review notes on blockquote hook + tracker sprint log

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* fix(course): PDF visual review round - literal markdown in worksheet ASCII cards + print polish

- worksheet Q2/Q4 code blocks showed raw '[hire-track reference](/course/...)'
  markdown (links can't render inside pre; the Q2 line also overran the
  card edge) - now plain text pointing at the verdict table's real links;
  defect was live on the web page too (introduced in PR #354)
- worksheet prose metric aligned: '8% smoke-test click rate' -> 'sign-up
  rate' (matches the corrected Q1/Good-example metric)
- print CSS hides the self-referential 'Prefer paper? Download the PDF'
  line on paper (p:has(a[data-course-event=pdf-download]))
- all 5 PDFs regenerated and re-inspected

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* fix(course): PDF cold-eyes round 1 + user-reported pivot-wheel overlap + gate hardening

- pivot-wheel.svg: 'Customer Need' card was drawn over the subtitle
  (user-reported); wheel now sits in a translated group below the text
- operating-kit: old-spine ghosts purged - '7.1-7.4' TOC renumbered to
  5.1-5.7, 'walks five chapters'/'runs in four chapters' contradiction
  fixed, 7th component reframed as a bonus so 'The 6 components' holds,
  'lead magnet' marketing jargon dropped
- kit-sample-row.svg: font stack's terminal 'cursive' fell back to a
  glyph-dropping system font in headless print (gibberish table on
  paper) - stack now falls back to sans-serif
- worksheet failure-mode '0 of 35 click' -> 30 (list canon); validated-
  problem 90-min block vs 30-min write reconciled
- visual-scroll-gate.md: mandatory asset-level SVG raster pass + no-MCP
  headless-Chrome fallback documented (sampling pages missed 13
  defective SVGs that a full asset sweep found)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* fix(course): exhaustive visual sweep - 13 SVG geometry fixes + 5.1 callout de-stack (all 43 SVGs + all 61 pages inspected)

Asset-level sweep (every course SVG rasterized + eyeballed) found 13
defective SVGs the page-sampling reviews had missed:
- overlapping text layers (catching-the-lie URL labels over step labels;
  ph-vs-ih bar drawn over its own caption; shed-house-skyscraper caption
  collision producing garbled '$10-25K/m6OC2')
- edge clipping (decision-matrix 3 quadrants; channel-icp-matrix callout
  overflowing both sides; demo-rule 'tripe sandbo' pill + credential
  crossing the panel divider; pivot-ledger 'core')
- elements through text (sean-ellis-gauge arrow, segment-isolation
  ellipse, airbnb-test border, feature-vs-outcome border,
  vibe-prd-template underline, admin-panel-spaceship truncation)
- stale old-spine refs INSIDE pivot-ledger art ('Chapter 2.3/7.5',
  'Module 5A/6B' -> current canon)

Page-level sweep (all 61 pages, 332 scroll views): clean except 5.1's
mid-body triple callout stack (the 40.16 carry-forward) - re-run
cadence now prose, sample-size honesty + under-10 rules merged into
one callout. The alias-page 'directory index' finding was a file://
artifact - production alias redirect verified correct.

All 5 PDFs regenerated (operating-kit table now prints real glyphs).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* fix(course): visual sweep round 2/3 residuals - matrix stale labels, shed label, kit row spacing

- decision-matrix.svg: 'Module 3A/3B' old-spine ghosts -> 'Ch 4.3-4.4'
  / 'hire track' (matches pivot-ledger canon)
- shed-house-skyscraper.svg: '2 ceiling signals fire' label crossed the
  house wall; shortened + repositioned into the clear gap
- kit-sample-row.svg: 'Maybe - May 9' overran into the next column
  (read as '9F/u' in print); now 'Maybe · 5/9'
- operating-kit PDF regenerated; all re-rasters eyeballed clean

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* chore: gitignore claude-flow init scaffolding (skills/helpers/generated agents)

ruflo v3.25.6 'init --preset full' generates 96 local-tooling files under
.claude/ - following the existing precedent that claude-flow artifacts
(.claude-flow/, .mcp.json, binaries) stay untracked. Hand-authored agents
elsewhere under .claude/ remain tracked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* fix(course): premium swarm review - 8-dimension pass over all 61 pages + surgical fix waves (40.19)

6-reviewer swarm scored every page x 8 dimensions (text, voice,
structure, engagement, visual, typography, media, navigation) from
sources + all 331 fresh scroll views. 54/60 PREMIUM outright; every
sub-premium finding fixed:

P1: three-questions Friday-demo anchors pointed at the dev-shop blog
    checklist - repointed to the course template
P2: churn 'Modules 6.1-6.5' ghost; channel-selection '4 channels' vs
    5-row table (EaM demoted to a fifth-play note); operating-kit
    intro honesty; 5.6 false 'expandable rows' meta-narration deleted;
    slopsquatting CI gate unified at 20-line (was 3 vs 30; actual ~20)
    + 'Your founder' POV; 4.1 matrix SVG conflicting timelines; friday-
    demo cadence mermaid LR->TD (was an unreadable band); pivot trigger
    tree -> 5-row decision table (compressed-mermaid attempt was an
    illegible micro-strip; prose already carries detail); 3 covers
    'WEEKS 4 to ship' -> '4-10' (pace canon) + matching alt texts;
    agency page title dedup; ai-token-bill mermaid house theme;
    weekly-dev-report editorial footer note stripped; alias added for
    the deleted first-ten-customers-personal-network slug
P3: grammar (three-questions), Ch0 duplicated gate sentence, price-tag
    sweep (4 pages per the sub-$100-tool voice rule), engineering-org-
    chart closing line, 'co flow' -> 'checkout flow'

Mia number-chain verified contradiction-free across all 5 walkthroughs.
Deliberate non-fixes recorded in 40.19 SS3 so future passes don't
re-litigate. Report: 40.19.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

* fix(course): reflection round on the premium review - patterns behind single findings (40.19 §5)

Coordinator self-audit of the review triage; every gap fixed:

- old-spine ghost titles: FOUR Going-Further pages carried 'Module 6'
  prefixes (6.2-6.5) - prem-3 flagged one as 'confirm intentional';
  all stripped from titles + og_titles
- internal 'Module N AI critic/simulator block' labels: prem-6 found
  one; three more existed (2.2/4.3/5.2) - all retitled Sam-facing
- missed P2: org-chart staircase mermaid scaled to micro-text ->
  6-row decision table + flags rule (the pivot pattern; sequential-
  checklist mermaids now convert to tables)
- Good/Bad worked-example callouts render green/red via the blockquote
  hook (8+ pages); fixing it exposed a cascade bug - the brand
  blockquote border-left overpainted ALL accent classes incl. TL;DR;
  accents now set border-left-color instead of a competing box-shadow
- 2.2 redundant 4th head callout merged into the Progress line (skip
  guidance was stated twice); 2.6 triple callout stack merged to two
- continuation chapters (churn, pivot) get the nav strip + glossary
  via course_nav frontmatter - the CORE-vs-continuation inconsistency
  prem-4 flagged
- stack-walkthrough Phase 3 opens with 'the AI writes it, you paste
  it' reassurance for the no-code ICP; Keyworddit 'Free tool' tag cut
- gate doc: raw headless --window-size is NOT mobile emulation (fake
  right-edge clipping on every page) - MCP resize required for mobile

Gates: validators 8/8, build, test:critical, bin/test AND bin/dtest
all green (0 diffs).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V

---------

Co-authored-by: Paul Keen <pftg@Mac.fritz.box>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant