diff --git a/.lane/reports/chore-duplicate-pr-clusters-residual-closeout-2026-08-14.md b/.lane/reports/chore-duplicate-pr-clusters-residual-closeout-2026-08-14.md new file mode 100644 index 00000000..2af02ab3 --- /dev/null +++ b/.lane/reports/chore-duplicate-pr-clusters-residual-closeout-2026-08-14.md @@ -0,0 +1,47 @@ +# Lane report: duplicate open-PR clusters residual closeout (2026-08-14) + +Lane: tinystudio-io lane 1 +Branch: `chore/duplicate-pr-clusters-residual-closeout-2026-08-14` +Item: f3c90474c1 — "Reconcile the two residual duplicate fix-PR clusters after #105 — brief-requested clean links" + +## Outcome + +**Closed.** The two residual post-#105 duplicate fix-PR clusters are fully +reconciled to terminal state. Cluster 1 (brief-requested clean links) had +its surviving delivery path #145 merged to main as `f9214c1` +(2026-08-14T09:42:02Z); the fix and its regression guard now live on +`origin/main` (`5eefa80`). Cluster 2 (rel=icon favicon) was delivered via +#85 (`9302611`) and #113 (`18128e8`). Verified on this run: no open PR +carries either fix, main carries both, `npm run check` and `npm test` green +on a fresh main tree, and the live site serves the clean anchors with no +`.html` hrefs. No code change was needed — opening a duplicate would have +recreated the cluster the fleet reconciled. This lane records the +authoritative closeout receipt. + +## Verification performed + +1. **GitHub state**: #145, #85, #113 MERGED; #60, #97, #47 CLOSED with + survivor-naming comments (confirmed via `gh pr list --state all`). +2. **Open-PR scan** (19 open PRs): no open PR touches the clean-links + anchors or the five-page favicon links. #112/#114/#154 touch + `brief-requested.html`/`check-site.mjs` for different fixes (footer + brand, pricing callout, intake labels). +3. **Main tree** (fresh `5eefa80`): clean anchors + guard entry present; + exactly one `rel=icon` on all five public pages. +4. **`npm run check`** on fresh main tree → "TinyStudio.io checks passed." +5. **`npm test`** on fresh main tree → exit 0, all suites green; only the + pre-existing out-of-scope `/` @ 240px overflow note (does not gate). +6. **Live probes**: `/brief-requested` 200 with zero `.html` hrefs; the + `.html` twins still 307 to their clean forms (worker shim unchanged). + +## Files changed + +- `docs/evidence/duplicate-open-pr-clusters-residual-closeout-2026-08-14.md` + — new evidence receipt recording the final closeout of both residual + clusters (the lane's claimed file). + +## Delivery + +- Branch: `chore/duplicate-pr-clusters-residual-closeout-2026-08-14` +- PR: **#196** opened against origin/main carrying the evidence closeout + (commit `32e7d11`, 2026-08-14). diff --git a/docs/evidence/duplicate-open-pr-clusters-residual-closeout-2026-08-14.md b/docs/evidence/duplicate-open-pr-clusters-residual-closeout-2026-08-14.md new file mode 100644 index 00000000..73acafd7 --- /dev/null +++ b/docs/evidence/duplicate-open-pr-clusters-residual-closeout-2026-08-14.md @@ -0,0 +1,106 @@ +# Duplicate open-PR clusters residual — closeout of the two post-#105 clusters (2026-08-14) + +Date: 2026-08-14 +Scope: final closeout of the two residual duplicate fix-PR clusters left after +the first reconciliation (PR #105, +`docs/evidence/duplicate-open-pr-clusters-2026-08-11.md`) and its follow-up +receipts (`docs/evidence/duplicate-open-pr-clusters-residual-2026-08-11.md` +and `-reverify-2026-08-12.md`): verify against current GitHub state that +exactly one delivery path resolved per surface, that no open PR still carries +either fix, and that both fixes have landed on current `origin/main`. This +receipt records a state verification of the repository's pull requests plus +the live site; it is process evidence, not itself a code change. + +## The two residual clusters (final state, GitHub 2026-08-14) + +### Cluster 1 — brief-requested clean nav/back links + +| PR | head branch | created | closed / merged | final state | carries | +|---|---|---|---|---|---| +| #60 | `fix/brief-requested-clean-nav-links` | 2026-08-09T21:32Z | CLOSED 2026-08-11T08:10:08Z | closed | the fix, original stale-base branch | +| #97 | `fix/brief-requested-clean-links` | 2026-08-11T01:17Z | CLOSED 2026-08-12T01:24:26Z | closed | the fix + guard-coverage receipt | +| #145 | `fix/brief-requested-clean-links-lane1` | 2026-08-12T01:24:19Z | MERGED 2026-08-14T09:42:02Z | merged (`f9214c1`) | the two-file fix | + +#60 and #97 were closed as stale duplicates (each with a comment naming the +surviving delivery path); the 2026-08-12 receipt declared "#145 must be merged +for the surface to be closed". **#145 merged to main as `f9214c1`** +(2026-08-14T09:42:02Z), and `origin/main` today serves the clean anchors and +the internal-links guard entry (verified on `5eefa80` below). **No open PR +carries this fix.** + +### Cluster 2 — rel=icon favicon on the five public pages + +| PR | head branch | created | closed / merged | final state | carries | +|---|---|---|---|---|---| +| #47 | `fix/serve-rel-icon-favicon` | 2026-08-09T14:46Z | CLOSED 2026-08-11T08:10:09Z | closed | the fix, conflict-locked original | +| #85 | `fix/rel-icon-favicon-lane1` | 2026-08-10T21:31Z | MERGED 2026-08-11T13:43:26Z | merged (`9302611`) | the fix | +| #113 | `fix/serve-rel-icon-brief-requested` | 2026-08-11T16:14:59Z | MERGED 2026-08-11T18:34:32Z | merged (`18128e8`) | brief-requested icon + guard extension | + +#47 was closed as the conflict-locked stale duplicate; #85 merged the +identical five-page `` fix to main +(`9302611`), and the follow-up #113 extended the icon and the favicon guard +to `/brief-requested` (`18128e8`). **No open PR carries this fix** — the +correct terminal state. + +## No other carriers (open-PR scan, 2026-08-14) + +Every open PR's changed-files set was scanned (19 open PRs; #67 and #45 +return no file list — their heads are closed/merged states). The only open +PRs touching `public/brief-requested.html` are #112 (footer brand), +#114/#194 (pricing closing callout) and #154 (intake labels) — each a +different fix; #112's `brief-requested.html` diff is the footer line only. +No open PR touches the logo/nav/back anchors of the clean-links fix or the +five-page favicon links. + +## Verification performed (2026-08-14, against `origin/main` `5eefa80`) + +1. **GitHub state**: #145 MERGED (`f9214c1`); #60, #97, #47 CLOSED with + survivor-naming comments; #85, #113 MERGED (`9302611`, `18128e8`). No open + PR carries either fix. +2. **Main tree (cluster 1)**: `public/brief-requested.html` links the logo, + three nav links and back link at the clean extensionless twins + (`/`, `/audit`, `/agents`, `/pricing`); the internal-links guard in + `scripts/check-site.mjs` covers the `brief-requested` page. +3. **Main tree (cluster 2)**: exactly one `` + on all five public pages (`index`, `pricing`, `audit`, `agents`, + `specimen`). +4. **`npm run check`** on a fresh `5eefa80` tree → "TinyStudio.io checks + passed." +5. **`npm test`** on a fresh `5eefa80` tree → exit 0, all suites green + (headings, sitemap, worker, UI, contract, viewport); only the pre-existing + out-of-scope `/` @ 240px overflow note, which does not gate exit code. +6. **Live probes** (2026-08-14): `https://tinystudio.io/brief-requested` + serves 200 with **no** `.html` hrefs; the `.html` twins still 307 to their + clean forms (`/index.html` → `/`, `/audit.html` → `/audit`, `/agents.html` + → `/agents`, `/pricing.html` → `/pricing`, `/specimen.html` → `/specimen`) + — the worker 307 shim is unchanged and harmless, since no served page links + the `.html` forms anymore. + +## Resulting state + +**The item is closed.** Both residual post-#105 clusters are reconciled to +their terminal states: + +- Cluster 1 (brief-requested clean links): sole surviving path #145 merged to + main (`f9214c1`); fix landed, guard landed, no open delivery path remains. +- Cluster 2 (favicon): fix delivered via #85 and #113 (`9302611`, `18128e8`); + no open delivery path remains — the correct terminal state. + +Combined with PR #105's four clusters and the 2026-08-11/08-12 residual runs, +every duplicate open fix-PR pair in the repository is reconciled to one +superior delivery path (or delivered). This receipt closes the residual +reconciliation item `f3c90474c1`. + +## Reproduce + +- `gh pr list --repo nish3451/TinyStudio.io --state all` → #145, #85, #113 + MERGED; #60, #97, #47 CLOSED. +- `for n in $(gh pr list --repo nish3451/TinyStudio.io --state open ...); do + gh pr view $n --json files --jq '.files[].path'; done` → no open PR touches + the clean-links anchors or the five-page favicon links. +- `git show origin/main:public/brief-requested.html | grep href=` → clean + anchors only; `grep -c 'rel="icon"' public/{index,pricing,audit,agents,specimen}.html` + → 1 each. +- `npm run check` and `npm test` on a fresh `origin/main` tree → green. +- `curl -s https://tinystudio.io/brief-requested | grep -o 'href="[^"]*\.html"'` + → no match; each `.html` twin 307s to its clean form.