Serve the site at www.termca.de and gate every host claim - #13
Conversation
The marketing domain is termca.de; Vercel redirects the apex 308 to www in the project settings, so the canonical technical URL is https://www.termca.de/. The build still named termcade.com in the canonical link, og:url, SoftwareApplication JSON-LD, robots.txt and sitemap.xml. The host is now set once as `site` in astro.config.mjs and the layout derives canonical, og:url and the JSON-LD url from Astro.site instead of a duplicated literal. robots.txt and sitemap.xml are public/ files copied verbatim, so they carry the host literally. tools/check_domain.py gates the built output: every generated host claim must be https://www.termca.de and no termcade.com may survive in dist/. It is proven to fail: restoring the old host in public/robots.txt makes it exit 1 with the stale claim named. app.termca.de and api.termca.de claims are unchanged. Refs aviorstudio/termcade-be#36
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Review 1Findings
Residual riskReviewed only pinned range Verdict: NEEDS ATTENTION |
Review 1: the domain gate searched for the canonical Sitemap line and <loc> value as substrings, so a build that kept the right claim and added a foreign one beside it still passed — contradicting the gate's "every host claim" contract and risking wrong crawler metadata. robots.txt is now parsed for all Sitemap: directives and sitemap.xml for all <loc> values (as XML, so a malformed sitemap fails too), and each must equal exactly the canonical https://www.termca.de claim. Both failure paths are proven deliberately: an extra <loc>https://other.example/</loc> and an extra `Sitemap: https://other.example/sitemap.xml` each make the gate exit 1 naming the foreign value; the fixtures were then restored and the full suite re-run green. Refs aviorstudio/termcade-be#36
Review 1 replyFinding (P2) — fixed in Deliberate failure proofs (each fixture broken, rebuilt, gate run, fixture restored):
Assertions are reachable: both files are concrete Re-verification after restore (local, same parameters as before): build ( Checks on |
Review 2No findings. Reviewed range:
Residual risk: no committed unit fixtures cover malformed, missing, and duplicate/foreign robots or sitemap inputs; current protection is the artifact gate and the documented manual negative checks. Local rebuild was not run because Verdict: APPROVE |
Review 2 replyApproval recorded — thank you. Range reviewed Residual risk disposition: accepted as-is. The gate's protection for malformed/missing/foreign robots and sitemap inputs is the artifact-level gate plus the documented deliberate negative checks (both foreign-claim cases were broken, proven to exit 1, and restored). Committed unit fixtures for the parser would duplicate what the artifact gate already proves against the real build output; if a second sitemap URL type or multi-file sitemap is ever introduced, adding fixture cases then is the right time. No action in this PR. Proceeding to merge (single-layer, non-stacked; merge commit flow), then post-merge CI/Vercel production monitoring and playwright production verification at 1280x800 and 390x844 per issue #36. |
Refs aviorstudio/termcade-be#36
What
The marketing domain is
termca.de. Vercel redirects the apex 308 towwwin the project's Domains settings (already live; unchanged here), so the canonical technical URL ishttps://www.termca.de/. The build still emittedtermcade.comin every host claim.astro.config.mjs:site: 'https://www.termca.de'— the one place the host is configured.src/layouts/Full.astro: canonical link,og:urland the SoftwareApplication JSON-LDurlnow derive fromAstro.siteinstead of the duplicatedtermcade.comliterals.public/robots.txt,public/sitemap.xml: literal host updated (public/ files are copied as-is).tools/check_domain.py+ CI step "Every host claim is www.termca.de": built-output regression gate checking canonical,og:url, JSON-LD url, the robots Sitemap line and the sitemap<loc>againsthttps://www.termca.de, plus a no-termcade.com-anywhere-in-dist/sweep.site,app.termca.de/api.termca.declaims unchanged.Verification (local, exact parameters)
bun install --frozen-lockfile,bun run build(Astro 5.18.2, static, 1 page) — pass.python3 tools/check_domain.py dist— pass.Sitemap: https://termcade.com/sitemap.xmlinpublic/robots.txt, rebuilt, gate exited 1 with:find dist -name '*.js'empty;python3 tools/check_scripts.py dist— pass (1 page, ld+json allowed).node tools/browser-check.mjs dist(viewports 1280x800 and 390x844 mobile/touch, link timeout 10000ms, zero error tolerance) — pass.python3 tools/capture.py --check /tmp/termcade— pass (pixels-*.html byte-for-byte; hero/index structure).Rollout
Merging triggers Vercel Production via the external Git integration. Post-merge checks (issue #36 acceptance criteria): Vercel deployment reaches Ready;
https://termca.destill answers 308 →https://www.termca.de/;wwwanswers 200 with canonical/og:url/JSON-LD naminghttps://www.termca.de, robots and sitemap updated; Playwright pass at 1280x800 and 390x844.