Project contents
← Automating Garage Dreams
Progress update, 10 Sept 2026
A short bullet-point summary of project progress up to 10 Sept 2026.
Updates are bullet-point summaries generated with AI from my commits and build notes, then checked by me. Project articles and learning notes are written by me.
- A mobile performance pass found the pipeline’s own articles already score 100, which killed the font theory on the spot: the same 176 KB of woff2 loads on the page scoring 100 and the page scoring 91. Only the document varies.
- Lighthouse’s largest single recommendation does not pay. It claimed 1,210 ms from eliminating render-blocking CSS; inlining it removed every render-blocking resource and made the score worse, 93 to 92, because the document grew from 128 KB to 172 KB and the document is the bottleneck. Reverted. What did pay was a high fetch priority and a 768w variant on the cover image, and deleting a font weight nothing referenced.
- Chasing one slow page found 15 cross-origin requests transferring zero bytes: raw WordPress image tags still pointing at the parked domain. Pulling that thread turned up five more classes of migration debris: 1,285 Gutenberg block comments, 97 escaped
target="_blank"attributes, and 68 URLs with markdown escaping inside them, which silently 404s everyyoutu.belink and breaks every affiliate parameter. None of it is schema-invalid, so nothing had ever failed. - 132 bare YouTube URLs across 38 guides now render as click-to-load facades with a real link behind them. The URL parser returns null on anything it cannot parse rather than taking the tail of the string, because with escaped ids in the corpus, a guess would embed a different video than the author linked. The transform runs at render time, so the prose the pipeline reads stays a plain URL with no markup to leak into a prompt.
- A latent bug shipped alongside: the cover-provenance field accepts the whole agent enum, so a human-credited photograph would have rendered “Generated image · Human. Not a photograph of a real car.” over somebody’s cleared press photo.
- Cover videos throw by name when the path resolves to nothing, because Astro’s asset helper validates images only. A dead
<video>renders as its poster and looks completely fine, which is exactly why it would ship unnoticed. Requiring a human author for the field makes the stranded-video state unrepresentable rather than handled. - Seven new corpus assertions were each verified by injecting their own defect and watching them fire by name. Sequential assertions mean one combined injection only ever proves the first one.