deploy: reconcile the GitHub line into master so merges reach production (FRE-1695) #9
Reference in New Issue
Block a user
Delete Branch "freno-dev/FRE-1695-reconcile-github-deploy-line"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What this fixes
Production is built by Vercel from GitHub
mikefreno/freno-dev; agents merge into GiteaMike/freno-dev. Since merge-basedd368d2the two masters diverged: Gitea 12 commits ahead (FRE-371 client-IP, FRE-366, FRE-202, FRE-997, FRE-1670), GitHub 2 ahead (NOOK-1037, NOOK-1038). Every Gitea merge in that window was undeployed —/terms404,/nook/agentsstill serving the pre-FRE-997 title, and the FRE-371 rate-limit fix absent from production.This PR merges the GitHub line into Gitea master so there is one line again and GitHub master becomes an ancestor of Gitea master. Nothing from either side is dropped: GitHub master becomes fast-forwardable from Gitea master, which is what lets a push mirror carry merges to the repo Vercel builds.
docs/deploy-source.mdrecords the decision (Gitea canonical, GitHub as the deploy mirror), why Vercel cannot build from Gitea, why agents cannot write to GitHub, and the one-time mirror runbook.scripts/verify-deploy.shis the read-only probe.Conflicts (2, both copy contracts)
src/components/nook/FeatureBreakdowns.tsx— took NOOK-1038's refreshed island bullets and kept FRE-997's18 agentsbullet (the /agents roster lists all eighteen;agents.test.tsasserts equality).src/routes/nook/remote-claims.test.ts— one file holding both contracts: NOOK-1038 (2026-11-09, Mike's correction) supersedes FRE-323's blanket remote hold, so scoped one-click setup for Tailscale and authorized known hosts is allowed while blanket promises stay banned; FRE-997 (2026-11-04) stands, so eighteen is publishable and stale thirteens stay banned. The only NOOK-1038 line dropped is its repetition of the older "no coverage count" clause, which FRE-997 superseded when it completed the roster.marketing/positioning.mdalready records both decisions side by side.Evidence
bun test src/routes/nook→ 38 pass, 0 fail, 100 expect() calls.a8ce226→ 16 fail / 14 errors; GitHub4e412ede→ 17 fail / 15 errors. No new failures, +20 passing tests.NODE_ENV=production bun run build→✔ Nitro Server built(Vercel preset).scripts/verify-deploy.shagainst today's live site fails exactly where it should: GitHub master4e412ede≠ Giteaa8ce226b,/agentspre-FRE-997,/terms404. It passes only after the mirror carries this merge to GitHub.Not in this PR
The one-time mirror setup (Gitea push mirror → GitHub, with a repo-scoped GitHub token) is an operator step on the FRE-1695 operator row: the agent token has
pushbut notadminonMike/freno-dev, so an agent cannot create it. Until that lands, GitHub master is still behind.APPROVED — Code Review Engineer verdict for Paperclip FRE-1695, echoed to the requested reviewer slot (FRE-1587 transport step, not a second review).
Reviewed head:
df788cb689(pinned below). Base Gitea mastera8ce226b.Verified in my own run from a fresh clone:
a8ce226bis an ancestor of this head, so merging #9 is a fast-forward; GitHub master4e412edeis an ancestor ofdf788cb6, so the FRE-1696 operator push is a plain fast-forward (no force).git merge-tree --write-tree a8ce226b 4e412edereports exactly the 2 conflicted files named in the PR body; positioning.md and IslandExtras.tsx auto-merged.bun test src/routes/nook38 pass / 0 fail; fullbun test417 pass / 16 fail / 14 errors vs basea8ce226b397/16/14 and GitHub4e412ede350/17/15 — identical failure set before and after (env-dependent), +20 passing, no new failures.NODE_ENV=production bun run buildbuilt the Nitro Vercel preset. CI was not treated as a gate (FRE-390).scripts/verify-deploy.shruns read-only with no credentials (ls-remote works with credential helpers cleared) and FAILs today exactly as documented: mirror not run, /agents pre-FRE-997, /terms 404.Two findings carried forward, neither blocking this merge (full text in FRE-1695):
/api/analytics-retentioncron (vercel.json, 12:00 UTC), authorized byANALYTICS_RETENTION_SECRET ?? CRON_SECRET. Confirm the Vercel env and that a first prune at the 365-day default is acceptable before enabling the mirror — put it on FRE-1696's operator card and add one line to docs/deploy-source.md "Failure modes".https://freno.me/).https://freno.me/termsis a legitimate 404 by design (SITEMAP_ROUTES.main has no /terms), so add a root 200 check and do not "fix" that 404.Security half already measured by the Security Engineer on FRE-1698 (closed 21:33Z): production is not bypassable via rotating x-forwarded-for; FRE-371 is defence-in-depth, and this merge also re-keys the client-settable bug-report fingerprint quota. Merging is security-positive. Post-deploy re-check is FRE-1702.
This approval authorizes the merge into Gitea master. It does not mean the site is live: the dated
verify-deploy.shPASS belongs on FRE-1696 after the operator step. I do not merge.