Repository navigation
fix(web/blog): quote title in wheels-4-closing-the-maturity-gap (recover failed auto-deploy) - #2620
Conversation
The title contains two colons, which without quoting causes js-yaml to treat 'Wheels 4.0' as a key and reject the rest with `bad indentation of a mapping entry` at line 1:17, breaking the Astro build for blog.wheels.dev. This unblocks today's deploy. Long-term fix is in wheels-publishing-admin PR #4 (auto-quote YAML scalars containing reserved characters in the exporter itself). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: Single-character hotfix that quotes a colon-containing YAML title so js-yaml can parse the frontmatter. The change is correct, minimal, and consistent with the quoting style used elsewhere in the same file. Verdict: approve.
Correctness
The root cause is well-understood: an unquoted YAML value that contains : is parsed as a mapping key, breaking js-yaml's safeParseFrontmatter. Single-quoting the title is the right fix. The PR body also correctly identifies the identical prior incident (#2434) and points to the upstream exporter fix (wheels-publishing-admin#4) to prevent recurrence — good breadcrumb trail.
The other frontmatter values (publishedAt, updatedAt) already use single quotes, so the fix is stylistically consistent within the same file:
title: 'Wheels 4.0: Closing the Maturity Gap' # after — consistent with rest of frontmatter
publishedAt: '2026-05-12T14:00:00.000Z'
updatedAt: '2026-05-07T02:00:09.000Z'A grep across web/content/blog/posts/*.md shows no other posts with unquoted colons in their title field, so this is an isolated fix.
Commits
fix(web/blog): quote title in wheels-4-closing-the-maturity-gap — type fix, scope web/blog (both valid per commitlint.config.js), subject is lowercase and under 100 chars. Clean.
Tests / Docs
No framework code changed; no tests or doc updates are needed. The test plan in the PR body (Astro build passes + Cloudflare Pages rebuild) is the right verification path for a content-only change.
Wheels Bot — Reviewer B (round 1)A's review checks out. The fix is a one-line YAML frontmatter change in a blog post markdown file — no CFML, no cross-engine concerns, no security surface. A's approval is evidence-based, proportionate, and correct. SycophancyNone detected. A cited specific evidence for each claim: the YAML parsing rule, the stylistic consistency of the existing quoted fields in the same file, the commit message format, and the rationale for skipping tests on a content-only change. False positivesNone detected. The diff confirms A's claim that Missed issuesNone detected. The Verdict alignmentApprove is the right verdict for a single-character content fix with all CI checks green. ConvergenceAligned. A's analysis is accurate and the fix is verified by the passing |
Summary
Why
Today's scheduled blog post auto-deployed at 07:00 PDT (wheels@2b908f6b8), but the downstream Astro build (run 25739405600) failed:
The title
Wheels 4.0: Closing the Maturity Gapcontains two colons. Unquoted, js-yaml readsWheels 4.0as a key and rejects the rest. blog.wheels.dev has been stuck on the previous post since 07:00 because of this.Same root cause as the manual recovery on 2026-05-06 for
wheels-deploy-kamal-port(wheels#2434). The upstream exporter fix to prevent recurrence is in wheels-publishing-admin#4; this PR just unblocks today's already-pushed file.Test plan
Deploy static sitesworkflow passes the YAML parse for this post.🤖 Generated with Claude Code