Expanded from visual evidence. Use the source PDF for final verification.
-
Evidence support is limited
+
Evidence support is limited
Do not copy into notes
From 23309e618381670ef9f96dc2bf9502ff82703352 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 01:18:49 +0000
Subject: [PATCH 02/16] fix(ui): scope diagnosis detail locator past Next S:
clone
Production UI failed when getByTestId("differential-detail-page")
matched both the live shell page and a hidden streaming clone.
Scope to mobile-composer-reserve-pad, matching presentation and
service detail tests.
Co-authored-by: BigSimmo
---
tests/ui-tools.spec.ts | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/tests/ui-tools.spec.ts b/tests/ui-tools.spec.ts
index b6309c786e..a748c6bd70 100644
--- a/tests/ui-tools.spec.ts
+++ b/tests/ui-tools.spec.ts
@@ -1937,16 +1937,22 @@ test.describe("Clinical KB tools launcher", () => {
test("diagnosis detail actions stay tappable and tabs stay single-line", async ({ page }) => {
await page.setViewportSize({ width: 1024, height: 800 });
await gotoLauncher(page, "/differentials/diagnoses/delirium");
- await expect(page.getByTestId("differential-detail-page")).toBeVisible();
+ // Scope to the live shell scrollport: Next may briefly retain a hidden
+ // streaming `S:` clone of the page root under CI load, which would make a
+ // document-wide getByTestId strict-mode fail.
+ const detailPage = page
+ .getByTestId("mobile-composer-reserve-pad")
+ .getByTestId("differential-detail-page");
+ await expect(detailPage).toBeVisible();
// The desktop action cluster must keep its intrinsic width (shrink-0) so the
// icon action does not get crushed below the 44px tap standard.
- await expectMinTouchTarget(page.getByRole("button", { name: "Save diagnosis" }));
+ await expectMinTouchTarget(detailPage.getByRole("button", { name: "Save diagnosis" }));
// Tabs: no page overflow and single-line labels at the narrowest width.
await page.setViewportSize({ width: 320, height: 700 });
- await expect(page.getByTestId("differential-detail-page")).toBeVisible();
+ await expect(detailPage).toBeVisible();
await expectNoPageHorizontalOverflow(page);
- const overviewTab = page.getByRole("tab", { name: "Overview" });
+ const overviewTab = detailPage.getByRole("tab", { name: "Overview" });
await expect(overviewTab).toBeVisible();
// Count rendered label lines from text-node rects (an icon rect would bridge
// two wrapped lines and mask a wrap); the tab label must stay on one line.
From 6a0086732a5cfaaa17977ee0c568d6f326f4c059 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 01:21:43 +0000
Subject: [PATCH 03/16] style: prettier-format diagnosis detail locator scope
Static PR format:check failed on the ui-tools locator change.
Co-authored-by: BigSimmo
---
tests/ui-tools.spec.ts | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/tests/ui-tools.spec.ts b/tests/ui-tools.spec.ts
index a748c6bd70..1476cdbef3 100644
--- a/tests/ui-tools.spec.ts
+++ b/tests/ui-tools.spec.ts
@@ -1940,9 +1940,7 @@ test.describe("Clinical KB tools launcher", () => {
// Scope to the live shell scrollport: Next may briefly retain a hidden
// streaming `S:` clone of the page root under CI load, which would make a
// document-wide getByTestId strict-mode fail.
- const detailPage = page
- .getByTestId("mobile-composer-reserve-pad")
- .getByTestId("differential-detail-page");
+ const detailPage = page.getByTestId("mobile-composer-reserve-pad").getByTestId("differential-detail-page");
await expect(detailPage).toBeVisible();
// The desktop action cluster must keep its intrinsic width (shrink-0) so the
// icon action does not get crushed below the 44px tap standard.
From 2361f478d326bbf6ee40d6901885cbe19bcfee13 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 01:21:53 +0000
Subject: [PATCH 04/16] docs(ledger): record PR #1294 Production UI locator fix
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index ec877ab9fa..e953bf613b 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1175,3 +1175,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1289 / `codex/rag-reliability-final` | `a1ca6a016490e4d4b564edd3d553d87fed3071df` | Protected-main RAG reliability, clinical-governance and release review | APPROVE. Independent retrieval, governance and fallback reviews found and fixed three merge blockers: global chunk-query alias overreach was narrowed to the measured clozapine blood-count action shape; legacy private source reviews remain on the deployed v1 RPC while unapplied-v2 paths fail explicitly; and source-backed review fallback is now a zero-tolerance blocking metric with reconciled evidence. Final rereviews found no P0-P2. PR #1288 was superseded without force-push after GitGuardian correctly rejected a token-shaped fake fixture; the clean replacement tree is byte-identical to the reviewed tree and both secret scanners pass. The additive BMJ attestation migration remains unapplied and BMJ stays unverified pending qualified human action. | Exact application tree `verify:pr-local` PASS: format, zero-warning lint, typecheck, 403 files and 4,101 tests passed with 2 skipped, production build/client-secret scan, and 36 offline RAG fixtures. Live 36-case canary PASS with document/content recall 1.0, zero failed cases and zero per-case document/content RR regressions; three cache-bypassed affected-path answer probes PASS with zero provider requests and zero generation cost. Earlier coverage PASS: 399 files, 4,062 passed and 2 skipped, RAG 86.83% statements and 90.79% lines. Hosted build, static, unit coverage, migration replay, Supabase Preview, Production UI, policy, Semgrep, Gitleaks and GitGuardian passed on the implementation tree; final evidence-only head requires the normal hosted rerun. |
| 2026-07-28 | PR #1289 / `codex/rag-reliability-final` | `d49af8acb42ccedbfe6c8b3f03d30769ba906ec7` | Bugbot review (exact head) | APPROVE. No high-confidence P0–P2. Application `src/`/`supabase/`/`tests/`/`scripts/` trees are unchanged vs prior APPROVE tip `a1ca6a01`; tip delta is docs evidence + clean merge from `main`. No unresolved `cursor[bot]` Bugbot threads. Residual risk: unapplied BMJ attestation migration (`#022`) correctly fails closed with `503 source_review_v2_unavailable` until qualified hosted apply. | Focused high-risk Vitest 358 + 1502 passed; merge-tree CLEAN vs `origin/main`; no provider-backed checks; no PR comment mutations. |
| 2026-07-28 | PR #1289 / `codex/rag-reliability-final` | `ab6ca036937bff1acaefbda8a5581d6d75f489b3` | Final current-main sync review | APPROVE pending fresh exact-head required checks. Merged current `origin/main` without conflict after its already-reviewed document-search and focus-path changes; no protected RAG, evaluation, migration, or RAG fixture surface changed from the live-canary application tree, and no P0-P2 finding remains. | `git merge-tree --write-tree` CLEAN before sync; branch-ledger guard and `git diff --check` PASS; prior exact application-tree `verify:pr-local` and live 36-case canary remain applicable; fresh hosted checks required. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `6a0086732a5cfaaa17977ee0c568d6f326f4c059` | CI babysit + Bugbot | FIXED. Merged origin/main cleanly (behind/mergeable). Production UI failed on strict getByTestId(differential-detail-page) matching live page + hidden Next streaming S: clone; scoped locator to mobile-composer-reserve-pad (same class as presentation/service detail). Prettier-fixed Static PR. Bugbot: 0 unresolved cursor[bot] threads; no P0/P1 on unique diff. | Focused Chromium diagnosis-detail journey PASS 1/1; format:check PASS on touched file; no provider-backed checks. |
From 43311e941e04231c039963bbfc0090974577727e Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 01:39:15 +0000
Subject: [PATCH 05/16] docs(ledger): record PR #1294 CI green closeout
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index 67cdd30b73..fb900138fd 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1182,3 +1182,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `f4b55751` | CodeRabbit behavioral prefetch-test disposition | RESOLVED. Behavioral DOM coverage for menu-open prefetch paths (later adapted to per-option model). | focused vitest PASS; no provider checks. |
| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `81005d18` | Codex mojibake-ledger disposition | RESOLVED. Historical rows restored byte-for-byte from origin/main; append-only thereafter. | exact prefix check; check:branch-review-ledger PASS; no provider checks. |
| 2026-07-28 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `01469840` | CI/merge conflict closeout + Bugbot triage | RESOLVED merge conflict with origin/main (7ae4eb49 per-option prefetchModeHome). Dropped superseded bulk prefetchModeHomes; menu-open warms only highlighted option; focus/pointer scanning retained. CodeRabbit duplicate/malformed ledger threads dispositioned (main-owned). No open cursor[bot] Bugbot product defects. | merge-tree clean; focused vitest 12/12; ledger restored from main + appends; no provider checks. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `41da30ed82eb1cb6685883b6afbaa1e3198ee37d` | CI green closeout | APPROVE. Hosted required aggregate green after diagnosis-detail S: clone locator scope + Prettier + main sync (#1275). Bugbot: 0 unresolved cursor[bot] threads; no P0/P1 on unique product delta (mockup h3→h2 + test locator). Mergeable; 0 behind main. | Hosted Static PR / Unit / Build / Safety / Advisory UI / Production UI / PR required PASS; focused Chromium diagnosis-detail PASS 1/1 earlier; no provider-backed checks. |
From 9b941bb23e46de63c8cf22a630cdd55d7dd156cb Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 04:24:30 +0000
Subject: [PATCH 06/16] docs(ledger): record PR #1294 main sync after green CI
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index 2a3bc53394..df94cd5bdd 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1215,3 +1215,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1291 / `claude/issues-upload-limit-sync-123366` | `1607558188283d3497683f1067835d96f1031d3c` | CI babysit + merge conflict + Bugbot | FIXED. GitHub CONFLICTING/DIRTY was a real content conflict in `docs/outstanding-issues.md`: main had claimed `#084` for completed per-result grading evidence, colliding with this PR's upload-limit capture. Resolved by keeping main's ledger, renumbering the upload-limit recommendation to `#085`, and bumping `issues:next-id` to `086`. Synced again when main advanced with #1300. CodeRabbit date thread already resolved. Bugbot: zero `cursor[bot]` findings. Required CI green (PR required SUCCESS). | merge-tree CLEAN; prettier + docs:check-links PASS; hosted Change scope/Static/PR required SUCCESS; no provider-backed checks. |
| 2026-07-28 | PR #1291 / `claude/issues-upload-limit-sync-123366` | `af140d11d5ca23dee0d8705d9933db967fc8c404` | Babysit closeout tip | Supersedes prior #1291 row at `16075581` after appending the conflict/Bugbot ledger record. Product delta vs main unchanged: `#085` upload-limit capture only. merge-tree CLEAN; awaiting exact-head required checks. | ledger append + check:branch-review-ledger PASS; prior tip hosted PR required SUCCESS. |
| 2026-07-28 | PR #1302 / `claude/maturity-ledger-entry` | `64da2c1b34ae101590b8676af12ec6b49c14f0ad` | CI/conflict babysit + Codex threads + Bugbot | FIXED. Real content conflict with main: `#085` already claimed by upload-limit rec (#1291). Merged origin/main; renumbered maturity backlog to `#086`, bumped `issues:next-id` to `087`, added recommended-queue order 29 with go-ahead/RAG/provider stop rules. X7/M1 work orders arrived via main #1299. Codex P2 threads replied + resolved. Bugbot: zero cursor[bot] findings. CircleCI stub from main clears prior "no configuration" status error. | merge-tree CLEAN; prettier + docs:check-links + docs:check-scripts PASS; awaiting exact-head hosted CI; no provider-backed checks. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `9ac401fd3f9997c1a18c83dc2e5190ff02fcad63` | CI babysit re-request | FIXED drift. Hosted required checks already green on prior tip `10157dec`; GitHub DIRTY was staleness (merge-tree CLEAN, 31 behind). Merged origin/main cleanly; unique delta unchanged (mockup h3→h2 + diagnosis-detail S: clone locator). Bugbot: 0 unresolved cursor[bot] threads; no P0/P1. | Prior hosted Production UI/PR required PASS on `10157dec`; merge-tree CLEAN; prettier check PASS; no provider-backed checks. |
From 567d7b74c49a9a1f4f4d195bb5538813f63e8b2e Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 04:33:29 +0000
Subject: [PATCH 07/16] fix(ci): allow Next build RAM guard to warn on hosted
runners
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Private GitHub-hosted ubuntu runners report ~7–8 GiB, so the local
10 GiB Docker Desktop rail was fail-closing Build. Keep the hard fail
for local builds; warn and continue under CI/GITHUB_ACTIONS.
Co-authored-by: BigSimmo
---
scripts/guard-next-build.mjs | 22 ++++++++++++++--------
tests/guard-next-build-contract.test.ts | 21 +++++++++++++++++++++
2 files changed, 35 insertions(+), 8 deletions(-)
create mode 100644 tests/guard-next-build-contract.test.ts
diff --git a/scripts/guard-next-build.mjs b/scripts/guard-next-build.mjs
index 29c8154da8..2615dd3125 100644
--- a/scripts/guard-next-build.mjs
+++ b/scripts/guard-next-build.mjs
@@ -10,14 +10,20 @@ const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "
const totalRamBytes = os.totalmem();
const tenGiB = 10 * 1024 * 1024 * 1024;
if (totalRamBytes < tenGiB) {
- console.error(
- [
- `Host system has less than 10 GiB of total RAM (${(totalRamBytes / 1024 / 1024 / 1024).toFixed(1)} GiB).`,
- "Building Next.js locally requires an 8 GiB Node heap. Your system may crash or OOM during the build.",
- "If you are using Docker Desktop, increase the memory limit in settings.",
- ].join("\n"),
- );
- process.exit(1);
+ const message = [
+ `Host system has less than 10 GiB of total RAM (${(totalRamBytes / 1024 / 1024 / 1024).toFixed(1)} GiB).`,
+ "Building Next.js locally requires an 8 GiB Node heap. Your system may crash or OOM during the build.",
+ "If you are using Docker Desktop, increase the memory limit in settings.",
+ ].join("\n");
+ // Private GitHub-hosted ubuntu runners advertise ~7–8 GiB. This guard is a
+ // local/Docker Desktop safety rail; fail closed only outside CI.
+ if (process.env.CI === "true" || process.env.GITHUB_ACTIONS === "true") {
+ console.warn(message);
+ console.warn("Continuing because CI/GITHUB_ACTIONS is set.");
+ } else {
+ console.error(message);
+ process.exit(1);
+ }
}
const expectedProjectId = localProjectId(projectRoot);
const identityPath = "/api/local-project-id";
diff --git a/tests/guard-next-build-contract.test.ts b/tests/guard-next-build-contract.test.ts
new file mode 100644
index 0000000000..4d3e277b89
--- /dev/null
+++ b/tests/guard-next-build-contract.test.ts
@@ -0,0 +1,21 @@
+import { readFileSync } from "node:fs";
+import path from "node:path";
+import { describe, expect, it } from "vitest";
+
+const guardSource = readFileSync(path.join(process.cwd(), "scripts/guard-next-build.mjs"), "utf8");
+
+describe("guard-next-build RAM floor", () => {
+ it("keeps the local <10 GiB fail-closed rail", () => {
+ expect(guardSource).toContain("totalmem()");
+ expect(guardSource).toContain("10 * 1024 * 1024 * 1024");
+ expect(guardSource).toMatch(/process\.exit\(1\)/);
+ });
+
+ it("does not fail closed on hosted CI runners that report ~7–8 GiB", () => {
+ // Private GitHub-hosted ubuntu runners are documented around 7 GB; the
+ // guard message is a local/Docker Desktop warning, not a CI blocker.
+ expect(guardSource).toContain('process.env.CI === "true"');
+ expect(guardSource).toContain('process.env.GITHUB_ACTIONS === "true"');
+ expect(guardSource).toContain("Continuing because CI/GITHUB_ACTIONS is set.");
+ });
+});
From de8e8b83b46cd36ccd49f588b3c78b3e83a916d3 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 04:33:29 +0000
Subject: [PATCH 08/16] docs(ledger): record PR #1294 Build RAM-guard CI fix
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index df94cd5bdd..4249720d3b 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1216,3 +1216,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1291 / `claude/issues-upload-limit-sync-123366` | `af140d11d5ca23dee0d8705d9933db967fc8c404` | Babysit closeout tip | Supersedes prior #1291 row at `16075581` after appending the conflict/Bugbot ledger record. Product delta vs main unchanged: `#085` upload-limit capture only. merge-tree CLEAN; awaiting exact-head required checks. | ledger append + check:branch-review-ledger PASS; prior tip hosted PR required SUCCESS. |
| 2026-07-28 | PR #1302 / `claude/maturity-ledger-entry` | `64da2c1b34ae101590b8676af12ec6b49c14f0ad` | CI/conflict babysit + Codex threads + Bugbot | FIXED. Real content conflict with main: `#085` already claimed by upload-limit rec (#1291). Merged origin/main; renumbered maturity backlog to `#086`, bumped `issues:next-id` to `087`, added recommended-queue order 29 with go-ahead/RAG/provider stop rules. X7/M1 work orders arrived via main #1299. Codex P2 threads replied + resolved. Bugbot: zero cursor[bot] findings. CircleCI stub from main clears prior "no configuration" status error. | merge-tree CLEAN; prettier + docs:check-links + docs:check-scripts PASS; awaiting exact-head hosted CI; no provider-backed checks. |
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `9ac401fd3f9997c1a18c83dc2e5190ff02fcad63` | CI babysit re-request | FIXED drift. Hosted required checks already green on prior tip `10157dec`; GitHub DIRTY was staleness (merge-tree CLEAN, 31 behind). Merged origin/main cleanly; unique delta unchanged (mockup h3→h2 + diagnosis-detail S: clone locator). Bugbot: 0 unresolved cursor[bot] threads; no P0/P1. | Prior hosted Production UI/PR required PASS on `10157dec`; merge-tree CLEAN; prettier check PASS; no provider-backed checks. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `567d7b74c49a9a1f4f4d195bb5538813f63e8b2e` | Build CI RAM-guard fix | FIXED. After main sync, Build failed because guard-next-build exit(1) on private GHA ~7.8 GiB hosts; guard is a local/Docker rail. CI/GITHUB_ACTIONS now warn-and-continue; local still fail-closed. Unique product delta unchanged. Bugbot: 0 threads. | Focused vitest guard-next-build-contract 2/2; prior Production UI green on `10157dec`; no provider-backed checks. |
From da6cc04bc3a3823db4d2f14581ceec15f7757b80 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 04:34:38 +0000
Subject: [PATCH 09/16] fix(a11y): keep evidence popup titles nested as h3
Codex P2: promoting sheet/modal titles to h2 under Section h2
flattened the mockup outline (same hierarchy regression recorded
on PR #1200). Restore h3 child titles and pin the contract in Vitest.
Co-authored-by: BigSimmo
---
.../mockups/answer-evidence-popups/page.tsx | 8 +++---
...r-evidence-popups-heading-contract.test.ts | 28 +++++++++++++++++++
2 files changed, 32 insertions(+), 4 deletions(-)
create mode 100644 tests/answer-evidence-popups-heading-contract.test.ts
diff --git a/src/app/mockups/answer-evidence-popups/page.tsx b/src/app/mockups/answer-evidence-popups/page.tsx
index b267c11eaf..e4e67cb459 100644
--- a/src/app/mockups/answer-evidence-popups/page.tsx
+++ b/src/app/mockups/answer-evidence-popups/page.tsx
@@ -279,7 +279,7 @@ function MobileSheetFrame({
-
{title}
+
{title}
{description}
@@ -609,7 +609,7 @@ function DesktopEvidenceModal() {
-
Evidence
+
Evidence
Source-backed
@@ -639,7 +639,7 @@ function TableDialog() {
-
Clozapine monitoring table
+
Clozapine monitoring table
Expanded from visual evidence. Use the source PDF for final verification.
@@ -662,7 +662,7 @@ function WeakEvidencePopup() {
-
Evidence support is limited
+
Evidence support is limited
Do not copy into notes
diff --git a/tests/answer-evidence-popups-heading-contract.test.ts b/tests/answer-evidence-popups-heading-contract.test.ts
new file mode 100644
index 0000000000..87daec0a3a
--- /dev/null
+++ b/tests/answer-evidence-popups-heading-contract.test.ts
@@ -0,0 +1,28 @@
+import { readFileSync } from "node:fs";
+import path from "node:path";
+import { describe, expect, it } from "vitest";
+
+const pageSource = readFileSync(path.join(process.cwd(), "src/app/mockups/answer-evidence-popups/page.tsx"), "utf8");
+
+describe("answer-evidence-popups heading hierarchy", () => {
+ it("keeps Section titles at h2 and nested popup/sheet titles at h3", () => {
+ // Gallery sections own the h2 outline; popup/sheet frames nest under them.
+ // Promoting those child titles to h2 flattens the accessibility tree
+ // (confirmed as a hierarchy regression on PR #1200).
+ expect(pageSource).toMatch(
+ /function Section\([\s\S]*?
\{title\}<\/h2>/,
+ );
+ expect(pageSource).toMatch(
+ /function MobileSheetFrame\([\s\S]*?\{title\}<\/h3>/,
+ );
+ expect(pageSource).toMatch(
+ /function DesktopEvidenceModal\([\s\S]*?Evidence<\/h3>/,
+ );
+ expect(pageSource).toMatch(
+ /function TableDialog\([\s\S]*?Clozapine monitoring table<\/h3>/,
+ );
+ expect(pageSource).toMatch(
+ /function WeakEvidencePopup\([\s\S]*?Evidence support is limited<\/h3>/,
+ );
+ });
+});
From c87195b74c5bfb6b2a5d388db10b4ecedcdb287f Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 04:34:38 +0000
Subject: [PATCH 10/16] docs(ledger): record PR #1294 Codex heading hierarchy
fix
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index 4249720d3b..bb6dcc2924 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1217,3 +1217,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1302 / `claude/maturity-ledger-entry` | `64da2c1b34ae101590b8676af12ec6b49c14f0ad` | CI/conflict babysit + Codex threads + Bugbot | FIXED. Real content conflict with main: `#085` already claimed by upload-limit rec (#1291). Merged origin/main; renumbered maturity backlog to `#086`, bumped `issues:next-id` to `087`, added recommended-queue order 29 with go-ahead/RAG/provider stop rules. X7/M1 work orders arrived via main #1299. Codex P2 threads replied + resolved. Bugbot: zero cursor[bot] findings. CircleCI stub from main clears prior "no configuration" status error. | merge-tree CLEAN; prettier + docs:check-links + docs:check-scripts PASS; awaiting exact-head hosted CI; no provider-backed checks. |
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `9ac401fd3f9997c1a18c83dc2e5190ff02fcad63` | CI babysit re-request | FIXED drift. Hosted required checks already green on prior tip `10157dec`; GitHub DIRTY was staleness (merge-tree CLEAN, 31 behind). Merged origin/main cleanly; unique delta unchanged (mockup h3→h2 + diagnosis-detail S: clone locator). Bugbot: 0 unresolved cursor[bot] threads; no P0/P1. | Prior hosted Production UI/PR required PASS on `10157dec`; merge-tree CLEAN; prettier check PASS; no provider-backed checks. |
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `567d7b74c49a9a1f4f4d195bb5538813f63e8b2e` | Build CI RAM-guard fix | FIXED. After main sync, Build failed because guard-next-build exit(1) on private GHA ~7.8 GiB hosts; guard is a local/Docker rail. CI/GITHUB_ACTIONS now warn-and-continue; local still fail-closed. Unique product delta unchanged. Bugbot: 0 threads. | Focused vitest guard-next-build-contract 2/2; prior Production UI green on `10157dec`; no provider-backed checks. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `da6cc04bc3a3823db4d2f14581ceec15f7757b80` | Codex P2 heading hierarchy | FIXED. Reverted mockup popup/sheet titles h2→h3 under Section h2 (hierarchy regression; same finding as PR #1200). Added answer-evidence-popups-heading-contract. Retained CI fixes: diagnosis-detail S: locator + Build RAM-guard CI warn. | Vitest heading+guard contracts 3/3; no provider-backed checks. |
From 908181ea98390ba18ece86c2057fb1f1ef5c1706 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 04:38:38 +0000
Subject: [PATCH 11/16] fix(ci): allow RAM guard warn path in Docker image
builds
Container app-image failed for the same <10 GiB host floor: buildx
does not set CI/GITHUB_ACTIONS. Detect DOCKER_BUILD=1 and /.dockerenv,
set DOCKER_BUILD in the app Dockerfile build stage, and keep local
fail-closed behavior.
Co-authored-by: BigSimmo
---
Dockerfile | 5 ++++-
scripts/guard-next-build.mjs | 18 ++++++++++++++----
tests/guard-next-build-contract.test.ts | 11 +++++++----
3 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 6ccf8854e8..d50ee51199 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -41,7 +41,10 @@ ARG NEXT_PUBLIC_MAX_UPLOAD_MB=
ENV NEXT_PUBLIC_SUPABASE_URL=${NEXT_PUBLIC_SUPABASE_URL}
ENV NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=${NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY}
ENV NEXT_PUBLIC_MAX_UPLOAD_MB=${NEXT_PUBLIC_MAX_UPLOAD_MB}
-# The repo build script allocates an 8 GiB heap; give the builder >= 10 GiB.
+# Image builds often land on hosts that report <10 GiB. guard-next-build treats
+# DOCKER_BUILD=1 (and /.dockerenv) like CI and warns instead of fail-closing the
+# local RAM rail. Prefer builders with headroom when available.
+ENV DOCKER_BUILD=1
RUN npm run build
FROM node:24-bookworm-slim AS prod-deps
diff --git a/scripts/guard-next-build.mjs b/scripts/guard-next-build.mjs
index 2615dd3125..913b0546cf 100644
--- a/scripts/guard-next-build.mjs
+++ b/scripts/guard-next-build.mjs
@@ -1,4 +1,5 @@
#!/usr/bin/env node
+import { existsSync } from "node:fs";
import http from "node:http";
import path from "node:path";
import os from "node:os";
@@ -7,6 +8,17 @@ import { appName, localProjectId, projectPortEnd, stableProjectPort } from "../s
const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
+function isHostedOrContainerBuild() {
+ // Private GitHub-hosted runners and image builds often report ~7–8 GiB.
+ // This RAM floor is a local/Docker Desktop safety rail only.
+ return (
+ process.env.CI === "true" ||
+ process.env.GITHUB_ACTIONS === "true" ||
+ process.env.DOCKER_BUILD === "1" ||
+ existsSync("/.dockerenv")
+ );
+}
+
const totalRamBytes = os.totalmem();
const tenGiB = 10 * 1024 * 1024 * 1024;
if (totalRamBytes < tenGiB) {
@@ -15,11 +27,9 @@ if (totalRamBytes < tenGiB) {
"Building Next.js locally requires an 8 GiB Node heap. Your system may crash or OOM during the build.",
"If you are using Docker Desktop, increase the memory limit in settings.",
].join("\n");
- // Private GitHub-hosted ubuntu runners advertise ~7–8 GiB. This guard is a
- // local/Docker Desktop safety rail; fail closed only outside CI.
- if (process.env.CI === "true" || process.env.GITHUB_ACTIONS === "true") {
+ if (isHostedOrContainerBuild()) {
console.warn(message);
- console.warn("Continuing because CI/GITHUB_ACTIONS is set.");
+ console.warn("Continuing because this is a CI or container image build.");
} else {
console.error(message);
process.exit(1);
diff --git a/tests/guard-next-build-contract.test.ts b/tests/guard-next-build-contract.test.ts
index 4d3e277b89..346b818639 100644
--- a/tests/guard-next-build-contract.test.ts
+++ b/tests/guard-next-build-contract.test.ts
@@ -11,11 +11,14 @@ describe("guard-next-build RAM floor", () => {
expect(guardSource).toMatch(/process\.exit\(1\)/);
});
- it("does not fail closed on hosted CI runners that report ~7–8 GiB", () => {
- // Private GitHub-hosted ubuntu runners are documented around 7 GB; the
- // guard message is a local/Docker Desktop warning, not a CI blocker.
+ it("does not fail closed on hosted CI or container image builds", () => {
+ // Private GitHub-hosted ubuntu runners and Docker buildx hosts often report
+ // ~7–8 GiB; the guard message is a local/Docker Desktop warning only.
+ expect(guardSource).toContain("function isHostedOrContainerBuild");
expect(guardSource).toContain('process.env.CI === "true"');
expect(guardSource).toContain('process.env.GITHUB_ACTIONS === "true"');
- expect(guardSource).toContain("Continuing because CI/GITHUB_ACTIONS is set.");
+ expect(guardSource).toContain('process.env.DOCKER_BUILD === "1"');
+ expect(guardSource).toContain('existsSync("/.dockerenv")');
+ expect(guardSource).toContain("Continuing because this is a CI or container image build.");
});
});
From f5ad6b622c5b6f310b976ffa5efba2ef3b96b96e Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 04:38:38 +0000
Subject: [PATCH 12/16] docs(ledger): record PR #1294 Docker RAM-guard fix
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index bb6dcc2924..e9b25d5cce 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1218,3 +1218,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `9ac401fd3f9997c1a18c83dc2e5190ff02fcad63` | CI babysit re-request | FIXED drift. Hosted required checks already green on prior tip `10157dec`; GitHub DIRTY was staleness (merge-tree CLEAN, 31 behind). Merged origin/main cleanly; unique delta unchanged (mockup h3→h2 + diagnosis-detail S: clone locator). Bugbot: 0 unresolved cursor[bot] threads; no P0/P1. | Prior hosted Production UI/PR required PASS on `10157dec`; merge-tree CLEAN; prettier check PASS; no provider-backed checks. |
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `567d7b74c49a9a1f4f4d195bb5538813f63e8b2e` | Build CI RAM-guard fix | FIXED. After main sync, Build failed because guard-next-build exit(1) on private GHA ~7.8 GiB hosts; guard is a local/Docker rail. CI/GITHUB_ACTIONS now warn-and-continue; local still fail-closed. Unique product delta unchanged. Bugbot: 0 threads. | Focused vitest guard-next-build-contract 2/2; prior Production UI green on `10157dec`; no provider-backed checks. |
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `da6cc04bc3a3823db4d2f14581ceec15f7757b80` | Codex P2 heading hierarchy | FIXED. Reverted mockup popup/sheet titles h2→h3 under Section h2 (hierarchy regression; same finding as PR #1200). Added answer-evidence-popups-heading-contract. Retained CI fixes: diagnosis-detail S: locator + Build RAM-guard CI warn. | Vitest heading+guard contracts 3/3; no provider-backed checks. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `908181ea98390ba18ece86c2057fb1f1ef5c1706` | Container app-image RAM-guard | FIXED. Buildx image build hit same <10 GiB guard (no CI env inside RUN). Extended warn path to DOCKER_BUILD=1 + /.dockerenv; Dockerfile sets DOCKER_BUILD=1. Local still fail-closed. | Focused vitest guard contract 2/2; hosted Build already PASS after prior CI bypass; no provider-backed checks. |
From e5543dc69efc4d088143e95d4b732506822ba240 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 04:47:03 +0000
Subject: [PATCH 13/16] docs(ledger): record PR #1294 main conflict resolution
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index 8a4f02dd3f..a0f7808686 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1221,3 +1221,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `908181ea98390ba18ece86c2057fb1f1ef5c1706` | Container app-image RAM-guard | FIXED. Buildx image build hit same <10 GiB guard (no CI env inside RUN). Extended warn path to DOCKER_BUILD=1 + /.dockerenv; Dockerfile sets DOCKER_BUILD=1. Local still fail-closed. | Focused vitest guard contract 2/2; hosted Build already PASS after prior CI bypass; no provider-backed checks. |
| 2026-07-28 | PR #1307 / `claude/rag-019-fallback-guard` | `0827d65d12f5c25faffdf4ebca036f00fc2512cd` | CI babysit + Bugbot | FIXED. Build failed because `guard-next-build.mjs` hard-failed when GitHub runners reported 7.8 GiB RAM (<10 GiB); prior tip Build succeeded on a larger runner (flake). Softened to warn-and-continue under CI/GITHUB_ACTIONS; local/Docker still hard-fail. PR policy FAIL: missing `## Clinical Governance Preflight` — body updated. Bugbot: zero cursor[bot] findings; reviewThreads=0 (nothing to resolve). merge-tree clean vs origin/main. | Unit: guard-next-build + #019 fallback + extractive-answer-formatting 137/137; prettier/eslint clean on touched files; pr-policy evaluate ok; no provider checks. |
| 2026-07-28 | PR #1307 / `claude/rag-019-fallback-guard` | `2e5edfc6c9fcc0bb75674b179607888bbf872b91` | PR policy body synced + template removed | Sync PR policy body SUCCESS applied Clinical Governance Preflight (7/7). Deleted temporary `PR_POLICY_BODY.md`. Awaiting Build/PR policy/PR required on this tip. | Hosted Sync SUCCESS; no provider checks. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `a0df13f45cffb769b852e55bc44b6891b7fd80e7` | Main conflict resolve + CodeRabbit | FIXED. Merged #1307; took main ALLOW_LOW_RAM_BUILD RAM-guard (dropped DOCKER_BUILD approach). Tightened answer-evidence heading contract to component-scoped bodies (rejects sibling h2). Codex P2 already resolved. | Vitest heading+guard 4/4; merge-tree CLEAN; no provider-backed checks. |
From ce25f84bc0e029039800508796be0814b4c17296 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 05:05:08 +0000
Subject: [PATCH 14/16] docs(ledger): record PR #1294 green closeout after
conflict resolve
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index 8c27155947..8b134bc0ca 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1226,3 +1226,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1307 / `claude/rag-019-fallback-guard` | `0827d65d12f5c25faffdf4ebca036f00fc2512cd` | CI babysit + Bugbot | FIXED. Build failed because `guard-next-build.mjs` hard-failed when GitHub runners reported 7.8 GiB RAM (<10 GiB); prior tip Build succeeded on a larger runner (flake). Softened to warn-and-continue under CI/GITHUB_ACTIONS; local/Docker still hard-fail. PR policy FAIL: missing `## Clinical Governance Preflight` — body updated. Bugbot: zero cursor[bot] findings; reviewThreads=0 (nothing to resolve). merge-tree clean vs origin/main. | Unit: guard-next-build + #019 fallback + extractive-answer-formatting 137/137; prettier/eslint clean on touched files; pr-policy evaluate ok; no provider checks. |
| 2026-07-28 | PR #1307 / `claude/rag-019-fallback-guard` | `2e5edfc6c9fcc0bb75674b179607888bbf872b91` | PR policy body synced + template removed | Sync PR policy body SUCCESS applied Clinical Governance Preflight (7/7). Deleted temporary `PR_POLICY_BODY.md`. Awaiting Build/PR policy/PR required on this tip. | Hosted Sync SUCCESS; no provider checks. |
| 2026-07-28 | PR #1309 / `claude/gates-skill` | `7dfe103bfa408052c9e899211b8373c7ccb708d3` | Conflict sync + Codex/CodeRabbit + Bugbot | FIXED. GitHub CONFLICTING/DIRTY was main-staleness only (`merge-tree` clean); merged `origin/main`. Codex P2: skill wrongly claimed `verify:ui` exits 0 under heavy-lock contention — corrected to 15m queue then exit 1 via `run-playwright.mjs`; mirrored in AGENTS.md. CodeRabbit: marked `${PIPESTATUS[0]}` as Bash-specific. Bugbot: zero `cursor[bot]` findings; confirmed same P2. No CI failures on prior tip. | `prettier --check` PASS; `docs:check-links` 1287 PASS; no provider-backed checks. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `62ddd24dc8ad223cde67373ea35e18aee6065057` | CI green closeout | APPROVE. Hosted Production UI + PR required PASS on product tip `e5543dc6`. Codex/CodeRabbit threads resolved (0 open). Unique delta: diagnosis-detail S: locator + heading hierarchy contract. RAM-guard owned by main #1307. | Hosted Static/Unit/Safety/Advisory/Production UI/PR required PASS; Build/Container skipped (unchanged); Bugbot clean; no provider-backed checks. |
From f64fa84a8010008917619c16aac79e4f172a70ff Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 05:05:30 +0000
Subject: [PATCH 15/16] docs(ledger): dedupe exact #1307 rows after merge=union
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index 8b134bc0ca..cdc54d1861 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1223,7 +1223,5 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1307 / `claude/rag-019-fallback-guard` | `2e5edfc6c9fcc0bb75674b179607888bbf872b91` | PR policy body synced + template removed | Sync PR policy body SUCCESS applied Clinical Governance Preflight (7/7). Deleted temporary `PR_POLICY_BODY.md`. Awaiting Build/PR policy/PR required on this tip. | Hosted Sync SUCCESS; no provider checks. |
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `a0df13f45cffb769b852e55bc44b6891b7fd80e7` | Main conflict resolve + CodeRabbit | FIXED. Merged #1307; took main ALLOW_LOW_RAM_BUILD RAM-guard (dropped DOCKER_BUILD approach). Tightened answer-evidence heading contract to component-scoped bodies (rejects sibling h2). Codex P2 already resolved. | Vitest heading+guard 4/4; merge-tree CLEAN; no provider-backed checks. |
| 2026-07-28 | PR #1306 / `claude/frontend-checklist-skills-ece5e6` | `3e6584413f15cdc2c201b8ab123191b38f5d8042` | External skill precedence + evidence rules; CodeRabbit closeout | MERGED (squash); remote branch auto-deleted. Added `External skill precedence` and `Evidence and calibration are never compressed` to AGENTS.md after installing 390 user-global Front-End Checklist skills plus the caveman output-style plugin. CodeRabbit raised 3 findings; its autofix landed 2 pre-merge (WCAG target-size citation corrected to 2.5.5 AAA 44x44 vs 2.5.8 AA 24x24; third-party ref verification deferred to the provider boundary). The summary-level precedence-scoping nitpick had no inline thread, was skipped by autofix, and landed separately in PR #1308. | prettier PASS; docs:check-links 1274 refs PASS; docs:check-index PASS; verify:cheap BLOCKED at check:installed-lock-parity (worktree next 16.2.10 vs locked 16.2.11) so lint/typecheck/test never ran; no provider-backed checks. |
-| 2026-07-28 | PR #1307 / `claude/rag-019-fallback-guard` | `0827d65d12f5c25faffdf4ebca036f00fc2512cd` | CI babysit + Bugbot | FIXED. Build failed because `guard-next-build.mjs` hard-failed when GitHub runners reported 7.8 GiB RAM (<10 GiB); prior tip Build succeeded on a larger runner (flake). Softened to warn-and-continue under CI/GITHUB_ACTIONS; local/Docker still hard-fail. PR policy FAIL: missing `## Clinical Governance Preflight` — body updated. Bugbot: zero cursor[bot] findings; reviewThreads=0 (nothing to resolve). merge-tree clean vs origin/main. | Unit: guard-next-build + #019 fallback + extractive-answer-formatting 137/137; prettier/eslint clean on touched files; pr-policy evaluate ok; no provider checks. |
-| 2026-07-28 | PR #1307 / `claude/rag-019-fallback-guard` | `2e5edfc6c9fcc0bb75674b179607888bbf872b91` | PR policy body synced + template removed | Sync PR policy body SUCCESS applied Clinical Governance Preflight (7/7). Deleted temporary `PR_POLICY_BODY.md`. Awaiting Build/PR policy/PR required on this tip. | Hosted Sync SUCCESS; no provider checks. |
| 2026-07-28 | PR #1309 / `claude/gates-skill` | `7dfe103bfa408052c9e899211b8373c7ccb708d3` | Conflict sync + Codex/CodeRabbit + Bugbot | FIXED. GitHub CONFLICTING/DIRTY was main-staleness only (`merge-tree` clean); merged `origin/main`. Codex P2: skill wrongly claimed `verify:ui` exits 0 under heavy-lock contention — corrected to 15m queue then exit 1 via `run-playwright.mjs`; mirrored in AGENTS.md. CodeRabbit: marked `${PIPESTATUS[0]}` as Bash-specific. Bugbot: zero `cursor[bot]` findings; confirmed same P2. No CI failures on prior tip. | `prettier --check` PASS; `docs:check-links` 1287 PASS; no provider-backed checks. |
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `62ddd24dc8ad223cde67373ea35e18aee6065057` | CI green closeout | APPROVE. Hosted Production UI + PR required PASS on product tip `e5543dc6`. Codex/CodeRabbit threads resolved (0 open). Unique delta: diagnosis-detail S: locator + heading hierarchy contract. RAM-guard owned by main #1307. | Hosted Static/Unit/Safety/Advisory/Production UI/PR required PASS; Build/Container skipped (unchanged); Bugbot clean; no provider-backed checks. |
From 495ef362c418ef9dcc87506ee70f764e0fbc88a5 Mon Sep 17 00:00:00 2001
From: Cursor Agent
Date: Tue, 28 Jul 2026 05:05:30 +0000
Subject: [PATCH 16/16] docs(ledger): record PR #1294 dedupe closeout
Co-authored-by: BigSimmo
---
docs/branch-review-ledger.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md
index cdc54d1861..9442bb82fc 100644
--- a/docs/branch-review-ledger.md
+++ b/docs/branch-review-ledger.md
@@ -1225,3 +1225,4 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-28 | PR #1306 / `claude/frontend-checklist-skills-ece5e6` | `3e6584413f15cdc2c201b8ab123191b38f5d8042` | External skill precedence + evidence rules; CodeRabbit closeout | MERGED (squash); remote branch auto-deleted. Added `External skill precedence` and `Evidence and calibration are never compressed` to AGENTS.md after installing 390 user-global Front-End Checklist skills plus the caveman output-style plugin. CodeRabbit raised 3 findings; its autofix landed 2 pre-merge (WCAG target-size citation corrected to 2.5.5 AAA 44x44 vs 2.5.8 AA 24x24; third-party ref verification deferred to the provider boundary). The summary-level precedence-scoping nitpick had no inline thread, was skipped by autofix, and landed separately in PR #1308. | prettier PASS; docs:check-links 1274 refs PASS; docs:check-index PASS; verify:cheap BLOCKED at check:installed-lock-parity (worktree next 16.2.10 vs locked 16.2.11) so lint/typecheck/test never ran; no provider-backed checks. |
| 2026-07-28 | PR #1309 / `claude/gates-skill` | `7dfe103bfa408052c9e899211b8373c7ccb708d3` | Conflict sync + Codex/CodeRabbit + Bugbot | FIXED. GitHub CONFLICTING/DIRTY was main-staleness only (`merge-tree` clean); merged `origin/main`. Codex P2: skill wrongly claimed `verify:ui` exits 0 under heavy-lock contention — corrected to 15m queue then exit 1 via `run-playwright.mjs`; mirrored in AGENTS.md. CodeRabbit: marked `${PIPESTATUS[0]}` as Bash-specific. Bugbot: zero `cursor[bot]` findings; confirmed same P2. No CI failures on prior tip. | `prettier --check` PASS; `docs:check-links` 1287 PASS; no provider-backed checks. |
| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `62ddd24dc8ad223cde67373ea35e18aee6065057` | CI green closeout | APPROVE. Hosted Production UI + PR required PASS on product tip `e5543dc6`. Codex/CodeRabbit threads resolved (0 open). Unique delta: diagnosis-detail S: locator + heading hierarchy contract. RAM-guard owned by main #1307. | Hosted Static/Unit/Safety/Advisory/Production UI/PR required PASS; Build/Container skipped (unchanged); Bugbot clean; no provider-backed checks. |
+| 2026-07-28 | PR #1294 / `execute-typography-fixes-clean-2` | `f64fa84a8010008917619c16aac79e4f172a70ff` | Ledger dedupe after main sync | Removed 2 exact duplicate #1307 rows introduced by merge=union during main sync (kept first copies). Hosted required checks green on prior product tip `e5543dc6`; this tip is ledger hygiene + docs-only main sync. | `check:branch-review-ledger` PASS after dedupe; no provider-backed checks. |