Skip to content

emdash/afraid-lamps-refuse-6jt16 - #451

Merged
pftg merged 5 commits into
masterfrom
emdash/afraid-lamps-refuse-6jt16
Aug 13, 2026
Merged

emdash/afraid-lamps-refuse-6jt16#451
pftg merged 5 commits into
masterfrom
emdash/afraid-lamps-refuse-6jt16

Conversation

@pftg

@pftg pftg commented Aug 13, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • New Features
    • Added informative Mermaid diagrams to deployment, migration, Rails support, and security articles.
    • Updated Rails support guidance, including current security timelines and upgrade considerations.
  • Bug Fixes
    • Prevented unrendered Mermaid source from briefly appearing while diagrams load.
  • Documentation
    • Added visual-quality requirements for long-form posts, including mobile readability and layout guidance.
  • Tests
    • Added an automated check to track and prevent growth of blog posts missing meaningful visuals.

pftg and others added 5 commits August 13, 2026 12:54
`<div class="mermaid">` renders its own source as article prose until
mermaid.js swaps in the SVG. baseof.html defers mermaid.run() until
document.fonts.ready, so on a slow font load the reader gets a wall of
`flowchart TD R70["Rails 7.0 - ...&nbsp;"] ... classDef dead fill:#fff5f5,...`
mid-paragraph; if Caveat never resolves it never goes away.

Reported against the Rails 7 EOL post as "images have &nbsp; on it". The
entity itself is fine - htmlLabels is on, so mermaid decodes it to a
trailing space. The bug was only ever the flash.

Site-wide and pre-existing: shipped with the first mermaid post in May 2026.
The visual suite renders after fonts settle, so screenshots were always green
and it went unreported for three months.

Trade-off: if JS fails outright the diagram is absent rather than showing its
source. Absent beats a wall of code.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
CLAUDE.md's cognitive-load gate wants a hero visual over 800 words. Nothing
enforced it: diagram_rendering_test.rb proves diagrams RENDER, not that posts
HAVE them. 25 of the 31 long posts published since 2026-04 shipped with none;
only 2 posts in all of 2026 carried an in-body visual.

bin/check-post-visuals is a ratchet, not a clean gate - 81 legacy posts are
over the line and nobody is backfilling them. It fails only when the count
rises, so new work is blocked while the backlog burns down. Same shape as
bin/check-svg-floor. Floor: 78.

Diagrams added (all verified rendered at 1280x800 and 390x844, 0 console
errors):
- CVE-2026-66066: three-condition exposure funnel
- Lovable->Rails: transplant-vs-rebuild fork
- Kamal: the boot barrier where job hosts block on first healthy web

Mermaid width comes from parallel COLUMNS, not label length - labels wrap at
~200px. A 3-siblings-into-1-gate fan-in renders 797px wide and measures
8.88px at 390px, under the 9px floor bin/check-svg-floor applies. Chained
them vertically instead. Node shapes are rects per the house rule in
.okf/design/mermaid-theme.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… and CTA

The post published 2026-08-08 said Rails 7.2 "reaches the end of its security
support on August 9, 2026" in the future tense. That date has passed - 7.2 is
now itself a dead branch. Corrected the two sentences carrying it, and the
cover chip, which read "7.2 SUPPORT ENDS". Cover regenerated (status dot also
moved green -> ruby; "UNSUPPORTED BRANCH" with a green dot was wrong).

Added the version status ladder as the first-fold visual - three dead
branches in red, 8.0 amber, 8.1 green - the post's thesis in one glance.

Added one qualifier CTA after the "Which exit, which app" table, in the style
the Lovable post already uses: the reader forks on whether anyone senior owns
the fleet sequencing decision. Scoped to the decision, not the labor, because
/services/fractional-cto/ sells technical leadership and not upgrade work -
hence the closing caveat that the engagement "ranks the queue and owns the
argument, it doesn't write your upgrade commits."

Promotion is 3% of body words, one paragraph near the end, per the voice
guide's 90/10 rule.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The cover-image sources under .stitch/designs/ are generated artifacts - each
one is a copy of a reference cover HTML with six text slots swapped - and they
are gitignored, so they never reach a reviewer anyway.

The detector was flagging them against the site's DESIGN.md, but they are
governed by .stitch/design.md, which documents every value it flagged: the
Inter / Space Grotesk / JetBrains Mono stack (L93), the 22/26/30/34/56px cover
type ramp (L77-L81), and the ruby/purple/cyan chip left-borders (L59-L62).

Approved by Paul 2026-08-13 after the hook fired five times on one file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds a pointer row so the task is visible from the board a cold session
actually reads. Filed under 2607 because the split touches this project's
20-29-strategy/ files; the decision itself is Paul's, not a refactor an
agent should take autonomously.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e00b21d1-a5fa-4326-a8f3-f73e70ce9edb

📥 Commits

Reviewing files that changed from the base of the PR and between fc7f4df and dc1a057.

⛔ Files ignored due to path filters (1)
  • content/blog/rails-7-eol-unpatched-security-exposure/cover.png is excluded by !**/*.png
📒 Files selected for processing (12)
  • .impeccable/config.json
  • .okf/build/test-gates.md
  • .okf/design/mermaid-theme.md
  • .okf/log.md
  • bin/check-post-visuals
  • content/blog/kamal-2-multi-server-deployment-complete-guide/index.md
  • content/blog/migrate-lovable-replit-app-to-rails/index.md
  • content/blog/rails-7-eol-unpatched-security-exposure/index.md
  • content/blog/rails-cve-2026-66066-active-storage-rce/index.md
  • docs/projects/2607-vibe-code-rescue/backlog.md
  • docs/workflows/blog-pipeline.md
  • themes/beaver/assets/css/single-post.css

📝 Walkthrough

Walkthrough

The pull request adds a visual backlog checker and publishing gate, documents Mermaid rendering and layout rules, hides unprocessed diagrams, adds diagrams to four blog posts, updates Rails support content, and records repository housekeeping changes.

Changes

Blog visual quality

Layer / File(s) Summary
Visual validation and publishing policy
bin/check-post-visuals, .okf/build/test-gates.md, docs/workflows/blog-pipeline.md, .okf/log.md
Long posts without visuals are checked against a floor of 78. The checker is required before publishing. Workflow and audit documentation record the visual requirements and ratchet behavior.
Mermaid rendering and layout guidance
themes/beaver/assets/css/single-post.css, .okf/design/mermaid-theme.md, .okf/log.md
Unprocessed Mermaid containers remain hidden until SVG rendering completes. Documentation records the loading behavior and mobile layout guidance.
Blog diagrams and content updates
content/blog/kamal-2-multi-server-deployment-complete-guide/index.md, content/blog/migrate-lovable-replit-app-to-rails/index.md, content/blog/rails-7-eol-unpatched-security-exposure/index.md, content/blog/rails-cve-2026-66066-active-storage-rce/index.md
Four posts gain Mermaid diagrams. The Rails support article updates Rails 7.2 status, Rails version classifications, and fleet sequencing guidance.

Repository housekeeping

Layer / File(s) Summary
Configuration and project tracking
.impeccable/config.json, docs/projects/2607-vibe-code-rescue/backlog.md
The configuration ignores .stitch/designs/*. The backlog records T10 as blocked pending an organizational decision.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch emdash/afraid-lamps-refuse-6jt16

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.

@pftg
pftg merged commit f7d0a2d into master Aug 13, 2026
5 checks passed
@pftg
pftg deleted the emdash/afraid-lamps-refuse-6jt16 branch August 13, 2026 11:50
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