Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
80 changes: 80 additions & 0 deletions .lane/reports/specimen-in-content-cta-rereverify-2026-08-14.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Lane 1 — specimen in-content conversion CTA — re-verification (2026-08-14)

Lane: tinystudio-io lane 1
Branch: `fix/specimen-in-content-cta-rereverify-2026-08-14`
Item: `94ec723c9e` — "[unreviewed-by-opus] The /specimen proof page contains
no in-content conversion CTA — the page the homepage routes"

## Outcome

**Closed. The /specimen proof page already carries an in-content conversion
CTA on `origin/main` and on the live site — the fix landed in PR #155
(`b81281f`, merged 2026-08-14), superseding the conflict-locked PR #107. No
code change was needed; this lane re-verified the fix against the current
head and the live deployment of that head, and recorded the closeout
evidence.**

## Verification performed

1. **Fix commit on current main** — `git merge-base --is-ancestor b81281f
origin/main` → true; `origin/main` head is `2088b6b` (2026-08-14).
PR #155's message explains it superseded the conflict-locked PR #107,
which had carried the same change set since 2026-08-11 without landing.
2. **Fix commit in the deployed release** — the fleet deployment pin
(`release-state-tinystudio-io.json`) records the live Worker release at
sha `5c6521a` (2026-08-14); `git merge-base --is-ancestor b81281f
5c6521a` → true.
3. **Source: the band CTA exists** — `public/specimen.html` lines 134-139
carry the `.band` block with `<a class="cta" href="/#start">Request the
appraisal</a>` and the no-guarantees note between the report and the
footer. The homepage routes to this page: `public/index.html` line 250
`<a class="xi19" href="/specimen">Read the specimen &rarr;</a>`.
4. **Source: CI guard exists** — `scripts/check-site.mjs` lines 1785-1812
("Specimen in-content conversion CTA") fail the build if the band, its
CTA to `/#start`, the no-guarantees note, `.band .cta` styling, or the
>=44px tap target (`padding:16px 24px`) regress.
5. **Site-wide checker** — `npm run check` → exit 0; "TinyStudio.io checks
passed."
6. **Full test suite** — `npm test` → exit 0: headings 6/6, sitemap 7/7,
agent-worker 76/76, agent-UI 8/8, product-contract 16/16, viewport 4/4,
narrow-viewport 4/4 owned routes (the only reported item is the
pre-existing, out-of-scope `/` overflow at 240px/260px, which does not
gate the exit code).
7. **Live site** — `GET https://tinystudio.io/specimen` → HTTP 200; the
served HTML carries the band CTA (two "Request the appraisal"
occurrences — nav and in-content band). `GET
https://tinystudio.io/specimen.html` → HTTP 307 → `/specimen`. The served
body is byte-identical to committed `public/specimen.html` (normalized
by stripping the `data-fonts-css` preload attribute the worker injects).

## Files changed

- `docs/evidence/specimen-in-content-cta-rereverify-2026-08-14.md` — new
evidence receipt recording the closeout on the current head and live site
(the lane's claimed file).
- `.lane/reports/specimen-in-content-cta-rereverify-2026-08-14.md` — this
report.

## Verification commands

- `git merge-base --is-ancestor b81281f origin/main` → true.
- `git merge-base --is-ancestor b81281f 5c6521a` → true (deployed release
is past the fix).
- `npm run check` → "TinyStudio.io checks passed." (exit 0).
- `npm test` → exit 0; all suites green.
- `curl -s -w "%{http_code}" https://tinystudio.io/specimen` → 200; body
carries the `.band` CTA to `/#start` and the no-guarantees note; body
byte-identical to source (normalized).
- `curl -s -w "%{http_code}" https://tinystudio.io/specimen.html` → 307 →
`/specimen`.

## PR

- https://github.com/nish3451/TinyStudio.io/pull/195

## Honest boundary

This lane claims no behavioural change in the public surface — the fix
already shipped in PR #155. This lane makes no claim about pricing/legal
prose (owned by other lanes), the README/MEMORY/specs product-contract
wording, or any other review item.
117 changes: 117 additions & 0 deletions docs/evidence/specimen-in-content-cta-rereverify-2026-08-14.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Specimen in-content conversion CTA — re-verification (2026-08-14)

Date: 2026-08-14
Scope: the review-queue item "[unreviewed-by-opus] The /specimen proof page
contains no in-content conversion CTA — the page the homepage routes" (item
`94ec723c9e`). This receipt re-verifies the item's acceptance criteria
against the current `origin/main` head (`2088b6b`, "docs(evidence):
re-verify brief-requested clean-links survivor PR #145 on current main and
live (2026-08-14)", merged 2026-08-14) and the live deployment of that
head. It is source plus live-deployment evidence; it does not claim anything
about ranking, traffic, or search results.

## Summary

The failure mode the item describes — the /specimen proof page ending
without any in-content conversion CTA — **no longer occurs, on source and on
the live site**. The code-side fix is already merged in `origin/main`: PR
#155 (`b81281f`, "fix(public): add in-content conversion CTA to the /specimen
proof page", merged 2026-08-14) added a dark `.band` block between the report
and the footer carrying an explicit `.cta` link to `/#start` labelled
"Request the appraisal", a no-guarantees note, a >=44px tap target
(`padding:16px 24px`), and a static source guard in `scripts/check-site.mjs`
that fails CI if the band, its CTA, or its tap target regresses. The commit
superseded the conflict-locked PR #107, which had carried the same change
set since 2026-08-11 without landing. Re-measured on 2026-08-14: the live
`https://tinystudio.io/specimen` serves the band and CTA, and the full test
suite passes on the current head.

## Source checks on the current head (origin/main `2088b6b`)

1. `public/specimen.html` carries the in-content conversion band immediately
before the footer (lines 134-139):

```html
<div class="band">
<h2>That was a real one. Yours is read the same way.</h2>
<p>Four passes, by hand, and a plain document with each fault named in
order of what it costs you — the fix beside it. Thirty seconds to ask,
findings inside five working days, yours to keep either way.</p>
<a class="cta" href="/#start">Request the appraisal</a>
<div class="note">No revenue, ranking, ROAS, conversion, booked-call or
sales-volume guarantees. Only the work.</div>
</div>
```

The CTA targets `/#start`, the same request surface as the nav CTA, so a
reader who finishes the sample has an in-content next step.
2. The homepage routes its "Read the specimen" call-out to exactly this
page: `public/index.html` line 250 ends the confidentiality section with
`<a class="xi19" href="/specimen">Read the specimen &rarr;</a>`.
3. `public/specimen.css` styles the band CTA and keeps the >=44px hit area:
`.band .cta` is present with `padding:16px 24px`.
4. `scripts/check-site.mjs` (the "Specimen in-content conversion CTA" block,
lines 1785-1812) statically guards the shape: it requires a `.band` block
between the report and the footer, a `.cta` link to `/#start` labelled
"Request the appraisal", the no-guarantees note, `.band .cta` styling,
and the 16px/24px padding. CI fails if any piece regresses.
5. `npm run check` passes (exit 0, "TinyStudio.io checks passed.").
6. `npm test` passes (exit 0) on the current head: `check-site` plus the
heading-hierarchy (6/6), sitemap (7/7), agent-worker (76/76),
agent-UI (8/8), product-contract (16/16), viewport (4/4), and
narrow-viewport suites — all green, zero failures. (The only reported
item is a pre-existing, out-of-scope note that `/` overflows at 240px
and 260px; it does not gate the exit code and does not touch the
specimen CTA.)
7. `git merge-base --is-ancestor b81281f origin/main` → true: PR #155's fix
commit is on current main.

## Live checks (2026-08-14)

- `GET https://tinystudio.io/specimen` → HTTP 200; the served HTML carries
the `.band` block with `<a class="cta" href="/#start">Request the
appraisal</a>` and the no-guarantees note verbatim (two "Request the
appraisal" occurrences: the nav CTA and the in-content band CTA).
- `GET https://tinystudio.io/specimen.html` → HTTP 307 → `/specimen` (the
extensionless twin is canonical).
- The served `/specimen` body is byte-identical to the committed
`public/specimen.html` (compared normalized by stripping the
`data-fonts-css` preload attribute, which the worker injects at serve
time), so the live page is exactly the file the source guard checks.
- `release-state-tinystudio-io.json` (the fleet's deployment pin) records
the live Cloudflare Worker release at sha `5c6521a` (2026-08-14); `git
merge-base --is-ancestor b81281f 5c6521a` → true, so PR #155's fix commit
is inside the deployed release.

## Repro steps

1. Source guard: `npm run check` — the "Specimen in-content conversion CTA"
section fails if the `.band` block, its `.cta` link to `/#start`, the
no-guarantees note, `.band .cta` styling, or the 16px/24px padding
regress.
2. `npm test` — the full suite (headings, sitemap, worker, UI, contract,
viewport, narrow-viewport) passes on the current head.
3. `curl -s https://tinystudio.io/specimen` → HTTP 200; grep for
`class="cta"` `href="/#start"` → present in the band before the footer.
4. `git merge-base --is-ancestor b81281f origin/main` and `... 5c6521a` →
both true.

## Limitation

This is a source plus live-deployment measurement, not a behavioral
conversion test. The static guard in `scripts/check-site.mjs` is what
prevents the band CTA from silently regressing; the live re-check above is
the standing way to re-confirm the deployed state.

## Closeout

The review item "[unreviewed-by-opus] The /specimen proof page contains no
in-content conversion CTA — the page the homepage routes" is **closed
against current main and live**: PR #155 (`b81281f`) is merged in
`origin/main` `2088b6b` and inside the deployed release `5c6521a`; the
specimen page carries an in-content `.band` conversion CTA to `/#start`
with the >=44px tap target; the homepage routes its "Read the specimen"
call-out to `/specimen`; the live site serves the band CTA; and `npm run
check` plus `npm test` pass on the current head. The receipt now records
the closeout on the current head so the item cannot be re-opened by tracker
drift.
Loading