KB / Daily / 2026-09-27

Inbox — 2026-09-27

Inbox — 2026-09-27

  • 17:17 — monorepo Cloudflare Pages: all 10 projects (blog, home, cv, burns, insights, kb, photos, tip, x-algo, llm-timeline) had production_branch=master after the repo renamed master->main, so every cf:deploy:prod run (--branch=main) landed as Preview and never reached the custom domains. Fixed 2026-09-27 by PATCHing production_branch=main via the Cloudflare API. Separately, CI 'checks / checks' has failed at the Lint step since ~2026-09-21 (biome lint, 16 findings + biome.json schema mismatch), which gates all Deploy jobs. Local deploy escape hatch: cd apps/blog && pnpm run cf:deploy:prod
  • 18:30 — monorepo blog deploy: root cause of 'missing blog post' was TWO bugs. (1) All 10 Cloudflare Pages projects had production_branch=master after the master->main rename, so cf:deploy:prod (--branch=main) always produced Preview deployments that never reached custom domains. Fixed 2026-09-27 by PATCHing production_branch=main via the Cloudflare API. (2) commit 9b3a254d accidentally deleted the '!**/.cursor' line from biome.json that #1514 had just added, so vendored pstack skills were linted and noAssignInExpressions failed the checks job Lint step, gating every Deploy job. Fixed in 58cff05 (also bumped $schema to 2.5.14 to match pinned biome). LESSON: never deploy from a dirty working tree - a stale apps/blog/dist made the local prerender step crash, publishing an SPA shell that 404'd every route while wrangler still reported 'Deployment complete'. Always verify real content on real routes, not HTTP status: the SPA fallback returns 200 for unknown paths. Use gh workflow run cf-deploy.yml --ref main -f app=all to deploy every Pages app.
  • 19:09 — Herdr/Pages deploy rules learned 2026-09-27: (a) Cloudflare Pages PATCH /accounts/{acct}/pages/projects/{name} {"production_branch":"main"} - changing it does NOT retroactively promote existing deployments; a fresh deploy from main is required. (b) The projects list endpoint paginates at 10 by default and per_page is rejected with 400 - enumerate by name, never assume the first page is complete. duyet/monorepo has 13 Pages projects, not 10. (c) wrangler has no 'pages project update'; PATCH via API using the OAuth token in ~/.config/.wrangler/config/default.toml. (d) rollback only works to a past PRODUCTION deployment - 'You cannot rollback to a preview deployment'.