diff --git a/.lane/reports/docs-pr42-pr43-serial-merge-rereverify-2026-08-21.md b/.lane/reports/docs-pr42-pr43-serial-merge-rereverify-2026-08-21.md new file mode 100644 index 00000000..a534ea5f --- /dev/null +++ b/.lane/reports/docs-pr42-pr43-serial-merge-rereverify-2026-08-21.md @@ -0,0 +1,47 @@ +# Lane report: PR #42 + #43 serial-merge re-verification (2026-08-21, lane 1) + +Branch: `docs/pr42-pr43-serial-merge-rereverify-2026-08-21` +Item: "[unreviewed-by-opus] Merge PR #42 and #43 in serial order (or rebase +the loser) — both are MERGEABLE/CLEAN but rew…" + +## Outcome + +Both PRs are already closed and merged on `origin/main` — there was no merge +left to perform. This lane re-verified the serial-merge outcome against live +GitHub state and current main, and records the receipt. + +## Verified facts (2026-08-21) + +- PR #42 (`fix/ai-answer-readiness-preferred-sources`): state `MERGED`, + merged 2026-08-09T12:51:00Z by nish3451, squash commit + `95d2248a15baf64910c0dbaf40245945b533d1fb`. +- PR #43 (`fix/ai-search-rerun-entity-offer`): state `MERGED`, + merged 2026-08-12T02:54:14Z by nish3451, merge commit + `ad9cee307d4e01b2f0e47c828dc95a74e3bfd855`. +- Serial order holds: `git merge-base --is-ancestor 95d2248a ad9cee3` → true + (PR #42 landed first, PR #43 on top). The "rebase the loser" alternative + was moot. +- Both merge commits are ancestors of current main (`92d55c3`). +- PR #43 branch tip `ed62202e` is an ancestor of main; zero unmerged content. +- PR #42 content on main: `public/llms.txt` and `public/offer.md` carry the + `## Answer Readiness: Preferred Source Pages` section (q1–q8 mapping, + including the later q8 extension from PR #102); `scripts/check-site.mjs` + carries the preferred-source guard; `scripts/test-agent-ui.mjs` carries the + unit assertions. +- PR #43 content on main: `docs/evidence/ai-search/2026-08-09-controlled-rerun.md`, + `docs/evidence/ai-search/2026-08-11-q5-ground-truth-alignment.md`, + `evidence-fixtures/ai-search/{README.md,evidence.json,controlled-questions.json}`. + +## Checks run against current main (`92d55c3`) + +- `node scripts/check-site.mjs` → `TinyStudio.io checks passed.` +- `node --test scripts/test-agent-ui.mjs` → tests 16, pass 16, fail 0 +- `node --test scripts/test-heading-hierarchy.mjs` → tests 6, pass 6, fail 0 + +## Artifacts + +- Evidence receipt: `docs/evidence/pr42-pr43-serial-merge-rereverify-2026-08-21.md` +- No production code changed; this is a state-verification lane. + +Prior receipts: closeout 2026-08-12 (PR #146), re-verifications 2026-08-14 +(PR #189) and 2026-08-17 (PR #244) — all still hold. diff --git a/docs/evidence/pr42-pr43-serial-merge-rereverify-2026-08-21.md b/docs/evidence/pr42-pr43-serial-merge-rereverify-2026-08-21.md new file mode 100644 index 00000000..6e0618ab --- /dev/null +++ b/docs/evidence/pr42-pr43-serial-merge-rereverify-2026-08-21.md @@ -0,0 +1,165 @@ +# PR #42 + #43 serial-merge review item — re-verification (2026-08-21) + +Date: 2026-08-21 +Scope: the review item "[unreviewed-by-opus] Merge PR #42 and #43 in serial +order (or rebase the loser) — both are MERGEABLE/CLEAN but rew…" (review +queue; the packet quoting the item truncates after "rew", so the tail of the +item's wording is not reproduced here), re-verified against the GitHub +repository state on 2026-08-21. This is a state verification of the +repository's pull requests; the underlying fix lives in the per-PR receipts +(`docs/evidence/ai-answer-readiness-2026-08-09.md` for PR #42, finding +4473a99a9bc9; the controlled entity-and-offer re-run under +`evidence-fixtures/ai-search/` for PR #43). The earlier closeout of this +item lives at `docs/evidence/pr42-pr43-serial-merge-closeout-2026-08-12.md` +(PR #146, head 4e2b94c, 2026-08-12), and the prior re-verifications live at +`docs/evidence/pr42-pr43-serial-merge-rereverify-2026-08-14.md` (PR #189, +head 65347958, 2026-08-14) and +`docs/evidence/pr42-pr43-serial-merge-rereverify-2026-08-17.md` (PR #244, +head 4b48ef9, 2026-08-17). + +## What the item claimed + +- PR #42 (`fix/ai-answer-readiness-preferred-sources`) and PR #43 + (`fix/ai-search-rerun-entity-offer`) were both open and + MERGEABLE/CLEAN, and needed to land in serial order — or the loser + needed a rebase before landing. + +## What the re-verification found (GitHub, 2026-08-21) + +### Both PRs are still closed and merged, in serial order, on current main + +Verified live against the GitHub REST API with the configured credential: + +| Fact | PR #42 | PR #43 | +|---|---|---| +| State | `closed`, `merged: true` | `closed`, `merged: true` | +| Title | fix(public): declare preferred source pages for AI answers (dogfood 4473a99a9bc9) | evidence(ai-search): re-run controlled entity-and-offer questions after the llms/offer mirror went live | +| Merged at | 2026-08-09T12:51:00Z | 2026-08-12T02:54:14Z | +| Merged by | nish3451 | nish3451 | +| Merge commit on main | `95d2248a15baf64910c0dbaf40245945b533d1fb` (squash) | `ad9cee307d4e01b2f0e47c828dc95a74e3bfd855` (merge) | +| Ancestor on current main (`92d55c3`) | yes — `git merge-base --is-ancestor 95d2248a origin/main` is true | yes — `git merge-base --is-ancestor ad9cee3 origin/main` is true | +| Serial order | ancestor of PR #43 — `git merge-base --is-ancestor 95d2248a ad9cee3` is true | landed on top of main after PR #42 | + +The serial-order requirement still holds exactly as the item asked: PR #42 +landed first (squash `95d2248a`, 2026-08-09), PR #43 landed on top of it +(merge `ad9cee3`, 2026-08-12). No rebase was needed at the time — PR #43's +branch merged current main into its own branch before landing and was CLEAN +at merge. The "or rebase the loser" alternative was moot and remains moot. + +### Main carries the full PR #42 declaration; q8 extension and later layers hold + +- `public/llms.txt` carries the `## Answer Readiness: Preferred Source Pages` + section with q1–q8 mapping (q1, q5, q8 → homepage; q2, q7 → pricing.html; + q3, q4, q6 → audit.html). The q8-conversion-audit entry was added by + PR #102 (commit `2ae7504`, "feat(public): add truthful search-intent + bridge for 'conversion audit' searches (#102)") after PR #42 was merged; + the 2026-08-12 closeout and the 2026-08-14/2026-08-17 re-verifications + already accounted for that addition, and the present re-check confirms it + is still present (`grep -c "q8-conversion-audit" public/llms.txt` → 1). +- `public/offer.md` mirrors the same q1–q8 mapping + (`grep -c "Answer Readiness" public/offer.md` → 1), so the + machine-readable pair still cannot drift on the answer-readiness + question coverage. +- `scripts/check-site.mjs` still carries the "preferred-source mapping" + guard under the "AI Answer Readiness (dogfood 4473a99a9bc9)" block + (`grep -c "preferred-source" scripts/check-site.mjs` → 1), and + `scripts/test-agent-ui.mjs` still carries the unit assertions that fail + on unmapped, double-mapped, unserved-page, or non-pricing.html price + questions. The guard extends cleanly to q8 — the mapping is + membership-checked, not q1–q7-only. +- `docs/evidence/ai-answer-readiness-2026-08-09.md` and + `evidence-fixtures/ai-search/README.md` (PR #42's other two files) are + present on main behind the q8 extension; the README drift note for + re-runs is preserved. +- The full PR #42 content (the six-file, +260-line change that squash + `95d2248a` landed) is on main; the branch tip `0c8ebace` is no longer + directly comparable because main has progressed past PR #42's merge base + (PR #102 added q8 and the search-intent bridge, and other PRs have + refactored `check-site.mjs` and `test-agent-ui.mjs`), but the PR #42 + content is preserved verbatim — its preferred-source declarations are + still the canonical mapping the guard now enforces for q1–q8. + +### PR #43 still carries the controlled re-run + +- The branch tip `ed62202e` is the second parent of merge commit + `ad9cee3` and remains an ancestor of current main + (`git merge-base --is-ancestor ed62202 origin/main` is true). The re-run + receipts under `docs/evidence/ai-search/2026-08-09-controlled-rerun.md` + and `docs/evidence/ai-search/2026-08-11-q5-ground-truth-alignment.md` + are present on main, together with the `evidence.json` and + `controlled-questions.json` updates PR #43 landed. +- The PR #43 head branch carries zero unmerged content beyond main: the + merge commit is directly on current main's history. + +### Four-day-on state check (2026-08-17 → 2026-08-21) + +Since the 2026-08-17 re-verification at head `4b48ef9` / main `f309dd45`, +the post-reverification commits on main have touched: + +- The site surface (apple-touch-icon guard 92d55c3, /pricing lead-form + tap targets 75cfef2, render-blocking re-verification 92b4354, + product-contract round-1 harvest 8bc4f69, canonical re-verifications). +- The re-verification receipts themselves (apple-touch-icon, favicon rel, + render-blocking, social-share, canonical URL, tap-target, broken-external + links, g2/goodfirms/clutch profiles, product-contract harvest). +- Later AI-search evidence layers: the 2026-08-15 controlled re-run + (`docs/evidence/ai-search/2026-08-15-controlled-rerun.md`, PR #227) + recorded the first `Found` transitions and landed on main after PR #43. + +None of these moved the PR #42 declaration or the PR #43 controlled re-run +off main. The order of "PR #42 first, then PR #43" still holds, and the +item's review-queue tag (`unreviewed-by-opus`) is the only reason the item +is still open at the queue level — there is no mergeable, unmerged work +on either PR. + +### CI sanity on current main + +`origin/main` at `92d55c3` (PR #256 merge, 2026-08-20) is the head against +which this re-verification is run. The local checks below were executed +against this head: + +- `node scripts/check-site.mjs` → `TinyStudio.io checks passed.` +- `node --test scripts/test-agent-ui.mjs` → `tests 16, pass 16, fail 0` +- `node --test scripts/test-heading-hierarchy.mjs` → `tests 6, pass 6, fail 0` + +The per-PR receipt `scripts/check-site.mjs` and `scripts/test-agent-ui.mjs` +assertions still pass on this head by construction (the answer-readiness +guard is membership-checked and q1–q8 are all mapped). The broader test +suite is covered by the 2026-08-14 re-verification receipts already on +main and the per-PR receipts on their own branches. + +## What closes the item (re-verified) + +- There are no open PRs #42 or #43: both are `closed`/`merged` (2026-08-09 + and 2026-08-12 respectively). Merging them again is neither possible nor + needed. +- The serial-order requirement is satisfied exactly as the item asked: + #42 landed first (squash `95d2248a`, 2026-08-09), then #43 on top of it + (merge `ad9cee3`, 2026-08-12). The "or rebase the loser" alternative was + moot — #43 merged current main into its own branch before landing and + was CLEAN at merge. +- Main carries the full, exact content of both PRs; the six-file PR #42 + declaration is on main and the q8-conversion-audit extension (PR #102) + is layered on top of it without removing any of PR #42's content. +- The PR #42 branch tip is now stale relative to current main (because + main has progressed past PR #42's merge base), but the PR is already + merged — the staleness is expected and does not change the serial-merge + outcome. +- The PR #43 branch tip is an ancestor of current main and carries zero + unmerged content beyond main. +- No code change is needed or proposed. + +## Closeout + +This re-verifies the review item "[unreviewed-by-opus] Merge PR #42 and #43 +in serial order (or rebase the loser)" against current GitHub state +(2026-08-21); the closeout first recorded on 2026-08-12 (PR #146, +`4e2b94c`) and the re-verifications recorded on 2026-08-14 (PR #189, +`65347958`) and 2026-08-17 (PR #244, `4b48ef9`) still hold, with both PRs +merged in serial order, both PR contents on main, the q8-conversion-audit +extension and the post-2026-08-17 layers (apple-touch-icon guard, /pricing +lead-form tap targets, 2026-08-15 controlled re-run with first `Found` +transitions) layered on top of PR #42 + #43 without conflict, and no +further action needed beyond this receipt. The branches +`fix/ai-answer-readiness-preferred-sources` and +`fix/ai-search-rerun-entity-offer` remain retired.