Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
88deecf
fix(audit): apply safe audit remediation from current main
BigSimmo Jul 28, 2026
50cc1b2
fix(ui): apply mode-home-template responsive breakpoint fix
BigSimmo Jul 28, 2026
aecfdcb
Merge origin/main to resolve stale base and prevent regressions
BigSimmo Jul 28, 2026
8a76eb8
Merge origin/main into fix/audit-remediation-from-main
cursoragent Jul 28, 2026
1158567
fix(test): align mode-home grid contract with sm breakpoint
cursoragent Jul 28, 2026
4febd91
docs(ledger): record PR #1295 CI fix and Bugbot triage
cursoragent Jul 28, 2026
5714bf6
fix(ui): pair mode-home stack separators with sm grid breakpoint
cursoragent Jul 28, 2026
537fe1d
docs(ledger): record PR #1295 separator pairing follow-up
cursoragent Jul 28, 2026
862be5a
fix(ci): install matrix browser in cross-browser Playwright workflow
cursoragent Jul 28, 2026
7582bf7
docs(ledger): record Playwright matrix browser-install fix
cursoragent Jul 28, 2026
4e10b1c
fix(ci): harden new audit workflows and hosted build RAM guard
cursoragent Jul 28, 2026
7d6f95e
docs(ledger): record CodeRabbit workflow hardening for PR #1295
cursoragent Jul 28, 2026
3ff686e
Merge origin/main into fix/audit-remediation-from-main
cursoragent Jul 28, 2026
1f3a9ff
docs(ledger): record PR #1295 main sync and container-images fix
cursoragent Jul 28, 2026
e3ac9dd
Merge remote-tracking branch 'origin/main' into run-pr-sweep/1295
BigSimmo Jul 28, 2026
4b83ad2
fix: remove redundant audit remediation changes
BigSimmo Jul 28, 2026
3616860
fix: frame tablet mode actions
BigSimmo Jul 28, 2026
2d474c9
Merge remote-tracking branch 'origin/main' into codex/pr1295-finalize
BigSimmo Jul 28, 2026
072969c
docs: record final PR 1295 review
BigSimmo Jul 28, 2026
0400490
docs: normalize PR 1295 ledger record
BigSimmo Jul 28, 2026
46d683a
test: await settled search results owner
BigSimmo Jul 28, 2026
68840e4
Merge remote-tracking branch 'origin/main' into codex/pr1295-finalize
BigSimmo Jul 28, 2026
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
7 changes: 7 additions & 0 deletions docs/branch-review-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -1138,6 +1138,10 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie
| 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 #1295 / `fix/audit-remediation-from-main` | `11585678d28a9f399217429972e528b89b7f2466` | CI fix + main sync + Bugbot | FIXED. Unit coverage failed because therapy-compass contract still asserted `lg:grid-cols-[repeat(auto-fit,minmax(15rem,1fr))]` after intentional `sm:` breakpoint change in mode-home-template. Updated contract to `sm:`. GitHub CONFLICTING/DIRTY was stale base (30 behind); merge-tree clean; merged origin/main (ledger union). Bugbot: zero cursor[bot] review findings/threads. No unresolved review comments to resolve. | Focused vitest therapy-compass-responsive-contract 10/10; merge origin/main CLEAN; no provider-backed checks. |
| 2026-07-28 | PR #1295 / `fix/audit-remediation-from-main` | `5714bf6ceb9d85e18e895b34ec71dcca64837797` | Separator pairing follow-up after sm grid | FIXED. Coherent follow-up to the sm:grid-cols auto-fit change: stack separators are now `max-sm:border-t` (was unconditional `border-t`), matching the phone-only stack and avoiding double borders once `lg:border` card chrome applies. Contract asserts sm grid + max-sm separator and rejects stale lg grid token. | Focused vitest therapy-compass-responsive-contract 10/10; verify:cheap PASS (405 files / 4114 passed); merge-tree CLEAN; Bugbot 0 findings; no provider checks. |
| 2026-07-28 | PR #1295 / `fix/audit-remediation-from-main` | `862be5a843708360ad0d67239429d1d09405e570` | Codex P1: Playwright matrix browser install | FIXED. Cross-browser `playwright.yml` stopped using chromium-only `setup-ui-e2e`; installs `matrix.project` + deps with per-browser cache. Also dispositioned the Codex P1 about the responsive contract (already fixed earlier on tip). | check:github-actions PASS; focused vitest therapy-compass 10/10; no provider checks. |
| 2026-07-28 | PR #1295 / `fix/audit-remediation-from-main` | `4e10b1c017e40ee00649735dc4a771b720db193b` | CodeRabbit workflow hardening + bundle-size RAM flake | FIXED. bundle-size paths+permissions; nightly-drift secret scoping + main-only live steps; GITHUB_ACTIONS warn-only for guard-next-build RAM check; audit-plan Batch 2/approval-gate text repaired. mode-home max-sm separator already on tip (dispositions CodeRabbit border thread). | check:github-actions PASS; prior verify:cheap PASS; no provider checks. |
| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `30596680a1c0026ea83c8fab0da2cd303106e1af` | Merge conflict + CodeRabbit/Codex + Bugbot closeout | FIXED. Merged origin/main (was CONFLICTING). Removed undersized `.content-visibility-auto` (80px) in favor of shared `.content-auto` (auto 320px); dropped persistent broad `will-change: transform` so fixed composer ancestors stay viewport-anchored (main's `data-reserve-transitioning` padding-bottom scope retained); kept semantic z-* utilities + AccessibleTable `@container`/`flex flex-col`. Updated mode-menu source-contract test for `z-modal`. Resolved CodeRabbit + Codex threads. Local Bugbot: no P0/P1; skipped raising mockup/popover z above token scale (would undo audit). | `npm run test` 4114 passed; prior verify:cheap gates green before test pin fix; no provider-backed checks. |
| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `f333ddc8` | CI Build flake: RAM guard | FIXED. Hosted Build failed on ubuntu-24.04 reporting 7.8 GiB because `guard-next-build.mjs` hard-exited under 10 GiB; successful sibling Build jobs skip that path on larger runners. Warn-only under CI/GITHUB_ACTIONS; keep local hard-fail. Prior tip: Unit/Static/Advisory UI green; review threads resolved. | Hosted Unit/Static/Advisory PASS on 6bafb32d; local full vitest 4114; no provider checks. |
| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `0ab3597fecd1fd7af669c766bf4b66fa725c9936` | CI re-trigger after Docker RAM allow | FIXED app-image path: Dockerfile sets DOCKER_BUILD=1; guard warns under CI/GITHUB_ACTIONS/DOCKER_BUILD/ALLOW_LOW_MEMORY_NEXT_BUILD. Hosted Build/Unit/Static/Advisory/Production UI green on prior tip; app-image failed only on RAM hard-stop before Docker opt-in. | Awaiting exact-head CI after synchronize; no provider checks. |
Expand Down Expand Up @@ -1179,6 +1183,7 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie
| 2026-07-28 | PR #1304 / `fix-test-run-lock` | `7cc32c053c752bef19f3de408a1376428e54af74` | CI babysit: sync main | FIXED. GitHub CONFLICTING/DIRTY was staleness only (`git merge-tree` CLEAN; 7 behind). Merged origin/main. Required CI was already SUCCESS on prior tip `e6b826ed`; no product conflicts. Unique vs main remains knip.json (+ ledger). Bugbot/review threads: none unresolved. | merge-tree CLEAN; merge origin/main; no provider-backed checks. |
| 2026-07-28 | PR #1310 / `claude/branch-review-ledger-fixes-42575f` (merged) | 422e43d86a69c88368454065c2b117f5982a43d6 | prlanded | LANDED as squash 422e43d86. Ledger repair + lookup/append tooling + hardened guard all present on main; guard PASS at 1107 records and repo-hygiene 25/25. Review improved the branch before merge and main is ahead of the authoring branch: findReviews now compares scope exactly (the original substring match would have let a branch-cleanup-deletion-pending row satisfy a branch-cleanup lookup and skip a branch that still needed cleanup), refTokens no longer false-hits on bare parenthetical prose, headMatches accepts an annotated 'sha (squash)' cell and rejects 'n/a - see <sha>', and resolveHead now verifies full-length hex so a mistyped 40-char string cannot become an unmatchable HEAD. Authoring branch was deleted at merge; its unpushed local ledger-record commit was superseded by this row rather than pushed. | npm run check:branch-review-ledger PASS (1107 records) and vitest tests/repo-hygiene.test.ts 25/25 PASS, both run against origin/main after the merge. Pre-merge npm run verify:pr-local PASS on the merged tree (405 files / 4126 tests, build 3.7min). No provider-backed checks run. |
| 2026-07-28 | PR #1305 / execute-audit-remediation-fixes | b101b69631edfe51bcbbc8f6c07e47157fe2c4e8 | CI green closeout after main re-sync | APPROVE for merge by human. Hosted PR required + Production UI PASS on tip after merging origin/main (#1320). MERGEABLE. Unresolved review threads 0. Bugbot-equivalent: no P0/P1/P2 on unique product delta; @cursor review requested. Product delta retained: clinical-notes trust gating answer wipe, SettingsStateProvider wiring, z-index ladder, OverlayProvider/card fixes, phone chrome viewport breakpoints. | Hosted PR policy/Static/Build/Unit/Safety/Advisory/Production UI/PR required PASS on b101b696; check:branch-review-ledger PASS; no provider-backed checks. |
| 2026-07-28 | PR #1295 / `fix/audit-remediation-from-main` | `3ff686e4957f5261c3d23d48e7a8195a60a8c800` | Main sync + container-images RAM guard | FIXED. GitHub CONFLICTING/DIRTY after main advanced 9 commits; real conflict only in `scripts/guard-next-build.mjs`. Kept main's `ALLOW_LOW_RAM_BUILD` / `evaluateNextBuildRamGuard` (+ Dockerfile/docker-image.yml wiring) which unblocks the container-images failure (Docker build lacked GITHUB_ACTIONS so the prior GITHUB_ACTIONS-only soften still hard-failed at 7.8 GiB). | Focused vitest guard-next-build+container-ci+therapy-compass 18/18; check:github-actions + ledger PASS; merge-tree CLEAN post-resolve; no provider checks. |
| 2026-07-28 | PR-1297 | 5c7c4ff8cc92a3af1cd0a65898067272f332809e | PR #1297 full diff vs origin/main | APPROVE after main sync; no high-confidence P0-P2 defects | Local diff review and merge-tree clean; prior exact-head PR required, build, unit coverage, and Production UI passed; new exact-head CI pending |
| 2026-07-28 | PR #1304 / `fix-test-run-lock` | `2abe39506f9f0ceaf8cf638bfa2b6dc37dc0ed2c` | CI babysit: resync main | FIXED. After green PR required on `f7d86c27`, main advanced by 1 commit (#1305); GitHub DIRTY again but `git merge-tree` CLEAN. Merged origin/main. No product conflicts; unique delta still knip.json (+ ledger). | merge-tree CLEAN; hosted PR required SUCCESS on prior tip; no provider-backed checks. |
| 2026-07-28 | PR #1304 / `fix-test-run-lock` | `463e5c0adc77fe722e20376666f5991db3e288d9` | CI babysit closeout | MERGE-READY. Hosted PR required SUCCESS on exact tip; mergeable=MERGEABLE; 0 behind main; merge-tree CLEAN. Unique product delta: knip.json removes unused tailwindcss ignoreDependencies. Prior GitHub DIRTY labels during babysit were main-churn only. | Hosted CI run success on 463e5c0a; no provider-backed checks. |
Expand All @@ -1196,3 +1201,5 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie
| 2026-07-28 | PR #1316 / `claude/top-search-design-mockups-w53znc` | `7b968d695c4545e1677c2e7f136172ef686d0012` | CI/review closeout: loadError split + adoption mode homes | FIXED new Codex P2s. Separated account loadError from mutation error; expanded band adoption to mode href pages + 2-hop reach; prior #024/favourites-counts/therapy-retry threads already resolved. Merge-tree clean vs main (0 behind). Bugbot earlier pass had no P0/P1 on prior WIP. | vitest favourites-account-retry + adoption + hub (10); typecheck; full suite 4232/4 prior tip |
| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `84d846d8d0d168ca2babcc6d699e0a88bb0379c0` | Inspect closeout: sync main + forced-colors scope | FIXED. GitHub CONFLICTING was unpushed main sync (local merge-tree CLEAN, 3 behind on remote tip). Pushed merge. Bugbot P2: removed broad forced-colors `!important` wipe on `.edge-glass-header`/`[aria-selected=true]`/`.surface-raised` (token remap retained; header Canvas fill already earlier). Mockup board `z-[2147483647]` → ladder `z-[100]`. Prior CodeRabbit/Codex threads remain resolved. | lint/typecheck/format:check PASS; vitest 4197; local build PASS; no provider checks. |
| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `f7c34fd7` | Sync main #1297 CSS/motion audit | FIXED. GitHub CONFLICTING after main landed #1297; `git merge origin/main` clean (globals.css + ledger auto-merge). Retained content-auto, scoped forced-colors token remap, mockup z-[100]. Prior tip hosted PR required SUCCESS. | merge-tree CLEAN; focused nav test PASS; no provider checks. |
| 2026-07-28 | PR-1295 | 2d474c973828736bc199c59136018220debb9907 | PR #1295 final remediation vs current origin/main | APPROVE after exact-head CI; redundant workflows and stale audit artifacts removed, tablet action cards aligned | Clean merge-tree; ledger guard PASS; diff check PASS; verify:pr-local dry-run selected runtime, lock parity, format, lint, typecheck, full test, build, and RAG fixture checks; local execution unavailable because node_modules is absent |
| 2026-07-28 | fix/audit-remediation-from-main | 88deecfb988da030d806b1d8c0a4c8349502a5f8 | stale-checkout P0 regression discovery | P0 regressions found in stale file checkouts | Confirmed affected worker/main.ts and tests/reconciliation-preflight.test.ts; superseded by later remediation and current final review |
11 changes: 6 additions & 5 deletions src/components/mode-home-template.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ export function ModeHomeTemplate({
{actions?.length ? (
<section
aria-label={actionsLabel}
className="grid w-full max-w-none overflow-hidden rounded-none border-y border-[color:var(--border)] bg-[color:var(--surface)] shadow-[var(--shadow-card)] lg:max-w-none lg:grid-cols-[repeat(auto-fit,minmax(15rem,1fr))] lg:gap-3 lg:overflow-visible lg:rounded-none lg:border-0 lg:bg-transparent lg:shadow-none"
className="grid w-full max-w-none overflow-hidden rounded-none border-y border-[color:var(--border)] bg-[color:var(--surface)] shadow-[var(--shadow-card)] sm:max-w-none sm:grid-cols-[repeat(auto-fit,minmax(15rem,1fr))] sm:gap-3 sm:overflow-visible sm:rounded-none sm:border-0 sm:bg-transparent sm:shadow-none"
Comment thread
cursor[bot] marked this conversation as resolved.
>
{actions.map((action, index) => {
const ActionIcon = action.icon;
Expand All @@ -286,10 +286,11 @@ export function ModeHomeTemplate({
</>
);
const actionClassName = cn(
"mode-home-action group grid min-h-[4.4rem] w-full grid-cols-[2.5rem_minmax(0,1fr)_1.25rem] items-center gap-3 bg-[color:var(--surface)] px-4 py-3 text-left transition hover:bg-[color:var(--surface-subtle)] focus-visible:relative focus-visible:z-10 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[color:var(--focus)] disabled:cursor-wait disabled:opacity-60 sm:min-h-[4.4rem] sm:grid-cols-[2.5rem_minmax(0,1fr)_1.25rem] sm:px-4 sm:py-3 lg:min-h-[4.75rem] lg:grid-cols-[2.75rem_minmax(0,1fr)_1rem] lg:gap-3 lg:rounded-lg lg:border lg:border-[color:var(--border)] lg:px-5 lg:py-3.5 lg:shadow-[var(--shadow-card)]",
// Phone stack separator only — at lg each action is its own card
// with `lg:border`, so do not zero the card's top edge.
index > 0 && "max-lg:border-t max-lg:border-[color:var(--border)]",
"mode-home-action group grid min-h-[4.4rem] w-full grid-cols-[2.5rem_minmax(0,1fr)_1.25rem] items-center gap-3 bg-[color:var(--surface)] px-4 py-3 text-left transition hover:bg-[color:var(--surface-subtle)] focus-visible:relative focus-visible:z-10 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[color:var(--focus)] disabled:cursor-wait disabled:opacity-60 sm:min-h-[4.4rem] sm:grid-cols-[2.5rem_minmax(0,1fr)_1.25rem] sm:rounded-lg sm:border sm:border-[color:var(--border)] sm:px-4 sm:py-3 sm:shadow-[var(--shadow-card)] lg:min-h-[4.75rem] lg:grid-cols-[2.75rem_minmax(0,1fr)_1rem] lg:gap-3 lg:px-5 lg:py-3.5",
// Phone stack separator only — the action grid becomes multi-column
// at `sm`, where each action also becomes its own bordered card,
// so do not keep a top edge that would double the card border.
index > 0 && "max-sm:border-t max-sm:border-[color:var(--border)]",
);

if (action.href) {
Expand Down
9 changes: 8 additions & 1 deletion tests/therapy-compass-responsive-contract.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,14 @@ describe("Therapy Compass responsive contract", () => {
expect(responsiveStackCount(therapyCardSource)).toBeGreaterThanOrEqual(2);
expect(homeSource).toContain("ModeHomeMain");
expect(homeSource).toContain("ModeHomeTemplate");
expect(modeHomeTemplateSource).toContain("lg:grid-cols-[repeat(auto-fit,minmax(15rem,1fr))]");
// Mode-home action tiles switch to the auto-fit multi-column grid at `sm`
// (not `lg`) so tablet widths get a real grid before the large breakpoint.
// Stack separators must stop at the same breakpoint (`max-sm`) so they do
// not double `lg:border` card chrome once the grid is multi-column.
expect(modeHomeTemplateSource).toContain("sm:grid-cols-[repeat(auto-fit,minmax(15rem,1fr))]");
expect(modeHomeTemplateSource).toContain("max-sm:border-t");
expect(modeHomeTemplateSource).toContain("sm:rounded-lg sm:border");
expect(modeHomeTemplateSource).not.toContain("lg:grid-cols-[repeat(auto-fit,minmax(15rem,1fr))]");
expect(modeHomeTemplateSource).toContain("sm:flex-wrap");
expect(homeSource).toContain("desktopComposerSlotId={modeHomeDesktopComposerSlotId}");
expect(homeSource).toContain("ModeHomeVerificationFooter");
Expand Down
7 changes: 6 additions & 1 deletion tests/ui-tools.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1192,7 +1192,12 @@ test.describe("Clinical KB tools launcher", () => {
{ path: "/differentials?q=acute+confusion&run=1", resultsTestId: "differentials-search-results" },
] as const) {
await gotoLauncher(page, route.path);
await expect(page.getByTestId(route.resultsTestId)).toBeVisible({ timeout: 20_000 });
const results = page.getByTestId(route.resultsTestId);
// A soft navigation can briefly retain the previous reserve-pad owner.
// Wait for the new route to settle to the single-owner contract before
// making a strict visibility assertion.
await expect(results).toHaveCount(1, { timeout: 20_000 });
await expect(results).toBeVisible();
const dock = page.locator("form.answer-footer-search-dock");
await expect(dock, route.path).toBeVisible();
await expect(dock, route.path).not.toHaveAttribute("data-scroll-hidden", "true");
Expand Down
Loading