diff --git a/.lane/reports/fix-pagehead-self-decl-reverify-lane1-20260821.md b/.lane/reports/fix-pagehead-self-decl-reverify-lane1-20260821.md
new file mode 100644
index 00000000..24c54063
--- /dev/null
+++ b/.lane/reports/fix-pagehead-self-decl-reverify-lane1-20260821.md
@@ -0,0 +1,52 @@
+# Lane 1 report: /agents /pricing /specimen page-head self-declaration re-verify (2026-08-21)
+
+Item: "[unreviewed-by-opus] /agents, /pricing, /specimen page-head canonical
++ og:url + JSON-LD WebPage @id all self-decl" (item id `c6f9cf8040`).
+
+## Result
+
+Source: **already fixed and guarded on origin/main** (PR #218 / `ed2b1a9`,
+merged 2026-08-19; preceded by `df69628` and `3ff1398`). All three pages
+self-declare their clean URLs in canonical, `og:url`, and JSON-LD `WebPage`
+`@id`/`url`. `npm run check` passes.
+
+Live: **still stale** — the deployed site serves the pre-fix `.html` head
+declarations on exactly these three pages, verified 2026-08-21 with
+cache-busted `curl` probes:
+
+```
+/agents -> canonical https://tinystudio.io/agents.html (og:url, @id same)
+/pricing -> canonical https://tinystudio.io/pricing.html (og:url, @id same)
+/specimen -> canonical https://tinystudio.io/specimen.html(og:url, @id same)
+```
+
+The live deployment is also stale on other 2026-08-19+ fixes (/pricing
+band lost its signup form and footer still says "The Tiny Studio"), while
+/audit and / serve correct clean canonicals — consistent with a deploy from
+before the 2026-08-19 merge batch, or a partial deploy.
+
+## What this lane changed
+
+No source changes were needed or made. Evidence only:
+
+- `docs/evidence/pagehead-self-decl-reverify-2026-08-21.md` — full
+ re-verify receipt (source table, live table, probe method, staleness
+ markers).
+- `.lane/reports/fix-pagehead-self-decl-reverify-lane1-20260821.md` — this
+ report.
+
+## Remaining action (outside this repo lane)
+
+Redeploy origin/main (`npm run deploy` — manual wrangler deploy per this
+domain's convention). Until then the live site's three pages keep declaring
+the redirecting `.html` forms, and the live /pricing page keeps its missing
+form / stale footer.
+
+## Verification method
+
+- `git log` on origin/main: `ed2b1a9` is an ancestor of `origin/main`
+ (`git merge-base --is-ancestor ed2b1a9 origin/main` -> yes).
+- `npm run check` on this worktree (origin/main `92d55c3`): "TinyStudio.io
+ checks passed."
+- Live probes: `curl -s -H 'Cache-Control: no-cache'` for canonical /
+ og:url / JSON-LD on all three pages; `curl -sI` for the `.html` 307s.
diff --git a/docs/evidence/pagehead-self-decl-reverify-2026-08-21.md b/docs/evidence/pagehead-self-decl-reverify-2026-08-21.md
new file mode 100644
index 00000000..8fa799d7
--- /dev/null
+++ b/docs/evidence/pagehead-self-decl-reverify-2026-08-21.md
@@ -0,0 +1,79 @@
+# Page-head self-declaration on /agents, /pricing, /specimen — re-verify (2026-08-21)
+
+Item: "[unreviewed-by-opus] /agents, /pricing, /specimen page-head canonical +
+og:url + JSON-LD WebPage @id all self-decl" (finding item `c6f9cf8040`,
+lane-1 packet 2026-08-21).
+
+## What the item asks
+
+Each of the three appraisal pages must declare its own clean URL in all three
+machine-readable head surfaces:
+
+- `` -> the page's clean extensionless URL
+- `` -> the same clean URL
+- JSON-LD `WebPage` `@id`/`url` -> the same clean URL (`@id` with `#webpage`)
+
+The clean forms are the addresses that serve 200; the `.html` twins 307 to
+them, so declaring a `.html` form would hand search engines and social
+scrapers a redirecting address.
+
+## Source state (origin/main @ 92d55c3, 2026-08-21)
+
+All three pages self-declare correctly in source. This was fixed by PR #218
+(commit `ed2b1a9`, "point appraisal-page canonicals and JSON-LD WebPage @ids
+at the clean non-307 URLs", merged 2026-08-19), preceded by the lane-1 fix
+commit `df69628` (2026-08-15) and its re-landing `3ff1398`.
+
+| Page | canonical | og:url | WebPage `@id` | WebPage `url` |
+|---|---|---|---|---|
+| /agents | `https://tinystudio.io/agents` | same | `https://tinystudio.io/agents#webpage` | `https://tinystudio.io/agents` |
+| /pricing | `https://tinystudio.io/pricing` | same | `https://tinystudio.io/pricing#webpage` | `https://tinystudio.io/pricing` |
+| /specimen | `https://tinystudio.io/specimen` | same | `https://tinystudio.io/specimen#webpage` | `https://tinystudio.io/specimen` |
+
+`npm run check` passes ("TinyStudio.io checks passed") on this worktree at
+origin/main `92d55c3`. The canonical guard (`scripts/check-site.mjs`) asserts
+exactly one canonical per page naming the clean URL, and the structured-data
+guard asserts the `WebPage` `@id`/`url` bindings.
+
+## Live state (2026-08-21)
+
+The deployed site still serves the pre-fix `.html` self-declarations on
+exactly these three pages:
+
+| Live URL | canonical | og:url | WebPage `@id` | WebPage `url` |
+|---|---|---|---|---|
+| `https://tinystudio.io/agents` | `https://tinystudio.io/agents.html` | same | `.../agents.html#webpage` | `https://tinystudio.io/agents.html` |
+| `https://tinystudio.io/pricing` | `https://tinystudio.io/pricing.html` | same | `.../pricing.html#webpage` | `https://tinystudio.io/pricing.html` |
+| `https://tinystudio.io/specimen` | `https://tinystudio.io/specimen.html` | same | `.../specimen.html#webpage` | `https://tinystudio.io/specimen.html` |
+
+Probed 2026-08-21 ~04:26 UTC with `curl -s -H 'Cache-Control: no-cache'`
+against `https://tinystudio.io/{agents,pricing,specimen}`. The `.html` twins
+307 to the clean forms (verified `curl -sI`), so the live pages' own
+declarations point at addresses that redirect.
+
+The same probes show the deployment is stale beyond this item:
+
+- `/pricing` closing `.band` has no signup form (the `form.lead` fixed by PR
+ #194 / #219 is absent; only the heading, sub, note and CTA-less note
+ remain), and the footer still reads `The Tiny Studio` (fixed by #112).
+- `/agents`, `/pricing`, `/specimen` all serve the old `.html` head
+ declarations (this item).
+- `/audit` and `/` serve the correct clean canonicals, and the
+ `/brief-requested` page carries the apple-touch-icon — so the deployment
+ is not uniformly ancient; it appears to be a partial deploy (or one from a
+ branch that carried the newer /audit work but not the 2026-08-19 merge of
+ #218/#112).
+
+## Verdict
+
+The source fix for this item is complete and merged on origin/main; CI
+guards (`npm run check`) enforce it. The item's fault is no longer present
+in the repository. What remains is deployment staleness: the live site has
+not been redeployed from current main, so it still serves the pre-fix head
+declarations on /agents, /pricing and /specimen.
+
+No further source change is proposed by this lane. The lane report
+(`.lane/reports/fix-pagehead-self-decl-reverify-lane1-20260821.md`) records
+the same findings; a deploy of origin/main (`npm run deploy`, manual per the
+domain's deployment convention) is the remaining action to make the live
+site match the source.