-
Notifications
You must be signed in to change notification settings - Fork 0
docs(evidence): re-verify favicon rel=icon finding against current main and live #132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
f3b8a98
4328102
9dffaab
86f0c19
5dffc8d
6a153a0
9908b8c
d420728
10b7968
0321133
a814fb0
90ab24f
15ab922
3dafaa1
8fad459
26fce8a
440170d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,115 @@ | ||
| # Favicon rel=icon on every served page — re-verify against current main and live | ||
|
|
||
| Date: 2026-08-12 | ||
| Scope: the review-queue item "[unreviewed-by-grok] No rel=icon link is | ||
| served, so every page load fires a 404 /favicon.ico request while | ||
| favicon.svg exists and is allow-listed". This receipt re-verifies the item's | ||
| guarantee against the current `origin/main` head (18128e8, "fix(public): | ||
| serve rel=icon on /brief-requested and guard favicon links in | ||
| check-site.mjs", merged 2026-08-12) and the live deployment of that head. It | ||
| is source-evidence plus a real-browser measurement of the deployed site. | ||
|
|
||
| ## Summary | ||
|
|
||
| The failure mode the item describes — every page load firing a | ||
| `/favicon.ico` request that 404s because no `rel=icon` link is served — **no | ||
| longer occurs, on source and on the live site**. The code-side fix is already | ||
| merged in `origin/main` in two parts: PR #85 | ||
| (`9302611`, "fix(public): serve rel=icon favicon on every page so browsers | ||
| stop 404ing /favicon.ico") added the `<link rel="icon" href="/favicon.svg" | ||
| type="image/svg+xml" />` line to the five human-facing pages; PR #113 | ||
| (`18128e8`) re-landed the two pieces the original branch scoped out — the | ||
| same link on `/brief-requested` (the post-signup page every buyer hits) and a | ||
| CI guard in `scripts/check-site.mjs` that enforces exactly one `rel=icon` | ||
| link pointing at `/favicon.svg` on **all seven** served pages, with | ||
|
Comment on lines
+23
to
+24
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
If a future edit wraps the only favicon link in AGENTS.md reference: AGENTS.md:L2-L3 Useful? React with 👍 / 👎.
Comment on lines
+23
to
+24
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When a page gains a second browser-visible link using single-quoted attributes such as Useful? React with 👍 / 👎. |
||
| `public/favicon.svg` tracked, valid SVG, and allow-listed in the worker. | ||
| `/favicon.ico` is not (and never was) served by the worker — but since every | ||
| page now declares its icon, no browser requests it. Measured in real | ||
| Chromium on 2026-08-12: **zero** `/favicon.ico` requests on any page load. | ||
|
Comment on lines
+26
to
+28
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The only runtime probe described here uses Playwright's Chromium, so it cannot establish that “no browser” requests Useful? React with 👍 / 👎.
Comment on lines
+26
to
+28
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When a user navigates to AGENTS.md reference: AGENTS.md:L2-L3 Useful? React with 👍 / 👎. |
||
|
|
||
| ## Source checks on the current head (18128e8) | ||
|
|
||
| 1. `npm run check` passes. The "Favicon (dogfood)" guard | ||
| (`scripts/check-site.mjs`, "every served HTML page must keep exactly one | ||
| <link rel=icon> inside its head pointing at the served /favicon.svg | ||
| asset") verifies on all seven pages — homepage, audit, desk (`agents`), | ||
| pricing, specimen, brief-requested, and the retired agent-desk — that | ||
| exactly one `<link rel="icon">` appears in the head and its `href` is | ||
| `/favicon.svg`; that `public/favicon.svg` is a tracked, valid SVG; and | ||
| that the worker's public asset allow-list still serves `"/favicon.svg"` | ||
| (`src/worker.js` line 50). It also guards the parallel apple-touch-icon | ||
|
Comment on lines
+39
to
+40
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
If the AGENTS.md reference: AGENTS.md:L2-L3 Useful? React with 👍 / 👎. |
||
| guarantee (`/apple-touch-icon.png` on all seven pages), which the | ||
| item's fix pass touched on `/brief-requested` in PR #114. | ||
|
Comment on lines
+40
to
+42
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
On the inspected Useful? React with 👍 / 👎. |
||
| 2. `npm test` passes: the source checks above plus the heading-hierarchy, | ||
| sitemap, agent-worker, agent-UI and product-contract suites — 92 tests | ||
| total, all green, zero failures. | ||
|
Comment on lines
+43
to
+45
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Fresh evidence from running AGENTS.md reference: AGENTS.md:L2-L3 Useful? React with 👍 / 👎. |
||
|
|
||
| ## Live re-verification 2026-08-12 | ||
|
|
||
| Re-ran the deployed-site measurement in real Chromium (Playwright 1.62.1, | ||
| headless) against the live `https://tinystudio.io` — the current deployment | ||
|
Comment on lines
+49
to
+50
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Playwright's default headless Chromium does not load favicons for browser chrome, so the network log reports zero Useful? React with 👍 / 👎. |
||
| of the current main: | ||
|
|
||
| | Page | HTTP | rel=icon links | requests to /favicon.ico | other 4xx/5xx on load | | ||
| |---|---|---|---|---| | ||
| | `/` | 200 | 1 × `/favicon.svg` (image/svg+xml) | 0 | none | | ||
| | `/audit` | 200 | 1 × `/favicon.svg` (image/svg+xml) | 0 | none | | ||
| | `/agents` | 200 | 1 × `/favicon.svg` (image/svg+xml) | 0 | none | | ||
| | `/pricing` | 200 | 1 × `/favicon.svg` (image/svg+xml) | 0 | none | | ||
| | `/specimen` | 200 | 1 × `/favicon.svg` (image/svg+xml) | 0 | none | | ||
| | `/brief-requested` | 200 | 1 × `/favicon.svg` (image/svg+xml) | 0 | none (see note) | | ||
|
|
||
| Every page loaded 200 at its clean URL with zero page errors and zero console | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When Useful? React with 👍 / 👎. |
||
| errors; the served DOM of every page carries exactly one `<link rel="icon" | ||
| href="/favicon.svg" type="image/svg+xml" />`; and the network log of every | ||
| load contains **zero** requests whose URL includes `/favicon.ico` — the 404 | ||
| the item flagged is no longer fired by any browser. | ||
|
|
||
| Direct asset probes: | ||
|
|
||
| ``` | ||
| GET https://tinystudio.io/favicon.svg → HTTP/2 200, content-type: image/svg+xml | ||
| GET https://tinystudio.io/favicon.ico → HTTP/2 404 (expected: not allow-listed; | ||
| and now unreferenced, so never requested) | ||
| ``` | ||
|
|
||
| Plain `curl` fetches of the six live pages (cache-busted with `?cb=20260812`, | ||
| `Cache-Control: no-cache`) each contain exactly one `rel="icon"` link, | ||
| matching the browser measurement. | ||
|
|
||
| Note (unrelated, pre-existing): `/brief-requested` carries a Google Ads | ||
| conversion-tag placeholder (`https://www.googletagmanager.com/gtag/js?id= | ||
| AW-XXXXXXXXX`, added in the page's first commit c90c8a4 / PR #14) whose | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The Google Ads placeholder was introduced with Useful? React with 👍 / 👎. |
||
| script load is blocked by the production CSP (`script-src 'self' | ||
| https://static.cloudflareinsights.com`). That is a CSP-blocked script load, | ||
| not a 404, not a favicon issue, and predates this item's fixes; it does not | ||
| affect the favicon guarantee measured above. | ||
|
|
||
| ## Repro steps | ||
|
|
||
| 1. Source guard: `npm run check` — the "Favicon (dogfood)" section fails if | ||
| any of the seven pages loses its single `/favicon.svg` rel=icon link, if | ||
| the asset is dropped, rewritten invalid, untracked, or removed from the | ||
| worker allow-list. | ||
|
Comment on lines
+90
to
+93
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When Useful? React with 👍 / 👎. |
||
| 2. Live browser probe: headless Chromium (Playwright 1.62.1) loads each of | ||
| the six public pages, waits for network idle, records every request whose | ||
| URL contains `/favicon.ico`, and asserts | ||
| `document.querySelectorAll('link[rel="icon"]').length === 1` with | ||
| `href === "/favicon.svg"` — measured zero favicon.ico requests and one | ||
| correct link on all six pages. | ||
| 3. Asset probes: `curl -s -o /dev/null -w '%{http_code}' | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When this commit is checked with the plan-required AGENTS.md reference: AGENTS.md:L2-L3 Useful? React with 👍 / 👎. |
||
| https://tinystudio.io/favicon.svg` → 200; the same for `/favicon.ico` → | ||
| 404, now never referenced. | ||
|
|
||
| ## Closeout | ||
|
|
||
| The item as stated — "No rel=icon link is served, so every page load fires a | ||
| 404 /favicon.ico request while favicon.svg exists and is allow-listed" — is | ||
| **closed against current main and live**: the code-side fix (PRs #85 and | ||
| #113) is merged in `origin/main`, the CI guard in `scripts/check-site.mjs` | ||
| enforces the guarantee on all seven served pages, `npm run check` and | ||
| `npm test` pass on the current head (18128e8), and the deployed site serves | ||
| exactly one `/favicon.svg` rel=icon link on every page with zero | ||
| `/favicon.ico` requests fired — as re-measured in real Chromium on | ||
| 2026-08-12. The receipt now records the closeout on the current head so the | ||
|
Comment on lines
+111
to
+114
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The live probe enumerates only six routes and omits Useful? React with 👍 / 👎. |
||
| item cannot be re-opened by tracker drift. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This commit is based directly on
ad9cee3, with multiple commits between18128e8and that parent, so18128e8was already not the currentorigin/mainhead when this rebased receipt was created. This makes both the claimed source baseline and the attribution of the live deployment to “that head” inaccurate; record the actual verified head/deployment revision instead.Useful? React with 👍 / 👎.