Skip to content
This repository was archived by the owner on Sep 28, 2026. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions public/brief-requested.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
<body>
<div class="wrap">
<nav>
<a class="logo" href="index.html">Tiny<span>Studio</span></a>
<a class="logo" href="/">Tiny<span>Studio</span></a>
<div class="navlinks">
<a href="audit.html">The appraisal</a>
<a href="agents.html">The desk</a>
<a href="pricing.html">Pricing</a>
<a href="/audit">The appraisal</a>
<a href="/agents">The desk</a>
<a href="/pricing">Pricing</a>
</div>
</nav>

Expand All @@ -51,7 +51,7 @@ <h1>That's it. <em>Nothing else needed from you.</em></h1>
</div>
</div>

<a class="back" href="index.html">Back to the site</a>
<a class="back" href="/">Back to the site</a>
</div>

<footer>
Expand Down
12 changes: 8 additions & 4 deletions scripts/check-site.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1405,25 +1405,29 @@ for (const [pageName, pageHtml, pageUrl] of structuredDataPages) {
// point at the final destination URL: the dogfood run reported every .html
// navigation target on home ("index.html" -> "/", "audit.html" -> "/audit",
// "agents.html" -> "/agents", "pricing.html" -> "/pricing", "specimen.html" ->
// "/specimen") as a redirecting internal link. The five public pages must
// "/specimen") as a redirecting internal link. The public pages must
// therefore point every page link at the clean URL the worker serves, never
// at a .html file that resolves to it. These are STATIC SOURCE GUARDS (regex
// at a .html file that resolves to it. This includes the noindex
// /brief-requested post-signup page, whose nav and back links are the same
// redirecting shape real users follow. These are STATIC SOURCE GUARDS (regex
// over the served files): CI has no browser, so they assert the .html target
// shape cannot return, not that the redirects are absent on the network.
const internalLinkPages = [
["homepage", siteHome],
["audit page", siteAudit],
["desk page", read("public/agents.html")],
["pricing page", read("public/pricing.html")],
["specimen page", read("public/specimen.html")]
["specimen page", read("public/specimen.html")],
["brief-requested page", read("public/brief-requested.html")]
];

const htmlPageTargets = {
"index.html": "/",
"audit.html": "/audit",
"agents.html": "/agents",
"pricing.html": "/pricing",
"specimen.html": "/specimen"
"specimen.html": "/specimen",
"brief-requested.html": "/brief-requested"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Normalize root-relative targets in the new link guard

The page now uses root-relative links such as /audit, but every lookup key here omits the leading slash. Consequently, changing one of the newly covered links to /audit.html leaves target as /audit.html, which does not match audit.html, and the check still passes. I verified this by making that substitution on this commit and running scripts/check-site.mjs; it reported success. Normalize the target or include root-relative keys so the guard actually prevents the redirect regression it claims to cover.

Useful? React with 👍 / 👎.

};

for (const [pageName, pageHtml] of internalLinkPages) {
Expand Down
Loading