diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md index a4970074..daac348f 100644 --- a/docs/branch-review-ledger.md +++ b/docs/branch-review-ledger.md @@ -999,5 +999,21 @@ This file is append-only. Never rewrite or delete an existing review record; app | 2026-07-25 | cursor/alias-slot-disjointness-guard-6273 (PR #1215) | `406cf21eb730809fb06df00b1a9299e3462c728a` | prlanded — generalized #030 contracts + ledger #081 | LANDED. Squash `b2d794c532ea8b7e259751005165f69906fcd784`. Adds two table-independent guards to `tests/eval-document-matching.test.ts`: pairwise alias disjointness across every multi-slot eval case, and the structural rule that one document can never satisfy every slot of a multi-slot case. Also opened ledger item #081 for the then-open PR #1196 alias conflict. Content verified by tree comparison against the squash commit (identical); remote branch deleted at merge, local pruned. | `npm run verify:cheap` green; hosted `PR required` green; tree-identity check `git diff b2d794c5 406cf21e` empty. No provider-backed checks. | | 2026-07-25 | cursor/ledger-081-closeout-6273 (PR #1220) | `84e91194ecca7f74c0d70b9e30e1dbd05ab7853f` | prlanded — archive outstanding item #081 | LANDED. Squash `e7e60c6d02a37c1f5958cb97936bd3533c7a2f46`. #081 moved from Open items to Resolved/archive after PR #1196 was closed 2026-07-25 as superseded by #913 / current main; successor #1198 does not touch `src/lib/eval-document-matching.ts`, and the #1215 contracts fail closed on any re-added dual-listed alias. Merge friction worth recording: a `github-actions[bot]` branch-sync merge landed every 10-20 minutes and every bot-authored head produced `action_required` workflow runs, so the three required checks never reported and both normal and `--admin` merges were refused; runs on agent-pushed heads execute normally, so the resolution was to push an own-authored head and merge on green. Content verified by tree comparison against the squash commit (identical); remote branch deleted at merge, local pruned. | `npm run verify:cheap` on merged main: 387 files / 3431 tests pass; hosted CI, SAST, Secret Scan and PR Policy green on `84e91194`; `npm run docs:check-links` pass. No provider-backed checks. | | 2026-07-26 | cursor/global-header-scroll-hide-4fd7 (PR #1222) | `af235c399d8298fcbb28c6e7a990fafdf27d3531` / squash `0b82a826dd7953a14c56491ae9e52f3fae77ee5b` | prlanded after squash merge | MERGED. Cross-breakpoint header hide/reveal; two-dot content diff vs `origin/main` empty; remote branch deleted by `delete_branch_on_merge`. Required contexts (Gitleaks, PR required, PR policy) SUCCESS on the merged head, along with Build, Unit coverage, Static PR checks, Production UI and Advisory UI. `skip-branch-sync` was applied first because repeated pr-branch-sync bot merges left every new head `action_required` (same pattern as #1214). | `gh pr view` MERGED by BigSimmo; `git diff origin/main af235c39` empty; post-merge main is green except `worker-image`, which failed in Set up Docker Buildx on `registry-1.docker.io` context deadline exceeded - a Docker Hub flake unrelated to this UI-only diff, and not a required context. No provider-backed checks. | +| 2026-07-25 | execute-audit-code-remediation (PR #1162) | edcd17a1a77c123d347cbe774e3997bbcc50a059 | CI green after re-trigger | All required checks SUCCESS on tip after agent push (bot sync had left action_required). Scope: merge conflicts, CI unblock, Bugbot P1/P2 fixes, Production UI services referral test. Residual at the time: awaiting human review. | Hosted CI PR required SUCCESS; local Playwright services referral PASS; no provider-backed checks. | +| 2026-07-25 | execute-audit-code-remediation (PR #1162) | 0b4dccc21022dfb0ef82c870c6bd97532545b5d5 | prlanded: merge confirmed | MERGED to main at 0b4dccc2 (merge commit). Product tip edcd17a1 is ancestor of main; content-diff empty except this late ledger closeout (orphaned 3470279f CI-green row recovered here). Review threads resolved; required CI was green at merge. | prlanded content check vs origin/main; hosted PR required SUCCESS on edcd17a1; no provider-backed checks. | +| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `0c2b60a646fd6e7a53cf24f778aa59e3d54ba8aa` | Explicit thorough open-PR review (Antigravity/Cursor queue) | REQUEST CHANGES. P1: `composerChromeFocused` latches forever when focused dock unmounts (no blur), pinning header scroll-hide permanently. P2: reserve-only hide gate ignores offset → near-bottom clamp (stress: 120/224 frames on answer geometry; 584 clamp-risk across sweep). P2s: submit blur to body; autofocus re-fire; non-answer `focus=1` unfixed; untested collapseKind DOM mapping; PR body copy-paste mismatch. | Focused Vitest mobile-composer-reserve + use-hide-on-scroll PASS in detached worktree; Node stress of reserve-only gate; static diff review. No provider/UI browser matrix. | +| 2026-07-25 | PR #1187 / `cursor/fix-mode-switch-lag-22f6` | `113de416970cceea8952df55b3fe41cd7a2ca82a` | Explicit thorough open-PR review | DO NOT MERGE. CONFLICTING on `globals.css` (semantic vs main motion tokens). P1: `isDashboardModeHref` early-return breaks Answer→Documents cross-mode search (`/documents/search` keeps ClinicalDashboard mounted; stale mode + `run=1` can fire unintended answer generation). P2: dock reveal snap; phone dock flash on mode-home nav; forced scrollTop=0 on every pathname; skeleton min-height overshoot. PR body mismatched. | Static path trace through app-modes/search-route-ownership; merge-tree confirmed globals.css conflict. Hosted CI previously red (Static PR + Production UI). No provider calls. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `d63682c7e68b6ea41670a0db2349817c2e29988f` | Explicit thorough Antigravity PR review | DO NOT MERGE. Stale divergent base `faa50e6e3` (not ancestor of main; 434 behind) still carries literal conflict markers in `answer`/`upload` API routes. P1: `minimumCacheTTL: 86400` contradicts private signed-URL cache warning. P1: mutating `svgo` `check:assets` wired into required CI. P2: SignedImage transform query params silent no-op (not SSRF); immutable year-long unversioned icons; orphan AVIF binaries. | Verified markers via `git grep` on head; next.config comment contradiction confirmed. No provider calls. | +| 2026-07-25 | PR #1190 / `remediate-dark-mode-audit` | `00eca49b9b0d7e5fbfa5703a15e9e930963984a6` | Explicit thorough Antigravity PR review | DO NOT MERGE / CLOSE+REDO. P0: deletes `trustGatedAnswerForClinicalNotes` fail-closed clinical notes gate (zero hits on branch; four on main). P1: fake favourites handler; unused theme imports after removing PWA colours; answer route imports nonexistent `@/lib/rag`; upload RPC not on main; deletes security/ingestion-safety tests. Conflict markers cleaned by discarding main's side. | `git grep trustGatedAnswerForClinicalNotes` main vs head; marker scan. No provider calls. | +| 2026-07-25 | PR #1188 / `execute-audit-remediation-plan` | `8b8639113925601e1687bfe4f1f29c44a4308b61` | Explicit thorough Antigravity PR review | DO NOT MERGE. P0: `ClinicalDashboard.tsx` orphaned import body (syntax error). P0: `indexing-v3-agent/utils.ts` has `async export function` + missing `CLINICAL_PHRASE_PATTERN`. Also inherits conflict markers from `faa50e6e3`. Prune commit otherwise clean. | `git show` of broken import + utils.ts; marker scan. No provider calls. | +| 2026-07-25 | PR #1186 / `remediate-repository-audit-findings` | `8637fec36dea6534c02e5b3f12e5a913c10bc455` | Explicit thorough Antigravity PR review | DO NOT MERGE. P0: duplicate `const results` in `scripts/eval-retrieval.ts` (RAG eval surface; needs RAG impact line). P0: skills catalog 32→35 breaks `tests/database-skills.test.ts`. P1: stale-lock heartbeat never fires under `spawnSync`; `skill-create` YAML wrong shape; `sweep-merged-branches` destructive without dry-run + shell interpolation. Inherits conflict markers. | `git show` eval-retrieval duplicate const; marker scan. No provider/eval runs. | +| 2026-07-25 | PR #1185 / `execute-typography-audit-fixes` | `dd641579f4cf54f82de89ef268ac8aa6acb439b5` | Explicit thorough Antigravity PR review | REBASE/CHERRY-PICK ONLY. Intentional delta is safe (5 files, font-stack + mockup heading/truncation). Tree still carries conflict markers from `faa50e6e3` so PR as-is cannot build. Cherry-pick `dd641579` onto current main. | Intentional `git show --stat`; marker scan on head. No provider calls. | +| 2026-07-25 | PR #1162 / `execute-audit-code-remediation` | `692eb248c095d64443a5f9ed0ab7b02394f0ed4b` | Explicit thorough Antigravity PR review | CONDITIONAL after rebase. Substantive upload RPC + batch signed-URL work looks sound (service_role-only SECURITY DEFINER; batch auth equivalent to single-image). Still CONFLICTING vs main (ClinicalDashboard, global-search-shell, mode-home-template, search-scope, tests, pdf extractor). P2: batch rate-limit amplification ×100; mobile back `push` vs `back` semantics; duplicate-hash match via plpgsql message text. CI red on Static/Safety/Unit/UI/Migration. | merge-tree conflict list; static auth/RPC review. No provider/migration replay. | +| 2026-07-25 | PR #1186 / `remediate-repository-audit-findings` | `8637fec36dea6534c02e5b3f12e5a913c10bc455` | Explicit Bugbot PR review (reconfirm same HEAD) | DO NOT MERGE. Reconfirmed prior Antigravity findings; skill count correction 32?36 (not 35). P0: conflict markers in API/UI/tests/docs (tsc TS1185). P0: duplicate `const results` in `scripts/eval-retrieval.ts` (RAG eval; PR body lacks RAG impact line). P0: skills catalog 36 vs test/AGENTS 32. P1: heartbeat under `spawnSync` never runs so 30m mtime stale reclaim can steal live locks; `branch:cleanup` deletes with no dry-run + shell-interpolated branch names; `skill-create` emits non-`interface:` openai.yaml. | Marker grep + tsc sample; catalog count node; static lock/sweep/skill-create review. No provider/eval runs. | +| 2026-07-25 | PR #1186 / `remediate-repository-audit-findings` | `8637fec36dea6534c02e5b3f12e5a913c10bc455` | Cursor Bugbot+review+prlanded (fresh pass, same HEAD) | DO NOT MERGE; NOT LANDED (state=OPEN, mergeable=CONFLICTING, DIRTY). Supersedes same-HEAD Antigravity/Bugbot rows with runtime proof: `tsc` TS1185 on answer/upload routes; head 436 behind / 2 ahead of main; PR policy FAIL. P0 conflict markers in 8 src + 2 tests + scripts/docs; P0 duplicate `const results` eval-retrieval.ts:905/932 (RAG; no RAG impact line); P0 skills catalog 36 vs AGENTS/tests 32. P1 spawnSync blocks lock heartbeat + 30m reclaim steals locks; branch:cleanup no dry-run + shell interpolation; skill-create wrong openai.yaml shape. Do not delete branch. | Bugbot; tsc sample; marker/catalog grep; gh pr view mergeable; no provider/eval/UI runs. | +| 2026-07-25 | PR #1090 / `cursor/fix-phone-dock-edge-1b1d` | `c993975f6b18393a9ff09f9145fd42dbb35df942` (merged as `09028ef217209fceb53f1122ac7738b509bce323`) | prlanded — phone dock edge-to-edge / white-strip fix | MERGED. Content verified on `origin/main` (empty three-dot diff; spot-check dock CSS, ClinicalDashboard inset-0 shell, edge-to-edge Playwright test). No orphaned late commits. Remote branch already deleted; local branch removed. Codex review found no major issues; required CI green at merge. | Hosted required + Production UI green at merge; local maintainability budget + Prettier follow-ups landed in tip `c993975f`. | +| 2026-07-25 | execute-system-audit-remediation (PR #1197) | 16c3184743002af037ee4899b7b8e46e574b8457 | Bugbot + local high-risk review + runtime summaryMode repro; prlanded check | DO NOT MERGE. Not merged (prlanded skipped). Branch ~468 behind main; merge-tree dirty (outstanding-issues + audit plan). P1: removed rustGatedAnswerForClinicalNotes + deleted clinical-notes boundary tests in visual-evidence-tabs; summaryMode test expects 200 vs route 400 (summary_mode_stream_required) runtime-proven; RAG deterministic pre-classifier in rag.ts without RAG impact:/canary (PR policy FAIL + clinical preflight missing); stale outstanding-issues next-id 064 vs main 081. P2: audit-plan conflict residue (=======); dead summarizeDocument path; est:standalone heavy-lock bypass. | Bugbot; static three-dot vs origin/main; vitest private-access summaryMode ? expected 200 got 400; visual-evidence remaining tests 2/2 pass; gh PR policy fail logs; no provider-backed checks. | +| 2026-07-25 | execute-system-audit-remediation (PR #1197) | 12ab1af1a353b4e3d0aa54a7d05145e296d3b2f0 ? merge 8ec2a3cb698df98785ac33c12040475ceb980542 | prlanded + merge-ready closeout | MERGED (squash). Content two-dot tip vs main empty. Kept SQL URL/grant remediation; restored clinical trust gate/summaryMode; dropped RAG pre-classifier. Closed twin #1218 as duplicate. Local branch delete skipped (checked out in another worktree). | Hosted PR required SUCCESS; Migration replay/Unit/Static/PR policy SUCCESS; Semgrep fail was Docker Hub pull timeout (infra). No provider-backed checks. | | 2026-07-26 | PR #1192 / cursor/fix-mobile-composer-edge-scroll-5b1d | `771683af` + main `584b8045` | Reconcile against the #1222 cross-breakpoint header and run the gates the branch never re-ran | APPROVE. The bot's earlier sync of #1222 into this branch resolved correctly: `useScrollHideReporter(false, true[, searchMode])`, `useDocumentScrollHideReporter`, `wide: "collapse" \| "sticky"`, `sm:contents` and the hidden-only `sm:-translate-y-full` are all intact, every `readChromeCollapseBudget` caller migrated to `readChromeCollapseMetrics`, and the two models compose: `collapseKind` only refines the in-flow path, while the sticky path still reports a zero budget because `readChromeCollapseMetrics` keeps the `display === "grid"` test. One real blocker found and fixed: merging main let the union driver re-append two records both sides already held (940 rows / 938 unique), failing `check:branch-review-ledger`; the later copy of each was dropped after proving zero records lost and all non-record text byte-identical. | `npm run verify:cheap` pass except pre-existing `tests/pdf-extractor.test.ts` SIGKILL case, which needs local Python OCR prerequisites and whose subject is absent from this diff (3437/3439 otherwise). `npm run verify:ui` 285/285 Chromium on the production build. Focused: `ui-chrome-scroll` + `ui-phone-scroll` 30/30; `use-hide-on-scroll` + `header-scroll-hide-contract` + `mobile-composer-reserve` 39/39; `npm run typecheck` clean. No provider-backed checks. | | 2026-07-25 | PR #1217 / `cursor/sheet-focus-hardening-c6d3` | head `65f7580ce4f4821f8d1ad55aa2c84b7e11ca62fe` / squash `20300bb9f60dee09632fdce27d1191dde19e92b5` | prlanded after squash merge | LANDED. Two-dot content diff of `src`/`tests` vs `origin/main` empty; `sheet-focus.ts` on main carries `canRestoreFocusTo`, `MAX_CONSECUTIVE_RECLAIMS`, the 10s event-driven settle window and no `setInterval`; `sheet.tsx` restores through `canRestoreFocusTo` at both call sites. Hosted PR required SUCCESS (Static/Safety/Unit/Build/Production UI/Advisory UI); post-merge push CI on `20300bb9` SUCCESS (CI, Docker image build, SAST, Secret Scan). Remote feature branch deleted by merge. The one red rollup entry was a `pull_request_target` PR Policy run cancelled by its own successor, which reported SUCCESS. | `gh pr view` state=MERGED mergedBy=BigSimmo; `git diff origin/main HEAD -- src tests` empty; `git show origin/main:...` symbol checks; `gh run list --branch main` on the squash commit. No provider-backed checks. | +| 2026-07-26 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | head `2597dd305fd61e4e16166cccd109ff6f8eae0a33` / squash `c4d5f47a39` | prlanded after squash merge | LANDED. Phone Answer edge-dock hide/reveal, layout-clamp versus upward-intent detection, and composer focus binding, reconciled against the #1222 cross-breakpoint header. `git diff c4d5f47a 2597dd30` empty, so the content landed intact; remote branch deleted at merge; required contexts Gitleaks, PR required and PR policy all SUCCESS on the merged head. Two things worth keeping: merging `main` made the ledger's `union` driver re-append records both sides already carried, failing `check:branch-review-ledger` twice in one hour (see #082), and the final head was a `coderabbitai[bot]` auto-fix swapping an inline two-step upward scroll for the shared `scrollPrimarySurface` helper in `tests/ui-smoke.spec.ts` � an identical earlier auto-fix had been reverted on this branch, so it was re-proven rather than trusted. | `npm run verify:ui` 285/285 Chromium on the production build; `npm run verify:cheap` pass except the pre-existing `tests/pdf-extractor.test.ts` Python-OCR case, whose subject is absent from the diff (3437/3439 otherwise); `ui-chrome-scroll` + `ui-phone-scroll` 30/30 across phone, tablet and desktop; `use-hide-on-scroll` + `header-scroll-hide-contract` + `mobile-composer-reserve` 39/39; the CodeRabbit-modified in-flow collapse test re-run 3/3. No provider-backed checks. |