Skip to main content

// INCIDENTS

ModernGrindTech

Incident Log

Every bug that shipped, every regression caught, every asset that 404ed. Root cause, detection method, and the commit that fixed it. Nothing hidden.

7

Logged

5

Resolved

2

Open

Apr 17, 2026|Medium|moderngrindtech.com SEO

8 pages rendered as `| MGT | MGT` in browser titles

Root cause
The root layout defines a title template (`%s | MGT`). Two of my own edits plus six older pages left `| MGT` baked into the `metadata.title` value. The template appended a second suffix, producing double brand suffixes in the tab and in Google snippets.
Detection
Chrome DevTools MCP Phase 14-16 post-deploy test suite fetched each page and regexed the rendered `<title>`. The double-suffix pattern jumped out on the first check.
Resolution
Stripped ` | MGT` from `metadata.title` on all 8 pages. Left `openGraph.title` and `twitter.title` unchanged since those bypass the template.
Detectsame session (auto-audit cycle)Resolve12 minutesCommit9affd39
Apr 17, 2026|Low|/blog

Console 404 on missing blog cover image

Root cause
A blog post (`120-social-media-actions-one-day`) referenced `/images/blog/120-social-media-actions.webp` but the file was never uploaded. Lighthouse flagged errors-in-console, knocking Best Practices from 100 to 96.
Detection
Live-site Lighthouse audit post-deploy. The only failing audit pointed straight at the console error.
Resolution
Short-term: swapped the `coverImage` to `parallel-agents.webp` (thematic match). Follow-up: generated the proper asset with Nano Banana Pro and pointed the reference back.
Detectsame sessionResolve18 minutes (fallback), 3 hours (proper asset)Commit9affd39
Apr 17, 2026|Low|/services

Cyan glow hover shadow violated monochrome design system

Root cause
The services grid had two variant hover shadows: gold for the primary card and a cyan `rgba(0,200,255)` for the secondary cards. DESIGN.md specifies architectural monochrome with amber-only accents. The cyan was drift from an older color palette.
Detection
Phase 3 design consistency sweep in the auto-audit loop. Grep for non-system colors flagged the file.
Resolution
Replaced cyan glow with neutral white at low opacity. Matches the pattern Cycle 23 applied to about.tsx.
Detectsame sessionResolve4 minutesCommit062cdbb
Apr 17, 2026|High|repository (not production)

Seven cycles of em-dash drift across public copy

Root cause
Site-wide style rule bans em dashes. New authoring (human and AI) defaults to em dashes in prose and metadata. Without a lint rule, drift accumulates between audit passes.
Detection
Cycle 4, 6, 7, 22, 23, 25, 26 all found new em dashes. The pattern is visible across the improvement log.
Resolution
Each cycle removes them in bulk. Proposal tracked: a pre-commit hook that flags em dashes in JSX text nodes and metadata strings. Would reduce the seven cycles of patchwork to a zero-drift baseline.
Detectbetween cycles (max 3-4 days)Resolvethe lint rule is still pending David's review
Apr 16, 2026|Medium|infra (local dev)

`.env.production` with live secrets written to disk by `vercel env pull`

Root cause
Running `vercel env pull` dumps every production environment variable to a plaintext file next to the repo. Stripe `sk_live`, database passwords, GitHub PAT, Brevo key all sat in a file one careless `git add` away from a commit.
Detection
Cycle 2 Phase 2 security sweep during an auto-audit pass.
Resolution
Flagged as CRITICAL in the improvement log. Still not mitigated (seven cycles stale). Proposal: delete the file after CI pulls it, or switch to `vercel env pull --environment=preview` for local work. Awaiting product direction.
Detectsame day the file was createdResolveopen
Apr 16, 2026|Low|moderngrindtech.com performance

david-headshot.png shipping 6.19 MB to the about page

Root cause
A PNG export at 2048x2048 never got compressed. next/image serves modern formats but cannot shrink the source below what the source gives it. The about page LCP took the hit.
Detection
Performance backlog item flagged across cycles 2, 22, 23, 24, 25.
Resolution
Cycle 25 piped the asset through sharp: resized 2048 to 1200, encoded as WebP at quality 85. Final size 52 KB, a 99.2 percent reduction with no visible quality loss at the rendered 400x400 size.
Detectfirst audit pass after asset shippedResolve5 cycles of backlog (the tradeoff was David wanting visual review first)Commit467b74a
Apr 15, 2026|Medium|moderngrindtech.com SEO

42 page titles rendered with duplicate ` | MGT` suffixes

Root cause
Before the title template was standardized, individual pages hard-coded ` | MGT` at the end of their titles. When the template was introduced, every hard-coded suffix became a double suffix. Same class of bug as the Apr 17 incident above, just a bigger batch.
Detection
Manual audit of rendered titles across the site.
Resolution
Single pass removing ` | MGT` from 42 `metadata.title` values.
Detectunknown, likely weeksResolve30 minutesCommit96b311e

Every fix is public. Every regression has a commit. The next project you work on should be this transparent too.