diff --git a/AGENTS.md b/AGENTS.md index a85304f186..31b0b993e7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -121,7 +121,7 @@ Use `docs/codex-review-protocol.md` as the shared review protocol for every repo Before reviewing a branch or PR: -- Run `npm run ledger:lookup -- --scope ""`. It resolves the HEAD, matches the abbreviated SHAs older records used, and prints an explicit verdict. Do not read `docs/branch-review-ledger.md` by eye — it is over a thousand rows, and eyeballing it is how repeat reviews slipped through. +- Run `npm run ledger:lookup -- --scope ""`. It resolves the HEAD, matches the abbreviated SHAs older records used, and prints an explicit verdict. Do not read `docs/branch-review-ledger.md` by eye — live + archive rows are many, and eyeballing is how repeat reviews slipped through. `ledger:lookup` reads archives under `docs/archive/branch-review-ledger-*.md` too. - On `ALREADY REVIEWED`, summarize the prior ledger outcome and skip the repeat review unless the user explicitly requests a fresh pass. - On `NOT REVIEWED at this HEAD`, review only the changed scope and append a record after the review. diff --git a/docs/README.md b/docs/README.md index 365542d6a8..f6268f810f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -69,7 +69,7 @@ npm run docs:check-links - [codex-review-protocol.md](codex-review-protocol.md) — shared review protocol for all review skills - [codex-prompt-playbook.md](codex-prompt-playbook.md) — copy/paste prompts for common repo work - [branch-cleanup-guide.md](branch-cleanup-guide.md) — branch hygiene workflow -- [branch-review-ledger.md](branch-review-ledger.md) — reviewed branch/SHA ledger; read it with `npm run ledger:lookup`, write it with `npm run ledger:append` (never by hand) +- [branch-review-ledger.md](branch-review-ledger.md) — reviewed branch/SHA ledger; read with `npm run ledger:lookup` (live + `docs/archive/branch-review-ledger-*.md`), write with `npm run ledger:append`, rotate older rows with `npm run ledger:rotate` ## Plans and workstreams (living) diff --git a/docs/archive/branch-review-ledger-2026-q3.md b/docs/archive/branch-review-ledger-2026-q3.md new file mode 100644 index 0000000000..ea944dda0a --- /dev/null +++ b/docs/archive/branch-review-ledger-2026-q3.md @@ -0,0 +1,1214 @@ +# Branch Review Ledger Archive — 2026-q3 + +Historical review records rotated out of `docs/branch-review-ledger.md` so the live +table stays navigable. Do not hand-edit. `npm run ledger:lookup` reads this file +together with the live ledger. New reviews append only to the live file. + +| Date | Branch or ref | Reviewed HEAD | Scope | Outcome | Checks | +| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `d63682c7e68b6ea41670a0db2349817c2e29988f` | Asset and image optimization remediation review | READY after follow-up. Added transformation parameters to `SignedImage`, aspect ratio box reservation (`aspect-[4/3]`) to non-PDF source previews, immutable `Cache-Control` headers to PWA icon routes, ARIA live region attributes to image error containers, top-level `width`/`height` to `icon.svg`, WebP/AVIF public asset optimization script, SVG icon preload in root layout, explicit image caching and sizing config in `next.config.ts`, and `svgo` verification in CI. Fixed omitted CI static check step and missing PR policy governance preflight metadata. No P0-P2 findings in modified scope. | `gh pr checks 1195` verified PR policy, GitGuardian security checks, and Supabase preview passing after PR body metadata update. Verification results in subagent worktree: pre-existing syntax error in github action script bypassed via authorized format guard during commit; no RAG retrieval or ranking behavior change; no OpenAI, live Supabase, or provider database mutation performed. | +| 2026-07-25 | PR #1203 / `cursor/reconcil-tooling-7f06` | `c5f237aac869b864fbc8810912df837b8a31fbab` (squash) | prlanded / merge confirmation | MERGED. Squash tip trees equal `origin/main` (two-dot empty). Late `package.json` conflict-marker fix and both reconciliation + audit npm scripts are on main. Feature worktree removed; local branch force-deleted after content proof; remote branch already gone. Closed #067 (fixture-injected preflight root), #077 (primary checkout write lease), #078 (secret-safe evidence pack). | Local: two-dot tree equality vs `origin/main`; presence checks for lease/evidence/preflight scripts; `package.json` scripts + no conflict markers. Prior PR-local on tip precursor green. No provider calls. | +| 2026-07-24 | `mobile-ergonomics-fixes` | `35e96844fc8bd94e7737229cb01174d1a0f9689f` | PR #1156 mobile touch ergonomics review | APPROVE. Found and fixed two findings: a P1 invalid CSS calc syntax breaking horizontal scroll masks (`calc(100%-1.5rem)` -> `calc(100%_-_1.5rem)`), and a P2 transform collision in `globals.css` where global `scale(0.97)` active states overrode Tailwind's composite variables (reverted to `translateY(1px)`). The `modal-landscape-container` safe-area padding correctly uses `max(1rem, var(--safe-area-left))` so it is safe on portrait. No further P0-P2 findings. | Local static inspection and visual review of DOM tree. Heavy tests were locked out by concurrent verification in `remediate-audit-system-issues`. Hosted CI tests will execute automatically on PR push. No provider actions were run. | +| 2026-07-24 | `main` / `037b4808100946f96aee28b8ff51939ae2986851` | `037b4808100946f96aee28b8ff51939ae2986851` | frontend-ui review: clinical-dashboard sidebar streamlining, global-search-shell, mobile-composer-reserve, globals.css forced-colors/reduced-motion, evidence-panels aria, answer-result-surface, visual-evidence-tabs DOM tests | APPROVE with notes (P2 closed on `cursor/frontend-ui-review-docs-e8d9`). No P0/P1. One P2 was docs-only: `docs/codebase-index.md` mode-home list omitted `/therapy-compass`, `/dsm`, `/specifiers`, and `/factsheets` while `isStandaloneModeHome` already handles them — fixed in the follow-up docs PR. What holds: sidebar streamlining (`primarySidebarToolIds` Set) is correct; global reduced-motion CSS covers `animate-spin`; forced-colors token remap is comprehensive; mobile-composer-reserve and overlay CSS contracts intact; tab/tabpanel ARIA associations pass in jsdom; icon-only collapsed rail links carry `aria-label`+`title`; lucide-react defaults SVG `aria-hidden="true"`. | Full unit suite 3261/3264 passed (3 pre-existing skips); typecheck clean; lint clean; static read of globals.css forced-colors/reduced-motion, overlay contracts, aria patterns, and mobile-composer-reserve. Docs mode-home list aligned to `isStandaloneModeHome`. No live Supabase/OpenAI/Railway mutation. | +| 2026-07-24 | PR #1134 / `cursor/search-performance-review-4ee9` | `2a8e045f4a7179ea6fc9b81b1b2173e4c932617e` | Babysit closeout / merge readiness | MERGE-READY for product scope once exact-head required checks finish after final main sync. Fixed: Bugbot pathname searchMode (Compiler-safe previous-state sync); docs index; PR_POLICY_BODY/governance; maintainability extract; prescribing Safety filters (no fields=index); Sheet teardown document guard. Unresolved threads: none. Residual: human approving review; title still stale (gh/ManagePullRequest cannot edit); main may move again. | Hosted on prior tip 973d5d88: PR policy/Static/Unit/Build/Production UI/PR required all SUCCESS. Final sync pushed; awaiting exact-head recheck. No OpenAI/live Supabase writes. | +| 2026-07-24 | `cursor/search-performance-review-4ee9` / PR #1134 | 76d47871c44c607f942a683351378230173dcbe3 | Search performance findings remediation (prescribing, differentials, typeahead docs timeout, shared shell, answer rate-limit fallback) | FIXED. P1 prescribing catalogue now debounces (250 ms), aborts in-flight fetches, and uses `fields=index`. Differentials catalogue + evidence search abort/debounce. Universal documents typeahead timeout 6 s→750 ms (RAG impact: no retrieval behaviour change — typeahead timeout only). Shared `(search-app)` layout keeps GlobalSearchShell mounted across mode homes. Answer rate-limit fails closed only in production; development uses in-memory fallback when durable RPC is unavailable. | Focused Vitest 362 via test:focused; api-rate-limit/search-shell/universal/route/site-map suites green; `npm run ensure` smoke 200 on mode homes; `/api/answer/stream` 200 after fallback. No OpenAI spend beyond local answer stream smoke; no live eval/soak. | +| 2026-07-24 | `main` | `6ceaaff50712e10e857bf9a5a7ec88b530bf7b35` | Search performance across modes (load + typeahead + submit; local ensure) | CHANGES REQUESTED / findings. No P0. P1: Prescribing `useMedicationCatalog(query)` refetches the full ~2.5–2.9 MB medication catalogue on every keystroke without debounce, abort, or `fields=index` (~25× larger than index). P2: differentials catalogue + evidence `/api/search` lack abort/debounce; universal typeahead `tookMs` dominated by empty live documents domain (~130–340 ms); cross-namespace mode switches remount the search shell; Answer submit returns 503 `rate_limit_unavailable` when durable limiter is down (fail-closed). Mode HTML load medians ~40–75 ms; typeahead wall ~160–180 ms (`ssri`) / ~350–400 ms (`agitation im lorazepam`) + 250 ms client debounce; catalogue submits (differentials) ~45 ms; document `/api/search` demo-degraded ~230–430 ms. Highest residual live risk: cold hybrid RPC tails (docs #25), not re-measured with soak/eval. | `npm run ensure` → http://localhost:4461; `/api/local-project-id` Clinical KB; paced universal typeahead across 13 modes × 2 queries (Server-Timing); `/api/search` + `/api/medications` (+`fields=index`) + differentials APIs + registry payload sizes; NDJSON vs JSON first-byte; browser walkthrough of 13 mode homes; static review of ClinicalDashboard / universal-search / medication+differential hooks. No OpenAI generation, no `eval:retrieval:latency`, no soak, no hosted CI. Environment had Supabase secrets so universal ran live (`publicAccess`); `/api/search` degraded to demo (`supabase_api_key_configuration_unavailable`). | +| 2026-07-24 | `codex/query-ribbon-search-headings` | `16ce57d9615708528e7924b41837210a24414722` + reviewed ledger diff | Universal Query Ribbon implementation and responsive search-heading review | APPROVE after two scoped polish fixes. The shared result header now presents query, progress/result state, scopes, and real sort/view/save controls consistently across Services, Forms, Favourites, Differentials, and Medication/Prescribing search surfaces; the mockup remains available at `/mockups/search-heading`. The review restored the compact `Sort` label at ordinary phone widths and prevents stale/unknown scope IDs from producing an empty utility strip. No P0-P2 finding remains. Retrieval, ranking, source selection, and clinical output behavior are unchanged. Highest residual risk is unexercised browser combinations outside the focused cross-route responsive matrix. | Focused header DOM 4/4; focused ESLint; `git diff --check`; live 1280px route QA with zero overflow and visible keyboard focus; production Playwright build compiled, TypeScript passed, 1,678 pages generated, and focused Chromium responsive/search/prescribing matrix passed 16/16. `verify:pr-local` passed runtime, Prettier, full ESLint, and TypeScript; its complete unit run stopped only when the unrelated load-sensitive `reconciliation-preflight` case exceeded 30 seconds, then that file passed 5/5 in isolation. No OpenAI, Supabase, Railway, deployment, production-data, or clinical provider workflow ran. | +| 2026-07-24 | `main` | `037b4808100946f96aee28b8ff51939ae2986851` | Comprehensive repository review (architecture, security/privacy, API/DB, RAG/clinical, UX/a11y, performance/CI/ops) | Changes requested. No P0. Two confirmed P1 clinical-grounding defects: (1) numeric verification skips truncated claims after the 24-claim cap when earlier claims contain numbers; (2) unsupported prescriptive treatment recommendations remain grounded as routine/partial. Multiple P2 privacy/ops findings: signed-URL cache survives sign-out; upload/enrichment/search telemetry can retain raw filenames; negated urgency still labelled Red flag; mixed `partial_invalid_model_citation_ids` evade the invalid-ID gate; readiness probe lacks an explicit dependency timeout; Railway watch patterns miss transitive build controllers. Known tracked residuals reconfirmed: #052 enrichment/reindex overlap, #059 credential containment (operator), #007 Tools route dual entry. Highest residual risk remains live answer-quality/clinical grounding plus operator credential/#053 legal gates. No source fixes applied. | Offline: runtime, migration-role, function-grants (30), owner-scope (40 routes), GitHub Actions pins, PR-policy self-test, gate/CI-scope/Codex autofix guards, lint, typecheck, sitemap, knip, knip architecture budgets, env-parity names-only, docs index/scripts, production-readiness:ci, offline RAG 36 fixtures + 21 suites/308 tests, focused clinical/RAG contract suite 122/122, Chromium accessibility 12/12 and `verify:ui` 267/267 after identity-confirmed `npm run ensure`. Targeted offline red proofs for both P1s and the citation/safety/signed-URL P2s. Provider-gated skipped: live drift, supabase-project (non-dry), migration-history, live RAG/OpenAI evals, hosted CI, Railway mutations. | +| 2026-07-24 | `remediate-audit-system-issues` | `ae54de2b10f1c586d90c62fc3e50654dd8e917a1` + fixes | Audit remediation verification and merge readiness review | READY. Fixed the P1 (Unsafe automation) by restoring the WMI process name filter while expanding it to include common node wrappers (`node\|npm\|npx\|tsx\|vitest\|playwright\|bun`). Fixed the P3 (maintainability friction) by adding `rimraf` to `devDependencies`, ensuring offline availability in CI. No high-confidence P0-P2 defects remain. | Static review of diff against origin/main. Fixed issues locally and re-verified. No OpenAI, Supabase, or live provider command ran. | +| 2026-07-24 | `cursor/docs-reliability-review-c38b` | `af5d44abf031581d256006b51a1be98563d441d5` | Documentation reliability review vs repo state (setup, env, ops runbooks, testing safety) | Fixed P1/P2 doc drift: worker region Sydney→Railway Singapore; DR golden gate 23/23→36/36; Railway health `/api/health/ready`; auth checklist aligned to magic-link+OAuth UI; staging identity vars in `.env.example`; provider-approval boundary on testing/readiness docs; mode count 11→13. No P0. Residual: historical `23/23` mentions in point-in-time/archive docs left alone. | `npm run docs:check-links`; `npm run docs:check-index`; `git diff --check`. No provider/OpenAI/Supabase/Railway mutation. | +| 2026-07-24 | `main` / PR #1122 tip `037b4808100946f96aee28b8ff51939ae2986851` | `037b4808100946f96aee28b8ff51939ae2986851` | Code-quality review of tip commit (streamlined sidebar tool list) | No P0-P1. Two P2 maintainability findings: (1) dual catalogue — `sidebarToolItems` still defines specialist tools that `primarySidebarToolIds` always filters out, leaving unused Lucide imports and a footgun where new catalogue rows do not appear unless also added to the Set; (2) favourites-auth-gate asserts primary IDs by regex-parsing the Set initializer source, which couples the suite to TypeScript formatting. Highest residual risk is quiet nav drift if specialists are re-added only to `sidebarToolItems`. #066 in outstanding-issues still describes this sidebar land as open despite the tip merge. | Static diff inspection of `ClinicalSidebar.tsx`, `tests/favourites-auth-gate.test.ts`, `tests/ui-smoke.spec.ts`; no lint/test/provider runs (pure review). | +| 2026-07-24 | `codex/review-search-bar-behavior-and-establish-rules` (PR #1137) | `b10514374ac7640e5d3395f707c6f958764ae131` + ledger bookkeeping | PR babysit: CI fix + Codex threads + drift | COMPLETED for current head. Restored Tools arm in `showDesktopHomeComposer` and moved `0rem` reserve comment to `mobileComposerReserve` (3d82ead2); replaced unresolvable ledger SHA `bcf4571…` with `6ee0484…`; formatted `docs/search-chrome-behaviour.md`; merged `origin/main` (`0cc0ee2d`). 3/3 Codex review threads resolved via GraphQL (inline replies 403 with this token). Prior CI failures (syntax from misplaced comment) cleared on 3d82ead2; Production UI job cancelled mid-aggregate before this merge — CI re-running after push. | Local: format:check on touched files; Vitest `ui-overlay-css-contract` + `mobile-composer-reserve` 15/15. Hosted: static/unit/build/advisory green on 3d82ead2. No provider-backed checks run. | +| 2026-07-24 | PR #1135 / `cursor/sitewide-design-ux-review-6176` | merge `origin/main` @ `3d6954a3` | babysit: re-merge main after #1133; renumber UX archive IDs | CONFLICTING after `main` advanced with database-interface audit. Kept product UX fixes; rebuilt `docs/outstanding-issues.md` from `origin/main` and archived sitewide UX defects as collision-free `#070`–`#074` (provisional PR IDs `#068`–`#072` collided with main `#068` drift-manifest / `#069` table-facts profile). Native-`disabled` CodeRabbit ask remains declined (focusable coming-soon contract). | Local merge conflict resolution only; hosted CI pending on merge commit. No provider-backed gates. | +| 2026-07-24 | PR #1135 / `cursor/sitewide-design-ux-review-6176` | `4ff92ea76f1b4d7962adc47ce88bcb153989c9ba` + post-comment docs | babysit: main merge, CI, CodeRabbit thread disposition | MERGE-READY after prior conflict resolution with `origin/main`. Product UX honesty fixes retained with main answer-relevance trust gating. CodeRabbit MD028 + ledger token fixed; native-`disabled` request declined as it conflicts with the focusable coming-soon placeholder contract. Auto-merge enabled. | Hosted required checks green on that tip. Focused Vitest mobile-interaction + visual-evidence tabs green. No provider-backed gates. | +| 2026-07-24 | `origin/main` | `6ceaaff50712e10e857bf9a5a7ec88b530bf7b35` | sitewide design/UX review (production pages) | FINDINGS CAPTURED. No P0. Confirmed defects later archived as `#070`–`#074` after ID collision with main `#068`/`#069`. Updated `#010` for Compact/Detailed selected-but-disabled look. Deduped against `#007`/`#016`/`#038`–`#041`/`#063`–`#066`. Residual: large mobile PWA install sheet density; compare URL-state sync; axe coverage beyond home (`#040`). No product code fixes in this pass. | Offline: design-system-contract, type-scale, icon-scale, brand:check, design-sweep evidence. Live: `npm run ensure` → `http://localhost:4461` identity OK; mode-home/detail HTTP 200 + no document overflow at 390/1280; presentation href + forced Overview navigation proof; Tools Sort/More DOM proof; `test:e2e:accessibility` 12/12. Screenshots under `/opt/cursor/artifacts/screenshots/`. No OpenAI/Supabase/GitHub/hosted CI/provider calls. | +| 2026-07-24 | `cursor/database-interface-audit-0883` / PR #1133 | `8c4c5556ef470673da492aa5f901513c84637d83` | PR babysit + Bugbot + Codex thread triage | COMPLETED for current head. Fixed Codex P2s: stranded queued recovery pages past open-job rows; bulk retry_failed enrichment lease preflight scopes to failed docs only. Bugbot ClinicalDashboard safety-findings finding is not in this PR unique diff vs main. PR policy Clinical Governance Preflight added in body. Merged origin/main. | Local Bugbot; focused Vitest; gh PR/CI. | +| 2026-07-24 | `main` | `6ceaaff50712e10e857bf9a5a7ec88b530bf7b35` | Supabase interface / performance / schema guardian audit | COMPLETED. No P0/P1 live security hole. Confirmed service-role + app-layer ownership model, fail-closed `retrieval_owner_matches`, and project-ref pinning. P2 findings: duplicate unscoped `correct_clinical_query_terms` block in `schema.sql` (safe definition wins at replay); reindex routes miss fresh enrichment-lease gate (`#052`); upload crash can strand `queued` without a job (`#062`); table-facts RPC still `LANGUAGE sql` + `force_custom_plan` (byte-identical plpgsql+EXECUTE remains the latency win). P3: base match RPC execute revokes rely on roles.sql; `invoke_ingestion_worker` hardcodes URL; cold multi-RPC fan-out. Remediation continues on `cursor/database-interface-audit-0883`. | Static schema/RLS/RPC/grant/owner-scope/auth/client inspection; upload/reindex wiring; scale/SLO/deploy docs; outstanding-issues `#052`/`#062`. Provider-gated skipped: `check:supabase-project`, live `check:drift`, `check:indexing`, `profile:retrieval`, `eval:retrieval*`, migration apply. Notion MCP unavailable (`needsAuth`). | +| 2026-07-24 | PR #1125 / `codex/answer-relevance-fail-closed` | `8d9fb2408f13e305138749655214baa0020fcfd4` | Follow-up: clear comparison/`documentBreakdown` in untrusted clinical notes | APPROVE for the scoped P2. `trustGatedAnswerForClinicalNotes` now clears `documentBreakdown`, `comparisonMatrix`, and `comparisonEvaluationState` when relevance is not source-backed, so Clinical Notes → ClinicalOutputPanel cannot rebuild comparison-detail tables from raw `best_quote` values. Prior visual/section/quote gates remain. Residual risk is still deliberate low-trust rendering for legacy payloads without `isSourceBacked: true`. | Focused jsdom/policy regressions: `tests/visual-evidence-tabs.dom.test.tsx` 5/5 after hardening the comparison case (caption + matrix values absent). Thread disposition posted and resolved. No live RAG/OpenAI/Supabase mutation. | +| 2026-07-24 | `codex/answer-relevance-fail-closed` | `ac0d4305478a0bc8fef03894b78ec5911912c08a` | Missing answer-relevance metadata across render policy and live dashboard grounding | APPROVE after resolving two review P2s. A shared `isAnswerSourceBacked` predicate now requires explicit `isSourceBacked: true`; missing or explicitly negative relevance cannot retain high render trust, a grounded dashboard state, visual/table evidence, or a clinical-notes table bypass. Explicitly source-backed answers preserve supported behavior. Retrieval, ranking, generation, source selection and stored data are unchanged. Highest residual risk is deliberate compatibility tightening for older answer payloads without relevance metadata; they render low-trust and expose review sources rather than richer evidence blocks. | Initial red policy proof failed with `high`; two later red proofs exposed retained visual evidence and the clinical-notes raw-table affordance, then passed after both render-model gates. Focused render/provenance/clinical-safety tests passed 37/37; the focused DOM/policy pair passed 31/31. Offline RAG passed 21 suites/308 tests and 36/36 fixtures; production-readiness was READY against `Clinical KB Database` read-only; `verify:pr-local` passed runtime, formatting, lint, typecheck, all 366 test files (3,254 passed/1 skipped), production build (1,677 pages), client-bundle secret scan and RAG fixture validation; the earlier local `verify:ui` passed 267/267. After the final UI fix, `verify:cheap` again passed all 20 non-test gates, lint, typecheck and 3,254 tests, with only tracked issue #067 timing out under machine load; its isolated retry also exceeded the same 30-second limit and was not repeated. Fresh exact-head hosted checks are required. No live RAG, OpenAI request, Supabase mutation, Railway action, production data operation or deployment ran. | +| 2026-07-24 | `codex/safety-plan-no-patient-data-contract` | `b94987c94537f3114a3429848fa908bdecd1d80a` | Safety Plan Generator identifier, local-state, copy, print, privacy-notice and PIA contract | APPROVE. No P0-P2 finding. The patient name/initials field is removed; the builder now asks for identifier-free minimum content, retains working state only in the mounted React component, and makes clipboard/print/PDF export an explicit handling boundary. The PIA and product privacy copy distinguish this local-only tool from provider-backed questions. Highest residual risk is outside Clinical KB: users must handle exported copies under an approved clinical-record process, which the UI now states at the export controls. | Privacy/component DOM 3/3 plus updated privacy-copy 2/2; focused Chromium copy/print/no-fetch-or-XHR 1/1; `verify:cheap` passed all 21 gates, 366 files and 3,245 tests with 1 skip; production-readiness READY using the existing canonical environment without a provider call; production build and client-bundle secret scan passed; offline RAG fixture/manifest 36 cases/21 suites passed. `verify:pr-local` passed runtime, formatting, lint and typecheck, then stopped on the unrelated load-sensitive `reconciliation-preflight` 30-second timeout; that test passed 5/5 isolated and the preceding full suite passed, so the unchanged five-minute gate was not retried. No Supabase, OpenAI, Railway, live RAG, production data or deployment action ran. | +| 2026-07-24 | PR #1114 / `codex/universal-ledger-main-followup-20260724` | `eedbe594a89eaa0aad8a517ee8808b089cb5ff57` + reviewed working diff | Streamlined-sidebar handoff in the merged universal ledger | APPROVE. PRs #1112, #1116, and #1117 landed the universal-ledger baseline, two preserved UI tasks, and credential/hook hardening; this follow-up preserves that current-main schema and adds only the still-missing sidebar delivery as collision-free `#066`. The queue remains gap-free and every recommended ID has one open row. Sidebar implementation stays recoverable from remote branch `origin/codex/sidebar-test-fix-20260723` at full commit `cd54e68fbf7b07b5dffe3220e36af2caa528da54` until its local/browser/build/hosted merge proof is complete. | Focused sidebar/favourites tests previously passed 18/18 on the recorded implementation commit; this ledger follow-up passed Prettier, remote-ref recovery, 36-row contiguous-order/46-open-ID/next-ID invariants, and `git diff --check`. The broader reconciled precursor passed `verify:cheap` (365 files, 3,242 passed/1 skipped); fresh exact-head hosted CI is required on PR #1114. No OpenAI, Supabase, Railway, deployment, live-app, credential, or production-data action ran. | +| 2026-07-24 | `codex/universal-ledger-main-final` | `527988c2ccabc98b4d0673d33360c971df65fa0e` + reviewed working diff | Current-main universal-ledger reconciliation after PR #1106 superseded PR #1109 | READY. Kept PR #1106's current-main ledger and IDs, carried forward only non-duplicate recommended work from the superseded branch, and fixed the confirmed SessionStart empty-open defect. Every active recommendation now has a durable open ID; exposed-GitHub-token containment is the first A1 item; the Safety Plan privacy contract, absent-relevance fail-closed rule, stranded-upload recovery, threshold-conflict design, catalogue-toolbar convergence, and Current Clinical Work brief are retained without duplicating #1106's legal/config/release/staging/seed packages. Resolved #014/#034 claims stay archived, and PR #1110's scheduled-diagnostics priority remains intact. Highest residual risk is manual queue/open-table drift. | Empty-open fixture and real-ledger Bash execution passed; 33 contiguous recommendations reference tracked open IDs; 43 open items; no duplicate queued IDs; `docs:check-links`, `docs:check-index`, `docs:check-scripts`, `check:skills`, Prettier, and `git diff --check` passed. No OpenAI, Supabase, Railway, production, deployment, live-app, or credential action. | +| 2026-07-24 | PR #1106 / `codex/task-ledger-final-11318f` | `5d128a2844c2298d0da36df64e5e2f7dda11e14b` + reviewed follow-up diff | Universal task-ledger workflow and protected-main merge readiness | APPROVE after follow-up. `docs/outstanding-issues.md` is the single durable task ledger, with retained work carrying order, acuity, timing, capability, effort, dependencies, success criteria, verification and stop rules. Four actionable review findings were fixed: filtered `/issues` reads now apply the filter to open items before rendering queued and non-queued results; the session hook excludes queued IDs from its priority summary; `#030` is consistently P2/A2 in the canonical open table and queue; and the sole A1/P1 blocker is first while `#052` is explicitly the first code task. No other actionable review thread remains in the reviewed scope. | Protected CI at the initial reviewed head passed policy, static, safety/config, unit coverage, Semgrep, Gitleaks, GitGuardian and the required aggregate; UI, build, migration replay and release browser matrix were correctly skipped for the docs/workflow scope. Follow-up proof: scoped Prettier; hook syntax/runtime plus exact ID-deduplication, P2-count and A1-first assertions; docs links (1,136 references); canonical skill catalog (32 skills, 8 aliases); `git diff --check`. Exact-head hosted CI remains required after the follow-up push. No OpenAI, Supabase, Railway, deployment or production-data operation ran. | +| 2026-07-24 | `codex/supabase-document-change-trigger` | `9c7d9edf509a51478f5bebbabcca64e3926dc877` + reviewed working diff | Document-change ingestion trigger migration, schema mirror, grants, privacy and fail-safe delivery | APPROVE. No P0-P2 finding. The trigger is update-only, acts solely on a strict JSON boolean false/absent-to-true transition, sends only the receiver's allowlisted owner-scoped fields, fails open for document writes when Vault/GUC/pg_net is unavailable, and revokes execution from public/anon/authenticated. No production URL fallback exists. Highest residual risk is deliberate pg_net at-most-once delivery; the clear-then-flip recovery and data-preserving rollback are documented, and the trigger remains inert until both the Vault secret and environment base-URL GUC are configured. | Disposable Supabase Postgres `17.6.1.127` schema replay and drift-manifest regeneration passed (16s; scratch container removed); focused schema/drift/receiver Vitest 89/89; migration-role, function-grant (30 SECURITY DEFINER functions) and owner-scope guards; production-readiness CI mode READY with expected secretless-worktree warnings; offline RAG 21 suites/307 tests; `verify:cheap` 365 files, 3,241 passed/1 skipped; static trace of receiver payload, authoritative owner-scoped reload and idempotent enqueue path. No live provider mutation or migration apply. | +| 2026-07-23 | PR #1090 / `cursor/fix-phone-dock-edge-1b1d` | `761de7e9ad623b6bd8d634d849a9eb465d622e48` (merged as `09028ef217209fceb53f1122ac7738b509bce323`) | Phone safe-area and edge-to-edge search-dock UI review | MERGED. No P0-P2 finding. The branch was three commits behind, so current `origin/main` was merged before landing; the actual merge tree matched the reviewed synthetic tree. The dock remains flush to the viewport with safe-area padding inside the form, and the phone shell no longer retains the `dvh` clamp that created the Safari toolbar band. Zero actionable review threads. | `npm run ensure`; focused `ui-tools.spec.ts` phone-home and edge-to-edge scenarios: Chromium 2/2 and WebKit 2/2; refreshed hosted policy, security, unit, build, advisory UI, Production UI and required aggregate checks green; exact-head ancestry and local-main tree equality proved after merge. | +| 2026-07-22 | PR #1087 / `codex/reconcile-product-truth` | `edbc2260fef59ca2fa7c6973dffb85e32354bce1` (merged as `05dc52fd8408a65117e22a6236e43252203bea92`) | Product-truth copy, account persistence and unavailable-SSO presentation | MERGED. Cross-device claims now match favourites/preferences persistence; recent searches are identified as browser-session data; the contradictory “never shared” statement is removed. All unavailable setup providers and Apple elsewhere use the connected accessible “coming soon” placeholder pattern. The single review finding was fixed, replied to and resolved. | Red DOM proof; focused 19/19; `verify:cheap` 3,220 passed / 1 skipped; `verify:ui` 265/265; PR-local build/secret scan/offline RAG; final hosted required, Production UI, policy and security checks green. No provider calls or RAG spend. | +| 2026-07-22 | PR #1086 / `codex/reconcile-xlsx-budgets` | `5376880a40749b6526fd7e4603a7be9d04bc9624` (merged as `2963fba46eacd644618a588fa283f7597faa2644`) | XLSX resource-boundary review | MERGED. Enforces worksheet, non-empty-row, rendered-cell and UTF-8 output ceilings before result fragments are appended; sparse-column output is preserved. No actionable review threads. | Red 257-sheet reproducer; focused 4/4; `verify:cheap` 3,218 passed / 1 skipped; PR-local build/scan/offline RAG; hosted required/security/policy green. | +| 2026-07-22 | PR #1085 / `codex/reconcile-docx-budgets` | `b08c60e1127592f0bc08f88797905f1e871172ce` (merged as `008a92b0fbad652484b6cdde6295bc456f4b7bf9`) | DOCX extraction-budget review | MERGED after two valid allocation-order findings. Declared media/Word-XML sizes are checked before inflate/materialization, with post-read fail-safes; artifact count, single/aggregate bytes and extracted text are bounded. All threads resolved. | Red 1,001-media reproducer; focused 7/7; `verify:cheap` 3,214 passed / 1 skipped; PR-local; hosted coverage/build/security/policy green. | +| 2026-07-22 | PR #1084 / `codex/reconcile-bulk-reindex` | `7b7737bd63b9dcd3ba820379a54cfc11595d6e98` (merged as `589fb9b99e18061782b0c7b3fa6b14fa0e8388d5`) | Bulk reindex partial-success contract | MERGED. Completed mixed batches return HTTP 200 with successful, failed and missing results; preflight-wide conflicts retain non-2xx behavior; UI reports counts and refreshes successful work. | Red deletion-race proof; focused 127/127; `verify:cheap` 3,207 passed / 1 skipped; PR-local build/scan/offline RAG; hosted green. | +| 2026-07-22 | PR #1083 / `codex/reconcile-browser-matrix` | `7eed83d37c8ab29b520aa798b25bef9d12efbf5a` (merged as `0afa0a55501afd784bec9237dca9e1b5d98d849a`) | Current Chromium/Firefox/WebKit browser salvage | MERGED test-only Firefox stabilization. Stale browser expectations, unrelated styles and duplicate service-worker isolation were rejected. | Current-main 40 passed / 1 skipped / 1 Firefox failure; final targeted matrix 3/3; `verify:cheap`; `verify:ui` 265/265; PR-local; hosted green. | +| 2026-07-22 | PR #1082 / `codex/reconcile-non-rag-p2` | `eca5af958dadc3d79269ab4f41c56110eb8dace7` (merged as `d302be1cfd033eacd64a42d7ef6fe1af3c3b03ac`) | Reproduced non-RAG P2 salvage | MERGED only malformed fallback-PDF image tolerance and live-test env loading. Retryable auth was already on main; the old 31-file patch was not replayed. | Two red proofs; focused 37/37; `verify:cheap` 3,203 passed / 1 skipped; PR-local build/scan/offline RAG; hosted green. | +| 2026-07-22 | PR #1081 / `codex/reconcile-publication-approval` | `79dadbc46e5694ad7ea2232cdc14329632d40943` (merged as `a00638af2e1116896bedf493af0dbb591a707567`) | Publication reviewed-state digest, locks and migration | MERGED. Approval binds canonical document/metadata/artifact/generation state and publication locks relevant rows/rejects active work. New forward migration used; stale archived timestamp rejected. | Focused 72/72; 181-migration disposable replay; schema/types/drift regeneration; grant/owner/migration guards; PR-local 3,201 passed / 1 skipped; hosted migration/required checks green. No live apply. | +| 2026-07-22 | PR #1080 / `codex/reconcile-health-readiness` | `199d98f9d3385964dd7c48a28d2ebe2b2382635d` (merged as `6976aaeeece84680ed6ffc9e77f839f3a314ec4e`) | Supabase readiness fail-closed behavior | MERGED. Returned and thrown probe failures degrade readiness without leaking raw dependency errors; setup-status backoff remains limited to availability failures. | Focused 22/22; amended `verify:cheap` 3,199 passed / 1 skipped; PR-local/build/offline RAG; hosted green. | +| 2026-07-22 | PR #1079 / `codex/fix-auth-cookie-precedence` | `f5d00416be2d52ebbf59ef1b0c108021446551a6` (merged as `a8814b671b43938428fe2dbba355bf5ddf79f5c9`) | Late auth review follow-up | MERGED. Current-project SSR cookies precede stale legacy cookies; retired-project cookies are ignored; invalid modern credentials never fall back. | Focused auth 148/148; hosted full gates green. Heavy local rerun was lock-blocked and transparently deferred. | +| 2026-07-22 | PR #1078 / `codex/reconcile-auth-upload-privacy` | `f83bb6772ff8e4eb6e7ea2c6e7b53ea39ed8f990` (merged as `001ce3543cb7e8020b0f6a5c3171f14601c73e6b`) | Optional-auth tri-state and upload-privacy revalidation | MERGED auth fix. Presented invalid/malformed credentials return 401 instead of anonymous quota; absent credentials preserve public reads. Anonymous-upload metadata patch rejected as stale because uploads are already administrator-only before parsing/duplicate lookup. | Red auth proof; focused 141/141; `verify:cheap` 3,191 passed / 1 skipped; PR-local 3,192 passed / 1 skipped plus build/offline RAG; hosted green. | +| 2026-07-22 | PR #1077 / `codex/reconcile-migration-role-guardrails` | `6845f238f54a095f9a9a81f8ebdde0c2ed8fe1ce` (merged as `bf9a50836a445441f4d224686c54f1c4af257b6a`) | Hosted migration-role and Docker-owner guardrails | MERGED. Reserved-role references are rejected in active surfaces; the sole immutable historical exception is checksum-pinned; replay discovers the storage owner dynamically. | Red six-reference proof; focused 15/15; PostgreSQL 17.6 replay; `verify:cheap` 3,182 passed / 1 skipped; PR-local/hosted migration and image checks green. | +| 2026-07-22 | PR #1076 / `codex/reconcile-therapy-mode` | `4008c62bea9496a1f597a9fc2c3142c69b937cfb` (merged as `142646355a045314da85fa2b1582fdc45b2ac02e`) | Therapy mode user-facing naming | MERGED. Copy/metadata/navigation use Therapy mode while `/therapy-compass` and internal names remain. Review found sidebar and codebase-index gaps; both fixed and all threads resolved. | Focused 31/31; sitemap/index; identity-verified server; focused Chromium 2/2; `verify:cheap` 3,177 passed / 1 skipped; hosted Production/Advisory UI green. | +| 2026-07-22 | PR #1075 / `codex/reconcile-route-reachability-ast` | `58e57a79b4e7766aebd3d0404a6c431f3a286bbe` (merged as `46f143d135afcd2f449ae6bedd05332a7af35f4d`) | Binding-aware route-reachability AST | MERGED. Recognizes bound Next navigation APIs and allowlisted `ModeHomeTemplate.actions`; raw anchors, prefetch, shadowed identifiers and arbitrary href metadata do not count. Both review findings fixed/resolved. | Focused 5/5; full unit 3,172 passed / 1 skipped; `verify:cheap`; offline RAG; hosted required/security/policy green. | +| 2026-07-22 | PR #1062 / `codex/chat-supabase-rls-title-words-0ef3` | `38efe6d7ab8c3ea7c550f6c30bbcefd527a23a2a` (merged as `ae950de196b2a8e39e88226f41ef941be14e415d`) | Backend-only title-word policy and live-drift review | MERGED. Service-role-only RLS/ACL contract retained; browser roles remain revoked. Read-only live comparison found no unexpected drift and no migration apply was needed. Review thread resolved. | Focused schema 67/67; PostgreSQL replay/drift/grant/owner guards; production-readiness READY in the credential-bearing source checkout; live read-only drift clean. | +| 2026-07-22 | PR #1061 / `claude/settings-dialog-tests-123366` | `0638fee21a60f29b1be1f3302c95c69db693c19d` (merged as `3e70a22c671da0199d507b00b0a77e9a99db2621`) | SettingsDialog action-flow coverage | MERGED test-only action coverage with correct `vi.hoisted` setup. Stale review thread was verified, replied to and resolved; unnecessary fixture-reset follow-up was not pushed. | Focused 5/5; PR-local 3,172 passed / 1 skipped and offline RAG 36/36; hosted required checks green. | +| 2026-07-21 | main | 71059eba98bc6e335c2c82cb9ab542aad44dfae8 | database audit, drift analysis, and data contract review (/drift /data /audit) | Completed offline audit of database schema, migrations, generated drift manifest, function grants, owner-scope API boundaries, therapy data indexes, and data ingestion logic. Verified drift-manifest byte-identical match to schema.sql (schema_sha256: 50da0978a164...). Found one P2 static check failure: orphaned test tests/check-july8-live-batch.test.ts references deleted script scripts/check-july8-live-batch.ts, causing npm run check:knip and verify:cheap to fail. Live Supabase schema comparison and live ingestion audits were approval-gated and skipped per provider boundary rules. | Local offline checks run: Vitest 339/339 test files passed (3,053/3,054 tests passed, 1 skipped); tests/drift-detection.test.ts (10/10 passed); check:function-grants (28/28 SECURITY DEFINER functions revoked); check:owner-scope (40 API routes clean against 25 owner tables); check:therapy-data-index (205 records OK); check:design-system-contract (520 files clean); strict check:type-scale & check:icon-scale; check:runtime; check:github-actions; check:ci-scope; check:ci-triage; check:pr-policy; check:gate-manifest; check:codebase-index-coverage. Provider checks skipped (approval-gated): check:drift, check:supabase-project, check:migration-history, audit:source-governance. | +| 2026-07-14 | multiple remote branches (16 refs) | multiple SHAs | remote branch cleanup | Safely deleted 16 fully merged and redundant remote branches on origin (including `claude/canary-gate-fixes`, `claude/codebase-index-coverage`, `claude/design-elevation-e1e2`, `claude/design-sync-fixes-p1`, `claude/docs-script-linter`, `claude/document-image-viewer-review-ox7t11`, `claude/generation-token-starvation-fix`, `claude/github-actions-codex-issue-f4t4s5`, `claude/hero-composer-hydration`, `claude/pdf-signed-url-refresh`, `claude/pt-audit-monitor-marker-fix`, `claude/pt-audit-pr2-variant-early-exit`, `claude/pt-audit-pr4-trust-copy`, `claude/pt-audit-pt17-live-monitor`, `codex/eval-canary-quota-handling`, and `cursor/clean-sentry-lockfile-orphans-74cf`). | Confirmed zero unique commits against origin/main and MERGED/CLOSED status on GitHub via `gh pr list`. | +| 2026-07-14 | worktrees (6244, 8ba3, b6ff, e6b5, repo-improvement-review-09945c) | detached HEADs | local worktree cleanup | Safely removed and unregistered 5 clean, inactive worktrees from the git registry. | Ran `git worktree remove` and verified final active worktrees. | +| 2026-07-14 | main | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | branch alignment | Fast-forwarded local `main` to latest `origin/main` commit. | Verified main and origin/main revisions and updated ref locally. | +| 2026-07-14 | local branches (5 refs) | multiple SHAs | local branch cleanup | Safely deleted 5 local branches that were squash-merged or had no changes (including `claude/canary-latency-recalibration`, `claude/process-hardening-consolidation`, `codex/fix-registry-indexing-health`, `codex/pr-556-sync`, and `codex/pr-597-fix`). | Verified diff was identical to origin/main and confirmed MERGED status on GitHub. | +| 2026-07-18 | local repository cleanup against `origin/main` | 1d9fdcfdd | repository-maintenance summary (non-skip aggregate) | Removed 26 clean, exact-proven redundant worktree registrations (58 -> 32 before the temporary cleanup worktree) and deleted 78 unregistered local branches: 73 direct `origin/main` ancestors plus five exact/covered squash-merge refs for PRs #852, #859, #868, #869, and #870. Preserved all dirty, active, open-PR-owned, backup, ledger-protected, and patch-unique/ambiguous work, including the divergent local `main`; no reset, force operation, remote-branch deletion, or source replay was performed. Six unregistered Windows directory residues remain without `.git` markers after Git cleanup. Clean standalone deltas were either already merged/current-main content or owned by active PR/task work, so no product change was duplicated. This aggregate row is audit history only and must not be used to skip a future branch-level cleanup review. | Mandatory task-start preflight; fresh fetch/prune; full local branch/worktree/status and Codex task ownership inventory; 863-PR GitHub snapshot before the API rate limit was exhausted; cherry-pick-aware history, exact merged-head/descendant proof, and synthetic merge-tree checks; exact-old-value `git update-ref` deletion; per-worktree clean/head rechecks; final worktree/prune inventory. No OpenAI, Supabase, deployment, production-data, or live clinical workflow ran. | +| 2026-07-18 | PR batch screenshot queue → #883–#888 / #891 | 8b0a600209 (main tip after #887) | open-PR review + merge babysit | Reviewed and land-safe-merged screenshot PRs. Merged #888 (worker placement dedupe), #891 (PR policy `github.workflow_sha` checkout superseding incorrect #884 `base.sha`), #886 (mobile differentials FAB), #885 (Compare selected href; closed duplicate #883/#882), #887 (Therapy mode-home align + nested-main landmark fix). Closed superseded #884/#883/#882/#881/#877/#875. Fixed PR-policy bodies (Clinical KB governance checkbox), resolved Codex/CodeRabbit threads, Prettier on therapy landmark files, and re-synced branches through main between merges. No high-confidence residual P0-P1 on landed heads. | Hosted required checks green per PR before squash auto-merge (PR policy, Static, Unit, Build, Production UI where UI-scoped, PR required, Semgrep, Gitleaks, GitGuardian). Local: `check:pr-policy`, focused therapy landmark Vitest 5/5, Prettier on touched therapy files. No OpenAI/live Supabase writes. | +| 2026-07-18 | codex/chat-audit-remediation-pr-0a27 / PR #873 | 4bea60e9fc5c181fee33b2af27a4b6e3176eac27 | CI auto-resolve risk-routing regression and PR handoff | Confirmed the broader audit remediation was already merged through PR #814. Fixed the residual rename-routing gap by classifying both current and previous paths and explicitly covering `src/data`, reusable GitHub actions, and the action-pin/Codex guard scripts. Automated PR review then found one P2: an excluded old test path could still trigger high-risk routing when paired with a non-excluded new docs path. Fixed before handoff by deriving non-excluded paths first and using that same set for risk and complexity checks. No P0-P2 remained; no product runtime, clinical behavior, provider configuration, or production data changed. | Full `verify:pr-local` passed on the initial three-file patch: Node/npm runtime, changed-file format, ESLint, TypeScript, 301 Vitest files/2,788 tests, and 36 offline RAG fixtures; build skipped as unaffected. After the review fix, the Codex workflow guard, action-pin guard, Prettier, focused Vitest 54/54, and `git diff --check` passed. Hosted checks on the initial PR head passed; the review fix was also verified by the focused local checks before the final main merge. GitHub interactions were user-authorized; no Supabase/OpenAI/live-service command ran. | +| 2026-07-18 | PR #868 / codex/private-title-privacy-20260718 | 77482fc9e (privacy implementation + rollout-order follow-up) | title-vocabulary privacy, migration safety, and merge-readiness review | Fixed the historical private/non-indexed `document_title_words` exposure with a forward purge, exact indexed-public-title invariant, concurrency-safe `FOR SHARE` guard, constraint/ACL/RLS hardening, and a fail-closed postcondition. Review then found and fixed a P1 rollout interval by purging inside `20260717171000` before its table-backed corrector is installed, while retaining the forward migration for already-applied environments. The review thread was resolved; merged as `0df01d88ac36616a3f47e2e94e758432ef27999c` and verified on fresh `origin/main`. | Disposable Postgres replay and drift-manifest regeneration; focused schema Vitest 66/66 before the final docs-only sync; function-grant check; scoped ESLint; diff/manifest proof. Exact-head hosted Static, Unit coverage, Safety/config, Migration replay, PR required, policy, Semgrep, Gitleaks, and GitGuardian passed. Non-required Supabase Preview failed against a separate preview target and was not touched or rerun. No live Supabase/OpenAI/product-provider command or production migration apply ran. | +| 2026-07-18 | PR #865 / codex/docs-migration-runbook-safety-20260718 | 78ea2ccd6 | migration runbook, rollback safety, and clinical-governance review | Replaced stale sole-pending-migration guidance, prohibited restoring the unscoped corrector, added forward-only rollback and exact migration ordering, and marked the historical WIP report superseded. Review uncovered the pre-existing private title-word P1, so the runbook now blocks live rollout until a forward purge/invariant migration is merged and verified. The review thread was resolved; merged as `ec9142628752e6d11531e20a6ebf2e95cf39f865` with exact changed blobs verified on `origin/main`. | Documentation links 915, documented scripts 299, affected Markdown Prettier, static migration-order/rollout-blocker assertions, and `git diff --check` passed. Hosted Static, PR required, policy, Semgrep, Gitleaks, and GitGuardian passed; docs-irrelevant jobs skipped. No Supabase/OpenAI/database migration/deployment/provider call ran. | +| 2026-07-18 | PR #861 / codex/design-audit-main-safe-20260720-final | d8c1916ac (functional head 593d5aa00 + current-main merge) | design-audit/search cancellation merge review | Fixed unsupported Forms pathway claims, propagated cancellation through every retrieval RPC, removed duplicate favourites “Also matches” results, and resolved all four review threads. Merged as `3b2dd9ef76ff1c8c099fc1972065628d23b853b1`; exact `origin/main` commit and tree content were verified after merge. | Exact-head hosted Static PR checks, Unit coverage, Build, Safety and config checks, Production UI, Advisory UI, Migration replay, PR required, PR policy, Semgrep, Gitleaks, and GitGuardian checks passed. No Supabase, OpenAI, or other product-provider call ran. | +| 2026-07-18 | PR batch screenshot queue → #853 / cursor/pr-queue-land-3084 | 11ec0122f (tip of cursor/pr-queue-land-3084) | open-PR review + merge babysit | Reviewed screenshot PRs #833/#837/#845–#852 + Communication #19. #852/#848 already merged. Closed superseded/unsafe: #833/#837 (empty vs main), #845 (clinical-search over-expand; fixed in #853), #846/#847/#849 (Production UI red design-audit dupes), #850 (CONFLICTING), #851 (schema-test regressions), #726 (CONFLICTING CodeRabbit UTG). Unique safe fix landed in #853: agitation chart expansion without bare table/management over-trigger. Communication #19 inaccessible (repo not resolvable). | Focused Vitest clinical-search 42/42. Local verify:cheap unit suite hit pre-existing pdf-extraction-budget failures also on main (2 tests). Hosted #853 required checks green (Static/Unit/Build/PR required/policy/Semgrep/Gitleaks/GitGuardian). Squash-merged to main. Also closed follow-on dupes #854 (same failing tip as #851) and #855 (Clinical KB H1 reverts #814 Clinical Guide contract; Static/PR policy red). Communication #19 inaccessible. No OpenAI/live Supabase writes. | +| 2026-07-18 | PR batch screenshot queue → #808/#812/#814 | 44555ab9e414f615981eb444f46a62333c28ec18 | open-PR review + merge babysit | Screenshot PRs #784–#789 closed as superseded. Unique residual work landed via #808 and #812. Design-audit/Playwright stack landed via #814 after Production UI fixes (Clinical Guide H1, service mocks, reduced-motion dock asserts), presentations empty-query fallback, and CodeRabbit thread resolution (RightRail remount, IS DISTINCT FROM, no-op dropped trigram migration). #783 already merged. Communication #17 inaccessible from this token. | Hosted #808/#812/#814 required checks green including Production UI; migration replay green on #814. No OpenAI/live Supabase writes. | +| 2026-07-18 | PR batch screenshot queue → #808 / cursor/pr-queue-land-bfe7 | 3b54a785c7c6073024b6bae0182b6a9321154595 | open-PR review + merge babysit | Consolidated unique remaining work from screenshot PRs onto current main via #808 (Also matches placement, factsheets, audit metadata minimize with numeric storageRemoved, answer-progress UI gate, global-error role=alert). Superseded already-landed #800/#799/#801/#802 (via #798/#804). Closed conflicted/failing design-audit duplicates #789/#790/#803/#806/#807/#788 and older duplicates #748/#749/#751 without replaying Production UI regressions. | Hosted #808: required checks green (Static/Unit/Build/Production UI/Migration replay/PR required). Supabase Preview failed (non-blocking concurrent preview limit). Local focused Vitest audit+factsheets; sitemap:check; ci-change-scope self-test. verify:cheap PDF budget failures pre-existing on main. No OpenAI/live Supabase writes. | +| 2026-07-17 | PR #732 / claude/edge-to-edge-content-lv9x7k | 354f9bf31b56d811d8611a9b248f7aebc7cde082 | open-PR review + merge babysit | No high-confidence P0-P2. Phone shell/sheet/settings replace dvh clamps with h-full inside fixed inset-0 parents (iOS Safari toolbar collapse). Merged to main via auto-merge. | Hosted required checks + Production UI green; pairwise merge-tree with sibling UI PRs clean. | +| 2026-07-17 | PR #733 / claude/follow-up-design-sizing-250cop | 6565815b3bd000cb0224e52f8d0e4d84ae28371d | open-PR review + merge babysit | No high-confidence P0-P2. Follow-up chip row margin-bottom -0.125rem -> 0.4375rem stops overlap with composer pill. Merged to main. | Hosted required checks + Production UI green. | +| 2026-07-17 | PR #736 / claude/phone-touch-optimization-673ur4 | 755da28c29bf37e39fe2ab3d355f141a8f6eda35 | open-PR review + merge babysit | No high-confidence P0-P2. Touch floors reuse min-h-tap/size-tap; Therapy Compass phone overflow via tc-stack-sm/tc-scroll-sm. Merged to main. | Hosted required checks + Production UI green; globals.css auto-merges with #733. | +| 2026-07-17 | PR #737 / claude/therapy-compass-display-6kisnw | 594584dc79d9d6c14018dcce088357a251504d4f | open-PR review + merge babysit | No high-confidence P0-P2. Display rename Therapy Compass -> Therapy only (nav/sidebar/page/sitemap). Merged to main. | Hosted required checks + Production UI green. | +| 2026-07-17 | PR #738 / cursor/storage-bucket-migration-02e7 | b2755c814b47cdec6868bd009f3ca1cdbc3a7dea | open-PR review + merge babysit | Merge-ready storage-bucket idempotent migration + PR-policy base_ref checkout. Comment clarified for on-conflict reconciliation. Duplicate #710 closed. Merged to main. | Hosted required checks + Migration replay green; review thread resolved. | +| 2026-07-17 | PR #739 / cursor/pwa-optimization-merge-02e7 | 0d4aa5c73a4ff30274bb6286be04465286c815d7 | open-PR review + privacy fix + merge babysit | P1 fixed: removed backdated RAG migrations/schema seed that would regress public-only title corrector privacy. Also fixed sitemap API/redirect classification, services RightRail remount, focus=1 mode-menu flake, and merge conflict markers. Supersedes #735/#721. Merged to main. | Hosted full CI green including Production UI/Migration replay after fixes; unresolved CodeRabbit threads resolved. No OpenAI/Supabase writes. | +| 2026-07-17 | PR batch #732-#739 (screenshot queue) | 1ab611915e0630a527a533ee7ff16b82fd3e8982 | multi-PR merge babysit summary | Merged in order: #738, #733, #737, #732, #736, #739. #735 left open (token cannot close; CONFLICTING/superseded by #739). #710/#721 closed as duplicates. Residual: close #735 manually. | Hosted CI babysit + merge-tree; #739 Production UI flake fixed and re-verified green before merge. | +| 2026-07-17 | codex/ci-answer-progress-regression | bfa0ed3dfc69d5b333ba43479023cb9a8e8925d3 | CI verification gap | Fixed: the production answer-progress Playwright journey was excluded by both top-level and Chromium project matchers, while its filename also skipped the CI UI trigger; its assertions could therefore change without the required UI job executing. | Local static inspection of `playwright.config.ts`, `scripts/ci-change-scope.mjs`, Vitest globs, and CI workflow; classifier self-test confirms the journey now sets `ui_changed=true`. Focused Playwright execution reached the isolated Next build but was blocked by unavailable Google font downloads; no hosted CI or provider-backed checks run. | +| 2026-07-17 | PR #635 / claude/github-actions-codex-issue-f4t4s5 | ab09a8d52cc0a8a7e71b37885aaa358aae2522c8 | post-merge merge-readiness review | Already squash-merged to main on 2026-07-14 by BigSimmo. No open review threads or inline comments. CI required checks all green (Change scope, Static PR checks, Safety and config checks, Unit coverage, PR required, Semgrep, Gitleaks, GitGuardian); UI/build/migration jobs correctly skipped. Landed diff is test/guard hardening only for missing `CODEX_TRIGGER_TOKEN` graceful skip. No high-confidence P0-P2 defect. Source branch already deleted. No further merge action needed. | Hosted CI status via `gh pr checks 635` (all required pass); local `node scripts/check-codex-autofix-workflow.mjs` pass; focused Vitest `tests/codex-autofix-workflow.test.ts` 41/41. No OpenAI/Supabase/provider writes. | +| 2026-07-17 | PR #718 / codex/performance-latency-remediation-20260717 | b5f509744d4f4bac74d414644cd1802f64b97fa9 | CodeRabbit performance and SQL correctness follow-up | Resolved nine confirmed findings and dispositioned one stale test comment: document downloads revalidate signed URLs on every action; committed-generation filtering precedes detail pagination; enrichment fallback errors preserve identity; caller cancellation leaves the shared classifier flight alive; registry seeding preserves its cache signal; aliases emit canonical corrections; rate-limit success metadata is coherent; ambiguous upserts use named constraints; and grantable default ACLs fail closed. The proxy mock duplicate was not present. No remaining high-confidence P0-P2 defect was found. | Integrated focused Vitest 122/122; post-format Vitest 71/71; `npm run verify:cheap` passed runtime/policy/static guards, ESLint, TypeScript, and 2,684/2,684 tests; focused Prettier and `git diff --check`; disposable Docker replay, regenerated drift manifest, and transactional local SQL probes. No OpenAI calls, live Supabase DDL/migration/data write, deployment, or production mutation ran. | +| 2026-07-17 | PR #718 / codex/performance-latency-remediation-20260717 | d47ef7a329256687a615c33dd311806c2c1214a8 | hosted UI and migration-order merge-blocker follow-up | Fixed both integration defects exposed by the exact-head UI run: the document scope surface now triggers the deferred, deduplicated catalogue load, and viewer navigation closes unrelated disclosures before opening or scrolling to the selected section. Updated SSR-aware browser fixtures without restoring the removed detail request. Renumbered all three new migrations after the latest production migration and regenerated the drift manifest. No remaining high-confidence P0-P2 defect was found in the follow-up diff. | Focused Vitest 65/65; scoped ESLint and Prettier; `git diff --check`; isolated production Webpack build and TypeScript; focused Chromium 7/7 including both stress viewports; Docker schema replay and drift-manifest regeneration passed in 15 seconds with unchanged schema SHA. No OpenAI calls or live Supabase DDL, migration, rate-limit RPC, or data write ran. | +| 2026-07-17 | work | a185a59113619d160b29d8977b39a4a916e142b3 | component wiring and merge-readiness review | Reviewed the integrated PR #718 merge commit across its API routes, document viewer/dashboard wiring, universal-search streaming, owner catalogue cache, RAG response paths, migrations, and regression coverage. No new high-confidence P0-P2 defect was found beyond the previously recorded PR #718 reviews. The highest residual risk is exact-environment UI and full-suite verification because this checkout has no dependencies and its Node 20 runtime does not satisfy the required Node 24 toolchain. | Static merge/diff inspection; `git diff --check`; `git fsck --no-dangling --no-reflogs`. `npm run verify:pr-local` was blocked before checks because `tsx` is unavailable (`node_modules` is absent); installation was not attempted because the local Node 20.20.2/npm environment conflicts with `package.json`'s Node 24/npm 11 requirement. No provider-backed command ran. | +| 2026-07-13 | codex/lithium-answer-recovery-pr | c5fde11e64d8976e1c163d1b8618f58a52e0b8ff | lithium answer recovery and source governance | Fixed the provider-failure path with a grounded Australian source-backed fallback, a public-safe progress lifecycle, centralised Australian authority/context selection, and fail-closed locality repair. The live audit exposed and the branch fixed hierarchy identity false conflicts plus registry projections entering clinical metadata gates. The corrected audit/backfill found zero proposals, so no production write was made. No high-confidence defect remains. Residual risk is provider latency; live generation timed out but the grounded fallback completed. | `npm run verify:pr-local` passed: 1,988 tests passed/1 skipped, build/client scan, 36 fixtures, and 267 offline RAG tests. After review fixes, `npm run verify:cheap` passed with 1,992 tests passed/1 skipped. `npm run check:production-readiness` passed 5/5. `npm run test:e2e:critical` passed 9/9. `node scripts/run-playwright.mjs tests/answer-progress-ui-smoke.spec.ts --project=chromium` passed 2/2. `node scripts/run-eval-safe.mjs scripts/eval-rag.ts --question "Lithium dosing" --expect-australian --fail-on-threshold --json` exited 0 with one grounded FSH citation and no threshold/safety failures. `npm run audit:source-governance` reported 0 gaps/conflicts/proposals across 2,851 rows. `npm run backfill:source-metadata -- --locality-only` reported 0 changes. `git diff --check` passed. Full `npm run verify:ui` was not rerun after the aggregate runner lost its local server. | +| 2026-07-10 | codex/design-ux-review-fixes | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | design-system + UX + design | Five issue groups confirmed; scoped fixes applied in the worktree. | `npm run check:type-scale`; focused Vitest (19/19); `npm run typecheck`; `npm run lint`; `npm run sitemap:check`; browser/API-backed checks awaiting approval | +| 2026-07-11 | codex/design-ux-review-integration | 98093ec7b | branch-integration-review | Replayed the reviewed design and UX fixes onto current `origin/main`, preserved the lightweight evidence-panel boundary, and retained the merged quality fixes. | `npm run check:type-scale`; combined focused Vitest (8 files, 42 tests); runtime/action/sitemap/type-scale/lint stages of `verify:cheap`; typecheck blocked by stale worktree dependencies pending hosted clean install; `git diff --check` | +| 2026-07-09 | example/branch | abc1234 | branch-cleanup | Example: already merged into `main`; no unique patch content. | `git log --right-only --cherry-pick main...example/branch`; `git diff --name-status main...example/branch` | +| 2026-07-10 | codex/pr-testing-streamlining | 155c801cd58f797037d8aaa8b885405a1c599249 | working-tree diff: PR testing streamlining | Changes requested: 2 P1 clinical-gate defects and 7 P2/P3 scope, local parity, and UI-process defects. | `npm run check:ci-scope`; `npm run check:github-actions`; `npm run check:codex-autofix-workflow`; `npm run eval:rag:offline`; `npm run test:e2e:critical`; targeted scope classifications; `git diff --check` | +| 2026-07-10 | codex/pr-testing-streamlining | 155c801cd58f797037d8aaa8b885405a1c599249 | working-tree remediation review | All recorded P1-P3 findings fixed; no remaining high-confidence issue in the changed scope. | `npm run verify:cheap`; `npm run verify:pr-local`; `npm run eval:rag:offline`; `npm run test:e2e:critical`; `npm run test:e2e:advisory`; CI YAML parse; scope/action/Codex guards; `git diff --check` | +| 2026-07-10 | codex/review-autofix-flow | 155c801cd58f797037d8aaa8b885405a1c599249 | codex-autofix-flow | Fixed exact connector authorization, trusted-marker deduplication, and strict self-trigger matching; added regression coverage. | `npm run check:codex-autofix-workflow`; focused Vitest (4 passed); `npm run verify:cheap` pre-test stages passed before tool timeout; `npm test` (1,415 passed, 1 skipped); focused Prettier check; `npm run check:github-actions` | +| 2026-07-10 | codex/review-autofix-flow | 155c801cd58f797037d8aaa8b885405a1c599249 | codex-autofix-flow-followup | Fixed untrusted workflow-level concurrency interference and migrated the bridge from the Node 20 action runtime to `actions/github-script@v9`; added direct embedded-script execution coverage. | Focused Vitest (13 passed); targeted ESLint; `tsc --noEmit`; `npm run check:codex-autofix-workflow`; `npm run check:github-actions`; focused Prettier check; `git diff --check` | +| 2026-07-10 | codex/review-autofix-flow | 155c801cd58f797037d8aaa8b885405a1c599249 | codex-autofix-residual-fixes | Replaced one-shot PR deduplication with a three-cycle head-SHA cap, made comment permission failures fail visibly, and pinned `github-script` v9.0.0 to its verified immutable commit. | TDD red run (7 expected failures); focused Vitest green run (15 passed); `npm run verify:cheap` (152 files passed, 1 skipped; 1,426 tests passed, 1 skipped); focused Prettier check; `git diff --check`; official `git ls-remote` tag verification | +| 2026-07-10 | codex/architecture-review-fixes | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | architecture-review | Seven findings fixed in the working tree: three runtime cycles, unbounded owner caches, a client/server env boundary breach, reversed runtime-to-scripts ownership, and architecture-doc drift. | `npm run test -- tests/architecture-boundaries.test.ts tests/bounded-ttl-cache.test.ts tests/rag-score.test.ts tests/rag-cache-utils.test.ts tests/rag-cache-invalidation.test.ts tests/evidence-panels.test.ts tests/clinical-dashboard-merge-artifacts.test.ts`; `npm run verify:cheap`; `npm run check:production-readiness:ci` | +| 2026-07-10 | codex/architecture-review-fixes | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | frontend-architecture-review | Shared cycle/env findings confirmed and fixed; three additional findings fixed for defeated lazy boundaries, duplicate shell/dashboard subscriptions, and unstable search-context values. | `npm run test -- tests/architecture-boundaries.test.ts tests/evidence-panels.test.ts tests/clinical-dashboard-merge-artifacts.test.ts`; `npm run verify:cheap`; UI gate deferred pending explicit local-API approval | +| 2026-07-11 | codex/architecture-review-integration | b45df727b29aad8ba4ec5d4e96d1f0599d7dad8a | branch-integration-review | Replayed the reviewed architecture fixes onto current `origin/main`; preserved current CI/autofix history and found no new high-confidence defect in the integrated diff. | `npm run check:runtime`; `npm run check:github-actions`; `npm run sitemap:check`; `npm run lint`; `npm run typecheck`; focused Vitest (24 passed); full Vitest with `--testTimeout=30000` (1,433 passed, 1 skipped); `git diff --check` | +| 2026-07-10 | codex/quality-testing-typescript-fixes | 648abfa3f | code-quality + testing + TypeScript | 17 confirmed P2/P3 issues fixed; no P0/P1 findings; residual large-module complexity noted. | Focused Vitest and Playwright; full Vitest 1427 passed/1 skipped; coverage; lint; typecheck; production-readiness CI | +| 2026-07-11 | codex/quality-review-integration | d3fcef8bbc9ab12b929771421b532c1ed8b7e1e7 | branch-integration-review | Replayed the quality, testing, and TypeScript fixes onto current `origin/main` and consolidated the stronger standalone auth callback coverage into this branch. | Changed-file Prettier; focused Vitest (5 files, 23 tests); `git diff --check`; original branch full Vitest/coverage/lint/typecheck and targeted Chromium evidence retained | +| 2026-07-11 | codex/architecture-review-integration | 665103250ccc33b5870862b8d8467607a1ae5d23 | coderabbit-followup | Fixed POSIX project-root identity collisions and closed dynamic-import and self-cycle gaps in the architecture regression guard. | Local-server Vitest passed; architecture-boundaries Vitest passed (6 tests); `npm run typecheck`; focused Prettier; `git diff --check` | +| 2026-07-11 | codex/architecture-review-followup | f5deaaee98864f1d32c1060ae14966a4f5975872 | coderabbit-test-followup | Removed probabilistic no-collision assertions from the local identity test and replaced them with deterministic normalization, repeatability, ID-shape, and port-range checks. | Local-server Vitest (2 passed); focused Prettier; `git diff --check`; hosted CI/SAST/Secret Scan passed on the reviewed head | +| 2026-07-11 | codex/pr-check-followup | 298e8f5bec2a4673dd225da3f446f008b8f25953 | residual-pr-check-hardening | Ported only the three PR-check improvements not already merged by PR #454: pinned Supabase CLI/cache ownership, advisory Semgrep coverage for Edge Functions, and regression guards for both contracts. | `npm run check:github-actions`; `npm run check:ci-scope`; focused Prettier; `git diff --check` | +| 2026-07-11 | claude/mobile-search-bar-fix (PR #456) | b73196c2e2e4a536804cdcdb50879c29e2c582c5 | PR required-testing review | All 4 Advisory UI regression failures confirmed PR-caused via A/B against pre-merge main (01f2cee0d): the 640px mode-home query moved the phone composer out of the hero, contradicting the design tests; residual ≥640px vanish remained when the slot never mounts. PR merged (b32c17b34) before the rework landed; follow-up fix shipped on `claude/mode-home-composer-hero-fix` (0px hero query restored, portal-outcome inline fallback, new `@critical` composer-presence test). Also found: main CI red on every push — missing `RAG_QUERY_HASH_SECRET` secret fails the deployment boot smoke and skips `release-browser-matrix`; owner adding the secret. | Local chromium A/B (PR head 4/5 fail vs baseline product-pass); rework targeted run 6/6 pass incl. new `@critical`; `npm run typecheck`; `npm run lint`; focused Prettier check | +| 2026-07-11 | PR #487 / claude/answer-page-design-polish-ffd5a6 | b2c772606126f8323424bc9c0b636bac77c08789 | open-PR review, unresolved comments, and CI | Two findings fixed: expanded weak/unsupported prior answers retain an explicit source-review warning, and cross-mode search actions no longer log an incorrect detail-open telemetry event. Added a persisted prior-turn browser assertion. No additional high-confidence defect was found in the changed scope. | Focused answer-render and cross-mode Vitest (20/20); TypeScript; focused Prettier; `git diff --check`. Browser assertion delegated to hosted CI because Turbopack rejects the isolated worktree's external node_modules junction. | +| 2026-07-11 | PR #469 / claude/response-formatting-cleanup-b57a9c | f1864308e0b287bb83b2a13daca4c3aa2ab95a3e | open-PR review, unresolved comments, and CI | P2 fixed: the OCR bullet sanitizer now preserves line-start O blood values when followed by blood or red-cell noun tails while still stripping non-blood bullets such as `o Negative screen`. No additional high-confidence defect was found in the nine-file diff. | Focused sanitizer/extractive Vitest (75/75); TypeScript; focused Prettier; `git diff --check`. Production-readiness script ran fail-closed with provider variables cleared and reported only expected missing provider configuration. | +| 2026-07-11 | PR #466 / claude/search-timeout-failure-s6aiuj | 54d52292eeb9e1c7856b3dad89d1b72e0d49fd53 | open-PR review, unresolved comments, and CI | P2 fixed: SSE progress/token/error emission now tolerates a client cancellation racing an enqueue, so the catch path cannot throw while reporting the original stream error. No additional high-confidence defect was found in the six-file diff. | Focused SSE and search utility Vitest (13/13); TypeScript; focused Prettier. Hosted advisory browser failure was shared stale assertion drift and is rerun after this push. | +| 2026-07-11 | PR #483 / claude/differentials-page-review-a3daaf | 36cca1bf7c13718dcc60a61b75272c7c4fa5cd44 | open-PR review, unresolved comments, and CI | P2 fixed: authenticated diagnosis detail responses now derive related links, overlap links, and comparison presentation from the owner's current diagnosis and presentation rows rather than the bundled snapshot. Added an owner-only catalog regression test. No additional high-confidence defect was found in the changed scope. | Focused differentials route/catalog Vitest (26/26); TypeScript; focused Prettier; `git diff --check`. Production readiness ran fail-closed with provider variables cleared and reported only expected missing provider configuration. | +| 2026-07-11 | PR #489 / claude/document-viewer-redesign-55b68b | 9130c8b15a22dbbc965464a247ae930c04f2da62 | open-PR review, unresolved comments, and CI | P2 fixed: document deep links now expand the mobile indexed-text details and scroll the branch-specific visible mobile or desktop chunk instead of the first duplicated DOM match. Added focused desktop/mobile assertions. No additional high-confidence defect was found in the three-file diff. | Focused Prettier; TypeScript; `git diff --check`. Browser proof delegated to hosted CI because Turbopack rejects the isolated worktree's external node_modules junction. | +| 2026-07-11 | PR #488 / claude/code-review-42a2c3 | 7a8ea145013444f7cc29631499f48a8b0454937a | open-PR review, unresolved comments, and CI | Confirmed the remaining public error-code finding was already fixed at the reviewed head. Added the two focused advisory UI assertion stabilizations required by the hosted failure logs; no additional high-confidence defect was found in the changed scope. | `tests/http-error-response.test.ts` (3/3); Prettier check on affected files; `git diff --check`; hosted required CI passed before the test-only fix. Browser rerun deferred to hosted CI because Turbopack rejects the isolated worktree's external node_modules junction. | +| 2026-07-11 | PR #473 / claude/mobile-search-bar-popup-bx163m | 7cef01852a9713ec51184578868212df5805adbf | open-PR review, unresolved comments, and CI | P1 merge-conflict markers removed from the shared search header while retaining the all-viewport hero portal and inline fallback. P2 fixed: phone-hidden command results can no longer open, report expanded state, receive keyboard navigation, or execute an invisible selection. The launcher and global-shell conflict findings were already resolved at the reviewed head. | No conflict markers; TypeScript; focused Prettier; app-mode/search/universal-search Vitest (37/37); `git diff --check`. Browser proof delegated to hosted CI because Turbopack rejects the isolated worktree's external node_modules junction. | +| 2026-07-11 | PR #461 / claude/differentials-search-ux-polish-f2ff06 | 8bf455325b0915898417dd66aa61d419080c5528 | open-PR review, unresolved comments, and CI | Preserved diagnosis selections through workflow-aware comparison routing, constrained cross-workflow IDs to supported candidates, and removed comparison controls from presentation rows. Restored all four required core UI smoke markers and hardened answer/search mocks against invalid payloads and stale-response races. | Focused differential Vitest (22/22); TypeScript; full required CI, advisory Chromium, CodeRabbit, Semgrep, Gitleaks, and GitGuardian passed on the final head. | +| 2026-07-11 | PR #485 / claude/home-answer-page-layout-rtx10n | 96dbd0394888d5a52c916dba52b94d0f83e4507e | open-PR review and CI | Integrated the all-viewport hero composer, retained the compact hero scale, made composer width continuous across 1024px, and restored a mobile centering height floor. Review ledger SHAs were expanded to full IDs and source guards cover the layout invariants. | Focused source guards (30/30); TypeScript; full Vitest (1,594 passed, 1 skipped); required and advisory UI, build, static, unit, CodeRabbit, Semgrep, Gitleaks, GitGuardian, and post-merge main CI passed. | +| 2026-07-11 | PR #481 / claude/perf-r2-auth-roundtrip | 24fad070fb9834510309e74e1dc0e216cd08646b | main-integration follow-up | The stacked PR had merged into an already-merged feature base, so its reviewed delta was not present on `main`. Replayed only PR #481's first-parent patch onto current `main`, preserving current answer-route behavior while adding client payload trimming and cookie-authenticated proxy refresh coverage. | `npm run verify:cheap`; focused proxy/payload/clinical-safety Vitest (18/18); `npm run check:production-readiness:ci`; focused Prettier; `git diff --check`. | +| 2026-07-11 | codex/repository-review-remediation | 70ec6409a11a85e1678eb4b320519624673a94a0 | comprehensive repository report remediation | Revalidated all 17 findings from the 2026-07-09 comprehensive review. Remediated the current workflow injection, document scope, numeric faithfulness, ingestion lease/ownership, transactional enrichment replacement, request and upload budgets, browser identity isolation, PHI retention, public DTO, cache cancellation/versioning, evidence labelling, modal focus, misleading controls, telemetry, orphan-module issues, and two server/client loading-boundary failures exposed during browser QA. The runbook filename was already fixed on the reviewed head. | TypeScript, lint, focused Vitest (68/68), full offline Vitest (1,607/1,607; 1 skipped), production build, client-bundle secret scan, Docker schema replay and regenerated drift manifest, isolated full migration reset, local lease-reclaim concurrency proof, cache/enrichment SQL smoke, configured production-readiness (`READY`), Chromium document-scope/modal QA (4/4), manual disabled-control accessibility snapshots, and `git diff --check` passed. Read-only live drift found 26 unexpected differences, including the three unapplied remediation functions; no live mutation was performed. | +| 2026-07-11 | codex/responsive-accessibility-audit | 66883b7c86f606e617db4bee2bab6f85fff59bdc | responsive and accessibility audit | P2 fixed: the mobile expandable clinical table no longer wraps semantic table content in a duplicate ARIA button, and its full-screen dialog now traps keyboard focus while preserving Escape dismissal and focus return. Added responsive ARIA and focus regression coverage. No additional high-confidence responsive or accessibility defect was reproduced across audited primary app modes and 320px-1440px widths. | Multi-width DOM/geometry/contrast audit; a11y media (2/2); overlap (12/12); table Vitest (6/6); TypeScript; lint/static checks; full Vitest (1,598 passed, 1 skipped); `npm run verify:ui` (132/132); Prettier; `git diff --check`. Provider checks skipped. | +| 2026-07-13 | codex/repository-review-remediation | b72cefd2f5c0da79788cc0f8d0d40837c711ae92 | live-drift reconciliation and release review | Reconciled production migration history and live-ahead governance/retrieval definitions without mutating live; removed the migration-version collision; made captured OUT-signature changes fresh-replay-safe; preserved production ACLs; added a forward lexical-score correction; and reduced read-only live drift from 27 differences to five changes fully explained by the unapplied remediation migrations. No remaining high-confidence source defect was found in the reviewed scope. | Docker schema replay and regenerated manifest; isolated full Supabase migration reset; focused Vitest 74/74; full Vitest 1,712 passed/1 skipped; lint; typecheck; production build and client-bundle secret scan; configured production-readiness READY; targeted Chromium scope/modal/control QA 4/4; read-only live drift; Supabase security advisor clear. Live apply not run because authorization remained read-only. | +| 2026-07-13 | codex/repository-review-remediation | 452275824294564a1e08e6bec169bd4af744d09a | live migration apply and post-apply review | Applied the four reviewed forward migrations to `Clinical KB Database`, aligned repository filenames to the generated production versions, and corrected the schema snapshot so the legacy unfenced commit overload remains inaccessible to `service_role`. Live drift is clean and no active ingestion/enrichment overlap or duplicate open ingestion group was found. | Ran `npm run check:drift`: passed clean. Ran `npm run check:production-readiness`: READY. Ran Docker schema replay: passed. Ran focused concurrency/retrieval Vitest: 166/166 passed. Ran offline RAG: 36 fixtures and 60/60 contract tests passed. Ran M13, retrieval-owner, schema-health, lexical-retrieval, concurrency, and ACL live probes: passed; lexical retrieval returned 12 truthfully scored results. Not completed: full provider retrieval-quality evaluation exceeded the local command window; deterministic live retrieval checks passed. | +| 2026-07-13 | codex/fix-48h-review-findings-current | 49735663370735a60870d065ed0de3b9d34e077f | last-48-hours PR remediation | Revalidated the last-48-hours findings on current main after PRs #538 and #540; retained only unique fixes across auth/cache isolation, stale-response protection, upload/routing/UI behavior, RAG coalescing, telemetry, worktree tooling, and SAST enforcement. No remaining high-confidence local defect was found in the changed scope. The approved live drift check reported only the five differences already explained by unapplied migrations from #540. | Focused Vitest 107/107; `npm run verify:pr-local` (1,762 passed, 1 skipped; production build and client-bundle scan; offline RAG 60/60); critical Chromium 8/8; live `check:drift`; `git diff --check`. Full Chromium remains advisory after the earlier runner hang; the required critical subset passed on current main. | +| 2026-07-13 | codex/public-anonymous-access | 7f3eded3d17c9daf6a443c9cac3f0553e4e9321b | production UI design and accessibility review | Fixed the fullscreen clinical-table focus leak and divergent modal implementation, removed the non-native table-surface control, and lifted meaningful production metadata from 8-10px to the 11px floor with stronger muted contrast. No remaining high-confidence defect was found in the reviewed visual scope. | Baseline/final screenshots at 1440x1000 and 390x820; focused Chromium table expansion 3/3; focused Vitest 6/6; `npm run typecheck`; targeted ESLint; type-scale and focused Prettier checks; `git diff --check`. `verify:cheap` timed out in full lint/test execution; full `verify:ui` deferred under the API confirmation boundary. | +| 2026-07-13 | main (PR #570 squash, glass header) | cc6bfc1c80902ca3c91e5ba2ebe78a80f3fd9e14 | post-merge review: CSS/visual/a11y/perf + logic/regression | No P0/P1. P2s confirmed and fixed in follow-up: build pipeline dropped ALL hand-authored backdrop-filter declarations (manual -webkit- duplicates confused Lightning CSS — header scrim, bottom dock, and composer pill were tint-only in every engine); scrim retuned to carry the bar's frost alone (header backdrop-root removed) with masks fading to true zero; private-scope alert made sticky inside main (was scroll-away in non-answer modes); scroll-hide reporter reset on breakpoint-gate change; non-forced fallback backgrounds layered to preserve the utility-wins contract. | Ran custom Playwright probe (`node scratchpad/probe-blur.mjs`, Chromium 390x844): baseline showed `getComputedStyle(.edge-glass-header-backdrop).backdropFilter === "none"` on all three passes, after fix `blur(14px)/blur(20px)/blur(26px)` — passed; Ran `node scripts/run-playwright.mjs tests/ui-smoke.spec.ts --project=chromium -g "glass header\|collapse hide\|private-scope alert\|phone (short\|long) answer stays"`: 6/6 passed; Ran `node scripts/run-playwright.mjs tests/ui-smoke.spec.ts --project=chromium` (full file): 71 passed, 4 failed (pre-existing `/privacy` heading test, fails identically on clean main); Ran `npm run verify:cheap`: exit 0 (1935 unit tests passed); Ran `npm run format:check`: passed; Not run: WebKit/Safari real-device check (no WebKit runner in this environment — served client chunk verified to pair `-webkit-backdrop-filter` with each declaration for Safari <= 17) | +| 2026-07-13 | codex/rag-review-followup | 755ac9e517a3b81f8e12a119f80f3769dd58ae4e | PR #575 post-merge review finding remediation | Fixed the P1 path that could combine a medication amount and route from separate chunks, expanded the shared explicit amount/route/frequency intent detector, corrected route-only failure classification, and added microgram-symbol coverage. Requested attributes must now be co-located with the medication subject before the text fast path is accepted. No additional high-confidence defect was found in the changed scope after integrating the production answer-budget fix from PR #580. | Focused Vitest 143/143; `npm run eval:rag:offline` (21 files, 265/265); `npm run typecheck`; targeted ESLint; full `npm test` (211 files passed, 1 skipped; 1,946 tests passed, 1 skipped); PR-local dry-run selected runtime, format, lint, typecheck, full tests, build, and offline RAG; `git diff --check`. `verify:cheap` passed all pre-test stages but its 10-minute host bound expired during the full suite; the same suite then passed independently with a longer bound. | +| 2026-07-13 | origin/main (detached review worktree) | c523cabeae4b68ebdf569ecbc18d9f5a7b5afbf1 | repo-wide audit | Changes requested: one P1 clinical-answer trust cluster; three P2 tenancy/reindex guardrail issues; three P3 information-disclosure, dead-code, and transitive-deprecation cleanup items. No P0 found. | `npm run verify:cheap` (1,721 passed, 1 skipped); `npm run test:coverage` (thresholds passed); `npm run build`; `npm run verify:ui` (137/137); `npm run eval:rag:offline` (36 fixtures, 60 tests); format, Edge Function, Codex workflow, import/secret/dead-reference scans. Provider-backed checks skipped. | +| 2026-07-13 | HEAD / origin/main (detached worktree) | 04c1d0b036cae8af4dabfc692055c7aab93d5888 | OpenAI-facing API and integration review | Read-only review found one P1 clinical-streaming defect and four P2 reliability/API-contract issues: provisional clinical prose is exposed before validation; mid-stream failure can silently trigger a second buffered generation; answer caches are not model/prompt fingerprinted; OpenAI access/model errors are under-classified; and table-fact route IDs are not validated before database access. GPT-5.6 migration also requires replacing the legacy prompt-cache parameter. No application code was changed. | Static call-flow, prompt, model, schema, streaming, cache, error, route, test, and governance inspection; official OpenAI model/Responses/structured-output/streaming/prompt-cache guidance reviewed. Provider-backed checks were not run. Local tests were not run because this worktree has no installed dependencies (`openai`, `vitest`). | +| 2026-07-13 | codex/openai-gpt56-rag-upgrade | 4fa4c35e98d60fc104639089494b271a5f1951fd | OpenAI and RAG review remediation | Remediated all recorded findings: clinical SSE is final-only across mixed-version deployments; buffered generation cannot silently replace a partial stream; answer caches are generation/retrieval fingerprinted; GPT-5.6 model, prompt-cache, workload routing, parsed-output, usage, safety-identifier, and error handling are capability-aware; and table-fact UUIDs fail with the shared 400 contract. Added rollout and governance documentation. Independent final review found no remaining high-confidence issue after the mixed-version client guard was added. | Replaced the external `node_modules` junction with a clean `npm ci`; `npm run verify:cheap` passed runtime/policy/lint/typecheck and full Vitest (211 files passed, 1 skipped; 1,941 tests passed, 1 skipped); focused cache/stream tests, offline RAG preflight, production-readiness CI, changed-file Prettier/ESLint, and `git diff --check` passed before the current `origin/main` integration. Provider and post-merge checks are recorded separately when complete. | +| 2026-07-14 | codex/openai-gpt56-rag-upgrade | f83d7d49b32fb9bb8b8c2ede99e93675574c88d8 | PR review follow-up | Confirmed and remediated five scoped review findings: answer-quality JSON no longer retains owner-scoped answer previews; valid tablet/mmol dose phrases are accepted; review-fallback routing uses a shared token; the classifier sends only supported structural schema constraints and validates bounds after parsing; and equivalent maximum-dose wording remains eligible. Replaced the redundant dashboard source-string guard with the existing mixed-version browser behavior regression. | Focused Vitest 123/123; offline RAG 36 fixtures and 279/279 tests; `npm run typecheck`; `npm run verify:cheap` passed runtime/policy/lint/typecheck and full Vitest (234 files passed, 1 skipped; 2,229 tests passed, 1 skipped); `git diff --check`. Provider-backed retrieval remains separately blocked by exhausted OpenAI embedding quota after case 24/36. | +| 2026-07-14 | PR #626 / codex/openai-gpt56-rag-upgrade | 1c6c780f30f33d47e7dfb57dce56d5fd0501d46e | PR review follow-up | Confirmed and remediated three remaining scoped findings: empty `max_output_tokens` responses now reach the RAG retry path; equivalent maximum-dose wording satisfies the maximum-dose intent gate without requiring literal `maximum` or `dose` tokens; and long-form clinical dose units are accepted consistently by evidence extraction and final-answer validation. | Focused Vitest 99/99; offline RAG 36 fixtures and 279/279 tests; `npm run typecheck`; `npm run verify:cheap` passed runtime/policy/lint/typecheck and full Vitest (235 files passed, 1 skipped; 2,238 tests passed, 1 skipped); `npm run build` generated 636 static pages and passed the client-bundle secret scan; configured production readiness was READY with three documented warnings; `git diff --check`. Provider-backed retrieval remains separately blocked by exhausted OpenAI embedding quota after case 24/36. | +| 2026-07-14 | PR #626 / codex/openai-gpt56-rag-upgrade | 0301d59ab8d6afeecd340bb08b40b98ff6b95c6c | PR review follow-up | Confirmed and fixed one additional maximum-dose wording gap discovered after the current-main merge: `not to exceed` and `not more than` numeric limits now reach the same validated extractive path as the existing equivalent phrases. | Focused Vitest 84/84; offline RAG 36 fixtures and 279/279 tests; `npm run typecheck`; focused Prettier and `git diff --check`. The immediately preceding merged head also passed `npm run verify:cheap` (236 files passed, 1 skipped; 2,242 tests passed, 1 skipped), production build, and all hosted required checks. Provider-backed retrieval remains blocked by exhausted OpenAI embedding quota after case 24/36. | +| 2026-07-14 | PR #626 / codex/openai-gpt56-rag-upgrade | f2652021c1f14533f17c4a9724ef6dff17dd43f5 | PR review follow-up | Confirmed and fixed the two final scoped findings: GPT-5.6-and-later model families now use the TTL prompt-cache request shape, and unrelated prose containing `maximum` can no longer pass the maximum-dose evidence gate without a clinical dose value or explicit dose wording. | Focused Vitest 99/99 before current-main integration and 163/163 after it; offline RAG 36 fixtures and 279/279 tests; `npm run typecheck`; `npm run verify:cheap` passed after integrating `origin/main` (239 files passed, 1 skipped; 2,248 tests passed, 1 skipped); focused Prettier and `git diff --check`. The reviewed head passed every hosted required check before these narrow fixes. Provider-backed retrieval remains blocked by exhausted OpenAI embedding quota after case 24/36. | +| 2026-07-13 | claude/audit-ci-browser-gate-2026-07-13 | 65a8a0c9e7c3a165b09a1ad79e893af8c2c6973b | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | claude/beautiful-hamilton-5df54c | 5e2e90f0a3af4039c7e15515151569228476a60c | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 5e2e90f0a3af4039c7e15515151569228476a60c origin/main`. | +| 2026-07-13 | claude/beautiful-williamson-57d144 | 072434cd5f59b1441dd114958489028972c42d34 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #474; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/chunking-ocr-eval-plumbing-e1ac6b | b65de578ad50f128492d1ed316c6f11eb4a4dfc6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #508; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/codebase-review-ade6ed | 8a26e238b495f2e2fdae7227c8a9a915bc27f325 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #510; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/cranky-swirles-619a39 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | +| 2026-07-13 | claude/cross-border-openai-disclosure-2f170b | 14a155aabcecb79a5fbdfd442a1d684ecb901fa4 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #530; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/database-rag-image-visibility-d6b809 | 7a51b109df0575f570cc3351d18552d43e2f1e9f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #515; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/design-sync-78bad6 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | claude/desktop-plus-menu-design-1a4bb2 | 0e8752a7983e114c959d1e878ea80544a32900ce | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #478; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/differentials-search-ux-polish-f2ff06 | f7a3d95f54248d5c71c11084d0e5b60f2a83ae98 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor f7a3d95f54248d5c71c11084d0e5b60f2a83ae98 origin/main`. | +| 2026-07-13 | claude/document-viewer-design-review-4fc027 | a82f7c3974f870a661d1f1249b29dc79d449ab15 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #509; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/document-viewer-review-fixes | e765b3818b4bdda32b0bee4af7c9091f5d86d86d | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #505; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/edit-tools-responsive-layout-a2dd0b | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | +| 2026-07-13 | claude/eval-citation-coverage-strict | f7fb001c5ceb98874f45b4c8dad91e1b7e9c3f38 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #564; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/favourites-page-redesign-5a9c1b | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | +| 2026-07-13 | claude/forward-codify-retrieval-rpcs-05a3dc | e8ee696dd6db4a991e6964d96e4ded40131596a5 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor e8ee696dd6db4a991e6964d96e4ded40131596a5 origin/main`. | +| 2026-07-13 | claude/generation-token-starvation-fix | 65a8a0c9e7c3a165b09a1ad79e893af8c2c6973b | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | claude/git-workflow-prompt-970dd4 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | +| 2026-07-13 | claude/github-pr-testing-review-dde615 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | +| 2026-07-13 | claude/hero-composer-hydration | eb7cc81c0513da46cd07b9fe1a189952914a5613 | branch-cleanup | Redundant: no patch-unique non-merge commits remain against `origin/main`; eligible for deletion when unreferenced. | `git log --right-only --cherry-pick --no-merges origin/main...claude/hero-composer-hydration` returned empty. | +| 2026-07-13 | claude/hero-composer-teardown-microtask | af9ada42fa069761d21fc1a57e60a80d89e15dbc | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | claude/home-page-sizing-plan-02011e | 05b5977c4c7152ede77039543b5ac6c686c9d905 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #517; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/icon-design-review-393584 | 370cd7bdd6ca45484c14d04b66c51c3394472dd0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #519; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/icon-glyph-refinements | 7e807c1c7346ae998557911421500dce70fe3cd0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #523; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/july8-migration-batch-live-7d76fb | c78a4d7ff570179f28a33f03759e1d91f56d0f65 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #528; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/lithium-search-issue-7903a2 | a6b2dbcd6e289ada4d8abb88861dc43063236058 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #460; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/magical-bouman-0a04a4 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | +| 2026-07-13 | claude/missing-search-bar-a1b3d5 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | +| 2026-07-13 | claude/mobile-search-bar-fix | b73196c2e2e4a536804cdcdb50879c29e2c582c5 | branch-cleanup | Redundant: no patch-unique non-merge commits remain against `origin/main`; eligible for deletion when unreferenced. | `git log --right-only --cherry-pick --no-merges origin/main...claude/mobile-search-bar-fix` returned empty. | +| 2026-07-13 | claude/mode-home-composer-hero-fix | 50fa59812a84081bc9b2c8cbac79aa3b089c7031 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #470; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/mystifying-wing-55853c | c9c3d2b0c0e71f09e8153f60fa6b2508dccddc25 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor c9c3d2b0c0e71f09e8153f60fa6b2508dccddc25 origin/main`. | +| 2026-07-13 | claude/observability-alerts-rollback-8d9b79 | 67144fe56b776fb58d2518d057d41612399f65b6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #536; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/perf-r2-bundle-hygiene | cb9c0f9502f61bd29fe3761e1ad3122a3233a27c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #475; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/perf-r2-eval-gated | 901fae59eca2c00c99c3b4ae79a84642b405672a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #486; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/perf-r2-hot-path | 848fa9248a48ac608ca1ca470cd85d203e4b036f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #480; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/perf-r2-network-caching | 7cea28560ae57777e449d672a265a20b4c11b44f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #479; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/perf-r2-payload-trim | 0c68d07d9e570848b76f76dc06d40a340fbc3e88 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #482; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/perf-r2-plan-cache-migration | 5f36914c0440f1dba6044c8d9ed6c9dc069e66d0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #484; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/pia3-doc-residual-cache | 4494a830df6682ce5edcaf61d6a178af162b50d7 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #535; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/privacy-footer-responsive-adbd0c | ad5ef99f68dfd07d56a2ad9e2d0871b7deaf882c | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | claude/prompt-improvement-skill-2e87bd | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | +| 2026-07-13 | claude/prompt-perfection-3d64fe | a51871954182c524d961eb077e5983fb87eb2260 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor a51871954182c524d961eb077e5983fb87eb2260 origin/main`. | +| 2026-07-13 | claude/pt-audit-pr7-ci-hardening | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | claude/quality-eval-expected-doc-coverage | c4868031b2294d26a5d35b06f9ecbb4c9b55ac28 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #562; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/rag-cross-reference-guard | abb648e0bd64631db41412148d93eee39eb4f5d2 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #538; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/rag-optimization-phase-2-748178 | 501b949e33ea1ac35abef7644a3cdc0aeb18cefd | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #526; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/rag-review-improvements-f1bf84 | 7154493e5e7c5ed1e2bd484503bfdbca94c23756 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #514; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/repo-next-steps-e53523 | 3f7d6d76f597f2a0311af1052480f84b68ecc259 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | claude/repo-productivity-ideas-2e8b98 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | claude/repo-task-recommendations-f32752 | 00ff16704e6f290148d888c3247cf75ca0c1faa2 | branch-cleanup | Retained for open PR #577. | GitHub open-PR query matched this branch at classification time. | +| 2026-07-13 | claude/review-chats-cleanup-83b6f5 | 70ec6409a11a85e1678eb4b320519624673a94a0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 70ec6409a11a85e1678eb4b320519624673a94a0 origin/main`. | +| 2026-07-13 | claude/scroll-icon-design-8b7675 | 636630a035df2da70353e4b7601d97744cdf0819 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #467; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/search-page-redesign-d50902 | 7d077a1d5fc3cbd7238bc8dc3f33733000684261 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #501; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/seeded-owner-catalogue-sync-7544e2 | 9613f9307be5728bb8dae0c56d6a35f053daad4c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #507; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/site-formatting-polish-b91374 | 619dd99845beb02aa93f30377011b89d70fcb814 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #494; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/site-performance-speed-61d154 | 46624913def3eaddaa1cc5aa4411f769e9c98b77 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #458; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/smart-search-presentations-differentials-a199bb | 0399ec7c3789cb892e0314454f971ba554839eab | branch-cleanup | Redundant: no patch-unique non-merge commits remain against `origin/main`; eligible for deletion when unreferenced. | `git log --right-only --cherry-pick --no-merges origin/main...claude/smart-search-presentations-differentials-a199bb` returned empty. | +| 2026-07-13 | claude/supabase-auth-connection-cap-8907c5 | d28cf149c36f0e44d3bde49068187f262190d74e | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #525; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/supabase-postgres-practices-3eeeb0 | 6d26f87c245eeb5e57c564cddbdd6a4680d7862f | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 6d26f87c245eeb5e57c564cddbdd6a4680d7862f origin/main`. | +| 2026-07-13 | claude/tools-responsive-layout | 45f646e1fdf43bf1201007ec9a502eed2e42717b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #464; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/wonderful-fermat-f00d79 | d6284c75b022f813f205fd3a73cce92b057a2a17 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #477; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/worker-edge-deploy-path-988cc3 | 1b6f02170b485fe21ba56537ed6ed1061cc11679 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #527; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/worker-server-only-boot | 964564f0477635d252238612586e1f83dda3b245 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #493; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/anonymous-document-access-tests | 4a3d954553a8c0618bd9c41baaadedd84bbca821 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #559; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/api-review-fixes | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 66883b7c86f606e617db4bee2bab6f85fff59bdc origin/main`. | +| 2026-07-13 | codex/branch-cleanup-2026-07-13 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | codex/codex-review-single-pass | 950e331006fe0b2d24447ea5b5df2bb83e69799b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #558; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/deep-memory-live-reconcile | 59a976be639e1dede8acec65c1c14166ca71cadb | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #569; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/dirty-work-pr-split | c688eaf1a041b466aad1259e688dbfbe4329f700 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | codex/domain-5-clinical-safety | d14ef4b4dd43d5e08c11c08a70492da0c1abe4ad | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor d14ef4b4dd43d5e08c11c08a70492da0c1abe4ad origin/main`. | +| 2026-07-13 | codex/domain-6-release-hardening | 9ffc2a5af1726f5fedc4d981b49981c902a2342a | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 9ffc2a5af1726f5fedc4d981b49981c902a2342a origin/main`. | +| 2026-07-13 | codex/domain4-data-lifecycle | 9ffc2a5af1726f5fedc4d981b49981c902a2342a | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 9ffc2a5af1726f5fedc4d981b49981c902a2342a origin/main`. | +| 2026-07-13 | codex/dose-fast-path-context | 26c93547d8ec46c0658bf98194fc2c5d1a6b383f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #575; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/fix-48h-review-findings | a035fa7d7ce16ba2758886b16b69dee0ff86f820 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #550; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/fix-48h-review-findings-current | 881a24242c369f768f2517d7706102cb565b731c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #551; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/fix-registry-indexing-health | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | codex/indexing-health-scan | 13b19b5746625081be85894f6d1c345c57c16225 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #561; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/lithium-answer-recovery | 16e51a167ef349ef516dc862ccaa278091bf63f7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | codex/live-remediation-apply | f6a50117903445414facefa1b239033f2fec3313 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #568; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/openai-gpt56-rag-upgrade | 04c1d0b036cae8af4dabfc692055c7aab93d5888 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | codex/opioid-dose-retrieval-gate | b8c5cb785e1d52d3af05212cf2bae10d412a9869 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #571; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/performance-deployment-review | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 66883b7c86f606e617db4bee2bab6f85fff59bdc origin/main`. | +| 2026-07-13 | codex/performance-prompt-audit | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 66883b7c86f606e617db4bee2bab6f85fff59bdc origin/main`. | +| 2026-07-13 | codex/pr-461-fixes | 8bf455325b0915898417dd66aa61d419080c5528 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 8bf455325b0915898417dd66aa61d419080c5528 origin/main`. | +| 2026-07-13 | codex/pr-466-fixes | b341fed3d6f8d94f1573db1ff3939e112c3240f0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #466; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/pr-469-fixes | 3a252e7cd53b8a825aef5d4432ff0f7373618c56 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #469; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/pr-473-fixes | ceccc7219cbd1bf2e0f5b166de94f293c7c25bfe | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor ceccc7219cbd1bf2e0f5b166de94f293c7c25bfe origin/main`. | +| 2026-07-13 | codex/pr-481-fixes | 24fad070fb9834510309e74e1dc0e216cd08646b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #481; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/pr-481-main-integration | a6a9e0292395bb53a832e894c8ce10707d425e57 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor a6a9e0292395bb53a832e894c8ce10707d425e57 origin/main`. | +| 2026-07-13 | codex/pr-483-fixes | 190affffacf2a0c0447b51fe87fdb22ae37737b1 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #483; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/pr-485-fixes | 96dbd0394888d5a52c916dba52b94d0f83e4507e | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 96dbd0394888d5a52c916dba52b94d0f83e4507e origin/main`. | +| 2026-07-13 | codex/pr-522-review | 344f10f9efca6dc340a6ac65128eaf2fdcddf727 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #522; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/privacy-link-only | 3ae36477f8a3b945870b545c2b0c048e597d2d29 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #557; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/privacy-ui-assertion | bafceee0588483bed209b321d9fdf68f48b7ea2f | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor bafceee0588483bed209b321d9fdf68f48b7ea2f origin/main`. | +| 2026-07-13 | codex/production-migration-history-final | 6e8eab2533df7ab2352b51223447f2dff1951a2a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #565; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/rag-remediation | 18cf01f2100c479beb2b8a089c287e8c7d978eb8 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #553; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | codex/rag-review-followup | a4b1c58ccbcf57f7a6ddd495c9217bce5544cccf | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | codex/release-blocker-remediation | 12377740a37e67523c720ab2952a75fd45aee2bd | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | +| 2026-07-13 | codex/report-remediation | 70ec6409a11a85e1678eb4b320519624673a94a0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 70ec6409a11a85e1678eb4b320519624673a94a0 origin/main`. | +| 2026-07-13 | codex/responsive-accessibility-audit | de533acdf4cba2bdc1ec9e13d207b86d09968fc8 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor de533acdf4cba2bdc1ec9e13d207b86d09968fc8 origin/main`. | +| 2026-07-13 | codex/review-findings-fixes | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 66883b7c86f606e617db4bee2bab6f85fff59bdc origin/main`. | +| 2026-07-13 | main | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Protected base branch retained. | Resolved as `main` / `origin/main`; deletion prohibited. | +| 2026-07-13 | origin | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 origin/main`. | +| 2026-07-13 | origin/claude/chunking-ocr-eval-plumbing-e1ac6b | b65de578ad50f128492d1ed316c6f11eb4a4dfc6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #508; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/cross-border-openai-disclosure-2f170b | 14a155aabcecb79a5fbdfd442a1d684ecb901fa4 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #530; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/de-fly-staging-doc | 4d39fe85f1f5d946e39d4b52bcc301b7e523d729 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #516; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/document-viewer-design-review-4fc027 | a82f7c3974f870a661d1f1249b29dc79d449ab15 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #509; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/document-viewer-review-fixes | e765b3818b4bdda32b0bee4af7c9091f5d86d86d | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #505; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/eval-citation-coverage-strict | f7fb001c5ceb98874f45b4c8dad91e1b7e9c3f38 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #564; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/fix-scroll-row-mask-mobile | 51198244b8990a1e43b8952fc0a0dad9a4495d87 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #498; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/forward-codify-retrieval-rpcs-05a3dc | e8ee696dd6db4a991e6964d96e4ded40131596a5 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor e8ee696dd6db4a991e6964d96e4ded40131596a5 origin/main`. | +| 2026-07-13 | origin/claude/gate-answer-persistence-flag-4b55da | 47206d8c2ab04f8a32fd64de8ba2f141999eb3e0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #537; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/hero-composer-hydration | eb7cc81c0513da46cd07b9fe1a189952914a5613 | branch-cleanup | Redundant: no patch-unique non-merge commits remain against `origin/main`; eligible for deletion when unreferenced. | `git log --right-only --cherry-pick --no-merges origin/main...origin/claude/hero-composer-hydration` returned empty. | +| 2026-07-13 | origin/claude/hero-composer-teardown-microtask | af9ada42fa069761d21fc1a57e60a80d89e15dbc | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #504; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/home-answer-page-layout-rtx10n | 96dbd0394888d5a52c916dba52b94d0f83e4507e | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 96dbd0394888d5a52c916dba52b94d0f83e4507e origin/main`. | +| 2026-07-13 | origin/claude/home-page-sizing-plan-02011e | 05b5977c4c7152ede77039543b5ac6c686c9d905 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #517; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/icon-design-review-393584 | 370cd7bdd6ca45484c14d04b66c51c3394472dd0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #519; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/icon-glyph-refinements | 7e807c1c7346ae998557911421500dce70fe3cd0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #523; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/july8-migration-batch-live-7d76fb | c78a4d7ff570179f28a33f03759e1d91f56d0f65 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #528; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/mobile-search-bar-popup-bx163m | ceccc7219cbd1bf2e0f5b166de94f293c7c25bfe | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor ceccc7219cbd1bf2e0f5b166de94f293c7c25bfe origin/main`. | +| 2026-07-13 | origin/claude/observability-alerts-rollback-8d9b79 | 67144fe56b776fb58d2518d057d41612399f65b6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #536; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/perf-r2-auth-roundtrip | 24fad070fb9834510309e74e1dc0e216cd08646b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #481; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/perf-r2-eval-gated | 901fae59eca2c00c99c3b4ae79a84642b405672a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #486; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/phone-blackout-fix-nuxnt3 | 551b07b44e9572d141118866271af27c67d50370 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #570; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/pia3-doc-residual-cache | 4494a830df6682ce5edcaf61d6a178af162b50d7 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #535; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/privacy-footer-responsive-adbd0c | ad5ef99f68dfd07d56a2ad9e2d0871b7deaf882c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #576; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/production-deployment-setup-d83ef8 | 7cca301849908889f963c361980c378e3aaff07f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #511; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/quality-eval-expected-doc-coverage | c4868031b2294d26a5d35b06f9ecbb4c9b55ac28 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #562; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/query-hash-hmac-secret-0e44d3 | 97108314ec59dd015b1947ba0d0bc41da1f58d33 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #532; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/rag-cross-reference-guard | d6ba5930ecf9fcf5be1d441a197f7f53a3086ce5 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #573; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/rag-optimization-phase-2-748178 | 501b949e33ea1ac35abef7644a3cdc0aeb18cefd | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #526; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/rag-review-improvements-f1bf84 | 7154493e5e7c5ed1e2bd484503bfdbca94c23756 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #514; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/reconcile-mode-home-tokens | 344f10f9efca6dc340a6ac65128eaf2fdcddf727 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #522; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/repo-next-steps-e53523 | 3f7d6d76f597f2a0311af1052480f84b68ecc259 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #513; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/repo-task-recommendations-f32752 | 00ff16704e6f290148d888c3247cf75ca0c1faa2 | branch-cleanup | Retained for open PR #577. | GitHub open-PR query matched this branch at classification time. | +| 2026-07-13 | origin/claude/response-formatting-cleanup-b57a9c | 3a252e7cd53b8a825aef5d4432ff0f7373618c56 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #469; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/responsive-design-review-4d7395 | 889dc73a807145cf7db3326fd2ad77f8d594652b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #520; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/search-timeout-failure-s6aiuj | b341fed3d6f8d94f1573db1ff3939e112c3240f0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #466; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/seeded-owner-catalogue-sync-7544e2 | 9613f9307be5728bb8dae0c56d6a35f053daad4c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #507; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/site-formatting-polish-b91374 | 859633eb72dee7ab430b0cbebb0f68b77caa072a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #506; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/smart-search-presentations-differentials-a199bb | e7b8a9621d30f22c7ae20aefbba7c023d1ac06df | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #499; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/supabase-auth-connection-cap-8907c5 | d28cf149c36f0e44d3bde49068187f262190d74e | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #525; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/type-scale-mode-home-tokens | 4c55b94f15a15f7c8b418d8dba776b007fb458a3 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #512; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/worker-edge-deploy-path-988cc3 | 1b6f02170b485fe21ba56537ed6ed1061cc11679 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #527; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/claude/worker-server-only-boot | 964564f0477635d252238612586e1f83dda3b245 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #493; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/coderabbitai/docstrings/13b19b5 | 87e8f42fed22fe6f0375a73f5653ea4c3b243385 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #566; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/coderabbitai/docstrings/21f9540 | aa58dd1f8ba40eff536ee61b13769ebb2418befc | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #503; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/coderabbitai/docstrings/4eaf00f | f6b1ce2e214ffd4875e511ad627a85a2dedcdcb6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #518; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/coderabbitai/docstrings/abb648e | c6215211ac02ada5db1df81ce03a36b7714f7dd8 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #539; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/coderabbitai/docstrings/d5ab4c3 | 65e5575c4f6ff364b5bc52f7698de7d75986e871 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #521; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/coderabbitai/docstrings/faac19b | 6aba3a54370fca45af926ac98e6457b24d617dc1 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #554; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/coderabbitai/simplify/10f39fd | d6d41d79d3bdb126974bb0b2605f7a82de9babb3 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #534; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/coderabbitai/utg/3f739cd | fd1e68b4dd83de09f0b1159e15db8ac97708d5c3 | branch-cleanup | Retained for open PR #556. | GitHub open-PR query matched this branch at classification time. | +| 2026-07-13 | origin/codex/anonymous-document-access-tests | 4a3d954553a8c0618bd9c41baaadedd84bbca821 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #559; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/codex-review-single-pass | 950e331006fe0b2d24447ea5b5df2bb83e69799b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #558; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/deep-memory-live-reconcile | 59a976be639e1dede8acec65c1c14166ca71cadb | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #569; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/domain2-remediation | 7ea33b20d230f65eb5ac5f6a7386ebd0db92a6ef | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #533; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/dose-fast-path-context | 26c93547d8ec46c0658bf98194fc2c5d1a6b383f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #575; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/fix-48h-review-findings | f9e0ca42c7b234a894b49bd2958e69ebb2d5810a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #574; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/fix-48h-review-findings-current | 881a24242c369f768f2517d7706102cb565b731c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #551; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/indexing-health-scan | 62e1f6abc9d1090c38b6ee861cb9dfb9bf3bac45 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #572; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/live-remediation-apply | f6a50117903445414facefa1b239033f2fec3313 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #568; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/opioid-dose-retrieval-gate | b8c5cb785e1d52d3af05212cf2bae10d412a9869 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #571; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/pr-481-main-integration | a6a9e0292395bb53a832e894c8ce10707d425e57 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor a6a9e0292395bb53a832e894c8ce10707d425e57 origin/main`. | +| 2026-07-13 | origin/codex/privacy-link-only | 3ae36477f8a3b945870b545c2b0c048e597d2d29 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #557; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/production-migration-history-final | 6e8eab2533df7ab2352b51223447f2dff1951a2a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #565; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/public-anonymous-access | afae5df9155b518f93f6046c2d11634b9cd08a42 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #529; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/rag-remediation | 18cf01f2100c479beb2b8a089c287e8c7d978eb8 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #553; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/codex/responsive-accessibility-audit | de533acdf4cba2bdc1ec9e13d207b86d09968fc8 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor de533acdf4cba2bdc1ec9e13d207b86d09968fc8 origin/main`. | +| 2026-07-13 | origin/codex/result-sorting-design-polish | 51028464fe8ac671923ee739e81649ee1d9e1ab3 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #560; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | origin/copilot/fix | f7a3d95f54248d5c71c11084d0e5b60f2a83ae98 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor f7a3d95f54248d5c71c11084d0e5b60f2a83ae98 origin/main`. | +| 2026-07-13 | origin/dependabot/github_actions/actions/checkout-7 | 791b3cc27c43651bdecca3f154c506f51d110d8d | branch-cleanup | Retained for open PR #541. | GitHub open-PR query matched this branch at classification time. | +| 2026-07-13 | origin/dependabot/npm_and_yarn/eslint-10.7.0 | cb724b649082bcaf7046a5a8fd913c6ae603dd31 | branch-cleanup | Retained for open PR #547. | GitHub open-PR query matched this branch at classification time. | +| 2026-07-13 | origin/dependabot/npm_and_yarn/typescript-7.0.2 | 5e7ff09e9b24f54b719a36876ae6dad2283a6232 | branch-cleanup | Retained for open PR #545. | GitHub open-PR query matched this branch at classification time. | +| 2026-07-13 | origin/main | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Protected base branch retained. | Resolved as `main` / `origin/main`; deletion prohibited. | +| 2026-07-13 | origin/railway/code-change-MTk6ya | 540b07816b4f0f804e4270566fb3b757b852cf06 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #462; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | +| 2026-07-13 | claude/audit-remediation-2026-07-13 | 6b24b66c844c08ac78f992380914c05e15ecef7c | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #582. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/axe-a11y-scan | 0c6b3e5e21b0132ccf50b0f32a5d2e5b775fdc68 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #586. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/enable-automation | 9d07419ab27c5b51b2264ef208aa260448393ea2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #604. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/ingestion-autopilot | 9122feef297a1b88050696042b10779626aef4bb | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #588. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/ops-digest | 8355970c0371b4150f2965a49c611678a8393ad2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #587. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/psych-vocab-seed | d41c65f209029ba37bd54424640918559209ffa1 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #605. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/repo-hygiene | 1db8d1508cf0cd3aec244358db32d8bc9f06a7f2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #596. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/session-guards | 08a83b87d612fa82157f962b4de7886f15199447 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #583. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/spend-telemetry | 323d9cb5d94c4173881690e15699a4e224622803 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #585. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/audit-remediation-2026-07-13 | 6b24b66c844c08ac78f992380914c05e15ecef7c | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #582. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/axe-a11y-scan | 0c6b3e5e21b0132ccf50b0f32a5d2e5b775fdc68 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #586. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/code-rabbit-credit-barrier-sibv4s | b379a82da4be5260957d1a38bd17a6aa82ae3ce5 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #601. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/enable-automation | 9d07419ab27c5b51b2264ef208aa260448393ea2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #604. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/ingestion-autopilot | 9122feef297a1b88050696042b10779626aef4bb | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #588. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/ops-digest | 8355970c0371b4150f2965a49c611678a8393ad2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #587. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/phone-blackout-fix-nuxnt3 | 94d1613b899be6ad220817dfcf1e894889a21f69 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #578. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/psych-vocab-seed | d41c65f209029ba37bd54424640918559209ffa1 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #605. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/repo-hygiene | 1db8d1508cf0cd3aec244358db32d8bc9f06a7f2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #596. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/session-guards | 08a83b87d612fa82157f962b4de7886f15199447 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #583. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/session-skills | e2dc26162bb8ff1a50902c26a70fb5f18c5e761f | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #594. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/spend-telemetry | 323d9cb5d94c4173881690e15699a4e224622803 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #585. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/claude/subagents-clinical-rag-uqa5aa | 848c15dd3da014c08ca67df2867b86c49ddf861e | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #609. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | origin/codex/rag-review-followup | ea56104cd658217d67a0a768ec250943bdddd8e8 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #581. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | +| 2026-07-13 | claude/github-repos-discovery-a49873 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Deleted after the exact HEAD was proven an ancestor of origin/main. | git merge-base --is-ancestor succeeded; no worktree or open PR referenced the branch. | +| 2026-07-13 | codex/cleanup-domain1-governance | be0b3ebd86f717ca4478dd3fb2b2bbfeb63d5fcc | branch-cleanup | Deleted after squash-merging recovery PR #611 as 622988f47773297cedb882b6c236c6f80712c802. | GitHub PR state, hosted checks, merge ancestry, and zero path diff against origin/main were verified. | +| 2026-07-13 | origin/codex/cleanup-domain1-governance | be0b3ebd86f717ca4478dd3fb2b2bbfeb63d5fcc | branch-cleanup | Deleted after squash-merging recovery PR #611 as 622988f47773297cedb882b6c236c6f80712c802. | GitHub PR state, hosted checks, merge ancestry, and zero path diff against origin/main were verified. | +| 2026-07-13 | backup/site-formatting-pre-rebuild-a0ba77112 | a0ba771124c40bb8c5fe9d3cdfa81f98d33dc3c8 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/answer-page-design-polish-ffd5a6 | b2c772606126f8323424bc9c0b636bac77c08789 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/answer-page-design-polish-ffd5a6; git diff --name-only reported 10 path(s). | +| 2026-07-13 | claude/audit-ci-browser-gate-2026-07-13 | 09be064a09e8199e9359c50ea0dfceb25847cacf | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/bundle-budget | 0eb6bb60201924d3e5153c69f2efee39960124b7 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/canary-gate-fixes | 85411f5db736e111fdb278468787dc8b32bb5ebe | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/code-review-42a2c3 | 48cabd9b8754c06b34b006c544c7529b6f2f5400 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/code-review-42a2c3; git diff --name-only reported 65 path(s). | +| 2026-07-13 | claude/compact-design-mockup-fcfb04 | 296d09a48f67eec659045a573d6e63d6d61cab3a | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/compact-design-mockup-fcfb04; git diff --name-only reported 7 path(s). | +| 2026-07-13 | claude/design-sync-78bad6 | d3f68661646488390bfefa79b1f2e511c2ecb2d3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/differentials-artifact-filter-c5aea0 | cd4f6015ee6e400c0b13148a62dc7f17d5604130 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/differentials-artifact-filter-c5aea0; git diff --name-only reported 8 path(s). | +| 2026-07-13 | claude/differentials-page-review-a3daaf | 36cca1bf7c13718dcc60a61b75272c7c4fa5cd44 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/differentials-page-review-a3daaf; git diff --name-only reported 19 path(s). | +| 2026-07-13 | claude/document-page-redesign-7dd487 | c2cfd57b4e7ec602d96e7f042eb60ff0b10a9e8e | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/document-page-redesign-7dd487; git diff --name-only reported 13 path(s). | +| 2026-07-13 | claude/document-viewer-redesign-55b68b | a493538c11d8f24f7ca92de65448cb81ea460c32 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/document-viewer-redesign-55b68b; git diff --name-only reported 3 path(s). | +| 2026-07-13 | claude/gate-answer-persistence-flag-4b55da | c26e54f9d4f8e3ee212864cb076fba0dc7074dd7 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/gate-answer-persistence-flag-4b55da; git diff --name-only reported 10 path(s). | +| 2026-07-13 | claude/medspacy-assertion-eval | 5098fe32e7c091c09fb1d36b5d0a0f767fc009cd | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/perf-r2-auth-roundtrip | 82376e73f1d12c5e94e85847b307b49819524b89 | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/perf-r2-auth-roundtrip; git diff --name-only reported 46 path(s). | +| 2026-07-13 | claude/production-deployment-setup-d83ef8 | 631f0a35fc3b2ca2e198c1aff81ddf6fbbf0e673 | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/production-deployment-setup-d83ef8; git diff --name-only reported 13 path(s). | +| 2026-07-13 | claude/psychiatry-calculators-mockups-8dd1a4 | d25f495a03b96d328874eee3eb2e78863f7611ef | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/pt-audit-pr1-retrieval-dualpath | 7142bc41e6c570def1ece5903fdd923f7a953165 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/pt-audit-pr2-variant-early-exit | ddd67ca4a05e259e68a57f36a840d6521d8dfc0c | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/pt-audit-pr3-storage-unification | 6758a6c2a30f1479e742c6224ef886ef47726902 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/pt-audit-pr4-trust-copy | 46574ca1c93996505fada8c5610a62dbb11a90a5 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/pt-audit-pr5-ia-canonical | 1420ac698ea31bf7d506e3dcfb3c8d25467c19c4 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/pt-audit-pr6-ux-defaults | fba18eb02acbcf5545e7aa3dd6baed3a8a3bc594 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/pt-audit-pr7-ci-hardening | ec8bf327f67df4f90b4adb7c75c14e0f06993299 | branch-cleanup | Retained for open PR #592. | Fresh GitHub open-PR query matched this branch. | +| 2026-07-13 | claude/pt-audit-pt17-live-monitor | b5b5ab680d707fba05de5a15adf0ae77713e16d0 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/pwa-optimization-plan-4b7c4f | a180fb23b886e440f4bf839bc89c2c5085f7f5c3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/query-hash-hmac-secret-0e44d3 | 06dc4be72bcbdebb991ab8ad5c8d2e2eb67fcc59 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/query-hash-hmac-secret-0e44d3; git diff --name-only reported 2 path(s). | +| 2026-07-13 | claude/reconcile-mode-home-tokens | 8b3dee857fc0503d815b794371be19bfd088b973 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/reconcile-mode-home-tokens; git diff --name-only reported 1 path(s). | +| 2026-07-13 | claude/relax-openai-search-gate | fb2df603f472ea613d32ef0991f8ec00af5999c5 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/relax-openai-search-gate; git diff --name-only reported 1 path(s). | +| 2026-07-13 | claude/repo-agents-evaluation-8a41cd | b8b484398557231ce4ce05693b784dc3bac16299 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/repo-docs-infrastructure-4c2787 | fa75ccbf89413b6250d7f11957ee43d322410b9b | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/repo-improvement-review-09945c | a180fb23b886e440f4bf839bc89c2c5085f7f5c3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | claude/repo-task-recommendations-f32752 | 556487e08524d7f3095b76fce55add3e677fdc59 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/response-formatting-cleanup-b57a9c | f1864308e0b287bb83b2a13daca4c3aa2ab95a3e | branch-cleanup | Retained: 22 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/response-formatting-cleanup-b57a9c; git diff --name-only reported 9 path(s). | +| 2026-07-13 | claude/responsive-design-review-4d7395 | cfee2595b6fccd9b419a4aa221a0b813e9b51dc3 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/responsive-design-review-4d7395; git diff --name-only reported 5 path(s). | +| 2026-07-13 | claude/sentry-server-capture | c131b9b7eed39de85b97228d05dc67542e7262eb | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | claude/session-skills | 7df745420b8178df0101a35b75f1af07fea2d558 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/session-skills; git diff --name-only reported 3 path(s). | +| 2026-07-13 | codex/branch-cleanup-2026-07-13 | 5daa779e75f7224b512c9788554c31dee5f654c5 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/domain-1-governance-remediation | 4470bad93bcd659651f1f61ffce503f77a9b4269 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/domain-1-governance-remediation; git diff --name-only reported 56 path(s). | +| 2026-07-13 | codex/domain2-remediation | d2a90f082d2f696a3c903e08544ae156bc93de41 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/domain2-remediation; git diff --name-only reported 46 path(s). | +| 2026-07-13 | codex/fix-registry-indexing-health | 5046c72731d476ca3a025be8e14ece1f837c5456 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/lithium-answer-recovery | 62e91f9209ca9e67b5b9edf3dc49e93677a2bf72 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | codex/lithium-answer-recovery-pr | 43a385d207399bc33010b8d7d34c0588d358d42d | branch-cleanup | Retained for open PR #607. | Fresh GitHub open-PR query matched this branch. | +| 2026-07-13 | codex/live-migration-history-alignment | c9853c7acdc80e3c33354c3b1a32e5df2682f521 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/live-migration-history-alignment; git diff --name-only reported 12 path(s). | +| 2026-07-13 | codex/openai-gpt56-rag-upgrade | 7e95daf221c171515b1eb501fbbc04129aaa5342 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/please-thoroughly-review-this-repo | 47e850ee93dd5281c792eb60618f98ba2e972b8e | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/please-thoroughly-review-this-repo; git diff --name-only reported 1 path(s). | +| 2026-07-13 | codex/pr-487-fixes | 01fa32826488d274ec7ed0af5a3544834d8d0777 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-487-fixes; git diff --name-only reported 12 path(s). | +| 2026-07-13 | codex/pr-488-fixes | 7afb4d06c8127341cc91ed178b79b059935fea05 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-488-fixes; git diff --name-only reported 65 path(s). | +| 2026-07-13 | codex/pr-489-fixes | 0dbd83c73d2783cbe8e8d00bf04c9947a33518fc | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-489-fixes; git diff --name-only reported 5 path(s). | +| 2026-07-13 | codex/pr-511-integration | c7c1dc3f2ad05bdb38420afddcf9b66bac569fd0 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-511-integration; git diff --name-only reported 12 path(s). | +| 2026-07-13 | codex/pr-514-review | af8d86117eb63428c9272e353826648f20fa0583 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-514-review; git diff --name-only reported 16 path(s). | +| 2026-07-13 | codex/pr-520-review | ff11093a2b3e7443d1403303586e1277d6f5bf22 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-520-review; git diff --name-only reported 6 path(s). | +| 2026-07-13 | codex/pr-541-fix | a37e9baf63cb06845aa8876f9c88b3d63c13f778 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-545-fix | 19fc55cd033be7140e0a9cb321a26a8aa835b60e | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-547-fix | 4f0160b26ff9c9f24817a9972e11d5d77310a3f3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-556-sync | 67e396f553d098156ae9de693f021fb9ed73fd94 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-591-fix | 2bad7ba0499626edd8f1833a18983596d0b9f941 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-592-fix | 5bab36c456f57b32437d6c01f0ce30b32244fec4 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-595-sync | f1f17bfc4d23250bb727d01d61055702ea29b65c | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-597-fix | 10b89800ce1aef97bea10f69d58dc54fa13a45c2 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-600-fix | 1eb6a4b7cc0ba05bca18eee0ab00dafba2833904 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/pr-608-fix | a9d09ad4f0f1e549a9a88708862cc62b5d7f0374 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/public-anonymous-access | 7f3eded3d17c9daf6a443c9cac3f0553e4e9321b | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/public-anonymous-access; git diff --name-only reported 71 path(s). | +| 2026-07-13 | codex/rag-canary-completion | 8aa9f92e6f02870e164515778a591414dff2dce1 | branch-cleanup | Retained for open PR #612. | Fresh GitHub open-PR query matched this branch. | +| 2026-07-13 | codex/rag-canary-recovery | 1def894bff2338d68a1cd5e297a4f78671f3ca73 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | codex/rag-review-followup | db2fbf0576a4911fcde06580fee8cf1ff6e393f8 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/rag-review-followup; git diff --name-only reported 8 path(s). | +| 2026-07-13 | codex/release-blocker-remediation | 5f220f953a6ee9c4efba020b255c804b94fbf9d1 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | codex/repository-review-remediation | 29c598cd2db4fc9c00ed56f60e8ef2adb969cccf | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/repository-review-remediation; git diff --name-only reported 80 path(s). | +| 2026-07-13 | codex/result-sorting-design-polish | 00808ad9ee076018fca58006f0332565ddd5dc3a | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/result-sorting-design-polish; git diff --name-only reported 36 path(s). | +| 2026-07-13 | main | b8b484398557231ce4ce05693b784dc3bac16299 | branch-cleanup | Protected base branch retained. | Resolved as main / origin/main; deletion prohibited. | +| 2026-07-13 | origin/claude/audit-ci-browser-gate-2026-07-13 | 09be064a09e8199e9359c50ea0dfceb25847cacf | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/bundle-budget | a9d09ad4f0f1e549a9a88708862cc62b5d7f0374 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/canary-gate-fixes | 85411f5db736e111fdb278468787dc8b32bb5ebe | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/codebase-review-ade6ed | a96b8ffafb88da22f667b41edf01b215866dde32 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/codebase-review-ade6ed; git diff --name-only reported 19 path(s). | +| 2026-07-13 | origin/claude/design-sync-78bad6 | f1f17bfc4d23250bb727d01d61055702ea29b65c | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/document-page-redesign-7dd487 | c2cfd57b4e7ec602d96e7f042eb60ff0b10a9e8e | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/document-page-redesign-7dd487; git diff --name-only reported 13 path(s). | +| 2026-07-13 | origin/claude/document-viewer-redesign-55b68b | 0dbd83c73d2783cbe8e8d00bf04c9947a33518fc | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/document-viewer-redesign-55b68b; git diff --name-only reported 5 path(s). | +| 2026-07-13 | origin/claude/generation-token-starvation-fix | 5874814cd3e448dfa358a6e500115094cb3124cf | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | origin/claude/github-actions-codex-issue-f4t4s5 | a6f64938c8d0bbf915068869977dfe86c58f0d3f | branch-cleanup | Retained for open PR #610. | Fresh GitHub open-PR query matched this branch. | +| 2026-07-13 | origin/claude/perf-r2-bundle-hygiene | 95ce39f7715caeadc8197c35c2c41500183a715e | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-bundle-hygiene; git diff --name-only reported 40 path(s). | +| 2026-07-13 | origin/claude/perf-r2-hot-path | 843dcf8d287950b2ddf86a121701dfbb95ac86c0 | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-hot-path; git diff --name-only reported 49 path(s). | +| 2026-07-13 | origin/claude/perf-r2-network-caching | 424ae6b045d9ec38443292a1569de4b04d6a295d | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-network-caching; git diff --name-only reported 44 path(s). | +| 2026-07-13 | origin/claude/perf-r2-payload-trim | 5a6ce71153198c746fab96859d5895374ac05bb9 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-payload-trim; git diff --name-only reported 50 path(s). | +| 2026-07-13 | origin/claude/perf-r2-plan-cache-migration | 471099c3031520fc4a083f802af3c8f95a9c7d44 | branch-cleanup | Retained: 8 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-plan-cache-migration; git diff --name-only reported 52 path(s). | +| 2026-07-13 | origin/claude/pt-audit-pr2-variant-early-exit | ddd67ca4a05e259e68a57f36a840d6521d8dfc0c | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | origin/claude/pt-audit-pr3-storage-unification | 10b89800ce1aef97bea10f69d58dc54fa13a45c2 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/pt-audit-pr4-ci-ui-regression | 0318502a5aa0ef011609c32dc7d7936ad1c6464e | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | origin/claude/pt-audit-pr4-trust-copy | 46574ca1c93996505fada8c5610a62dbb11a90a5 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | origin/claude/pt-audit-pr5-ia-canonical | 2bad7ba0499626edd8f1833a18983596d0b9f941 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/pt-audit-pr6-ux-defaults | 44fa37dfcd252c21dd3f57fc97fe4a272ab91de6 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | origin/claude/pt-audit-pr7-ci-hardening | 5bab36c456f57b32437d6c01f0ce30b32244fec4 | branch-cleanup | Retained for open PR #592. | Fresh GitHub open-PR query matched this branch. | +| 2026-07-13 | origin/claude/pt-audit-pt17-live-monitor | b5b5ab680d707fba05de5a15adf0ae77713e16d0 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/repo-docs-infrastructure-4c2787 | fa75ccbf89413b6250d7f11957ee43d322410b9b | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/repo-task-recommendations-f32752 | 3b54cc96113407203f73f41bf921d717a24dd8eb | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | origin/claude/sentry-server-capture | 1eb6a4b7cc0ba05bca18eee0ab00dafba2833904 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/claude/site-performance-speed-61d154 | cb0bcf35498385bca1180462c8ab79b6f8293708 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/site-performance-speed-61d154; git diff --name-only reported 20 path(s). | +| 2026-07-13 | origin/coderabbitai/utg/3f739cd | 67e396f553d098156ae9de693f021fb9ed73fd94 | branch-cleanup | Retained for open PR #556. | Fresh GitHub open-PR query matched this branch. | +| 2026-07-13 | origin/codex/domain-1-governance-remediation | 4470bad93bcd659651f1f61ffce503f77a9b4269 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/codex/domain-1-governance-remediation; git diff --name-only reported 56 path(s). | +| 2026-07-13 | origin/codex/fix-registry-indexing-health | 5046c72731d476ca3a025be8e14ece1f837c5456 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/codex/lithium-answer-recovery-pr | 43a385d207399bc33010b8d7d34c0588d358d42d | branch-cleanup | Retained for open PR #607. | Fresh GitHub open-PR query matched this branch. | +| 2026-07-13 | origin/codex/live-migration-history-alignment | c9853c7acdc80e3c33354c3b1a32e5df2682f521 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/codex/live-migration-history-alignment; git diff --name-only reported 12 path(s). | +| 2026-07-13 | origin/codex/please-thoroughly-review-this-repo | 47e850ee93dd5281c792eb60618f98ba2e972b8e | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/codex/please-thoroughly-review-this-repo; git diff --name-only reported 1 path(s). | +| 2026-07-13 | origin/codex/rag-canary-completion | d1ecab038cb423de6a8c1ee0d7201b0b6f2dca06 | branch-cleanup | Retained for open PR #612. | Fresh GitHub open-PR query matched this branch. | +| 2026-07-13 | origin/codex/rag-canary-recovery | d6bd7fa7c0b9b29e9b7eddfd28e0478e042a0455 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | +| 2026-07-13 | origin/codex/repository-review-remediation | 29c598cd2db4fc9c00ed56f60e8ef2adb969cccf | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/codex/repository-review-remediation; git diff --name-only reported 80 path(s). | +| 2026-07-13 | origin/copilot/29199485110 | 4e09b838bda6a774f067b8e13717af2103502857 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/29199485110; git diff --name-only reported 16 path(s). | +| 2026-07-13 | origin/copilot/29202241308-fix-database-issue | 29db1aa1b29a812bf4c7eb7af5ea33371f086157 | branch-cleanup | Retained: 6 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/29202241308-fix-database-issue; git diff --name-only reported 14 path(s). | +| 2026-07-13 | origin/copilot/database-ci-setup | 45fa392a24987e4b596d80fc81528912e62d95c9 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/database-ci-setup; git diff --name-only reported 16 path(s). | +| 2026-07-13 | origin/copilot/fix-961c247e-5acb-45db-b4ed-62fcf97681cd | b6097f0fbf19f82527ea95a385efb2ca7b8ec794 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-961c247e-5acb-45db-b4ed-62fcf97681cd; git diff --name-only reported 17 path(s). | +| 2026-07-13 | origin/copilot/fix-again | 0b2d29a143926279b327ff302c2de3d5fe0edbc5 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-again; git diff --name-only reported 8 path(s). | +| 2026-07-13 | origin/copilot/fix-another-one | f1864308e0b287bb83b2a13daca4c3aa2ab95a3e | branch-cleanup | Retained: 22 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-another-one; git diff --name-only reported 9 path(s). | +| 2026-07-13 | origin/copilot/fix-barriers | 8711ee2b15c3b9a1a0e8444ba2ee799d6c5e6ab7 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-barriers; git diff --name-only reported 3 path(s). | +| 2026-07-13 | origin/copilot/fix-ci-issues | 5f1c6f64a544705df9df970e09da3b85f0d90efa | branch-cleanup | Retained: 8 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-ci-issues; git diff --name-only reported 7 path(s). | +| 2026-07-13 | origin/copilot/fix-database-action-error | 7ff6c547e55100d7dfff912530e006f0a5ee70a2 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-database-action-error; git diff --name-only reported 6 path(s). | +| 2026-07-13 | origin/copilot/fix-database-action-run-issues | de36fd3ef8aa101e75a22fab8ff15940bb241e00 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-database-action-run-issues; git diff --name-only reported 6 path(s). | +| 2026-07-13 | origin/copilot/fix-failing-ci | d248707d09f62bb153d0eece69b4f7f4e8aeb7dc | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-failing-ci; git diff --name-only reported 36 path(s). | +| 2026-07-13 | origin/copilot/fix-failing-ci-again | 28dacd7f19320bcbf2b03e5e40c7e97fc46a80cd | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-failing-ci-again; git diff --name-only reported 40 path(s). | +| 2026-07-13 | origin/copilot/fix-failing-ci-another-one | 59207b23fe88a23b0e2f3a6d7f1a288e0cca5132 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-failing-ci-another-one; git diff --name-only reported 36 path(s). | +| 2026-07-13 | origin/copilot/fix-issue-in-database-action | 82c0e87224880ccbeee39f4101e98cf29683f74f | branch-cleanup | Retained: 6 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-issue-in-database-action; git diff --name-only reported 66 path(s). | +| 2026-07-13 | origin/copilot/fix-issue-with-database-connection | 67f5bb2744939922ceb280fab8785ee0259b26f2 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-issue-with-database-connection; git diff --name-only reported 1 path(s). | +| 2026-07-13 | origin/copilot/fix-one-more-time | 2682cbade791fc07f09d23fa11908eead223d3c7 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-one-more-time; git diff --name-only reported 0 path(s). | +| 2026-07-13 | origin/copilot/fix-please-work | 2f55346e72555500d17a08be02e6b649daa1a7cc | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-please-work; git diff --name-only reported 5 path(s). | +| 2026-07-13 | origin/copilot/fix-yet-again | c57bc8af5570a5fc69fa0f804f67cfa98df76b89 | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-yet-again; git diff --name-only reported 12 path(s). | +| 2026-07-13 | origin/dependabot/npm_and_yarn/eslint-10.7.0 | 4f0160b26ff9c9f24817a9972e11d5d77310a3f3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | +| 2026-07-13 | origin/main | d88fdafb15471f02de7f85e2426f5ea46e13ebb8 | branch-cleanup | Protected base branch retained. | Resolved as main / origin/main; deletion prohibited. | +| 2026-07-13 | codex/branch-cleanup-2026-07-13 | e76537b72f42827497fdbdf34769e8491f7d2f9e | branch-cleanup | Retained as the protected cleanup controller before the final ledger commit. | Current task worktree; deletion prohibited until its documentation PR is merged. | +| 2026-07-13 | main | 528a1752f41cd29a518ca9341c93c724030173ae | branch-cleanup | Protected base branch retained and synchronized with origin/main. | Local main was unattached, its old tip was an ancestor, and the ref was fast-forwarded to origin/main. | +| 2026-07-13 | origin/codex/rag-canary-completion | d1b7647bde73e7d0558472ad6aa19c3b49d94639 | branch-cleanup | Retained for open PR #612 and active worktree activity. | Fresh GitHub open-PR query and moving-head observation; deletion prohibited. | +| 2026-07-13 | origin/main | 528a1752f41cd29a518ca9341c93c724030173ae | branch-cleanup | Protected base branch retained. | Final refreshed origin/main snapshot before the ledger PR. | +| 2026-07-14 | PR #629 / codex/eval-canary-quota-handling | 8fe1be6d0c58c60afeeb82f720b03c90ce57c2cf | review-followup | One P2 structured-error retry defect confirmed and fixed on `codex/eval-canary-structured-errors`. | GitHub connector thread inspection; `tests/eval-utils.test.ts` 14/14; focused ESLint and Prettier. | +| 2026-07-14 | codex/global-answer-reliability | 01d2749978d4e8f3b4ac508e068ec7b8d331f816 | release-readiness / answer generation, source governance, progress, and document access | No unresolved P0-P2 findings after fixing demo-path governance parity, preserving feedback-token binding during the `origin/main` rebase, and binding legacy-summary feedback to the delivered governed answer. Ready for hosted PR checks. | `npm run verify:pr-local` (2,223 passed, 1 skipped; production build and offline RAG evaluation passed); focused Chromium answer regressions (4/4 passed); focused answer and route regressions (124/124 passed). | +| 2026-07-14 | claude/repo-next-steps-e53523 | 3f7d6d76f597f2a0311af1052480f84b68ecc259 | launch-readiness and RAG-performance follow-up | Branch changes were already squash-merged by PR #513. Fresh review found one P1 governance inconsistency (Singapore app/worker processing omitted from the PIA's cross-border account) and three P2 follow-ups: degraded-answer SLO overcounting, a second blocking shared-cache miss diagnostic query, and stale launch/RAG backlog status. No source fix was applied in this review. | `git diff --check c3828ceb9f3812abeebc1b653361fc254dda9f5e..3f7d6d76f597f2a0311af1052480f84b68ecc259`; focused Vitest 92/92; `npm run eval:rag:offline` 36 fixtures and 59/59 contract tests; `npm run verify:cheap` passed runtime, action pins, sitemap, type scale, lint, typecheck, and 1,672 passed/1 skipped tests. Provider-backed Supabase/OpenAI, browser, release, drift, and live retrieval-quality checks were not run. | +| 2026-07-14 | codex/rag-performance-followups | 5502fd498ea2069f810795a8659f98ab3abf8c80 | release-readiness review | The local release review found no P0-P2 defect after correcting one stale PIA statement; the later hosted review follow-up is recorded below. The scoped RAG round-trip, SLO, retention, privacy, and documentation changes were ready for PR handoff. Highest residual risk is the known live hybrid-RPC latency tail; model experiments remain blocked by provider quota and legal execution remains operator/counsel work. | Rebased onto `origin/main`; runtime and full Prettier check; ESLint; TypeScript; Vitest 2,213 passed/1 skipped; Next.js production build (636 pages) plus client-bundle secret scan; offline RAG 36 fixtures and 277/277 contract tests; `git diff --check`. Live retention jobs 13/16 were already verified during this workstream. | +| 2026-07-14 | PR #632 / codex/rag-performance-followups | aa264e92c44b42fdcceeac6292011ba51169b862 | review-followup | One P2 SLO-classification defect was confirmed: the broad source-only `degraded` flag also included healthy extractive answers. Fixed by persisting and counting a separate `provider_generation_degraded` flag derived only from `generation_fallback`. | GitHub connector plus UTF-8 thread-aware review inspection; focused ESLint; 45/45 targeted Vitest tests; TypeScript; offline RAG 36 fixtures and 277/277 contract tests; `git diff --check`. | +| 2026-07-14 | PR #632 / codex/rag-performance-followups | 07cac8f4e094bf4b5ccd264feb6420fbd4e35e2b | review-followup | CodeRabbit's APP 1/5 governance contradiction was confirmed and corrected; Railway's pending DPA and Singapore processor basis are now explicit checklist/status items. The optional cache-miss granularity suggestion was not adopted because it would undo the reviewed single-read cold-miss design or require a broader schema/RPC change. | GitHub review-thread inspection; focused Prettier and `git diff --check` passed. Local production-readiness inspection reported the expected missing provider env; the Railway production-context check had already passed on this workstream. | +| 2026-07-14 | PR #632 / codex/rag-performance-followups | 0c792b8c10516c85d18832fc96562dd70a671b5f | review-followup | One P1 privacy-disclosure defect was confirmed: OpenAI retrieval embedding can receive query text even when answer synthesis remains source-only. Fixed the PIA and public `/privacy` copy to distinguish retrieval-embedding egress from model-backed synthesis egress, with focused copy coverage. | GitHub connector review-thread inspection; focused privacy UI test, ESLint, TypeScript, Prettier, production-readiness, and `git diff --check`. | +| 2026-07-14 | PR #632 / codex/rag-performance-followups | a2eb6db0efbef983e1b3242261d5cc6b2b9d839d | review-followup | One late P2 rollout-compatibility defect was confirmed: the provider-fallback SLO would omit recent rows written before `provider_generation_degraded` existed. Fixed the count predicate to include the new flag or legacy `generation_fallback:` reasons while continuing to exclude intentional extractive routes. | GitHub connector review-thread inspection; focused answer-SLO test, ESLint, TypeScript, Prettier, and `git diff --check`. | +| 2026-07-14 | PR #634 / codex/global-answer-reliability | 588c34c3d455c367e6aa38dc9fce64191678631b | review-followup | One late P2 quota-bypass defect was confirmed: streamed full-document summaries consumed only the general answer quota. Fixed the route to enforce the stricter `document_summarize` quota before starting the stream or provider work while retaining the general answer ceiling. | GitHub connector review-thread inspection; focused private-access route suite 116/116; ESLint; TypeScript; Prettier; `git diff --check`. | +| 2026-07-14 | codex/specifiers-design | c3e7024e15d2157bbc0b989276324cc6ad3eea5c | Specifiers UI, clinical decision-support, accessibility, and release-readiness review | One P2 WCAG contrast defect was reproduced and fixed across the builder, comparison, and map accent eyebrows. No remaining high-confidence defect was found in the changed scope; residual risk is clinical/manual governance of the original specifier summaries. | Focused Vitest 18/18; focused Chromium desktop/mobile 2/2 with serious/critical axe WCAG A/AA scanning and overflow checks; `npm run check:production-readiness:ci` READY; `npm run verify:cheap` 2,210 passed/1 skipped; `npm run verify:pr-local` 2,213 passed/1 skipped plus production build and client-bundle secret scan; `git diff --check`. Full advisory `verify:ui` exceeded the local 10-minute execution window; provider-backed checks were not run. | +| 2026-07-14 | PR #633 / codex/specifiers-design | 03daca3bfdf86517b9956f3c7d91be27d9f1a751 | Review follow-up and failed UI regression | Eight distinct P2 behaviors across nine review threads were confirmed and fixed: initial selection normalization, duplicate query removal, clinical applicability mapping, canonical Specifiers routing, severity-neutral base wording, diagnostic-section ordering, base/specifier compatibility, and severe psychotic-features wording. The failed app-menu keyboard test was a stale order assertion and now covers the inserted Specifiers item. | Focused Vitest 6/6; focused Chromium 4/4; scoped ESLint and TypeScript; CI-mode production readiness READY; production build and client-bundle secret scan passed. Hosted required checks passed on the refreshed `main` merge before the final compatibility fixes; provider-backed Supabase/OpenAI checks were not run. | +| 2026-07-14 | PR #634 / codex/global-answer-reliability | b411329ec5f181661e5d49276c398440aa928fa2 | review-followup | One late P2 fast-context defect was confirmed: Australian tier ordering could push a higher-ranked supplementary passage outside the four-chunk routine fast budget. Fixed by preserving the retrieval-ranked, crowding-capped candidate budget before applying the order-only Australian preference within that set. | GitHub connector review-thread inspection; focused RAG context-budget suite 22/22; ESLint; TypeScript; Prettier; `git diff --check`. | +| 2026-07-14 | codex/release-blocker-remediation | 550e0588866c38583bd9445fc109ea7832a98211 | working-tree release remediation review | Reconciled the remediation onto current main after three retained-stash fast-forward syncs, preserving the extracted RAG and document-viewer architecture and main's Sentry removal. Review confirmed and fixed the Windows offline-release launcher failure, the offline Railway health-check blocker, and shared staging-test passwords. No remaining high-confidence issue was found in the changed local scope. Provider-backed production and staging evidence remains a post-PR gate. | `npm ci` and `npm ls --depth=0` passed; focused registry/offline/RAG/viewer/tenancy Vitest 207/207 plus health/config follow-up 15/15; `npm run format:check`; `npm run check:github-actions`; `npm run check:ci-scope`; `npm run verify:cheap` passed runtime, generated guards, lint, TypeScript, and full Vitest (254 files passed, 1 skipped; 2,325 tests passed, 1 skipped); `git diff --check`. | +| 2026-07-14 | claude/audit-ci-browser-gate-2026-07-13 | 09be064a09e8199e9359c50ea0dfceb25847cacf | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`; worktree/activity scan. | +| 2026-07-14 | claude/beautiful-hamilton-5df54c | 5e2e90f0a3af4039c7e15515151569228476a60c | branch-cleanup | Deleted local redundant ref; exact head was already represented on `origin/main`. | Local cherry-pick-aware comparison and prior exact-head ledger evidence. | +| 2026-07-14 | claude/canary-gate-fixes | 85411f5db736e111fdb278468787dc8b32bb5ebe | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/codebase-index-coverage | 258782c8426541f43e03009ccf6bb27b9ce90ca5 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/design-elevation-e1e2 | b91437c9068b6dba2f25e831d360e2dbcbeeb75a | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`; detached head remained remotely anchored before worktree removal. | +| 2026-07-14 | claude/design-sync-fixes-p1 | 8103c560fb7e69dcadb1155cf9feb706aa8a8517 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/docs-script-linter | 9f31fc5b62d4cd69cfe2ee92241d7e15e33d8de0 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/hero-composer-hydration | eb7cc81c0513da46cd07b9fe1a189952914a5613 | branch-cleanup | Deleted local redundant ref; the separately named teardown branch and its locked worktree were preserved. | Local cherry-pick-aware comparison plus worktree lock scan. | +| 2026-07-14 | claude/lithium-search-issue-7903a2 | a6b2dbcd6e289ada4d8abb88861dc43063236058 | branch-cleanup | Deleted local ref using prior exact-head squash-merge evidence; remote ref was left untouched. | Prior PR #460 exact-source-head ledger evidence and fresh worktree scan. | +| 2026-07-14 | claude/observability-alerts-rollback-8d9b79 | 67144fe56b776fb58d2518d057d41612399f65b6 | branch-cleanup | Deleted local ref using prior exact-head squash-merge evidence; newer remote work remained untouched. | Prior PR #536 exact-source-head ledger evidence and fresh ref scan. | +| 2026-07-14 | claude/pt-audit-monitor-marker-fix | 7d41cbe5a42b9a7f90d15ad3e80cdca6596548e0 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`; clean worktree removal. | +| 2026-07-14 | claude/pt-audit-pr2-variant-early-exit | ddd67ca4a05e259e68a57f36a840d6521d8dfc0c | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/pt-audit-pr4-trust-copy | 46574ca1c93996505fada8c5610a62dbb11a90a5 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/pt-audit-pt17-live-monitor | b5b5ab680d707fba05de5a15adf0ae77713e16d0 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/pwa-optimization-plan-4b7c4f | a180fb23b886e440f4bf839bc89c2c5085f7f5c3 | branch-cleanup | Deleted local redundant ref after its clean inactive worktree was unregistered. | Exact-head ancestry and local worktree/activity scan. | +| 2026-07-14 | claude/repo-agents-evaluation-8a41cd | b8b484398557231ce4ce05693b784dc3bac16299 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/repo-productivity-ideas-2e8b98 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained. | Local cherry-pick-aware comparison; clean inactive worktree removal. | +| 2026-07-14 | codex/eval-canary-quota-handling | 8fe1be6d0c58c60afeeb82f720b03c90ce57c2cf | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | codex/performance-prompt-audit | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Deleted local redundant ref after confirming no patch-unique content remained. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/canary-latency-recalibration | c27d87c1a5cc02721dbcb9fbdf9e0229b4c62a38 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/dependency-report | dbf1a8dbae3cab8ef5dfe54bcdf157709d752579 | branch-cleanup | Retained: patch-unique content remains; its inactive worktree was removed without deleting the ref. | Local cherry-pick-aware comparison and reachability check. | +| 2026-07-14 | claude/medspacy-assertion-eval | 0ebe88bdc893f362f2793f8062d48656a3d70302 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/process-hardening-consolidation | 2ecd302920b94a75d6031b54f61a4d058ad44a25 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | claude/remove-client-sentry | 8d54ddc980a0c883d1f8013e05aa1f96a85e622a | branch-cleanup | Retained: new patch-unique work appeared during the cleanup pass. | Final local ref refresh after `origin/main` advanced concurrently. | +| 2026-07-14 | claude/sentry-client-capture | beaab0bf2f0b1d27c6253004d400ac7be3ade19e | branch-cleanup | Retained: patch-unique content remains and a live shell references its worktree. | Local patch comparison, clean status, and path-referencing process scan. | +| 2026-07-14 | codex/database-productivity-pack | d25f495a03b96d328874eee3eb2e78863f7611ef | branch-cleanup | Retained because its checked-out worktree is dirty and task-backed, despite no unique committed patch remaining. | Worktree status and Codex task-registry scan. | +| 2026-07-14 | codex/dsm-diagnosis-mode | abba3c7d2909017f1691041c2caa11d9716c565e | branch-cleanup | Retained because its checked-out worktree is dirty and task-backed, despite no unique committed patch remaining. | Worktree status and Codex task-registry scan. | +| 2026-07-14 | codex/eval-canary-structured-errors | f8b543e6b22c2979aa64b60748f31a5ef31e87d3 | branch-cleanup | Retained because an idle Codex task still owns the clean worktree; no local or remote deletion was attempted. | Codex task-registry and worktree scan; zero-unique patch check. | +| 2026-07-14 | codex/formulation-workspace | 0696ded585ff9611e5a1325bc6e6c85d0c74bb50 | branch-cleanup | Retained because its checked-out worktree has uncommitted work. | Fresh worktree status and Codex task-registry scan. | +| 2026-07-14 | codex/global-answer-reliability | eb6160a140e1d785340f171a534a9d74da267179 | branch-cleanup | Retained: patch-unique content remains; the inactive clean worktree was removed without deleting the ref. | Local cherry-pick-aware comparison and reachability check. | +| 2026-07-14 | codex/lithium-answer-recovery-pr | 5bc19c665b1d9d9069485bb871d7ddb566858ccd | branch-cleanup | Retained: patch-unique content remains; the inactive clean worktree was removed without deleting the ref. | Local cherry-pick-aware comparison and reachability check. | +| 2026-07-14 | codex/openai-gpt56-rag-upgrade | 7e4b535fc53fe61ace561facdb8c7a224c18d86f | branch-cleanup | Retained: patch-unique content remains and an idle Codex task owns the worktree. | Local patch comparison plus Codex task-registry scan. | +| 2026-07-14 | codex/rag-canary-completion | b6a092fc9712efe6cb2849c219b29ce4fe0c71ee | branch-cleanup | Retained: patch-unique content remains; its detached inactive worktree was safely removed. | Local patch comparison and commit reachability check. | +| 2026-07-14 | codex/rag-performance-followups | fa0a6178fbbbb50de2544b4ec6cbd3f6cc9da0ae | branch-cleanup | Retained: patch-unique content remains and a Codex task still references the worktree. | Local patch comparison plus Codex task-registry scan. | +| 2026-07-14 | codex/railway-deploy-filters | 435274bb2a567272b3abf0519fa45a82ba6d797d | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | codex/release-blocker-remediation | 0696ded585ff9611e5a1325bc6e6c85d0c74bb50 | branch-cleanup | Retained because its active checked-out worktree has substantial uncommitted work. | Active Codex task and fresh worktree status scan. | +| 2026-07-14 | codex/specifiers-design | 65d8f533f23ca59190b1f7ed0ad86fd050381805 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | +| 2026-07-14 | codex/universal-search-mode-ranking | 0696ded585ff9611e5a1325bc6e6c85d0c74bb50 | branch-cleanup | Retained because its active checked-out worktree has uncommitted work and a live Node process. | Active Codex task, worktree status, and process scan. | +| 2026-07-14 | origin/claude/canary-latency-recalibration | c27d87c1a5cc02721dbcb9fbdf9e0229b4c62a38 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | +| 2026-07-14 | origin/claude/codebase-index-coverage | 258782c8426541f43e03009ccf6bb27b9ce90ca5 | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | +| 2026-07-14 | origin/claude/dependency-report | dbf1a8dbae3cab8ef5dfe54bcdf157709d752579 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | +| 2026-07-14 | origin/claude/design-elevation-e1e2 | b91437c9068b6dba2f25e831d360e2dbcbeeb75a | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | +| 2026-07-14 | origin/claude/design-sync-fixes-p1 | 8103c560fb7e69dcadb1155cf9feb706aa8a8517 | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | +| 2026-07-14 | origin/claude/docs-script-linter | 9f31fc5b62d4cd69cfe2ee92241d7e15e33d8de0 | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | +| 2026-07-14 | origin/claude/document-image-viewer-review-ox7t11 | b874d857acfb32ec635332967e94d5bbc96ca68c | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | +| 2026-07-14 | origin/claude/github-actions-codex-issue-f4t4s5 | 1f4cdd51b0dfb98495fc293bf511c167071a217c | branch-cleanup | Retained: patch-unique content remains; prior open-PR state was not refreshed without provider approval. | Offline remote-tracking comparison only. | +| 2026-07-14 | origin/claude/medication-alerts-database-cb8o83 | c3b95239fba1b523ef7796a8fca0ef6dc7a271d8 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Offline remote-tracking comparison only. | +| 2026-07-14 | origin/claude/medspacy-assertion-eval | 0ebe88bdc893f362f2793f8062d48656a3d70302 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | +| 2026-07-14 | origin/claude/process-hardening-consolidation | 2ecd302920b94a75d6031b54f61a4d058ad44a25 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | +| 2026-07-14 | origin/claude/pt-audit-monitor-marker-fix | 7d41cbe5a42b9a7f90d15ad3e80cdca6596548e0 | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; local ref and worktree were removed. | +| 2026-07-14 | origin/codex/eval-canary-quota-handling | 8fe1be6d0c58c60afeeb82f720b03c90ce57c2cf | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; local ref was removed. | +| 2026-07-14 | origin/codex/eval-canary-structured-errors | f8b543e6b22c2979aa64b60748f31a5ef31e87d3 | branch-cleanup | Retained because an idle Codex task still owns the branch worktree, despite zero unique patch content. | Offline remote-tracking comparison plus Codex task-registry scan. | +| 2026-07-14 | origin/codex/global-answer-reliability | eb6160a140e1d785340f171a534a9d74da267179 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | +| 2026-07-14 | origin/codex/lithium-answer-recovery-pr | 5bc19c665b1d9d9069485bb871d7ddb566858ccd | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | +| 2026-07-14 | origin/codex/openai-gpt56-rag-upgrade | 7e4b535fc53fe61ace561facdb8c7a224c18d86f | branch-cleanup | Retained: patch-unique content remains and an idle task owns the local worktree. | Offline remote-tracking comparison plus Codex task-registry scan. | +| 2026-07-14 | origin/codex/rag-canary-completion | b6a092fc9712efe6cb2849c219b29ce4fe0c71ee | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | +| 2026-07-14 | origin/codex/rag-performance-followups | fa0a6178fbbbb50de2544b4ec6cbd3f6cc9da0ae | branch-cleanup | Retained: patch-unique content remains and a Codex task references the local worktree. | Offline remote-tracking comparison plus Codex task-registry scan. | +| 2026-07-14 | origin/codex/railway-deploy-filters | 435274bb2a567272b3abf0519fa45a82ba6d797d | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | +| 2026-07-14 | origin/codex/specifiers-design | 65d8f533f23ca59190b1f7ed0ad86fd050381805 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | +| 2026-07-14 | main | aef020797b91a1e6f3e2584e3d7b12e29ea54046 | branch-cleanup | Protected local base retained and safely fast-forwarded to the latest locally observed `origin/main`. | Ancestry check; confirmed `main` was unattached before `git branch -f main origin/main`. | +| 2026-07-14 | origin/main | aef020797b91a1e6f3e2584e3d7b12e29ea54046 | branch-cleanup | Protected remote-tracking base retained; snapshot only, with no provider fetch performed. | Final locally observed remote-tracking ref after concurrent repo activity. | +| 2026-07-14 | codex/release-blocker-remediation | aef020797b91a1e6f3e2584e3d7b12e29ea54046 | branch-cleanup | Retained because its active checked-out worktree continued moving during the cleanup pass and still contains uncommitted work. | Active Codex task and final worktree/ref refresh; deletion prohibited. | +| 2026-07-14 | local merged-ref deletion batch (40 refs) | f0eec3ec504bdbaa2a82e2a3f86876c05925a6c2 | branch-cleanup | Deleted 40 non-checked-out local branch refs after exact-head revalidation showed each ref was the exact head of, or an ancestor of, merged PR work; no candidate changed or became checked out during deletion. | Fresh `git fetch --prune origin`; authenticated all-PR inventory; exact SHA guard; worktree guard; merged-PR reachability and cherry-pick-aware comparison to `origin/main`; `git branch -D` completed for all 40 candidates. | +| 2026-07-14 | origin merged-ref deletion batch (26 refs) | f0eec3ec504bdbaa2a82e2a3f86876c05925a6c2 | branch-cleanup | Deleted 26 origin branch refs whose current remote SHA exactly matched a merged PR head. No checked-out branch, open-PR head, or changed remote ref was included. | Authenticated `gh pr list`; `git ls-remote --heads origin`; exact remote-SHA, open-PR, and worktree guards immediately before three non-force `git push origin --delete` batches; all 26 deletions succeeded. | +| 2026-07-14 | fix/accessibility-remaining-findings | e6e735d2668f7383acc45bdb7cc7dc183e7a73a8 | branch-cleanup and merge-readiness | Retained. PR #654 is mergeable and its scoped accessibility diff had no high-confidence review finding, but the required UI regression check remains in progress and GitHub reports the PR blocked. | Authenticated PR metadata and check rollup; five-file diff review; mergeability and exact-head confirmation. No merge attempted. | +| 2026-07-14 | codex/release-blocker-remediation | 1ca2f9f372e23f563de0bc4f823cd341d82a562a | branch-cleanup and merge-readiness | Retained. PR #655 has green completed checks but currently conflicts with `main`; its branch remains checked out in an active worktree. | Authenticated PR metadata and check rollup; exact-head, worktree, and mergeability confirmation. No merge, rebase, conflict resolution, or branch deletion attempted. | +| 2026-07-14 | HEAD (detached) 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | clinical governance + RAG full-repo audit (source governance/citations, answer verification/clinical safety, privacy/query-privacy/private-search-scope, generation failure modes/degradation, retrieval/ranking/selection, ingestion/OCR index quality) | No high-confidence P0/P1. Fail-closed governance chokepoint (`buildGovernedAnswerClientResponse`) applies to both `/api/answer` and `/api/answer/stream`; numeric/quote/citation verification, prompt-injection neutralization, owner-scope tenancy, and query/answer redaction all conservative. Two P3 observations: (1) `secondStageScore` demotion penalties can be floored away by `Math.max(hybrid_score, boosted)` at the tail of the list (rag.ts:663); (2) `outdatedPenalty` default-ON uses governance metadata to weight ranking (eval-gated, demotion-only) — in tension with the "no governance weighting" principle but conservative. D4/D5 (#649) levers verified default-OFF with tests. | Pure review, no mutations except this ledger append. Offline: focused Vitest governance/verification/privacy/scope suites 79/79 + 98/98 passed. Provider-backed (Supabase/OpenAI), browser, release, and live retrieval-quality checks not run (confirmation boundary). | +| 2026-07-14 | HEAD (detached) 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | full repo-structure audit (broken imports, dead files, redundant config, module dependency, structural debt) | No P0/P1. P2: `RAG_TEXT_WEAK_OR_RELAXATION=true` in `.env.example` contradicts `default("false")` in `env.ts` (process-hardening hardened this to off); `reindex-eval-gate.ts` (488 lines) has no production importer — test-only orphan; `bundle-budget.json` still has `enforce: false` + `totalGzipBytes: null` after first production build window passed. P3: `client-env.ts` duplicates `isLocalNoAuthMode`/`publicUploadsEnabled` from `env.ts` using raw `process.env` (intentional server-only split, but divergent implementations); `OPENAI_PRICE_*`, `SPEND_ALERT_DAILY_USD` env vars undocumented in `.env.example`; `rag.ts` → extracted-module architecture still has acknowledged runtime back-edges in `rag-extractive-answer` but no import cycles detected by `architecture-boundaries.test.ts`; several `mockup`-named component files not removed from `src/components/` (production use gated via `mockupsEnabled()`). | `npm run verify:cheap` green (2,290 passed/2 skipped, 0 lint errors, typecheck clean, sitemap aligned, type-scale 0 hits, runtime Node 24/npm 11). `npm run check:env-parity` clean. `npm run docs:check-scripts` passed 266 refs. Architecture-boundaries suite (no cycles, server modules isolated, scripts not imported). Provider-backed (Supabase/OpenAI), browser, release, and live-eval checks not run (confirmation boundary). | +| 2026-07-14 | HEAD (detached) 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | RAG retrieval/ranking/selection/answer-generation audit (fresh scoped pass; PR #649 D4/D5 governance levers safe-by-default focus, token/effort waste, provider routing) | No P0/P1. Both #649 levers verified safe-by-default and fail-safe: D4 `unknownCurrentnessPenalty` default 0 (no-op, clamped non-negative, activated only via `RAG_RANKING_CONFIG`); D5 `NEXT_PUBLIC_RAG_TRUST_CAP_ALL_CLAIMS` unset=false (only tightens display trust high→medium, never exposes more; `NEXT_PUBLIC` correct as `buildAnswerRenderModel` runs client-side in `ClinicalDashboard.tsx`). Reasoning-effort defaults correct (`OPENAI_STRONG_REASONING_EFFORT`=medium, fast=low; `strongReasoningEffortForQueryClass` never raises, caps routine at medium, keeps dose/threshold at configured). Provider mode default `auto`. P3 (reaffirmed): (1) `Math.max(hybrid_score, boosted)` floor at rag.ts:663 can nullify demotion penalties (outdated/unknown/poor/lowIndex) at the list tail, making D4 partly inert when activated; (2) `document_status` defaults to `"unknown"` (source-metadata.ts:34) for unenriched docs, so activating D4 penalizes the corpus-wide fallback status, not a curated signal — same mechanism that dropped selection doc-recall@5 1.0→0.76 (retrieval-selection.ts:340) — eval gate is the safeguard. | Pure review, no mutations except this ledger append. Offline focused Vitest: answer-render-policy + ranking-config + answer-responsiveness-gate 54/54 passed. Provider-backed (Supabase/OpenAI), `eval:retrieval:quality`, browser, and release checks not run (confirmation boundary). | +| 2026-07-14 | HEAD (detached) 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | frontend/UI/accessibility audit — global-search-shell, master-search-header, composer, answer surfaces, document viewer, clinical dashboard modules; design-token usage, reduced-motion/forced-colors, icon aria, focus traps, composer/header placement | No P0. P2: (1) `aria-describedby`+`aria-hidden="true"` conflict in `mode-action-popup.tsx:622,651` makes menu descriptions invisible to AT; (2) ~25 dynamic `` render sites missing `aria-hidden` across dashboard modules — ESLint `require-lucide-icon-aria` rule gap for LucideIcon-typed variables; (3) Mode menu (`role="menu"` in header) does not close on Tab — keyboard users can Tab away from an open menu without dismissing it; (4) No live region on streaming `NaturalLanguageAnswer` — screen reader users not notified of incremental answer content. P3: (5) `--surface-glass`/`--panel-gloss` not remapped in `@media (forced-colors: active)` block — image-lightbox and PDF toolbar control bars could become invisible in high-contrast; (6) `bg-black/45` on Sheet backdrop instead of `var(--overlay-backdrop)` token; (7) `active:scale-[0.99]` on action-popup buttons without `motion-safe:` — still fires as a visual jump under reduced-motion; (8) Microsoft/Google brand hex squares not `forced-color-adjust:none` — lose brand identity in high-contrast mode. | Pure static review, no mutations. Files read: `master-search-header.tsx`, `global-search-shell.tsx`, `globals.css`, `sheet.tsx`, `mode-action-popup.tsx`, `image-lightbox.tsx`, `answer-content.tsx`, `ClinicalDashboard.tsx` (partial), `use-dismissable-layer.ts`, `layout.tsx`, `eslint-rules/require-lucide-icon-aria.mjs`, `ui-accessibility.spec.ts`, `process-hardening.md`. Browser/live checks not run (confirmation boundary). | +| 2026-07-14 | main / 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | repo-wide multi-skill audit (repo-auditor, security, clinical-governance, RAG, ingestion-worker, API, frontend-ui, release-readiness, testing/code-quality) | Highest code P1: anonymous public catalogs bypass rate limits while serving multi-MB payloads (medications 3.4 MB, services 894 KB, differentials 1.2 MB; `shouldResolvePublicCatalogAccess()` early-return in registry/medications/differentials routes skips `consumeSubjectApiRateLimit()` for requests without session cookie or bearer token). Active OPERATOR/LEGAL launch blockers: PIA-1 APP 8 overseas processing (Railway SG + OpenAI US), PIA-2 Railway `RAG_QUERY_HASH_SECRET` verify, unrun `verify:release`/golden evals, staging soak, Eval Canary trust, operator-backlog staleness vs runbooks. Confirmed code P2 cluster: public-doc DTO leaks (`storage_path`), single-layer service-role tenancy, commit-RPC unreachable fallback (`worker/main.ts:545-547`), recovery plan pending+failed unique-index crash, unwired `decideReindexGate`, CI scope misses (`src/lib/app-modes.ts`/`clinical-safety.ts` skip UI/RAG gates), a11y describedby/icon/Tab/live-region gaps, soft `@critical` safety UI assert, unenforced bundle budget, `.env.example` weak-OR flag. Residual risk: OCR quality upstream labels + hybrid-RPC latency tail. | Specialist audits + `ci-change-scope` probe; structure `verify:cheap` (2,290/2 skipped); focused Vitest governance/RAG/ingestion suites; no provider/live Supabase/OpenAI/`verify:release`/`check:drift` (confirmation boundary). | +| 2026-07-14 | codex/dsm-diagnosis-mode | f6cda83ca6aed3a24d999ef4ccd38bff167d4788 | DSM diagnosis mode, local clinical catalogue, search/comparison/differential UI, accessibility, and merge-readiness review | One P2 mobile tap-target defect was fixed across the DSM header, filters, comparison controls, and result actions. No remaining high-confidence P0-P2 finding after preserving current `main` and its Specifiers integration during conflict resolution. Residual risk is formal clinical governance and regulatory review of the paraphrased local DSM reference content before broader clinical deployment. | Focused Vitest 48/48; `npm run verify:cheap` passed with 2,321 tests/1 skipped; targeted Chromium DSM redirect/search/detail journey 1/1; CI-mode production readiness READY; `git diff --check`. Provider-backed Supabase/OpenAI and full advisory `verify:ui`/release checks were not run. | +| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 1ca2f9f372e23f563de0bc4f823cd341d82a562a | review-followup | One P1 offline-startup defect was confirmed: production instrumentation still required OpenAI after readiness and health accepted explicit offline mode. Fixed the boot guard so only explicit `offline` may omit OpenAI while `auto` and `openai` remain fail-closed. | GitHub review-thread inspection; focused instrumentation/readiness/health Vitest 21/21; scoped ESLint; Prettier; `git diff --check`. Hosted required checks on the reviewed head were green, including Gitleaks, PR required, unit coverage, build, UI, SAST, Docker images, and migration replay. | +| 2026-07-14 | PR #655 / codex/release-blocker-remediation | c8a3dd118b8bf802418598c7cb48083893625004 | production governance preflight follow-up | The live dry-run correctly stopped because 554 registry projections are deliberately public (`owner_id = null`) while 232 differentials remain owner-scoped. No second tenant exists. Updated reconciliation to preserve public/owner scope, reject any foreign owner or label-owner mismatch, and scope generated intent labels to the existing document owner without mutating ownership. | Read-only production ownership and label topology probes; focused registry/governance Vitest 18/18; scoped ESLint; Prettier; full TypeScript; `git diff --check`; production dry-run inspected 786 documents (554 public, 232 owner-scoped), planned 786 metadata updates and 786 intent-label inserts, and reported zero chunk rows/OpenAI calls. | +| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 3b152ed1f2f4f08b5672adaf0dc3b433f8ba8db1 + reviewed follow-up diff | final review-thread and release-readiness follow-up | Confirmed and fixed one P1 maintenance-path tenancy defect: registry embedding metadata refreshes could re-private public registry documents. The refresh now preserves public/owner scope, keeps generated intent-label ownership aligned, is idempotent, and rejects foreign-owner documents. Three scoped P2 review items were also resolved: answer-owner ref mutation moved out of render, PDF page changes use router navigation without scroll reset, and the worker-free staging harness no longer enqueues a reindex job before cleanup. No other high-confidence issue remained in the reviewed follow-up diff. | GitHub review-thread inspection; bundled Next.js navigation guide; focused Vitest 38/38; scoped ESLint; Prettier; full TypeScript; `git diff --check`. Final-head hosted CI, staging evidence, and provider-free production governance gates remain required after push. | +| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 978d4f462fcdd4f665060bfc86ed62d8617751cb + reviewed follow-up diff | final automated-review disposition | Fixed the remaining valid review findings: offline evaluation now excludes forced-vector fixtures and owns provider-mode selection; registry detection is shared; staging Supabase calls are bounded; retrieval is covered by a request-start deadline; deadline-expired answers are not cached; and registry label reconciliation preserves reviewer metadata and confidence while refreshing generator-owned metadata. The unsupported-related-document deadline finding was not applicable because the configured unsupported route budget is intentionally `0` and creates no deadline. | GitHub review-thread inspection; focused Vitest 58/58; scoped ESLint; Prettier; full TypeScript; `git diff --check`. Flaky aggregate browser/local suites intentionally not repeated; final-head hosted CI and staging evidence remain required. | +| 2026-07-14 | PR #655 / codex/release-blocker-remediation | dedb38a4a1bb05f87b94a89f5cade7b4a8109c99 + reviewed follow-up diff | late automated-review safety follow-up | Fixed two newly raised scoped issues: provider-free governance now rejects public differential projections while continuing to allow the three intentionally public registry kinds, and owner-scoped answer-thread clearing also removes the unscoped legacy session/local key so old clinical text is not retained. | GitHub review-thread inspection; focused Vitest 13/13; scoped ESLint; Prettier; `git diff --check`. | +| 2026-07-14 | detached review worktree (origin/main at scan start) | 0696ded585ff9611e5a1325bc6e6c85d0c74bb50 | repository-wide comprehensive and security audit | Eight security findings survived final calibration: two P2 (uncapped full-page PDF OCR raster; broad indexed-document public promotion) and six P3 (PDF deadline and aggregate budgets, delete/reindex lifecycle race, staged-generation document search, cross-tenant correction vocabulary, and fail-open future-object default privileges). Seven additional candidates were rejected. One P2 operational documentation drift was also confirmed between the operator backlog and launch runbook. No source fix was applied. | Codex Security standard scan completed with 763 ranked source-like files and 70 deep-reviewed selections; seven safe offline finding probes passed; local action-pin, documentation-link/script-reference, codebase-index, CI-scope, and autofix-workflow guards passed; offline npm audit reported zero cached advisories; `git diff --check` passed. Lint, typecheck, full tests, build, browser, live Supabase/OpenAI, hosted CI, drift, and production checks were not run because this checkout lacked `node_modules` and provider access was not authorized. | +| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 1ece1b891ed2d7f9577a060ae481e33cd4925ea4 + reviewed follow-up diff | offline release latency follow-up | The offline quality release gate reproducibly isolated one live timeout: a generic agitation table-lookup question was expanded into an unnecessary ten-term dose/route AND query, making lexical retrieval take about 39 seconds. Dose/route expansion now requires an actual dosing/route signal; the same case retrieves its expected source and four citations in 1.27 seconds without a model. | Focused clinical-search/retrieval Vitest 111/111; scoped ESLint; Prettier; `git diff --check`; live provider-free single-case quality eval passed with zero model/request/token/cost/generation evidence. | +| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 3ed3a7a2df37d7d15143ab7606e5748ac7ecca09 + reviewed follow-up diff | offline dose-route latency follow-up | The next isolated timeout was a short IM/PO agitation question receiving the same blanket ten-term AND expansion. Agitation dose/route retrieval now keeps only the dose and route signals present in the question; the exact case retrieves its expected source and five citations in 1.54 seconds without a model. All remaining RAG cases 23–44 passed individually, so no further deadline crash remains. | Focused clinical-search/retrieval Vitest 111/111; scoped ESLint; Prettier; `git diff --check`; live provider-free case 22 passed; live provider-free cases 23–44 passed individually. | +| 2026-07-14 | PR #655 / codex/release-blocker-remediation | a3f3a89676015cd5f018c07e8c3ad9483f91cef6 + reviewed follow-up diff | offline adversarial-latency follow-up | The final blocking offline-quality failure was an adversarial secret-exfiltration query that correctly refused but first spent about 25 seconds in lexical retrieval. Adversarial manipulation now short-circuits at the search boundary before provider-client creation, cache access, classification, aliases, or Supabase work, and is never cached. | Focused Vitest 2/2; scoped ESLint; Prettier; full TypeScript; `git diff --check`; live provider-free adversarial case completed in 100 ms with 0 ms RPC time; `eval:quality:release:offline` passed with zero blocking failures and zero model, request-ID, token, cost, or generation-latency evidence. Flaky local browser/composite suites intentionally not repeated; hosted CI remains authoritative. | +| 2026-07-14 | PR #666 / codex/release-blocker-remediation | 9b56eebe4b23ab783207445fb827c317c8d59be8 + reviewed follow-up diff | review-followup | One late P2 retrieval-contract gap was confirmed: the optimized agitation query retained IM/PO but could drop other already-supported amount, route, and frequency aliases. Medication evidence intent is now shared with retrieval selection, and focused agitation queries preserve requested numeric units, SC, SL, PRN, and frequency signals without restoring the broad ten-term expansion. | GitHub review-thread inspection; focused clinical-search/retrieval Vitest 112/112; scoped ESLint; Prettier; `git diff --check`. Hosted final-head TypeScript/build/CI and exact-head staging evidence remain required after push. | +| 2026-07-15 | PR #673 / cursor/audit-remediation-plan-0411 | 03fe72683d83606b73c951914278eabe897fc395 + reviewed follow-up diff | docs audit remediation plan review + CI | Fixed the hosted Prettier failure and all actionable review comments: preserved the real branch ref for the generic ledger parser, corrected `npm run` commands, scoped the no-P0/P1 verdict without obscuring the M4 code P1, disambiguated finding IDs from wave IDs, aligned wave-to-ledger update instructions with the review protocol, and made B3 require the Supabase project-identity preflight before provider-backed release gates. No additional high-confidence defect remains in the changed docs. | GitHub unresolved-thread inventory; focused Prettier on all changed docs; docs link/script reference checks; `git diff --check`. Docs-only; no Supabase, OpenAI, or other live-service checks. | +| 2026-07-14 | codex/formulation-specifier-separation-current | 25d7f733f + uncommitted fix | Specifiers/Formulation boundary bug hunt and remediation | Confirmed two P1 clinical-navigation/content boundary defects: the completed Formulation change deleted the distinct psychiatric Specifiers workspace and redirected every `/specifiers/*` route into Formulation; a later universal-search contract also labelled Formulation mechanism results as `specifiers`. Restored the independent Specifiers catalogue, detail, builder, compare, and map surfaces; registered both app modes and action sets; kept submitted searches in their owning standalone workspace; and split universal search into real `specifiers` and `formulation` domains with correct records, headings, mode ownership, and destinations. | Offline only: full Vitest 2,404 passed/1 skipped, TypeScript, full ESLint, focused Vitest 56/56, sitemap check, `git diff --check`, production-readiness READY with expected missing-env warnings, identity-checked server at `http://localhost:3384`, and repaired Chromium journeys for Specifiers desktop/mobile, Formulation mobile, and explicit route-family separation all passed. No provider-backed or live API checks run. | +| 2026-07-14 | claude/specifiers-v2-design-r55baf | 343f4ee4e89844e6a668910958ce1e3f119c128e | branch-cleanup | Retained: open PR #656 (full DSM-5-TR specifier catalog; +19k, novel data/loaders not on main). | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/formulation-specifier-separation-current | 17c9ea7383f5b463ec648317cd170c24b8e7c584 | branch-cleanup | Retained: open PR #672 (Specifiers/Formulation separation residual; core already landed on main via #674). | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | cursor/audit-remediation-plan-0411 | 6d4b946e981a9251aaeb12097b6edc9e9dab2b60 | branch-cleanup | Retained: open PR #673 (audit remediation plan docs). | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/perf-r2-plan-cache-migration | 471099c3031520fc4a083f802af3c8f95a9c7d44 | branch-cleanup | Retained (user decision): preserves unmerged perf-r2 batch image signed-URL endpoint + client-fetch-cache absent from main; sibling perf-r2 dups pending deletion. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/calculators-search-page | ed600b8bf5a07ef48f464d36f099e5f1cd1e5d13 | branch-cleanup | Retained (user decision): clinical-calculators mockup feature; note PR #670 has since merged to origin/main so this content is now also on main. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/domain-1-governance-remediation | 4470bad93bcd659651f1f61ffce503f77a9b4269 | branch-cleanup | Retained (user decision): novel governance incident runbooks + clinical-production-posture lib + clinical-query-privacy-notice component never merged to main. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/filter-layout-search-prominence-kwrbwl | 59ced590a932e1c7fe28f26a94eb05105ce0e4dd | branch-cleanup | Retained: newly pushed active work (feat(dsm) compact category filter); single unique commit, no PR yet. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/codebase-review-ade6ed | a96b8ffafb88da22f667b41edf01b215866dde32 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/document-page-redesign-7dd487 | c2cfd57b4e7ec602d96e7f042eb60ff0b10a9e8e | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/document-viewer-redesign-55b68b | 0dbd83c73d2783cbe8e8d00bf04c9947a33518fc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/medication-alerts-database-cb8o83 | a0ca895015df8ebe6ae57fa8a811a1fbb240e623 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/perf-r2-bundle-hygiene | 95ce39f7715caeadc8197c35c2c41500183a715e | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/perf-r2-hot-path | 843dcf8d287950b2ddf86a121701dfbb95ac86c0 | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/perf-r2-network-caching | 424ae6b045d9ec38443292a1569de4b04d6a295d | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/perf-r2-payload-trim | 5a6ce71153198c746fab96859d5895374ac05bb9 | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/pr-672-specifiers-formulation-3n123f | 059398c962711f57e5f9ee7c6b4783066cd6718f | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/site-performance-speed-61d154 | cb0bcf35498385bca1180462c8ab79b6f8293708 | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | claude/therapy-compass-pages-rz0m5l | 5a89a521add5a02dc4f6dd640b393c5bdd690183 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/dsm-diagnosis-mode | f6cda83ca6aed3a24d999ef4ccd38bff167d4788 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/dsm-main-integration-20260714 | 9e013894b2e45d6be39af1ef4593a14604886476 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/formulation-workspace | ce6baa31ffe9647d736a18e95f9d95a95bda313c | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/live-migration-history-alignment | c9853c7acdc80e3c33354c3b1a32e5df2682f521 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/offline-retrieval-signal-followup | ef448e212d12c1cadbeb3ea053ca6639e6f0ada4 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/please-thoroughly-review-this-repo | 47e850ee93dd5281c792eb60618f98ba2e972b8e | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/rag-canary-recovery | d6bd7fa7c0b9b29e9b7eddfd28e0478e042a0455 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/release-blocker-remediation | 8a7ec72b22bff98b8d4b31d533ae9a0738dee071 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/repository-review-remediation | 29c598cd2db4fc9c00ed56f60e8ef2adb969cccf | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/universal-search-domain-exclusions | 6b2c4ffbc81b9a35746ee2fa8795c73a2f65d4fc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | codex/universal-search-mode-ranking | 6a0c37f8e3b4b23fa52c49fec28dcbc8d635b80f | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/29199485110 | 4e09b838bda6a774f067b8e13717af2103502857 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/29202241308-fix-database-issue | 29db1aa1b29a812bf4c7eb7af5ea33371f086157 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/database-ci-setup | 45fa392a24987e4b596d80fc81528912e62d95c9 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix | 060b2cd9c0cb38fa0cb0521ce3f67ead13a9ab87 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-961c247e-5acb-45db-b4ed-62fcf97681cd | b6097f0fbf19f82527ea95a385efb2ca7b8ec794 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-accessibility-test-timeouts | 17e11e45835510d2a43b8ea6fdfeed10df11e0d7 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-again | 0b2d29a143926279b327ff302c2de3d5fe0edbc5 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-another-one | f1864308e0b287bb83b2a13daca4c3aa2ab95a3e | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-barriers | 8711ee2b15c3b9a1a0e8444ba2ee799d6c5e6ab7 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-ci-error | e6e735d2668f7383acc45bdb7cc7dc183e7a73a8 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-ci-issue | a95b282433e6b01bdd6444eb9b2de9148daf2363 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-ci-issues | 5f1c6f64a544705df9df970e09da3b85f0d90efa | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-ci-test-to-pass | 660e5789f56a0a54f68616392fb456e1ad10e48c | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-database-action-error | 7ff6c547e55100d7dfff912530e006f0a5ee70a2 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-database-action-issue | b367aeb084a60fc46d3e4e8d3b318491a1530ac6 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-database-action-run-issues | de36fd3ef8aa101e75a22fab8ff15940bb241e00 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-database-actions | 50cf0744df83708405d0bd215e22f19dc1f27815 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-failing-ci | d248707d09f62bb153d0eece69b4f7f4e8aeb7dc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-failing-ci-again | 28dacd7f19320bcbf2b03e5e40c7e97fc46a80cd | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-failing-ci-another-one | 59207b23fe88a23b0e2f3a6d7f1a288e0cca5132 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-failing-ci-one-more-time | 00b61456b3f4fd528b24476865fde3b046b105ea | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-failing-ci-test | 1de23d35e534c33cf444bc5e81e60c7384e8d072 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-failing-ci-yet-again | 8f2928b9dc925ac9ccc31e413ab422d2ffa77118 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-issue-in-database-action | 82c0e87224880ccbeee39f4101e98cf29683f74f | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-issue-with-database-connection | 67f5bb2744939922ceb280fab8785ee0259b26f2 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-one-more-time | 2682cbade791fc07f09d23fa11908eead223d3c7 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-please-work | 2f55346e72555500d17a08be02e6b649daa1a7cc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/fix-yet-again | c57bc8af5570a5fc69fa0f804f67cfa98df76b89 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | copilot/rerun-all-ci-again | 4615e39557112515cc9e4938fb5dd397f19ff70d | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | cursor/fix-pr654-ci-53b4 | 9f880853ea7d268186d982f4623b71f46e77d3dc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-14 | fix/accessibility-remaining-findings | 9f880853ea7d268186d982f4623b71f46e77d3dc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | +| 2026-07-15 | PR #677 / claude/cleanup-branches-worktrees-mxov4x | a93db73a29ca6a19619a6592e2e30ca9ea2f8218 | active PR review and remediation | All three actionable review findings are fixed: every branch namespace is parsed from the ledger table, only an exact completed cleanup review at the current HEAD suppresses repeat work, pending deletions remain actionable, and GitHub provider provenance is accurate. No additional high-confidence defect remains in the changed scope. | GitHub unresolved-thread inventory (0 remaining); hosted required CI green; exact-head focused Vitest `tests/repo-hygiene.test.ts` (9/9); `node scripts/sweep-branch-ledger.mjs --no-fetch --json`; `git diff --check`. No Supabase, OpenAI, or other live-service checks. | +| 2026-07-15 | PR #656 / claude/specifiers-v2-design-r55baf | 58ce935758c31672a0a051c5b3e6b888a7d8d153 | full DSM/ICD specifier catalogue and clinical-content gate review | No remaining high-confidence code defect after the review sequence corrected source provenance, verified-content wording, search ranking/deduplication, empty-state behavior, and neutral mixed-source labelling. The 494 unverified definitions remain withheld from display and ranking. Residual risk is the PR-declared qualified-clinician and TGA classification review before broader clinical deployment. | GitHub review-thread inventory (0 unresolved); exact-head hosted required CI, build, critical UI, UI regression, coverage, static, and security checks green. No live Supabase/OpenAI or provider-backed clinical workflow run. | +| 2026-07-15 | PR #679 / claude/therapy-compass-pages-rz0m5l | f5ca25f8b6b14f41e63f708933fe4bb311994795 | Therapy Compass production promotion and review-followup | All five review findings are fixed on the reviewed head: run-enabled shared-composer links stay on the Therapy Compass route, production data loads outside `/mockups`, deep links seed the in-tool search, and same-route query changes remount the provider. No additional high-confidence defect remains in the changed scope. | GitHub review-thread inventory; exact-head hosted build, critical UI smoke, UI regression, unit coverage, static, security, and image checks green; focused Vitest 28/28; TypeScript; `git diff --check`. No live Supabase/OpenAI checks run. | +| 2026-07-15 | PR #680 / claude/rag-scalability-review-x0s55l | 32e242ab7fc386ea82b19c7cfc2112aa41f06f9a | privacy, public-catalog throttling, ingestion-recovery, and merge-readiness review | Audit remediation wave 1 plus review follow-ups. Confirmed and fixed: mixed-owner document list/detail responses exposed nested summary internals and free-form document metadata for public rows; anonymous catalog rate limiting skipped known-slug detail routes; and ingestion recovery could retry a failed row without seeing a legitimate pending/fresh-processing sibling. Ownership-specific projections/redaction now cover list and detail responses, every catalog detail path is throttled, and both recovery scripts pass every open sibling to the planner. No remaining unresolved review thread or high-confidence defect. | GitHub exact-head review-thread inspection (0 unresolved); hosted required CI, UI regression, migration replay, build, coverage, static, and security checks green; local focused route/recovery Vitest 163/163; TypeScript; earlier full `verify:cheap`; Prettier; `git diff --check`. No live Supabase/OpenAI/provider checks run. | +| 2026-07-15 | PR #682 / claude/codex-builder-perf-flakiness-ck5yv7 | dc942dddb87c8a1fa8d84d88052b3d50dd883a43 + reviewed follow-up diff | CI performance, cache correctness, browser-lane routing, and merge-readiness review | Confirmed and fixed two P2 CI safety gaps: the cached `node_modules` key ignored `package.json` and `.npmrc`, allowing install-contract changes to reuse stale modules and skip `npm ci`; and removing the advisory quarantine job made any newly tagged UI test run nowhere. The cache now covers every install input and the quarantine lane performs only a cheap source scan when empty, preserving the speed improvement without losing coverage. No remaining unresolved review thread or high-confidence defect. | GitHub exact-head checks green before final main sync; focused Vitest 6/6; GitHub Actions pin check; CI-scope self-test; TypeScript; Prettier; `git diff --check`. Final hosted exact-head checks required after push. No live Supabase/OpenAI checks run. | +| 2026-07-15 | codex/outstanding-work-cleanup | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f + working-tree diff | repo-wide outstanding-work reconciliation and cleanup | No high-confidence P0/P1 remained in the locally executable scope. Fixed the stale architecture index for DSM/specifier routes, pruned redundant Knip configuration, removed the unused `SignedImage` default export, and reconciled maintained docs so completed/superseded plans no longer present as active work. Retained explicitly blocked work: provider-gated operator actions, the live-eval shadow reindex harness, deep-memory section-ownership design, and RAG follow-ups that require live evidence or product/security decisions. Full Knip findings were triaged rather than mass-deleted; unresolved-import scan is clean. | Offline `npm run verify:cheap` passed with 2,417 tests/1 skipped; docs links 806, script refs 264, codebase index 35/35; Knip unresolved scan clean; typecheck clean; focused Vitest 15/15; env-name parity clean; `git diff --check`. Provider-backed Supabase/OpenAI/GitHub/Railway, dependency audit, browser, build, drift, and release gates not run. | +| 2026-07-15 | codex/design-polish-pass | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f + reviewed working diff | full live design, responsive, UX, accessibility, design-system, routing, performance, lint, testing, documentation, and release-readiness review | No P0/P1 reproduced. Fixed the P2 duplicate phone scroll surface in the shared standalone shell and added a regression test; fixed mode-menu Tab dismissal; explicitly hid decorative dynamic icons; restricted press scaling to motion-safe environments; moved sheet backdrops and forced-colour glass/backdrop behavior onto design tokens. External target fidelity remains blocked because no independent Figma/mockup source was supplied. | Live 30-route desktop + 21-route phone sweep; targeted 320/390/639/768/1440/1920 proofs; `npm run verify:cheap` (2417 passed/1 skipped); `npm run verify:ui` (175/175); focused keyboard 1/1; accessibility media/axe 5/5; scoped Prettier, ESLint, TypeScript, type-scale, and icon-scale passed. Provider-backed checks not run. | +| 2026-07-15 | codex/documents-closed-default | 49f63791bced2b1764a11ab723aea94b45b026b6 | documents viewer disclosure defaults and related defect hunt | Fixed the inconsistent default-open document viewer sections by making indexed text, high-yield summary, tables/diagrams, and indexing details a native mutually exclusive closed disclosure group. The section navigation opens its requested disclosure and deep-linked evidence still reveals its target. The hunt also removed the explicitly open nested table-review queue, preserved printable summary content through the browser print lifecycle, and added cold-server readiness guards to the affected viewer tests. No other high-confidence default-open defect remains in the live Documents scope. | `npm run verify:cheap`; TypeScript; focused ESLint/Prettier; clean-worktree mocked Chromium coverage for deep-linked evidence, structured summary, closed/mutually-exclusive disclosures, navigation opening, and print state restore; `git diff --check`. Turbopack could not run through the local external `node_modules` junction, so clean browser verification used Next's supported Webpack dev mode. No Supabase/OpenAI/live-provider checks run. | +| 2026-07-15 | HEAD (detached) 0c56f27a37af88a073d2bb695d2cf4c05067ff4f | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f | test flakiness, runner safety, CI duplication, and local execution-churn audit | P1 test-integrity issues: `run-vitest.mjs` can report success when Vitest terminates by signal and force-kills concurrent same-worktree runs; the default Vitest glob can execute the live Supabase owner-search test when credentials are present, while that test silently passes on authentication failure. P2 cluster: Playwright server races/shared `.next` state and config-time persistent-server startup; CI reruns the full unit suite for coverage and PR-local RAG verification repeats 21 suites; known-flake tracking is substring-only, not tied to quarantine, and structurally requires a non-empty ledger; unseeded property tests; repeated module resets/source-graph parsing; long retrying browser matrices and swallowed `networkidle` timeouts; host-wide concurrent worktrees/install/test/server activity causes memory pressure, native-module lock failures, and invalidated runs. | Pure review, no source mutation except this ledger append. Offline `node scripts/flake-ledger.mjs --self-test` passed (confirming the non-empty invariant); ledger matching confirmed `narrow-viewport-parallel` applies to an unquarantined blocking title; `node scripts/verify-pr-local.mjs --dry-run --files src/lib/rag.ts` confirmed full test + build + offline RAG duplication. Full Vitest/Playwright not run because this worktree has no dependencies and concurrent repo work was active; provider-backed checks not run (confirmation boundary). | +| 2026-07-17 | codex/test-reliability-hardening | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f + reviewed remediation diff | implementation and merge-readiness review of heavyweight locking, offline test isolation, focused/live test selection, Playwright ownership, flake classification, CI consolidation, and browser race fixes | No remaining high-confidence P0-P2 issue in the reviewed diff. Three scoped integration defects were fixed before handoff: advisory mockup tests were unreachable behind the production route boundary; explicit focused-test paths did not fail closed when deleted or missing; and JUnit spec identities were relative to the Playwright test directory while the ledger uses repository-relative paths. Provider scrubbing was expanded to all repository-specific Supabase/database/E2E credentials, and early Playwright server signal/launch failures now fail immediately. Residual risk is final integration with the latest `main` and the full production Chromium run. | Offline focused Vitest 36/36 then 22/22; full TypeScript passed; targeted Prettier passed; `git diff --check` passed. Full ESLint was externally interrupted without a result and remains required on the clean integrated tree. Provider-backed Supabase/OpenAI checks were not run. | +| 2026-07-17 | codex/scroll-geometry-stability-20260717 | f88a41ae5fb62ae39d5d1d33fd5e21490e1ea60e | phone scroll geometry and boundary stability review | Confirmed two coupled P2 interaction defects: hiding the fixed bottom composer removed its reserved space and changed the scroll viewport, while collapsing the in-flow header at the bottom produced a browser-driven scrollTop clamp that was misread as an upward gesture. The dock now keeps stable clearance, hide/reveal uses directional hysteresis, and geometry clamps are rebased without revealing chrome. No other high-confidence defect remains in the changed scope. | Focused Vitest 8/8; TypeScript; scoped ESLint; Prettier; `git diff --check`. `npm run verify:cheap` reached the full Vitest phase but was stopped after making no progress under concurrent local Vitest workloads. Turbopack rejected the external node_modules junction and Webpack did not reach the identity endpoint, so exact-head hosted UI and required CI remain the merge gates. No Supabase/OpenAI/live-provider checks run. | +| 2026-07-17 | codex/header-footer-scroll-timing-20260717 | 8298bfdcb40c207dbac1128e83c07b4aba782e32 | header and bottom-composer scroll timing, motion, responsive behavior, and merge readiness | Added deliberate hide/reveal travel thresholds with direction-reset handling, aligned header and composer easing/durations, and preserved reduced-motion and breakpoint behavior. No remaining high-confidence P0-P2 defect was found in the scoped diff or focused live behavior. | Focused Vitest 7/7; targeted Chromium UI 5/5; scoped ESLint; Prettier; full TypeScript; full lint; `git diff --check`. `verify:cheap` reached the aggregate Vitest phase, where two repository graph scans exceeded their 30-second test timeout under local disk contention; isolated assertions passed until the same timeout. No Supabase/OpenAI/live-provider checks run. | +| 2026-07-15 | HEAD / main snapshot (detached review worktree) | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f | comprehensive repository review | Changes requested: two P1 defects (high-risk clinical claim support can accept a different trigger condition on lexical overlap; document-mode URL auto-run loops on navigation and leaves search loading indefinitely), one P2 supply-chain guard gap (the action-pin checker accepts mutable major tags and ignores SHA-pinned major versions), and one P3 orientation-doc gap (DSM and legacy specifier routes are absent from the codebase index). No P0 found. | Node 24/npm 11 and `npm ls --depth=0`; format, runtime, lint, TypeScript, sitemap/brand/icon/type-scale, docs links/scripts, CI/action/Codex guards; coverage 259 files passed/1 skipped and 2,417 tests passed/1 skipped; offline RAG 36 fixtures plus 282 tests; production build/client-secret scan; deployment boot smoke; critical Chromium 8/10 with two reproducible document-search failures; accessibility 5/5; viewport/focus checks through 1920x1080. Provider-backed governance, quality, drift, tenancy, hosted CI, and the cross-browser matrix were blocked or skipped by policy/targeted failures. | +| 2026-07-17 | codex/pwa-privacy-safe-20260717 | 35fa8c929d44a9bd84b3f7f2b795354d3b6dae02 | privacy-safe PWA shell and merge-readiness review | No remaining high-confidence product defect in the changed scope. The pre-push browser gate found and fixed one P2 test defect: cleanup referenced `PWA_CACHE_PREFIX` without passing it into the browser context, and the cold installability flow now has a focused 120-second budget. The worker caches only the generic offline page and allow-listed public shell assets; navigations, APIs, auth, queries, documents, uploads, signed URLs, range requests, and cross-origin traffic remain network-only. | Current-main integration; focused Vitest 81/81; full uncached ESLint; TypeScript; scoped Prettier and diff checks; production Webpack build generated 1,043 pages and the client-bundle secret scan passed; full Vitest produced 2,506 passes plus six contention timeouts, with all affected files passing 24/24 serially; focused Chromium PWA 2/2. No Supabase/OpenAI/live-provider checks run. | +| 2026-07-17 | codex/historical-branch-cleanup-20260717 | e36ac0c6628264c7ed6c494a597a62d0214b68f6 | branch-cleanup and historical-content recovery | Completed the pending historical cleanup: deleted 55 exact-SHA remote refs and 20 redundant local refs, removed nine clean merged worktrees, preserved every dirty, active, open-PR, or patch-unique worktree, and recovered the still-useful governance incident runbook from `codex/domain-1-governance-remediation`. Historical code changes were either tied to merged PRs or reviewed as superseded by current implementations; open PRs #699, #700, #702, and #704 remain protected. | Fresh `git fetch --prune`; GitHub PR inventory and exact commit-to-merged-PR associations; exact remote SHA rechecks before deletion; cherry-pick-aware logs; two-dot tree and branch-only-file review; Codex task-to-worktree cross-check; focused documentation validation recorded in the cleanup PR. No OpenAI, Supabase, production-data, or live clinical workflow was run. | +| 2026-07-17 | PR #704 / codex/scroll-geometry-stability-20260717 | 35e74ddbd61bacc5b34f06efbd58091f092665fd | nested scroll-source review follow-up | Confirmed the outside-diff CodeRabbit finding: the standalone shell shared one intent history across main and descendant scroll containers, so a switch from a deep main offset to a near-zero nested offset could falsely reveal chrome. Scroll metrics now identify their source, source changes rebase direction and travel while preserving visibility, and unit/UI regressions cover the switch. No unresolved actionable review finding remains. | Focused Vitest 9/9; TypeScript; scoped ESLint; Prettier; `git diff --check`. Exact-head hosted CI and UI remain required after push. No Supabase/OpenAI/live-provider checks run. | +| 2026-07-17 | main (origin/main) | e5caaa46cad5fb9a937f1dc43312723799b98abb | PWA setup review (service worker, offline fallback, lifecycle, manifest, headers/CSP, proxy bypass, test + CI wiring) | Completed the interrupted PWA setup review at current `main`. The PWA surface (`public/sw.js`, `public/offline.html`, `src/components/pwa-lifecycle.tsx`, `src/app/manifest.ts`, `docs/pwa.md`, all four PWA test files) is byte-identical to the already-reviewed `codex/pwa-privacy-safe-20260717` merge (35fa8c9); the only post-review deltas (#705) touch `next.config.ts` dist-dir guards, `playwright.config.ts`, and `vitest.config.mts` without changing PWA behavior. Privacy contract confirmed sound: network-only navigations with offline fallback, cache-first restricted to hashed `/_next/static` with MIME/destination validation, credentials omitted, cross-origin/query/auth/no-store/Set-Cookie requests blocked, bounded versioned caches, no auto-skipWaiting. No P0-P2 findings. P3: `docs/pwa.md` rule 6 requires an explicit retirement/kill-switch worker but none is committed. P3: `offline.html` is precached at install and never revalidated, so editing it without bumping `CACHE_VERSION` in `sw.js` strands installed clients; suggest a Vitest guard binding the `offline.html` content hash to `CACHE_VERSION`. Minor (documented): `?pwa-dev=1` registration persists until manual unregister. P4: optional manifest polish (`launch_handler`, `display_override`); `next.config.ts`/`src/lib/security-headers.ts` diffs do not set `ui_changed`, so served-header e2e assertions rely on the static guard in `tests/pwa-manifest.test.ts` (deliberate per the scope self-test). Housekeeping: the stale local `codex/pwa-optimization` checkout with uncommitted precursor files exists only on the owner machine and was left untouched. | Focused Vitest via `npm run test -- tests/pwa-service-worker.test.ts tests/pwa-manifest.test.ts tests/pwa-lifecycle.dom.test.tsx`: 45 passed (38 node + 7 jsdom) after `npm install` restored the lockfile-pinned `jsdom` missing from this container. Config inspection: `playwright.config.ts` testMatch and production pattern include `ui-pwa.spec.ts`; `ci.yml` `ui-critical` runs `npm run test:e2e:pr` (chromium, grep-invert quarantine/mockup) gated by `ui_changed`, whose patterns cover `public/`, `src/app`, `src/components`, and `tests/ui-*.spec.ts`; Vitest projects include `tests/**/*.test.ts` plus `tests/**/*.dom.test.tsx`, so the PWA unit tests run inside `npm run test` and `verify:cheap`. `git diff f7c4e293e..e5caaa4` over the PWA paths showed no changes. `tests/ui-pwa.spec.ts` confirmed to assert the CacheStorage inventory privacy contract with API/Supabase/OpenAI routes blocked. Not run: local Playwright PWA e2e (browser gate separate; covered in the CI PR gate) and provider-backed checks (confirmation-required). | +| 2026-07-17 | codex/chat-supabase-migration-preflight-b463 | f7c4e293ef35acc54f2b82bbccb2990d51289d5c | live production Supabase security, integrity, drift, and performance review plus remediation | Resolved and deployed the P2 retrieval-performance issue with `20260717160000_optimize_owner_public_retrieval`: owner/public filtering now happens in one scoped query and index-unit text/term candidates use separate GIN-friendly branches. Warm text retrieval improved from 1.269 seconds to 34 ms; warm index-unit retrieval completed in 36-39 ms (first cold run 2.376 seconds with 2,009 physical reads). No P0/P1 security, privacy, RLS, privilege, storage, migration-history, or integrity issue was found. | Isolated Docker schema replay; pre-deploy drift showed exactly four intended function changes; linked production push; post-deploy `No unexpected schema drift`; exact project and migration-history checks; security and performance advisors; live access-scope parity; bounded `EXPLAIN ANALYZE`; post-migration logs; focused Vitest 74/74; offline RAG fixtures 36/36 and contract tests 291/291; ESLint; TypeScript; function grants; production readiness. Full `verify:cheap` reached the 10-minute host timeout during broad Vitest and ended with EPIPE; focused and domain checks passed. No OpenAI calls, write load test, or backup/PITR restore test was performed. | +| 2026-07-17 | codex/chat-forms-import-6914 | e5caaa46cad5fb9a937f1dc43312723799b98abb + working-tree diff | shared Forms/Services catalogue access and LOCAL_NO_AUTH_OWNER_ID review | Fixed one P1 availability/design defect: authenticated reads materialized a private copy of the shared catalogue on first access, creating drift, unnecessary writes, and possible registry-corpus side effects. Forms/Services now merge the reviewed shared baseline with private owner overrides for list, detail, and universal search; older partial overrides retain missing shared metadata; no registry GET seeds or embeds. Private rows and linked documents remain owner-scoped. The ignored local owner setting was corrected to the verified sole live-owner UUID and source validation now requires a UUID. No remaining high-confidence defect in scope. | Focused registry/universal Vitest initially exposed four local expectation/count mismatches; corrected registry suite passed 17/17 and registry/logging suite passed 23/23. Full TypeScript passed. `verify:cheap` passed runtime, action pins, sitemap, brand, type/icon/function guards, full lint, and TypeScript; full Vitest reached 2,588 passing with one stale logging-guard failure, which was fixed and focused-verified. The final full-suite rerun was terminated by the 5-minute host timeout without a reported assertion failure. `git diff --check` passed. No Supabase/OpenAI/provider call or schema/RLS mutation was run for this review. | +| 2026-07-17 | codex/scrolling-cleanup-20260717 | ff77cd06c + latest origin/main sync | cross-page scrolling and interaction stability review | Fixed two confirmed P2 defects: desktop action-popup placement performed synchronous geometry work for every captured scroll event, and submitted differential searches with zero document matches fell back to the home state. Placement is now coalesced per animation frame with passive scroll listeners, and submitted empty-evidence results remain visible. Hardened three popup/navigation browser helpers that reproduced hydration timing failures. No other high-confidence defect remains in the scoped diff. | Scroll-focused Chromium 28/28; final affected Chromium 5/5; source regressions 2/2; scoped ESLint; Prettier; TypeScript and production build passed before the final upstream-only sync; `git diff --check`. The aggregate local Vitest/UI runs were affected by concurrent-worktree resource contention, so exact-head hosted CI remains required before merge. No Supabase/OpenAI/live-provider checks run. | +| 2026-07-17 | codex/chat-audit-remediation-port-20260717 | 4f41093ba01f88e6d04a53f0782e8676806e3f6f | audit-findings remediation and local merge-readiness review | No remaining high-confidence P0-P2 defect in the reviewed diff. The review fixed two integration issues before handoff: transactional delete moved `rag_response_cache` cleanup out of the API route but left the explicit route-table guard stale, and upstream added a migration after the intentionally final fail-closed ACL assertion. The guard now matches direct route queries and the unapplied ACL migration is renumbered last. Publication requires explicit approved manifests, delete/reindex is serialized transactionally with upload compensation, PDF extraction is bounded, search ignores staged generations, and unsafe effective default ACLs block. | Rebasing and regenerated drift manifest against local `origin/main` 220de891; disposable Docker schema replay; publication/delete/ACL SQL fixtures; Python 4/4; focused Vitest 237/237 plus post-sync schema/retrieval 66/66; docs guards; offline RAG 290/290; production-readiness CI ready; `verify:cheap` 2602/2602 before final upstream sync; exact-head `verify:pr-local` formatting, lint, typecheck, 2628/2628 tests, production build (1043 pages), client-secret scan, and RAG fixtures; `git diff --check`. No live Supabase/OpenAI/GitHub/hosted-CI/provider checks, deployment, or live migration apply. | +| 2026-07-17 | PR #713 / codex/chat-workflow-ideas-0916 | b52112df6aa36311d7420189064acd79dcf2c3f5 + reviewed follow-up diff | workflow toolkit review follow-up | Fixed all 14 actionable Codex and CodeRabbit threads: cross-platform path fixtures, installation-managed preflight guidance, complete Supabase-backed API database scoping, per-command approval boundaries, plugin-ignore narrowing, isolated CI-scope proof, remote-Git command guarding, repository-skill verification classification, `TypeError` diagnosis, strict CLI option values, machine-parseable JSON evidence output, and preservation of baseline database/clinical approval gates in the RAG lab. No unresolved actionable finding remains in the reviewed scope. | `npm run verify:cheap` passed with 273 files and 2,599 tests; focused toolkit Vitest 20/20; CI-scope self-test; plugin-ignore proof; `git diff --check`. Exact-head hosted CI remains required after the follow-up push. No Supabase, OpenAI, or other live product-provider command was run. | +| 2026-07-17 | PR #699 / codex/test-reliability-hardening | 6202835ab1cf3703af311b9afdf372f74c63e040 | branch-cleanup-superseded | Closed as fully superseded by merged PR #705 (`e5caaa46c`). Range-diff maps the original implementation commit to #705's first integration commit; #705 then adds seven focused reliability fixes, while #699's remaining commit is merge-only and contributes no unique relevant patch. The exact-SHA remote ref and the unregistered local predecessor ref (`b518c1de9`) were deleted after final rechecks. | Fresh GitHub PR/head/status inventory; exact `ls-remote` and local-ref checks; cherry-pick-aware log; range-diff against PR #705's merged head; merge-parent verification; exact leased remote deletion and exact-old-value local `update-ref` deletion. No Supabase/OpenAI/product-provider checks run. | +| 2026-07-17 | PR #716 / codex/pr-process-hardening-20260717 | 220de891f10f82df11eb2e8137367514c139a206 + reviewed implementation/follow-up diff | PR metadata, CI triage, review routing, Actions permissions, secret scanning, and branch-hygiene hardening | No remaining high-confidence P0-P2 defect in the reviewed process diff. Added a trusted base-SHA PR metadata/risk policy with draft and merge-queue handling; corrected CI triage to compare only the same workflow's latest completed `main` run; wired self-tests into local/hosted gates; documented the policy; created the missing durable Codex routing labels; removed four unused per-head routing labels; and applied read-only default Actions tokens, immutable Action pinning, no Actions-authored approvals, push protection, and automatic merged-branch deletion. Four policy defects were fixed before merge: API-only paths no longer trigger UI evidence, slash-bearing outcome titles are accepted, all seven governance items are required exactly, and placeholder risk/rollback text is rejected. | Offline `check:pr-policy`, `check:ci-triage`, `check:ci-scope`, action-pin check, scoped Prettier, and `git diff --check` passed. Initial hosted CI passed static, safety, coverage, build, images, Semgrep, Gitleaks, GitGuardian, and the aggregate gate; exact-head CI is required after the review fix. Broader local gates were deferred because other registered worktrees repeatedly held the heavyweight lock. GitHub provider inspection/settings changes were explicitly authorized. No Supabase/OpenAI/product-provider command ran. | +| 2026-07-17 | codex/performance-latency-remediation-20260717 | f277d13512e85dcaae4f9b94d028a8087e41375a | end-to-end database, network, middleware, client rendering, migration, privacy, and merge-readiness review | Fixed all confirmed performance findings plus three final review blockers: title-vocabulary backfill now installs its privacy trigger first, canonical schema replay preserves hardened trigger-function ACLs, and medication auto-seeding no longer aborts its own owner-cache flight. The isolated worktree also uses Next's supported Webpack fallback only when shared dependencies resolve outside the project. No remaining high-confidence P0-P2 defect was found in the reviewed diff. | Docker scratch replay and drift-manifest regeneration passed; live read-only plans selected lexical, table-fact trigram, and chunk HNSW indexes; exact TypeScript passed; focused Vitest owner-cache 9/9, runner safety 12/12, bundle budget 10/10, offline RAG 291/291, and earlier aggregate unit run 2,657 passed with its sole corrected schema assertion subsequently validated by direct ordering/ACL checks; production build and bundle budget passed at 1,363,382 gzip bytes; targeted Chromium dashboard deferral and NDJSON search passed, while the viewer trace reached all hydration/preview assertions and its corrected download-control selector remains for exact-head hosted UI. No OpenAI calls, live Supabase writes/migrations, deployment, or production mutation ran. | +| 2026-07-17 | codex/mobile-search-phone-refresh-20260717 (supersedes PR #700) | 42a3e3ce65dc5a0e1dce386e0b91fccd23d13d6c + reviewed follow-up diff | phone universal-search command-panel recovery and merge-readiness review | Recovered the still-useful behavior from PR #700 onto current `main`, including its hydration fix and wide-touch regression coverage. Hosted Production UI then exposed one desktop focus race: capability state intentionally initializes false for hydration safety, but an input could receive focus before the post-hydration effect synchronized the real browser state. The follow-up recomputes the same guarded predicate synchronously on focus; it requires the placement breakpoint plus either a fine pointer or a zero-touch desktop fallback, so wide touch devices remain suppressed while desktop keeps the first command-panel interaction. No remaining high-confidence P0-P2 defect was found in the scoped diff. | Focused Vitest 7/7; `npm run ensure` verified the project at `http://localhost:3751`; hosted static, safety, coverage, build, advisory UI, Semgrep, Gitleaks, and GitGuardian passed; the first hosted Production UI run isolated the nine desktop regressions. The focused browser proof reproduced the desktop race while the wide-touch regression passed, and exact-head hosted Production UI remains required after the focus fix. `format:changed -- --check` and `git diff --check` passed before the final follow-up. No Supabase/OpenAI/product-provider command ran. | +| 2026-07-17 | final historical branch/worktree cleanup against `origin/main` | 5d195d7ca8752b2ae4006725c6b145c5662bb687 | branch-cleanup | Merged PRs #716 and #717, closed superseded PR #700, and removed the three clean task worktrees. Deleted exact remote refs for `codex/mobile-search-phone-fix-20260717` (`590f32b73`), `claude/audit-findings-review-phgz92` (`ea3b8f95b8`), `codex/chat-forms-import-6914` (`b05da82f82`), `codex/chat-supabase-migration-preflight-b463` (`1ef0faee95`), and `codex/dsm-diagnosis-mode` (`f6cda83ca6`); the merged #716/#717 branches were deleted automatically. Deleted 14 unregistered local refs only after direct-main ancestry, exact ledger deletion-pending proof, or exact merged-PR commit provenance. Final inventory found zero remote branches without an open PR or registered worktree, zero locally merged or exact deletion-pending orphan refs, and no retired target refs or paths. Thirteen non-ancestor local refs and 25 registered worktrees remain preserved because they are backups, patch-unique/unresolved, open-PR-owned, or ownership could not be safely disproved. | Fresh fetch/prune; exact GitHub PR/head/merge associations; cherry-pick-aware logs; DSM PR #661 exact commit/file provenance; exact leased remote deletes; exact-old-value local `update-ref` deletes; clean-worktree and path/process checks; worktree prune; final zero-orphan inventory. The Codex task registry lookup timed out, so ambiguous registered worktrees were conservatively retained. No Supabase, OpenAI, production-data, or live clinical workflow ran. | +| 2026-07-15 | HEAD detached 570e6ba56 + WIP tree | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | thorough multi-lens review: WIP RAG/schema + clinical design/UI + architecture/bug-hunt | Changes requested: no P0. Confirmed P1s in WIP — registryCorpusDetailHref typecheck break; ChunkLoadCache error/null poisoning across parallel hydrations; registry cleanup `::uuid` cast abort; corrector GIN unused by query path; new table-facts trgm index expression mismatch vs trgm_matches. Design: production clinical shell stays token/a11y-aligned; favourites nav multi-gradient bars and mockup hex drift fight clinical density. Residual: concurrent cache race, SECURITY DEFINER revoke gaps, schema/migration lifecycle drift, accidental pnpm-lock.yaml. | `npm run typecheck` (red: registry link callers + stale .next apps types); static SQL/expr/diff review; architecture + bug-hunt agents; design-system grep (tokens, reduced-motion, forced-colors). Not run: vitest, verify:*, ensure/browser screenshots, live Supabase/OpenAI. frontend-ui-reviewer subagent blocked by usage limit — design pass done inline. | +| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (PR #826) | 3d9ee5f44dea9edb1ef5af28f5f265d88d8b9f29 | PWA hardening implementation (plan Phase 1) | Implemented the three open findings from the 2026-07-17 PWA setup review with zero cache-semantics change: committed the rule-6 retirement worker `public/sw-kill-switch.js` with a five-test lock (`tests/pwa-kill-switch.test.ts`), bound the `offline.html` sha256 to the sw.js `CACHE_VERSION` pairing in `tests/pwa-manifest.test.ts` (drift trap closed), added the `?pwa-dev=0` local teardown to `pwa-lifecycle.tsx` with a dom test proving foreign workers and caches stay untouched, and updated `docs/pwa.md` rules 1 and 6 plus the local-dev cleanup step. Phase 0 of the approved plan (pr-policy `base_ref` checkout fix + the Set-Cookie worker-test case) was found already merged to main and skipped. | Focused Vitest 53/53. `verify:cheap` and the `verify:pr-local` unit stage green except `tests/pdf-extraction-budget.test.ts`, which fails identically on clean main in this container (child-process semantics; baselined twice). `verify:ui` 218 passed with 2 container-baselined pre-existing failures: the `ui-pwa` installability test (Chromium `in-incognito` artifact, reproduced from a clean-main detached worktree with its own server) and the `ui-smoke` document-viewer PDF-canvas mobile test (also fails on clean main `54229f0`; flagged as possible upstream regression). `format:check` clean for repo files. Conditional build/bundle stages deferred to the blocking hosted CI Build job on PR #826. No provider-backed checks run. | +| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (PR #835) | d46f381ac27b53b1bd5ac0ef77962fbd48cf3aa7 | PWA manifest and install-UX polish (plan Phase 2) | Implemented Phase 2 of the PWA plan with cache semantics untouched: `launch_handler` navigate-existing/auto and `display_override` standalone/minimal-ui in `manifest.ts`; `monochrome-192/512` icon variants rendered as a white alpha-only silhouette from the shared brand mark via `BRAND_MONOCHROME`; a one-time iOS/iPadOS Add to Home Screen hint in `pwa-lifecycle.tsx` (30-day dismissal key, never in standalone, timer-deferred eligibility for the set-state-in-effect lint rule). Docs Installability section updated; manifest screenshots remain deferred per the production-capture precondition. Phase 2 re-scout confirmed zero upstream drift before implementation. | Focused Vitest 55/55. `verify:cheap` 2773 passed/1 failed and `verify:pr-local` unit stage identical — the lone failure is the known container-only `pdf-extraction-budget` artifact (clean-main baselined; hosted CI green on #826). `test:e2e:pwa`: privacy journey passed; icon probes validated both new monochrome PNGs; sole installability error remains the container `in-incognito` artifact. `verify:ui` 219 passed/2 failed — exactly the two clean-main-baselined container artifacts, no new failures. `format:check` clean. Build/bundle stages deferred to the blocking hosted CI Build job on PR #835. No provider-backed checks run. | +| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (Phase 3, PR #872, final reviewed head ba46c1581a3c4e87d5d5989f3eb77483c9aa8aa5) | ba46c1581a3c4e87d5d5989f3eb77483c9aa8aa5 | PWA offline-page design upgrade (plan Phase 3) | Rebuilt the `public/offline.html` visual shell on mirrored Clinical White / Aegean Graphite tokens (each value annotated with its source token): pure-white canvas, aligned text/border/hover values, system UI font stack, and the clinical-accent focus ring replacing the off-contract amber. Privacy copy, structure, forced-colors behavior, safe-area insets, and target sizes unchanged. `CACHE_VERSION` bumped to the new unique `2026-07-18-v1` with the offline.html sha256 pairing updated — the Phase 1 binding guard exercised for real and enforced the paired move. A transient typecheck failure from stale `.next/dev` route types (cross-branch dev-server state) self-resolved after server regeneration; nothing was deleted. | Focused Vitest 55/55 including the binding guard on the new pairing. `verify:cheap` 2778 passed/1 failed and `verify:pr-local` unit stage identical — the lone failure is the known container-only `pdf-extraction-budget` artifact (clean-main baselined; hosted CI green on #826/#835). `test:e2e:pwa`: the cold-offline journey rendered and asserted the redesigned page through the new-version worker; sole installability error remains the container `in-incognito` artifact. `verify:ui` 219 passed/2 failed — the same two clean-main-baselined container artifacts, no new failures. Build/bundle stages deferred to the blocking hosted CI Build job. No provider-backed checks run. | +| 2026-07-18 | codex/rag-merge-final-20260718-655a | 20e5964bbfdcac0311b89c96931a43544be545a6 | RAG recovery, grounding, and latency merge closure | Reviewed the recovered historical RAG fix series against fresh `origin/main`. No additional source change was needed: current main already contains the stricter source-scoped numeric grounding, blocked-retrieval-only extractive recovery, generic LAI deterministic recovery, per-case answer latency diagnostics, and agitation lexical-path protections. The only residual branch diff was proven unreachable because every medication-chart trigger yields explicit search terms; it was intentionally not carried forward. | Full local Vitest: 301 files / 2,779 tests passed. Offline RAG fixture and production-contract validation: 36 golden cases, 21 suites, 294 tests passed. Prettier and `git diff --check` passed. `verify:cheap` reached its lint stage after all preceding static guards passed, but was blocked twice by active heavyweight jobs in other registered worktrees; it was not retried. No Supabase, OpenAI, live retrieval, production-readiness, deployment, or hosted CI command was run. | +| 2026-07-17 | codex/design-audit-20260716 | 47b58ddf95826231a6057b400e7f601c403a129d + reviewed working diff | exhaustive design, accessibility, UX, interaction, route, responsive, HTML/CSS/JS/TSX, and test-coverage audit with remediation | No P0. Fixed two P1 trust/responsive defects and the confirmed P2/P3 set: false Favourites provenance/demo leakage/dead controls, Therapy phone reflow/load recovery/contrast, semantic tabs/search/filters, error focus/theme, deterministic Forms back navigation, honest unavailable actions, application dialog semantics, duplicate differential keys, skip-link target, Playwright project isolation, and route coverage. External visual-target fidelity remains unavailable. | Static 261-file/~67,944-line inventory; independent combined-diff review; focused Vitest 21/21; jsdom 24/24; architecture 6/6; accessibility browser 5/5; focused route/browser recovery; lint; TypeScript; runtime/workflow/sitemap/brand/type/icon checks; production build with 1,043 pages and client-secret scan; `git diff --check`. Canonical aggregate Vitest was Windows-runner inconclusive and full UI was not repeated after focused remediation. No provider/API checks. | +| 2026-07-18 | codex/main-merge-51278-final-20260718-late | 45fa3c6c7, 14a0a898c | merge integration of 51278a70d onto fresh origin/main | Replayed the requested historical design-audit commit onto fresh `origin/main`. Kept current-main versions for five conflicts, including the regenerated drift manifest and current schema assertions. Fixed the duplicate sitemap-generator declaration, corrected redirect-section coverage, and restored the current `Clinical Guide` UI contract. | `git diff --check` and `npm run sitemap:check` passed. `npm run test` was attempted twice but blocked by the repository-wide heavy-command lock held by a separate Playwright worktree; no provider-backed checks ran. | +| 2026-07-18 | origin/main framework and dependency modernization snapshot | 4057677c8b92a5e1d997ec44958764fa91f5d424 | parallel build/infra, backend, and frontend modernization audit | Changes requested. No P0. Confirmed two P1 defects: Supabase SSR 0.12 auth-cookie responses discard mandatory anti-cache headers, and reindex bypasses the server-only-aware TSX runner after mutation-capable setup. Five P2 blockers cover the Webpack-to-Turbopack production cutover, incomplete Railway image-build watch ownership, missing clean `next typegen`, Node 26 types over a Node 24 runtime, and App Router retry actions that reset without re-fetching. P3 removal-readiness debt remains in Zod and Next Image APIs. Manual rewrite zones are auth response ownership, bundler/CSP/artifact consumers, JSZip resource limits, OpenAI request typing, and React Compiler adoption in the stateful dashboard/viewer roots. | Parallel read-only source/config/test audit against the exact snapshot; Node 24.18.0/npm 11.17.0; exact-version Next 16.2.10 bundled upgrade, Turbopack, error-boundary, and codemod guidance; TypeScript 6 backend no-emit analysis and Node import probes via a separately installed exact-version local dependency tree; `git diff --check`. No install, registry outdated/audit, full repo lint/typecheck/test/build/browser/Docker, Supabase/OpenAI, deployment, or hosted CI run; this worktree had no `node_modules`. | +| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (PR #890, plan Phase 4; single-batch implementation+ledger commit — Phase 3 landed as squash 44a4c511bc1381168474794d6f89273564659ead) | ceabc04d75fd0cea2a120d504418d44edd704bfb | App-wide performance pass: audit-then-fix + budget ratchet (plan Phase 4) | Audit on post-#872 main: enforced gzip budget +3.13% over the 1,363,382-byte baseline; analyzer treemap showed pdfjs-dist (123 KB) and cross-mode-differentials data (121 KB) already correctly lazy, and disproved the suspected forms-catalog dashboard leak (type-only import). Confirmed one real defect: the 143-line `/services` client home page value-imported `defaultServiceSlug` from `@/lib/services`, compiling the ~915 KB services snapshot (~100 KB gzip) into its route chunk. Fixed by computing the slug in the server page (`src/app/services/page.tsx`) and passing it as a prop; the client component builds its task cards from the prop. Measured result: budget swung from +3.13% to −3.97%; baseline ratcheted down 1,363,382 → 1,309,286 bytes gzip so CI locks the win. pdfjs/differentials/#718 paths deliberately untouched per audit rules. Two transient `.next/dev` generated-type corruptions from the long-lived dev server were resolved by stopping the server and setting the generated dir aside (reversible); nothing hand-deleted. | Build + `check:bundle-budget --json` before/after (artifacts in session scratchpad); `check:bundle-budget -- --update` for the ratchet; `npm run test` 2789 passed/1 failed (known container-only `pdf-extraction-budget` artifact, hosted-CI-green through #826/#835/#872); `verify:cheap` green to the same artifact; `verify:ui` 219 passed/2 failed (the two long-established container artifacts; ui-tools spec covering the services surface passed); `verify:pr-local` unit stage identical; typecheck/lint/format clean. Lighthouse not run (dev-server churn; bundle evidence sufficed for this fix set). No provider-backed checks run. | +| 2026-07-18 | PR #871 / codex/design-audit-final-pr-20260718 | bb85b546e + ledger closeout | final current-main design/accessibility audit integration, hosted review resolution, and PR-readiness review | No remaining high-confidence P0-P2 defect after current-main reconciliation, two independent read-only reviews, and remediation of every confirmed review finding. The follow-ups made client demo state fail closed in production for both prototype items and set suggestions, separated local no-auth upload capability from Favourites demo treatment, kept unavailable Favourites controls focusable with accessible reasons, restored visible skip-target focus, limited Favourites selection to the wide layout that exposes its workspace, aligned upload/index semantics with each responsive rendering mode, exposed filtered Tools results as a labelled group, and kept Therapy Compass in an honest loading state until its catalogue resolves. The audit also distinguishes completed browser assertions from an incomplete valid document-source redirect case. External design-target fidelity remains unverified without an approved target. | Canonical local PR verification completed through runtime, changed-file formatting, full ESLint, TypeScript, full Vitest, webpack production build/client-secret scan, and offline RAG fixtures. Focused Therapy, navigation/auth, demo-boundary, and unavailable-control regressions passed after correcting one test-order issue; the final demo/upload boundary selection passed 4/4; scoped zero-warning ESLint, changed-file formatting, and `git diff --check` passed. The full local Chromium sweep completed 236/237 with one hydration-timing failure: the app-mode test clicked before React attached its handler. The existing handler-readiness pattern was applied; focused rerun attempts were then lock-blocked by another registered worktree, so exact-head hosted Chromium remains the required proof. Initial hosted checks, including Production UI, passed before these final follow-ups. No OpenAI, Supabase, production-data, deployment, or live clinical workflow ran. | +| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (PR #896, plan Phase 5; content commit + this ledger follow-up) | a6c2b4e92374e9002fb00c547eb5677d01ce538c | Design-polish sweep: audit-then-fix (plan Phase 5, final phase) | Audit on post-#890 main: three strict design guards clean; full re-run of the 07-token-adoption-audit grep method shows all July 3 debt resolved (M1–M3 done, L4 reduced to the deliberate theme-aware `ring-white/N dark:ring-white/10` glass idiom, L5/L7 gone; production hex all legitimate print/brand/console/comment classes); 43-capture live sweep across 15 routes × desktop/phone + 320px spots + dark/reduced-motion/forced-colors spots found 0 overflow and 0 console errors. Three defects found and fixed: (1) forced-colors solid-button labels rendered as blank Canvas-on-Canvas backplate boxes (axe-invisible) — command controls flattened to the native HCM ButtonFace/ButtonText pairing and accent glyph tokens flipped to ButtonText inside the existing forced-colors block, regression-locked by a new ui-accessibility test; (2) tools desktop 6-up quick-action rail truncated card titles at 1440×1000 — card metrics tightened, all six titles verified unclipped; (3) privacy page rendered "systemand" from a JSX newline-adjacent-to-tag drop — explicit space, locked by a privacy-ui assertion. Dated July 18 run appended to docs/redesign/07-token-adoption-audit.md (archived design-qa.md not resurrected). | Guards + focused vitest 14/14; `verify:cheap` chain green to the known container-only pdf-extraction-budget artifact (2806/2809); `verify:ui` 220 passed/2 failed (the two long-baselined container artifacts, hosted-CI-green through #826/#835/#872/#890); `test:e2e:accessibility` 8/8 incl. the new forced-colors token test; production build + client-bundle secret scan passed; `check:bundle-budget` within tolerance vs the Phase 4 ratchet (1290.6 vs 1278.6 KiB baseline); `verify:pr-local` runtime/format/lint/typecheck/build/rag-fixtures green with the same sole unit-suite artifact. `verify:release` not run (provider-backed; awaits explicit confirmation). No provider-backed checks run. | +| 2026-07-19 | all remote feature branches and registered worktrees against `origin/main` through PR #899 | 8242fa63d5f5b79fc770c9ae4f633e3a784b80e1 | branch/worktree cleanup, useful-work recovery, and protected-main merge closure | Deleted 122 stale or closed remote feature refs with exact SHA leases; four additional merged PR branches were removed by the protected-main PR workflow. Removed 32 obsolete, superseded, or merge-proven worktree registrations. Recovered useful dirty RAG work into PR #901 (deterministic and opt-in semantic reranking) and PR #902 (retrieval phase latency telemetry), preserved follow-up decisions in `docs/process-hardening.md`, and recovered four missing historical review rows. PRs #897, #899, #901, and #902 are merged with green exact-head checks and zero unresolved review threads. A detached full-repo-review worktree is deliberately retained because its ownership/activity could not be safely disproved; one unregistered `node_modules` junction residue is also retained because deletion was denied by local safety policy. | Fresh fetch/prune; full GitHub PR/check/thread inventory; `git worktree list --porcelain`; cherry-pick-aware right-only logs; exact leased remote deletes; exact-old-value local ref deletes; clean-worktree, path, and merged-PR proof before every removal. PR #899 local proof: focused Vitest 31/31, changed-file ESLint, `verify:cheap` 317 files / 2,879 tests, and `verify:ui` 239/239; exact-head hosted checks all passed. PR #901 local proof: `verify:cheap` 316 files / 2,870 tests; PR #902 focused Vitest 8/8 plus ESLint and typecheck. No OpenAI, Supabase, live clinical, deployment, or production-data workflow ran; provider-backed semantic canary evaluation remains approval-gated. | +| 2026-07-19 | main / `codex/supabase-database-review` | 4034d2e60ebb6616130ff17bf3cb69368f36f8f6 + reviewed working diff | live `Clinical KB Database` security, migration, schema-drift, integrity, and performance review against current repo | Confirmed and remediated a P1 privacy defect: 601 private-document title-vocabulary rows were reachable by the service-role query corrector; the live public-only sync/backfill now reports zero private or out-of-scope rows. Applied the committed retrieval-count bound, audit-metadata minimization, registry cleanup/index, public-title corrector, and atomic summary-rate-limit migrations. The missing FK and registry indexes are present and no invalid indexes remain. A second P1 was found in the untracked live `ingestion-worker`: gateway JWT verification accepted any project JWT before privileged direct-Postgres job processing. Recovered the deployed source into the repo, restricted it to POST plus a gateway-verified `service_role` claim, expanded the Deno checker to every tracked Edge Function, and deployed exact-matching v13 with JWT verification enabled. Review also exposed a repo mirror/test gap: the count-clamp migration was not reflected in `schema.sql`; the branch now mirrors it and locks both sources in the focused test. Remaining hosted blocker: `postgres` cannot assume managed `supabase_admin`, so the fail-closed default-ACL migrations and final title-word constraint/trigger migration remain unapplied; the intentional service-role-only table still produces one INFO no-policy advisor. | Supabase connector project identity, migration and Edge Function inventory, full drift snapshot comparison, security/performance advisors, catalog integrity/ACL/index queries, Vault JWT-role compatibility check, post-apply invariants, exact deployed-source hashes, and unauthenticated live rejection (401); focused retrieval/schema/drift Vitest 82/83 with only manifest freshness failing; Edge/retrieval auth 9/9; Deno check for both functions; offline RAG 36 cases / 294 tests; function-grant guard; scoped ESLint, Prettier, and `git diff --check`. `check:supabase-project` was attempted but stopped before provider contact because local project env vars are unset. `drift:manifest` was blocked because Docker Desktop could not start and was cleaned up. `verify:cheap`, `verify:pr-local`, production-readiness, OpenAI, hosted CI, broader deployment, and commit/push were not run. | +| 2026-07-19 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | 87d4a479cd320220c91eba5c91e253e843dcc98f | final Mode phone-sheet review + merge-readiness | No remaining high-confidence P0/P1. Fixed residual P2 Sheet backdrop drag-dismiss (gesture must start on dimmed area). Phone ≤639px Mode menu uses bottom Sheet; desktop absolute dropdown/keyboard/blur contracts preserved. Python PDF extractor resolves python/python3 and process-group kills reliably. Clinical governance: UI + fail-closed extractor binary resolution only; no answer/source/privacy surface change. Safe to merge after hosted required checks green on this HEAD. | `verify:cheap` 2954 passed; Mode Playwright 5/5 (phone sheet/backdrop/desktop/keyboard/a11y); `check:production-readiness:ci` READY; prettier format check fixed for CI Static; no OpenAI/live Supabase writes; full `verify:ui`/`verify:release` not required beyond Mode proofs. | +| 2026-07-20 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | f6522603eedabb88c311a6f7df172505673d087e | main sync + merge-readiness revalidation | Re-merged moving `origin/main` (kept `PR_POLICY_BODY.md` for CI body sync; adopted main `python-bin` helper; retained PDF process-tree kill hardening). Mode phone Sheet path still present. PR Policy had a race with Sync PR policy body on prior tip; body now contains checked governance items matching main policy. No new P0/P1 in product scope. Merge-ready once exact-head required checks are green. | Local after merge: focused Vitest for extractor/sheet 1127 passed; Mode sheet symbols intact in `master-search-header.tsx`. Hosted: awaiting Static/Unit/Build/Production UI/PR policy on this HEAD. No OpenAI/live Supabase writes. | +| 2026-07-20 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | ddbc549a6af469b61c112373d6a5099cb04810d0 + ledger | hydration fix + merge-readiness | Fixed P1 UI regression: phone `matchMedia` in `useState` caused React #418 hydration pageerrors on DSM/specifier/differential phone journeys in Production UI. Gate now SSR-safe (`useState(false)`), syncs after mount, and refreshes from live matchMedia on Mode open. Merged `#940` header inset. | Local: route-coverage 3/3 previously failing; Mode smoke 3/3; audit-navigation + focused header/sheet Vitest green. Hosted: awaiting exact-head Production UI/PR required. No OpenAI/live Supabase writes. | +| 2026-07-20 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | 792142c88191e201311238984b1530f784430f0e | exact-head merge-ready CI | No remaining high-confidence product defect. Hosted required checks green on tip after Prettier format fix. Residual: branch protection still needs a human approving review (`mergeStateStatus=BLOCKED`, empty `reviewDecision`). | Hosted exact-head: PR policy, Sync PR policy body, Static, Safety, Unit, Build, Production UI, Advisory UI, PR required all SUCCESS. Local Mode Playwright 5/5 + route-coverage hydration 3/3. No OpenAI/live Supabase writes. | +| 2026-07-20 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | e05cd0b8ac1ef4dbc9b30307e3715fc437b1540e + ledger | CodeRabbit findings + merge push | Closed unresolved review threads: removed PR-head `GOVERNANCE_ALL_CHECKED` self-attest (aligned sync with main + workflow guard), restored strict checklist regex, fixed unset `PYTHON_BIN` test path. Hydration Mode-sheet thread already resolved. Local: full unit 2971 passed; Mode Playwright 5/5; route-coverage 3/3; pr-policy self-test + workflow guard green. | Awaiting exact-head hosted CI; then human approving review remains the only merge gate. No OpenAI/live Supabase writes. | +| 2026-07-19 | cursor/safari-edge-to-edge-f46b (PR #933) | 15061964dd2fdf9665f72b7282f5cc81c736e57f | final Safari edge-to-edge / phone dock reserve review + merge readiness | No high-confidence P0-P1. Confirmed implementation: shared reserve module collapses to 0.75rem when dock hides; shell uses block scrollport + inner mobile-composer-reserve-pad so clearance contributes to scrollHeight; child dock-sized env(safe-area) pads removed; DocumentViewer owns its dock pad. Review polish: formulation/specifier max-sm:min-h-0 alignment, document-route ownership simplification, hidden-pad CSS token guard. Residual P2/P3 only: differentials compare zero-inset backdrop margin, idle 2rem vs max(2rem,safe-area) ~2px, unused-looking #main-content padding transition still needed by ClinicalDashboard. Merge-ready. | Local: format/lint/typecheck/knip/budgets pass; unit 2952 passed with only pre-existing pdf-extraction-budget (python ENOENT, also fails on clean main); production build + client-bundle secret scan pass; focused Chromium composer suite 6/6 (forms hide, tablet/desktop clearance, differentials compare, service-detail endpoint, document-viewer hide, long-answer dock). Hosted CI on prior head fully green including Production UI; polish head re-checked before merge. No OpenAI/live Supabase/provider calls. | +| 2026-07-19 | cursor/hide-favourites-guest-mode-a26d (PR #934) | 23d05539320427ea3f994eaec3c2e95daa481492 | Favourites guest mode-switcher/sidebar auth gate review | No P0/P1. Primary request correctly wired: MasterSearchHeader fails closed; ClinicalDashboard and global-search-shell both pass session favouritesAccessible to mode menu + desktop/mobile showAccountLibrary; selectSearchMode/changeMode guarded; /favourites stays on-page with signup for guests. Residual P2: guest discovery still possible via composer cross-mode Favourites chips and Tools catalog Saved workflows (content remains gated on /favourites). P2 test gap: wiring tests are source-string, not MasterSearchHeader DOM. P3: header passes precomputed access as authenticated plus demoMode (redundant OR, intentional demo reopen). | Focused Vitest favourites-auth-gate + app-modes 26/26; prior verify:cheap green on branch; browser guest check: sidebar omits Your library/Favourites, /favourites shows signup gate; mode-menu automation inconclusive. No OpenAI/Supabase/hosted CI. | +| 2026-07-19 | cursor/hide-favourites-guest-mode-a26d (PR #934) | 04192653 | Final Favourites total guest-blackout review + merge readiness | No P0/P1. Fixed residual P2s: rankToolRecords now fails closed by default; mode/chip filters stop double-ORing demoMode; gated deep-link mode chrome falls back to Answer; MasterSearchHeader mode-menu DOM tests added. Guest discovery closed for mode menu, sidebar, cross-mode chips, Tools Saved, universal tools ranking, also-matches, prefetch. Intentional residual: direct /favourites signup gate; mockup routes. PR body appears overwritten by unrelated Sync PR policy content — agent posted corrective comment (403 on body edit). | Focused Vitest 37/37; verify:cheap green; verify:pr-local green (build + client-secret scan + RAG fixtures); browser guest Tools/sidebar/favourites proof earlier. No OpenAI/Supabase writes. | +| 2026-07-19 | cursor/pr-policy-body-cleanup-f46b (PR #942) + PR #933 closeout | 7c8e6aadf0890b143372fb96f13d9de47a416db9 | post-merge CI triage for #933 PR-policy red check | PR #933 product merge (`bd864de0`) already on main with green post-merge main CI (Static/Unit/Build/Production UI/SAST/Docker). Sole remaining red check on #933 was post-ready PR policy against a stale synced body with unchecked governance boxes (from leftover `PR_POLICY_BODY.md` introduced by #932). Token cannot edit merged PR bodies (403). Removed the stale template via #942 so Sync PR policy body no longer reapplies unchecked governance. Local composer regression 6/6 on main; reserve unit 11/11. No product regression. | Hosted #933 pre-merge + main push green; #942 required checks green then squash-merged; focused Chromium composer 6/6; reserve Vitest 11/11. No OpenAI/Supabase provider calls. | +| 2026-07-19 | cursor/documents-search-header-3eab / PR #936 | a7feaa3033180b672cfafaaaf75dc75088ebf052 | documents search header redesign final review + merge readiness | No remaining high-confidence P0-P1. Implemented identity-first results chrome, unified Sort/type-filter/Library toolbar, removed documents Also-in-library strip, relocated ScopeAndGovernanceNotice under controls, fixed Prettier CI failure and memo-busting empty warnings default, synced accurate PR policy body then removed the stale leftover, and repeatedly merged origin/main so squash auto-merge is not blocked behind/dirty. Hosted required checks including Production UI passed on the integrated head. | Local: typecheck/lint/format; focused Playwright documents `@critical` + deferred source/admin + forms sort persistence; design-system/icon-scale/maintainability; build + RAG fixtures; verify:pr-local units with known pdf-extraction-budget env artifact also on clean main. Hosted: PR policy, Static, Unit, Build, Production UI, Advisory UI, PR required green. No OpenAI/live Supabase writes. | +| 2026-07-19 | cursor/specifiers-results-ui-7850 (PR #941) | ef9bcf23bb93cbaddddeda3aedf08e6d037e2f18 | Specifiers results UI elevation final review + merge readiness | No high-confidence P0-P1. Ranking blurb removed; solid Aegean subnav kept vs soft family chips; diagnosis control content-sized with min-h-tap; match cards single Open hit target with motion-reduce and guarded typical language. Re-synced origin/main after #936 ledger append conflict. Residual risk: hosted Production UI must finish green on exact head; full verify:cheap still hits known container-only pdf-extraction-budget failures also seen on main. | Local: format:changed; lint/typecheck on touched files; design-system + icon-scale; vitest specifiers+reserve 10/10; Playwright ui-specifiers 5/5 including filter interactions; production build + client-bundle secret scan; offline RAG fixtures 36/21. PR marked ready for review. No OpenAI/live Supabase provider calls. | +| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | 2df3181859345339d777ac814908b3095cea36fd | ModeHomeMain contentAlign fix for differentials mobile clipping | No high-confidence P0–P2. Fix correctly introduces exclusive `contentAlign` (`center` \| `start` \| `startOnPhone`), migrates therapy/formulation/specifiers off broken className justify overrides, top-aligns differentials results via `autoRunSearch`, and guards with static + Playwright fold assertions. Residual: DSM/forms/services still default-center; justify-strip leaves variant prefixes; Playwright `0.55*vh` upper bound may flake if header band grows; Chip compact overrides still dual-utility via `cn()`. | Static diff vs `origin/main`; inventory of all `ModeHomeMain` call sites; justify-strip regex probe; `npx vitest run tests/mode-home-main-align.test.ts` 4/4. Not run: Playwright/`verify:ui` (browser), `verify:cheap`/`verify:pr-local`, provider-backed checks. | +| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | 74c370d81342dd729398dc2b40ba3158ea30f1db | follow-up review + residual polish (policy body, align API, UI flake) | Prior residuals closed: `PR_POLICY_BODY.md` rewritten for #938 (Sync PR policy body was overwriting with stale #932 text); `withoutJustifyUtilities` strips prefixed utilities; Chip uses exclusive `density` type scale; DSM/forms/services use `startOnPhone`; Best Answer fold bound uses header+240px; `ui-overlap` waits for a single `header#search`. No remaining high-confidence P0–P2 in the ModeHomeMain/differentials mobile scope. | `npx vitest run tests/mode-home-main-align.test.ts` 5/5; Prettier on touched files. Playwright focused rerun and hosted Production UI expected after push. | +| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | b62d414ca9001fbc1ac0d50b315450e107751d67 | merge-readiness after policy + hosted UI | No remaining high-confidence P0–P2. PR description sync + `verify:ui` evidence keep PR policy green; hosted Production UI / PR required green on exact head. | Local: align Vitest 5/5; ui-overlap 12/12; differentials fold Playwright 1/1. Hosted: Production UI, Advisory UI, Static, Unit, Build, PR policy, PR required, Sync PR policy body all pass. | +| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | f6682cc08eb0fcc0b8dd170d5c9358b3fedc0c0d | final meticulous review + safe-merge handoff | No high-confidence P0–P2. Forms/services now centre when unseeded/loading and use `startOnPhone` only when seeded (avoids sparse empty homes). CodeRabbit risk-line comment dispositioned as stale #932 body confusion. Residual: branch protection still requires a human approving review before squash auto-merge can land. | Local: align Vitest 5/5; focused Chromium overlap+fold 13/13; verify:cheap/pr-local unit stages 2953/2955 with only known container `pdf-extraction-budget` Python ENOENT failures; format/lint/typecheck/RAG fixtures pass; local `next build` blocked by running ensure server (hosted Build green). Hosted exact-head: Production UI, PR required, Unit, Static, Build, PR policy all SUCCESS. Enabled squash `--auto` merge. | +| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | e177b5e877aa2f834b3a601fa37679fa3e77b0e3 | merge main (#933) + post-merge revalidation | Merged `origin/main` (Safari edge-to-edge #933) with ledger conflict resolved by keeping both review rows. No product conflicts; `contentAlign`, Chip density, and Best Answer fold asserts intact. No new P0–P2. Still blocked only by required human approving review; squash auto-merge remains enabled. | Local after merge: align+composer-reserve Vitest 9/9; focused Chromium dock-hide + fold + compare-dock 3/3. Hosted on merge head: Production UI, PR required, Unit, Static, Build, PR policy all SUCCESS. | +| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | 3a775d4fd9a44e97388c0041cb421f06265a7721 | fresh final review (user-requested) + main sync (#937) | No high-confidence P0–P2. Product delta unchanged vs prior merge-ready head; #933 reserve + #938 contentAlign remain complementary. Merged `origin/main` (#937) cleanly. Follow-up: dropped `PR_POLICY_BODY.md` when syncing #942 so this PR does not reintroduce the stale template; live PR description already correct. Residual: required human approving review. | Local: align+composer-reserve Vitest 9/9; focused Chromium overlap+fold+compare 14/14. Hosted CI green on prior tip. | +| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | efe472fac3489473e2465da2d92980508c20fd81 | merge main (#934 favourites) + #941 sync | Merged favourites guest-gate (#934) then Specifiers results UI (#941). Product conflicts none: kept `contentAlign="startOnPhone"` on Specifiers home while taking #941 results chrome. `ui-overlap` gotoHome wait conflict resolved with settled single-header short-circuit. No new P0–P2. Residual: human approving review required for squash auto-merge. | Local: align Vitest; favourites+app-modes+tools 42 tests; Chromium ui-overlap+ui-tools 95/95; verify:cheap unit stage green. Hosted CI green on pre-#941 tip; re-running after this merge. | +| 2026-07-20 | cursor/documents-search-header-3eab / PR #936 | bdc333a9fa7e420e2beb2f146c6f271196869cb5 (squash on main) | post-merge closeout + branch-cleanup | Squash-merged to main. Product proof on main: `DocumentResultsControls`, identity-first documents results chrome, governance notice under controls, Also-in-library strip removed from documents results path. Remote feature ref already deleted by protected-main workflow; local tip `fd559a07` retained only merge/review commits with no unique product patch vs main. | Hosted pre-merge and post-merge required checks green (Static/Unit/Build/Production UI/PR required). Squash content proof via main tree symbols; remote `ls-remote` empty after prune; local branch deleted after this ledger row. No OpenAI/Supabase provider calls. | +| 2026-07-20 | cursor/fix-ui-overlap-duplicate-header-3eab / PR #944 | 08181b8b45cf23d53ff7fb8682fb5f83f4417fb0 (squash on main) | post-merge closeout + branch-cleanup | Squash-merged to main. Product proof: `gotoHome` pins `/?mode=answer` and waits for exactly one `header#search` before overlap measurement, closing the landing-preference dual-banner flake that failed Production UI then PR required on #936. Remote feature ref already deleted; local tip `418de1b9` is merge-only after squash. | Local before merge: verify:pr-local (2961 unit) + Chromium ui-overlap 12/12. Hosted exact-head and post-merge: Production UI, PR required, Static, Unit green (Build skipped for test-only). No OpenAI/Supabase provider calls. | +| 2026-07-19 | cursor/mobile-header-new-chat-inset-66c0 (PR #940) | 84eb0b6c3782e27fbbd1ec79b87b10327802ec1e | final mobile header new-chat edge inset review + merge readiness | No high-confidence P0-P1. Root cause: unlayered `@media (max-width:639px)` zeroed `.edge-glass-header` padding and beat `@layer components`. Fixed with tokenized `--header-edge-pad: 1rem` shared by layered base + unlayered phone guard; Playwright symmetry checks at 360/390; source contract blocks a `max(0px, safe-area)` regression. Merged latest `origin/main` (including #933/#942/#943) while keeping the header-edge-pad token. Residual: headless Chromium cannot exercise asymmetric safe-area `max()`; DocumentViewer gains the same pad but is outside the symmetry test. | Local geometry probe 360/390/640 = 16px/16px symmetric; CSS contract Vitest 5/5; `ui-overlap` Chromium 14/14; prior `verify:ui` 242/242 on the functional head; `verify:cheap` unit suite hit only the known container-only `pdf-extraction-budget` python ENOENT artifact (also fails on clean main / hosted-CI-green elsewhere). PR marked ready; squash auto-merge enabled. No OpenAI/live Supabase/provider calls. | +| 2026-07-20 | origin/main PWA-surface review, window `ef042ca..e128384` (44+ commits; explicit user request) + phone install-sheet redesign (this branch, content commit d8d8c4a) | e1283846647b20cd49ca6ae6920a7c76f2b945d7 | PWA-version review of new progress + install-notification design elevation | Sweep verdict (agent-verified): only #905/#897 (this program's own work) touched PWA surfaces in the window — sw.js CACHE_VERSION `2026-07-18-v1` and its offline.html binding, manifest (7 icons incl. monochrome; screenshots deliberately absent), icons route, kill-switch, and next.config headers all unchanged, so the privacy contract holds by construction. Geometric risk from five composer/dock-space reworks (#933 mobile-composer-reserve, #932, #930, #922, #899) probed live at 390×844: the non-install notice stack keeps correct clearance at rest (offline card bottom 744/844 with the 5.5rem gutter) and the stack's offset is now a custom property (`--pwa-notice-bottom-gap`) for one-line re-anchoring if composer geometry moves again. Redesign: install prompt + iOS hint present as a native bottom sheet on phones (full-bleed, flush bottom, grip bar matching #935's sheet language, real app icon identity via /icons/icon-192, Free/no-store meta row, two accent step chips for Share→Add to Home Screen as aria-hidden reinforcement of the unchanged accessible sentence); ≥640px keeps the #905 card/toast placements; region names, button names, and test-locked sentences unchanged. | Focused vitest 56/56 across the four PWA suites; `verify:cheap` 2971/2975 (sole fail = known container-only pdf-extraction-budget artifact); `test:e2e:pwa` privacy/offline green (installability fail = known container `in-incognito` artifact); `verify:ui` 243 passed/2 failed (the two long-baselined container artifacts); production build + client-bundle secret scan + bundle budget within tolerance (1303.4 vs 1278.6 KiB baseline; sheet adds ~0 JS); visual evidence at 390 light/dark/iOS-hint + 768 + 1440 with bounding-box math (full-bleed flush-bottom on phone; card/toast intact above). No provider-backed checks run. | +| 2026-07-20 | Credentialed release-gate checkpoint closeout (workflow_dispatch on main `7ec25d9`; user-authorized ≤$10, single dispatch each) | 7ec25d9675dea13635fa4a895af88c93da694a42 | Credentialed half of the release gate: CI dispatch + live eval canary | CI dispatch: 9/10 jobs green (unit coverage, build, Chromium production journeys, migration replay on local Supabase emulator, production-readiness CI-safe, policy self-tests, static/safety/scope). `release-browser-matrix` (WebKit/Firefox) CANCELLED twice by main-churn: ci.yml `concurrency: CI-${ref}, cancel-in-progress: true` kills in-flight dispatch runs on every main push and this repo merges every few minutes — livelock confirmed at the 2-attempt cap; WebKit/iOS verification remains outstanding with three human options (quiet-window dispatch, the weekly scheduled run, or a one-line dedicated concurrency group for the matrix job — operational-risk change, not applied). Eval canary: golden retrieval eval FAILED 4/36 (document_recall@5 0.944, ndcg@10 0.923, force_embedding_failure_count 0, no 429s — vector layer healthy, NOT the documented vector-ptsd transient class); the July 17 dispatch PASSED this step pre-#901, so the regression window implicates #901's deterministic semantic reranking (lithium-therapy-monitoring shows three unrelated documents with byte-identical rerank scores burying the lithium guideline; two other failures add fixture-vs-corpus identity components; answer-quality subset — the July 17 failure — never ran). NO canary re-run per plan (deterministic, not transient); retrieval is clinical-path and deferred to a human decision. Provider spend ≈ $1–2 (one canary run's embeddings); matrix/CI runs $0. | actions_run_trigger dispatches + rerun_failed_jobs (attempt 2); job-level conclusions and log excerpts from runs 29675875530 (both attempts), 29675878737 (July 19 canary), and 29567502452 (July 17 baseline). No local provider calls; secrets never left GitHub Actions. | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: ci.yml concurrency) | 79aaacf04e64f753c480dd957a81ac9be6acbb43 | CI workflow concurrency: stop main churn cancelling dispatch/schedule runs | One-line group expression: workflow_dispatch/schedule events now get a per-run concurrency group (github.run_id) while push/PR keep the shared ref group with cancel-in-progress — fixes the release-browser-matrix livelock (cancelled twice on 2026-07-19/20 by main merges mid-run; the weekly Sunday 18:00 UTC scheduled run was subject to the same cancellation). release-browser-matrix is not a required branch-protection check; pin/scope checkers do not constrain the concurrency block. Accepted side effect: deliberate runs can overlap push runs. Rollback: plain revert. | check:github-actions PASS; check:ci-scope PASS; format:check PASS (repo files; local-only .claude/settings.local.json warning is gitignored) | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: #901 rerank regression closeout) | fd5dcd1582e1c7aa8bf92ff097575e0c68aa930d | #901 rerank regression: baseline re-eval + offline guard net + saturated-tie fix | Baseline eval-canary dispatch on remediated main b3ae061 (run 29731533081) PASSED — golden retrieval 36/36 + answer-quality green, confirming #913-#926 closed the live 4/36 regression (July 19 failing run tested the raw #901 state; fixes landed 1-8h after it, never re-evaled until now). Residual defect found by new offline repro and fixed: with byte-identical imputed fast-path primaries, selection's clamped keys tie exactly and the chunk-id fallback decides, which secondStageScore's position adjustment launders into releaseRankScore (buried the CIWA answer doc in repro); fix = contentRankScore carried on RetrievalCandidate as tie-break between clamped rerankScore and chunk id, never added to scores. Amended #901's own never-live-validated saturated-tie pin to content-rank-then-id. Guards: tests/rag-fast-path-ordering.test.ts (4 end-to-end eval-shape repros) + ranking-tuning gates (4 golden-mapped hard negatives at production weights + full-snapshot high-risk). Fixture aliases NOT changed (Step C not triggered — identity cases pass live). | Targeted 4-suite vitest 37/37; npm run test 2981 passed (sole fail = container-only pdf-extraction-budget artifact); verify:cheap green through all 18 pre-test checks incl. lint+typecheck; check:production-readiness PASS on substantive checks (2 FAILs = documented missing-secret class in this container); build + client-bundle scan + check:rag:fixtures PASS | +| 2026-07-20 | claude/phone-scroll-fix (PR #993) | f0f4c42e7 | Phone scroll "locks to bottom" regression from #964 + all-pages phone scroll audit + guardrails | Root cause: #964's phone mode-home dock made one hide-on-scroll event release ~180-260px of scroll geometry (header grid collapse + reserve-pad shrink) — more than a short mode home's remaining runway, so scrollTop clamps onto the new bottom and a 12px up-drag snaps it back (oscillation; measured 266→84px runway, 2 flips/gesture on /formulation @390×844). Invisible to all gates because the suite-wide reducedMotion:"reduce" disables the causal transitions. Fix: collapse-budget gate in computeScrollHideUpdate (hosts report the would-be geometry release via readChromeCollapseBudget; hide refused without runway to absorb it; budget-less consumers unchanged; bottom-clamp guard untouched). Bonus latent bug fixed: DocumentViewer's one-shot #main-content discovery could hold a detached node after shell remounts (viewer hide-on-scroll dead); observer now persists. ui-smoke bottom-hide scenario updated to the gate contract. New 18-test sweep tests/ui-phone-scroll.spec.ts (10 mode homes + 3 dashboard modes + 4 long routes, motion enabled, simulated PWA insets) verified to fail red pre-fix. Residual: real-device iOS momentum clamping is device-only — user PWA confirmation requested post-deploy. | vitest focused 24/24 + mobile-composer-reserve; verify:cheap 3020 green; ui-phone-scroll chromium 18/18 + webkit advisory 18/18; ui-formulation+ui-tools+ui-smoke 180/180; verify:ui 264/264; verify:pr-local green (format/build/bundle-scan/RAG fixtures). No provider calls. | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: coverage tie-break follow-up) | 57ec880b306a8e2b31c5f20dacc47256fc93b4e2 | Post-merge live-eval finding on #982 + corrective fix: saturated-tie key rankScore → query-term coverage | Post-#982 golden dispatch (eval-canary run #50, 29735004222, main b9057f0 + deps) came back 35/36: the three verifiable July-19 failures (lithium-therapy-monitoring, clozapine-anc-threshold, patient-safety-plan-include) all PASS live, but alcohol-ciwa-threshold flipped pass→FAIL vs the same-morning pre-#982 run #49 (29731533081, 36/36) — failing top-3 ordered by descending rankScore (1.85/1.75/1.53, all finalScore-saturated, releaseRankScore 1.09/1.086/1.07), i.e. #982's tie-break let generic clinicalSignalBoost stacking outvote the ciwa/score/threshold-bearing chunk; #982 is the only retrieval-path delta in the window. Fix: contentRankScore → contentCoverageScore sourced from lexicalCoverageScore (query-term coverage, immune to boost stacking; ties still fall to chunk id); saturated-tie contract test re-pinned so coverage beats a HIGHER rankScore (discriminating — old key fails it); fast-path CIWA guard gains the run-#50 screening-chunk shape + content-term assertion. Live validation: tonight's 18:00 UTC scheduled canary (dispatch cap 2/2 spent ≈$2-4). Separately: ci.yml dispatch 4012 survived 30+ min of main churn under #979's per-run concurrency group (fix working); duplicate dispatch 4017 cancelled. | Targeted vitest 38/38; npm run test 3012 passed / 1 known container-only pdf-budget artifact; verify:cheap green to the same artifact; build + client-bundle scan + check:rag:fixtures PASS; check:production-readiness expected missing-secret FAILs only (no secrets in container) | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: WebKit matrix diagnosis) | caa298972846ef52d472bfbff98c90fc26481ed8 | First completed release-browser-matrix in weeks (run 4012, main b9057f0, 38 min uncancelled under #979) — full triage of 28 failures + fix for the dominant cluster | Run 4012: 716 passed / 28 failed (25 webkit, 3 firefox) / 4 skipped. Dominant cluster (root-caused, FIXED here): all 8 ui-universal-search webkit failures share one signature — typeahead content never enters the DOM — because commandDropdownCanDisplay (added 42a3e3c 2026-07-17, AFTER the last completed matrix; never ran on WebKit until 4012) requires fine-pointer OR zero-touch; headless browsers fail the (hover:hover)+(pointer:fine) query (proven by the zero-touch escape existing for CI at all), Chromium/Firefox pass via maxTouchPoints===0, and Playwright's Linux WebKit build advertises phantom touch points — flunking both branches and disabling useUniversalSearch entirely. Fix: beforeEach addInitScript in ui-universal-search/ui-smoke/ui-tools specs stubbing Navigator.prototype.maxTouchPoints to the runner's true 0 (inert on Chromium/Firefox; product gate + tests/search-command-surface.test.ts pins untouched). Local chromium runs of ui-universal-search fail 16/20 IDENTICALLY on unmodified main (container artifact — hosted CI chromium green in 4012 is authoritative; verified by stash/run/pop baseline). Expected delta next matrix: ≥8 webkit failures clear; candidates ui-tools:1244 + several ui-smoke answer-flow cases (same surface). NOT yet root-caused (triaged remainder, hosted-matrix-only reproduction): webkit ui-stress overflow 330/409 (360px overflow at mobile), webkit ui-accessibility 195/252 (focus dismissal; forced-colors labels), webkit ui-formulation 132, webkit ui-smoke copy-table/retry/recovery/recent-searches/source-only/differential-context/viewer-hydration/document-questions, webkit ui-tools 2087 (goto interrupted by ?q= navigation), webkit ui-universal-search 183 strict-mode duplicate options (fallback-surface rendering; likely clears with the gate fix), firefox ui-smoke 946/2206/2932 (@critical document search fails on BOTH firefox and webkit — cross-browser, highest-priority remainder). | prettier PASS; eslint PASS; typecheck PASS; chromium stash-baseline no-delta (16 fail pre AND post — container artifact); webkit validation lands via tonight's 18:00 UTC scheduled matrix | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: matrix-remainder fixes) | ec070ccb20b9a067216e64e8399d9cd795027024 | Run-4012 remainder: 7 root-caused fixes (SW navigation hijack, WebKit focus/forced-colors/stale-style, Firefox tab order, CIWA alias, helper extraction) | Agent-diagnosed with probe evidence: (1) production-build PWA worker registers in EVERY matrix test (pwa-lifecycle.tsx:287 NODE_ENV gate), clients.claim()s the page and serves all navigations — Chromium probe proved SW-served reloads bypass page.route entirely (routeSawNav=[]); Playwright-Firefox wedges on its only two reloads (ui-smoke 2206/2932, both deterministic) → playwright.config.ts serviceWorkers:'block' + ui-pwa 'allow' opt-in (offline/CacheStorage journey verified passing locally under the opt-in). (2) Mode-menu dismissal relied solely on wrapper focusout; WebKit Tab navigation can move focus nowhere (links excluded) or wrap into the menu → keydown Tab-close in handleModeTriggerKeyDown (agent verified no test depends on old forward-Tab behavior). (3) WebKit has no forced-colors implementation → capability skip on the token-remap test. (4) WebKit stale :disabled computed style feeds axe a phantom 1.93 contrast for the re-enabled Previous button (blend arithmetic exact: 0.4×#475467+0.6×#fff=#b5bbc2) → toBeEnabled+opacity-1 pin before the scan, failure-at-pin = direct proof. (5) Firefox includes scrollable containers in tab order (sheet body scrollHeight 1125 vs 707 measured) → conditional step-over. (6) canary #50/#51 CIWA failure root cause: whitespace-delimited textContainsClinicalTerm can never match hyphenated 'CIWA-Ar' though the dosing-table region ranks top-5 → clinicalContentAliases ciwa:[ciwa, ciwa-ar] (plan-authorized fixture-alias route; content substance unchanged). (7) tests/helpers/zero-touch.ts shared helper replaces six #995 inline stubs (CodeRabbit follow-up). NOT claimed: ui-stress 409 overflow, ui-tools 2087 navigation race, webkit answer-flow subset — next matrix run (post-merge dispatch) measures these vs the 28-failure baseline; ui-smoke 2932 webkit-side is a distinct mock-data class deliberately deferred pending that run. | Targeted vitest 25/25 (eval-retrieval + search-command-surface); npm run test 3012 passed / 1 known container pdf-budget artifact; verify:cheap green to same artifact; build + client-bundle scan PASS; prettier/eslint/typecheck clean; chromium ui-pwa under new SW config: offline/CacheStorage privacy journey PASS, installability = known container in-incognito artifact; UI verification not run locally beyond that: chromium ui suites carry documented container artifacts — hosted ui-critical/ui-advisory + next matrix authoritative | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: eval measurement floor, ADDENDUM 4 A-PR-1) | 81ab9696da4b330ca0b2e5519891a9942f90421b | Measurement floor for evidence-gated ranking tuning: canary artifact emission, alias-aware snapshot builder, snapshot provenance/freshness — no ranking behavior change | Closes the three gaps blocking safe tuning (Phase B): (1) eval-canary's golden step now writes the per-case JSON artifact (--json-out decoupled from --json so the tee'd log keeps the human-readable lines the failure-issue analyzer parses) and uploads .local/eval-canary/ via pinned upload-artifact (30-day retention, include-hidden-files for the dot-dir, contents = same class as the already-public step logs: titles/telemetry/220-char previews of the all-public corpus) — snapshot regeneration stops costing a paid dispatch; (2) clinicalDocumentAliases/clinicalContentAliases moved verbatim to shared scripts/lib/clinical-aliases.ts and the snapshot builder grades documentMatch/contentMatch through them (discriminating tests: EMHS agitation title and spelled-out "absolute neutrophil count" grade as hits only via aliases — raw labelMatches pinned false), ending tuner ground truth disagreeing with the live gates; (3) snapshots carry generatedAt + optional sourceRunId, validator accepts them, exactly-36 relaxed to at-least-36 (floor still rejects truncated artifacts; sourceCaseCount + per-case candidate minimums unchanged), and a 30-day freshness test (activates on first regeneration) blocks silent corpus drift. Builder smoke-verified end-to-end on a synthetic 36-case artifact (alias grading + provenance stamped + validator green). Static hyphen audit of all 36 cases' terms: no currently-blocked term (canary #52 = 36/36); residual risk classes documented for the A-PR-2 artifact-grounded pass — punctuation-joined tokens (IM/PO, schizo-affective, post-natal) and inert stem entries (obsess/compuls/hyperactiv/impuls can never match whole-token) that currently ride on whole-word OR-alternates. | Targeted vitest 52/52 (ranking-tuning + eval-retrieval + eval-quality); npm run test 3019 passed / 1 known container-only pdf-budget artifact; lint + typecheck clean; check:github-actions + check:ci-scope PASS; prettier clean; check:production-readiness expected missing-secret FAILs only (demo-mode container); no provider calls — live validation = tonight's scheduled canary emits the first artifact at $0 | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR #1001: A-PR-2 measurement-floor completion) | 3d8f798 + 5b664f8 + e58c827 | First provenance-stamped snapshot regeneration from a live canary artifact + alias tiering docs + fixture-length pin + lithium doc-gate — Phase A of ADDENDUM 4 functionally complete | Artifact chain: user-authorized paid dispatch (canary #53, run 29763761133, 36/36 green, doc_recall 1.0 / content_recall 1.0 — first perfect content recall, ciwa alias confirmed live; mrr@10 0.8644, irrelevant@10 0.1083) emitted the first eval-canary-output artifact (51787 bytes, sha256 5af5b802… verified byte-identical after user transfer into the sandbox — this container cannot download run artifacts). Work: (1) two-tier alias documentation — investigation of the governance-review P3 showed src/lib/eval-document-matching.ts is a deliberately WIDER captured-case tier (e.g. "Clozapine GP Shared Care"); bulk-merge would loosen golden ground truth, so both files now carry cross-referencing do-not-merge headers instead; (2) snapshot case count pinned to live golden fixture length (regeneration instructions in failure message) — closes the coarse-floor P3; (3) snapshot regenerated via the alias-aware builder with --source-run-id provenance: agitation-im-po-options 0→5 graded positives (EMHS alias working on real data), flowchart-next-step confirmed sole zero-positive case; generatedAt promoted to validator-REQUIRED (closes the hand-edit P3); two stale data pins updated (missing-positives 2→1; broad_summary defaults-equality pin dropped — defaults' provenance was the retired snapshot, fresh recommendations are Phase B input); (4) artifact-grounded punctuation audit: 7 joined-token occurrences in top-5 previews — 3 ciwa-ar (alias-covered, incl. line-broken "ciwa- ar"), 4 ORDINARY-PROSE punctuation ("treatment," / "mood," / "(opioid" / "ptsd.[35]") — matcher word-boundary change proposed as its OWN reviewed follow-up per plan (systemic class, not bundled); (5) lithium-therapy-monitoring was the ONLY ungated case (rr@10 hardcoded 0.00 = measurement noise): expectedDocumentSubstrings ["Lithium"] added from live evidence (deliberately broad across the corpus's multiple legitimate lithium guidelines), snapshot rebuilt in lockstep from the same artifact, measured mrr@10 +~0.028 from de-noising. Deferred with reasons: NEW-query fixture cases (saturated-tie shapes, captured rag_query_misses) need live validation before they may gate — unlocked by Phase D-1 branch-eval dispatch or a dedicated validation dispatch; real ordering headroom for Phase B = flowchart 0.20, alcohol-ciwa 0.25, patient-safety 0.33, opioid 0.33, all text_fast_path. | Targeted vitest 76/76 ×3 (after each stage); npm run test 3019 passed / 1 known container-only pdf-budget artifact; prettier clean; freshness gate ACTIVE and green; no provider calls beyond the user-authorized dispatch (~$1-2, ADDENDUM 4 spend now ~$1-2 of ≤$10) | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: B-PR-1 canary dispatch inputs) | see PR head | eval-canary.yml workflow_dispatch gains rag_ranking_config (staged Phase B weight evals, loud malformed-JSON validation to prevent silent fallback corrupting pair comparisons) + ref (Phase D-1 pre-merge branch evals) — schedule runs unaffected (empty inputs = today's behavior) | Tuner (offline, $0) on the A-PR-2 regenerated snapshot recommends 3 constrained per-class improvements (document_lookup titleSectionRelevance→0.9; table_threshold clinicalEvidence→0.95; comparison hybridRelevance→0.95 with proxy mrr 0.833→1.0), all with recall non-regression + zero high-risk hard-negative failures; medication_dose_risk + broad_summary stay neutral. Staged config JSON banked for the live pair; baseline = canary #53 re-gated (mrr@10 ≈0.8922 after lithium de-noising). Targets per approved plan: mrr@10 ≥0.90, irrelevant@10 ≤0.08, zero case regressions. Budget: user raised cap to ≤$20 (spent ≈$1-2). Security note: ref input runs branch code with eval secrets — dispatch requires repo write access (sole trusted collaborator), documented in PR risk. | check:github-actions PASS; check:ci-scope PASS; prettier clean; no provider calls (workflow change only) | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (Phase B live pair — no code change; recorded for eval-history completeness) | canary runs 29763761133 (#53 baseline) + 29769050798 (#54 tuned) | ADDENDUM 4 Phase B verdict: staged 3-class tuner weights produced ZERO live movement — NOT adopted per the measured-gain rule | Offline tuner recommendations (document_lookup titleSection→0.9, table_threshold clinicalEvidence→0.95, comparison hybridRelevance→0.95; proxy comparison-mrr 0.833→1.0) staged via the B-PR-1 rag_ranking_config input; #54 log proves the override active (validation step echo). Result vs re-gated baseline: mrr@10 0.8921 vs 0.8922, irrelevant@10 0.1083 vs 0.1083, recalls 1.0/1.0 both, 36/36 both, all four headroom cases byte-identical rr (flowchart 0.20, ciwa-threshold 0.25, patient-safety 0.33, opioid 0.33). Learning: the 5-candidate linear proxy saturates; real headroom lives in fast-path saturated-tie structure (Phase C trigger condition mrr < 0.90 formally met; user authorized C). Nothing to roll back (per-run override). Spend ≈$2-4 of user-raised ≤$20 cap. | Both canary runs green (36/36 + answer-quality); override-active proof in #54 job log; no adoption = no code diff | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: Phase C saturation-tail primaries) | 7572c7f | ADDENDUM 4 Phase C (user-authorized): per-candidate discriminative primaries for saturated fast-path ties — design-agent planned (consumer map + dead-band envelope proof), red-proven, tie-conservation guarded | Mechanism: min(text_rank,1) collapses all tr≥1 candidates to byte-identical imputed primaries; ordering fell to chunk id at release. Fix: saturationTailUnit (pure, monotone, SET-INDEPENDENT — rejected per-query min-max + rank-tier designs for set-dependence/#118 authority risk; rejected full-range log rescale for moving sub-knee values across the 0.62-0.82 gate ladder) scales the excess into DEAD cap bands only: S2 table-fact similarity (0.92, 0.94) with hybrid byte-identical (gates/triggers/selection provably unchanged; similarity = the release tie-break key), S1 lexical-chunk hybrid (0.48, 0.5) behind the truthful-contract signature (sub-0.5 bars hold). Sub-knee byte-identical (fixtures now DERIVE from the helper; 0.45→0.755/0.795 pinned). Discriminating test verified RED on old formulas (2 fail: discriminating + envelope) → green with tail; equal-tr tie-conservation pins the #987 coverage comparator; second-stage-engaged pools documented out of scope (position-derived releaseRankScore sorts first there) — matches live evidence that non-engaged pools (patient-safety, opioid, flowchart) are where id-order decided. S3/S4 = C-PR-2 candidates, evidence-gated on the post-merge canary vs #54 baseline (doc/content recall MUST stay 1.0, zero per-case regressions; success signal = rr lift on the headroom cases). Rollback: single revert (helpers + 2 expression sites + 1 map call; no schema/config/cache surface). | Targeted vitest 121/121 (fast-path 11/11 incl. 6 new, retrieval-selection, rag-routing, rag-answer-fallback, ranking-tuning, second-stage); npm run test 3025 passed / 1 known container pdf-budget artifact; lint + typecheck + prettier clean; red-proof executed and recorded; live validation = post-merge canary dispatch (~$1-2) | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (PR: revert Phase C pending review) | revert of f96217c | User-requested revert of #1004 (Phase C saturation-tail primaries): auto-merge fired before the adversarial rag-retrieval-reviewer pass landed; retrieval code returns to the last reviewed state until that verdict is in | Clean single-commit revert (the documented rollback path — helpers + 2 expression sites + 1 map call; no schema/config/cache surface). Ledger history rows from f96217c retained (docs are append-only record, not behavior). The 19:44Z post-merge canary dispatched on f96217c completes regardless and stands as Phase C's live validation datapoint; re-land decision = reviewer verdict + that pair result together. Offline state of the reverted change remains fully proven (red-proof + 121/121 + envelope tests). | Revert verified by vitest fast-path suite returning to pre-C 5/5 shape expected in CI; ladder on the revert = hosted pr-required | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (Phase C live verdict — no code change; main stays reverted at 0a498e6) | canary run 29773198933 (#55, on f96217c) | ADDENDUM 4 Phase C LIVE-REFUTED: canary on the merged tail code FAILED 3/36 (doc_recall 1.0→0.9167, mrr@10 0.8921→0.8138) — the user-ordered revert (#1005) was correct and STANDS | Failures: patient-safety-plan-include (PtSafetyPlan out of top-5, rr 0.33→0.14), patient-property-visual-table (rr 1.00→0.11) and schizophrenia-overview (rr 1.00→0.14) — two previously rank-1 cases destroyed. Root cause (post-hoc): the S1 lexical-chunk lift spreads hybrid_score, which is the PRIMARY release sort key — inside the dead (0.48,0.5) band it still PREEMPTS every downstream key, so raw ts_rank order overrode the boost/title/subject-aware relevance order that previously decided all-tied-at-0.48 pools. Lexically-loud chunks leapfrogged title-boosted correct documents = the #118 mechanism, reproduced live. The offline S1 test used identical-content candidates (coverage tie) and could not see it. The S2 similarity tail (tie-break-position key) remains reviewer-verified safe in isolation — retrieval reviewer verdict on the full diff: APPROVE-WITH-NITS, P3 only (0.49-lowering proven unreachable via the SQL 0.48 cap; no gate crossings in (0.92,0.94); hardening nits recorded). DISPOSITION: no re-land as-is. Any retry = S2-only + S1 redesigned to a key BELOW relevance in the comparator chain, new design + fresh pair. The staged-rollback discipline (canary pair + instant revert) worked exactly as designed. Spend ≈$4-8 of ≤$20. | Canary #55 read from job log (3 FAIL lines + summary); reviewer verdict from subagent report; main verified reverted (0 saturationTailUnit refs at 0a498e6) | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (PR: RAG memory + safeguards) | see PR head | (recorded with Outcome) | User-directed close-out: durable RAG behaviour memory (docs/rag-behaviour/, 4 files) + AGENTS.md standing protection rules + ENFORCED safeguards — pr-policy blocking `RAG impact:` gate on protected surfaces (self-tested: undeclared/vague blocked, no-change/canary declarations pass) + source-pin contract test on imputation formulas and release comparator key order (red-proven vs a mutated constant). Confirmation canary #56 (29774459706, reverted main 0a498e6): SUCCESS — 36/36 restored, closing the #55-regression→revert→restore arc live. Phase D complete (D-1 ref input #1003, D-2 eval:trend #1006, D-3 policy §3.1 #1006, D-4 latency in trend rows); remaining documented plans: word-boundary matcher (own PR), irrelevant@10 labeling audit, Phase E (separate approval). Spend ≈$5-10 of ≤$20. | pr-policy self-test + workflow guard PASS; contract test 4/4 + red-proof; npm run test 3025 passed / 1 known container pdf-budget artifact; lint+typecheck+prettier clean; docs:check-links 1030 refs PASS; check:github-actions PASS | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (PR: matcher + artifact follow-ups) | ab145f6 | Remaining documented improvements implemented: word-boundary textContainsClinicalTerm + top-10 canary artifact rows | Matcher: boundaries + internal separators widened to any non-alphanumeric run — PROVEN strict superset by artifact replay on canary #53 (1,126 term×alias×result comparisons, 0 lost matches, 7 gained = exactly the previously-documented punctuation-joined occurrences: treatment,/mood,/(opioid/ptsd.[35]/ciwa-ar ×3). More-tolerant measurement cannot fail a passing case → weekly scheduled canary = free live confirmation. Exported + 3 direct unit-test groups (superset preservation, audit classes incl. line-broken 'ciwa- ar' and 'full-blood-count', substring-inside-word rejections). Artifact: topResultSummary 5→10 rows so rr@10/irrelevant@10 metrics' actual inputs are captured — unblocks the offline irrelevant@10 labeling audit next artifact. docs/rag-behaviour updated to implemented state. Phase E remains gated on separate approval. | Targeted vitest 59/59; npm run test 3028 passed / 1 known container pdf-budget artifact; lint+typecheck+prettier clean; audit script run recorded above; no provider calls | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (PR: DB easy wins) | see PR head | User-requested database + process easy-wins pass: read-only Supabase advisor sweep (user-authorized) → canary-liveness probe + advisor-disposition docs; live mutations withheld for per-item confirmation | Advisors (live, read-only): security = 1 INFO (document_title_words RLS-no-policy = the deliberate fail-closed pattern — now comment-documented at the schema block so it is never 'fixed'); performance = ~33 unused-index INFOs + auth connection-strategy note → docs/db-maintenance.md TRIAGE list with retrieval-surface trgm indexes flagged RAG-protected (dropping = full canary protocol), owner-scoped indexes retained for multi-tenant design, operational candidates deferred (negligible benefit at corpus size). Implemented: ci.yml static-pr warn-only eval-canary staleness probe (actions:read, github-script pinned, >8 days → warning; never fails) — needed because #923 (2026-07-19) moved the canary cadence from daily to weekly Sunday 18:00 UTC, where a dropped fire would go unnoticed for a week (the failure-issue step only reacts to runs that happen). CORRECTION (CodeRabbit review on this PR): the initially recorded "2026-07-20 dropped Sunday fire" incident did not occur — 2026-07-20 is a Monday; the Sunday 2026-07-19 slot fired as scheduled run #48 (19:03 UTC, success), and under the weekly cron no 2026-07-20 slot existed. Probe stands as proactive hardening, staleness now measured from updated_at with a finite-timestamp guard. Presented for confirmation (NOT implemented): scheduled telemetry retention (purge:query-logs is owner-scoped + unscheduled; needs owner/window/policy decision), auth percentage connection strategy (dashboard config), any index drops. | check:github-actions PASS; check:ci-scope PASS; check:function-grants 28/28 PASS; docs:check-links 1034 PASS; supabase-schema vitest 66/66; lint+typecheck+prettier clean; Supabase access read-only only | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted from e6cd6cb; PR: telemetry-retention correction) | 01368ff (+0144e69 main merge-in) | User-directed "implement your recommendation for all decisions" close-out: the scheduled-retention recommendation is RETRACTED as founded on a false premise — telemetry retention is ALREADY ACTIVE inside the database via pg_cron; docs corrected, nothing built, no live mutations | Fresh read-only cron.job verification (2026-07-20) matches docs/privacy-impact-assessment.md §6 exactly: jobid 11 purge-expired-rag-queries daily 03:30 (30d), jobid 12 purge-rag-retrieval-logs daily 03:00 (90d), jobid 13 purge-rag-query-misses daily 03:45 (90d), jobid 16 purge-rag-response-cache hourly (bounded 1000); v3 worker jobs present-inactive under backlog auto-toggle (jobid 10); obsolete unbounded cache job absent; audit_logs indefinite by design. db-maintenance.md "open decision" section replaced with the resolved state; purge:query-logs clarified as the MANUAL owner-scoped tool (not the retention mechanism). A GitHub-side weekly deleter would have duplicated pg_cron with window drift (a 90d rag_queries sweep can never out-delete the live 30d job). Remaining decisions stand as documented no-action: auth percentage connection strategy deferred to next instance resize; operational index drops not recommended. | prettier + docs:check-links PASS; Supabase access read-only (single cron.job SELECT, user-authorized read-only envelope); no workflow/schema/config changes | +| 2026-07-21 | claude/x4-sast-gate (PR #1012) | 0d4985e63 | Maturity X4: blocking SAST gate on the untrusted-document parsing surface | Triage-first per workorder: CI-pinned semgrep/semgrep:1.168.0 over worker/**, src/lib/ingestion*.ts, src/lib/extractors, src/app/api/{ingestion,upload} = 0 ERROR findings (24 TS rules/17 files; 55 Python rules/3 files) — gate starts green with no suppressions. Shipped `semgrep-ingestion-gate` job (no continue-on-error; container digest-pinned to the triage-verified 1.168.0 image) with p/python added for the worker OCR stack; repo-wide advisory job untouched. check-github-action-pins.mjs now enforces both policy halves fail-closed (advisory repo-wide / blocking-and-scoped gate / digest-pinned gate container). Residuals: registry-pack mutability accepted for the narrow surface; making the workflow a branch-protection required check is an operator decision outside this PR. | Exact gate command exit 0 in pinned container; check:github-actions (new assertions verified fail-closed); check:ci-scope; yaml-contract vitest 1/1; verify:cheap 3031 tests green. No provider calls (local Docker only). | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted from f33890a; PR: Phase E instrument input) | see PR head + follow-up SHA pin | Phase E kickoff (user-approved with budget): eval-canary gains opt-in `answer_quality_eval` dispatch input running the 30-case eval:answer-quality fixture (5 quality metrics + per-intent targeting) — the instrument was previously never run in CI. Dispatch-only, default-off, informational (exit 0, no --targeting-floor): scheduled runs and existing dispatch shapes byte-identical; gates stay owned by eval:quality. Follows the #1003 input-only precedent. | E-1 recon (all $0/read-only) recorded here: canary answer gate samples only 8 of 44 eval:quality cases (ANSWER_CASE_LIMIT default); eval:quality --provider-mode offline is a real $0 harness (provider deleted, deterministic source-only path) usable as an E-3 regression guard; live 30-day answer telemetry (34 answer-path rows): 25 full answers, misses = evidence_gap ×4 (avg 26s spent before gap), provider_incomplete_max_output_tokens ×2 (avg 82s wasted then discarded), provider_generation_failed ×1, retrieval_gap_or_conflict ×1, source_only_no_api ×1; success latency avg 13.1s / p90 25.2s. Headroom classes for E-3: truncation waste (rag.ts:4265 self-heal insufficient live), late evidence-gap detection, p90 latency, thin CI answer coverage. Next: E-2 baseline dispatch (answer_case_limit=44 + answer_quality_eval=true, est $3-8 of user-authorized ≤$20 Phase E envelope) after this merges. | check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS; prettier clean; no provider calls this PR (workflow change only); RAG impact: none — retrieval steps untouched | +| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted from 5b4098d; PR: E-2 baseline record + instrument fix) | see PR head | (recorded with Outcome) | ADDENDUM Phase E-2 BASELINE BANKED (canary dispatch #57, run 29786560936, main 5b4098d, answer_case_limit=44): golden retrieval 36/36 green in-run (no-regression net held); eval:quality full-44 RED on exactly two gates — citation_failure_rate 0.0227 (1/44: neuroleptic-side-effect-escalation — expected doc never retrieved, generation quality-failed, extractive fallback with 1 citation) and route_ceiling_failure_count 2 (clozapine-anc-withhold-threshold: 13.3s pure retrieval vs 12s extractive budget, RPC 9.3s, zero generation; agitation-arousal-typo-dosing: 25054ms vs 25000ms after provider_timeout ate 22.6s pre-recovery). Green gates: grounded_supported 1.0, unsupported_correct 1.0 (all 14 refusals incl. both prompt-injection probes at 2ms), numeric grounding failures 0, governance danger 0, p95 17.4s. Non-blocking signals: expected_source_hit 0.6136 (both admission-discharge cases miss MHSP.AdmissionCommunityPts.pdf to sibling NMHS/RKPG policies — labeling-vs-ranking question, §3.1 class), source governance warning rate 0.8182 (metadata debt, waivable class). SYSTEMIC E-3 TARGET: ~9 of 19 generation attempts discarded (fast output fails quality gate → extractive fallback wins; ~7 cases carry fast_quality_retry_strong→extractive reasons) = ~half of generation latency+spend wasted. Instrument defect found+fixed this PR: targeting step was skipped after the red gate (GitHub failure-skip semantics) → if: gains !cancelled() so baselines observe red gates. Spend: est ~$1-2 actual (19 OpenAI-request cases; cost rates unset in CI so report shows n/a) of ≤$20 Phase E envelope. Next: cheap re-dispatch (default limit 8 + answer_quality_eval=true) to bank the skipped 30-case targeting baseline. | Gates this PR: check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS; prettier clean. Baseline evidence: job log run 29786560936 (5 failing-case diagnostics + Answer Metrics table read in full) | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (restarted from 87815f4; PR: E-3a cost self-reporting) | see PR head + follow-up pin | (recorded with Outcome) | Phase E-3a wave (all $0 diagnostics complete, recorded here) + I8 fix: eval-canary env gains the three RAG_EVAL__\_USD_PER_MILLION rates (gpt-5.6-terra standard tier, verified from the live OpenAI pricing page 2026-07-21; documented as a LOWER BOUND since gpt-5.6-sol strong retries cost 2x and the estimator applies one rate set) so estimated_cost_usd stops reading n/a in CI. E-3a findings: (1) discarded-generation histogram from run #57 — fast_quality_retry_strong→extractive x6, generation_quality_failed x4, provider_timeout x2; gate sub-reasons fragment_like x2, bad_final_answer_quality x1, ungrounded_extractive_fallback x1 → E-3c targets the fast-attempt-fails-extractive-wins shape first. (2) I2 resolved: routeCeilingExceeded (eval-quality.ts:157/171) keys on the RUNTIME's own route_budget_ms + deadline flag, NOT the cross-region-widened eval gates — clozapine case = 13.3s retrieval vs the runtime's 12s extractive budget, geography-amplified; design → E-3b. (3) FIXTURE-CORPUS DRIFT (major): the live corpus contains ZERO MHSP_-named files; the 44-case fixture's expectedFiles are all MHSP._/CG.MHSP._ and pass only via the eval-document-matching alias tier. All three expected-doc failures triaged: neuroleptic-side-effect-escalation = REAL retrieval-coverage gap (alias exists; Neuroleptic Side Effects (AKG).pdf indexed 11 chunks, 3 contain escalat%, yet answer retrieval returned a single off-point source) → protected-path item awaiting user go-ahead; admission-discharge x2 = top-5 preference for sibling NMHS/RKPG policies over the existing aliased AKG doc → labeling-vs-ranking decision presented to user. No fixture/alias edits made (ground truth requires sign-off). | check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS; prettier clean; Supabase access read-only (documents/document_chunks SELECTs); OpenAI pricing page read via WebFetch | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (restarted from c308fdc; PR: labeling widen) | see PR head | (recorded with Outcome) | USER-APPROVED ground-truth widening (AskUserQuestion 2026-07-21: "Widen to accept siblings") for the two admission-discharge cases: the WIDER alias tier's AdmissionCommunityPts entry gains the two NMHS "Admission to Discharge" titles (Community Mental Health + Mental Health Inpatients). Deliberate exclusions documented in-code: discharge-only docs must not satisfy the admission slot; the MHHITH programme policy is too narrow. STRICT golden tier untouched (bulk-merge prohibition respected). Verified by replaying run #57's actual top-5 lists through expectedFileCoverage: admission-discharge-coverage-paraphrase now passes; admission-discharge-comparison STILL FAILS honestly (its top-5 carries no admission-side doc at all — dup discharge-planning + Falls Prevention) and is retained as a genuine comparison-class retrieval-coverage signal, folded into the same investigation as the neuroleptic case. | typecheck PASS; prettier clean; probe script replay recorded (paraphrase allHit true / comparison allHit false, missing admission slot); no retrieval code touched; protected-file edit (eval-document-matching.ts) per explicit user authorization | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: E-3b budget-aware generation deadlines) | 314d03f | Clinical-governance review of E-3b diff `git diff origin/main...HEAD` (commits 1078264 + 314d03f): answer-side generation timing/gating + telemetry — reserve-aware generation timeout (`generationRequestTimeoutMs`), truncation self-heal budget gate (`deadlineAllowsGenerationRetry`), `route_budget_exhausted_by_retrieval` telemetry, and the cross-region eval carve-out in scripts/eval-quality.ts. | APPROVE-WITH-NITS. No P0/P1/P2. (a) Conservative failure preserved: reserve-aware timeout fires ~2s early producing the SAME error type — an internal SDK timeout is mapped by mapOpenAIError to PublicApiError(openai_timeout) (openai.ts:525-529), NOT a bare DOMException, so the rag.ts:4636 re-throw guard is not tripped and the existing source-backed fallback/extractive recovery is reached; truncation-skip falls through to the terminal throw (rag.ts:4309-4313) into the same catch. No new answer-producing path. (b) Safety gates intact: all recovery answers finalize through finalizeAnswer→finalizeRagAnswerQuality and isSafeExtractiveFallbackCandidate (grounded/confidence/quality/numeric) — none touched. (c) Eval carve-out env-gated: crossRegionRunner && budgetExhaustedByRetrieval && generationMs===0; EVAL_LATENCY_CONTEXT set only in eval-canary.yml:164, prod caller (eval-quality.ts:1095) passes no options → inert in release/local; generationMs===0 requirement means a generation-side failure (generationMs>0) is never suppressed. (d)/(e) Telemetry additions non-PHI (boolean + mechanical retry-reason strings); no privacy/query-privacy/cross-border/verification source files touched; no new provider call. Nits (P3, non-blocking): carve-out also excuses fast/strong routes when generationMs===0 (sound — provably no generation ran); `requestTimeoutMs` now prod-dead (test-only); report label "retrieval-exhausted" (routeDeadlineExceeded && flag) is broader than actual gate suppression (audit label only, gate stays strict). | 88 offline unit tests PASS (tests/rag-route-budget.test.ts, tests/eval-quality.test.ts, tests/rag-offline-answer.test.ts, tests/rag-answer-fallback.test.ts); no provider/Supabase/OpenAI calls; no files mutated except this ledger row | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: E-3b budget-aware generation deadlines) | 314d03f (+eb08ec5 review row) | (recorded with Outcome) | ADDENDUM 5 wave E-3b implemented per the design-agent plan: generation attempts clamped to route budget minus a measured 2s recovery reserve (single call-site, all four attempt kinds); truncation self-heal gated on retry viability (reserve+5s floor) with observable truncation_retry_skipped_budget_reserve marker; additive route_budget_exhausted_by_retrieval runtime flag; eval route-ceiling gains the triple-condition cross-region carve-out (context + runtime flag + zero generation) with retrieval-exhausted audit cells — local/release gates provably strict. Fixes I3 (54ms budget overrun after 22.6s provider timeout), I5 (82s truncation waste class), resolves I2 (clozapine 13.3s retrieval vs 12s runtime budget = geography, now suppressed ONLY in the sanctioned cross-region context with full auditability). Reviewer verdicts: rag-retrieval-reviewer APPROVE-WITH-NITS (2 P3: prod-dead requestTimeoutMs retained for symmetry; report-cell coupling cosmetic; cached-replay invariant PROVEN — budget-exhausted answers never cached, carve-out unreachable via replay; marker isolation proven — SLO counters key on fallback_reason not answer_retry_reasons); clinical-governance-reviewer APPROVE-WITH-NITS (prior row) — internal-timeout→PublicApiError→existing-fallback path verified, all safety gates still applied to recovery answers. ALSO BANKED — E-2 targeting baseline (canary run #58, 29788404357, all-green incl. first execution of the !cancelled()-fixed instrument, ~$1-2): metric_rates relevance 0.6 / readability 1.0 / artifact_leaks 1.0 / intent_coverage 0.9333 / fail_closed 0.9; targeting_rate 0.5909 (13/22); by intent: document_lookup 5/5, red_result_action 3/3, contraindication 2/2, dose 1/5, monitoring_schedule 1/5, pathway_referral 1/2; all 9 misses = missing dose figure/schedule-interval (answer lengths 73-232 chars) → E-3c co-primary target alongside the wasted-generation class. Phase E spend ≈$3-6 of ≤$20. | Red-proofs: reserve pinned 3 independent ways (exact 23000ms grant, deadline flag clear, total under budget); self-heal skip pins exact marker + single provider call; offline flag pinned true/false. Focused: route-budget 9/9, eval-quality 27/27, fallback+offline 52/52, parser/abort regressions 15/15. Full suite 3043 passed / 1 known container pdf artifact. typecheck+lint+prettier clean. No provider calls; live proof = E-4 paired run | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (restarted from e02ba3d; PR: E-3c PR-A instrument) | see PR head | (recorded with Outcome) | ADDENDUM 5 wave E-3c design accepted (Plan agent, full report in session record) and PR-A delivered: eval-answer-quality gains --dump-answers (per-case answer TEXT + sections + targeting verdict JSON for the canary artifact — answers are not retained at rest by privacy design, so miss diagnosis needs eval-time capture), parseArgs/buildAnswerDumpRecord exported behind an import.meta main-guard (eval-quality precedent), canary targeting step wired with the flag. Design highlights for the record: DEFECT 1 root confirmed as fast-attempt-doomed-then-discarded on strong_routine_retrieval procedural shapes — PR-B generalizes the EXISTING validated-extractive short-circuit pattern (LAI + blocked-recovery precedents, hasValidatedExtractiveCandidate) to the measured shape via a new rag-extractive-first.ts module (net ~-110 rag.ts lines against the 5030 budget); DEFECT 2 rank-1 root = extractive lead-slot selection prefers shortest sentence and admits figure-less leads (sort at rag-extractive-answer.ts:917, 1-slot monitoring leads) — PR-C adds intent-figure-aware lead promotion with a claim-support atom-corpus nuke-proofing guard + dose/threshold fallback candidate preference (find(safe && figure) ?? find(safe)); answer-verification CLEARED as direct cause (whole-answer gap or unbold only, never per-figure deletion). H2 (strong-route comparison/complex residual) explicitly deferred as the named E-3d candidate. E-4 metrics set: discarded-generation <20% from ~47%, dose ≥3/5, monitoring ≥3/5, no intent below #58, recalls pinned 1.0, relevance/fail_closed/readability/artifact_leaks ≥ #58. | PR-A gates: new tests/eval-answer-quality.test.ts 4/4; typecheck, check:github-actions, check:ci-scope, eval-canary-workflow test, prettier all clean; no provider calls | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: E-3c PR-B short-circuit) | f7e6cbb + hardening commit | (recorded with Outcome) | E-3c PR-B: pre-generation validated-extractive short-circuit for gate-passed routine procedural "What...process/include/required" queries (marker validated_routine_extractive_first), generalizing the LAI + blocked-recovery precedents via new rag-extractive-first.ts (3 predicates moved byte-verbatim, machine-verified; rag.ts 5029→4908 vs 5030 budget). Kills the run-#57 6x wasted-generation class. REVIEWS (both pre-push): rag-retrieval-reviewer APPROVE-WITH-NITS — move fidelity brace-diff verified byte-identical; confidence-gate skip PROVEN safe (passed-gate is a no-op in applyConfidenceGate; markers pairwise mutually exclusive); comparison false-positives blocked by unchanged classifier precedence; offline/source-only idempotent; zero retrieval/ranking/selection/threshold change; P2 = eval-only assertions (intent_coverage/artifact_leaks/expected-file) unverifiable offline for flip candidates (quality-nocc-document-support, quality-form-required-documentation, quality-discharge-documentation, quality-duress-pathway + rag-set siblings) → pre-merge BRANCH canary recommended and ADOPTED (offline-green + review-approved proven insufficient for this surface, 2026-07-20). clinical-governance-reviewer APPROVE-WITH-NITS — full gate-stack trace: nothing bypassed (same finalizeRagAnswerQuality, same citation scoping, numeric verification not fail-open, ungrounded-finalize defense at rag.ts:3694); P2 = pre-existing bare-cross-reference-with-overlap gap, NOT materially widened (new trigger anti-correlates), hardening recommended → APPLIED this PR: !isBareCrossReferenceAnswer screen in hasValidatedExtractiveCandidate (closes all three short-circuit paths; discriminating test added; disclosed post-review delta, strictly narrows shipping). MERGE GATE: draft until the branch canary pair (baseline #57/#58 vs branch run with answer_case_limit=44 + answer_quality_eval=true, est $3-6 of authorized envelope) is green — zero per-case regressions, recalls 1.0, quality/targeting rates >= baseline. | Red-proof + 3 negative guards; focused 61/61 + fallback/offline/contract suites; full suite 3061 passed / 1 known container artifact (pre-hardening tree; hardening re-verified focused); typecheck+lint+prettier clean; maintainability budget passed (4908/5030) | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (pair verdict — no code change; main stays at 22b6a2e) | canary run 29794759627 (#59, branch head 7310cb3 = merged PR-B content) | (recorded with Outcome) | E-3b + E-3c PR-B LIVE-VALIDATED (pair vs banked #57/#58): route_ceiling_failures 2→0 (E-3b proven: agitation timeout now fits inside budget; clozapine retrieval-exhausted ceiling honestly excused via the triple-condition cross-region carve-out — exactly one "retrieval-exhausted" audit cell in the report); p95 17.4s→15.47s (-11%); golden retrieval SUCCESS 36/36 (stop-ship criterion held); validated_routine_extractive_first fired on 4 of the 6 target cases (patient-safety-plan 3.3s, treatment-team-process 2.6s, ect-procedure 2.2s, illegal-substances 2.2s — all pure extractive, zero generation, was 6-9s each with a discarded attempt), the other 2 (community-home-visits, best-practice-prescribing) stayed on generation+fallback because their extractive candidates legitimately fail validation gates = the designed-conservative outcome; ZERO new failing cases (list 5→2, both known residuals: neuroleptic citation red = Option A territory, admission-comparison expected-doc = non-blocking labeling residual); grounded 1.0 + unsupported_correct 1.0 held; targeting 0.5909→0.619, fail_closed 0.9→0.9333, readability/artifact_leaks/intent_coverage unchanged; relevance 0.6→0.5667 = single-case wobble on n=30, WATCH in E-4, not a gate. Discarded-generation rate materially down (4 conversions; residual = the H2 strong-route slice named as E-3d candidate, per design's 20-33% expectation band). MERGE STANDS (user had armed auto-merge pre-verdict; revert drill not triggered). Spend +~$3-6 → Phase E total ~$6-12 of ≤$20. | Pair evidence: run #59 job log (Blocking failures = citation only; Answer Case Diagnostics markers; metric_rates + targeting blocks); dump artifact populated for PR-C diagnosis | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: E-3c PR-C figure-aware selection) | 043b030 + P2-fix commit | (recorded with Outcome) | E-3c PR-C: dose/monitoring extractive answers now carry the asked-for figure/schedule when the cited chunk verbatim supports it — lead-slot promotion (dose swaps last of 2 slots, monitoring appends 2nd sentence; no-op when a lead already carries a figure) guarded by the claim-support atom corpus (sourceEvidenceText exported, promotionAtomKey byte-identical to claim-support's atomKey), plus the dose/threshold generation-fallback preferring the safe figure-carrying candidate (safety gate unchanged, filter-order-stable). Fallback helpers extracted to rag-extractive-answer (cycle-check verified); rag.ts 4908→4901. Six discriminating tests each verified red-on-prior-code incl. proving the nuke-guard load-bearing by disabling it. REVIEWS (both pre-push on 043b030): rag-retrieval-reviewer APPROVE-WITH-NITS — no-op path byte-identical verified, atom-key identity verified, filter-vs-find proven side-effect-free, 2-sentence append gate-safe, intent double-gated, zero retrieval/ordering change, imputation contract green; P2 = zero-atom monitoring figures ("every 6 weeks" yields no value atom) pass the guard trivially and can be nuked by claim support if sourced only from adjacent context (fails SAFE — evidence gap, never a wrong figure). clinical-governance-reviewer APPROVE-WITH-NITS — all six clinical concerns CLEARED end-to-end (verbatim-support guarantee, citation binding preserved, conservative failure test-proven, unsafe candidates impossible, wrong-drug risk controlled by pre-existing entity/multi-drug guards, no PHI); same zero-atom finding as P3 + one comment-precision nit. P2 FIXED post-review (disclosed): zero-atom figures now require the matched figure substring verbatim in sourceEvidenceText (intentFigureMatchText); proven both directions by 3 new tests (promotes from content, refuses from adjacent-context-only); comment-precision nit folded in. | Focused post-fix: extractive-formatting 32/32 + fallback/eval-cases/offline/contract/extractive-first 98/98 incl. imputation contract; typecheck+prettier+budgets clean; full-suite 3068-passed baseline pre-P2-fix (fix re-verified focused). Live proof = E-4 pair next | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (E-4 pair verdict — no code change; #1039 merged as 9b655fa) | canary run 29800029819 (#60, main 9b655fa = E-3b+PR-B+PR-C) | (recorded with Outcome) | PHASE E-3 WAVE CLOSED — E-4 VERDICT: ADOPT (no revert). 44-case: the ONLY blocking red is the KNOWN persisting neuroleptic citation case (0.0227, identical #57 signature: generation quality-failed → extractive fallback 1 citation — the pre-declared Option A carve-out, retrieval-side, untouched by answer waves); route_ceiling_failures 0 CONFIRMED ON MAIN (E-3b: agitation 23.1s < 25s after 20.3s provider timeout; clozapine 14.5s with exactly one retrieval-exhausted audit cell); grounded 1.0 / unsupported_correct 1.0 / numeric 0 / governance-danger 0 all held; expected_source_hit 0.6136→0.6364 (#1020 widen); generation attempts 19→9 across 44 cases (10+ cases short-circuit via validated_routine_extractive_first at 2-6s, zero generation spend — the absolute wasted-generation seconds collapse; residual 6 discarded attempts are the named E-3d H2 strong/comparison slice). Targeting vs #58 baseline: rate 0.5909→0.6667, dose 1/5→2/4 (sertraline + quetiapine still miss), document_lookup 5/5→6/6, contraindication 2/2, red_result 2/2, pathway 1/2; readability/artifact_leaks 1.0. NOT met: monitoring_schedule flat 1/5 — per-miss lens shows answers of 73-232 chars with NO schedule token available to promote (olanzapine-lai 79ch, metabolic 73ch = single-fact extractive answers; the PR-C promotion is a no-op when no figure-bearing fact is extracted) → root is fact-extraction/retrieval depth on monitoring shapes, queued as the Option-A-wave companion diagnosis (dump artifact 8483731630, 30d retention). WATCH escalated: relevance 0.6 (#58) → 0.5667 (#59) → 0.5333 (#60) — two single-case steps coinciding with more terse extractive answers; fail_closed 0.9 = exactly the #58 main baseline (#59's 0.9333 was the outlier), safety texture flat. Adoption per plan criteria: targeting ≥ baseline ✓, grounded/refusal 1.0 ✓, golden 36/36 ✓ (in-run), ceilings 0 ✓, citation red = carved known case ✓. CodeRabbit post-review follow-up landed pre-merge (02b5c78): interval-regex full-match reorder (atom path proven to intercept the claimed exploit; reorder = drift hardening), clinicalValueAtomKey exported (mirror deleted), guard tests made honestly discriminating + genuine zero-atom "annually" coverage both directions. Instrument note: cost rates live on the targeting step env but eval:quality still reports cost n/a (estimator not consuming them in the 44-case path) — minor tooling residual. Spend +~$2-4 → Phase E total ~$8-16 of ≤$20. | Evidence: run #60 job log read in full (Threshold Status: citation-only; Answer Metrics + 44-row diagnostics; targeting metric_rates + 7-miss list); artifact eval-canary-output 8483731630 sha256 d5c7006e… (download blocked in-session — GitHub App scope; log tee carried the targeting output) | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (Option A: title-supported escalation rescue) | 0abf3c9 (parent 1aebf02) | rag-retrieval-reviewer PROTECTED-surface review of the S3 document-lookup escalation rescue: shouldAttemptDocumentLookupFastPath exported + gains medication_dose_risk branch firing ONLY when analysis.intent==="escalation_risk" && documentTitleTerms.length>0; call site passes queryAnalysis; new tests/rag-document-lookup-escalation-rescue.test.ts. | APPROVE-WITH-NITS. No P0/P1/P2. Binding constraints held: released-search-order.ts + retrieval-selection.ts clamp + rag-candidate-sources.ts imputation all byte-identical to parent (git diff empty); imputation-contract test green; 0.66/0.055 floor (rag.ts:1765) unmodified and still gates rescued pools (S3 block sits after the 2513 fast-path return + re-runs decideTextFastPath at 2631). BLAST RADIUS empirically proven via 110-case offline probe (44 ragEvalCases + 30 answerQualityEvalCases + 36 golden): EXACTLY 1 fires (neuroleptic-side-effect-escalation, intent=escalation_risk tt=3); all 8 named dose cases non-firing (clozapine-monitoring general, paraphrase general, agitation-pharm general, im-po drug_dosing, typo-dosing drug_dosing, missed-dose-table drug_dosing, LAI general/tt0, prompt-injection-forge intent=protocol). intentFromSignals precedence (clinical-search.ts:575-585) returns drug_dosing before escalation_risk so pure-dose structurally cannot fire — confirmed by construction AND empirically. ADVERSARIAL: prompt-injection-forge intent=protocol => cannot fire (empirical); unsupported short-circuit (rag.ts:2371) precedes S3 block. DOWNSTREAM: buildRetrievalIntent for the escalation query yields EMPTY requiredTermSignals => demote/promote arms (retrieval-selection.ts:354-355/529/555) + wrong-medication cap (rag.ts:730-737, gated on clinical_subject) all inert; end-to-end test proves neuroleptic-doc rank#1 with >=2 citations, sibling retained, arrival-order invariant. golden vector-\* probes = broad_summary (already allowlisted) => predicate byte-identical => unaffected. TEST HONESTY: S3 fixture (0.92/0.34/0.94/synthetic_text) faithful to searchDocumentLookupFastPath (rag-candidate-sources.ts:570 caps alias documentScore at 0.34 => sim=min(0.92,0.58+0.34+bonus)=0.92, hybrid=min(0.94,0.94)); differently-relevant fixtures (not identical-content); red-proof structurally airtight (e2e gates its own fixture pool on the predicate). EFFORT: one S3 RPC (same call allowlisted classes issue), rescue-only in the non-forceEmbedding path (floor already rejected => query was headed to embedding anyway; successful rescue short-circuits at 2646 pre-embedding = net-neutral/positive). NITS (P3, non-blocking, no code change pre-canary): (1) redundant analysis?. on the documentTitleTerms clause (&& short-circuit already guarantees analysis defined there); (2) a queryMode forcing medication_dose_risk over an originally-escalation-shaped table_threshold could newly fire S3, but table_threshold already ran S3 so behavior-consistent, not a regression; (3) "forceEmbedding discards S3 merges" is imprecise — line 2649 merges S3 even under forceEmbedding; the accurate unaffected-reason for vector-\* probes is broad_summary allowlisting. TRUST GATE = the mandated live canary pair (correctly deferred by the commit). | Offline only, no provider calls: new test 10/10 + imputation-contract 2/2; protected-surface batch 31/31 (escalation-rescue + imputation-contract + fast-path-ordering + released-search-order + retrieval-selection); 110-case classifier probe (temp test, removed); npm run typecheck exit 0. Not run (provider-gated): eval:retrieval:quality, eval:rag, the live canary pair. | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (parity commit review) | 1aebf02 (fix landed a3b9a54) | (recorded with Outcome) | rag-retrieval-reviewer on the monitoring evidence-gate parity commit: REQUEST-CHANGES (soft) — P2 reproduced: inflected monitoring kind tokens (monitor\w*/annual(?:ly)?/blood tests?/ecgs?/lfts?) steal sole-dose-value sentences from the dose arm; dose-intent answers then reject the monitoring-kind fact ("Quetiapine is monitored at a dose of 200 mg daily" flipped grounded true→false, source-gap — fails CLOSED, never a wrong dose). P3: monitoring figure escape lacked the dose escape's multi-drug bare-row guard. Clean: over-admission bounded (broad vocab lives in gate/filter only, promotion still corpus-guarded, claim-support unchanged); regex cost negligible; mismatched-unit test relaxation legitimate (synopsis is corpus-verbatim; weeks pin enforced by atom identity + adjacent_context exclusion from both gate and claim corpora). | BOTH FINDINGS FIXED in a3b9a54: kind arm classifies legacy tokens byte-identically and new-inflection-only sentences fall through to the dose arm when they carry a clinicalDoseValuePattern value (both repro sentences pinned as dose-intent tests); multi-drug bare-row guard extended to monitoring_schedule with a discriminating test — red-proven both directions. Reviewer checks: formatting 38/38, focused 644/644; targeting eval deferred to the wave's live canary pair. | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (parity commit review) | 1aebf02 (fix landed a3b9a54) | (recorded with Outcome) | clinical-governance-reviewer on the same commit: APPROVE-WITH-NITS. P2 (independently converged with the retrieval reviewer's P3): monitoring figure-escape lacked the dose-path multi-drug cross-entity guard — a bare wrong-drug schedule/level row in a multi-drug chunk could be entity-prefixed for a named-drug monitoring query; downstream gates verify text-vs-source presence, never attribution (worked lithium/valproate LFT path traced through finalize). FIXED in a3b9a54 exactly as its smallest-fix prescribed (guard at the :872-881 site now fires for monitoring_schedule; negative multi-drug test added, red-proven). Clean: unsupported figures impossible (admission-only change; promotion corpus guard + numeric verification + claim support all byte-unchanged); conservative failure intact (figure-bearing-only escape, schedule-free refusal pinned); adjacent-context safety held (sourceEvidenceText excludes adjacent_context; weeks refusal confirmed by probe); no PHI/provider/ranking surface. P3s: RAG impact line (present in the PR body — behaviour-change form, correct since the PR also carries the Option A retrieval change); multi-drug negative test (landed in a3b9a54). | Offline guard-chain trace + targeted vitest probes (named-drug guard, bare-figure admission, conservative gap, adjacent refusal). Provider/release gates deferred per confirmation boundary. | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (Option A rescue review) | 0abf3c9 | (recorded with Outcome) | clinical-governance-reviewer on the S3 escalation rescue: APPROVE-WITH-NITS, no P0/P1. P2 = the mandated live canary pair itself (process gate, declared in the PR body; offline-green + review-approved proven insufficient for this surface 2026-07-20). P3s: multi-drug escalation-query recall edge (titled drug + untitled drug — fast-path return can skip the vector leg; recall limitation, not misattribution, mirrors the pre-existing allowlisted-class tradeoff); reviewer probe files must stay uncommitted (relocated to scratchpad). All six clinical concerns verified safe: wrong-document impossible (alias phrases must appear in the query; per-document alias groups, no cross-drug conflation), conservative availability (S3 purely additive via keyed-union merge; sibling retention test-pinned), live expansion acceptable (title-named correct-entity SOP in every firing shape), fail-closed double layer (adversarial short-circuit precedes the predicate; injection-forge case intent=protocol cannot fire — executed), governance metadata unbypassed (same attachDocumentRankingMetadata + status=indexed + access-scope filters), no PHI/provider/schema surface. | Reviewer checks: escalation-rescue suite 8/8, injection-forge intent derivation executed, static trace of the full S3 chain. Live canary pair = the trust gate, dispatched post-merge. | +| 2026-07-21 | claude/patient-profile-input-bounds-123366 (PR #1045: FV-03 fail-safe input bounds) | 75303e8b8 | Clinical-governance verification of FV-03 (patient-profile numeric fields → medication-safety alert engine). 4-agent adversarial workflow (consumer map + suppression audit + physiological bounds + synthesis). | ADJUST→implemented. Consumer map: evaluatePatientAlerts is the ONLY numeric consumer, no dose arithmetic, sanitize() is the sole guaranteed chokepoint. Suppression audit found naive null-routing UNSAFE via the bare-renal both-null hole (medication-patient-alerts.ts:286) — nulling one out-of-range renal input while the other is present-normal → false all-clear; fixed with &&→\|\| (0 bare-renal contraindication rows in corpus → no-op on current data). Bounds VALIDATED (age 0-130, egfr 0-250, crcl 0-400, qtc 240-800, scr µmol/L 15-3000 unit-aware): never reject a legitimate clinical extreme. Reject-to-null (never clamp). | typecheck, lint, format:check, full unit+jsdom 349 files/3120 passed/0 failed (incl. 38 new/updated FV-03 tests), design-system-contract (baselines unchanged), type-scale, icon-scale, check:production-readiness READY. verify:ui in CI. No provider calls. | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (Option A wave verdict — no code change; #1040 merged as cde6c5c) | canary run 29827012719 (#61, main cde6c5c) vs banked #60 (29800029819) | (recorded with Outcome) | OPTION A WAVE ADOPTED — FIRST FULLY-GREEN 44-CASE CANARY IN PROGRAM HISTORY (Blocking failures: None). (1) Option A payoff EXCEEDED: citation_failure_rate 0.0227→0; the neuroleptic-side-effect-escalation case flipped from wrong-doc→failed-generation→1-citation-fallback to **strong route, successful gpt-5.6-sol generation, passed in 15.4s with no fallback marker** — the rescued S3 retrieval fixed generation itself, not just the citation count; expected_source_hit 0.6364→0.6591. (2) Golden held exactly as the blast-radius analysis promised: 36/36 PASS, content_recall 1.0, mrr@10 0.8921 BYTE-IDENTICAL to the pre-wave baseline (zero ordering movement — no golden case fires the predicate), irrelevant@10 0.1083→0.0917 (slightly better). (3) Parity payoff PARTIAL: monitoring targeting 1/5→2/5 (olanzapine-lai flipped — previously called a retrieval-depth residual; quetiapine-dose also flipped on the dose side); lithium-range (232ch) + metabolic (73ch, byte-identical answer to #60) did NOT flip despite offline-proven fixes — their live chunk sets evidently contain no admissible schedule sentence even under the widened gate → reclassified as retrieval-depth/live-content residuals joining adhd; below the ≥3/5 target but strictly improved, no regression anywhere. Dose 2/5 vs 2/4: same passing count, applicable set grew (new quality-metformin-renal-dosing miss = eval-set churn, not regression). (4) No-worse EXCEEDED: relevance 0.5333→0.6 (the two-step watch-item slide FULLY REVERSED to the #58 level), targeting_rate 0.6667→0.6957, fail_closed 0.9 held, readability/artifact_leaks 1.0, route ceilings 0, grounded 1.0, unsupported_correct 1.0, numeric 0, p95 22.8s, red_result 3/3. Adoption per the measured-gain rule: primary goal achieved, three case flips, relevance recovered, zero regressions. Residual queue: monitoring retrieval-depth trio (lithium-range/metabolic/adhd), E-3d H2 discards, weekly ANSWER_CASE_LIMIT 8→44 raise now unblocked (gate would be green), comparison-class coverage. Wave spend +~$2-4 → Phase E + Option A total ~$12-20 of ≤$20. | Evidence: run #61 job log read (Threshold Status: None; Answer Metrics; neuroleptic diagnostics row; targeting metric_rates + 6-miss list; golden 36 PASS lines + summary). Revert drill NOT triggered. | +| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: I9 weekly coverage raise) | see PR head | (recorded with Outcome) | ADDENDUM 5 post-green item I9 (plan-authorized "after reds fixed"): weekly scheduled canary ANSWER_CASE_LIMIT default 8→44 — the Sunday 18:00 UTC cron now guards the FULL answer-quality case set instead of the first 8 (both #57 blocking reds historically lived OUTSIDE the first 8, leaving the weekly gate blind to them). Unblocked by run #61 proving the citation gate green on the full 44. Cost: est +$1-2/week (user-authorized in the plan). Contract test pin updated in lockstep (eval-canary-workflow.test.ts). Dispatch shapes unchanged (input override still wins); operational-risk diff, plain-revert rollback. | check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS (20/20); eval-canary-workflow contract 4/4; prettier clean; no provider calls | +| 2026-07-21 | claude/database-governance-audit-10b6ed (PR #1051: source-governance audit — safe subset) | cee396730 | Governance-metadata observability + UI display + provenance flow test; no ranking/retrieval/generation surface touched. | IMPLEMENTED + handed off (not a review of prior work). Resolved audit #1 (logger.warn on unrecognized enum values; return value unchanged), #2 (review_due_source added to frontendVisibleWarningCodes → answer-level badge; warning-severity, no refusal impact), #9 (source_metadata retained on safety-finding citations + governance pill in SafetyFindingsListContent), #13 (new tests/provenance-flow.test.ts: DB-normalize→governance→client payload sources+safety citations→render policy). Deferred #4/5/6/8/10 (RAG-protected ranking/selection/LLM-context/cache — need live eval-canary+approval), #11/#5 flag debt (D5/D4), #3 (is_public schema/RLS), #7 (conflict-detection scope), #12 (canary automation). Rebased onto origin/main (was 18 behind; conflict-free — none of the 18 commits touched the 8 files). PR-policy CI green (confirmed no ragRankingPatterns match). | verify:pr-local exit 0 (351 files/3129 tests, production build, client-bundle secret scan, offline RAG fixtures 36/36); typecheck + lint + prettier green. verify:ui NOT run locally: pre-existing globals.css Tailwind/Turbopack dev-compile error (git-clean, unrelated; prod build passed) — CI Production UI job covers it. check:production-readiness deferred (offline env/config validator; PR changes no env/secret/config inputs; secretless worktree). No provider calls. | +| 2026-07-19 | all remote feature branches and registered worktrees against `origin/main` through PR #899 | 8242fa63d5f5b79fc770c9ae4f633e3a784b80e1 | branch/worktree cleanup, useful-work recovery, and protected-main merge closure | Deleted 122 stale or closed remote feature refs with exact SHA leases; four additional merged PR branches were removed by the protected-main PR workflow. Removed 32 obsolete, superseded, or merge-proven worktree registrations. Recovered useful dirty RAG work into PR #901 (deterministic and opt-in semantic reranking) and PR #902 (retrieval phase latency telemetry), preserved follow-up decisions in `docs/process-hardening.md`, and recovered four missing historical review rows. PRs #897, #899, #901, and #902 were merged with green exact-head checks. Correction: the original zero-unresolved-thread statement was inaccurate for PR #901; a subsequent full-repository audit recorded two unresolved semantic-rerank threads, whose code findings are remediated by the 2026-07-19 P2 audit-fix entry below. A detached full-repo-review worktree is deliberately retained because its ownership/activity could not be safely disproved; one unregistered `node_modules` junction residue is also retained because deletion was denied by local safety policy. | Fresh fetch/prune; full GitHub PR/check/thread inventory; `git worktree list --porcelain`; cherry-pick-aware right-only logs; exact leased remote deletes; exact-old-value local ref deletes; clean-worktree, path, and merged-PR proof before every removal. PR #899 local proof: focused Vitest 31/31, changed-file ESLint, `verify:cheap` 317 files / 2,879 tests, and `verify:ui` 239/239; exact-head hosted checks all passed. PR #901 local proof: `verify:cheap` 316 files / 2,870 tests; PR #902 focused Vitest 8/8 plus ESLint and typecheck. No OpenAI, Supabase, live clinical, deployment, or production-data workflow ran; provider-backed semantic canary evaluation remains approval-gated. | +| 2026-07-19 | codex/fix-p2-audit-20260719 | 4034d2e60ebb6616130ff17bf3cb69368f36f8f6 + reviewed working diff | full-repository remediation of audit findings P2-6 through P2-23 across RAG, cancellation, privacy/API validation, PDF extraction, auth durability, offline/CI verification, Factsheets, Therapy Compass, and review records | Remediated all 18 recorded P2 findings with scoped code and regression tests. Semantic rerank signals and safety identifiers now survive answer ranking; source summaries reject embedded instructions; shared search/embedding/answer work respects per-caller cancellation; public search omits internal storage paths and document chunk validation fails closed; JS PDF extraction enforces dimensions and aggregate budgets before copying; transient auth validation outages retain local user data; offline release and CI PDF prerequisites are deterministic; Factsheet print/save state is honest and persistent; Therapy artifact actions are capability-aware and catalogue routes load a compact generated index; the prior PR #901 thread claim is corrected. No remaining high-confidence P2 was found in the reviewed working diff. Remote review-thread disposition was not attempted because GitHub API interaction requires separate confirmation. | `verify:cheap` passed 318 files / 2,891 tests / 1 skipped; final PR-local constituent run passed format, lint, typecheck, and 318 files / 2,892 tests / 1 skipped; production Next.js build generated 1,682 pages and the client-bundle secret scan passed; `verify:ui` passed 239/239 Chromium tests; offline RAG fixtures passed 36 cases / 21 suites and offline RAG eval passed 295 tests; focused changed-surface Vitest and DOM suites passed; CI-scope, Therapy index, offline-release dry-run, and `git diff --check` passed. The PR-local wrapper's first build attempt was correctly blocked by the identity-verified dev server; after stopping only that isolated server, the build and remaining RAG fixture step passed directly. No OpenAI, Supabase, GitHub, hosted-CI, deployment, or production-data workflow ran. | +| 2026-07-19 | origin/main 24-hour merged window (d1937d78e..ef042cacd, ~30 PRs incl. #853/#859/#861/#865/#868/#871–#874/#879/#885–#888/#890–#894/#896) | ef042cacd | integrated post-merge regression audit of the full 24h window (code review + design/performance/defect angles) | No P0/P1 regression found at the merged tip. One confirmed P2: the new settings surface (`use-app-preferences.ts` + `settings-dialog.tsx`) presents jurisdiction, population, answer-style, landing, home-content, compact-citations, and all notification preferences as live controls, but no consumer reads them — only density/motion (html attributes + globals.css) and theme are functional; a clinician selecting "Conservative" answer style reasonably but wrongly believes generation changed. One plausible P2/P3: `AuthProvider.initializeSession` now requires a live `getUser()` round-trip, so a transient network failure on load resolves a valid stored session to signed_out (INITIAL_SESSION replay is also skipped); the deliberate stale/tampered-token defense does not distinguish retryable network errors. One P3: `/medications` legacy redirect drops the query string while `/applications` and `/differentials/presentations` preserve theirs. Cleared after inspection: worker image-placement dedupe (key symmetric on both sides), title-word purge/scope migration (matches its replayed review), RPC-layer-only cancellation consolidation (intentional per PR #861), services route-chunk fix intact with no other heavy client value-imports (type-only imports verified), forced-colors ButtonFace/ButtonText flip, codex-autofix/pr-policy workflow changes conform to AGENTS.md (pin retained, rename-aware routing, workflow_sha checkout), audit-metadata allowlist exhaustive over the closed AuditAction union, answer-stream merged abort signals. Environment note (not a repo defect): the session-start hook skips `npm install` when node_modules exists, so this window's dependency bumps left the container stale and `verify:cheap` failed at typecheck until `npm ci`; the hook should compare a lockfile hash. | `npm ci` then typecheck clean and full Vitest 2828 passed / 1 failed / 2 skipped — the sole failure is the long-baselined container-only `tests/pdf-extraction-budget.test.ts` artifact (hosted-CI-green through #826/#835/#872/#890). First `verify:cheap` run passed every static guard (runtime, actions-pin, ci-scope, ci-triage, pr-policy, sitemap, brand, type-scale, icon-scale, function-grants, owner-scope, lint) before the stale-deps typecheck stop. No OpenAI, Supabase, deployment, or provider-backed check ran. | +| 2026-07-19 | origin/main foreign merges post-#896 landing (541da7b #871 remediation + f4557ca #892 policy parsing; explicit user review request) | ef042ca6a34d33862936e77e4b71068978382c1e | Bug review of recent main changes (diff-review protocol) | One P2 confirmed and fixed in PR #905: #892's widened heading matcher ended a required PR-body section at ANY next heading, so `###` sub-structure inside `## Verification` truncated the section and false-rejected valid bodies (fail-closed; repo template unaffected; repro via direct evaluatePullRequestPolicy probe old-vs-new). No P0/P1. Cleared after verification: `src/lib/client-env.ts` (no env leakage; production demote-to-demo removal deliberate and fail-safe — upload gating still locked via canUsePrivateApis), applications/medications redirect routes (fixed targets, 307+HEAD alias, no open-redirect/header-injection), test infra (no weakened assertions; route-coverage spec added to all projects), and the three biggest #871 UI diffs read inline (ClinicalDashboard upload tablist roving-tabindex + hydration-safe useSyncExternalStore role switch; visual-evidence unavailable-source rows became real non-interactive elements; favourites library demo-gates prototype items with sound menu keyboard nav). Residual (report-only): pr-policy `section()` remains fence-unaware (headings inside fenced code can satisfy required-section checks — pre-existing class, author-controlled attestation surface); dev-only Turbopack persistent-cache staleness served an old globals.css compile across restarts twice this session (fixed by setting `.next` aside). | Reviewer fan-out: general lane completed with concrete probes (pr-policy self-test, node repro on old parser from f4557ca^, adversarial body probes); UI lane agent lost to session limit and re-done inline on the three biggest diffs, leaning on the merged tree's green gates (verify:ui 236-passed run in this session covers #871's own new specs). No provider-backed checks run. | +| 2026-07-19 | claude/clinical-kb-pwa-review-asi3wb (PR #905; commits b2afe66 visuals + 6531178 policy + this ledger follow-up) | 6531178c1a3427dfd58c4bfcf8e29020c5731179 | PWA install/update notice redesign (all breakpoints) + review-follow-up policy fix | Redesigned the five PWA notices (install, update, iOS hint, offline, restored) as glass lux cards: per-type semantic icon tiles, heading-ink titles, corner dismiss buttons, reduced-motion-safe 280ms entrance. Deliberate placement per screen size: phones keep the bottom card above the fixed composer (thumb zone, safe areas); ≥640px floats a 25rem card bottom-right; ≥1280px moves the stack to a top-right toast under the header (same 4.25rem+safe-area offset constant as the mode-menu popover) with the animation direction flipped. Copy, roles, and button names unchanged. Plus the outline-aware pr-policy section parser fix from the same-session review (see the review row above). | Focused vitest pwa-lifecycle.dom 9/9 + pwa-manifest 8/8; `check:pr-policy` self-test green incl. new sub-heading case; `verify:cheap` 2828/2831 (sole fail = known container-only pdf-extraction-budget artifact); `test:e2e:pwa` privacy/offline green (installability fail = known container `in-incognito` artifact); `verify:ui` 236 passed/2 failed (the two long-baselined container artifacts); production build + client-bundle secret scan + bundle budget within tolerance (1293.4 vs 1278.6 KiB baseline); visual evidence at 390/768/1440 light+dark+offline in session scratchpad. Dev caveat recorded: Turbopack persistent `.next` cache served stale globals.css across restarts twice; fixed by setting the cache aside. No provider-backed checks run. | +| 2026-07-19 | `origin/main` through PR #903 plus fixed 48-hour PR snapshot (`#689`–`#902`) | 4034d2e60ebb6616130ff17bf3cb69368f36f8f6 | whole-repository, all-lens regression and PR-activity review | Changes requested. No P0. Confirmed five P1 defects: stale publication approvals are not bound to reviewed document state; invalid supplied credentials can become anonymous uploads; pooled duplicate uploads expose another uploader's metadata; readiness is fail-open for database usability errors; and settings promise clinical tailoring/alerts with no consumers. Eighteen P2 findings cover semantic rerank effectiveness/privacy, summary prompt trust, PDF resource limits, cancellation, auth-state loss, public storage-path exposure, query validation, provider-boundary/CI/test gaps, factsheet/Therapy behavior, Therapy startup cost, and the PR #903 ledger's incorrect claim that PR #901 has zero unresolved threads. GitHub GraphQL still reports two current unresolved P2 threads on merged PR #901. | Exact tree `68a58f6f..4034d2e60`: 217 commits, 566 files, +59,742/-8,242. Fixed snapshot inventory: 213 PRs created and 25 older PRs updated. On `a871dd765`, `verify:cheap` passed (317 files/2,879 tests), offline RAG passed (21 suites/294 tests), and production build plus required Chromium passed (1,682 pages; 239/239). PR #899 exact head `8242fa63d` has the same full local proof and green hosted checks; PR #903 is docs-only and passed `git diff --check`, docs links, and docs script references. Production-readiness CI, design-system, env parity, workflow guard, and offline audit passed. `docs:check-index` remains advisory-red and full-range `git diff --check` reports four intentional Markdown hard breaks plus three SQL whitespace lines. No OpenAI, Supabase, deployment, live clinical, or provider-backed release command ran. | +| 2026-07-19 | local branches and worktrees after PRs #905 and #907 | e377ab1aed44d56c303eede80572c1df82ddcd6e | final local branch/worktree cleanup and useful-history preservation | Reduced 153 local branches to `main` plus the two actively edited task branches. Deleted 150 redundant refs using cherry-pick containment, exact merged-PR heads, synthetic no-op merge trees, exact duplicate-head retention, merged-PR commit association, and explicit supersession review. Removed two clean obsolete worktrees and retained only the active auth/Supabase and P2-remediation worktrees for their owners. Archived the final 66 superseded historical heads in a verified 76,395,256-byte Git bundle before ref deletion. PRs #905 and #907 merged through protected `main`; PR #906 subsequently merged through protected `main` and its remote branch was removed. | Fresh fetch/prune and PR inventory; exact-old-value `git update-ref`; `git merge-tree --write-tree`; GraphQL commit-to-PR association for 178 commits; reverse-patch checks against a detached fresh-main worktree; verified bundle `Database-local-refs-before-final-cleanup-20260719-0525.bundle`; final branch/worktree/remote checks. No OpenAI, Supabase, deployment, live clinical, or production-data workflow ran. | +| 2026-07-19 | claude/audit-recent-changes-kde66i (audit-remediation follow-up to the ef042cacd audit row) | see PR head | remediation of the three 2026-07-19 audit findings | Fixed all three findings from the 24-hour merged-window audit. (1) Inert settings honesty (P2): every preference the app does not yet consume — jurisdiction, population, answer style, landing, both home-content toggles, compact citations, and all three notification toggles — now renders an explicit "Saved for later — not active yet" marker in `settings-dialog.tsx`; the functional appearance/density/motion rows stay unmarked. Wiring the preferences into answer generation was deliberately NOT done here (clinical-behavior change requiring governance review); the new dom test documents the contract for flipping a control live. (2) Auth offline resolution (P2/P3): `resolveInitialAuthState` gains `verificationUnavailable`, set from `isAuthRetryableFetchError(getUser().error)`, so an unreachable auth server keeps the stored session signed in while a reachable server that rejects the token still resolves signed_out; server-side bearer validation is unchanged. (3) `/medications` redirect (P3): now preserves the sanitized q/focus/run search context with the same allowlist as the root legacy-mode redirect. | Focused Vitest 30/30 across `settings-inert-preferences.dom` (new), `private-client-auth` (3 new cases), `audit-navigation-auth-regressions` (query-preservation case), `app-preferences`, and `site-map`. Full `verify:cheap` run recorded on the PR. No OpenAI, Supabase, deployment, or provider-backed check ran. | +| 2026-07-19 | claude/audit-recent-changes-kde66i (preference wiring + session-start hook follow-up to the #906 remediation) | see PR head | wiring the wireable inert preferences live and fixing the stale-node_modules session-start gap | Wired three of the seven remaining inert preferences into real behavior and removed their "Saved for later" markers: (1) Default landing view — `GlobalSearchShellClient` applies a one-shot `router.replace` to the saved landing mode (`search`→documents, `browse`→tools via `landingModeForPreference`) on a bare "/" load only; explicit mode/query/run params always win, and the dashboard's existing URL-sync effect performs the switch. (2) Recent searches on home — `AnswerEmptyState` now gates its recent-query chips on `showRecentOnHome`. (3) Compact citations — the answer source capsule drops its text label to icon+count when `compactCitations` is on, with the "No direct source found" warning explicitly exempted so compact mode can never hide a missing-source signal. Still marked inactive with reasons documented in the test contract: jurisdiction/population/answer-style (wiring them into answer generation is provider-eval-gated per the confirmation boundary), saved-protocols-on-home (no protocols module exists), and the three notification toggles (no delivery infrastructure). Separately, `.claude/hooks/session-start.sh` now stamps the `package-lock.json` sha256 into `node_modules/.session-start-lock-hash` after `npm ci` and reinstalls when the lockfile no longer matches, closing the stale-container gap that faked a typecheck regression during the 24h audit. | New `tests/answer-preferences.dom.test.tsx` (recents gate on/off, compact capsule display incl. the missing-source exemption, landing mapping) and the updated `settings-inert-preferences.dom` contract (3 rows moved inert→functional) pass with `app-preferences` and `private-client-auth`: 26/26 focused. Full typecheck, scoped zero-warning ESLint, and the full Vitest suite recorded on the PR; `bash -n` on the hook. `check:production-readiness` not run: no secrets in this container (documented demo-mode expectation) and no answer-generation, retrieval, or source-governance logic changed — the capsule change is presentational with the missing-source warning locked by test. No OpenAI, Supabase, deployment, or provider-backed check ran. | +| 2026-07-19 | work | 39378863a5d713bfdeb617377a90319ae75810d4 | Repository-wide static review sweep across security/auth/privacy, RAG/clinical answers, database/RLS, UI/accessibility, CI/release automation, dependencies/build/runtime, and local verification hygiene. | Findings recorded in docs/audit/repo-wide-review-sweep-2026-07-19.md. Highest severity: P1 summary-mode non-stream route contract drift; P1 release PR policy coverage gap. | npm run workflow:flightplan -- --write-evidence (pass); npm run format:check (failed existing formatting drift); npm run check:knip (failed missing node_modules); npm run typecheck (failed missing TypeScript binary); npm run lint (failed heavy-run lock because typecheck was active); npm run check:runtime (failed missing tsx/node_modules). Provider-backed checks skipped per confirmation boundary. | +| 2026-07-23 | work | 570a507d099c64fcf9db1d27ddbef5f5e1f142d3 | Quick follow-up review of issues raised in the 2026-07-19 repository-wide review sweep, plus local static checks requested in chat. | Several prior findings remain reproducible in the current tree: non-stream /api/answer still accepts summaryMode without a summary branch; stream summaryMode can still scope documentIds separately from summarized documentId; PR policy still targets only main while CI targets main and release/**; action pin checker still scans only workflow YAML files; local shell remains Node 20 with node_modules absent; Prettier drift still reports 27 files. check:github-actions and check:pr-policy self-tests pass but do not cover the remaining coverage gaps. | node/npm/dependency presence probe; static source inspection of answer request/routes, CI/PR policy triggers, action pin checker, UI/accessibility remnants, .npmrc/package engines; npm run check:github-actions && npm run check:pr-policy && git diff --check (pass); npm run format:check (failed existing formatting drift). No provider-backed checks run. | +| 2026-07-24 | work | bcf4571dd37005622dbef7aae0e2374afafb6b0f | Targeted review of search bar/header/footer chrome behaviour after the edge-to-edge phone dock fix, plus durable repo rules for page-adaptive search chrome. | No new P0/P1 search chrome defect found in the static review. Fixed one regression hazard: a stale ClinicalDashboard comment still instructed a 0.75rem hidden dock pad despite the implementation/tests requiring 0rem. Added durable search chrome behaviour rules in AGENTS.md and docs/search-chrome-behaviour.md, with a static guard tying the remembered rules to the hidden-reserve contract. | dependency shortcut section count; git diff --check; targeted rg for stale 0.75rem hidden-pad source wording (only negative test assertions remain); targeted Vitest command attempted but blocked by missing node_modules/vitest under Node 20.20.2 in this container. No provider-backed checks run. | +| 2026-07-26 | execute-audit-remediation-fixes | 599cc563d7ff9df3aaff605f392a3d57d483ef40 | Deep review and bug hunt across Phase 1 & Phase 2 audit remediation changes, git conflict resolutions, RAG UI governance fail-closed checks, privacy routing mocks, and offline RAG evaluation suites. | Discovered and remediated a fail-closed governance defect in `src/components/clinical-dashboard/evidence-panels.tsx`, where a loose `isSourceBacked !== false` check allowed untrusted answers with missing relevance evaluations to pass through, and where `ClinicalNotesChecklistPanel` and `clinicalNotesDisplayCountForAnswer` were not trust-gating visual evidence before rendering tables or calculating tab counts. Replaced with explicit `=== true` check and wired `trustGatedAnswerForClinicalNotes` into the components and helpers. Also confirmed merge conflict resolutions in `service-catalog-mapper.ts` and `api/answer/route.ts` are spotless, and `privacy-ui.test.ts` static Next router mocks are functioning correctly. | `npx vitest run tests/visual-evidence-tabs.dom.test.tsx` (6/6 passed); `npm run eval:rag:offline` (21/21 suites passed, 308 tests passed). No provider-backed checks run. | +| 2026-07-24 | execute-audit-code-remediation (PR #1162) | 632e84c9436f1f28be9d7aaadbbe942f72618199 | Run PR sweep: CI fix + threads + drift | before: CONFLICTING + PR policy FAIL + unresolved Codex P1 (conflict markers in answer/route.ts). after: conflict markers removed and pushed (80212dd91, 632e84c94); merge origin/main aborted (non-trivial conflicts: privacy/page.tsx, answer-render-policy.ts, source-authority-metadata.ts, upload/route.ts, supabase/drift-manifest.json, settings-dialog, validation/answer-request, plus UI/docs/tests); PR policy still FAIL (Clinical Governance Preflight missing — body edit forbidden this sweep); thread reply/resolve needs parent (comment 3644028277 / thread PRRT_kwDOSh5Fis6Tfkev) — ManagePullRequest/GitHub write MCP unavailable | typecheck:internal pass; vitest clinical-dashboard-merge-artifacts + visual-evidence-tabs pass (9); no provider-backed checks run | +| 2026-07-24 | execute-audit-code-remediation (PR #1162) | e386d074da69be3d7805a9e851f430603d3b0249 | Run PR sweep: CI fix + threads + drift | supersedes prior #1162 row: post-sweep HEAD includes ledger commit; conflict-marker fixes at 80212dd91+632e84c94; merge-from-main skipped (privacy/clinical/source-authority/supabase conflicts); PR policy + thread resolve deferred to human/parent | same gates as prior row; no provider-backed checks run | +| 2026-07-24 | execute-audit-code-remediation (PR #1162) | a398316163f75748fcfd59db3b5c61fd87819877 | Run PR sweep: CI fix + threads + drift | re-attempt merge origin/main ABORTED: non-trivial conflicts remain in privacy (src/app/privacy/page.tsx), clinical/RAG (src/lib/answer-render-policy.ts, src/lib/validation/answer-request.ts), source governance (src/lib/source-authority-metadata.ts), upload (src/app/api/upload/route.ts), supabase/drift-manifest.json, plus UI/docs/tests (search-chrome-behaviour, settings-dialog, navigation-back-button, sheet, patient-safety-plan, form-detail, differentials, bulk route, colour-coding, favourites-auth-gate, private-access-routes, services-catalog). Markers previously cleaned; PR policy body deferred to parent | merge aborted; no provider-backed checks run | +| 2026-07-24 | execute-audit-code-remediation (PR #1162) | 9664fb279adae41cd9846cca1a1a17650a1ac138 | Run PR re-sync sweep | Re-check only: still CONFLICTING vs origin/main. Semantic conflicts include privacy/page.tsx, answer-render-policy.ts, answer-request.ts, source-authority-metadata.ts, upload/bulk routes, settings-dialog, drift-manifest (+ more). Merge aborted; no force-resolve. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | repo-auditor (detached HEAD 037b4808 — explicit full-repo structural audit) | 037b4808100946f96aee28b8ff51939ae2986851 | Full-repo structural audit: broken imports, dead files, consolidation. Scope: src/, scripts/, worker/, tests/. Pure triage — no files mutated. | P0/P1: none. P2: confirmed dead file src/components/clinical-dashboard/prior-answer-turn-surface.tsx (115 lines, zero importers; superseded by answer-thread-turn.tsx per its 'Extracted from ClinicalDashboard.tsx maturity X3' comment; old file exports PriorAnswerTurn type + PriorAnswerTurnSurface component — both replaced). P3: three duplicate package.json script pairs (test:e2e = test:e2e:all; promote:public-documents = promote:public-documents:batch; postinstall = hooks:install — last pair intentional lifecycle). Unused public exports: authorization.ts (administratorRoleClaim/Value internal-only), api-client-error.ts (ApiClientError — only parseApiErrorResponse imported), rag/rag.ts (answerQuestion — superseded by answerQuestionWithScope), supabase/project.ts (isExpectedSupabaseProjectConfig + 2 types). RAG surface note only (do not touch): rag-extractive-first.ts exports hasValidatedRoutineExtractiveRecovery/hasValidatedGenericLaiManagementExtractiveAnswer with no external consumers. Knip false positives: taskkill (win32-gated), railway (opt-in --railway flag). No broken imports (typecheck + lint both exit 0, zero relative ../ imports in src/). | npm run typecheck (exit 0); npm run lint (exit 0); npm run check:knip (exit 0); knip --reporter json full export/file/type analysis; rg import-graph probes across all source trees | +| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138) | 46597a9b | Explicit performance + frontend-ui review of search/interactive surfaces; low-risk client deferral/cache/abort/progressive-reveal pass | Prior document/universal search latency work retained (NDJSON stream, LRU, lazy PDF, content-first detail). New work: differential debounce+abort+LRU; useDeferredValue on catalogue ranking; document results Show more window; RelatedDocumentsPanel memo; universal LRU 100+TTL; deferred registry search extracted from ClinicalDashboard. No RAG/retrieval/ranking edits. No high-confidence P0–P2 defect found in the shipped scope; residual risk = deferred paint lag on large catalogues and progressive reveal missing deep cards until Show more. | Focused Vitest 10/10 (differential + universal + performance boundaries); verify:cheap exit 0 (3262 tests); typecheck clean; verify:ui exit 0 (Chromium). No provider calls. | +| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 follow-up) | 7e2ccee0 | Bugfix pass on search interactive performance diff | Fixed P1 auth-stale differential matches; P2 progressive-reveal hiding selected card; P2 deferred empty/full-catalogue flash on services/forms/formulation/therapy-compass; Prettier CI failure on universal-search test. No remaining high-confidence P0–P2 in scoped diff. Residual: differential debounce skeleton flicker; RelatedDocumentsPanel memo limited by unstable callbacks. | Focused Vitest 11/11; typecheck; format:check; maintainability budgets. No provider calls. | +| 2026-07-24 | implement-audit-recommendations-fix (PR #1141) | 864f738e6 | Run PR sweep: CI fix + threads + drift | Before: PR required green, 2 unresolved duplicate sm:max-h command-surface threads, branch behind main. After: merged origin/main cleanly; removed generic duplicate sm:max-h cap; both threads resolved via GraphQL; reply mutations 403 noted in commit 864f738e. | node scripts/run-vitest.mjs run --reporter=dot tests/search-command-surface.test.ts PASS (8/8); git diff --check PASS; no Supabase/OpenAI/live eval gates run. | +| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | e3dc87000 | Run PR sweep: CI fix + threads + drift | Before: PR required green, 1 unresolved guest-favourites dock thread, branch behind main. After: merged origin/main cleanly; gated favourites hero composer slot on favouritesAccessible; thread resolved via GraphQL; reply mutation 403 noted in commit e3dc8700. | node scripts/run-vitest.mjs run --reporter=dot tests/mobile-composer-reserve.test.ts PASS (9/9); git diff --check PASS; no Supabase/OpenAI/live eval gates run. | +| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 babysit) | e27df0fa | Bugbot + merge babysit | Merged origin/main. Fixed Bugbot medium findings: deferred clear left stale service/registry matches. No unresolved review threads. | Focused Vitest (deferred registry + differential + boundaries); typecheck; maintainability budgets. Watching hosted CI. | +| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 merge-ready) | 36d86fd0 | Babysit closeout | CodeRabbit: stable RelatedDocuments callbacks, identity-based progressive reveal, clear differential LRU on 401, Sheet unmount focus-restore via layout flag, formulation/therapy clear. Bugbot: live therapy filters with deferred query text. CI PR required green; 0 unresolved threads. | Focused Vitest; hosted CI PR required PASS. | +| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 bugbot) | 8d712183 | Bugbot babysit | Fixed medium: formulation builder/home cleared live query still ranked against lagging deferredQuery. Merged main (#1137 search-chrome). No unresolved review threads. | Focused Vitest deferred registry; typecheck pending in CI. | +| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 babysit close) | 2f8509cc | Babysit to merge-ready | Merged main; fixed Bugbot deferred-clear findings; fixed Sheet focus-restore teardown flake that failed Unit coverage; no unresolved review threads. Hosted PR required green. | Hosted CI: Static PR, Unit coverage, Build, Production UI, Advisory UI, PR required PASS. No provider calls. | +| 2026-07-24 | codex/reindex-agent-enrichment-guard (PR #1143) | f82cf9cfa | Run PR sweep: CI fix + threads + drift | Before: PR required green, 1 unresolved reindex/agent-claim serialization thread, branch behind main. After: remote branch already had atomic RPC fix 2bb0470d plus merge-main d2d57d7c; validated pushed head, resolved thread via GraphQL; reply mutation 403 noted in commit f82cf9cf. | node scripts/run-vitest.mjs run --reporter=dot tests/reindex-enrichment-lease.test.ts tests/private-access-routes.test.ts tests/supabase-schema.test.ts tests/drift-detection.test.ts PASS (218/218); npm run check:migration-role PASS; npm run typecheck PASS; npm run check:production-readiness PASS with non-blocking warnings; no live eval gates run. | +| 2026-07-24 | PR #1153 / audit-remediation | 6f87e0ec88ac0cf2d45f0771e00f86039eaedd6a | Audit remediation diff review | 1 P1, 1 P2, 1 P3 finding. P1: Heavy Run Lock can be stolen from long-running commands (test-run-lock.mjs). P2: Tautological assertions in skill catalog tests (database-skills.test.ts). P3: Useless multiline flag in provider failure regex (semantic-rerank.ts). | Local static review of PR diff. | +| 2026-07-24 | PR #1137 / `codex/review-search-bar-behavior-and-establish-rules` | 6ee0484cc97b087c0e4f3661a49493f24a3ea9ba | Targeted review of search bar/header/footer chrome behaviour after the edge-to-edge phone dock fix, plus durable repo rules for page-adaptive search chrome. | No new P0/P1 search chrome defect found in the static review. Fixed one regression hazard: a stale ClinicalDashboard comment still instructed a 0.75rem hidden dock pad despite the implementation/tests requiring 0rem. Added durable search chrome behaviour rules in AGENTS.md and docs/search-chrome-behaviour.md, with a static guard tying the remembered rules to the hidden-reserve contract. | dependency shortcut section count; git diff --check; targeted rg for stale 0.75rem hidden-pad source wording (only negative test assertions remain); targeted Vitest command attempted but blocked by missing node_modules/vitest under Node 20.20.2 in this container. No provider-backed checks run. | +| 2026-07-24 | mobile-ergonomics-fixes (PR #1156) | f57274a4179a7e5678a5906399ed73da4801f3b3 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger auto-merge); pushed f57274a41. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | PR #1140 / `implement-audit-viewport-fixes` | 1f0aed90d | mobile keyboard viewport audit fixes | REJECTED. Found two P1 defects. 1) Broken keyboard detection due to `resizes-content` conflict. 2) Aggressive keyboard dismissal breaks scrolling. | `npm run verify:cheap` running. | +| 2026-07-24 | PR #1140 / `implement-audit-viewport-fixes` | 1528f69cda55f46e6eca910671987219ce9cbbaf | mobile keyboard viewport audit fixes | APPROVED. Fixed the two P1 defects (keyboard detection logic, scrollable container touch bubbling). | `npm run verify:cheap` passed. | +| 2026-07-24 | cursor/frontend-ui-review-docs-e8d9 (PR #1146) | 9c373eb1c2308b298a4c3abe970e5db793854ee4 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger/codebase-index auto-merge); pushed 9c373eb1c. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | cursor/search-performance-review-4ee9 (PR #1134) | 022a1ab95718e5e7636226f0dfebe88d7d7bc4f4 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green (pr-required), 0 unresolved threads. After: merged origin/main cleanly (auto-merge ledger/codebase-index); pushed 022a1ab95. Threads: none. Residual: CI re-running post-merge. | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | cursor/search-performance-review-4ee9 (PR #1134) | 9311d01212fe42bd41ffb22a83bfa51f1a4d19f2 | Run PR re-sync sweep | Re-check: CONFLICTING on use-differential-catalog.ts (+ related). Not cheap; merge aborted, no push. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | cursor/comprehensive-repo-review-ledger-d9a1 (PR #1150) | 60a3c3a83a31e65ec2759540629687e7113e2489 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger auto-merge); pushed 60a3c3a83. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138) | ff4b293d95f922e70ebf5ee9b0c156c41a8bff3b | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. RAG impact: no retrieval behaviour change — PR is client deferred-search/UI only (no src/lib/rag/**). After: merged origin/main; conflict resolved in src/components/ui/sheet.tsx by keeping main restoreTimersRef/unmountingRef focus-restore fix; pushed ff4b293d9. Threads: none. | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | implement-audit-recommendations-fix (PR #1141) | b5f8959af8ec44de63200b1d19c273bae1b7d541 | Run PR sweep: CI fix + threads + drift | Before: behind main by 6. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 6528aec920eb3cda84149980bdd26a20845227ec | Run PR sweep: CI fix + threads + drift | Before: behind main. After: merged origin/main cleanly (no conflicts). Unresolved review threads left as non-P0/P1. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 69af1e5db0d3fff45214b1cc17f37b0fbd5fffb2 | Run PR babysit: CI/threads/drift | Run PR babysit: Codex P2 density assertion fixed + thread resolved. Before: CI mostly green (Production UI in progress), 1 unresolved Codex P2 (3644978153). After: scoped per-button density assertions + count=2; reply+resolve PRRT_kwDOSh5Fis6TiJPl. Not behind main. | npx vitest run tests/mobile-interaction-regressions.test.ts PASS (5/5). No provider-backed checks run. | +| 2026-07-24 | codex/fix-next.js-startup-failure-and-verify-pages (PR #1149) | 8ddddbab2a29a94b3f993cbd114889f72c95f4f1 | Run PR sweep: CI fix + threads + drift | Before: behind main. After: merged origin/main cleanly (no conflicts). Unresolved review threads left as non-P0/P1. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 8964ed6d39603ac40c360e934b582c4e43388c7f | Run PR babysit: CI/threads/drift | Post-fix merge origin/main (clean). Density P2 fixed+resolved earlier; CI re-running. | merge origin/main; vitest mobile-interaction-regressions 5/5 earlier; no provider-backed checks run. | +| 2026-07-24 | audit-remediation (PR #1153) | c4adfe9e27e43edfdfea78f296257330cda39aca | Run PR sweep: CI fix + threads + drift | before: behind/conflicting + PR policy FAIL (missing Clinical Governance Preflight + RAG impact). after: merged origin/main cleanly; PR policy still FAIL — body edit forbidden this sweep (needs human to add Clinical Governance Preflight + RAG impact line); no unresolved review threads worked | merge only; no provider-backed checks run | +| 2026-07-24 | cursor/information-page-structure-2a5d (PR #1148) | 97511d69256b97de4f4e654ff6c12f3742f795f4 | Run PR sweep: CI fix + threads + drift | Before: behind main. After: merged origin/main cleanly (no conflicts). Unresolved review threads left as non-P0/P1. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | codex/audit-remediation-final (PR #1158) | 4bfaf2a77a5c8cc0e6c48ee27a72a2faad203dd3 | Run PR sweep: CI fix + threads + drift | Before: behind main by 64. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | implement-audit-viewport-fixes (PR #1140) | 47ebd3d20184875d80bf192144b614ec58d48e08 | Run PR sweep: CI fix + threads + drift | Before: already contained origin/main. After: ledger-only record. Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | codex/hydration-fixes (PR #1131) | 6c093e927d7b4f7261fb78160d85bdc407853001 | Run PR sweep: CI fix + threads + drift | Before: already contained origin/main. After: ledger-only record. Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | codex/hydration-fixes (PR #1131) | f5451102cc0f157d0f63a3679e532d02ae85918c | Run PR babysit: CI/threads/drift | Run PR babysit: Codex P2 theme cookie validated+fixed + thread resolved. Before: CI mostly green, 1 unresolved Codex P2 (3644928239; prior Codex claim not on this branch). After: cookie fallback in THEME_BOOTSTRAP_SCRIPT + useTheme write/clear + shared keys; reply+resolve PRRT_kwDOSh5Fis6TiAhF. Not behind main. | npx vitest run tests/theme.test.ts PASS (9/9). No provider-backed checks run. | +| 2026-07-24 | codex/hydration-fixes (PR #1131) | 93518331fd1839e773a0cb08d0e8425e502f876d | Run PR babysit: CI/threads/drift | Theme cookie P2 fixed+resolved; merged origin/main resolving layout.tsx (kept cookie html class + THEME_COOKIE_NAME atop localFont/skip-link from main). | merge origin/main; vitest theme 9/9; no provider-backed checks run. | +| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | 2cb98b40e2fd36650e293b27a97996c069971db3 | Run PR sweep: CI fix + threads + drift | Before: behind main by 35. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | e061ce29300cd80df5c8cd95d2ea8ecfeef1e2b0 | Run PR babysit: CI/threads/drift | Run PR babysit: Codex P2 prescribing typed-draft dock path fixed + thread resolved. Before: CI mostly green, 1 unresolved Codex P2 (3644919028). After: showDesktopHomeComposer for prescribing requires !query.trim(); documents half dispositioned as not holding (home slot stays pre-submit); reply+resolve PRRT_kwDOSh5Fis6Th-6B. Not behind main. | npx vitest run tests/mobile-composer-reserve.test.ts PASS (9/9). No provider-backed checks run. | +| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | bbd5aafaadc7334107bfe531eef291615b26ed4b | Run PR babysit: CI/threads/drift | Post-fix merge origin/main (clean). Prescribing dock P2 fixed+resolved earlier; CI re-running. | merge origin/main; vitest mobile-composer-reserve 9/9 earlier; no provider-backed checks run. | +| 2026-07-24 | cursor/repo-auditor-ledger-4132 (PR #1147) | 030723c7716da98a6cf166327e5b7a72c2991b8b | Run PR sweep: CI fix + threads + drift | Before: behind main by 64. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | +| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 8b2359589fe61c19c78fb02be50316c8f29d7e18 | Run PR sweep: CI fix + threads + drift | before: CONFLICTING; Static PR checks + Unit coverage + PR required FAIL (stale docs/site-map.md). after: merged origin/main cleanly (2e7b034d1); regenerated site-map (8b2359589fe61c19c78fb02be50316c8f29d7e18); no unresolved review threads; CI re-running expected green for static-pr/coverage/pr-required | vitest tests/site-map.test.ts pass (6); sitemap:check pass; no provider-backed checks run | +| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 992ebefa296d6894d5448c1381f1b0b95580e529 | Run PR sweep: CI fix + threads + drift | supersedes prior #1160 row: final HEAD after prettier site-map; merge origin/main clean; stale sitemap fixed; no threads | vitest site-map pass; sitemap:check pass; no provider-backed checks run | +| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 04201a87cc7ad7dd1477d17cd2b96544b7379789 | Run PR sweep: CI fix + threads + drift | re-merge origin/main after CONFLICTING relapse; resolved scripts/run-eval-safe.mjs (kept main taskkill /T /F + validPids); sitemap Prettier format() retained from fe0588b86; no unresolved threads; no conflict markers | merge + conflict resolve only; no provider-backed checks run | +| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | cbb493c2b51dd7120df39cfbcd5f19b73f882d43 | Run PR babysit: CI/threads/drift | Before: not behind at start, then main advanced (8 behind); required checks green except Production UI still pending on prior head; 0 unresolved review threads; no Bugbot findings. After: merged origin/main cleanly (docs/branch-review-ledger.md + src/app/layout.tsx auto-merge). No code fix needed. | merge origin/main only; no provider-backed checks run. | +| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | ad3d38c62a19f5fa2a7e8356021795937c5b0f66 | Run PR babysit: CI/threads/drift | Supersedes prior #1166 row in this push: post-merge+ledger HEAD after syncing origin/main (clean auto-merge). 0 threads; required CI re-running. | merge origin/main; ledger append; no provider-backed checks run. | +| 2026-07-24 | `codex/query-ribbon-search-headings` (PR #1166) | `37cfa5553ccb784ee5e9f47ded1ad69914c053ed` + reviewed correction diff | Correction: universal Query Ribbon implementation and responsive search-heading review | SUPERSEDES the earlier row that named non-existent pre-amend SHA `16ce57d9615708528e7924b41837210a24414722`. This resolvable reviewed tip contains functional commit `0b67944b0d2973d612833422fb4074aeacdb6c8c`, current-main syncs, and the append-only ledger correction. The prior APPROVE outcome and residual-risk statement are unchanged; no P0-P2 finding remains. | Query Ribbon DOM 4/4 after each main sync; exact-head hosted policy, static checks, unit coverage, build, advisory UI, Production UI, safety/config, Semgrep, Gitleaks, GitGuardian, and `PR required` passed before the final docs-only correction. No OpenAI, Supabase, Railway, deployment, production-data, or clinical provider workflow ran. | +| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | 37cfa5553ccb784ee5e9f47ded1ad69914c053ed | Run PR babysit: CI/threads/drift | Final HEAD after merge origin/main + ledger bookkeeping. 0 unresolved threads; no Bugbot actionable findings; required CI re-running on this SHA. | merge origin/main; no provider-backed checks run. | +| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | 9eac2e252bcc5c548aa919b69faeb79b9ff7d2cf | Run PR babysit: CI/threads/drift | Merged origin/main; Codex ledger-SHA P2 dispositioned+resolved (append-only supersede already in 9eac2e252). 0 unresolved threads. | merge origin/main; thread resolve only; no provider-backed checks run. | +| 2026-07-24 | remediate-audit-system-issues (PR #1160) | bdf530fc8c6faaa4491c510396b47872fc39bf25 | Run PR sweep: CI fix + threads + drift | second re-merge after main moved to 2e68888f3 during first push; clean ort merge (ledger + layout.tsx); taskkill /T retained; sitemap prettier retained | merge only; no provider-backed checks run | +| 2026-07-24 | implement-audit-recommendations-fix (PR #1141) | 7cd9d428a9c2c8c1ba22af2c1d6c4725334221c8 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 90cd914f07fc33019c3d80e37edd92f8d73d71f9 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | audit-remediation (PR #1153) | 4163069d49456d665fc7bfaf633e7012befa78b1 | Run PR re-sync sweep | Before: CONFLICTING in scripts/test-run-lock.mjs. After: merged origin/main; kept main lock wait/backoff semantics. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | mobile-ergonomics-fixes (PR #1156) | 5cff1cd0cf69539f18307fdeabbe87fc8a0fb13c | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | cursor/information-page-structure-2a5d (PR #1148) | 230770a53f9bfb53ba69abc81d6e8491e021f8a9 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | codex/audit-remediation-final (PR #1158) | 78fab6be0c43cf5e92361315399d393ee7742f2e | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean (no RAG conflict markers). NOTE: PR still intentionally adds deterministic broad_summary queryClass shortcut in src/lib/rag/rag.ts (+17) — RAG impact behaviour change, not dropped during merge. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | implement-audit-viewport-fixes (PR #1140) | a541b75c0e49f84125fc7e5d114cd9fc32d1a694 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | codex/hydration-fixes (PR #1131) | a29b0d778b542932972aa6035ee115b91e49025a | Run PR re-sync sweep | Before: CONFLICTING + Static PR FAIL (suppressHydrationWarning on skip link). After: merged origin/main; removed illegal suppressHydrationWarning from skip-to-content anchor; theme fix already on PR head b4b5f21b9. CI re-running. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | d0a96caa01b90dffa40e60770b7700f36e8ba43f | Run PR re-sync sweep | Before: CONFLICTING @8adaaf229. After: merged origin/main clean (ort). CI re-running. Threads: not re-triaged. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | cursor/repo-auditor-ledger-4132 (PR #1147) | 2f47746ad7e13e8cb848da71fb2647644388da8f | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | cursor/frontend-ui-review-docs-e8d9 (PR #1146) | 2b17f5fcbe06307e7ff50ad0373789daa8f07a01 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | c94e89f392f578c4b2c749195dd485b74959074c | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. CI re-running. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-24 | cursor/comprehensive-repo-review-ledger-d9a1 (PR #1150) | 345c02cdbaefb13aeb951a14674aedfe4648a50e | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-25 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 05ec10d50bd18b63e23fa2e8ce1bc1d00fb182c5 | Open-PR maintenance: CI fix + threads + drift | Before: Static PR checks/PR required failed and 1 unresolved P1 thread because a byte-identical PR #1149 ledger row was duplicated. After: current main is merged and the duplicate is removed; the ledger guard is green. | branch-review-ledger guard pass (717 records); no provider-backed checks run. | +| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | 84e930925d929ff45fded8f1276e6746e45bc9b3 | Open-PR maintenance: review fixes + drift | Before: 24 commits behind, 2 unresolved Codex threads; keyboard baseline reset existed but `--keyboard-height` had no dock consumer. After: merged current main cleanly; visible reserves include keyboard height and the edge-to-edge phone dock translates above overlay keyboards while hidden reserve stays zero. | focused Vitest pass (15/15); Prettier check pass; `git diff --check` pass; `npm run ensure` verified project at localhost:3264; full `verify:ui` not run because hosted CI will rerun and repository heavyweight work was active elsewhere; no provider-backed checks run. | +| 2026-07-25 | codex/hydration-fixes (PR #1131) | d6b5d23f7e97f99310a249db8e9f006833e697c6 | Open-PR maintenance: CI fix + threads + drift | Before: 24 commits behind, Static PR checks/PR required failed, 2 unresolved Codex threads. After: merged current main cleanly and removed the branch-introduced byte-identical PR #1149 ledger duplicate; hydration suppression fix was already present. | branch-review-ledger guard pass (717 records); targeted lint blocked by active repository heavyweight lock in worktree 6314; `git diff --check` pass; no provider-backed checks run. | +| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | c59ae820db3034ef3cf74ae6d0030a0472a3a264 | Run PR babysit: merge/CI/threads | Before: CONFLICTING + Static PR checks FAIL (duplicate #1149 ledger row) + 2 unresolved Codex P2s. After: merged origin/main; removed duplicate ledger row; Differentials hero slot gated on !(query.trim() && documentMatches.length); threads resolved. | vitest mobile-composer-reserve 9/9; check:branch-review-ledger pass; maintainability 4132/4140. No provider-backed checks run. | +| 2026-07-25 | codex/document-clinical-summary-20260725 (PR #1169) | 6bbce2b97477cb4497624abe2a37c74864e872c8 | Open-PR maintenance: review-thread verification | Before: 2 unresolved Codex threads; branch current with main and required CI running. After: both persisted-profile/placeholder-summary fixes confirmed on the exact head and ready for reply-then-resolve; no further code change required. | `node scripts/run-vitest.mjs run tests/document-clinical-summary.test.ts tests/document-clinical-summary.dom.test.tsx --reporter=dot` pass (5/5); `git diff --check` pass; no provider-backed checks run. | +| 2026-07-25 | cursor/pr-babysit-bugbot-agents-6c52 (PR #1167) | ee44812aae9dad1973d8302eba5bfca5000dffb6 | Open-PR maintenance: review-thread fixes | Before: 8 unresolved Codex/CodeRabbit threads; branch current with main. After: target-head pinning, fresh-main verification, exact `cursor[bot]` identity checks, explicit mutation/provider authorization, direct reply-then-resolve semantics, and no-op ledger bookkeeping are documented. | Prettier check on both agent files pass; `git diff --check` pass; GitHub author probe confirmed `cursor[bot]` account type `Bot`; no provider-backed checks run. | +| 2026-07-24 | cursor/pr-babysit-bugbot-agents-6c52 (PR #1167) | 6ec7a852 | Babysit sweep: CI fix + Codex/CodeRabbit threads | Before: mergeable, PR required green, 8 unresolved agent-guidance threads. After: fixed pr-babysit/pr-bugbot agents (fetch origin/main, no Run PR live-gate auth, pin target head SHA, exact bot identity, ledger-after-every-sweep). Thread reply/resolve 403 on this token — fixes pushed. | typecheck on agent files; no provider-backed checks run | +| 2026-07-24 | codex/fix-merge-conflicts-and-ci-on-open-prs (PR #1170) | 48fcb485 | Babysit sweep: CI fix | Before: Static PR checks FAIL (docs:check-links missing legacy route paths). After: expanded check-docs-links allowlist for pre-(search-app) paths. Production UI re-running. | npm run docs:check-links PASS; no provider-backed checks run | +| 2026-07-24 | codex/document-clinical-summary-20260725 (PR #1169) | ef4ffca5 | Babysit sweep: Codex P2 threads | Before: 2 unresolved Codex P2s (missing pages guard, placeholder summary filter). After: profileItemPages helper + usefulSummaryText placeholder filter. CI re-running. | npm run typecheck PASS; no provider-backed checks run | +| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | fb39314e | Babysit sweep: drift | Before: behind main, PR required cancelled. After: merged origin/main cleanly. CI re-running. | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 05ec10d5 | Babysit sweep: CI fix + drift | Before: CONFLICTING, Static PR + PR required FAIL (duplicate ledger row). After: merged origin/main; removed duplicate PR #1149 ledger row. CI re-running. | check-branch-review-ledger PASS; merge origin/main; no provider-backed checks run | +| 2026-07-24 | codex/hydration-fixes (PR #1131) | 21bdde7d | Babysit sweep: CI fix + drift | Before: CONFLICTING, Static PR + PR required FAIL. After: merged origin/main; removed duplicate PR #1149 ledger row; lint already green on head. CI re-running. | npm run lint PASS; check-branch-review-ledger PASS; no provider-backed checks run | +| 2026-07-24 | cursor/frontend-ui-review-docs-e8d9 (PR #1146) | c29d57c5 | Babysit sweep: drift | Before: CONFLICTING. After: merged origin/main cleanly. 1 unresolved Codex P2 (ledger insert vs append) left for human. | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | execute-audit-code-remediation (PR #1162) | b4675d7b | Babysit sweep: drift skipped | Before: CONFLICTING, PR policy FAIL. Merge origin/main aborted: 20+ conflict files across clinical/auth/API surfaces — needs human resolution. | merge --abort; no provider-backed checks run | +| 2026-07-25 | codex/fix-merge-conflicts-and-ci-on-open-prs (PR #1170) | e979fc892f11a17b1a8f2ef1ab058ef40d629182 | Open-PR maintenance: CI fix + threads + drift | Before: Static PR checks failed because route-group moves made nine valid legacy `src/app/*` documentation references appear missing; 0 unresolved threads; branch already contained current main. After: docs-link resolution checks known App Router route groups and the focused failure is fixed. | `node scripts/check-docs-links.mjs` pass (1162 references); Prettier check pass; `git diff --check` pass; no provider-backed checks run. | +| 2026-07-25 | execute-audit-code-remediation (PR #1162) | 1ea38c730f10c6b2de483c036c47e70f58780d43 | Open-PR maintenance: restore regressed thread fixes | Before: 3 unresolved review threads; the action-pin checker crashed on a duplicate helper, mobile detail-page back actions depended on browser history, and the bulk publisher-code fix was present but unverified. After: action discovery is single-source, detail routes use stable parent destinations, and all three thread fixes are covered or verified. | GitHub Actions pin self-test and `check:github-actions` pass; focused Vitest 20/20 pass; `npm run ensure` verified http://localhost:3264; Prettier and diff checks pass; no provider-backed checks run. | +| 2026-07-25 | implement-audit-recommendations-fix (PR #1141) | 0aaf441775786e5def408a2eda551d9b5d95542d | Open-PR maintenance: review fix + drift | Before: 24 commits behind and 1 unresolved P2 thread; nested result content retained safe-area padding after the shared dock hid. After: current main is merged and child content uses fixed small phone gaps so the shared zero hidden reserve reaches the viewport edge. | focused Vitest pass (7/7); Prettier check pass; `git diff --check` pass; no provider-backed checks run. | +| 2026-07-25 | audit-remediation (PR #1153) | 80ca8bbeaaf43696863ce4a0949ca880d17a5eed | Open-PR maintenance: fail-closed test and skill sync fixes | Before: 3 actionable review threads; Vitest accepted empty selections; skill sync auto-promoted uncatalogued folders and generated aliases as implicitly invocable. After: empty selections fail by default, uncatalogued folders require an explicit catalog decision, and generated alias manifests target the canonical skill with implicit invocation disabled. | `npm run skills:sync` pass; `npm run check:skills` pass (32 canonical, 8 aliases); Prettier and diff checks pass; focused Vitest blocked by the repository heavyweight lock owned by another worktree; no provider-backed checks run. | +| 2026-07-24 | open-PR conflict sweep (13 clean + 5 conflicted) | multi-head | Conflict fix sweep | Merged origin/main into #1124 #1140-1142 #1146-1148 #1153 #1156-1158 #1167 #1169 #1171 #1172 (clean). Resolved conflicts on #1131 #1134 #1153 #1167 #1162. All 18 open PRs mergeable after sweep. | merge-tree classify + per-PR merge; focused private-access tests on #1162; Bugbot on #1162; no provider-backed checks | +| 2026-07-24 | execute-audit-code-remediation (PR #1162) | 3cb7c977 | Conflict fix + Bugbot + local review | Before: CONFLICTING (21 files). After: mergeable. Restored atomic upload RPC; aligned private-access tests (133/133). Bugbot 2 medium left open. | private-access-routes 133/133; no provider-backed checks | +| 2026-07-25 | codex/document-clinical-summary-20260725 (PR #1169) | 605a47b551a03774fab41416bf980dfbc9610221 | Open-PR maintenance: malformed persisted profile guard | Before: one actionable thread showed non-array or malformed persisted summary groups could throw during render. After: every priority group is normalized through an array/item guard and malformed values are ignored while valid items still render. | Focused Vitest 7/7 pass; Prettier and diff checks pass; no provider-backed checks run. | +| 2026-07-25 | cursor/search-performance-review-4ee9 (PR #1134) | 692834a86e612cc8b311dc6895e007f182f5c5b8 | Open-PR maintenance: superseded docs-link thread and clean main sync | Before: branch was behind current main with one outdated docs-link thread; its product tree already matched main. After: merged current main cleanly and verified the route-group-aware docs-link fix now covers legacy route references. RAG impact: no retrieval behaviour change — history sync and docs tooling verification only. | `node scripts/check-docs-links.mjs` pass (1154 references); clean merge-tree; no live RAG canary or provider-backed check run. | +| 2026-07-24 | `cursor/sidebar-six-item-land-cfa0` / PR #1174 content-proof `d97c11e6` | `d97c11e6` | #066 land/proof of six-item sidebar from `cd54e68f` onto main | PROVE — feature content landed; focused 20/20; verify:pr-local PASS; ensure spot-check PASS; verify:ui 267/267. Not merged to main. | vitest favourites+therapy; verify:pr-local; ensure+computerUse spot-check; verify:ui | +| 2026-07-24 | PR #1175 / `cursor/ledger-009-010-032-041-063-519b` | f3986abc39468e077643611ec2d95e374c2e901f | PR review + CI fix (ledger docs #009/#010/#032/#041/#063) | FINDINGS FIXED. P1: Static PR checks failed on Prettier (5 docs). P1: leftover `PR_POLICY_BODY.md` from merged #1134 caused Sync PR policy body to overwrite this docs PR description with search-performance text — deleted the stale template. No P0. Product scope remains docs-only; gated brief follow-ups (wire coming-soon, Current Clinical Work storage, Factsheets second mode, governance ranking) correctly not implemented. Residual: human approving review once CI green. | Local: prettier --check on touched docs; ledger open/resolved/queue integrity for five IDs; no client fetch(`/api/jobs`); `verify:cheap` earlier on tip 95d68c6b. No OpenAI/Supabase writes. | +| 2026-07-24 | PR #1178 / `cursor/local-presence-054-7cf3` | `c1b462a0d2db74b4a9e2f7136c33bf075ab52c7e` | Local presence #054 + Tools canonical #007 + CI remediation | FINDINGS FIXED. P1 Prettier on presence files formatted. P1 Safety audit postcss<=8.5.17 cleared by bumping to ^8.5.18/$postcss (8.5.23). P1 stale PR_POLICY_BODY.md removed so Sync PR policy no longer overwrites this PR with unrelated search-performance text. #007 implemented as `/tools` canonical (PT-11); `/?mode=tools` alias retained. No P0. Residual: hosted #054 secrets remain operator-owned. | Focused Vitest 70/70; verify:cheap 374/3326; npm audit high clean; check:local-presence ok. No hosted secret/provider mutations. | +| 2026-07-24 | PR #1178 / `cursor/local-presence-054-7cf3` | `162f64cfdb475262d5f8534313397c3e895457d4` | Local presence #054 + Tools canonical #007 + CI remediation (supersedes prior tip review) | Same findings fixed on tip including PR_POLICY_BODY.md deletion commit. No new high-confidence defects. Residual: hosted #054. | verify:cheap green on prior tip; tip adds leftover PR_POLICY_BODY removal + this ledger row. | +| 2026-07-24 | cursor/search-correctness-030-075-6273 (PR #1177) | 54ab9f8498751ef7e96815dd2496b8137f29dad7 | Review + follow-up hardening of #030/#075 search-correctness fixes | Findings fixed: (P2) one combo-titled source could still make multi-slot allHit true via substring alias hits — `expectedFileCoverage` now assigns each retrieved top-file to at most one expected slot; (P2) label pagination could loop forever on a stuck full-page API — fail-closed page budget added; (P2 process) stale `PR_POLICY_BODY.md` from search-performance leftover was overwriting this PR body via Sync PR policy body — corrected then deleted. No remaining high-confidence P0–P1 in product scope. Residual: human approving review; Unit coverage CI still finishing on later heads. RAG impact: no retrieval behaviour change — eval matching / label pagination only. | Focused Vitest 32/32; `verify:cheap` green; `verify:pr-local` green (lint/typecheck/3326 unit/build/client-bundle/offline RAG fixtures 36/36). No OpenAI/live Supabase/provider-backed canary. | +| 2026-07-24 | cursor/search-correctness-030-075-6273 (PR #1177) | 96ba6152c1f8e5e0000000000000000000000000 | Supersedes prior #1177 review row with post-sync tip | Same product outcome as prior row; tip includes correct PR_POLICY_BODY sync + template deletion so Sync PR policy body cannot reintroduce the stale search-performance description. | `npm run check:branch-review-ledger` pass; no provider-backed checks run. | +| 2026-07-24 | PR #1175 / `cursor/ledger-009-010-032-041-063-519b` | 15a5d080a375635ca6ef042659fe8837d485c8e3 | PR #1175 follow-up (description restore + template removal) | SUPERSEDES prior #1175 row on `f3986abc`. PR description restored via temporary `PR_POLICY_BODY.md` sync then file deleted again so merge will not reintroduce the #1134 leftover. Scope unchanged: docs-only ledger closeout. | Sync PR policy body SUCCESS with correct ledger summary; prettier clean on prior tip. Awaiting Static/Unit on final tip. No providers. | +| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | 283ad65377ee3e60ceb70f5cd01974caf0a54227 | Open-PR maintenance: keyboard overlay fallback | Before: fixed docks always consumed the measured visual-viewport height, double-lifting them when `interactive-widget=resizes-content` already resized the layout viewport. After: the provider subtracts layout shrink and exposes only residual overlay height to CSS while retaining keyboard-open state. | Focused Vitest 18/18 pass; `npm run ensure` verified http://localhost:3264; Prettier and diff checks pass; no provider-backed checks run. | +| 2026-07-24 | `main` / `01c209576207a3c279972697718d06c819fff000` | `01c209576207a3c279972697718d06c819fff000` | Sitewide design/UX/interactive review (production pages, breakpoints, a11y) | CHANGES REQUESTED / findings. No P0. Two confirmed P2 UX defects: (1) mobile presentation Compare tab is a self-link that drops `ids`/`q` and resets selection (1→default 4) + clears Query chip; (2) document “Browse by tag” / `searchByTag` navigates to `/?mode=documents&q=…` without `run=1`, so results do not run. P3: comparison disabled dropdown/filter controls lack `aria-describedby` placeholder contract; bare `/documents` 404 (no inbound links; `/documents/search` is canonical); phone mode-switcher truncates “Differenti…”. Deduped: `/tools` vs `/?mode=tools` remains #007; coming-soon density/favourites/forms remain #010. Phone docks flush `bottom:0` on sampled result routes; no document horizontal overflow at 390/768/1280 across 30 routes. | `npm run workflow:design-sweep -- --write-evidence`; `npm run ensure` → http://localhost:4461 identity Clinical KB; Playwright HTTP+overflow matrix 30/30 no overflow; live Compare/tag proofs + phone route matrix; `npm run test:e2e:accessibility` 12/12; screenshots under `/opt/cursor/artifacts/screenshots/design-review-2026-07-24/`. No OpenAI/Supabase/GitHub/hosted CI/provider mutations. Added project subagent `.cursor/agents/design-review.md`. | +| 2026-07-24 | PR #1176 / `cursor/pdf-crop-malformed-repro-9b3e` | `5391bf185cd5dffd00a31eb1d282ccfc93277a73` | #076 page-edge table crop geometry fix + fixture regression | APPROVE. No P0-P1. Fix is narrowly scoped to post-find_tables candidate extension from contiguous cell drawings; title/footer inflation avoided by ignoring text during geometry growth; incompleteness warning retained when content continues past the page. Highest residual risk: text-grid tables without cell drawings still will not edge-extend; left/right/top paths are symmetric but fixture-proven only for bottom. Broad PR #1129 retention/padding/storage changes remain out of scope. | Python page-edge + budget 6/6; Vitest pdf-extractor 3 passed / 1 skipped; offline only. | +| 2026-07-24 | PR #1176 / `cursor/pdf-crop-malformed-repro-9b3e` | `28c1e2352a7cabb9c73f52d5084ee69f47895c5e` | #076 page-edge table crop geometry fix (post-merge tip) | APPROVE (supersedes prior #1176 row for 5391bf18 after remote merge). No P0-P1. Same scoped drawing-based edge extension; residual: text-grid tables without drawings, and left/right/top only unit-symmetric. PR #1129 retention/padding still out of scope. | Re-ran Python page-edge + budget 6/6 and Vitest pdf-extractor 3/1 skipped after merge; offline only. | +| 2026-07-25 | codex/hydration-fixes (PR #1131) | 555213fcf4dec82c6dbb445630e59e0d5465149a | Open-PR maintenance: persisted-state hydration coverage | Before: the browser guard covered only an empty-storage dashboard load. After: it seeds theme localStorage plus cookie, sidebar state, and document-viewer PDF mode before navigation, while retaining the default case. | Repository Playwright runner built the isolated production app and passed 3/3 Chromium hydration scenarios; Prettier and diff checks pass; no provider-backed checks run. | +| 2026-07-24 | open-PR conflict sync (20 PRs) | multi-head | Conflict resolution pass | Before: 8 PRs behind/dirty (#1124 #1131 #1162 #1169 #1174-1177). After: merged origin/main into all; all 20 open PRs MERGEABLE behind=0 (BLOCKED only by CI/reviews). | merge origin/main per branch; no provider-backed checks run | +| 2026-07-24 | open-PR conflict sync (22 PRs) | multi-head | Conflict resolution pass | Before: all 22 open PRs behind/dirty vs main (several CONFLICTING/DIRTY). After: merged origin/main into every open head; all pushes OK; merge-tree classified 22/22 clean. | merge origin/main per branch; check:branch-review-ledger on #1172; no provider-backed checks run | +| 2026-07-24 | cursor/pr-queue-hygiene-72ec | pending-push | PR queue hygiene | Add pr-branch-sync workflow + sync:pr-branches helper; bump postcss to clear npm audit high; document anti-churn guidance in AGENTS/process-hardening/pr-babysit/run-pr. | check:github-actions PASS; docs:check-scripts/index PASS; vitest sync-open-pr-branches 3/3; npm audit high clean; no provider-backed checks run | +| 2026-07-25 | cursor/fix-mode-switch-lag-22f6 | 54d45f687e3723f51fa3d7e9940692c9a6e3b52c | Same-class bug hunt: mode-switch/layout thrash after reserve-flip fix | No P0. Branch fix mitigates pathname∧searchMode gate, shell changeMode optimistic setSearchMode, selectSearchMode leaving dashboard, and always-on padding-bottom transitions. Still open P2s: (1) ClinicalDashboard.crossModeSearch still setSearchMode before router.push without isDashboardModeHref guard; (2) dashboard-internal Answer↔/?mode=* still eager setSearchMode → overlay/collapse + heroBreakpoint + portal rebind; (3) standalone shell persists #main-content scrollTop + phoneScrollHide across mode homes; (4) ClinicalDashboard↔GlobalStandaloneSearchShellClient remount + grid-template-columns transition; (5) hero portal null gap while slot/MutationObserver rebinds; (6) ModeHomeRouteLoading phone min-h 13.5rem vs idle-reserve mode homes; (7) /tools vs /?mode=tools dual shell (#007). P3: services/forms contentAlign center→startOnPhone after registry load. | Static source audit of shell/dashboard/header/reserve/CSS/app-modes/skeletons; no browser/provider checks. | +| 2026-07-25 | `cursor/fix-mode-switch-lag-22f6` | `b9484396347defaaa934571604b9d165ae6d8b98` | Same-class mode-switch thrash review + fixes | FIXED prior open P2s from 54d45f68 hunt: crossModeSearch now mirrors selectSearchMode (navigate-only when leaving dashboard); shared shell resets phone scrollTop + scroll-hide on pathname; hero portal keeps default composer until host attaches; ModeHomeRouteLoading uses --shell-header-h; services/forms contentAlign stays startOnPhone while loading. No P0/P1. Residual P2: ClinicalDashboard↔standalone shell remount + sidebar grid-template-columns transition; dashboard-internal Answer↔Documents still eager setSearchMode (overlay/hero flip by design, scroll now reset). Residual P3/#007: /tools vs /?mode=tools dual entry. | Focused Vitest ownership/align/hide-on-scroll/merge-artifacts/overlay 46/46; typecheck; static contracts for portal/scroll reset/crossModeSearch. No verify:ui / provider-backed checks. | +| 2026-07-25 | `cursor/fix-mode-switch-lag-22f6` / PR #1187 | `775d15adef8155aba68e43f0e9354adf60f1ea8d` | Same-class thrash fixes lint closeout | Supersedes b9484396 row for lint follow-up: pathname bottomComposerHidden reset moved to render-time; removed unused desktopHomeComposerFallback. verify:cheap green. Residual unchanged (dashboard↔standalone remount; #007 Tools dual entry). | verify:cheap 3345 passed / 3 skipped; focused ownership tests; eslint clean on touched shell/header. No provider checks. | +| 2026-07-25 | `cursor/fix-mode-switch-lag-22f6` | `0ef62ff521fb9f0457f685e9d2f50a24d640e663` | Frontend-architecture review: loading/navigation performance for modes/pages | No P0. P1: (1) GlobalSearchShell statically imports ClinicalDashboard into shared (search-app) layout client graph — every namespaced mode pays dashboard module weight; (2) ClientHydrationBoundary blanks standalone mode children until hydrate — defeats RSC paint for DSM/factsheets/etc. P2: ClinicalDashboard↔standalone remount + grid-template-columns transition; dashboard URL sync still useEffect+rAF (shell already render-time); ToolsHub ssr:false on /?mode=tools; MutationObserver portal rebind cost on mode-home slot changes; SearchCommandProvider value tied to query in shell. P3/#007: /tools vs /?mode=tools dual entry (PT-11 vs nav). Quick wins: dynamic() ClinicalDashboard; remove/narrow ClientHydrationBoundary; point tools href to /tools. Larger: unify shells / extract shared chrome. | Static architecture review of SharedSearchAppShell/GlobalSearchShell/ClinicalDashboard/MasterSearchHeader/app-modes/search-route-ownership/mode homes/tools routes; prior mode-switch ledger rows at b9484396/775d15ad noted. No browser, verify:ui, bundle measure, or provider-backed checks. | +| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | pending | Babysit: ledger dedupe + merge readiness | Before: Static PR failed on exact duplicate ledger rows after main sync. After: removed duplicate rows; squash auto-merge armed. | check:branch-review-ledger PASS; no provider-backed checks run | +| 2026-07-25 | cursor/local-presence-054-7cf3 (PR #1178) | b438cd872286c831c6d9c8db49b017745f98abcc | Run PR sweep: CI fix + threads + drift | Before: GitHub reported DIRTY; Static PR checks found three stale `npm run check:local-presence` references because the implemented script was not registered; Production UI had one focus-restoration failure after 266 passes; 0 unresolved threads. After: merged current `origin/main` cleanly and registered the missing local script, so all 348 docs script references resolve. | `node scripts/check-docs-script-refs.mjs` pass; Prettier and `git diff --check` pass; focused Vitest/UI rerun deferred while another worktree owns the heavyweight lock; environment-reading presence mode and provider-backed checks not run. | +| 2026-07-25 | cursor/sidebar-six-item-land-cfa0 (PR #1174) | c44a5c536e43f300feb1b88892d0b2a8ca2c4feb | Run PR sweep: CI fix + threads + drift | Before: GitHub reported DIRTY and Static PR checks failed formatting `docs/outstanding-issues.md`; 0 unresolved threads. After: merged current `origin/main` cleanly and formatted the failing document. | Prettier check pass; `git diff --check` pass; no provider-backed checks run. | +| 2026-07-25 | cursor/pdf-crop-malformed-repro-9b3e (PR #1176) | c31543f5b5862dbe6911079029f28500a6af2a59 | Run PR sweep: CI fix + threads + drift | Before: GitHub reported DIRTY and Static PR checks failed formatting `docs/outstanding-issues.md` and `tests/pdf-extractor.test.ts`; 0 unresolved threads. After: merged current `origin/main` cleanly and formatted both failing files. | Prettier check pass; `git diff --check` pass; no provider-backed checks run. | +| 2026-07-25 | codex/search-results-filters-20260725 | 88131e7267efd33059766dec80355a9246fbb2bf | Search result filters and document Sources merge-readiness review | APPROVE. No P0-P2 finding after current-main sync. Documents open Sources as an on-screen filtering surface with source-type controls; the shared results ribbon is applied across search pages. Highest residual risk: unusual real-content combinations may alter perceived density, while responsive, forced-colors, focus, and overflow paths are browser-covered. RAG impact: no retrieval behaviour change - UI controls and source browsing only. | `npm run verify:ui` pass 268/268; `npm run verify:cheap` pass (377 files, 3340 passed, 1 skipped); post-sync `npm run verify:pr-local` pass (378 files, 3349 passed, 1 skipped, production build, bundle-secret scan, offline RAG fixtures); `npm run check:production-readiness` pass with OPENAI_SAFETY_IDENTIFIER_SECRET warning; no live/provider-backed app checks run. | +| 2026-07-25 | `codex/therapy-page-polish-ad78b4` | `157559aa0678f02de09c14f66d544b62a5138c4a` | Targeted release review: Therapy naming, centred navigation, and white canvas | APPROVE. No P0-P3 findings. The production Therapy route consistently uses the title Therapy, the shared page background token, and a centred overflow-safe section navigation. The latest `origin/main` merge was clean and retained both upstream responsive/home-composer assertions. Highest residual risk is visual drift at an untested browser engine; exact desktop and phone Chromium measurements were stable. | Focused Vitest 40/40; pre-sync `verify:cheap` 378 files / 3342 passed / 1 skipped; pre-sync `verify:ui` passed; integrated runtime, Prettier, lint, and typecheck passed; integrated Vitest was interrupted by the shared heavyweight-test queue after an independent 378-file / 3342-pass run. Required hosted checks must pass on the published exact head before merge. No clinical/provider workflow ran. | +| 2026-07-25 | codex/search-results-filters-20260725 (PR #1184) | 8f74d8bd40810ede34ad4b155973b598c1be0101 | Superseding merge-readiness review after Sources focus repair | APPROVE. Supersedes the 88131e72 row: the automated P2 showed a transient Daily Actions menu item could disconnect before Sources restored focus. Closing Sources now falls back after unmount to the currently rendered action trigger, and the regression requires the visible Documents trigger to own focus. No P0-P2 finding remains. RAG impact: no retrieval behaviour change - UI focus restoration only. | Post-fix isolated production Chromium 1/1; post-current-main local Chromium 1/1; `npm run verify:cheap` pass (378 files, 3350 passed, 1 skipped); targeted Prettier and ESLint pass; required hosted checks must rerun on the published exact head; no live clinical/provider workflow ran. | +| 2026-07-25 | `codex/mobile-search-filter-dropdowns-dcbb32` | `d9f0051ef8335817e7fa29aeb02ee6324331df39` | Release review: responsive search-result filter dropdowns across production modes | APPROVE with verification note. No P0-P2 finding. Phone result-type rails are replaced by page-specific native selects while desktop controls remain intact; shared controls own a real 44px interactive target and retain forced-colors/focus behavior. Highest residual risk is browser-specific native-select rendering outside Chromium. RAG impact: no retrieval behaviour change - result filtering and sort presentation only. | `npm run verify:cheap` pass twice (378 files, 3351 passed, 1 skipped); focused production Chromium routes and accessibility/stress guards pass; production `npm run build` and client-bundle secret scan pass; offline RAG fixtures 36/36 pass. `verify:pr-local` reached unit tests but local infrastructure tests timed out under heavy worktree contention; two remained timeout-only on focused retry. Required hosted checks must pass on the exact published head before merge. No live clinical/provider workflow ran. | +| 2026-07-25 | `cursor/fix-mode-switch-lag-22f6` / PR #1187 | `876d7ecfa1ae8ec79fc0f0bdf1198c6640ad89b8` | Parallel loading UX + frontend-architecture review + quick-win fixes | No P0. Confirmed live: H1 dashboard↔standalone remount dominant (~0.6–1.2s settle); H4 hero portal rebind; H3 registry post-paint. FIXED quick wins: remove ClientHydrationBoundary blanking; ModeHomeRouteLoading startOnPhone; mode-home loading.tsx alignment/additions; forms server defaultFormSlug + client-boundary test; dynamic ClinicalDashboard; sidebar grid transition mount-gate; forms drop key=query; DocumentViewer key=id; therapy Suspense ModeHomeRouteLoading; redirect /?mode=services\|forms. Residual P2: unify shells (H1), stable hero slot, registry abort+LRU/summary fields, Tools dual entry #007, prescribing full-catalogue cliff. | Parallel explore×3 + debug measurement; focused Vitest loading/forms/ownership/align contracts; typecheck; eslint touched shell. No verify:ui / provider-backed checks. | +| 2026-07-24 | PR #1142 / `fix-physics-animation-audit` | `880f2acf23f35a94c2e5245c2df586012bd6a350` | Spring physics animation audit remediation against main (globals.css + answer-evidence-popups mockup page) | APPROVE. No P0-P2 finding. Centralized spring dynamics tokens registered, generic ease timing replaced with --ease-out-soft and --ease-spring tokens, GPU compositing layer hints added to loading skeletons and bottom reserve pads, dynamic velocity duration supported for gesture keyframes, and reduced-motion presets added. Zero regression risk across design tokens or component interactions. | `node scripts/check-design-system-contract.mjs` passed (534 production files; 0 token violations); `npm run typecheck:internal` passed (0 TypeScript errors); Vitest `tests/route-reachability.test.ts` passed (5/5 tests). No OpenAI, Supabase, Railway, or provider-backed services called. | +| 2026-07-24 | fix-physics-animation-audit (PR #1142) | 67f1d7aee5f9f43295482b2a877c9cb691d774e6 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger auto-merge); pushed 67f1d7aee. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | fix-physics-animation-audit (PR #1142) | ff31b9417eca4e8726bd096fd9559b618b153181 | User-requested merge conflict resolution | Before: CONFLICTING/DIRTY vs main (behind after #1138 search-interactive-perf). After: merged origin/main with ort auto-merge (no conflict markers; ledger + search-perf files landed cleanly); pushed ff31b941. GitHub now MERGEABLE (BLOCKED only on branch-protection/CI). | merge origin/main only; no provider-backed checks run | +| 2026-07-24 | fix-physics-animation-audit (PR #1142) | 11776696ddaa4e3d41f395ea35c22075e3144e7e | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | +| 2026-07-25 | fix-physics-animation-audit (PR #1142) | bdfe81e15c57d376ff74ddb611a8959b0ae94cc9 | Open-PR maintenance: review fix + drift | Before: 24 commits behind and 1 unresolved P2 thread; CSS changed phone reserve timing without pinning the timing in static/phone-scroll coverage. After: current main is merged; static coverage pins 200/240ms transitions and the motion-enabled phone-scroll sweep asserts the active 200ms reserve transition before geometry checks. | Prettier check pass; `git diff --check` pass; focused Vitest/Playwright not run because repository heavyweight lock is owned by worktree 6314; hosted CI will exercise the updated tests; no provider-backed checks run. | +| 2026-07-25 | fix-physics-animation-audit (PR #1142) | c88c4516476cae3246e1975ce648dff0f3ecb3f7 | Ledger append-only placement fix | CORRECTION: relocated the five PR #1142-unique ledger rows that had been inserted below the table header / among older entries so they append after the final existing record, without rewriting any other rows' content. Restores the append-only contract called out in the Codex P1. | `npm run check:branch-review-ledger`; no provider-backed checks run | +| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | f4ae0a7217e513b893d14400fcfd49f31a3dd090 | PR babysit sweep: sync + threads + CI fix + squash merge | Before: CONFLICTING/DIRTY (stale), threads open, behind main. After: merged origin/main, resolved Codex/CodeRabbit threads, fixed document-viewer keyboard lift + baseline reset + Sources focus restore; Production UI green; squash-merged. | Hosted CI PR required SUCCESS on tip 761765a3f; focused vitest keyboard/overlay contracts. No provider-backed checks run. | +| 2026-07-25 | implement-audit-recommendations-fix (PR #1140) | f4ae0a7217e | Babysit sweep: viewport/keyboard audit ? squash-merged after CI green + thread triage | production-ui + pr-required | merged | +| 2026-07-25 | fix-physics-animation-audit (PR #1142) | e966b5aa972 | Babysit sweep: spring physics / reduced-motion ? auto-merged after main sync | pr-required | merged | +| 2026-07-25 | information-page-shell (PR #1148) | 5b9574af480 | Babysit sweep: unify information-page structure ? squash-merged | pr-required | merged | +| 2026-07-25 | mobile-ergonomics-fixes (PR #1156) | de1a82b4936 | Babysit sweep: mobile touch ergonomics ? squash-merged | pr-required | merged | +| 2026-07-25 | automated-audit-remediations (PR #1158) | aa745922f00 | Babysit sweep: automated audit remediations ? squash-merged | pr-required | merged | +| 2026-07-25 | cursor-indexing-ignore (PR #1171) | 3a4036580df | Babysit sweep: Cursor indexing ignore rules ? squash-merged | pr-required | merged | +| 2026-07-25 | cursor/ledger-009-010-032-041-063-519b (PR #1175) | 87b6b432c19 | Babysit sweep: close ledger #009/#010/#032/#041/#063 ? resolved outstanding-issues merge + prettier, squash-merged | static-pr + pr-required | merged | +| 2026-07-25 | canary-comparison-preflight (PR #1180) | 43f261cf229 | Babysit sweep: canary comparison preflight docs ? squash-merged | pr-required | merged | +| 2026-07-25 | sitewide-design-review-ledger (PR #1181) | 8284fcd4420 | Babysit sweep: design-review ledger ? auto-merged after sync | pr-required | merged | +| 2026-07-25 | codex/complete-all-pending-tasks (PR #1191) | e2488dbb108 | Babysit sweep: scoped-label pagination + order assertion for CodeRabbit thread ? squash-merged | unit + pr-required | merged | +| 2026-07-25 | implement-audit-recommendations-fix (PR #1140) | f4ae0a7217e | Babysit sweep: viewport/keyboard audit — squash-merged after CI green + thread triage | production-ui + pr-required | merged | +| 2026-07-25 | fix-physics-animation-audit (PR #1142) | e966b5aa972 | Babysit sweep: spring physics / reduced-motion — auto-merged after main sync | pr-required | merged | +| 2026-07-25 | information-page-shell (PR #1148) | 5b9574af480 | Babysit sweep: unify information-page structure — squash-merged | pr-required | merged | +| 2026-07-25 | mobile-ergonomics-fixes (PR #1156) | de1a82b4936 | Babysit sweep: mobile touch ergonomics — squash-merged | pr-required | merged | +| 2026-07-25 | automated-audit-remediations (PR #1158) | aa745922f00 | Babysit sweep: automated audit remediations — squash-merged | pr-required | merged | +| 2026-07-25 | cursor-indexing-ignore (PR #1171) | 3a4036580df | Babysit sweep: Cursor indexing ignore rules — squash-merged | pr-required | merged | +| 2026-07-25 | cursor/ledger-009-010-032-041-063-519b (PR #1175) | 87b6b432c19 | Babysit sweep: close ledger #009/#010/#032/#041/#063 — resolved outstanding-issues merge + prettier, squash-merged | static-pr + pr-required | merged | +| 2026-07-25 | canary-comparison-preflight (PR #1180) | 43f261cf229 | Babysit sweep: canary comparison preflight docs — squash-merged | pr-required | merged | +| 2026-07-25 | sitewide-design-review-ledger (PR #1181) | 8284fcd4420 | Babysit sweep: design-review ledger — auto-merged after sync | pr-required | merged | +| 2026-07-25 | codex/complete-all-pending-tasks (PR #1191) | e2488dbb108 | Babysit sweep: scoped-label pagination + order assertion for CodeRabbit thread — squash-merged | unit + pr-required | merged | +| 2026-07-25 | open-pr-babysit-sweep-20260725 | multipass | Babysit continuation: approved action_required workflows; Sources autofocus fix on #1141; ledger dedupe #1157; outstanding-issues merges #1175/#1177; skipped non-trivial conflict clusters #1162/#1185-1190/#1187 draft | gh checks + merge-tree | in-progress | +| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | f4ae0a7217e513b893d14400fcfd49f31a3dd090 | PR babysit sweep: sync + threads + CI fix + squash merge | Before: CONFLICTING/DIRTY (stale), threads open, behind main. After: merged origin/main, resolved Codex/CodeRabbit threads, fixed document-viewer keyboard lift + baseline reset + Sources focus restore; Production UI green; squash-merged. prlanded content-diff empty. | Hosted CI PR required SUCCESS on tip 761765a3f; focused vitest keyboard/overlay contracts. No provider-backed checks run. | +| 2026-07-25 | cursor/canary-artifact-comparison-8e05 (PR #1180) | 618d8640fa528de4a94b0d3e2599bcfe0df3f6f5 | PR babysit: retrigger required CI | Empty sync after main advanced; no product change. | No provider-backed checks. | +| 2026-07-25 | cursor/codebase-indexing-optimize-7a2b (PR #1171) | 37a534fb4b89ba504bec00f4c91932a251f0739a | PR babysit: retrigger required CI | Empty sync after main advanced; no product change. | No provider-backed checks. | +| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | f4ae0a7217e513b893d14400fcfd49f31a3dd090 | PR babysit sweep + squash merge | Merged after sync/threads/CI fixes (keyboard lift, baseline reset, Sources focus). prlanded content empty. | Hosted PR required SUCCESS. No provider-backed checks. | +| 2026-07-25 | cursor/codebase-indexing-optimize-7a2b (PR #1171) | 3a4036580df1f7701b600df26d368b66bcfc3251 | PR babysit sweep + squash merge | Retriggered CI via ledger note; squash-merged when PR required green. | Hosted PR required SUCCESS. No provider-backed checks. | +| 2026-07-25 | cursor/canary-artifact-comparison-8e05 (PR #1180) | 43f261cf229cbc0baf7e289bdbc3e5a534161543 | PR babysit sweep + squash merge | Synced main after #1171; squash-merged. | Hosted PR required SUCCESS. No provider-backed checks. | +| 2026-07-25 | codex/audit-remediation-final (PR #1158) | aa745922f00 | PR babysit sweep + squash merge | Synced main; auto-merge completed. | Hosted CI green. No provider-backed checks. | +| 2026-07-25 | cursor/sidebar-six-item-land-cfa0 (PR #1174) | pending-merge | CORRECTION: clarify sync vs product merge for the d97c11e6 content-proof row | The earlier "from `cd54e68f` onto main" / "merged onto current main" wording meant the feature branch was synchronized with `origin/main` (main merged into the feature branch); the six-item sidebar product change is not yet on `main` until this PR merges. Date 2026-07-25 on the c44a5c53 sweep row is the actual execution date (not future-dated). | CodeRabbit threads on ledger/OI wording; no provider-backed checks run. | +| 2026-07-25 | cursor/search-correctness-030-075-6273 (PR #1177) | 4138c0dd9ac0096787af47f7d86a9adc390eeb44 | PR babysit sweep + squash merge | Before: CONFLICTING on outstanding-issues + search-scope vs #1191; PR policy missing RAG/clinical checklist. After: kept loadScopeLabels batching, closed #030/#075, fixed PR body; squash-merged. | pr-required + PR policy + Gitleaks; focused search-scope/eval tests; no provider-backed checks. | +| 2026-07-25 | open-pr-babysit-continuation-20260725 | multipass | (recorded with Outcome) | Babysit continuation after 14 merges: #1177 landed; #1174/#1178/#1153 in progress; drafts #1187/#1192 skipped; large cluster #1162/#1185/#1186/#1188/#1190 content-conflicted (skip). | merge-tree inventory; no provider-backed checks. | +| 2026-07-25 | audit-remediation (PR #1153) | 5a731df5c25fed9b07fd2321a0ad4b6519471f4b | PR babysit: CodeRabbit thread fixes + merge | Before: MERGEABLE/BLOCKED on required_review_thread_resolution + pending CI; 6 CodeRabbit threads. After: fixed sync-skills pad/YAML escape, PDF temp cleanup, squash-aware rollback wording; dispositioned ledger mid-table + retained false-positive; approved CI; merged to main `191b17d2f` (merge commit); branch deleted; tip is ancestor of main. | Hosted CI green on tip; no provider-backed checks. | +| 2026-07-25 | cursor/local-presence-054-7cf3 (PR #1178) | 9135891bfd194394549cb480a7ec86de12b23ee7 | PR babysit: local-presence + /tools + CI/UI fixes + squash merge | Before: flaky Safety audit on package.json scripts, Production UI Sources autofocus flake, CodeRabbit short-env duplicate thread. After: ci-change-scope lockfile-only; strip stale short env keys; sheet open-focus retries + skip focus=1 reclaim under modal; squash-merged `d08ec2e8e`; branch deleted; key-file content-diff empty. | Hosted PR required SUCCESS (Production UI green on tip); focused local-presence vitest; no provider-backed checks. | +| 2026-07-25 | PR #1185 / `execute-typography-audit-fixes` | `dd641579f4cf54f82de89ef268ac8aa6acb439b5` | Fresh Cursor review + Bugbot + prlanded | DO NOT MERGE / CLOSE+REDO. Confirms prior ledger: intentional tip commit is safe typography-only (5 files), but branch tree still carries committed conflict markers from `faa50e6e3` (answer/upload routes, docs, tests) so the PR cannot build. Codex P1 markers + upload publisher spoof + P2 mobile back regression are real on that dirty tree. `prlanded`: not merged (`state=OPEN`, `mergedAt=null`). Replacement: cherry-pick tip onto current main as `cursor/typography-audit-fixes-1c1e`. | Bugbot on PR head; `git show` of tip; marker scan; `git merge-tree`/diff vs main. No provider calls. Hosted PR policy FAIL. | +| 2026-07-25 | `cursor/typography-audit-fixes-1c1e` (supersedes #1185) | pending-push | Clean cherry-pick of typography audit tip onto `origin/main` | APPROVE-ready local. Scope is only font-stack + mockup heading/truncation/tabular-nums. No conflict markers. Highest residual risk: visual-only mockup/CSS change; unrelated Vitest flakes seen locally (pdf-extractor SIGKILL, reconciliation-preflight timeout) not tied to this delta. | `npm run verify:cheap`: lint+typecheck+static gates pass; Vitest 3379 pass / 2 env flakes. No provider/UI matrix. | +| 2026-07-25 | `cursor/typography-audit-fixes-1c1e` (supersedes #1185) | `c78271bae02ddf82792bb0625f479483240e76b8` | Clean cherry-pick published | APPROVE-ready. Published replacement for contaminated #1185; 5-file typography delta + format + ledger. | Local `verify:cheap` as above; pushed to origin. | +| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `6bc05690a966e3e8aebdc8ea0460b60899201c52` | Explicit merge-readiness review (typography supersede of #1185) | NOT READY. Clean 5-file product delta vs main (font-stack + mockups). Confirmed P2: answer-evidence sheet/modal titles promoted h3->h2 while nested under Section h2 (hierarchy regression). P2 process: PR body describes unrelated audit-remediation work. Process blockers: draft; tip CI/SAST/Secret Scan `action_required` (green only on older `3cc6fa0cd`). No P0/P1 product defects. Font-stack/min-w-0/tabular-nums OK. | `origin/main...HEAD` 6 files; merge-tree clean; marker scan clean; no provider/UI matrix. | +| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | pending-push | Follow-up perfection pass | FIXED: reverted nested mockup titles to `h3` under Section `h2`; restored correct `PR_POLICY_BODY.md` after stale overwrite; remaining product delta is font-stack + recent-search `min-w-0` + bedside `leading-tight` drop + clinical-console `tabular-nums` + ledger. | Heading hierarchy re-check; Prettier check on touched files. | +| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `e7d93cddd75a71a4d7c4deff48e0038c98f6706f` | Follow-up perfection published | APPROVE once tip CI green. Heading hierarchy fixed; correct policy body template on branch; product scope reduced to 4 source files + ledger/template. | Prettier check; pushed tip. | +| 2026-07-25 | cursor/fix-mobile-composer-edge-scroll-5b1d (PR #1192) | 3b5ef43f1825dd8cf11dd767069569ba1c701c45 | Bugbot branch review: mobile Answer edge dock, synchronized hide/reveal, focus safety, reserve-collapse and fractional-clamp safeguards | No bugs found. Highest residual risk is physical iOS Safari toolbar/visual-viewport behavior beyond Chromium emulation. | `npm run verify:cheap` (3,357 passed); `npm run verify:ui` (272 passed); focused clamp/reserve Vitest (28 passed); focused production Chromium regression passed; clean headed-phone video proof; no provider-backed checks run. | +| 2026-07-25 | cursor/fix-mobile-composer-edge-scroll-5b1d (PR #1192) | 69dc0dbfb46586f54f5934199d4a65b9f6a0aba8 | User-requested Bugbot review of current PR head after geometry-aware clamp handling and CI formatting fix | No bugs found. | Bugbot branch review; prior focused unit/Chromium/manual proofs retained; no provider-backed checks run. | +| 2026-07-25 | cursor/fix-mobile-composer-edge-scroll-5b1d (PR #1192) | c08ed37c5e8c7b62cf7d547089afff7a63c9122c | Live local document-detail scroll/ownership review at 390x844, 768x1024, and 1440x900 | FINDINGS: P2 canonical phone detail renders shared mobile header plus DocumentViewer header; P2 expanded desktop sticky rail scrolls its section navigation off-screen; P3 390px in-flow section nav fully hides Images with no overflow cue. Composer focus pinning, actions sheet, endpoint clearance, safe-area gap, and single composer/content reserve ownership otherwise held. | `npm run workflow:design-sweep -- --write-evidence`; `npm run ensure` + `/api/local-project-id` identity; live local Chromium natural down/up, anchors, focus, sheet, endpoint and geometry probes; focused document-viewer Playwright 3/3; reduced-motion + forced-colors visibility at 390/1440; no OpenAI/Supabase/GitHub/hosted CI/provider calls. | +| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `5b5ecf4057b54f1b689935f8cb876a2ed1cbdb3a` | Bugbot triage after 0c2b60a REQUEST CHANGES: verify prior P1/P2 on 8b812b116 and fix remaining defects | P1 confirmed: `composerChromeFocused` still latched after phone dock teardown (`shouldAutoFocusComposer` only covers answer autofocus). Fixed by clearing focus pins when dock inactive / hide-on-scroll disabled. P2 confirmed: reserve-only hide gate still ignored offset (118/191 material-clamp frames); fixed with `offset <= postCollapseMaxOffset + tol`. Compact answer hide retained; material clamps ? 0. Prior autofocus/retainTarget mitigations kept. | Node stress before/after; vitest use-hide-on-scroll + mobile-composer-reserve 28/28; no provider/UI browser matrix. | +| 2026-07-25 | cursor/search-correctness-030-075-6273 (PR #1177) | 96ba61520aeea59647dcaec6671ccb82618553ef | CORRECTION: real SHA for the 2026-07-24 post-sync #1177 row | That row recorded `96ba6152c1f8e5e0000000000000000000000000`, a zero-padded placeholder that resolves to no Git object. The real commit is `96ba61520aeea59647dcaec6671ccb82618553ef` ("ci: remove PR_POLICY_BODY.md after sync"); the reviewed outcome itself is unchanged. | `git rev-parse` verification; `npm run check:branch-review-ledger` pass; no provider-backed checks run. | +| 2026-07-25 | cursor/eval-matching-distinct-identity-6273 | f5620e3a4a2d60fd8a67fd43d8046726f1761e5f | Self-review of the merged #030/#075 fixes against current main | Before: merged coverage matched expectations to distinct source _positions_, so one document repeated across `answer.citations` still filled both comparison slots, and first-come assignment made `allHit` depend on `expectedFiles` order; `PR_POLICY_BODY.md` was back on main (via #1153) ready to overwrite the next PR body; the #030/#075 queue row survived their archival. After: coverage dedupes by document text and assigns by maximum bipartite matching, label accumulation is linear, the stale template is removed, and #080 records the removed admission widening for approved eval re-test. Both new contracts were verified failing against main's matcher before the fix. RAG impact: no retrieval behaviour change — eval matching and label bookkeeping only. | Focused Vitest 39/39 (eval-document-matching, eval-utils, eval-search, search-scope, rag-imputation-contract); fail-closed proof 2 failed on the `origin/main` matcher; `npm run verify:cheap` pass (3379 passed, 5 skipped); `check:branch-review-ledger` and `check:pr-policy` pass; no OpenAI/Supabase/provider-backed checks run. | +| 2026-07-25 | execute-audit-code-remediation (PR #1162) | d5455837231f5cb6a927e8c4752ef5aa9c72767c | Merge conflict + CI + Bugbot review | Merged origin/main (164 behind). Fixed conflicts in ClinicalDashboard/global-search-shell/mode-home/search-scope/tests/pdf extractor. Renamed duplicate migration 20260724120000→20260724130200. CI: skills openai.yaml, owner-scope setup-status exemption, sitemap, drift hash, answer-render duplicate key, setup-status mock `.eq`. Bugbot: fixed Codex P1 view-only indexing + P2 differential back; also fixed P2 viewer visibility for retained images and duplicate-upload cleanup ledger fail-closed. | Focused Vitest (back-href/worker/skills/setup-status/owner-scope/drift/sitemap/search-scope/favourites/forms/therapy/document-detail/upload-ledger) + typecheck + check:skills/migration-role/sitemap; no provider-backed checks. | +| 2026-07-25 | execute-audit-code-remediation (PR #1162) | f07c711a0e1ee853b128733a51db182d8192c3c4 | CI unblock after Bugbot | Fixed Prettier (11 files), restored package-lock/.npmrc to main so blocking npm audit is advisory (lockfile_changed=false), updated mobile-composer-reserve contract for answer-home hero breakpoint. Prior tip e5c8c49c had Static/Safety/Unit failures. | format:check; focused Vitest 41; ci-change-scope lockfile_changed=false; no provider-backed checks. | +| 2026-07-25 | execute-audit-code-remediation (PR #1162) | 1de1b32f562c0a972997750a5dc97a02ab1a9c15 | Production UI fix | Fixed ui-tools services referral header test (H1/quick-filters contract). Prior tip 09c6eb2d had Static/Safety/Unit/Migration green; only Production UI failed. | Local Playwright chromium services referral test PASS; no provider-backed checks. | +| 2026-07-25 | execute-audit-code-remediation (PR #1162) | b9b56c140eb14cbba5a2c2230e3fa28d3a791add | CI unblock after bot sync | Tip 96188eca had PR required SUCCESS (Static/Safety/Unit/Build/Migration/Production UI). Hosted pr-branch-sync then merged main (a420b86b/b9b56c14), leaving CI action_required for bot-authored runs. Pushing agent commit to re-trigger non-bot CI. | Prior tip 96188eca hosted CI green; local services referral Playwright PASS; no provider-backed checks. | +| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `80421c38c54c5960bf51210d6bc29109b52afb53` | Main sync after CONFLICTING + perfection | MERGE-READY product scope. Merged `origin/main` cleanly; no markers; product delta remains font-stack + 3 mockup tweaks + policy body/ledger. Heading hierarchy fix retained. | merge-tree clean; marker scan clean; type-scale + design-system-contract + Prettier pass. | +| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | pending-push | Production UI flake fix | FIXED reproducible Sources Find autofocus: Sheet open retries now upgrade from close-button fallback to late-mounted `data-sheet-autofocus` (was leaving focus on Close after drawer children mount). Typography product delta unchanged. Removed temporary `PR_POLICY_BODY.md`. | `node scripts/run-vitest.mjs run tests/sheet.dom.test.tsx` 5/5. | +| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `7a94877745c652b7bb7144cf9be02a22a9a0dbdf` | Autofocus fix published | Awaiting exact-head Production UI green. | Sheet DOM 5/5; pushed. | +| 2026-07-25 | `cursor/ledger-066-067-519b` | f04392a408eceee14215c15169cbd6b70ac2041c | Close stale ledger #066/#067 (+ drop resolved #030/#075 from queue) | READY. #066 proven on main via #1174; #067 already fixed in #1191 in-process preflight. Docs-only ledger sync; no code change. | Local proof: `git show`/`log` for #1174/#1191; preflight test already in-process on main; ledger integrity asserts. No providers. | +| 2026-07-25 | PR #1196 / codex/fix-p2-audit-20260719 | 6d59b038514a92566e986d302b0c75707f13ea30 | fresh bug/regression review + Bugbot (clinical/RAG/search/auth/privacy) | Changes requested. Not merge-ready. No P0. P1: search/embedding last-waiter abort leaves dying inflight map entry so healthy same-key retry can coalesce onto aborted work (HTTP 500 / AbortError); also present on main — fixed forward in cursor/pr1196-coalesce-main-4711 / PR #1212. P2: fractional PDF render dimensions rejected by Number.isSafeInteger(pixels), aborting JS fallback — also fixed in #1212. Cleared after inspection: public storage_path omission, document chunk UUID fail-closed schema, factsheet save persistence, therapy capability flags, extractive section-dedup exemption, auth definitive-vs-retryable handling. Blockers: GitHub mergeable CONFLICTING; ~680 commits behind main; ~23 content conflicts including openai.ts, rag.ts, semantic-rerank, supabase client, package.json, therapies-index. PR body RAG impact understates clinical-search / answer-ranking / retrieval-variant edits. prlanded: state OPEN, not merged. | Bugbot + offline static/diff review + pure-JS race/fractional-pixel proofs; focused Vitest on #1212 fix (163 passed). Full PR #1196 Vitest/UI not re-run on stale tip. No OpenAI/Supabase/provider writes. Hosted CI for #1196 only showed PR policy pass + GitGuardian fail; required suite not green on this head. | +| 2026-07-25 | cursor/pr1196-coalesce-main-4711 / PR #1212 | fbe4f46ee | fix-forward from #1196 review: coalesce poison + fractional PDF pixels | Immediate map delete on last-waiter abort for search/embedding coalescing; ceil fractional render dims before safe-integer pixel budget. Regression tests + repro script. | Vitest openai-cache + pdf-extraction-budget + private-access-routes: 163 passed; node repro script. No provider-backed checks. | +| 2026-07-25 | PR #1196 / codex/fix-p2-audit-20260719 | 6d59b038514a92566e986d302b0c75707f13ea30 | closeout: superseded by #913 / current main | CLOSED without merge. Content proof: tip ~680 behind, CONFLICTING; remediation family already on main via #913 (01040d2c). Tip would regress docs admin gate, factsheet governance, PDF/RAG/auth advances. Live residual coalesce/PDF bugs fixed-forward in PR #1212. Remote branch retained (no delete). | Content diff vs origin/main + #913 path overlap; no provider-backed checks; no branch delete. | +| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `5e22eb4c4c7f717f94e32b545f31c0d0f6374a96` | Final merge-readiness after perfection | APPROVE / MERGE-READY. Product: typography delta + Sheet late-autofocus upgrade. Hosted tip green: PR policy, Static, Unit, Build, Safety, Production UI, PR required, SAST, Secret Scan. mergeStateStatus CLEAN. Residual: human approving review if branch protection requires it. | Hosted CI success on `5e22eb4c4c7f717f94e32b545f31c0d0f6374a96`; Sheet DOM 5/5; no provider-backed evals. | +| 2026-07-25 | PR supersede #1186 / `cursor/pr1186-audit-remediation-c94c` | `a38e83860510a4229d5658960657cd7448aff278` | Clean main-based port of intentional #1186 audit fixes | SUPERSEDE #1186 (do not merge old PR). Ported intentional 16-file delta onto current main; dropped conflicted checkpoint tree and placeholder skills. Fixed eval single results binding; async run-heavy so lock heartbeat fires; branch:cleanup dry-run default + argv-safe deletes; skill-create interface YAML. Close #1186. | Focused Vitest tooling+lock 6/6; check:skills 33; prettier on touched files; no provider/live eval runs. | +| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | pending-push | CORRECTION: remove exact-duplicate ledger row | Removed a merge-union exact duplicate of the `cursor/ledger-066-067-519b` / `f04392a40` READY row (kept the earlier copy). No product change. | `npm run check:branch-review-ledger` | +| 2026-07-25 | PR #1190 / `remediate-dark-mode-audit` | `00eca49b9b0d7e5fbfa5703a15e9e930963984a6` | Cursor review+Bugbot+prlanded+debug (fresh pass, same HEAD) | DO NOT MERGE; NOT LANDED (OPEN, mergeable=CONFLICTING/DIRTY, 468 behind / 2 ahead). Reconfirmed P0: conflict resolution deleted `trustGatedAnswerForClinicalNotes` (0 hits on head; main L584/632/659/1075) — Clinical Notes consumes ungated answer. P1: `src/app/api/answer/route.ts:6` imports nonexistent `@/lib/rag` (tsc TS2307; stream correctly uses `@/lib/rag/rag`). P1: merge-tree conflicts on answer/upload/evidence-panels + 10 paths; literal `<<<<<<<` in docs audit plan; migration timestamp collision risk vs main. Intentional dark-mode delta is only commit `363672602` (~10 files). Salvage: `cursor/pr1190-dark-mode-salvage-f453` cherry-picks that commit onto current main, restores unused-manifest-import cleanup, keeps clinical gate. Close #1190 after salvage lands. | Bugbot; `git grep` gate/import/markers; merge-tree; `tsc` TS2307 proof; gh pr view/checks (PR policy fail). Salvage: tsc clean; visual-evidence+overlay tests 13/13; eslint on changed files. No provider/UI matrix. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `f3d90eccf78a5e8c6569c0889d1932230588f1d2` | Bugbot triage of asset-optimization PR (supersedes d63682c7 READY row) | NOT READY previously: tip carried committed conflict markers from dirty checkpoint `faa50e6e` (answer/upload routes, services UI, tests), was DIRTY vs main, and GitHub three-dot showed ~117 polluted files. Fixed: merged `origin/main`; removed SignedImage client transform rewrite (undeclared width/height/resize + max-h-52 heuristic on object/sign URLs = silent no-op/risk); replaced mutating non-recursive `svgo -f` check:assets with `scripts/check-assets.mjs` stability gate; multipass-optimized `src/app/icon.svg`; added signed-image regression test. | merge-tree + tsc conflict-marker scan; `vitest run tests/signed-image.dom.test.tsx` (4 pass); `npm run check:assets` OK. No provider-backed checks. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `8888bf87cbdc5a061bb6d3a2cf46b638af773b1b` | Cursor review+Bugbot+/debug (supersedes f3d90ecc Bugbot row) | CONDITIONAL READY after favicon fix. Prior tip DO NOT MERGE (conflict-marker pollution) cleared by Bugbot main-merge; SignedImage transform silent no-op removed; check:assets now compare-only. Remaining P1 found+fixed: SVGO-stripped `icon.svg` failed `brand:check` and removed dark-mode favicon styles — restored `brandIconSvg()` and excluded that file from SVGO gate. Residual P2: orphan AVIF/WebP binaries unused by demo/mockup PNG refs; year-long immutable Cache-Control on unversioned `/icons/*`; `minimumCacheTTL: 86400` still a long lower bound for any optimized next/image. NOT LANDED (OPEN). | Bugbot; marker scan clean; brand:check + check:assets PASS; signed-image vitest 7/7; hosted Static/Safety were red on pre-fix tip (brand:check). No provider-backed app checks. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `fc0afee8324561e7937be43b6346e260cafd00a4` | Cursor /debug CI follow-up after favicon fix | Static PR still red: knip unlisted `sharp` from `optimize-public-images.mjs` (was overrides-only). Declared `sharp@0.35.3` dependency. | `npm run check:knip` PASS locally after declare. No provider-backed checks. | +| 2026-07-25 | execute-audit-remediation-plan (PR #1188) | 8b8639113925601e1687bfe4f1f29c44a4308b61 | Bugbot/diff-review: maintainability remediation tip | BLOCK: tip tree carries unresolved conflict markers (answer/upload APIs, clinical-dashboard, services, tests); invalid `async export function sha256Hex` in indexing-v3 utils; ClinicalDashboard still calls removed `renderSystemNotice`; merge-tree vs main conflicts in check-github-action-pins.mjs + ui-primitives.tsx. Intended notices extraction/dynamic imports look mostly sound; search-scope/migration not in three-dot product delta. | `git grep` conflict markers on tip (none on origin/main); `git show` for ClinicalDashboard:3824 + utils.ts:191; `git merge-tree --write-tree origin/main 8b8639113`; no provider-backed checks. | +| 2026-07-25 | PR #1209 / `cursor/pr1186-audit-remediation-c94c` | `4cb22e45dfe46b1975fa15ddd028c7e14ceb5fab` | Close #1186 + babysit #1209 CI | DONE. Closed #1186 as superseded. Synced origin/main (MERGEABLE/CLEAN). Fixed PR-policy RAG impact line. Hosted PR required SUCCESS (Static/Safety/Unit/Build/Production UI/Advisory UI/containers) on pre-ledger tip; docs-only follow-up pushed. Ready to merge; auto-merge not enabled. | gh pr checks; local policy ok; no provider/eval runs. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | 963a9a0b4acb40659118eb1160712c0b99ab8bb1 | Cursor /debug CI unblock | Dropped svgo/sharp/check:assets lockfile delta (exceljs brace-expansion highs become blocking when lockfile_changed). Kept runtime asset fixes + themed favicon. Orphan AVIF/WebP remain unused. | brand:check/knip/prettier/signed-image vitest local PASS; no provider checks. | +| 2026-07-25 | `cursor/fix-mobile-composer-edge-scroll-5b1d` (PR #1192) | 333e67b8 | pr-ci-fix: Static PR checks / Maintainability hotspot budgets | Main merge (e688c6e2) expanded a JSX comment from 2→3 lines while restructuring heroComposerBreakpoint/heroOwnsPhoneComposer declarations, netting +2 lines vs budget-fix commit (ae77f8c3). ClinicalDashboard.tsx hit 4141 vs 4140 budget. Fix: compressed 3-line comment back to 2 lines. Zero behaviour change. | `npm run check:maintainability-budgets` → PASS (4140/4140). No provider-backed checks. | +| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `70abb74f7ceee5a50748c4c1e6baa730d7225cf4` | User-requested /review + Bugbot + /debug + /prlanded on current tip | APPROVE with notes. Prior P1 focus latch and P2 near-bottom reserve-only clamp confirmed fixed on `5b5ecf405` and retained through main merge. No new P0/P1. Residual P2s: PR body was wrong audit-remediation paste (fixing); non-answer `focus=1` autofocus still broad; earlier document-detail double-header findings unchanged/out of Answer-dock scope. /prlanded: still OPEN, not merged. GitHub CONFLICTING was staleness (merge-tree clean) — merged origin/main. | Bugbot; focused Vitest use-hide-on-scroll + mobile-composer-reserve 28/28 before and after main merge; merge-tree clean; no provider/UI browser matrix this pass. | +| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `73e87da63f5a9eca4162534074755891f952a4ee` | CORRECTION/supersede: final head after Bugbot fixes + main sync + review ledger push | APPROVE with notes retained from prior row. Product fixes from `5b5ecf405` still present; branch now 0 behind / mergeable (BLOCKED on CI). Wrong audit-remediation PR body corrected. /prlanded: still OPEN — do not delete branch. | Focused Vitest 28/28 on pre-sync tip; merge-tree clean; CI re-queued on tip; no provider-backed checks. | +| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `477ec929` | pr-ci-fix: Static PR checks / ESLint react-hooks/set-state-in-effect | Two `useEffect` blocks in `master-search-header.tsx` called setState synchronously (lines 383-392). Fix: moved `heroComposerOwnsPhones`, `phoneBottomSearchDockActive`, `hideOnScrollEnabled` before `sharedChromePinned`; gated focus pins at consumer; removed both effects. Net -12 lines, budget OK (4133/4140). | ESLint on file: 0 errors; `npm run typecheck`: clean; `prettier --check`: clean; `check:maintainability-budgets`: PASS. No provider-backed checks. | +| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `b200d37af9bd6a93589e7984a7cb9c23164079f0` | Apply recommended review fixes after /review+/bugbot | Fixed Static CI eslint set-state-in-effect on latch clear (derive pins + queueMicrotask). Fixed residual P2: suppress `focus=1` autofocus after any `modeSearchSubmitted` and on `run=1` bootstrap. Prior P1/P2 chrome fixes retained. | eslint master-search-header+ClinicalDashboard; maintainability 4137/4140; vitest use-hide-on-scroll+mobile-composer-reserve 28/28; no provider-backed checks. | +| 2026-07-25 | PR #1188 / `execute-audit-remediation-plan` | `8b8639113925601e1687bfe4f1f29c44a4308b61` | Explicit Bugbot + protocol review (+ /prlanded + /debug) | DO NOT MERGE tip. Not landed (state OPEN, mergeable CONFLICTING, 468 behind main). P0: ClinicalDashboard orphaned import body (parse break). P0: dangling `renderSystemNotice` after helper extraction. P0: `indexing-v3-agent/utils.ts` `async export function sha256Hex`. P0/P1: `CLINICAL_PHRASE_PATTERN` left in index.ts but used from utils. P0: ~12 files still contain conflict markers from archive base `faa50e6`. P1: PR policy missing Clinical Governance Preflight. P2: notice visibility dropped `answer` gate + `hidden sm:block`. IMP-04 prune unsafe vs current main (still-exported symbols in use). Clean rebuild of intentional remediation on main: `cursor/pr1188-fix-build-breakers-6ee0`. | Bugbot subagent; `git show`/marker scan; esbuild parse of tip utils; `gh pr view/checks`; typecheck + check:github-actions on fix branch. No provider calls. | +| 2026-07-25 | `cursor/pr1188-fix-build-breakers-6ee0` (PR #1213) | `183291a1f892489218b3d6b6c8a04966cdadd1e3` | Clean rebuild of intentional #1188 remediation on main | READY for review. Ports notice extraction + admin lazy-load + indexing-v3 utils extraction without the dirty archive base / conflict markers / syntax breakers from #1188 tip `8b86391`. Preserves system-notice answer gate + responsive visibility. Recommend close #1188 after this merges. | typecheck; check:github-actions; check:branch-review-ledger; prettier; esbuild utils parse. No provider calls. | +| 2026-07-25 | PR #1188 / `execute-audit-remediation-plan` + replacement PR #1213 / `cursor/pr1188-fix-build-breakers-6ee0` | tip `8b8639113925601e1687bfe4f1f29c44a4308b61` (broken); rebuild `fd67d6bf3` | Cursor Bugbot+/review+/prlanded+/debug (fresh pass) | DO NOT MERGE #1188; NOT LANDED (OPEN, CONFLICTING/DIRTY, 469 behind). Runtime-proof P0s: tsc TS1185 conflict markers in answer/upload/answer-status/etc; ClinicalDashboard orphaned import body; dangling `renderSystemNotice`; `async export function sha256Hex`. PR policy FAIL (missing Clinical Governance Preflight). Intentional ~11-file delta rebuild is PR #1213 on clean main (tsc/eslint/pins green). Close #1188 after #1213. | Bugbot; isolated worktree tsc on tip; gh pr view/checks; fix-branch tsc+eslint+pins+16 Vitest. No provider/UI matrix. | +| 2026-07-25 | PR #1188 / `execute-audit-remediation-plan` | `8b8639113925601e1687bfe4f1f29c44a4308b61` | prlanded + close as superseded | CLOSED (not merged). Content never landed; tip remained CONFLICTING with P0 build breakers. Superseded by PR #1213 (`cursor/pr1188-fix-build-breakers-6ee0`). | Final P0 scan on #1213 tip clean; focused Vitest 16/16; node --check utils; check:github-actions. Closed via ManagePullRequest with supersession comment. | +| 2026-07-25 | PR #1213 / `cursor/pr1188-fix-build-breakers-6ee0` | `64b13fba5d8c7c97dac553d02a8dd4c2b5522e1e` | Safe land handoff after #1188 close | #1188 CLOSED superseded. Tip was bot-merge-only so hosted CI sat in action_required; pushing agent commit to re-trigger non-bot CI before squash-merge to main. merge-tree clean vs main; intentional rebuild (notices/lazy/utils) intact. | gh run list action_required on bot tip; merge-tree clean; no provider calls. | +| 2026-07-25 | cursor/pr1197-fix-regressions-d06a (PR #1197 fix) | c1e9696de6000440ad5b44e4d2fb2738a858deae | Fix-forward after Bugbot do-not-merge review | FIXED for tip. Synced to origin/main; restored clinical-notes trust gate + boundary tests + summaryMode 400 contract by taking main; removed ISSUE-07 RAG pre-classifier (rag.ts matches main — RAG impact: no retrieval behaviour change). Kept only additive SQL remediation: migration 20260725000000 (real worker URL + ISSUE-05 revokes), schema.sql URL/[REDACTED] fix + ISSUE-05, regenerated drift-manifest. Dropped broken upload authority refs (undefined canonicalAuthority). | Vitest: summaryMode reject + ClinicalNotes boundary 4/4; rag-classifier-memo + rag-tail-latency 17/17; upload smart-title/cleanup 3/3; check:migration-role pass; drift:manifest regenerated via Docker. No provider-backed checks. | +| 2026-07-25 | execute-system-audit-remediation (PR #1197) | c7ae011683614c8de6027347b49e8b3fb79dfa34 | Merge-ready polish: grant reassert + CI green path | READY. Hardened migration/schema to reassert service_role EXECUTE after CREATE OR REPLACE / ISSUE-05 revokes; drift regenerated. Prior regressions remain fixed (trust gate, summaryMode, no RAG pre-classifier). Delta vs main: migration + schema + drift + ledger only. | check:migration-role; drift:manifest; supabase-schema + function-grants Vitest 83/83; awaiting hosted PR required on tip. | +| 2026-07-25 | cursor/pr1190-dark-mode-salvage-f453 (PR #1214) | pending-ci-retrigger | CI unblock after bot sync | Hosted pr-branch-sync merged main onto tip (`68d0ceaab`), leaving CI `action_required` for bot-authored runs. Pushing agent commit to re-trigger non-bot CI before squash-merge; then close #1190. | Local pwa-manifest 8/8; trust gate present; prior unit failure fixed. No provider-backed checks. | +| 2026-07-25 | cursor/pr1190-dark-mode-salvage-f453 (PR #1214) | pending-ci-retrigger-2 | CI unblock + skip-branch-sync | Repeated pr-branch-sync bot merges left CI `action_required`. Applied `skip-branch-sync` label and agent retrigger so required checks can finish for squash-merge; then close #1190. | Hosted CI pending on tip; no provider-backed checks. | +| 2026-07-25 | cursor/pr1190-dark-mode-salvage-f453 (PR #1214) | `e19442240afbd7f28c321e399c6b4dcb0a7c9fdf` / squash `bb6b394617cbd906285ebe19e0e452912793320a` | prlanded after squash merge | MERGED. Two-dot content diff vs `origin/main` empty; clinical gate preserved; `no-hardcoded-hex` + theme CSS on main; PWA manifest theme colours intentionally absent. Hosted PR required SUCCESS (Unit/Build/Static/Production UI). Remote salvage branch deleted by squash `--delete-branch`. | `gh pr view` MERGED; `git diff origin/main e19442240` empty; trustGated grep on main; no provider-backed checks. | +| 2026-07-25 | PR #1190 / `remediate-dark-mode-audit` | `00eca49b9b0d7e5fbfa5703a15e9e930963984a6` | Close without merge after #1214 salvage | CLOSED (not merged). Unsafe tip superseded by #1214. Remote branch `remediate-dark-mode-audit` retained pending optional cleanup; do not merge. | `gh pr view` state=CLOSED mergedAt=null; no provider-backed checks. | +| 2026-07-25 | execute-system-audit-remediation (PR #1197) | `12ab1af1a353b4e3d0aa54a7d05145e296d3b2f0` / squash `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). `npm run check:branch-review-ledger` pass. No provider-backed checks. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `15a8093ec4fb6abd73ddead7c0f436e633359ab8` | Cursor review+Bugbot+/debug closeout | CONDITIONAL READY / CI green on tip before final main sync. Supersedes polluted DO NOT MERGE tip. Runtime asset opts retained; themed favicon restored; SVGO/sharp lockfile delta dropped (stub `check:assets`). Residual P2: orphan unused AVIF/WebP; year-long immutable `/icons/*` Cache-Control; `minimumCacheTTL: 86400`. NOT LANDED (OPEN). | Hosted PR required PASS (Static/Safety/Unit/Build/Production UI); brand:check + signed-image vitest local; no provider app checks. | +| 2026-07-26 | cursor/global-header-scroll-hide-4fd7 (PR #1222) | `a7f6d81f8b1dd5613dda94a3ddef78d480de876e` | Cross-breakpoint header hide/reveal + tablet/desktop scroll coverage | Header now hides on scroll down and returns on scroll up at every breakpoint; bottom search dock stays phone-only. Two root causes fixed: GlobalSearchShell had no scroll source above phones (`#main-content` onScroll never fires there) and its sticky rule sat on `header#search`, which has zero travel inside two header-height parents; ClinicalDashboard's collapse row was `max-sm`-gated so it never hid. Red/green proof captured: with the four source files reverted to base `1aa64e94`, all 12 new Playwright tests and 8/10 static contract assertions fail. | `npm run verify:cheap` pass except pre-existing local `tests/pdf-extractor.test.ts` Python-OCR failure (reproduced identically at base `1aa64e94`); `npm run verify:ui` 284/284 Chromium on the main-synced tree; `check:migration-role`, `check:function-grants`, `check:branch-review-ledger` pass after the #1197 SQL sync; no provider-backed checks. | +| 2026-07-25 | PR #1213 / `cursor/pr1188-fix-build-breakers-6ee0` | `c45189c76502050002e579cf2038157416a65f2d` | Deduplicate ledger rows before land | Removed 2 exact duplicate table row(s) introduced by union-merge churn (no unique review content lost). Production UI green after Sheet autofocus upgrade. | check:branch-review-ledger; hosted Production UI success on tip. | +| 2026-07-25 | PR #1213 / `cursor/pr1188-fix-build-breakers-6ee0` (supersedes #1188) | merge `8e3a49d0449ec2c1b8e4e10f6cd500c0c8c9550b` | prlanded after safe close+#1213 land | LANDED. #1188 CLOSED (not merged). #1213 squash-merged to main after PR required green (Production UI/Static/Unit/Build/Migration). Content verified on main: dashboard-notices extract, indexing-v3 utils `export async function sha256Hex`, Sheet autofocus defense. Remote feature branch deleted by merge. | Hosted CI run 30165248633 success; gh pr merge squash; git cat-file content checks on origin/main. No provider calls. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `98dd14853e262cd3073db3974b92f266b33289fb` | Resolve residual P2s from Cursor review closeout | Cleared residual P2s: deleted unused public AVIF/WebP orphans; replaced year-long immutable `/icons/*` Cache-Control with `max-age=86400, stale-while-revalidate=604800`; removed `minimumCacheTTL: 86400` (keep Next default 60s). Contract covered in pwa-manifest test. NOT LANDED (OPEN). | pwa-manifest + signed-image vitest 13/13; no provider-backed checks. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `4bb07845d5bb50e4eda7f78fc39e1e22dacda302` | Cleanup+PR-body prep before merge | Synced main; upgraded stub `check:assets` to themed-favicon marker gate (wired into verify:cheap/CI, no lockfile); removed redundant `/icon.svg` preload; matched non-PDF failure `aria-live` to SignedImage. Residuals previously cleared. NOT LANDED (OPEN). | check:assets/brand:check/gate-manifest/docs:check-scripts PASS; pwa-manifest+signed-image vitest 14/14. No provider checks. | +| 2026-07-26 | PR #1192 / cursor/fix-mobile-composer-edge-scroll-5b1d | `6721ca449` + short-runway determinism hunk | Production UI failure root-cause + focused fix | Failing check pair (Production UI + PR required aggregate) traced to ui-smoke short-runway test racing PageDown smooth-scroll against the near-bottom reserve guard (hide only fired when a frame sampled the 32-40px intent window). Replaced with deterministic scrollPrimarySurface path: bottom-jump refusal asserted, then floored post-collapse-offset hide. App code unchanged. | Focused Playwright chromium repeat-each=3 pass (2 runs, 6/6) on isolated prod build; no provider-backed checks. | +| 2026-07-25 | PR #1192 / cursor/fix-mobile-composer-edge-scroll-5b1d @ 2955bc5c | `df72c725` | CI / Production UI failure — non-answer phone header keeps the in-flow collapse hide | FIXED. Single failing Playwright test: `tests/ui-smoke.spec.ts:3780 — non-answer phone header keeps the in-flow collapse hide`. Root cause: RAF debouncing in useHideOnScroll.onScroll coalesces a layout-clamp scroll event with the test's deliberate -24px upward scroll into one RAF evaluation. The hook sees lastMaxOffsetRef stale (pre-collapse visibleMaxOffset V) while the net offset is already V-96 (= newMaxOffset-24). The clamp detection fires (`lastOffset V > newMaxOffset V-72`), incorrectly suppressing the genuine reveal. Fix: added `offset >= maxOffset - revealIntentDistance` guard to the clamp detection in `computeScrollHideUpdate`. Only treat movement as geometry feedback when the net offset is within revealIntentDistance (12 px) of the new bottom edge. Unit test added. PR-required failure is downstream of Production UI only (no independent breakage). | verify:cheap pass (exit 0); npm run test 20/20 on use-hide-on-scroll.test.ts; Playwright chromium 9/9 scroll-hide smoke tests; Playwright chromium 1/1 target test. No provider-backed checks. | +| 2026-07-26 | PR #1192 / cursor/fix-mobile-composer-edge-scroll-5b1d | `2955bc5ca` + in-flow reveal hardening | Production UI second failure root-cause + focused fix | Second Production UI failure (in-flow collapse test, reveal after bottom clamp) traced to rAF starvation coalescing the single upward scrollTop write into the trailing bottom-clamp evaluation, which the shrinking-range hold rebases away; real drags emit follow-up events so product behavior is unaffected. Replaced single -24 write with two separated upward steps yielding frames each. | Focused Playwright chromium repeat-each=3 pass for both touched tests (6/6) on isolated prod build; no provider-backed checks. | +| 2026-07-25 | PR #1217 / `cursor/sheet-focus-hardening-c6d3` | `f7208d52eca6d9059f15908367cebada568b0124` | Sheet focus stress test + CI unblock before land | READY. Stress pass found and fixed two defects in this branch's own work before land: (1) the open-sheet stack guard skipped every close-restore while any sheet was open, so closing a stacked sheet dropped focus to body instead of the sheet below (now `canRestoreFocusTo`: restore proceeds when the target is inside the top-most sheet); (2) a background surface re-focusing itself from its own focus handler could trade `focus()` calls synchronously with the controller (reclaims that do not stick are now bounded; a reclaim that holds resets the count). Resolved the #1213 conflict in favour of the event-driven controller and widened the settle window to cover the lazily imported `data-sheet-autofocus` child main's 200-attempt poll was defending. Repeated `pr-branch-sync` bot merges left hosted CI `action_required`; applying `skip-branch-sync` + this agent commit to re-trigger non-bot CI before land. | `verify:pr-local` green (389 files / 3458 tests, build, client-bundle scan, RAG fixtures); `test:e2e:pr` 285/285 Chromium; `ui-smoke.spec.ts --repeat-each=3` 273/273 no flake; 120-cycle browser soak of the phone mode-menu sheet (zero inert/scroll-lock leaks, focus restored every cycle, median 0 ms / max 10 ms); new `tests/sheet-focus-stress.dom.test.tsx` 13 cases + real-browser inert guard in `ui-accessibility.spec.ts`. No provider-backed checks. | +| 2026-07-25 | cursor/eval-matching-distinct-identity-6273 (PR #1204) | `c0db5f5810a37dbe7df9efa3d5479db134c98e10` | prlanded — #030 coverage hardening | LANDED. Squash `eb443dfda0fcfca8181e6839d156d9986dfc52db`. `expectedFileCoverage` now dedupes the citation window by document identity and assigns sources by maximum bipartite matching, closing two re-entry routes into #030 (repeat chunk citations of one document; order-dependent greedy assignment). Content verified by tree comparison against the squash commit (identical). Remote branch deleted at merge; local branch pruned 2026-07-25 after that verification. | `npm run verify:cheap` green pre-merge; hosted `PR required` green; tree-identity check `git diff eb443dfd c0db5f58` empty. No provider-backed checks. | +| 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-26 | PR #1244 / `implement-motion-audit-fixes` | `4fec4f8830bac3b0e95a2b5255aba9fbc72e6e7e` | Open-PR hygiene: close contaminated Antigravity motion tip | CLOSED. `faa50e6e3` ancestor; 497 behind/1 ahead; tip strips conflict markers from answer/upload while deleting private-access governed-summary test + outstanding-issues rows; merge-tree conflicts include answer/upload/evidence-panels. Motion-only re-derive on fresh main if still wanted. | Marker/ancestry/grep; merge-tree conflict list; tip `git show` on API/tests. No provider calls. | +| 2026-07-26 | PR #1187 / `cursor/fix-mode-switch-lag-22f6` | `7bceebf562dc6700091964996a6e2749b0d63df6` | Open-PR hygiene: close unfixed P1 + heavy conflicts | CLOSED. Prior P1 still present (`isDashboardModeHref` Documents early-return). 177 behind; conflicts in globals.css/ClinicalDashboard/search chrome. Re-implement on fresh main if mode-switch thrash still needed. | Confirmed guard still on head; merge-tree conflicts; close+comment. No provider calls. | +| 2026-07-26 | open-PR hygiene (merge-ready keep) | multi | Confirm clean supersedes after Antigravity closures | KEEP OPEN / MERGE-READY: #1241 IMP-04 (PR required green), #1239 page-anchored composer (PR required green), #1200 typography supersede (Production UI pending), #1224 ledger docs (CLEAN). Noted on each PR. #1231 leave open (outstanding-issues.md conflict only). #1212 leave open (GitHub DIRTY; needs worktree sync). Drafts #1227/#1199 untouched. | gh pr checks + merge-tree classify; comments posted. No merges to main. | +| 2026-07-26 | PR #1212 / `cursor/pr1196-coalesce-main-4711` | `d01352a096114a7804a97bf126cdf168c304b1ec` | Open-PR hygiene: sync main (merge-tree clean) | Before: GitHub DIRTY/CONFLICTING; update-branch 422. After: clean `ort` merge of origin/main in worktree and push; mergeable. Coalesce search path retained. | merge origin/main + push; no provider calls. | +| 2026-07-26 | PR #1231 / `cursor/formulation-accessibility-linear-14d4` | pending | Open-PR hygiene: resolve outstanding-issues conflict | Merged origin/main; kept PR `#064` linear-ready detail and added main `#082` bot-sync row; pushed. | conflict resolve only; no provider calls. | +| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `e1f7dad583465a10231abc058ee4320177998894` | Post-review main sync and stable-CI retrigger | APPROVE pending hosted required CI. The automated branch-sync merge brought current `main` (`b91b4600171be08198e92bcf19b7d67e8207cb2f`) into the reviewed repair without content conflicts; `skip-branch-sync` was applied to prevent another bot-head cancellation while required checks run. | `git merge-tree --write-tree` clean; three-dot PR scope unchanged except the required ledger record; hosted CI retrigger pending. | +| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `de4864ef06626931ecd6bd22b97387f80f529cb2` | Production UI second-failure repair | APPROVE pending final hosted required CI. The first repair exposed a second invalid assumption in the same new test: `/formulation/worry` does not own a fixed phone dock, so geometry used the `-1` missing sentinel. Replaced it with the established submitted Forms result route, explicitly waiting for the dock and unfocused composer before asserting paint and scroll-hide geometry. | Exact focused production Chromium test pass 1/1 (isolated Next build); Prettier, ESLint and `git diff --check` pass; prior hosted run had 290/291 Production UI tests pass with this single invalid-route assertion. | +| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `547d3a100c73333895554cf66eb0efd8d8dde8da` | Late unresolved review-thread verification and fix | APPROVE pending final hosted required CI. Confirmed the open P2 despite a bot summary claiming it was fixed: opaque phone `.edge-glass-header` / `.universal-header` still inherited `backdrop-blur-xl`. Added standard and WebKit `backdrop-filter: none` overrides and static/computed-style guards. | Prettier, ESLint and `git diff --check` pass; focused local Vitest/browser reruns blocked by consecutive legitimate shared-lock owners, so hosted Static/Unit/Production UI remain the merge gate. | +| 2026-07-26 | PR #1238 / `cursor/header-hide-top-bar-only-4fd7` | `fdc20bfedb61a2c267c22a3d78ccc8214e6c0087` | Continue-executing: top-bar-only hide + CI green | APPROVE / MERGEABLE. Root cause fixed: collapse wraps only `header#search` (+ Therapy addon); sticky hosts pin outer [top bar \| search] below `chrome-safe-area-top` without translating search away; sticky-stack composers stay `relative`. Services rail overlay hardened (testids + center scrollIntoView); ui-tools accepts sticky ancestor; Therapy nav assert uses collapse-host top under safe-area spacer. Merged main safe-area + submitted-result focus rules. | Hosted PR required + Production UI SUCCESS on tip; contract 14/14; focused Playwright services/desktop composers 6/6, chrome-scroll 12/12, therapy-nav 1/1. No provider-backed checks. | +| 2026-07-26 | PR #1238 / `cursor/header-hide-top-bar-only-4fd7` | head `db4390b3814910d0210497e2982414904f2e0704` / squash `cdbe0e662366f9308813e8d5fe8951ca11a47d6b` | prlanded after squash merge | LANDED. Top-bar-only hide-on-scroll with sticky search stack below `chrome-safe-area-top`; two-dot content diff empty vs `origin/main`. Remote feature branch deleted at merge. Required CI green at merge (PR policy, PR required, Production UI). | `gh pr view` MERGED; `git diff origin/main db4390b3` empty; no provider-backed checks. | +| 2026-07-26 | cursor/formulation-a11y-linear2-14d4 (PR #1250) | head `14b4e80ee41b16a80c974b6a1f8201407a0df05b` / squash `b91b4600171be08198e92bcf19b7d67e8207cb2f` | prlanded after squash merge | LANDED. Formulation disabled-state accessibility (#064) on main; product two-dot diff empty vs pre-merge tip. Superseded conflicted PRs #1219, #1223, #1226, #1231, #1249 closed. Remote feature branch deleted at merge. | Focused Chromium formulation 7/7; verify:cheap 3473 tests; hosted Production UI + PR required SUCCESS; `git diff 14b4e80e origin/main -- formulation-builder-page.tsx ui-formulation.spec.ts` empty. No provider-backed checks. | +| 2026-07-27 | branch-cleanup merged/equivalent batch | `multi-head` | branch-cleanup | REMOVED. Deleted 63 clean inactive worktrees, 64 local branches, and 2 remote branches only after `origin/main` ancestor or cherry-pick-equivalence proof. Retained the primary/current branches, all open-PR heads, 42 dirty worktrees, patch-unique or ambiguous refs, two secret-safeguarded worktrees, and two process-locked worktrees restored after removal refusal. | Fresh `git fetch --prune origin`; reconciliation preflight 209 worktrees / 42 dirty / 0 active Git operations / 0 matching worktree Node processes; verified incremental recovery bundle for 20 non-ancestor equivalent refs; no application tests or provider-backed application workflows run. | +| 2026-07-27 | branch-cleanup exact merged-head batch | `multi-head` | branch-cleanup | REMOVED. Deleted 30 additional clean worktrees and 34 additional local branches whose exact tips matched GitHub merged PR head records. Preserved the newly merged `codex/settings-ux` worktree under a recent-work grace rule, along with all checked-out, dirty, open-PR, closed-unmerged, secret-safeguarded, process-locked, or unmatched refs. | GitHub merged/open PR head inventory; exact OID match immediately before removal; no force worktree removal; no application tests or provider-backed application workflows run. | +| 2026-07-27 | branch-cleanup aged and closed-ref batch | `multi-head` | branch-cleanup | REMOVED. Deleted 36 clean branch-backed worktrees older than 72 hours while retaining their refs, then deleted 16 old temporary or exact closed-PR local refs and 11 exact closed-PR remote refs after verified recovery bundles. Restored and retained one permission-locked Antigravity worktree; retained all dirty, open-PR, recent, archive/preserve, secret-bearing, high-risk, divergent, detached, or potentially useful UI refs. | Fresh GitHub open/all/closed PR inventories; 72-hour creation/closure cutoff; exact tip checks; four verified incremental bundles for 21 refs in this pass; no force worktree removal, application tests, or provider-backed application workflows run. | +| 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-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. | +| 2026-07-25 | origin/execute-audit-remediation-plan (PR #1188 closed tip) | `8b8639113925601e1687bfe4f1f29c44a4308b61` | branch-cleanup | DELETED remote. Tip rejected (conflict markers + parse breakers); intentional maintainability work already on main via #1213 (`8e3a49d0`). IMP-04 mockup/export prune from tip commit `3bc391dff` was not ported (knip-only unexports; optional follow-up). Local Antigravity worktrees left untouched. | Content proof: notices/utils/Sheet autofocus on origin/main; tip marker count 12; `git push origin --delete execute-audit-remediation-plan`. No provider calls. | +| 2026-07-25 | `cursor/imp04-prune-dead-exports-01f2` | `4739510e8650e38e3c3a3cd2d8866dcf3abb8ab6` | IMP-04 safe port from rejected #1188 tip | READY. Ports dead-export prune for calculator/factsheet mockups + unused ui-primitives tokens. Deletes truly unused locals (not just unexport) so eslint max-warnings=0 stays green. Keeps Skeleton + commandInput focus shadow (tip incorrectly removed/changed those). Supersedes optional follow-up noted on #1188 branch-cleanup row. | typecheck; eslint on touched files. No provider calls. | +| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `c612c88aae386a29715cadfb5dbd2b95163e1dc9` | prlanded after squash merge | MERGED. Squash tip `c612c88aa` on main; remote feature branch deleted. Product content verified on main (`check:assets`, icon Cache-Control, SignedImage/non-PDF a11y). Local review worktree retained for optional cleanup. | gh pr view MERGED; two-dot product-file diff empty vs origin/main; no provider checks. | +| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | `ac056083bad351659cc970171c8cd62bbb3526a5` | Codex P2: sync recipe catalogs after prune | FIXED. Updated `.design-sync/conventions.md` + `docs/redesign/09-ui-primitives-recipes.md` (plus badge/design-system mentions) so catalogs no longer advertise deleted or module-private recipes (`insetCard`, `iconTile`, `compactMetadataRow`, `commandInput`, `toneWarningQuiet`, …). | Doc grep of catalogs vs `ui-primitives` export surface; `check:branch-review-ledger`. No provider calls. | +| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | `2c6d9c96` merge of `origin/main` `5475fcfb` | Main sync after GitHub CONFLICTING | SIMPLE. `git merge-tree --write-tree` clean before merge; GitHub DIRTY was staleness behind #1227/#1245/#1200. Ledger union auto-merge. Calculator path rename `calculator-mockups`→`calculators` detected; IMP-04 dead-export prune content carried onto new paths (`calculatorById`/`useCalculatorState` still absent). No conflicting intents; no conflict markers. | merge-tree clean; merge ort; `check:branch-review-ledger`; `tsc --noEmit` clean; no stale calculator-mockups imports. No provider calls. | +| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `b51ee15e6961d46a14c288f621d25ab30a434c7d` | Explicit CI-failure review and focused repair | APPROVE pending hosted required CI. All three completed CI failures were the same new Playwright assertion: `/formulation/worry` legitimately omits the optional legacy dock backdrop, but the test required `display: none` and received `missing`; the downstream `PR required` failure was only the aggregate. Updated the test to accept absence or require `none` when rendered; no high-confidence product defect remains. | Focused Vitest 11/11; Prettier, ESLint and `git diff --check` pass; exact local Chromium rerun blocked by the shared heavyweight lock owned by another worktree, so hosted Production UI is the merge gate. | +| 2026-07-26 | PR #1256 / `codex/pr1246-header-blur-followup` | correction to `547d3a100c73333895554cf66eb0efd8d8dde8da` | CSS prefix contract correction | FIXED. Hosted Unit coverage exposed the repository guard forbidding hand-authored `-webkit-backdrop-filter`; retained the standard `backdrop-filter: none` source rule and removed the duplicate vendor declaration, which the CSS toolchain owns. This supersedes only the prior row's claim that both declarations should be authored. | Targeted `clinical-dashboard-merge-artifacts` and mobile paint contract rerun required; Production UI continued separately. | +| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | merge `origin/main` `6fd8902b` | Main sync after GitHub CONFLICTING | SIMPLE. Staleness behind #1256/#1246/#1252/#1251. `git merge-tree` clean; only overlapping path was append-only ledger. Dropped 2 exact-duplicate #1238 rows re-appended by union driver (kept earlier copies). No product conflict markers; IMP-04 prune surface unchanged. | merge-tree clean; merge ort; `check:branch-review-ledger`; no provider calls. | +| 2026-07-26 | `codex/test-concurrency-20260726` | `1b1f4817b0cf932d8b43f8715725770045528f8c` | Protected-main release-readiness review of cross-worktree test concurrency | APPROVE. Shared admission is fail-closed to explicit focused Vitest selections and isolated typechecks; full suites, lint, builds, coverage and Playwright stay exclusive with queue priority and legacy-lock compatibility. Review found and fixed one blocker before approval: junctioned worktrees would have raced the shared `node_modules/.cache` TypeScript build-info file, so shared typechecks now receive a worktree-hashed temporary `.tsbuildinfo` path. Highest residual risk is Windows cross-process filesystem timing, covered by coordinator race/recovery tests and the full local gate. | `npm run verify:pr-local` PASS: format, lint, isolated typecheck, 391 files / 3489 tests passed / 2 skipped, production build (1680 static pages), client-secret scan, and 36-case offline RAG fixtures. Focused coordinator/tooling 32/32; PDF portability 3 passed / 2 platform-or-dependency skips. No provider-backed checks. | +| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | `b3b1eb7e7084859cd18c05152be1b9f8968592ff` | Authorized babysit sweep | Fixed P1 locality-audit-out-of-pr-local + comparator-direction conflicts; typed locality accumulator; hardened citationTelemetry schema; clozapine mg-gated span. Merged `origin/main`. 10/10 threads replied+resolved (2 deferred). | Focused Vitest evidence + verify-pr-local 24/24 PASS. No provider-backed checks. | +| 2026-07-26 | PR #1248 / `cursor/fix-mode-switch-lag-22f6` | `af4908bb9bdbf7a30fc1f8ed031ef9bd75f292ef` | Authorized babysit sweep | Fixed P1 documents-search ownership + P2 reserve-reveal transition; forms readiness null-slug + private-scope hash; merged remote Suspense standalone paths. 6/6 threads replied+resolved (1 deferred boundary scan). | Focused Vitest search-route-ownership + clinical-dashboard-merge-artifacts PASS before final push; hosted CI re-running. No provider-backed checks. | +| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | `b3b1eb7e7084859cd18c05152be1b9f8968592ff` | Authorized babysit sweep | Fixed P1 locality-audit-out-of-pr-local + comparator-direction conflicts; typed locality accumulator; hardened citationTelemetry schema; clozapine mg-gated span. Merged `origin/main` (verify-pr-local conflict resolved to main shape). 10/10 threads replied+resolved (2 deferred: unit normalize, query-context wiring). | Focused Vitest evidence + verify-pr-local 24/24 PASS. No provider-backed checks. | +| 2026-07-26 | PR #1257 / `cursor/therapy-search-trim-e63e` | `b80a3810819846760e862e1d0d4aa746ae6b0237` (merged) | Authorized babysit sweep | Already MERGED to main before code changes needed; tip had correct sidebar absence assertion; 0 unresolved threads at close. | Hosted PR required + Production UI SUCCESS on merged tip. No provider-backed checks. | +| 2026-07-26 | PR #1253 / `remediate-system-audit-findings` | `cc1fa9d48434c809e2cf73dfeb3124d2b36f0968` | Authorized babysit peek | CLOSED before sweep actions. CONFLICTING vs main with clinical/answer/privacy paths; non-trivial — no merge attempted. Policy failure was missing Clinical Governance Preflight (body not agent-managed). | merge-tree conflict inventory only; no provider-backed checks. | +| 2026-07-26 | PR #1255 / `execute-audit-remediation-plan` | `cc645928cefb18e4c08870ddc1c483bc051a92b9` | Authorized babysit peek | CLOSED before sweep actions. CONFLICTING vs main including `api/answer`, ClinicalDashboard, privacy routes; non-trivial — no merge attempted. Policy failure was missing Clinical Governance Preflight. | merge-tree conflict inventory only; no provider-backed checks. | +| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | `720fd19879f6463a87ad61309b91148f90efa23e` | PR babysit: sync main, supersede stale READY row, close review thread | APPROVE pending hosted required CI. `git merge-tree --write-tree origin/main ba799d4a3cfdcb20eb1e040b5d6e328e2fbbc147` was clean, so GitHub DIRTY/CONFLICTING was stale branch drift after main advanced to `a9920e3fc29fce9ad2ffb547811e085a708680b9`; merged `origin/main` with no content conflicts. This supersedes the older 2026-07-25 READY row rather than editing append-only history; the remaining CodeRabbit ledger-check thread is dispositioned by this row and the final merge remains gated on exact-head required CI. | `npm run check:branch-review-ledger` PASS; hosted PR required, PR policy, and GitGuardian to be waited on exact pushed head; no provider-backed evals/checks. | +| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | `5de2f4cdfa707ed53145b2e39a7f283995887f85` | Authorized babysit sweep | Threads: 1 CodeRabbit ledger rewrite request dispositioned (append-only policy; hosted CI already green). Merged `origin/main` (mechanical). 0 unresolved left. | Hosted required CI previously SUCCESS on prior tip; no provider-backed checks. | +| 2026-07-26 | `codex/phone-header-hidden-edge` | `16e7bfdb33cbf05199b8044fc199ab2a9457c132` | Protected-main release-readiness review of shared phone header collapse | APPROVE. All 13 app modes release the hidden phone header and top safe area to the physical viewport edge through one scroll signal; Therapy, DocumentViewer, and Differential detail page headers portal into the same collapse track. Review found and fixed one blocker before approval: the generic flex track initially honored DocumentViewer min-content width and expanded to 383px on a 320px viewport; `min-w-0 max-w-full` now bounds both the shared track and addon host. Highest residual risk is physical iOS Safari status-bar compositing beyond Chromium's simulated safe area. | `verify:cheap` PASS; focused contracts 46/46; phone-scroll production spec 38/38 before final width guard; focused 320px page-owned headers 3/3 and DocumentViewer smoke 1/1; final `verify:ui` 308/308; `verify:pr-local` PASS including production build and 36-case offline RAG fixtures. No provider-backed checks. | +| 2026-07-26 | PR #1248 / `cursor/fix-mode-switch-lag-22f6` | pending final pushed head after ledger append | PR babysit: sync main + Codex P2 submitted-param seed | Before: GitHub reported DIRTY/CONFLICTING while `git merge-tree --write-tree origin/main 7250d6d38269b734d903f9995782a4eedeaeebcb` was clean; branch was 1 behind main with 1 unresolved Codex P2. Merged `origin/main` cleanly, dropped one exact-duplicate PR #1241 ledger row reintroduced by the union driver, and fixed the P2 by deriving standalone shell chrome from `window.location.search` via `useSyncExternalStore` before the delayed `useSearchParams` bridge hydrates. Hosted CI, thread reply/resolution, and squash merge to main remain the final babysit gates. | `npm run test -- --run tests/search-route-ownership.test.ts` PASS (12/12); `npm run lint` PASS; `npm run check:branch-review-ledger` PASS; `npm run verify:cheap` PASS (393 files; 3505 passed / 5 skipped); no provider-backed checks. | +| 2026-07-26 | PR #1248 / `cursor/fix-mode-switch-lag-22f6` | pending final pushed head after UI CI fix | PR babysit: Production UI failure fix | Supersedes the prior PR #1248 babysit row for hosted CI closeout. Production UI failed only on two branch-adjacent chrome tests after the P2 fix: restricted the browser query fallback to submitted searches (`run=1` + `q/query`) so route-owned query pages do not adopt submitted chrome, and aligned the phone-scroll reserve-transition assertion with the `data-reserve-transitioning` marker for no-dock/expired-marker states. | Hosted log diagnosis from run `30187649755`; local exact Chromium production rerun `npm run test:e2e:pr -- tests/ui-phone-scroll.spec.ts tests/ui-tools.spec.ts --grep "formulation/builder\\?mechanism=rumination\|differentials presentation comparison"` PASS (2/2); no provider-backed checks. | +| 2026-07-26 | `codex/phone-header-hidden-edge` | `31608d98a578b9311c3cec2d66b6ba7c37809c0c` | Superseding release-readiness review after main sync | APPROVE. Merged current `origin/main` at #1248 and resolved the sole content conflict by retaining its extracted DocumentViewer PDF/chrome-scroll hook together with the page-header collapse portal. The sync exposed and fixed one stale Therapy static assertion that had accidentally depended on the removed Therapy-only slot conditional; it now tests the route-ownership helper directly. No unresolved findings remain. Highest residual risk remains physical iOS Safari status-bar compositing beyond Chromium's simulated safe area. | Focused merged-head contracts 54/54; phone-scroll production spec 38/38; `verify:cheap` PASS; final `verify:ui` 308/308; `verify:pr-local` PASS including production build and offline RAG fixtures. No provider-backed checks. | +| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `a2c1a2739afd41fddc648d28eabef106d60e553c` | Hosted Production UI failure triage and test hardening | APPROVE pending exact-head required CI. Hosted Chromium passed 307/308; the sole failure was a strict locator seeing both the live service detail and a hidden Next streaming `S:` clone, the same known class already scoped for the differential presentation test. Scoped the service assertion to `mobile-composer-reserve-pad` without weakening the page or clearance assertions. Also accepted CodeRabbit's non-blocking whitespace-insensitive static-test nitpick. No product defect or unresolved review thread remains. | Hosted run `30189929594` diagnosis; exact focused production Chromium service-detail test 1/1; header contract 15/15; Prettier, focused ESLint and `git diff --check` PASS. Required CI rerun pending; no provider-backed checks. | +| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | code fix `ee6a56bd0fc08ded140c36b5de213bda40d93179` | PR babysit: main sync + P1 inclusivity/static/build fix | Supersedes the earlier #1254 sweep rows for the new head after main advanced to `dbcd4cea605ee7f5af8f2f9b5ff22d18385131ea`. Before: GitHub reported DIRTY/CONFLICTING, PR policy failed missing RAG/clinical body, Static failed Prettier, Build/Production UI failed typecheck, and Codex P1 thread `3651695530` was unresolved. `git merge-tree --write-tree origin/main 91aeb19d4d4856a3aa120265d3602414b472e19a` was clean, so merged `origin/main` without conflicts; fixed threshold inclusivity (`<`/`<=`, `>`/`>=` stay distinct), source-open telemetry types, missing `onOpenSource`, missing `SourceGovernanceWarning` export, and lint/Prettier issues. PR body/thread resolution/squash merge still require GitHub write tooling unavailable in this Cursor run, so DO NOT MERGE until those are completed and hosted required CI is green. | Focused Vitest evidence/source metadata 67/67 PASS; `npm run typecheck` PASS; `npm run format:check` PASS; `npm run lint` PASS; `npm run build` PASS; `npm run check:rag:fixtures` PASS; `npm run check:production-readiness` failed only for missing local Supabase/OpenAI env secrets. No provider-backed evals/checks run. | +| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | pending pushed head after CodeRabbit follow-up | PR babysit: evidence false-positive hardening | Follow-up to the prior #1254 row after CodeRabbit re-opened evidence threads on the pushed head. Fixed scoped source-governance issues: bare `clozapine` now only binds its own dose comparator when the captured threshold is mg-qualified; table/prose same-value unknown comparator is compatible with known comparator; cross-source conflicts require document-level disagreement rather than one internally inconsistent document plus another source repeating one side. Production UI hosted failure was a single `/tools` strict-locator browser flake; exact local production rerun passed. PR body metadata and reply/resolve remain blocked by missing GitHub write tooling in this run. | `npm run test -- tests/evidence.test.ts` PASS (26/26); `npm run typecheck` PASS; `npm run lint` PASS; `npm run build` PASS; `npm run check:rag:fixtures` PASS; exact local `npm run test:e2e:pr -- tests/ui-tools.spec.ts --grep "mode home search is centered at desktop width on /tools"` PASS (1/1). No provider-backed checks run. | +| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | pending pushed head after Production UI locator hardening | PR babysit: Production UI strict-locator rerun fix | Hosted Production UI failed twice on different `tests/ui-tools.spec.ts` strict locators because duplicated page containers under `mobile-composer-reserve-pad` made `getByTestId(...)` ambiguous in full-suite browser state. Product code unchanged; tests now scope to visible/current page containers and the metrics helper measures a visible home container. PR body metadata and review-thread reply/resolve still require GitHub write tooling unavailable in this run. | Exact local production rerun `npm run test:e2e:pr -- tests/ui-tools.spec.ts --grep "mode home search is centered at desktop width on /tools\|13YARN service detail is usable at mobile"` PASS (2/2). No provider-backed checks run. | +| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | `5b616da1f84ffde127473e327e3ab63369244749` | PR babysit: ledger duplicate clarification | Clarifies the CodeRabbit duplicate-ledger thread without rewriting append-only history: the later `b3b1eb7e7084859cd18c05152be1b9f8968592ff` row at prior line 1072 is a superseding clarification of the earlier same-commit #1254 row, not a second independent sweep. PR body metadata and review-thread reply/resolve still require GitHub write tooling unavailable in this run, so DO NOT MERGE until those are completed and hosted required CI is green. | `npm run check:branch-review-ledger` required after this append; no provider-backed checks run. | +| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `1166fcff041c7f7e3e59bbef9e758307e3b0b89e` | Automated main sync after #1254 | APPROVE pending exact-head required CI. The repository branch-sync workflow merged `origin/main` `4d54abfa4d467b16e5e2f0fe3f16b8b3b52bc967` with a clean merge tree. Feature scope is unchanged; the only overlapping task-adjacent file was `tests/ui-tools.spec.ts`, where main's visible-root hardening and this PR's live service-shell scope both remain intact. No new product conflict or review finding. | `git merge-tree --write-tree` clean; three-dot feature inventory reviewed; branch-review-ledger guard PASS; focused header/Therapy contracts 23/23; exact-head hosted CI pending. No provider-backed checks. | +| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `e2037303151fc187953f9f6da025e2d919fe25bd` | Final Codex P2 focus-safety review | APPROVE pending exact-head required CI. Fixed the actionable P2 by bridging native `focusin`/`focusout` from the real phone addon DOM host into the shared header focus pin, because React portal events follow the source tree. A focused DocumentViewer or Differential header control can no longer collapse and clip during scroll. No other unresolved product finding remains. | Typecheck and `verify:cheap` PASS (393 files; 3514 passed / 2 skipped); focused production regression 1/1; complete phone-scroll suite 39/39; full `verify:ui` 308/309 with one unrelated short-runway geometry outlier, then exact failed smoke rerun PASS 1/1. No provider-backed checks. | +| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `a82713dc2699969efbfef10a39bdfa11565bec4e` | PR babysit: main sync + Codex P2 focus fix | Before: assigned `3300f94b911358eb91c16cf3e73d3c4440809b73` was GitHub DIRTY/CONFLICTING while `git merge-tree --write-tree origin/main 3300f94b911358eb91c16cf3e73d3c4440809b73` was clean, Production UI was pending, and there were 0 unresolved threads. Merged `origin/main` cleanly and pushed; a later Codex P2 found portaled phone header addon focus could collapse. Fixed by forwarding `PhoneHeaderCollapsePortal` focus to `MasterSearchHeader` and updating static/phone UI guards. Thread is fixed and outdated but left unresolved because `gh api graphql` reply failed `Resource not accessible by integration`; no GitHub write-capable MCP tool was available. Normal squash merge was blocked by base branch policy; no `--auto`/`--admin` used. | Local `npm run test -- tests/header-scroll-hide-contract.test.ts` PASS (15/15); focused production Chromium `npm run test:e2e -- tests/ui-phone-scroll.spec.ts --project=chromium --grep "phone portaled addon focus pins"` PASS (1/1); targeted Prettier PASS; hosted PR required, Unit coverage, and Production UI PASS on `a82713dc`. No provider-backed checks. | +| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `cceea70588d50d3f119394e93e50f7b38ed6f920` | Superseding P2 implementation review after parallel branch merge | APPROVE pending exact-head required CI. Merged the concurrently advanced PR branch without force or rebase. Both sides fixed the same portal-focus defect; the resolved tree retains the native listener on the actual addon DOM host and removes the document-global custom event, which could clear the universal header focus pin during unrelated desktop mutations. Retained the stronger static and browser assertions from the remote branch. No unresolved code conflict or product finding remains. | Merge conflicts limited to the duplicate focus implementations and duplicate UI test; TypeScript PASS; header-scroll contracts 15/15; focused production Chromium regression 1/1. Earlier exact local tree: `verify:cheap` PASS and phone-scroll 39/39. No provider-backed checks. | +| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `d7f1ac58d00d20a2405eb1641054d31c3a5b996e` | Final focus lifecycle remediation review | APPROVE pending exact-head required CI. Addressed the final CodeRabbit and Codex P2 lifecycle findings: the addon host is now tracked as state so listeners follow conditional host creation/replacement, focus is recomputed on attach, a scoped MutationObserver clears the pin when focused portal content unmounts without focusout, and cleanup clears the latch. The phone regression now activates the focused Back link with Enter and proves the destination header can hide again. No unresolved code finding remains locally. | Focused production Chromium focus-and-navigation regression 1/1; complete phone-scroll suite 39/39; header-scroll contracts 15/15; TypeScript PASS; `verify:cheap` PASS (393 files; 3514 passed / 2 skipped). No provider-backed checks. | +| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `482d6f2489c9ca1ee4603f0013bd9b3190a2cc36` | Superseding lifecycle resolution after concurrent branch merge | APPROVE pending exact-head required CI. Merged the concurrently advanced lifecycle fix without force or rebase. The resolved tree uses a stable callback ref, explicit collapse-strategy ownership, active-element synchronization on attach, scoped subtree observation, and cleanup clearing. Kept separate browser cases for focus pinning and keyboard-navigation teardown so each contract fails independently. No unresolved code conflict or local finding remains. | Header-scroll contracts 15/15; TypeScript PASS; focused production Chromium lifecycle cases 2/2. Immediately preceding equivalent lifecycle tree: phone-scroll 39/39 and `verify:cheap` PASS; final exact-head cheap gate follows this record. No provider-backed checks. | +| 2026-07-26 | PR #1255 / `execute-audit-remediation-plan` | `cc645928cefb18e4c08870ddc1c483bc051a92b9` | open-PR babysit sweep: close without merge | CLOSED (not merged). Unsafe #1188 lineage: ~507 behind, merge-tree dirty, literal `>>>>>>> theirs` in `evidence-panels.tsx`, dangling `renderSystemNotice`. Intentional maintainability already on main via #1213. | Marker/dangling-call grep on tip; merge-tree conflict inventory; no provider-backed checks. | +| 2026-07-26 | PR #1253 / `remediate-system-audit-findings` | `cc1fa9d48434c809e2cf73dfeb3124d2b36f0968` | open-PR babysit sweep: close without merge | CLOSED (not merged). ~507 behind with real merge-tree conflicts across answer API/evidence/tests/docs; PR policy missing governance/RAG impact. Salvageable ideas need clean rebuild on main, not this tip. | merge-tree conflict inventory; no provider-backed checks. | +| 2026-07-26 | PR #1257 / `cursor/therapy-search-trim-e63e` | head `b80a3810819846760e862e1d0d4aa746ae6b0237` / squash `024ebffdf753b8487af4615768d19d882b27d2b7` | prlanded after squash merge | LANDED. Therapy search intro/local query field removed; Codex sidebar assertion thread resolved on tip. Remote branch deleted by merge. | Hosted Production UI + PR required SUCCESS; merge-tree clean; no provider-backed checks. | +| 2026-07-26 | PR #1212 / `cursor/pr1196-coalesce-main-4711` | head `b88d69bb1dc1aa6c6ca8f34f3df3641801b60bd0` / squash `a9920e3fc29fce9ad2ffb547811e085a708680b9` | prlanded after squash merge | LANDED. Search/embedding coalesce poison + fractional PDF pixel budget on main. GitHub CONFLICTING was stale drift; merge-tree clean before sync. Remote branch deleted by merge. | Hosted PR required/Production UI/Unit/Build/Static SUCCESS on tip; no provider-backed checks. | +| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | head `7f9c56c148fbd743ea3b48fe86c67461c42fc0f4` / squash `5d6f06156f0370427361343f249bf1d7f180e874` | prlanded after squash merge | LANDED. IMP-04 dead mockup/primitive export prune intact on main. CodeRabbit ledger thread dispositioned. Remote branch deleted by merge. | Hosted PR required/Production UI/Static/Unit/Build SUCCESS; `git diff` tip vs main empty; no provider-backed checks. | +| 2026-07-26 | PR #1248 / `cursor/fix-mode-switch-lag-22f6` | head `83419c98fea9385df9beb10a9062d2dc7289f0f0` / squash `dbcd4cea605ee7f5af8f2f9b5ff22d18385131ea` | prlanded after squash merge | LANDED. Mode-switch lag/portal keep-alive; Documents cross-mode ownership fixed; submitted-param hard-load P2 seeded for `run=1`+query only. Codex thread resolved then squash-merged. Remote branch deleted by merge. | Hosted PR required/Production UI/Static/Unit/Build SUCCESS; verify:cheap PASS pre-merge; no provider-backed checks. | +| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | head `b5aa92f0febbd0425c5f3d809356946a7d2371f5` / squash `4d54abfa4d467b16e5e2f0fe3f16b8b3b52bc967` | prlanded after squash merge | LANDED. Provenance/governance UI tokens, citation telemetry, threshold inclusivity (`lt`/`lte`/`gt`/`gte`), locality audit kept out of offline pr-local. Supersedes earlier DO NOT MERGE babysit rows after thread resolve + green CI. Remote branch deleted by merge. | Hosted PR policy/PR required/Static/Unit/Build/Production UI/Migration SUCCESS; Codex P1 thread resolved; no provider-backed evals. | +| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | head `0025d17a2c8c727d4e6cf44ae368f6448a84eeba` / squash `ecf54db378c8081b36c8fd62eaadbd716a1750c8` | prlanded after squash merge | LANDED. Edge-to-edge phone header collapse + shared hide/reveal + portaled addon focus lifecycle. Supersedes earlier blocked babysit rows. Remote branch deleted by merge. | Hosted PR required/Production UI/Unit/Build/Static SUCCESS; focused phone-scroll/header contracts PASS; no provider-backed checks. | +| 2026-07-26 | open-PR babysit sweep (Cursor) | `origin/main` @ `ecf54db378c8081b36c8fd62eaadbd716a1750c8` | triage + close + sequential land | Queue cleared. Closed #1255/#1253 as unsafe/superseded. Squash-merged useful #1257, #1212, #1241, #1248, #1254, and late-arriving #1259 after CI green + thread triage. Open PR count 0 at closeout. | Per-PR hosted required CI green at merge; merge-tree used to classify GitHub CONFLICTING as staleness vs real conflicts; no provider-backed checks. | +| 2026-07-26 | `codex/phone-footer-glass` | `5ad4f8b28` | Final phone footer glass and scroll-stability review | APPROVE. Replaced the opaque phone footer/safe-area slab with localized translucent glass across shared docks and page-owned calculator/document composers; hidden chrome releases paint, pointer ownership, and reserve. Final review found and fixed calculator reserve under-budgeting plus Chromium scroll anchoring feedback, with insufficient-runway collapse refusal and sufficient-runway frame-monotonic hide/reveal. No P0-P3 findings remain. Highest residual risk is physical iOS/WebKit safe-area and momentum compositing beyond simulated Chromium. | `verify:cheap` PASS (393 files; 3518 passed / 2 skipped); focused Services/Calculators and calculator transition Chromium PASS; `verify:ui` production build 312/313 with the sole unchanged Answer short-runway geometry outlier immediately passing exact rerun 1/1; final diff review APPROVE; no provider-backed checks. | +| 2026-07-26 | `codex/phone-footer-glass` | `7e4fd1a23` | Review-follow-up and CI hydration-race review | APPROVE. Scoped the expanded collapse runway only to combined in-flow header plus reserve owners, cleared the calculator dock focus latch after sheet teardown, and made mode-home UI assertions wait for one settled owner during production hydration. Both automated review threads were addressed and resolved. No P0-P3 findings remain; physical iOS/WebKit compositing remains the only material unverified surface. | `verify:cheap` PASS; focused scroll-hide/static contracts 25/25 PASS; focused calculator teardown/geometry Chromium 3/3 PASS; affected mode-home production Chromium 5/5 PASS; no provider-backed checks. | +| 2026-07-27 | `codex/phone-footer-paint` | `e1657a4a4e3e25b4a35a1dcf544b3efddb123c3f` | Protected-main release-readiness review of phone footer safe-area paint | APPROVE. The prior footer remained visually opaque because its normal/fallback terminal tints reached 72-90%, all blur masks painted through the physical edge, and hidden WebKit paint had no explicit terminal visibility state. The shared dock now has bounded localized tint, transparent gradient/mask terminals, an 88% pill, and delayed `visibility: hidden` synchronized to the 240ms exit; reduced-motion hides immediately. Therapy and calculator ownership prove the standard shared behavior. No P0-P3 finding remains. Highest residual risk is physical iOS momentum/compositor behavior beyond local WebKit emulation. | `verify:cheap` PASS (393 files; 3518 passed / 2 skipped); focused Therapy Chromium + WebKit PASS; calculator shared-dock Chromium + WebKit PASS; `verify:ui` PASS (314/314); `verify:pr-local` PASS including production build/client-secret scan and 36-case offline RAG fixtures; no live provider-backed checks. | +| 2026-07-27 | `codex/phone-bottom-band-root-20260727` | `a8efe4a08f00a2365e2035f83ce2128ec680576f` | Protected-main release-readiness review of the shared phone viewport shell | APPROVE. The remaining bottom band clipped live result content above the hidden dock because both phone application owners used viewport-sized fixed roots, a physical-iOS paint path that can disagree with correct DOM geometry. Both owners now share a bounded in-flow dynamic-viewport shell; hidden reserve remains zero, the last viewport pixel remains content-owned, and viewport resize preserves the reading offset. No P0-P3 finding remains. Highest residual risk is physical-device iOS compositing beyond desktop WebKit emulation. | `verify:cheap` PASS (393 files; 3519 passed / 2 skipped); focused Therapy and dashboard production WebKit PASS; `verify:ui` PASS (314/314); `verify:pr-local` PASS including production build/client-secret scan and 36-case offline RAG fixtures; no live provider-backed checks. | +| 2026-07-27 | `codex/phone-bottom-band-root-20260727` | `a8a72a43d` | CI follow-up review of calculator dock hide lifecycle | APPROVE. Hosted production Chromium exposed a fast-close race where effect cleanup could cancel the queued focus-latch reset, plus a paint-contract journey coupled to natural short-page geometry. The reset now survives rapid sheet teardown, actual input focus is asserted before hide, and explicit runway isolates the paint contract from the anti-clamp boundary tests. No P0-P3 finding remains. | Exact locked Next 16.2.11 / Playwright 1.61.1 production Chromium repeat PASS (20/20); `verify:cheap` PASS (393 files; 3519 passed / 2 skipped); no provider-backed checks. | +| 2026-07-27 | `codex/phone-bottom-band-root-20260727` | `cc63ee90928d402eb9c5dd241e411ed88cc01f27` | Hosted Applications search hydration follow-up review | APPROVE. The final hosted Chromium failure was a test synchronization race: server-rendered content was visible before the controlled global-search input had its React onChange handler, so hydration could discard an immediate fill. Both shared-search tests now wait for the React handler and assert the accepted value before checking filtering. No product behavior changed and no P0-P3 finding remains. | Exact locked Next 16.2.11 / Playwright 1.61.1 production Chromium repeat PASS (20/20); `verify:cheap` PASS (25 gates; 393 files; 3519 passed / 2 skipped); no non-GitHub provider-backed checks. | +| 2026-07-27 | `codex/phone-bottom-band-root-20260727` | `a4802b9373404a00549a3479d86340398e978cc8` | Automated review follow-up for phone viewport fallback layering | APPROVE. Verified the review finding and separated the baseline 100vh declarations from the supported 100svh override, while retaining the later 100dvh override as the preferred dynamic viewport size. This removes duplicate properties without changing the intended fallback order. The ledger date remains the Australia/Perth task completion date. No P0-P3 finding remains. | Focused viewport-shell static contract PASS (8/8); `git diff --check` PASS; prior full `verify:cheap` and hosted required CI were green before this CSS-only declaration-layering follow-up; no non-GitHub provider-backed checks. | +| 2026-07-27 | `codex/fix-phone-bottom-edge-20260727` | `2cfd726843e034620091c9bb400640cce0fa40d3` | Superseding review of the physical-iOS phone bottom-edge regression | APPROVE pending broad local gates and physical staging acceptance. PR #1266 restored a phone `100dvh` shell and moved the primary regression away from Services, so Chromium parent geometry stayed green while Safari and a freshly relaunched standalone PWA clipped live result content above the physical edge. Both application owners now share a phone-only fixed `inset: 0` shell without a viewport-unit height clamp. The repaired Services journey requires the real result list to own the final pixel and preserves its pre-resize anchor through viewport shrink and expansion. No P0-P3 code or test finding remains. | TDD RED on the base shell (`relative` instead of `fixed`); exact Services Chromium GREEN (1/1); focused shell contracts GREEN (19/19); full Vitest GREEN (393 files, 3520 passed / 2 skipped); independent spec and quality reviews PASS; physical Safari/Home Screen staging proof and broad local gates pending; no provider-backed checks yet. | +| 2026-07-27 | `codex/fix-phone-bottom-edge-20260727` | `3f33b0b4b7c08dab74ba6685fbd6aa672a8e6c91` | Final review of browser and standalone phone edge ownership | APPROVE pending exact staging device acceptance. Supersedes the `2cfd7268` review after physical Safari and cold-launch PWA evidence disproved the fixed-root solution. Browser phones now use document scrolling so Safari can minimize its chrome and paint content through released top and bottom edges; standalone phones retain a bounded 100vh frame with page-owned calculator, DocumentViewer, and differential footers portaled outside the inner scroller. Hidden chrome releases reserve, opacity, hit testing, and last-pixel ownership without a backward scroll jump, while sm+ returns portal content inline. Independent final review found no P0-P3 issue. | `verify:cheap` PASS (393 files; 3526 passed / 2 skipped); focused static contracts PASS (43/43); exact new standalone and responsive production Chromium journeys PASS (4/4); `verify:ui` PASS (323/323); Prettier and `git diff --check` PASS; physical Safari and freshly relaunched Home Screen PWA staging proof pending; no live provider-backed verification. | +| 2026-07-27 | `codex/config-reconciliation-current-20260727` | `4400f59730fbd24efc5f4c54adda828506f3835b` | Protected-main review of #054 production configuration reconciliation | APPROVE. GitHub reads are repository-pinned; Railway reads are pinned to the live project, production environment and explicit app/worker services; each provider call has a 30-second bound; output is names-only even though Railway JSON is reduced from values in memory. Multiline Zod and `.env.example` drift are guarded. The correct primary checkout received only three generated gitignored local HMAC/probe values. No P0-P3 finding remains. Residual staging, webhook activation and legal/ZDR work remain #056, #025 and #053 rather than being overstated as complete. | Focused parity/local-presence 22/22 PASS; `verify:cheap` PASS (25 gates; 393 files; 3523 passed / 2 skipped); `verify:pr-local` PASS (same unit matrix + 36 offline RAG fixtures; build correctly skipped as unaffected); production-readiness READY (8 PASS, 2 checkout-file-location warnings); exact provider names-only GitHub/Railway parity PASS; Ops Digest active + latest schedule SUCCESS; Railway app/worker latest deploy SUCCESS; Supabase read-only cron/Vault-name proof; no OpenAI request or live RAG evaluation. | +| 2026-07-27 | PR #1271 / `codex/config-reconciliation-current-20260727` | `ada836d167f6a03f2a6514d56d3aee6304c6276c` | Automated-review follow-up for cross-worktree local fill persistence | APPROVE. The P2 was valid: caller-only process secrets could hide missing target-file values during `--root --fill`. Fill mode now computes persistent gaps from target env files while project identity still uses the merged file/process view; report mode retains its existing process override behavior. A dedicated contract proves all caller-only fillable values remain target-file gaps. No other P0-P3 finding remains. | Focused `tests/local-presence.test.ts` PASS (10/10); exact primary `check:local-presence -- --root C:\Dev\Apps\Database` PASS; Prettier + `git diff --check` PASS; earlier exact-tree `verify:cheap` and `verify:pr-local` remain the broad baseline; hosted required checks will rerun on this follow-up. | +| 2026-07-27 | PR #1271 / `codex/config-reconciliation-current-20260727` | `3321c1eb1f2d1ac4294caf40e09a63b74fe1f713` | Second automated-review follow-up for safe local fill targeting/reporting | APPROVE. Two valid P2 findings were fixed: an explicit root must now carry the Database package identity before any fill, and fill mode applies file-only state solely to writable HMAC/probe gaps while preserving merged process/file truth for report-only provider rows and project identity. Tests cover an unrelated package root, caller-only fillable values, and caller-only provider reporting. Zero unresolved local findings remain. | Focused `tests/local-presence.test.ts` PASS (11/11); exact primary presence PASS; unrelated-root CLI rejection PASS; Prettier PASS; hosted required checks and automated review must rerun on this head before merge. | +| 2026-07-27 | PR #1270 / `codex/fix-phone-bottom-edge-20260727` | `40d7cb1e4e934b47e96e9d7d8cea6a956472c12c` | Final automated-review follow-up for phone chrome scroll ownership | APPROVE. Three valid minor review findings were fixed: the latest scroll reporter now uses the commit-synchronized event-callback abstraction instead of mutating a ref during render; the 1024px focus regression proves bounded `main` ownership before and after scrolling; and paired answer geometry reads are ordered instead of raced. The component remains within its no-growth budget, visible edge geometry is unchanged, and no P0-P3 finding remains. | `verify:cheap` PASS (25 gates; 393 files; 3532 passed / 2 skipped); focused scroll contracts PASS (32/32); exact affected production Chromium journeys PASS twice (4/4 each); scoped ESLint, maintainability budget, Prettier, and `git diff --check` PASS; no non-GitHub provider-backed checks. | +| 2026-07-27 | PR #1270 / `codex/fix-phone-bottom-edge-20260727` | `931f7cef632921b0e41d0368ad4e5fc117221498` | Hosted Production UI hydration-settlement follow-up | APPROVE pending fresh hosted required checks. The full hosted Chromium matrix exposed one missed strict-locator guard: `/forms` can briefly overlap its server and settled client mode-home trees during production hydration. The test now applies the same one-owner convergence assertion already used by the adjacent shared-home loop, so a transient duplicate waits while a persistent duplicate still fails. No product behavior or edge geometry changed, and no P0-P3 finding remains. | First hosted run: 322/323 Chromium journeys PASS with the sole `/forms` strict-mode duplicate; exact failed production journey PASS 10/10 after the guard; scoped ESLint, Prettier, and `git diff --check` PASS; fresh hosted required checks pending; no non-GitHub provider-backed checks. | +| 2026-07-27 | `codex/remaining-safe-fixes-20260727` | `37c1fd9a10fc953013ef9bdbcff9d2bad681dab4` | Protected-main review of focused document-search timeout and reconciliation evidence | APPROVE. The staging tenancy failure was reproduced against the 750 ms federated timeout, then fixed by restoring the historical 6,000 ms budget only when documents are the sole requested domain; multi-domain requests retain the 750 ms cap. The diff does not change retrieval, ranking, ordering, aliases, scores, ownership, or selected results. Current canary, production-content, staging-boundary, and migration-gap evidence is recorded without overstating the remaining browser or schema work. No P0-P3 finding remains. Residual operational risk is the exact 23-migration staging reconciliation and post-merge tenancy proof. | Red/green fake-timer contract PASS; focused search/RAG tests 77/77; offline RAG 36 cases / 309 tests PASS; production-readiness READY (8 PASS, two isolated-checkout file warnings); `verify:cheap` PASS (25 gates); `verify:pr-local` PASS (393 files, 3,526 passed / 2 skipped, production build/client-secret scan, 36 offline RAG fixtures); no new live RAG dispatch or OpenAI spend. | +| 2026-07-27 | `codex/retire-bot-branch-sync-20260727` | `1f391140066ed6b677812a384f60e175c069fd47` | Protected-main review of #082 PR branch-sync reliability | APPROVE. Removed the automatic `GITHUB_TOKEN` update workflow that repeatedly created bot-authored heads with required checks awaiting approval. The replacement remains operator-only and dry-run by default, fixes the helper's raw-text/JSON repository parsing defect, verifies apply identity, and refuses missing or bot identities before any mutation. The ordinary GitHub Actions check rejects direct API/CLI updates and indirect apply-helper invocation from workflows. Guidance and the durable ledger agree. No P0-P3 finding remains. | `check:github-actions` PASS with direct/indirect self-tests; operator dry-run PASS across 8 open PRs with zero updates; focused helper contracts 7/7 PASS; docs index/scripts/links PASS; `verify:cheap` PASS before final helper hardening; exact final `verify:pr-local` PASS (393 files, 3,530 passed / 2 skipped, offline RAG fixtures; build correctly skipped); no provider mutation, OpenAI request, or live RAG spend. | +| 2026-07-27 | `codex/settings-ux` | `57b64668835269e7931b81ef9bbab5a8c7494c87` | Protected-main release-readiness review of responsive settings UX | APPROVE. The settings sheet now keeps clinical fields stacked through phone and tablet widths, uses one responsive dismiss control, consolidates account context, and replaces repeated inactive copy with shared accessible section notes. Focused review found no P0-P3 issue and no retrieval, ranking, clinical-output, or provider behavior change. Residual risk is physical iOS Safari rendering, which was not available locally. | `workflow:design-sweep -- --write-evidence` PASS; focused ESLint and typecheck PASS; targeted settings production Chromium PASS; `verify:cheap` PASS (25 gates; 393 files; 3,538 passed / 2 skipped); exact integrated-head `verify:pr-local` PASS (runtime, formatting, lint, typecheck, 3,538 passed / 2 skipped, production build/client scan, offline RAG fixtures); `verify:ui` 322/323 PASS with one unrelated desktop stress timeout, then the exact failed stress journey PASS 1/1 in isolation; `git diff --check` PASS; no non-GitHub provider-backed checks. | +| 2026-07-27 | `claude/clinical-kb-pwa-review-asi3wb` (PR #1050: eval cost readout fix + issues-ledger capture) | `eb1046be132d8e94d9d6b4905d7e240a99f33187` | Retrospective disposition row for PR #1050 (omitted at merge time; ride-along from the 2026-07-26 scheduled-runs reader) | MERGED 2026-07-22 as squash `9fb9bc7`. External reviews dispositioned pre-merge: one Codex P2 and one CodeRabbit Major converged on the same defect (zero-usage cases with a provider attempt must stay `n/a`, not `$0`) plus two CodeRabbit ledger Minors and a real merge conflict against #1049's concurrent ID allocation — all resolved in `eb1046b` (provider-attempt cost branch; issue rows renumbered #018-#023, next-id 024), threads resolved and confirmed by the reviewer. Cost readout subsequently validated live twice: merged-main canary `30018289898` (2026-07-23) and scheduled run `30216191889` (2026-07-26, Estimated cost USD 0.235936; 9 priced + 35 provably-zero-cost cases, no `n/a`), archiving issue #020. | PR CI green at merge (squash auto-merge armed by the user); post-merge validation read-only from hosted run logs; tests 28/28 on `tests/eval-quality.test.ts` plus typecheck and prettier at `eb1046b`; no provider dispatch or live RAG spend for this row. | +| 2026-07-27 | `codex/publish-document-nav-20260727` (PR #1278) | `71d442e7921c36fe036128207c9925484a908fd0` | Protected-main review of preserved cleanup records, reusable review prompts, and document navigation mockups | APPROVE pending final exact-head hosted required checks. The unique preserved work was transplanted onto current `origin/main`; stale phone-chrome and unsafe 15-minute lock-expiry patches were excluded. The first hosted static run found arbitrary mockup font sizes, which were replaced with the established named type-scale tokens. Review found no remaining P0-P3 issue and no retrieval, clinical-output, provider, or production-route behavior change. | Flight plan, Prettier, docs index/scripts/links, sitemap, branch-ledger, type-scale, icon-scale, brand, design-system, and `git diff --check` PASS; hosted build, static, unit coverage, advisory mockup UI, safety, policy, Semgrep, and secret checks PASS on reviewed head; Production UI pending at ledger append; local heavy gates deferred behind legitimate shared exclusive owners; no non-GitHub provider-backed checks. | +| 2026-07-28 | `codex/search-performance-correctness-20260727` | `7ae4eb49339fc334540912c173a7d2bed4dd5a8b` | Local integration review of Documents and shared-search correctness and latency fixes | APPROVE. Removed the sequential document typeahead enrichment query, deferred narrow-screen cross-mode requests until expansion, prefetched only the mode a user targets, separated in-document search from answer generation, keyed results to their response query, and made document matching boundary-aware. Local `main` was one disjoint documentation/mockup commit ahead; `git merge-tree --write-tree` and the no-commit merge were clean with no overlapping feature paths. No P0-P3 finding remains. Residual risk is live Supabase/OpenAI behavior, which was intentionally not exercised. | Feature `verify:cheap` PASS (25 gates; 393 files; 3,543 passed / 2 skipped); feature `verify:pr-local` PASS including production build/client-secret scan and 36 offline RAG fixtures; full feature Chromium 321/323 exposed two follow-ups, then exact final production Chromium PASS 3/3; feature final TypeScript PASS; focused search regressions PASS 186/186 before commit and again on the integrated tree. Integrated primary typecheck was not completed: its stale generated `.next/dev/types` cache was malformed, then coordinator leases blocked clean reruns; no tracked-source typecheck failure occurred. No provider-backed checks. | +| 2026-07-27 | `codex/phone-chrome-testing-infra-20260727` | `f50bb000cd9addf98086cfccc07e25aa327be022` | Protected-main release-readiness review of phone-chrome testing infrastructure | APPROVE pending exact-head hosted required checks. Added installed-lock parity, risk-scoped phone verification, one-owner and atomic geometry helpers, stable chrome diagnostics, physical iPhone acceptance guidance, and a fail-closed final merge audit. The full Chromium run exposed a stale endpoint assertion while chrome changed the document range; the test now re-converges the endpoint without weakening its one-pixel contract. Current `origin/main` merged cleanly; its new Playwright matcher is mockup-only and does not alter the tested production project. No P0-P3 finding remains. Residual acceptance risk is physical Safari and cold-launch PWA paint, which was not available locally. | `verify:phone-chrome` PASS: contracts 91/91, focused phone journeys 12/12, full Chromium 323/323; exact repaired differential journey 1/1; Prettier, ESLint, typecheck, full unit 396 files / 3,554 passed / 2 skipped, production build/client-secret scan, offline RAG fixtures 36 cases, and `git diff --check` PASS; no live provider-backed app checks. | +| 2026-07-27 | PR #1279 / `codex/phone-chrome-testing-infra-20260727` | `9aa0416313addaa9fc3a850c699b0e51f3a14c6c` | Hosted Production UI split-owner and hydration follow-up | APPROVE pending fresh exact-head hosted checks. The retained CI traces proved the calculator footer and frame header could independently accept or reject the same scroll event under slower RAF scheduling. Page-owned calculator chrome now consumes the frame's authoritative hide decision, with local reporters only as a shell-less fallback. A separate desktop smoke timeout filled a controlled input before React attached `onChange`; the shared fill helper now establishes that handler boundary before all 16 answer journeys. No assertions were relaxed and no P0-P3 finding remains. Residual acceptance risk remains physical Safari and cold-launch PWA paint, which was not available locally. | Final `verify:phone-chrome` PASS: installed/lock parity, runtime, contracts 92/92, focused phone journeys 12/12, full Chromium 323/323; exact two calculator regressions plus desktop hydration journey PASS 3/3; Prettier, typecheck, production builds, and `git diff --check` PASS; no non-GitHub provider-backed checks. | +| 2026-07-27 | PR #1279 / `codex/phone-chrome-testing-infra-20260727` | `d6d76f9b61479997f747ddd45767d81b851e207c` | Exact-main sync review after hydrated-interaction test hardening | APPROVE pending fresh exact-head hosted checks. Current `origin/main` merged with one test-only overlap in the differential compare endpoint journey. The resolution preserves main's handler-readiness guard and 15-second live-endpoint convergence while keeping the feature branch's atomic document-owner assertion. Main's remaining hydrated-interaction changes merged automatically; no production component, phone geometry, or retrieval behavior conflicted. No P0-P3 finding remains. | Pre-sync `verify:phone-chrome` PASS: 92/92 contracts, 12/12 focused phone journeys, 323/323 full Chromium; post-sync exact resolved production differential journey PASS 1/1; production build/TypeScript and `git diff --check` PASS; hosted required checks pending. | +| 2026-07-27 | `codex/settings-followup` | `806fcc4c3167d9e2f9fbd832c39e53d3491f270a` | Protected-main release-readiness review of settings follow-up browser reliability | APPROVE. The test-only diff waits for one settled React owner before strict answer/search interactions, makes universal-search mocks echo the requested query, and retries scroll-to-live-endpoint geometry after late dock layout. Review found no P0-P3 issue and no product, retrieval, ranking, clinical-output, or provider behavior change. Highest residual risk is physical iOS/WebKit behavior outside local Chromium coverage. | Focused integrated production Chromium PASS (5/5); exact integrated-head `verify:pr-local` PASS (runtime, formatting, lint, typecheck, 393 files, 3,538 passed / 2 skipped, 36 offline RAG fixtures); `verify:ui` PASS (323/323); `git diff --check` PASS; no non-GitHub provider-backed checks. | +| 2026-07-27 | PR #1279 / `codex/phone-chrome-testing-infra-20260727` | `e1add338ae6b138ded13c44f5cc8f7eef5302669` | Automated-review follow-up for required-check selection in the final merge audit | APPROVE pending fresh exact-head hosted checks. The P1 was valid: the audit selected the required aggregate but incorrectly treated every advisory status as merge-blocking. Unsettled-state validation now applies only to the required aggregate, while missing or unsuccessful `pr-required` still fails closed. A regression snapshot proves a failed Advisory UI job cannot block a successful required aggregate. No other P0-P3 finding remains. | Focused `tests/final-merge-audit.test.ts` PASS (7/7); Prettier and `git diff --check` PASS; earlier exact-tree `verify:phone-chrome` remains the browser baseline because this follow-up changes only the audit validator and its unit test; hosted required checks must rerun on this head. | +| 2026-07-27 | PR #1279 / `codex/phone-chrome-testing-infra-20260727` | `a2331fc8d1883d687d0bbb6e1b023503ab5deb1d` | Automated-review follow-up for changed Playwright journey selection | APPROVE pending fresh exact-head hosted checks. The P2 was valid: fixed title filters could omit a modified journey while the planner still reported focused coverage. Changed phone-chrome Playwright specs now run completely without `--grep`; the title-filtered matrix remains only for relevant unchanged specs, preserving focused-first feedback without hiding edited tests. Regression cases cover both `ui-phone-scroll` and `ui-tools`. No other P0-P3 finding remains. | Focused `tests/verify-phone-chrome.test.ts` PASS (7/7); smart-plan dry run selects complete changed specs before the risk-selected full UI suite; Prettier and `git diff --check` PASS; fresh hosted required checks must rerun on this head. | +| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `78c7d1c7766c081d886f1abbd14fa7b3018a0d44` | CI fix: Production UI Loading-answer strict-mode race | FIXED. Hosted Production UI failed once on `answer search URL opens chat without the answer home copy` when `getByLabel("Loading answer")` matched the live skeleton plus a hidden Suspense `S:` clone (search-chrome invariant 17). Assertion now uses the suite-standard `:visible` locator. Not a product regression from the results-band rebuild. | Exact journey PASS 3/3 with system Chrome after the harden; hosted CI rerunning on this head; no provider-backed checks. | +| 2026-07-27 | open-PR review + Bugbot sweep (Cursor) | multi-head | Fresh review of all open PRs + pr-bugbot on each head | Reviewed 10 open PRs after #1277 merged. No hosted `cursor[bot]` Bugbot comments existed on any PR; ran repo `pr-bugbot` triage per head instead. Cluster: close #1261/#1263 (unsafe audit lineage); salvage/rebuild only thin #1262 bits; hold Dependabot #1267→#1268→#1269 pending workflow approval; fix #1273 type-scale + mockup UX before design trust; sync #1275 and restore ledger from main; #1280 blocked by unrelated Loading-answer strict-mode flake; #1281 sound clinical follow-up with two P2 polish items. | merge-tree classification; gh PR/CI/thread inventory; pr-bugbot review-only agents; no provider-backed checks; no PR mutations. | +| 2026-07-27 | PR #1261 / `apply-audit-system-remediation` | `b4dae8469024` | Bugbot + merge-tree review | DO NOT MERGE / CLOSE. Same `faa50e6e` dirty-checkpoint lineage as closed #1255/#1253; 526 behind; 18 real merge-tree conflicts including answer API/ClinicalDashboard/evidence. Confirmed Codex P1: tip adds unconditional `out_of_corpus` short-circuit that main deliberately avoids. PR policy missing RAG/governance. | merge-tree; tip vs main RAG guard compare; unresolved-thread validation; no provider checks. | +| 2026-07-27 | PR #1262 / `perform-audit-system-remediation` | `0a1fd57b2b6a` | Bugbot + merge-tree review | CLOSE or REBUILD (narrow cherry-pick). Only 3 merge-tree conflicts but tip unsafe: GitGuardian FAIL, parallel `verify:cheap` rewrite drops installed-lock-parity, zero-valued preflight limits skipped. Salvage candidates: therapy-compass `@layer`, PDF extractor code 137, visual maxDiffPixelRatio. ISSUE-01 RAG claim not in commits. | merge-tree; tip file inspect; CodeRabbit/Codex thread validation; no provider checks. | +| 2026-07-27 | PR #1263 / `implement-audit-design-fixes` | `dda4a42baa34` | Bugbot + merge-tree review | DO NOT MERGE / CLOSE. Same unsafe lineage; tip carries literal conflict markers; route-group file-location conflicts; confirmed P1s persist raw clinical query offline and drain offline queue without owner binding. Rebuild empty/error states on main under `(search-app)/` if still needed. | tip marker grep; merge-tree; Codex P1 validation; no provider checks. | +| 2026-07-27 | PR #1267 / `dependabot/github_actions/...` | `fdc6bdf5e235` | Bugbot review | HOLD then MERGE after workflow approval. Pin `anthropics/claude-code-action` b76a077→be7b93b (v1.0.183) SHA matches annotated tag. merge-tree CLEAN; required CI awaiting Dependabot approval. | pin/tag verify; merge-tree; no provider checks. | +| 2026-07-27 | PR #1268 / `dependabot/npm-production/...` | `7a433befca9d` | Bugbot review | HOLD then MERGE after approval + green CI (highest Dependabot risk). Patch bumps next/react/supabase/openai/lucide; lockfile integrity-only; no engine break. | package.json/lock diff scan; merge-tree CLEAN; no provider checks. | +| 2026-07-27 | PR #1269 / `dependabot/npm-development/...` | `c9114439e6e6` | Bugbot review | HOLD; rebase after #1268. Playwright 1.61.1→1.62.0 is residual flake risk; prettier/eslint-config-next/@next/bundle-analyzer patches otherwise low risk. | package.json/lock diff; merge-tree CLEAN; no provider checks. | +| 2026-07-27 | PR #1273 / `codex/create-mobile-navigation-mockups` | `130399c24334` | Bugbot + CI diagnosis | NOT READY. Static PR historically failed on 17 arbitrary `text-[Npx]` sizes (`check:type-scale --strict`). Confirmed mockup P2s: PhoneFrame no inner scroll; PriorityDock More loses selection; ProgressNavigator center wraps past last section. Mockups-only; fix tokens + UX before design review. | CI log + local type-scale mapping; Codex thread validation; no provider checks. | +| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `24605b57e288` | Bugbot + merge-tree review | NOT READY. Prefetch product change looks auth-safe/correct. GitHub DIRTY is staleness (merge-tree CLEAN). Blockers: ledger rewrite/corruption (~95 historical rows) + incomplete required CI. Sync main, restore ledger from origin/main, append one row, then recheck. | merge-tree CLEAN; ledger byte/corruption inspect; unresolved Codex/CodeRabbit threads; no provider checks. | +| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `93a9f90ff287` | Bugbot + CI debug | NOT READY until Production UI green. Product band rebuild looks sound; Advisory UI green. Hosted failure is Answer Suspense `Loading answer` strict-mode (2 nodes / one hidden) in ui-smoke — not caused by band diff. Optional P2: `useRailOverflow` can miss child-list changes. | Production UI log job 90037898852; unique diff vs main; focused band unit 9/9 on tip; no provider checks. | +| 2026-07-27 | PR #1281 / `claude/safety-planning-tools-page-tsq4vs` | `a26e95fc9ac9` | Bugbot clinical review | APPROVE pending exact-head required CI + minor P2 polish. Incomplete plans get draft banner/clipboard marking; contact reach methods required for Ready/Finalise. P2: StepBuilderCard green check still uses entries.length; clipboard DRAFT text untested. No P0/P1. | unique diff review; GraphQL no cursor[bot] threads; no provider checks. | +| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `980b4298933642d134d44105b62ab0c31d39d4e3` | Hosted required CI after Loading-answer harden + main sync | GREEN. Supersedes the `78c7d1c7` pending-rerun row. Production UI and `PR required` both SUCCESS on this tip; Loading-answer `:visible` assertion retained through the later rail-overflow fix and `origin/main` merge. | Hosted CI run 30308513222: Production UI SUCCESS (11m22s), PR required SUCCESS; local exact journey PASS 3/3 earlier on the harden; no provider-backed checks. | +| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `c844560da909b7f88a1ef351fc833ad45cfb0a81` vs `origin/main` `7740535a` | Thorough merge-readiness review vs main | APPROVE AFTER MAIN SYNC. No P0/P1. Presentation-only shared results band rebuild; clean merge-tree; hosted PR required + Production UI green on tip; 0 unresolved threads. Branch is 1 commit behind unrelated safety-plan #1281 — final-merge audit fails closed until tip contains origin/main. Residual P2 (non-blocking): phone overflowing-rail `mask-image` lacks forced-colors clear (pattern exists for edge-glass); ResizeObserver does not unobserve removed children. | Diff review of 6 unique files; `git merge-tree` clean; `audit:final-merge --dry-run` fails only on missing main ancestor; band DOM 9/9; hosted checks green on tip; no provider-backed app checks. | +| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `97ab067bfdca644e0750bfbc717da7d58ecd27ee` | Bugbot defect hunt (cursoragent request; no hosted cursor[bot] threads) | APPROVE pending exact-head required CI. No P0/P1. Projection ≡ live helpers (201 diagnoses / 31 presentations / 20 alias keys); `--check` compares parsed values (Prettier-safe); CI `static-pr` + `verify:cheap` wire `check:cross-mode-index`. Residual P2: re-importing `@/lib/differentials` into `cross-mode-differentials.ts` would restore the ~1.2 MB lazy-chunk weight while data gates stay green — no import-graph lock yet. P3: stale comment in `cross-mode-links.tsx`; scripts-index omits new generator. | `check:cross-mode-index` PASS; vitest `cross-mode-differentials-index` 2/2; gate-manifest PASS; drift/invalid-JSON proofs FAIL closed; import-graph grep clean today; no provider-backed checks. | +| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `09dbd2dcc5126e4ae7d6f9e99e7325853047f749` | Bugbot P2 follow-up: import-graph lock for cross-mode differentials | FIXED. Added a client-performance-boundaries source assertion that `cross-mode-differentials.ts` stays on the trimmed JSON index (no value-import of `@/lib/differentials` / snapshot / fixtures) and that `cross-mode-links.tsx` keeps the dynamic import. Updated the stale 1.2 MB comment. Residual: dual projection logic still lives in the build script and `differentials.ts` (caught by the existing deep-equal test). | Focused `tests/client-performance-boundaries.test.ts` PASS (7/7); no provider-backed checks. | +| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `18fcfae24b41cdd5caebd2780afa963a2a1335a5` | Follow-up — Bugbot/CodeRabbit residuals addressed (supersedes the 97ab067 Bugbot row) | Residual P2 closed: import-graph lock added — an allowlist test asserts `cross-mode-differentials.ts` may import ONLY the precomputed index + the (type-only) catalog type, catching direct, transitive-via-new-import, and dynamic `import()`/`require` reintroductions of `@/lib/differentials`. P3s closed: stale `cross-mode-links.tsx` comment fixed; `build-cross-mode-differentials-index.mjs` listed in `scripts-index.md`. CodeRabbit's two Minor nits (guard depth + this ledger refresh) addressed. | vitest `cross-mode-differentials-index` 3/3; typecheck + lint PASS; `docs:check-scripts` + `docs:check-links` PASS; `check:cross-mode-index` PASS; no provider-backed checks. | +| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `82f73943a88fdccf8226344bbb5a0bf52f665ede` | Bugbot P2 reconcile after parallel remote fix | FIXED (reconciled). Remote already landed an allowlist import-graph guard in `tests/cross-mode-differentials-index.test.ts` plus scripts-index/comment refresh. Merged that work and retained a consumer-side lock: `cross-mode-links.tsx` must dynamically import the catalog module (not statically). | Focused vitest `client-performance-boundaries` + `cross-mode-differentials-index` PASS (10/10); no provider-backed checks. | +| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `5c2816d1dc2e7a99c37d27310b487bcac5232db3` | Production UI CI fix: differentials-home hydration strict-mode | FIXED. Hosted Production UI failed solely on `dashboard differentials mode param redirects…`: `getByTestId(differentials-home)` hit 2 nodes (server+client overlap). Applied `expectSingleSettledOwner` before the visibility assert. No product change. | Focused production Playwright journey PASS 1/1 via `npm run test:e2e` (system Chrome); no provider-backed checks. | +| 2026-07-27 | open-PR recommendation implementation (Cursor) | multi-head | Implement review recommendations safely | CLOSED #1261/#1262/#1263 without merge (unsafe audit lineage). Pushed fixes: #1273 type-scale + phone-frame scroll + PriorityDock selection; #1275 prefetch source-contract tighten; #1280 rail MutationObserver + main sync; #1281 StepBuilderCard completeness + clipboard draft test (automerge temporarily disabled to land polish). Opened #PDF-137 salvage branch for exit-code 137. Dependabot #1267-1269 left HOLD — workflow approve/update-branch 403 for this integration token; no merge to main. | type-scale strict PASS; focused Vitest safety-plan 3/3 and prefetch contract 1/1 and band 9/9; PDF extractor pymupdf tests skipped in this VM; no provider-backed checks; no main merges. | +| 2026-07-27 | PR #1273 / `codex/create-mobile-navigation-mockups` | `f6964aeb` | Implemented review fixes | Type-scale tokens, phone-frame inner scroll, PriorityDock overflow selection. Rebased onto concurrent tip. | `check:type-scale --strict` PASS; no provider checks. | +| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `6c544c16` | Implemented review follow-up | Prefetch contract now requires both `openModeMenuWithFocus` and `toggleModeMenu` bodies. Prior tip already restored ledger + synced main. | Focused Vitest prefetch contract PASS; no provider checks. | +| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `980b4298` | Implemented review follow-up | Synced main; rail overflow observes childList mutations. Temporarily disabled auto-merge to land polish without squash race. | Focused band Vitest 9/9; no provider checks. | +| 2026-07-27 | PR #1281 / `claude/safety-planning-tools-page-tsq4vs` | `f7e616d1` | Implemented review polish | StepBuilderCard filled uses `isStepComplete`; clipboard DRAFT assertion added. Auto-merge temporarily disabled to land polish. | Focused safety-plan Vitest 3/3; no provider checks. | +| 2026-07-27 | PR #1261/#1262/#1263 audit cluster | closed tips | Close without merge | Closed per review: unsafe lineage / tip markers / privacy+RAG P1s / parallel verify:cheap rewrite. Thin PDF exit-137 salvage opened separately. | Prior Bugbot + merge-tree evidence; no provider checks. | +| 2026-07-27 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | pending-push | CI babysit + Bugbot + main sync | Before: required CI SUCCESS on tip `630792c9`; mergeable but BEHIND main; 0 unresolved review threads; no `cursor[bot]` Bugbot comments. After: merged `origin/main` cleanly; pr-bugbot found no P0/P1 — fixed P2 by moving SIGKILL/exit-137 regressions out of `describe.runIf(hasPyMuPDF)` and asserting `PdfExtractorProcessError` by name so the OOM path cannot silently skip or pass via JS fallback. | Focused Vitest `tests/pdf-extractor.test.ts` 2 passed / 4 skipped (PyMuPDF absent locally); merge-tree clean; no provider-backed checks. | +| 2026-07-27 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `dd9d96b64042004f9162b5ef2eaf4495073a5a60` | CI babysit + Bugbot + main sync (exact head) | Supersedes pending-push row. Merged origin/main; no failing required CI on prior tip; 0 review threads; no hosted cursor[bot] comments. Fixed P2: process-failure tests ungated from hasPyMuPDF and assert PdfExtractorProcessError by name. No P0/P1. | Vitest tests/pdf-extractor.test.ts 2 passed / 4 skipped; merge-tree clean; no provider checks. | +| 2026-07-27 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `bfd66ba8546b215e4d98ec46fcdd2a8538d053a0` | CI babysit + Bugbot closeout | Final pushed tip after main sync + process-failure test ungate. Required CI re-running on this head. | Local Vitest process-failure 2/2; prior tip required CI SUCCESS; no provider checks. | +| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `88d8638974075fa91334c2bb4a0e6b54fda00176` | Review closeout: main sync + resolved-graph guard + ledger attribution | FIXED. Cause of GitHub CONFLICTING/DIRTY: both tips appended `docs/branch-review-ledger.md` (union); `git merge-tree` was clean — merged `origin/main` (#1284 ledger rows). CodeRabbit recursive import-graph ask: walk resolved runtime imports from `cross-mode-differentials.ts` (services/forms boundary pattern) + keep entry allowlist. Supersedes residual wording on rows 1148/1149: import-graph lock + scripts-index + comment already landed; `client-performance-boundaries` guards the consumer dynamic import, `cross-mode-differentials-index` guards the catalog module/graph. Hosted Production UI already green after hydration settle. | Focused vitest index+boundaries 10/10; `check:cross-mode-index` PASS; merge-tree CLEAN vs origin/main; prior Production UI PASS on `f738f083`; no provider-backed checks. | +| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `662a93f826ea6ba34df9d15677ef5ae2446a2e40` | Static PR Format check fix | FIXED. Hosted `static-pr` Format check failed on Prettier for `tests/cross-mode-differentials-index.test.ts` after the resolved-graph guard. Reformatted; no behaviour change. Mergeable vs main (merge-tree CLEAN, 0 behind). Prior review threads already dispositioned. | `prettier --check` local PASS for the file; vitest index test 3/3; no provider-backed checks. | +| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | `2e5ee9f891d9f251adffb6a15bc2ab13e0f18b23` | CI babysit + Bugbot | Blocking PR policy fixed via temporary `PR_POLICY_BODY.md` sync (Clinical Governance Preflight all checked, Risk/Verification completed), then template removed. Merge with main clean. Bugbot: zero `cursor[bot]` findings; offline scan of unique claim-cap fail-closed diff found no high-confidence defect. No review threads. Residual: human approving review once exact-head required checks finish. | Local: `npx vitest run tests/rag-claim-support.test.ts` 40/40; `evaluatePullRequestPolicy` ok. Hosted prior tip `19495e7c`: PR policy + Sync SUCCESS. No OpenAI/live Supabase. | +| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | `1d43484ad56bde756ecdc9c98d448779836b2f97` | CI babysit + Bugbot (SHA correction) | SUPERSEDES prior #1292 row that recorded pre-amend `2e5ee9f8`. Same outcome: PR policy remediated, `PR_POLICY_BODY.md` removed, Bugbot clean, no review threads. Residual: human approving review after exact-head CI. | Same local evidence; awaiting hosted checks on tip `1d43484a`. | +| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | `cb73b200ccbafa4378df8d7ae103beb8e464e783` | CI babysit + Bugbot closeout | COMPLETED for current tip. Required CI green (PR policy, Static, Unit, Build, PR required, SAST, Gitleaks). Body retains checked Clinical Governance Preflight. Bugbot: no findings. No unresolved review threads. Residual: human approving review only. | Hosted tip `cb73b200`: all required checks SUCCESS. Local claim-support Vitest 40/40. No providers. | +| 2026-07-27 | PR #1290 / `codex/search-performance-correctness-pr` | `82775e25fc1519c436a719b0d204a7c57332d811` | CI fix + Bugbot | Fixed P1 from trim commit: restored `sourceSearchInputRef` + double-rAF focus for mobile Search in document (was title-seeding). Cleared Prettier indent break that failed Static PR checks. Mergeable; 0 behind main; no unresolved review threads (Codex/CodeRabbit rate-limited). | Bugbot; vitest document-detail/private-access/universal-search/viewer-shell/audit-nav 186/186; maintainability 1734/1734; prettier check; no provider checks. | +| 2026-07-28 | PR #1290 / `codex/search-performance-correctness-pr` | `3acf0ee3b6b1da10d6e0c76d20825d9eb0c76e48` | CI fix + Bugbot | Fixed P0 duplicate sourceSearchInputRef from tip 1e5ee645; restored sheet-safe Search-in-document focus; hardened openComposer with expectSingleSettledOwner for Production UI dual-composer race. Mergeable; 0 unresolved threads. | Bugbot; document-detail vitest 8/8; Playwright presentation/grouped typeahead 3/3; maintainability 1733/1734; no provider checks. | +| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | `4e069df4c8c47b385a4fb1f04753c09319c925fa` | CI babysit follow-up + main sync + Bugbot | GitHub labeled CONFLICTING/DIRTY while `git merge-tree` was clean (11 behind main). Merged `origin/main` with no content conflicts. CI was already green on prior tip; no failing product tests. Bugbot: zero reviewThreads / zero inline findings; product claim-cap fail-closed scan clean. No comments to resolve (issue comments are rate-limit/status only). Residual: human approving review after exact-head CI. | Local merge-tree clean; Bugbot empty threads; awaiting hosted checks on merge tip. No providers. | +| 2026-07-28 | PR #1273 / `codex/create-mobile-navigation-mockups` | `c8af3d1ab830` | CI babysit + Codex thread closeout | MERGEABLE; 0 behind main; merge-tree CLEAN. Fixed earlier Static type-scale failure; suppressed shared composer on phone nav mockup; resolved 4 Codex P2 threads (scroll, overflow More, progress clamp x2). Bugbot: no cursor[bot] findings. | check:type-scale --strict PASS; hosted Static/Build/Unit/Advisory PASS on tip; Production UI pending; no provider checks. | +| 2026-07-27 | PR #1286 / `fix-test-run-lock` | `d2219a8be89e6c218c4412fe40d4eb4b86fd79bf` | Merge-conflict repair + Bugbot + CI fix | FIXED. Resolved CONFLICTING merge vs main by keeping main soft-glass phone chrome, shared test-run-lock coordinator, tokenized document-nav mockups, and accessible-name Playwright contract; preserved PR forced-colors:border and literalShadowClasses 0 ratchet. Bugbot found no remaining P0-P2 on unique product delta. Removed 9 exact duplicate ledger rows introduced by merge=union. | Focused design-system + knip + mobile-chrome-paint + test-runner-safety PASS; ledger guard PASS after dedupe; hosted Static PR re-run pending; no provider-backed checks. | +| 2026-07-27 | PR #1286 / `fix-test-run-lock` | `bef2377d477a03b7b8bbb50ad7caf99eda258be5` | Ledger dedupe follow-up after conflict merge | APPROVE pending exact-head hosted required checks. Supersedes the `d2219a8b` row for CI readiness: exact duplicate ledger rows removed; unique product delta remains forced-colors:border, literalShadowClasses 0, and diagnosis-map shadow token. No unresolved review threads; Bugbot found no remaining P0-P2. | `check:branch-review-ledger` PASS (1084 records); design-system / knip / mobile-chrome-paint / test-runner-safety PASS; `verify:cheap` rerunning; no provider-backed checks. | +| 2026-07-27 | PR #1286 / | `b9ac1621a3993338a242d520bdc2d1a1dc29934c` | Post-conflict CI green + Bugbot closeout | APPROVE. Conflicts resolved; hosted required aggregate green (Static PR, Unit coverage, Build, Safety, Production UI, PR required). No unresolved review threads. Bugbot: no remaining P0-P2 on unique product delta (forced-colors:border, literalShadowClasses 0, diagnosis-map shadow token). Residual: NodeDetails phone sheet now uses downward --shadow-elevated instead of old upward literal cast (visual only). | Hosted PR required PASS; Production UI PASS (11m41s); Advisory UI PASS; local verify:cheap PASS (396 files / 3558 passed); focused design-system/knip/mobile-chrome-paint/test-runner-safety PASS; no provider-backed checks. | +| 2026-07-27 | PR #1286 / `fix-test-run-lock` | `ac2327d231e1f74ab63a0cd04f0c1065a8ab037a` | Superseding closeout row (branch label repair) | APPROVE. Supersedes the malformed `b9ac1621` closeout row whose branch cell lost `fix-test-run-lock` to shell backtick expansion. Same outcome: merge conflicts fixed, Bugbot clean, hosted required checks green on product tip; this tip is ledger-only. | Hosted PR required + Production UI PASS on `b9ac1621`; ledger guard PASS; no provider-backed checks. | +| 2026-07-28 | PR #1286 / `fix-test-run-lock` | `e86d01edee26a361cbf69aab53ab168d963e3e71` | Production UI favourites-hub hydration flake fix | FIXED. Hosted Production UI failed once after main sync on favourites hub strict-mode duplicate (`getByTestId('favourites-hub')` -> 2). Applied existing `expectSingleSettledOwner` guard to favourites smoke asserts. Not a product regression from this PR's unique delta. | Prior tip hosted Static/Unit/Build/Safety PASS; Production UI 322/323 then fail on favourites hydration; fix pushed; no provider-backed checks. | +| 2026-07-28 | PR #1286 / `fix-test-run-lock` | `5532e928ad18a1d451732f6b0323009d9198dc48` | Final merge-conflict + CI + Bugbot closeout | APPROVE. Conflicts cleared vs current main; Bugbot clean on unique product delta; favourites-hub hydration settle guard landed; hosted PR required + Production UI green. Unique product delta: forced-colors:border, literalShadowClasses 0, diagnosis-map shadow token. | Hosted Static/Unit/Build/Safety/Advisory/Production UI/PR required PASS on tip; local verify:cheap PASS earlier; no provider-backed checks. | +| 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. | +| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | c665fce7b84d9ecda3e92b1db7bfc3c1877d0222 | Main conflict resolve + Bugbot | Real merge conflicts in `answer-verification.ts` / `rag-claim-support.ts` after #1289/#1286 landed. Resolved by retaining main band-conflict + sectionIndex claim assessment and re-applying unassessed numeric fail-closed. Bugbot: 0 reviewThreads. No comments to resolve. | Local: vitest claim-support+answer-verification 223/223; merge-tree clean post-resolve. | +| 2026-07-28 | PR #1273 / `codex/create-mobile-navigation-mockups` | `af9a957b` | Babysit recheck | Hosted CI green on prior tip; GitHub DIRTY was staleness (merge-tree CLEAN). Merged origin/main cleanly. Unresolved threads 0. Bugbot: no cursor[bot] findings. | merge origin/main; check:type-scale --strict PASS; no provider checks. | +| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `82c17f76` | Mode-switch prefetch review + merge restore | Prefetch mode homes on menu open; later reconciled with main per-option prefetch. Ledger restored append-only from main after mojibake rewrite. | Focused nav tests; check:branch-review-ledger; no provider checks. | +| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `bc5b51c2` | CodeRabbit duplicate-ledger disposition | DISPOSITIONED / not actionable as a PR product delete. Near-duplicates already exist on origin/main as non-identical historical records; check:branch-review-ledger passes on main. Removing main-owned history from a feature PR would violate append-only. | substring counts on origin/main; ledger guard PASS; no provider checks. | +| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `191707ee` | CodeRabbit malformed-ledger-row disposition | DISPOSITIONED / not actionable on this PR. MD056 cell-count warnings on ~700-722 are identical on origin/main. Fix belongs in dedicated main ledger hygiene if desired. | cell-count scan main vs tip; check:branch-review-ledger PASS; no provider checks. | +| 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. | +| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `f1e422e8ee64f7e161e78d9a56707a1a83cc3374` | CI babysit: PR policy + main sync | Before: PR marked ready → PR policy FAIL (missing Clinical Governance Preflight); GitHub CONFLICTING/DIRTY but merge-tree clean (17 behind). 0 unresolved review threads; Bugbot no P0/P1. After: merged origin/main; PR body updated with complete Clinical Governance Preflight (7/7 checked). | Local pr-policy evaluate ok; Vitest process-failure 2/2; no provider checks. | +| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `734931960175afa12359e84c030290396c381bb5` | CI babysit closeout | Final tip after main sync + Clinical Governance Preflight body fix for ready PR. | Awaiting exact-head PR policy/required CI. | +| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | ff40a2b945caf657b45cec0d662317057c63abe3 | CI babysit + main sync + Bugbot | GitHub DIRTY/CONFLICTING with clean `merge-tree` (2 behind main). Merged `origin/main` with no content conflicts. CI already green on prior tip; no product test failures. Bugbot: reviewThreads=0; product fail-closed scan clean. No comments to resolve. | Local overflow Vitest 1/1; ledger guard pass; awaiting exact-head hosted CI. No providers. | +| 2026-07-28 | claude/branch-review-ledger-fixes-42575f | 11a4ed746be7a83b144876f7a16948cad280df25 | branch review ledger + review-doc process review and repair | Repaired the ledger and closed the loop that corrupted it. Found: 146 mojibake lines from non-UTF-8 hand-appends, 46 duplicate records the mojibake hid from the exact-duplicate guard, 21 wrong-width rows (unescaped prose pipes / merged Scope+Outcome cells), 4 records written as a heading+bullet block inside the table (invisible to every row parser and splitting the table), and 137 HEADs recorded as prose/abbreviations that no rev-parse lookup could match - so the throttle the ledger exists for silently never fired. Restored 140 lines byte-exact from git history, repaired 6 residual separators, converted the 4 block records, dropped exact duplicates, normalised all 1067 rows to six cells. Added scripts/branch-review-ledger.mjs (lookup + append), hardened check-branch-review-ledger.mjs (mojibake, cell width, heading records, real dates, table gaps, and from 2026-07-29 resolvable HEADs + near-duplicates), fixed the escape-unaware cell split and exact-SHA compare in sweep-branch-ledger.mjs, and repointed AGENTS.md, codex-review-protocol.md, branch-cleanup-guide.md, docs/README.md and 12 skill/agent files at the two commands. | npm run check:branch-review-ledger PASS (1067 records); vitest tests/repo-hygiene.test.ts 24/24 PASS; npx tsc --noEmit clean; eslint on changed scripts/tests clean; prettier --write applied; docs:check-scripts 379 refs PASS; docs:check-links 1273 refs PASS; docs:check-index PASS; check:gate-manifest PASS; check:ci-scope PASS. npm run typecheck was blocked by another worktree holding the heavy-run lock, so tsc ran directly. No provider-backed checks run. | +| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `0cab0a6475a9744e7d64a25dedb4a89b06909464` | CI babysit re-sync | Re-merged origin/main after GitHub DIRTY/staleness (merge-tree clean). PR policy already SUCCESS with Clinical Governance Preflight. 0 review threads. | merge-tree clean; hosted PR policy/required were SUCCESS on prior tip; no provider checks. | +| 2026-07-28 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `562bce2b3c90bf1790da9683077915cd3f8fdb17` | Main sync + conflict repair + Bugbot closeout | FIXED. Real CONFLICTING vs advanced main was `docs/outstanding-issues.md` only (ledger/ui-smoke auto-merged). Resolution keeps `#012` in Resolved with this PR's outcome while retaining main's newer open/archive rows. CI on prior tip was fully green (Static/Production UI/PR required); re-runs after sync. Review threads already dispositioned (resolved-graph guard, ledger residuals, attribution). | merge-tree CLEAN; focused vitest index+boundaries 10/10; `check:cross-mode-index` PASS; `prettier --check` on touched tests PASS; Bugbot pass pending agent; no provider-backed checks. | +| 2026-07-28 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `742b0d154f7058800c945b3ec6e720eef24ce4c0` | Bugbot P2: finish #012 recommended-queue closeout | FIXED. After main-sync conflict repair, `#012` was correctly Resolved/Open-clean but the Recommended execution queue still listed it (order 20 composite + #017 Before hint). Applied `/issues done` queue rewrite: order 20 is now `#013`, `#016`; #017 timing is Before `#013`/`#016`. | Bugbot review on `1b31607b`; queue/Open/Resolved audit; focused vitest previously green; no provider-backed checks. | +| 2026-07-28 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `b90d659be12efedd339297daa2d289c2bd7ebb03` | Sync main + Format check on outstanding-issues | FIXED. Cause of GitHub CONFLICTING/DIRTY: branch 1 behind main (`11a4ed74` numeric claim truncation); `git merge-tree` CLEAN — ledger union auto-merge. Cause of Static PR red: Prettier on `docs/outstanding-issues.md` after queue closeout rewrite. Merged main; reformatted file; `#012` remains Resolved and out of the recommended queue. | merge-tree CLEAN; `prettier --check` PASS; `check:branch-review-ledger` PASS; no provider-backed checks. | +| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `c5ee34f2a17222a0ec6fb592a2dd7db4e43f1496` | CI babysit + Bugbot recheck | Before: required CI SUCCESS; GitHub CONFLICTING/DIRTY from 1-commit main staleness (merge-tree clean); 0 review threads. Bugbot: no P0/P1/product P2. After: merged origin/main (#1287). Nothing to resolve for comments. | Prior tip required CI SUCCESS; merge-tree clean; no provider checks. | +| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `1c77291a93373b56c136075b5941f5e61ac2859b` | Ledger hygiene after main merge | Dropped one exact-duplicate #1292 babysit row introduced by ledger `merge=union` during main sync; first copy retained; zero unique records lost. | `check:branch-review-ledger` PASS after dedupe; no provider checks. | +| 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 #1298 / `codex/fix-p2-audit-20260719` | `647dd6a1c4fe418e23cd566bc717067e57f91178` | CI babysit: merge conflicts + GitGuardian + PR policy | FIXED. Merged origin/main (~790 behind, 33 content conflicts). Preferred main for superseded remediations (secret scanner masking, babel parser 8, RAG module layout, coalesce abort, join-constructed offline DB URL). Retained unique clinical-search/neuroleptic+clozapine monitoring, sheet focus-trap, Playwright serviceWorkers block, and aligned regression tests to current main APIs/alias tiering. Restored GitGuardian-safe DB URL construction (literal postgres URI was a tip regression). PR body updated for Clinical Governance + RAG impact. | Focused Vitest 218/218 on unique delta; merge-tree clean vs origin/main after sync; no provider-backed checks. | +| 2026-07-28 | `codex/fix-p2-audit-20260719` | `d99a71b82abf605f26fcc81ba61cdc805a99a36f` | Bugbot-style unique product delta vs origin/main (playwright SW block, ClinicalDashboard focus drop, sheet Tab trap, clinical-search neuroleptic/clozapine/med-dose, rag-retrieval-variants, supporting tests) | CHANGES REQUESTED. No P0. P1: `medicationDoseQueryContext` named-medication gate requires canonical generic token in evidence (`evidenceTokens.has("clozapine")`) and ignores brand aliases, so Clozaril-only evidence fails for Clozaril/clozapine monitoring queries and can rank below unrelated high-hybrid monitoring docs (−0.24 / missed +0.26). P2: neuroleptic side-effects early `document_lookup` return preempts dose classification (`What dose applies for neuroleptic side effect management?` → `document_lookup`). Cleared: SW block + PWA allow, documents `focus:true` removal on in-place pushState ask path, clozapine blood-token retention, Clozaril→clozapine variant intent via analysis.medications. Highest residual: sheet Tab trap rewrite has no Tab-cycle DOM proof. | Offline red proofs via temporary Vitest probes (brand gate + neuroleptic class); focused clinical-search regressions 6/6; no OpenAI/Supabase/hosted CI. | +| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `a51954ed7db4626a4523ddb53d111742ef6a45ae` | Bugbot triage of unique delta vs main | FIXED P1: medicationDoseQueryContext + clozapine-specific boost/penalty now accept brand aliases (Clozaril evidence ranks above unrelated monitoring for clozapine queries). FIXED P2: neuroleptic side-effect title short-circuit runs after explicit dose/route classification. Cleared: sheet trap, documents focus drop, Playwright serviceWorkers block. | clinical-search Vitest 69/69; unique-delta Vitest 219/219; no provider-backed checks. | +| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `d81c55b23815948a7043333ad4f56c09ec107c4f` | CodeRabbit thread fixes + PR policy body sync | FIXED: duplicate serviceWorkers key; sheet focus trap excludes aria-hidden/inert ancestors; WCC in clozapine blood-intent gate; formulation Open Worry click-once outside toPass; PR_POLICY_BODY.md added for Sync PR policy body (token cannot edit non-agent-managed description). | retrieval-query-variants + playwright-isolation Vitest pass; local pr-policy evaluate ok; no provider checks. | +| 2026-07-28 | PR #1298 / `cursor/fix-p2-audit-clean-9957` | `986ffd28d493c8daf7d900bc65a3cdab3aca496e` | Clean rebuild onto main for secret-scanner history | Rebuilt unique product delta onto origin/main as a single clean commit so Gitleaks/GitGuardian no longer scan historical false-positive fixtures (offline postgres URI, sb_secret_ test key). Product behaviour unchanged from prior tip. | patch apply clean; prior focused Vitest green; no provider checks. | +| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `43795bcb00a55961b734813e78f74aef933beea3` | Closeout after clean rebuild + policy sync | MERGEABLE. Secret scanners green after history rebuild; PR policy green with Clinical Governance + RAG impact; 0 unresolved review threads (CodeRabbit + Codex P1 resolved). Unique delta retained. Residual: required human approving review / remaining hosted suite. | PR policy PASS; GitGuardian PASS; Gitleaks PASS on prior tip; focused Vitest 189/189 on clean rebuild; no provider checks. | +| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `c89756f89d61730e926b35c4e5152e087650f440` | CI babysit: Build RAM guard + escalation class + alias scope | FIXED. Unit coverage: removed neuroleptic document_lookup short-circuit that broke title-supported escalation rescue (medication_dose_risk + escalation_risk). Build: CI/GITHUB_ACTIONS warn-and-continue under <10 GiB reported RAM. CodeRabbit: medicationDoseQueryContext alias equivalence is per named medication; multi-med regression added; Prefered typo fixed. | Focused Vitest clinical-search + escalation-rescue + guard-next-build 79/79; tip `c89756f8`; no provider checks. | +| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `7f75c39c153394a89969122693b572376353b9af` | CI babysit tip (format + ledger marker) | Supersedes prior #1298 CI babysit row at `c89756f8` for exact-head bookkeeping after Prettier on clinical-search and ledger tip-marker repair. Product delta unchanged. | check:branch-review-ledger pending; tip `7f75c39c`; no provider checks. | +| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `f8d4d17bac65c17290b634e5c04bdd76e6d58a07` | CI babysit closeout tip | Exact HEAD after Build RAM CI bypass, escalation-class restore, per-medication alias scoping, Prettier, and review-thread resolution. Unresolved review threads: 0. Residual: hosted CI on this tip + human approving review. | Focused Vitest 79/79 earlier; check:branch-review-ledger PASS; tip `f8d4d17b`; no provider checks. | +| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `dc472567ab0be7c404d515f9a2be8f1fdc377e3e` | Exact tip after Bugbot trigger post | Docs-only exact-head row after posting `@cursor review` via ManagePullRequest. Product delta unchanged from `c89756f8`/`6f06b845`. | tip `dc472567`; unresolved threads 0; no provider 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. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `cdde82e087ed3e7ad6be3662b1b96aa55462cae5` | CI babysit + Bugbot + main sync | FIXED. Required CI was already green on prior tip; branch was BEHIND (merge-tree CLEAN). Merged origin/main. Bugbot P2s fixed: wired shimmer-sweep into `.animate-skeleton-shimmer::after`, applied `.stagger-item` on AnswerSkeleton, knob uses `var(--ease-spring)`. ISSUE-02/05 reduced-motion halt retained. 0 review threads to resolve. | focused vitest 34/34; tsc --noEmit PASS; merge-tree CLEAN; no provider-backed checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `9154d6ef` | CI Build flake fix | FIXED. Hosted Build failed when a runner reported 7.8 GiB via `os.totalmem` and hit the local Docker RAM floor in `guard-next-build.mjs`. Gate now skips under `CI`/`GITHUB_ACTIONS` (local protection retained). Prior tip motion/Bugbot fixes unchanged. | CI=true guard exit 0; awaiting exact-head hosted Build; no provider checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | tip after container RAM-gate fix | CI container Build flake | FIXED. `Container images / app-image` failed because Dockerfile `npm run build` hit the same local RAM floor (7.8 GiB, no CI env in the build stage). Guard now also skips for `CI=1` and `/.dockerenv`; Dockerfile sets `ENV CI=1`. | awaiting exact-head hosted container + PR required; no provider checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `2ab54c8ac4a062d15051d604e04e585a446f363c` | CI container RAM-gate closeout | SUPERSEDES prior #1297 container row with placeholder tip. Tip includes motion wiring + CI/GITHUB_ACTIONS + `/.dockerenv` RAM-floor skips + Dockerfile `ENV CI=1`. | awaiting exact-head hosted Build/container/PR required; no provider checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `b1318a4b80a3fa4b29e3de05150cf04d3aaf6525` | CI retrigger after prettier | Tip includes motion wiring + RAM-floor CI/container skips + prettier on guard-next-build. Prior Static failure was prettier-only on superseded tip `2a07c109`. Hosted pull_request CI failed to schedule on intermediate tips while a long Production UI job held the concurrency slot. | local focused vitest/tsc earlier PASS; awaiting exact-head hosted CI. | +| 2026-07-28 | PR #1304 / `fix-test-run-lock` | `352eedfeb4bcec2665201188c1113fceab7d565d` | CI/conflict babysit + Bugbot | FIXED. Real content conflicts vs main (9 files). Merged origin/main; took main for superseded test-run-lock rewrite (lease/heartbeat already present), phone chrome CSS/tests, document-top-navigation mockups, ui-primitives forced-colors, and ultra-review prompts. Kept knip.json cleanup removing unused `ignoreDependencies: ["tailwindcss"]` (only unique product delta). Bugbot: zero `cursor[bot]` findings; 0 review threads. Local `verify:cheap` PASS (4114 tests). Hosted CI re-running on merge tip; mergeable=MERGEABLE. | merge-tree then manual resolve; verify:cheap PASS; Bugbot triage; no provider-backed checks. | +| 2026-07-28 | PR #1304 / `fix-test-run-lock` | `6300b0218b2911fcdd6bc09c51db34dc9bed765b` | Babysit closeout tip | MERGE-READY for knip-only product delta. Supersedes prior #1304 row at `352eedfe` after ledger append. Hosted PR required SUCCESS on exact tip; mergeable=MERGEABLE; 0 review threads; Bugbot empty. Unique vs main: knip.json drops unused `ignoreDependencies: ["tailwindcss"]`. Original test-run-lock/phone-chrome work superseded by main during conflict resolve. | Hosted CI run 30328907503 PR required SUCCESS; verify:cheap PASS earlier; no provider-backed checks. | +| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `7662c94cf85fac19925debb567035c2e3717a20f` | pr-bugbot proactive (zero cursor[bot] Bugbot threads) | FIXED P1 phone-chrome regression: reverted ClinicalDashboard `@container`/`@max-sm:fixed`/`@md:` migration to viewport `sm:`/`md:`/`max-sm:` (search-chrome #20 + reserve contracts). FIXED P2 privacy notice stacking: restored `z-[5]` and allowed rung 5 in z-index ladder. Validated merge-sensitive: trustGatedAnswer clears `answer:""`; upload has no `canonicalAuthority`; SettingsStateProvider wired; no conflict markers. | Vitest chrome/clinical 31/31; eslint touched files clean; no provider-backed checks. | +| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `6c089f2fa5ce5a0e6057dc99ff0199fce136d105` | CI/conflict babysit + Bugbot + PR policy body | FIXED. Merged origin/main (was CONFLICTING); restored fail-closed clinical-notes `answer:""` wipe; fixed upload merge hazard (undefined canonicalAuthority → 500); restored phone chrome viewport breakpoints; kept ClinicalDashboard under 4140-line budget via settingsState handle + memoized provider; updated account-access source contract; completed Clinical Governance Preflight in PR body. Zero unresolved review threads; zero cursor[bot] Bugbot findings. | `npm run verify:cheap` PASS (4115 tests); local pr-policy evaluate ok; no provider-backed checks. | +| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `b488485d075912bc54d514ea65a1cf73c3d9b413` | PR policy body sync closeout | SUPERSEDES prior #1305 babysit tip. Synced complete Summary/Verification/Risk/governance via temporary `PR_POLICY_BODY.md` (gh/API cannot edit PR body — 403), then deleted template. PR policy PASS; mergeable CLEAN. | Sync PR policy body SUCCESS; PR policy PASS; `verify:cheap` prior tip green. | +| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `f1c978d9d63f3b3451c30d5e13e3428f29a706b5` | CI Build RAM-guard fix | FIXED hosted Build exit on local Docker RAM check: skip `guard-next-build` totalmem gate when `GITHUB_ACTIONS=true` (runners can report ~7.8 GiB). PR policy PASS with synced body. Prior CI tip `5d18668e` Build failed on guard; Unit/Static/Safety green. Retrigger CI for this tip. | Local `npm run build` PASS; `verify:cheap` prior tip PASS; 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 #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. | +| 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. | +| 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 #1298 / `codex/fix-p2-audit-20260719` | `111aee5f5d1c6aadf054632148f48dcea06626b2` | merge main + adopt main RAM-guard | Merged origin/main (#1309). Resolved guard/Dockerfile conflicts by taking main's evaluateNextBuildRamGuard + ALLOW_LOW_RAM_BUILD Docker path. Prior tip Unit/Build green; unique product delta retained (clinical-search aliases/escalation, sheet trap, Playwright SW block). | Focused Vitest 81/81; tip `111aee5f`; no provider checks. | +| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `4de7ec8901b555f11badc8d08c6b57cdf88c386e` | CI green closeout after main merge | MERGE-READY for required checks. Hosted PR required / Build / Unit / Production UI / Static / Safety / PR policy / Semgrep / Gitleaks / GitGuardian PASS. Unresolved review threads: 0. Bugbot requested via `@cursor review`. Unique delta vs main: clinical-search (brand aliases, escalation class, neuroleptic query anchor, clozapine blood tokens), sheet Tab trap, Playwright serviceWorkers block, retrieval-variants WCC, formulation UI flake, supporting tests. Residual: human approving review. | Hosted required checks PASS on `4de7ec89`; no provider-backed app checks. | +| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `060d81355b97c3ba51232df8feee6132f1036b63` | Final closeout: conflicts + reviews + CI green | COMPLETED. Merged main (adopted main RAM-guard). CodeRabbit intrinsic-size + Codex will-change/transform threads resolved. Local Bugbot: no P0/P1. Hosted PR required SUCCESS (Build/Unit/Static/Advisory/Production UI). mergeable CLEAN. | Hosted CI run 30330463512 SUCCESS; local vitest 4114 + focused guard/nav/container 18; no provider 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. | +| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `957a79e4` | Re-inspect: main sync + Bugbot | FIXED CONFLICTING/DIRTY: 1 commit behind main (#1294 typography) — ledger/tests auto-merged clean. Prior CodeRabbit/Codex threads remain resolved. Local Bugbot: no P0/P1. Residual only intentional z-token demotions for mockup/popover. | lint+typecheck PASS; focused vitest 19/19; awaiting exact-head hosted CI; no provider checks. | +| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `129edaf39e76143527fee6a56356fc750d45bb75` | Re-inspect closeout: CI green + ledger dedupe | COMPLETED. Root cause of CONFLICTING was 1-commit main drift (#1294); synced clean. Deduped exact #1306 ledger row from merge=union. Prior review threads remain resolved. Bugbot re-run: no P0/P1. Hosted PR required SUCCESS on this tip. mergeable CLEAN. | lint/typecheck/format:check PASS; vitest 4122; local build PASS; hosted CI 30331626271 SUCCESS; no provider checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `c5a145ddbcf66ebcb4c32acf75c6b9588e253b2a` | CI babysit + Bugbot + conflict closeout | READY. Merged origin/main; resolved real Dockerfile/guard-next-build conflicts by adopting main's evaluateNextBuildRamGuard + ALLOW_LOW_RAM_BUILD. Motion fixes retained: ISSUE-02/05, IMP-01 spring token, IMP-04 shimmer ::after wiring, IMP-02 AnswerSkeleton stagger. Bugbot re-review: no remaining P0/P1/P2. 0 review threads. Hosted PR required SUCCESS. | focused vitest earlier; guard-next-build Vitest 3/3; hosted Build/Static/Unit/Production UI/PR required SUCCESS; no provider checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `68b3d1de343ef1164d389925a9f45d4dc1106de2` | Review-thread disposition | RESOLVED Codex P2 (shimmer already wired) + CodeRabbit reduced-motion shimmer kill (explicit `animation: none` on `::after`). Threads replied + resolved. | prior tip PR required SUCCESS; awaiting exact-head recheck; no provider checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | tip-after-ledger-dedupe | Ledger hygiene | Dropped 1 exact-duplicate #1306 row introduced by ledger merge=union during main sync; first copy retained. | check:branch-review-ledger PASS; no provider checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `9997ac9944e7e67135570cd86cc056da5d84aa0a` | Ledger hygiene closeout | SUPERSEDES prior placeholder tip row. Dropped 1 exact-duplicate #1306 record from merge=union; motion/a11y product tip unchanged (`68b3d1de` + main sync). | check:branch-review-ledger PASS; awaiting exact-head hosted CI; no provider checks. | +| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `8ef0c1b2d63451c51e8886e8ea076aad56498576` | CI babysit + Bugbot + review closeout | READY. Motion audit complete (ISSUE-02/05, IMP-01/02/04); reduced-motion shimmer kill; overlap gotoHome flake hardened; main synced; RAM-guard conflicts adopted main's ALLOW_LOW_RAM_BUILD. Codex + CodeRabbit threads resolved. Hosted PR required SUCCESS. | Hosted Build/Static/Unit/Advisory/Production UI/PR required SUCCESS; Bugbot clean; no provider checks. | +| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `4141ca3a737cdea51fe948f6e03599d3755930fa` | Ledger dedupe + CodeRabbit thread closeout | FIXED Static PR ledger guard: removed 1 exact-duplicate #1306 row from merge=union. CodeRabbit autofix threads (outstanding-issues row, z-index matcher, CardTitle ref, OverlayProvider deps) replied and resolved; OverlayProvider context value memoized. Adopted main RAM-guard. | check:branch-review-ledger PASS; Build/Unit green on prior tip; no provider-backed checks. | +| 2026-07-28 | PR #1310 / claude/branch-review-ledger-fixes-42575f | 7c870c139211a419fe8b4dfacae3195a7a7caa2b | PR babysit: CI + Codex P2s + Bugbot-equivalent | Hosted PR required SUCCESS on 7c870c13. Fixed 3 Codex P2s (exact scope match, supersede mints distinct scope, verify full SHAs via git rev-parse) plus n/a-embedded hex and parenthetical ref-token false matches. 3 review threads replied+resolved. Mergeable; 0 behind main. Hosted Cursor Bugbot check not produced — bot-authored bugbot run/cursor review comments ignored; local Bugbot-style review done and defects fixed. | check:branch-review-ledger PASS; vitest repo-hygiene 25/25; lint; typecheck; full vitest 4133 pass; hosted Static/Unit/Build/Safety/PR-required SUCCESS. No provider-backed gates. | +| 2026-07-28 | PR #1305 / execute-audit-remediation-fixes | 71ed5083616acff5b820069f2fd9835eab92ec88 | CI/conflict babysit + Bugbot + ledger merge residue | FIXED. Merged origin/main (#1310 ledger repair); converted 4 merge-residue heading records into table form (unique 2026-07-26 review kept as six-cell row). PR MERGEABLE + PR required PASS on this tip. Unresolved review threads 0. Bugbot-equivalent product-diff review: no P0/P1/P2; @cursor review requested. Trust gating + upload fail-closed + SettingsStateProvider + phone chrome viewport breakpoints retained. | check:branch-review-ledger PASS; focused vitest 41/41; hosted PR policy/Static/Build/Unit/Safety/Advisory/Production UI/PR required PASS; no provider-backed checks. | +| 2026-07-28 | codex/universal-search-live-test-fix | 9f5994069cddb8a58308d9d5acb9403948a7f617 | live universal-search owner test handoff | APPROVE. Test-only fix aligns live owner coverage with the intentional federated and focused document timeout contract; no production behavior changed. | Node TypeScript syntax PASS; git diff --check PASS; full local gates blocked by an active exclusive repository lease; hosted required checks pending; no live provider tests run. | +| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `067a17f8` | Resolve merge conflict with main | FIXED. GitHub CONFLICTING/DIRTY was 2 commits behind main (#1310 ledger repair + #1320 search test). `git merge origin/main` completed with ort auto-merge (ledger repaired by main); no content conflicts in product files. Unique CSS layout audit delta retained. | `check:branch-review-ledger` PASS; merge-tree clean vs origin/main; no provider checks. | +| 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 ', 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 | cursor/search-correctness-030-075-6273 | 134b006b7ff42412e727292c6c03fa4c404252ae | six-pr-consolidation | close-superseded: already on main via #1177/#1204/#1215 | diff-vs-main,merge-tree,gh-merged-history | +| 2026-07-28 | codex/chat-mode-page-navigation-2328 | db7fee69d13239de92800ff83e85610884bdde7d | six-pr-consolidation | ported-to-#1336; tip closed | diff-vs-main,merge-tree,port-review | +| 2026-07-28 | claude/pr-policy-caveman-fix-6875bb | 29c58693d6e63f8174386e6a8cdc94e39f0f8343 | six-pr-consolidation | ported-to-#1335; tip closed | diff-vs-main,content-proofread | +| 2026-07-28 | codex/chat-top-nav-mockups-b3ce | b8f4c658412d8f546f47b64b77e7f274a11018ff | six-pr-consolidation | close-superseded: mockups via #1278 | diff-vs-main,gh-merged-history | +| 2026-07-28 | codex/backlog-diagnostics-reconciliation | c0e8a126bfdba0e7ee22ba8da236c452592524b7 | six-pr-consolidation | close-superseded: canary/eval already on main | diff-vs-main,merge-tree | +| 2026-07-28 | codex/comparison-alias-distinctness | 9f93b1a56fa557e15fa1df8526d28d0b10bd1d21 | six-pr-consolidation | close-superseded: matcher evolved on main | diff-vs-main,merge-tree | +| 2026-07-28 | cursor/pr-policy-caveman-docs-dc4e | e449eccc7e050736519588a89d2c35b2348e4380 | pr-1335 | docs-ready: caveman×pr-policy guidance | content-proofread | +| 2026-07-28 | cursor/mode-secondary-navigation-dc4e | 3712edca0a4ea0638668d316c8696a695d180256 | pr-1336 | nav-port-ready; UI chrome gate pending | vitest-51+58+4186,tsc,eslint | +| 2026-07-28 | cursor/pr-policy-caveman-docs-dc4e | c0fe85980b998a7790e99e4a0ab4a04c01934536 | pr-1335 | docs-ready: caveman×pr-policy + consolidation ledger | content-proofread,check:branch-review-ledger | +| 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. | +| 2026-07-28 | PR #1304 / fix-test-run-lock | 7cc32c053c752bef19f3de408a1376428e54af74 | CI babysit: sync main | SUPERSEDED (documenting stale-CI ledger error). Prior row for this HEAD incorrectly treated hosted required-CI SUCCESS on earlier tip e6b826ed9150f312c2e7a957f715019e73a7f0be as verification of this later merge commit 7cc32c05. No hosted required-CI result exists for this exact SHA. This ref has since advanced; the later row at 463e5c0adc77fe722e20376666f5991db3e288d9 recorded exact-tip hosted CI SUCCESS, so this commit's status is historical/superseded. | No hosted CI run on this exact HEAD; prior row reused results from e6b826ed; corrective ledger entry only. | +| 2026-07-28 | claude/close-knip-false-positive | 81ae7de27688fda09c6142adba55a2a76b2ceec2 | PR #1340 babysit / CI+Bugbot | MERGE-READY for docs-only tip. No failing CI; PR required SUCCESS; Static PR checks SUCCESS; no merge conflicts (0 behind / 1 ahead of origin/main; merge-tree clean); 0 unresolved review threads; 0 Bugbot/cursor[bot] findings. Claim revalidated: npm run check:knip exits 0 after install. No code/config fix needed. Residual: human approving review / merge decision. | hosted CI PR required+Static SUCCESS; local check:runtime, lock-parity, lint, typecheck, format:changed, docs:check-links, docs-script-refs, check:knip; Bugbot none | +| 2026-07-28 | claude/close-knip-false-positive | f39ca98a7aed4cda8bf8980490adb79266891fb9 | prlanded | LANDED. Squash f39ca98a on main contains the docs/outstanding-issues.md #087 archive. Product tip 81ae7de2 matches squash content. Late babysit ledger row on 664b8fa1 was orphaned by auto-merge race and is fix-forwarded in this PR. | gh pr view MERGED; two-dot diff squash vs 81ae7de2 empty; two-dot vs late tip = ledger only; check:knip 0; hosted PR required green before merge | +| 2026-07-28 | PR-1298 | de14ee2c45cbd0cb5a3b366febef70bcc2ea245e | PR #1298 full diff vs origin/main | BLOCKED: protected RAG behaviour change lacks required live baseline-to-post canary | Local diff review found no additional high-confidence P0-P2 defect; prior exact-head PR required passed; offline Vitest is insufficient for ranking trust; no provider-backed canary run | +| 2026-07-28 | PR #1316 / `claude/top-search-design-mockups-w53znc` | `8ccd7f481819ae4b41352acf9d867b2b850696be` | CI/review closeout: remaining band review gaps | FIXED. Prior Production UI failure on older tip was Suspense duplicate `global-search-input` (addressed earlier). Tip closes 7 unresolved review threads: favourites partial-status + refetch, differentials unauthorized copy, docs typography, forced-colors adoption gate, forms/loading control suppression confirmation. Merge-tree clean vs main; hosted CI rerunning on this head. | Focused vitest 38/38; tsc + eslint on touched files PASS; no Bugbot MCP available in this environment; no provider-backed checks. | +| 2026-07-28 | claude/top-search-design-mockups-w53znc | af07e34b5e6ca958206926a05509c1e321dbe862 | bugbot SearchResultsHeaderBand favourites status | P1: favourites status override under-reports registry faults when any items exist; empty/filter guards use overridden status; registryStatus unused. P2: demo prototype merge still over-faults band. No code change. | static review of band/favourites/diff call sites; offline fold proof; PR thread context; no provider/CI | +| 2026-07-28 | PR #1316 / `claude/top-search-design-mockups-w53znc` | `1c65a083e8307f108774b0c3a3fb96559c42ee0d` | CI/review closeout complete | READY FOR HOSTED CI. All review threads resolved. Account-favourites pending/failure folded into band status; remaining Codex/CodeRabbit gaps closed; Bugbot residual noted (binary band cannot express partial source failure without a dedicated `partial` status). Merge-tree was clean vs main at prior tip; CI rerunning on this head. | Focused vitest 43/43; tsc/eslint PASS on touched files; Bugbot via pr-bugbot subagent (no MCP Bugbot server); no provider-backed checks. | +| 2026-07-28 | PR-1296 | 58a6fe241de122c81822a5f60064cc2c49b2f245 | PR #1296 full diff vs origin/main | FIXED P1 z-index ladder bypass; approve after exact-head CI | Removed semantic z-index utilities that lowered established overlay rungs and bypassed main lint; diff check pending; prior exact-head PR required and Production UI passed; refreshed exact-head CI pending | +| 2026-07-28 | PR #1337 / claude/circleci-config-decision-f1efc6 | eb2f8f867de13ca64fbdb5e95242e7e5067be6dc | CI babysit: CircleCI verify + Codex P2s | FIXED. Root causes: (1) CircleCI missing PyMuPDF/pip so CI=1 pdf-extractor prerequisite failed; (2) naive docs-only md regex false-greened policy Markdown; (3) Bugbot P1: non-root npm install -g fails on cimg/node. Fixed by ci-change-scope docs_only halt, apt python3-pip + PyMuPDF==1.28.0, npm 11.x assert. Both Codex threads resolved. brace-expansion already on main via #1314. | format:check; contract Vitest 5/5; pdf-extractor 6/6 with CI=1+PyMuPDF; typecheck; lint; Bugbot re-review no remaining bugs; hosted CI/CircleCI re-running on eb2f8f86 | +| 2026-07-28 | PR #1337 / claude/circleci-config-decision-f1efc6 | e9bcebb9ef7baddb2eed961bf40bbd89a358b41b | CI babysit: CircleCI verify green | FIXED. Root cause of CircleCI red: cimg/node:24.9 fails engine-strict npm ci because @babel/parser requires Node >=24.11. Switched to cimg/node:24.18. Also addressed Codex P2s (ci-change-scope docs-only; PyMuPDF venv+PYTHON_BIN). Hosted ci/circleci: verify SUCCESS on tip; GH PR required SUCCESS. Codex threads previously resolved. | circleci config validate; contract Vitest 6/6; hosted CircleCI verify SUCCESS (job 225); hosted PR required/Static/Unit SUCCESS | +| 2026-07-28 | cursor/mode-secondary-navigation-dc4e | ea9f74062269cc820af5fdc9d3d1ce09e5cf0a4a | pr-1336-babysit | fixed P1 Suspense+DocumentViewer double-nav; P2 documents/search gate; CI babysit | verify:cheap,vitest-70+4189,tsc,eslint,build | +| 2026-07-28 | cursor/mode-secondary-navigation-dc4e | e33997dbdd4a62689ff17ff1f536d9e830ae22ad | pr-1336-babysit | fixed Codex P1 horizontal scroll + P2 service section ids; merged main | vitest-62,eslint,tsc | +| 2026-07-28 | PR #1336 / cursor/mode-secondary-navigation-dc4e (merged) | b92c2721f942e4a35b09af2151b327cbb989b2b2 | prlanded | LANDED babysit tip: Suspense bridge, DocumentViewer ownership, horizontal chip scroll, service section ids; PR required + Production UI green before squash | hosted-pr-required,production-ui,static,unit,build,verify:cheap | +| 2026-07-28 | claude/top-search-design-mockups-w53znc | 9731a9e35fdd036e039f88cbe1f8ccb0f99e9fdc | PR #1316 tip WIP: #024 status + favourites count suppress + therapy retry settle | no high-confidence P0/P1; residual #091 partial-count trust + search-band onRetry dead behind workspace error gate | vitest favourites-hub-unavailable-controls + therapy-compass-data-recovery (7 passed); static review of uncommitted diffs | +| 2026-07-28 | PR #1316 / `claude/top-search-design-mockups-w53znc` | `9bace1d1b359df5c9a87c40be1e374a89976fd2a` | CI/review closeout: #024 prose, favourites counts, therapy retry settle | FIXED open threads. CodeRabbit #024 contradiction corrected in prose (item stays open). Codex favourites counts suppressed until trusted. Codex therapy retry returns settling Promise + busy coverage. Merged latest main (clean). Bugbot: no P0/P1. Residual #091 partial-count trust; search-band onRetry still behind workspace error gate (workspace Retry uses loading). | full vitest 4229 passed / 4 skipped; typecheck; eslint touched; check:branch-review-ledger; Bugbot via pr-bugbot | +| 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 | open-prs@2026-07-28 | ac786b3553252df48bd13ef414afbcc62e1b41e9 | open-pr-usefulness | TRIAGE of 19 open PRs vs origin/main ac786b35: CLOSE #1364 (author throwaway), #1322 (superseded by #1335), #1352 (stale continuation of merged #1305; 595 behind; real merge-tree conflicts; deletes private-access tests / diverges answer+upload). KEEP product: #1366 Claude settings diagnostic, #1365 issues #096/#097, #1335 caveman×pr-policy docs, #1360 npm-ci CI, #1361 sheet max-h, #1362 calculator/therapy mockups, #1311 doc-nav mockups+viewer, #1351 error/a11y audit, #1298 sheet-focus/P2 tests, #1295 tablet mode-home, #1268/#1269/#1267 dependabot. FOLD ledger-only #1353+#1341+#1363 into one hygiene PR then close the extras. Order: land #1335 before depending on caveman guidance; sync #1361 vs #1298 (same sheet.tsx, different deltas); refresh #1267 after #1366; do not land #096's seven unrun follow-ups piecemeal. | gh-pr-list; git-fetch-prune; ahead/behind+cherry-pick+merge-tree per tip; three-dot file inventory; overlap matrix; #1305 MERGED proof; content compare SettingsStateProvider/Overlay/z-ladder already on main; #1335 body supersedes #1322; no provider checks; no closes performed | +| 2026-07-28 | PR-1298 | 56536a4d00a5fc799025522d2dbe98377721837e | PR #1298 final remediation vs current origin/main | APPROVE after exact-head CI; unvalidated retrieval behaviour removed, remaining changes are UI/test hardening | Protected clinical-search and retrieval-variant production files match origin/main byte-for-byte; merge-tree clean; ledger guard PASS; diff check PASS; verify:pr-local dry-run selected full local gate; local execution unavailable because node_modules is absent; RAG impact no retrieval behaviour change | +| 2026-07-28 | claude/navigation-pane-mockups-0600af | 8fb9867483104a5cc89eec5cfb512e1ca8718029 | PR #1311 CI/review fix | Fixed maintainability budget (DocumentViewer extract), sticky-header anchors/rail, lg-only section card, section reading order + non-collapsible source-text; dispositioned CodeRabbit mockup wiring as exempt; 0 unresolved threads; Bugbot none | verify:cheap PASS (419 files/4256 tests); maintainability 1633/1734; vitest section+account-access; eslint/typecheck; sitemap:check; Bugbot none | +| 2026-07-28 | claude/navigation-pane-mockups-0600af | 29372bb5a53df26902bef53f8a1cb5dd4be5b239 | PR #1311 CI/review fix | Supersedes prior head: Prettier format:check was the remaining Static PR / CircleCI blocker; formatted 8 files. Product fixes unchanged; 0 unresolved threads. | format:check PASS; maintainability budgets; prior verify:cheap retained | +| 2026-07-28 | codex/consolidate-platform-reliability | aa178d6465ff9aeb92b02766f4accff522c0f8a8 | dirty-work consolidation review | APPROVE. Retained reproducible npm-cache installs, explicit dev dependency installs, toolchain parity coverage, and corrected ops preflight wording. Rejected contaminated image work, fail-open audit behavior, duplicated assets, visual-regression machinery, and the unsafe primary-checkout stale-lease recovery. | git diff --check; focused Vitest 8/8; check:github-actions; check:installed-lock-parity; verify:cheap PASS (412 files, 4199 passed, 3 skipped); no provider checks. | +| 2026-07-28 | codex/consolidate-navigation-overlays | 2e30b2bb39a99a48fc95fd76374520ce592f5854 | dirty-work consolidation review | APPROVE. Retained only current-main-compatible responsive sheet max-height precedence. Rejected stale sidebar/routes, calculator removals, broken overlay imports, and focus/inert regressions. | git diff --check; focused sheet DOM Vitest 6/6; verify:cheap PASS (412 files, 4199 passed, 3 skipped); no provider checks. | +| 2026-07-28 | codex/consolidate-design-mockups | d120dbcca5ab4c5caab85176aace052788320405 | dirty-work consolidation review | APPROVE. Isolated calculator and therapy-navigation experiments under mockup routes, kept production calculators/navigation unchanged, and fixed the final decorative-icon accessibility lint finding. | boundary Vitest 3/3; design-system contract PASS; sitemap PASS; mockup Playwright 16/16; verify:cheap PASS (413 files, 4201 passed, 3 skipped); 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 | +| 2026-07-28 | claude/navigation-pane-mockups-0600af | 7cde973ac8983daef4b274618e83a706bcb9a22a | PR #1311 CI/review fix | Supersedes prior: merged main (clean), fixed CodeRabbit section-spy test harness/assertions; 0 unresolved threads; mergeable; Static/CircleCI previously green on prettier head | vitest document-section-nav 8/8; merge-tree clean vs origin/main; format:check prior PASS; verify:cheap prior PASS | +| 2026-07-28 | claude/navigation-pane-mockups-0600af | b5e71179b1210ce208094ee9c7dfc7665511ecf1 | PR babysit #1311 | ci-retrigger: parent tip bdddc44b green (Static/UI/PR-required); empty tip skipped Actions CI; pushed non-empty ledger to queue checks | parent-bdddc44b: static-pr+ui-critical+pr-required+circleci green; tip-b5e71179: awaiting Actions CI after empty-commit skip | +| 2026-07-28 | PR #1371 / cursor/document-viewer-ci-guards-eac3 (merged) | 64be97b96b46617e63f7d004fef4f9bcb14bf710 | open-pr-merge-sweep | MERGED. Useful Production UI drift guards (document-overview id ownership + phone section sheet selectors). Draft→ready; sync main; squash+delete-branch. | hosted-pr-required,static,unit,circleci,merge-tree-clean | +| 2026-07-28 | PR #1353 / cursor/pr-1336-ledger-closeout-dc4e (merged) | 7581cfcb29197449fd728995a4b47a0ec46b9824 | open-pr-merge-sweep | MERGED. Ledger-only prlanded for #1336 was missing on main; fold/sync+squash. Row retained. | hosted-pr-required,static,circleci,merge-tree-clean | +| 2026-07-28 | PR #1352 / execute-audit-remediation-fixes | dcdcb5b2b0546eddbb5bfd6efdb68122be2eabaa | open-pr-merge-sweep | SKIP-CLOSE confirmed: stale continuation of merged #1305; REAL merge-tree conflicts across answer route, ClinicalDashboard, OverlayProvider, z-index ladder, private-access tests, etc. Close attempted → 403. | merge-tree-conflicts,gh-pr-1305-MERGED | +| 2026-07-28 | PR #1351 / audit-design-fixes-clean | dcf0844d4ec715dcb32ddd3fc958d731a8657cb4 | open-pr-merge-sweep | LEFT OPEN for other agent (EmptyState/actions + audit a11y). Head advanced during sweep; do not steal. MERGEABLE/BEHIND at handoff. | coordination-leave;no-product-edit | +| 2026-07-28 | PR #1341 / cursor/pr1340-ledger-prlanded-c9d2 (merged) | dc23e8cce6b00c042cb367cf7397b1d11b72dc37 | open-pr-merge-sweep | MERGED. Ledger babysit+prlanded for #1340 missing on main; fold/sync+squash. | hosted-pr-required,static,circleci,merge-tree-clean | +| 2026-07-28 | PR #1335 / cursor/pr-policy-caveman-docs-dc4e (merged) | fd5651c821426605df0cb9df44236d6c67e65f41 | open-pr-merge-sweep | MERGED ledger fold. Product AGENTS/handoff already on main via #1322 (two-dot empty). Fixed Codex P2: pr-* ledger refs → resolvable branch names; resolved blocking thread (reply 403). | hosted-pr-required,static,circleci,resolveReviewThread | +| 2026-07-28 | PR #1268 / dependabot/npm-production (merged) | 1753c0bf4f3d236ba23a42afb1620156d8586484 | open-pr-merge-sweep | MERGED prod deps: next/env/supabase/lucide/openai/react 16.2.12/2.110.8/1.27/6.49/19.2.8. Sync+auto after hung Bundle budget retrigger. | hosted-pr-required,static,unit,build,containers,circleci | +| 2026-07-28 | PR #1269 / dependabot/npm-development (merged) | dee52deb44271e99dde8021513471eba1a1955d5 | open-pr-merge-sweep | MERGED after #1268 (lockfile order). Dev bumps: bundle-analyzer/eslint-config-next 16.2.12, playwright 1.62, prettier 3.9.6. | hosted-pr-required,static,unit,build,circleci | +| 2026-07-28 | PR #1267 / dependabot/github-actions (merged) | 359b0e1a21a489978f00df8075ebcd906d57de4b | open-pr-merge-sweep | MERGED. Allowlisted anthropics/claude-code-action be7b93b (v1.0.183 peeled tag) in github-action-pins.mjs; pin check PASS. | hosted-pr-required,static,unit,check-github-action-pins,tag-peel-verify | +| 2026-07-28 | PR #1351 / audit-design-fixes-clean (merged) | c2ec2d75553e7718fd89194cbc8362d9905151d3 | open-pr-merge-sweep | MERGED after EmptyState actions= fix, DocumentViewerRail re-home, review-thread clearance. Supersedes prior LEFT OPEN handoff row. | hosted-pr-required,static,build,production-ui,merge-tree-clean | +| 2026-07-28 | PR #1352 / execute-audit-remediation-fixes (closed) | dcdcb5b2b0546eddbb5bfd6efdb68122be2eabaa | open-pr-merge-sweep | CLOSED as superseded junk: stale continuation of merged #1305 with real merge-tree conflicts. Supersedes prior SKIP-CLOSE 403 row; closed via ManagePullRequest. | merge-tree-conflicts,gh-pr-1305-MERGED,manage-pr-close | +| 2026-07-28 | claude/pr-policy-caveman-fix-6875bb | ebd169358d1d1c9c596a486c12d51101cb5860ee | PR policy caveman-mode carve-out (docs-only) | Opened via reopened PR #1322; merged origin/main (real conflict in handoff SKILL.md resolved by hand, both step-6/step-7 edits kept); squash-auto-merge enabling | check:pr-policy self-test+workflow-guard PASS; prettier --check PASS; lint PASS 0 warnings; typecheck/test/rag:fixtures not run locally (cross-worktree heavy-lock contention, docs-only diff, deferred to hosted CI); no provider-backed checks | diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md index e63b94fe4b..f5be6dd531 100644 --- a/docs/branch-review-ledger.md +++ b/docs/branch-review-ledger.md @@ -2,9 +2,9 @@ Use this ledger to prevent repeated branch and PR reviews when the reviewed HEAD has not changed. -This file is append-only. Never rewrite or delete an existing review record; append a correction or superseding record instead. Git uses the `union` merge driver for this file so concurrent appended records are retained automatically. After merging, keep all distinct records and remove exact duplicates only. +This file is append-only. Never rewrite an existing review record's content; append a correction or superseding record instead. Exact duplicate rows may be removed. Older records are rotated into `docs/archive/branch-review-ledger-.md` with `npm run ledger:rotate` so this live table stays navigable — that move preserves every unique row. Git uses the `union` merge driver for this live file so concurrent appended records are retained automatically. -Do not hand-edit this table. Read it with `npm run ledger:lookup` and write it with `npm run ledger:append`; both are local and read-only apart from the single line `append` adds at the end of the file. +Do not hand-edit this table. Read it with `npm run ledger:lookup` (live + archives) and write new rows with `npm run ledger:append` (live file only). ## Lookup Procedure @@ -33,7 +33,16 @@ The six columns are fixed: **Date · Branch or ref · Reviewed HEAD · Scope · Record the **Reviewed HEAD** as the full 40-character SHA. `see PR head`, `pending final head`, and 8-character abbreviations are what made the throttle unreliable: no lookup can match them, so the review runs again. When the head genuinely does not exist yet, write `n/a - ` and append a real record once it does. -`npm run check:branch-review-ledger` (in `verify:cheap` and CI) enforces the union merge attribute, six cells per record, clean UTF-8 (no mojibake from a non-UTF-8 append), table-row records only, real dates, and no duplicates. Records dated 2026-07-29 or later must additionally carry a resolvable HEAD. +`npm run check:branch-review-ledger` (in `verify:cheap` and CI) enforces the union merge attribute, six cells per record, clean UTF-8 (no mojibake from a non-UTF-8 append), table-row records only, real dates, and no duplicates. Records dated 2026-07-29 or later must additionally carry a resolvable HEAD. Archives under `docs/archive/branch-review-ledger-*.md` are checked for the same structural rules. + +### Rotation + +```bash +npm run ledger:rotate -- --dry-run # default cutoff: current calendar-quarter start +npm run ledger:rotate -- --before 2026-07-29 # one-time / operator cutoff +``` + +Default rotation archives every live row dated before the current UTC calendar-quarter start into `docs/archive/branch-review-ledger-.md`. The 2026-07-30 L4 bootstrap used `--before 2026-07-29` because the entire history landed inside one month; going forward, quarterly rotation is enough. ### Historical note — 2026-07-28 hygiene pass @@ -43,1213 +52,8 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie | Date | Branch or ref | Reviewed HEAD | Scope | Outcome | Checks | | ---------- | -------------------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `d63682c7e68b6ea41670a0db2349817c2e29988f` | Asset and image optimization remediation review | READY after follow-up. Added transformation parameters to `SignedImage`, aspect ratio box reservation (`aspect-[4/3]`) to non-PDF source previews, immutable `Cache-Control` headers to PWA icon routes, ARIA live region attributes to image error containers, top-level `width`/`height` to `icon.svg`, WebP/AVIF public asset optimization script, SVG icon preload in root layout, explicit image caching and sizing config in `next.config.ts`, and `svgo` verification in CI. Fixed omitted CI static check step and missing PR policy governance preflight metadata. No P0-P2 findings in modified scope. | `gh pr checks 1195` verified PR policy, GitGuardian security checks, and Supabase preview passing after PR body metadata update. Verification results in subagent worktree: pre-existing syntax error in github action script bypassed via authorized format guard during commit; no RAG retrieval or ranking behavior change; no OpenAI, live Supabase, or provider database mutation performed. | -| 2026-07-25 | PR #1203 / `cursor/reconcil-tooling-7f06` | `c5f237aac869b864fbc8810912df837b8a31fbab` (squash) | prlanded / merge confirmation | MERGED. Squash tip trees equal `origin/main` (two-dot empty). Late `package.json` conflict-marker fix and both reconciliation + audit npm scripts are on main. Feature worktree removed; local branch force-deleted after content proof; remote branch already gone. Closed #067 (fixture-injected preflight root), #077 (primary checkout write lease), #078 (secret-safe evidence pack). | Local: two-dot tree equality vs `origin/main`; presence checks for lease/evidence/preflight scripts; `package.json` scripts + no conflict markers. Prior PR-local on tip precursor green. No provider calls. | -| 2026-07-24 | `mobile-ergonomics-fixes` | `35e96844fc8bd94e7737229cb01174d1a0f9689f` | PR #1156 mobile touch ergonomics review | APPROVE. Found and fixed two findings: a P1 invalid CSS calc syntax breaking horizontal scroll masks (`calc(100%-1.5rem)` -> `calc(100%_-_1.5rem)`), and a P2 transform collision in `globals.css` where global `scale(0.97)` active states overrode Tailwind's composite variables (reverted to `translateY(1px)`). The `modal-landscape-container` safe-area padding correctly uses `max(1rem, var(--safe-area-left))` so it is safe on portrait. No further P0-P2 findings. | Local static inspection and visual review of DOM tree. Heavy tests were locked out by concurrent verification in `remediate-audit-system-issues`. Hosted CI tests will execute automatically on PR push. No provider actions were run. | -| 2026-07-24 | `main` / `037b4808100946f96aee28b8ff51939ae2986851` | `037b4808100946f96aee28b8ff51939ae2986851` | frontend-ui review: clinical-dashboard sidebar streamlining, global-search-shell, mobile-composer-reserve, globals.css forced-colors/reduced-motion, evidence-panels aria, answer-result-surface, visual-evidence-tabs DOM tests | APPROVE with notes (P2 closed on `cursor/frontend-ui-review-docs-e8d9`). No P0/P1. One P2 was docs-only: `docs/codebase-index.md` mode-home list omitted `/therapy-compass`, `/dsm`, `/specifiers`, and `/factsheets` while `isStandaloneModeHome` already handles them — fixed in the follow-up docs PR. What holds: sidebar streamlining (`primarySidebarToolIds` Set) is correct; global reduced-motion CSS covers `animate-spin`; forced-colors token remap is comprehensive; mobile-composer-reserve and overlay CSS contracts intact; tab/tabpanel ARIA associations pass in jsdom; icon-only collapsed rail links carry `aria-label`+`title`; lucide-react defaults SVG `aria-hidden="true"`. | Full unit suite 3261/3264 passed (3 pre-existing skips); typecheck clean; lint clean; static read of globals.css forced-colors/reduced-motion, overlay contracts, aria patterns, and mobile-composer-reserve. Docs mode-home list aligned to `isStandaloneModeHome`. No live Supabase/OpenAI/Railway mutation. | -| 2026-07-24 | PR #1134 / `cursor/search-performance-review-4ee9` | `2a8e045f4a7179ea6fc9b81b1b2173e4c932617e` | Babysit closeout / merge readiness | MERGE-READY for product scope once exact-head required checks finish after final main sync. Fixed: Bugbot pathname searchMode (Compiler-safe previous-state sync); docs index; PR_POLICY_BODY/governance; maintainability extract; prescribing Safety filters (no fields=index); Sheet teardown document guard. Unresolved threads: none. Residual: human approving review; title still stale (gh/ManagePullRequest cannot edit); main may move again. | Hosted on prior tip 973d5d88: PR policy/Static/Unit/Build/Production UI/PR required all SUCCESS. Final sync pushed; awaiting exact-head recheck. No OpenAI/live Supabase writes. | -| 2026-07-24 | `cursor/search-performance-review-4ee9` / PR #1134 | 76d47871c44c607f942a683351378230173dcbe3 | Search performance findings remediation (prescribing, differentials, typeahead docs timeout, shared shell, answer rate-limit fallback) | FIXED. P1 prescribing catalogue now debounces (250 ms), aborts in-flight fetches, and uses `fields=index`. Differentials catalogue + evidence search abort/debounce. Universal documents typeahead timeout 6 s→750 ms (RAG impact: no retrieval behaviour change — typeahead timeout only). Shared `(search-app)` layout keeps GlobalSearchShell mounted across mode homes. Answer rate-limit fails closed only in production; development uses in-memory fallback when durable RPC is unavailable. | Focused Vitest 362 via test:focused; api-rate-limit/search-shell/universal/route/site-map suites green; `npm run ensure` smoke 200 on mode homes; `/api/answer/stream` 200 after fallback. No OpenAI spend beyond local answer stream smoke; no live eval/soak. | -| 2026-07-24 | `main` | `6ceaaff50712e10e857bf9a5a7ec88b530bf7b35` | Search performance across modes (load + typeahead + submit; local ensure) | CHANGES REQUESTED / findings. No P0. P1: Prescribing `useMedicationCatalog(query)` refetches the full ~2.5–2.9 MB medication catalogue on every keystroke without debounce, abort, or `fields=index` (~25× larger than index). P2: differentials catalogue + evidence `/api/search` lack abort/debounce; universal typeahead `tookMs` dominated by empty live documents domain (~130–340 ms); cross-namespace mode switches remount the search shell; Answer submit returns 503 `rate_limit_unavailable` when durable limiter is down (fail-closed). Mode HTML load medians ~40–75 ms; typeahead wall ~160–180 ms (`ssri`) / ~350–400 ms (`agitation im lorazepam`) + 250 ms client debounce; catalogue submits (differentials) ~45 ms; document `/api/search` demo-degraded ~230–430 ms. Highest residual live risk: cold hybrid RPC tails (docs #25), not re-measured with soak/eval. | `npm run ensure` → http://localhost:4461; `/api/local-project-id` Clinical KB; paced universal typeahead across 13 modes × 2 queries (Server-Timing); `/api/search` + `/api/medications` (+`fields=index`) + differentials APIs + registry payload sizes; NDJSON vs JSON first-byte; browser walkthrough of 13 mode homes; static review of ClinicalDashboard / universal-search / medication+differential hooks. No OpenAI generation, no `eval:retrieval:latency`, no soak, no hosted CI. Environment had Supabase secrets so universal ran live (`publicAccess`); `/api/search` degraded to demo (`supabase_api_key_configuration_unavailable`). | -| 2026-07-24 | `codex/query-ribbon-search-headings` | `16ce57d9615708528e7924b41837210a24414722` + reviewed ledger diff | Universal Query Ribbon implementation and responsive search-heading review | APPROVE after two scoped polish fixes. The shared result header now presents query, progress/result state, scopes, and real sort/view/save controls consistently across Services, Forms, Favourites, Differentials, and Medication/Prescribing search surfaces; the mockup remains available at `/mockups/search-heading`. The review restored the compact `Sort` label at ordinary phone widths and prevents stale/unknown scope IDs from producing an empty utility strip. No P0-P2 finding remains. Retrieval, ranking, source selection, and clinical output behavior are unchanged. Highest residual risk is unexercised browser combinations outside the focused cross-route responsive matrix. | Focused header DOM 4/4; focused ESLint; `git diff --check`; live 1280px route QA with zero overflow and visible keyboard focus; production Playwright build compiled, TypeScript passed, 1,678 pages generated, and focused Chromium responsive/search/prescribing matrix passed 16/16. `verify:pr-local` passed runtime, Prettier, full ESLint, and TypeScript; its complete unit run stopped only when the unrelated load-sensitive `reconciliation-preflight` case exceeded 30 seconds, then that file passed 5/5 in isolation. No OpenAI, Supabase, Railway, deployment, production-data, or clinical provider workflow ran. | -| 2026-07-24 | `main` | `037b4808100946f96aee28b8ff51939ae2986851` | Comprehensive repository review (architecture, security/privacy, API/DB, RAG/clinical, UX/a11y, performance/CI/ops) | Changes requested. No P0. Two confirmed P1 clinical-grounding defects: (1) numeric verification skips truncated claims after the 24-claim cap when earlier claims contain numbers; (2) unsupported prescriptive treatment recommendations remain grounded as routine/partial. Multiple P2 privacy/ops findings: signed-URL cache survives sign-out; upload/enrichment/search telemetry can retain raw filenames; negated urgency still labelled Red flag; mixed `partial_invalid_model_citation_ids` evade the invalid-ID gate; readiness probe lacks an explicit dependency timeout; Railway watch patterns miss transitive build controllers. Known tracked residuals reconfirmed: #052 enrichment/reindex overlap, #059 credential containment (operator), #007 Tools route dual entry. Highest residual risk remains live answer-quality/clinical grounding plus operator credential/#053 legal gates. No source fixes applied. | Offline: runtime, migration-role, function-grants (30), owner-scope (40 routes), GitHub Actions pins, PR-policy self-test, gate/CI-scope/Codex autofix guards, lint, typecheck, sitemap, knip, knip architecture budgets, env-parity names-only, docs index/scripts, production-readiness:ci, offline RAG 36 fixtures + 21 suites/308 tests, focused clinical/RAG contract suite 122/122, Chromium accessibility 12/12 and `verify:ui` 267/267 after identity-confirmed `npm run ensure`. Targeted offline red proofs for both P1s and the citation/safety/signed-URL P2s. Provider-gated skipped: live drift, supabase-project (non-dry), migration-history, live RAG/OpenAI evals, hosted CI, Railway mutations. | -| 2026-07-24 | `remediate-audit-system-issues` | `ae54de2b10f1c586d90c62fc3e50654dd8e917a1` + fixes | Audit remediation verification and merge readiness review | READY. Fixed the P1 (Unsafe automation) by restoring the WMI process name filter while expanding it to include common node wrappers (`node\|npm\|npx\|tsx\|vitest\|playwright\|bun`). Fixed the P3 (maintainability friction) by adding `rimraf` to `devDependencies`, ensuring offline availability in CI. No high-confidence P0-P2 defects remain. | Static review of diff against origin/main. Fixed issues locally and re-verified. No OpenAI, Supabase, or live provider command ran. | -| 2026-07-24 | `cursor/docs-reliability-review-c38b` | `af5d44abf031581d256006b51a1be98563d441d5` | Documentation reliability review vs repo state (setup, env, ops runbooks, testing safety) | Fixed P1/P2 doc drift: worker region Sydney→Railway Singapore; DR golden gate 23/23→36/36; Railway health `/api/health/ready`; auth checklist aligned to magic-link+OAuth UI; staging identity vars in `.env.example`; provider-approval boundary on testing/readiness docs; mode count 11→13. No P0. Residual: historical `23/23` mentions in point-in-time/archive docs left alone. | `npm run docs:check-links`; `npm run docs:check-index`; `git diff --check`. No provider/OpenAI/Supabase/Railway mutation. | -| 2026-07-24 | `main` / PR #1122 tip `037b4808100946f96aee28b8ff51939ae2986851` | `037b4808100946f96aee28b8ff51939ae2986851` | Code-quality review of tip commit (streamlined sidebar tool list) | No P0-P1. Two P2 maintainability findings: (1) dual catalogue — `sidebarToolItems` still defines specialist tools that `primarySidebarToolIds` always filters out, leaving unused Lucide imports and a footgun where new catalogue rows do not appear unless also added to the Set; (2) favourites-auth-gate asserts primary IDs by regex-parsing the Set initializer source, which couples the suite to TypeScript formatting. Highest residual risk is quiet nav drift if specialists are re-added only to `sidebarToolItems`. #066 in outstanding-issues still describes this sidebar land as open despite the tip merge. | Static diff inspection of `ClinicalSidebar.tsx`, `tests/favourites-auth-gate.test.ts`, `tests/ui-smoke.spec.ts`; no lint/test/provider runs (pure review). | -| 2026-07-24 | `codex/review-search-bar-behavior-and-establish-rules` (PR #1137) | `b10514374ac7640e5d3395f707c6f958764ae131` + ledger bookkeeping | PR babysit: CI fix + Codex threads + drift | COMPLETED for current head. Restored Tools arm in `showDesktopHomeComposer` and moved `0rem` reserve comment to `mobileComposerReserve` (3d82ead2); replaced unresolvable ledger SHA `bcf4571…` with `6ee0484…`; formatted `docs/search-chrome-behaviour.md`; merged `origin/main` (`0cc0ee2d`). 3/3 Codex review threads resolved via GraphQL (inline replies 403 with this token). Prior CI failures (syntax from misplaced comment) cleared on 3d82ead2; Production UI job cancelled mid-aggregate before this merge — CI re-running after push. | Local: format:check on touched files; Vitest `ui-overlay-css-contract` + `mobile-composer-reserve` 15/15. Hosted: static/unit/build/advisory green on 3d82ead2. No provider-backed checks run. | -| 2026-07-24 | PR #1135 / `cursor/sitewide-design-ux-review-6176` | merge `origin/main` @ `3d6954a3` | babysit: re-merge main after #1133; renumber UX archive IDs | CONFLICTING after `main` advanced with database-interface audit. Kept product UX fixes; rebuilt `docs/outstanding-issues.md` from `origin/main` and archived sitewide UX defects as collision-free `#070`–`#074` (provisional PR IDs `#068`–`#072` collided with main `#068` drift-manifest / `#069` table-facts profile). Native-`disabled` CodeRabbit ask remains declined (focusable coming-soon contract). | Local merge conflict resolution only; hosted CI pending on merge commit. No provider-backed gates. | -| 2026-07-24 | PR #1135 / `cursor/sitewide-design-ux-review-6176` | `4ff92ea76f1b4d7962adc47ce88bcb153989c9ba` + post-comment docs | babysit: main merge, CI, CodeRabbit thread disposition | MERGE-READY after prior conflict resolution with `origin/main`. Product UX honesty fixes retained with main answer-relevance trust gating. CodeRabbit MD028 + ledger token fixed; native-`disabled` request declined as it conflicts with the focusable coming-soon placeholder contract. Auto-merge enabled. | Hosted required checks green on that tip. Focused Vitest mobile-interaction + visual-evidence tabs green. No provider-backed gates. | -| 2026-07-24 | `origin/main` | `6ceaaff50712e10e857bf9a5a7ec88b530bf7b35` | sitewide design/UX review (production pages) | FINDINGS CAPTURED. No P0. Confirmed defects later archived as `#070`–`#074` after ID collision with main `#068`/`#069`. Updated `#010` for Compact/Detailed selected-but-disabled look. Deduped against `#007`/`#016`/`#038`–`#041`/`#063`–`#066`. Residual: large mobile PWA install sheet density; compare URL-state sync; axe coverage beyond home (`#040`). No product code fixes in this pass. | Offline: design-system-contract, type-scale, icon-scale, brand:check, design-sweep evidence. Live: `npm run ensure` → `http://localhost:4461` identity OK; mode-home/detail HTTP 200 + no document overflow at 390/1280; presentation href + forced Overview navigation proof; Tools Sort/More DOM proof; `test:e2e:accessibility` 12/12. Screenshots under `/opt/cursor/artifacts/screenshots/`. No OpenAI/Supabase/GitHub/hosted CI/provider calls. | -| 2026-07-24 | `cursor/database-interface-audit-0883` / PR #1133 | `8c4c5556ef470673da492aa5f901513c84637d83` | PR babysit + Bugbot + Codex thread triage | COMPLETED for current head. Fixed Codex P2s: stranded queued recovery pages past open-job rows; bulk retry_failed enrichment lease preflight scopes to failed docs only. Bugbot ClinicalDashboard safety-findings finding is not in this PR unique diff vs main. PR policy Clinical Governance Preflight added in body. Merged origin/main. | Local Bugbot; focused Vitest; gh PR/CI. | -| 2026-07-24 | `main` | `6ceaaff50712e10e857bf9a5a7ec88b530bf7b35` | Supabase interface / performance / schema guardian audit | COMPLETED. No P0/P1 live security hole. Confirmed service-role + app-layer ownership model, fail-closed `retrieval_owner_matches`, and project-ref pinning. P2 findings: duplicate unscoped `correct_clinical_query_terms` block in `schema.sql` (safe definition wins at replay); reindex routes miss fresh enrichment-lease gate (`#052`); upload crash can strand `queued` without a job (`#062`); table-facts RPC still `LANGUAGE sql` + `force_custom_plan` (byte-identical plpgsql+EXECUTE remains the latency win). P3: base match RPC execute revokes rely on roles.sql; `invoke_ingestion_worker` hardcodes URL; cold multi-RPC fan-out. Remediation continues on `cursor/database-interface-audit-0883`. | Static schema/RLS/RPC/grant/owner-scope/auth/client inspection; upload/reindex wiring; scale/SLO/deploy docs; outstanding-issues `#052`/`#062`. Provider-gated skipped: `check:supabase-project`, live `check:drift`, `check:indexing`, `profile:retrieval`, `eval:retrieval*`, migration apply. Notion MCP unavailable (`needsAuth`). | -| 2026-07-24 | PR #1125 / `codex/answer-relevance-fail-closed` | `8d9fb2408f13e305138749655214baa0020fcfd4` | Follow-up: clear comparison/`documentBreakdown` in untrusted clinical notes | APPROVE for the scoped P2. `trustGatedAnswerForClinicalNotes` now clears `documentBreakdown`, `comparisonMatrix`, and `comparisonEvaluationState` when relevance is not source-backed, so Clinical Notes → ClinicalOutputPanel cannot rebuild comparison-detail tables from raw `best_quote` values. Prior visual/section/quote gates remain. Residual risk is still deliberate low-trust rendering for legacy payloads without `isSourceBacked: true`. | Focused jsdom/policy regressions: `tests/visual-evidence-tabs.dom.test.tsx` 5/5 after hardening the comparison case (caption + matrix values absent). Thread disposition posted and resolved. No live RAG/OpenAI/Supabase mutation. | -| 2026-07-24 | `codex/answer-relevance-fail-closed` | `ac0d4305478a0bc8fef03894b78ec5911912c08a` | Missing answer-relevance metadata across render policy and live dashboard grounding | APPROVE after resolving two review P2s. A shared `isAnswerSourceBacked` predicate now requires explicit `isSourceBacked: true`; missing or explicitly negative relevance cannot retain high render trust, a grounded dashboard state, visual/table evidence, or a clinical-notes table bypass. Explicitly source-backed answers preserve supported behavior. Retrieval, ranking, generation, source selection and stored data are unchanged. Highest residual risk is deliberate compatibility tightening for older answer payloads without relevance metadata; they render low-trust and expose review sources rather than richer evidence blocks. | Initial red policy proof failed with `high`; two later red proofs exposed retained visual evidence and the clinical-notes raw-table affordance, then passed after both render-model gates. Focused render/provenance/clinical-safety tests passed 37/37; the focused DOM/policy pair passed 31/31. Offline RAG passed 21 suites/308 tests and 36/36 fixtures; production-readiness was READY against `Clinical KB Database` read-only; `verify:pr-local` passed runtime, formatting, lint, typecheck, all 366 test files (3,254 passed/1 skipped), production build (1,677 pages), client-bundle secret scan and RAG fixture validation; the earlier local `verify:ui` passed 267/267. After the final UI fix, `verify:cheap` again passed all 20 non-test gates, lint, typecheck and 3,254 tests, with only tracked issue #067 timing out under machine load; its isolated retry also exceeded the same 30-second limit and was not repeated. Fresh exact-head hosted checks are required. No live RAG, OpenAI request, Supabase mutation, Railway action, production data operation or deployment ran. | -| 2026-07-24 | `codex/safety-plan-no-patient-data-contract` | `b94987c94537f3114a3429848fa908bdecd1d80a` | Safety Plan Generator identifier, local-state, copy, print, privacy-notice and PIA contract | APPROVE. No P0-P2 finding. The patient name/initials field is removed; the builder now asks for identifier-free minimum content, retains working state only in the mounted React component, and makes clipboard/print/PDF export an explicit handling boundary. The PIA and product privacy copy distinguish this local-only tool from provider-backed questions. Highest residual risk is outside Clinical KB: users must handle exported copies under an approved clinical-record process, which the UI now states at the export controls. | Privacy/component DOM 3/3 plus updated privacy-copy 2/2; focused Chromium copy/print/no-fetch-or-XHR 1/1; `verify:cheap` passed all 21 gates, 366 files and 3,245 tests with 1 skip; production-readiness READY using the existing canonical environment without a provider call; production build and client-bundle secret scan passed; offline RAG fixture/manifest 36 cases/21 suites passed. `verify:pr-local` passed runtime, formatting, lint and typecheck, then stopped on the unrelated load-sensitive `reconciliation-preflight` 30-second timeout; that test passed 5/5 isolated and the preceding full suite passed, so the unchanged five-minute gate was not retried. No Supabase, OpenAI, Railway, live RAG, production data or deployment action ran. | -| 2026-07-24 | PR #1114 / `codex/universal-ledger-main-followup-20260724` | `eedbe594a89eaa0aad8a517ee8808b089cb5ff57` + reviewed working diff | Streamlined-sidebar handoff in the merged universal ledger | APPROVE. PRs #1112, #1116, and #1117 landed the universal-ledger baseline, two preserved UI tasks, and credential/hook hardening; this follow-up preserves that current-main schema and adds only the still-missing sidebar delivery as collision-free `#066`. The queue remains gap-free and every recommended ID has one open row. Sidebar implementation stays recoverable from remote branch `origin/codex/sidebar-test-fix-20260723` at full commit `cd54e68fbf7b07b5dffe3220e36af2caa528da54` until its local/browser/build/hosted merge proof is complete. | Focused sidebar/favourites tests previously passed 18/18 on the recorded implementation commit; this ledger follow-up passed Prettier, remote-ref recovery, 36-row contiguous-order/46-open-ID/next-ID invariants, and `git diff --check`. The broader reconciled precursor passed `verify:cheap` (365 files, 3,242 passed/1 skipped); fresh exact-head hosted CI is required on PR #1114. No OpenAI, Supabase, Railway, deployment, live-app, credential, or production-data action ran. | -| 2026-07-24 | `codex/universal-ledger-main-final` | `527988c2ccabc98b4d0673d33360c971df65fa0e` + reviewed working diff | Current-main universal-ledger reconciliation after PR #1106 superseded PR #1109 | READY. Kept PR #1106's current-main ledger and IDs, carried forward only non-duplicate recommended work from the superseded branch, and fixed the confirmed SessionStart empty-open defect. Every active recommendation now has a durable open ID; exposed-GitHub-token containment is the first A1 item; the Safety Plan privacy contract, absent-relevance fail-closed rule, stranded-upload recovery, threshold-conflict design, catalogue-toolbar convergence, and Current Clinical Work brief are retained without duplicating #1106's legal/config/release/staging/seed packages. Resolved #014/#034 claims stay archived, and PR #1110's scheduled-diagnostics priority remains intact. Highest residual risk is manual queue/open-table drift. | Empty-open fixture and real-ledger Bash execution passed; 33 contiguous recommendations reference tracked open IDs; 43 open items; no duplicate queued IDs; `docs:check-links`, `docs:check-index`, `docs:check-scripts`, `check:skills`, Prettier, and `git diff --check` passed. No OpenAI, Supabase, Railway, production, deployment, live-app, or credential action. | -| 2026-07-24 | PR #1106 / `codex/task-ledger-final-11318f` | `5d128a2844c2298d0da36df64e5e2f7dda11e14b` + reviewed follow-up diff | Universal task-ledger workflow and protected-main merge readiness | APPROVE after follow-up. `docs/outstanding-issues.md` is the single durable task ledger, with retained work carrying order, acuity, timing, capability, effort, dependencies, success criteria, verification and stop rules. Four actionable review findings were fixed: filtered `/issues` reads now apply the filter to open items before rendering queued and non-queued results; the session hook excludes queued IDs from its priority summary; `#030` is consistently P2/A2 in the canonical open table and queue; and the sole A1/P1 blocker is first while `#052` is explicitly the first code task. No other actionable review thread remains in the reviewed scope. | Protected CI at the initial reviewed head passed policy, static, safety/config, unit coverage, Semgrep, Gitleaks, GitGuardian and the required aggregate; UI, build, migration replay and release browser matrix were correctly skipped for the docs/workflow scope. Follow-up proof: scoped Prettier; hook syntax/runtime plus exact ID-deduplication, P2-count and A1-first assertions; docs links (1,136 references); canonical skill catalog (32 skills, 8 aliases); `git diff --check`. Exact-head hosted CI remains required after the follow-up push. No OpenAI, Supabase, Railway, deployment or production-data operation ran. | -| 2026-07-24 | `codex/supabase-document-change-trigger` | `9c7d9edf509a51478f5bebbabcca64e3926dc877` + reviewed working diff | Document-change ingestion trigger migration, schema mirror, grants, privacy and fail-safe delivery | APPROVE. No P0-P2 finding. The trigger is update-only, acts solely on a strict JSON boolean false/absent-to-true transition, sends only the receiver's allowlisted owner-scoped fields, fails open for document writes when Vault/GUC/pg_net is unavailable, and revokes execution from public/anon/authenticated. No production URL fallback exists. Highest residual risk is deliberate pg_net at-most-once delivery; the clear-then-flip recovery and data-preserving rollback are documented, and the trigger remains inert until both the Vault secret and environment base-URL GUC are configured. | Disposable Supabase Postgres `17.6.1.127` schema replay and drift-manifest regeneration passed (16s; scratch container removed); focused schema/drift/receiver Vitest 89/89; migration-role, function-grant (30 SECURITY DEFINER functions) and owner-scope guards; production-readiness CI mode READY with expected secretless-worktree warnings; offline RAG 21 suites/307 tests; `verify:cheap` 365 files, 3,241 passed/1 skipped; static trace of receiver payload, authoritative owner-scoped reload and idempotent enqueue path. No live provider mutation or migration apply. | -| 2026-07-23 | PR #1090 / `cursor/fix-phone-dock-edge-1b1d` | `761de7e9ad623b6bd8d634d849a9eb465d622e48` (merged as `09028ef217209fceb53f1122ac7738b509bce323`) | Phone safe-area and edge-to-edge search-dock UI review | MERGED. No P0-P2 finding. The branch was three commits behind, so current `origin/main` was merged before landing; the actual merge tree matched the reviewed synthetic tree. The dock remains flush to the viewport with safe-area padding inside the form, and the phone shell no longer retains the `dvh` clamp that created the Safari toolbar band. Zero actionable review threads. | `npm run ensure`; focused `ui-tools.spec.ts` phone-home and edge-to-edge scenarios: Chromium 2/2 and WebKit 2/2; refreshed hosted policy, security, unit, build, advisory UI, Production UI and required aggregate checks green; exact-head ancestry and local-main tree equality proved after merge. | -| 2026-07-22 | PR #1087 / `codex/reconcile-product-truth` | `edbc2260fef59ca2fa7c6973dffb85e32354bce1` (merged as `05dc52fd8408a65117e22a6236e43252203bea92`) | Product-truth copy, account persistence and unavailable-SSO presentation | MERGED. Cross-device claims now match favourites/preferences persistence; recent searches are identified as browser-session data; the contradictory “never shared” statement is removed. All unavailable setup providers and Apple elsewhere use the connected accessible “coming soon” placeholder pattern. The single review finding was fixed, replied to and resolved. | Red DOM proof; focused 19/19; `verify:cheap` 3,220 passed / 1 skipped; `verify:ui` 265/265; PR-local build/secret scan/offline RAG; final hosted required, Production UI, policy and security checks green. No provider calls or RAG spend. | -| 2026-07-22 | PR #1086 / `codex/reconcile-xlsx-budgets` | `5376880a40749b6526fd7e4603a7be9d04bc9624` (merged as `2963fba46eacd644618a588fa283f7597faa2644`) | XLSX resource-boundary review | MERGED. Enforces worksheet, non-empty-row, rendered-cell and UTF-8 output ceilings before result fragments are appended; sparse-column output is preserved. No actionable review threads. | Red 257-sheet reproducer; focused 4/4; `verify:cheap` 3,218 passed / 1 skipped; PR-local build/scan/offline RAG; hosted required/security/policy green. | -| 2026-07-22 | PR #1085 / `codex/reconcile-docx-budgets` | `b08c60e1127592f0bc08f88797905f1e871172ce` (merged as `008a92b0fbad652484b6cdde6295bc456f4b7bf9`) | DOCX extraction-budget review | MERGED after two valid allocation-order findings. Declared media/Word-XML sizes are checked before inflate/materialization, with post-read fail-safes; artifact count, single/aggregate bytes and extracted text are bounded. All threads resolved. | Red 1,001-media reproducer; focused 7/7; `verify:cheap` 3,214 passed / 1 skipped; PR-local; hosted coverage/build/security/policy green. | -| 2026-07-22 | PR #1084 / `codex/reconcile-bulk-reindex` | `7b7737bd63b9dcd3ba820379a54cfc11595d6e98` (merged as `589fb9b99e18061782b0c7b3fa6b14fa0e8388d5`) | Bulk reindex partial-success contract | MERGED. Completed mixed batches return HTTP 200 with successful, failed and missing results; preflight-wide conflicts retain non-2xx behavior; UI reports counts and refreshes successful work. | Red deletion-race proof; focused 127/127; `verify:cheap` 3,207 passed / 1 skipped; PR-local build/scan/offline RAG; hosted green. | -| 2026-07-22 | PR #1083 / `codex/reconcile-browser-matrix` | `7eed83d37c8ab29b520aa798b25bef9d12efbf5a` (merged as `0afa0a55501afd784bec9237dca9e1b5d98d849a`) | Current Chromium/Firefox/WebKit browser salvage | MERGED test-only Firefox stabilization. Stale browser expectations, unrelated styles and duplicate service-worker isolation were rejected. | Current-main 40 passed / 1 skipped / 1 Firefox failure; final targeted matrix 3/3; `verify:cheap`; `verify:ui` 265/265; PR-local; hosted green. | -| 2026-07-22 | PR #1082 / `codex/reconcile-non-rag-p2` | `eca5af958dadc3d79269ab4f41c56110eb8dace7` (merged as `d302be1cfd033eacd64a42d7ef6fe1af3c3b03ac`) | Reproduced non-RAG P2 salvage | MERGED only malformed fallback-PDF image tolerance and live-test env loading. Retryable auth was already on main; the old 31-file patch was not replayed. | Two red proofs; focused 37/37; `verify:cheap` 3,203 passed / 1 skipped; PR-local build/scan/offline RAG; hosted green. | -| 2026-07-22 | PR #1081 / `codex/reconcile-publication-approval` | `79dadbc46e5694ad7ea2232cdc14329632d40943` (merged as `a00638af2e1116896bedf493af0dbb591a707567`) | Publication reviewed-state digest, locks and migration | MERGED. Approval binds canonical document/metadata/artifact/generation state and publication locks relevant rows/rejects active work. New forward migration used; stale archived timestamp rejected. | Focused 72/72; 181-migration disposable replay; schema/types/drift regeneration; grant/owner/migration guards; PR-local 3,201 passed / 1 skipped; hosted migration/required checks green. No live apply. | -| 2026-07-22 | PR #1080 / `codex/reconcile-health-readiness` | `199d98f9d3385964dd7c48a28d2ebe2b2382635d` (merged as `6976aaeeece84680ed6ffc9e77f839f3a314ec4e`) | Supabase readiness fail-closed behavior | MERGED. Returned and thrown probe failures degrade readiness without leaking raw dependency errors; setup-status backoff remains limited to availability failures. | Focused 22/22; amended `verify:cheap` 3,199 passed / 1 skipped; PR-local/build/offline RAG; hosted green. | -| 2026-07-22 | PR #1079 / `codex/fix-auth-cookie-precedence` | `f5d00416be2d52ebbf59ef1b0c108021446551a6` (merged as `a8814b671b43938428fe2dbba355bf5ddf79f5c9`) | Late auth review follow-up | MERGED. Current-project SSR cookies precede stale legacy cookies; retired-project cookies are ignored; invalid modern credentials never fall back. | Focused auth 148/148; hosted full gates green. Heavy local rerun was lock-blocked and transparently deferred. | -| 2026-07-22 | PR #1078 / `codex/reconcile-auth-upload-privacy` | `f83bb6772ff8e4eb6e7ea2c6e7b53ea39ed8f990` (merged as `001ce3543cb7e8020b0f6a5c3171f14601c73e6b`) | Optional-auth tri-state and upload-privacy revalidation | MERGED auth fix. Presented invalid/malformed credentials return 401 instead of anonymous quota; absent credentials preserve public reads. Anonymous-upload metadata patch rejected as stale because uploads are already administrator-only before parsing/duplicate lookup. | Red auth proof; focused 141/141; `verify:cheap` 3,191 passed / 1 skipped; PR-local 3,192 passed / 1 skipped plus build/offline RAG; hosted green. | -| 2026-07-22 | PR #1077 / `codex/reconcile-migration-role-guardrails` | `6845f238f54a095f9a9a81f8ebdde0c2ed8fe1ce` (merged as `bf9a50836a445441f4d224686c54f1c4af257b6a`) | Hosted migration-role and Docker-owner guardrails | MERGED. Reserved-role references are rejected in active surfaces; the sole immutable historical exception is checksum-pinned; replay discovers the storage owner dynamically. | Red six-reference proof; focused 15/15; PostgreSQL 17.6 replay; `verify:cheap` 3,182 passed / 1 skipped; PR-local/hosted migration and image checks green. | -| 2026-07-22 | PR #1076 / `codex/reconcile-therapy-mode` | `4008c62bea9496a1f597a9fc2c3142c69b937cfb` (merged as `142646355a045314da85fa2b1582fdc45b2ac02e`) | Therapy mode user-facing naming | MERGED. Copy/metadata/navigation use Therapy mode while `/therapy-compass` and internal names remain. Review found sidebar and codebase-index gaps; both fixed and all threads resolved. | Focused 31/31; sitemap/index; identity-verified server; focused Chromium 2/2; `verify:cheap` 3,177 passed / 1 skipped; hosted Production/Advisory UI green. | -| 2026-07-22 | PR #1075 / `codex/reconcile-route-reachability-ast` | `58e57a79b4e7766aebd3d0404a6c431f3a286bbe` (merged as `46f143d135afcd2f449ae6bedd05332a7af35f4d`) | Binding-aware route-reachability AST | MERGED. Recognizes bound Next navigation APIs and allowlisted `ModeHomeTemplate.actions`; raw anchors, prefetch, shadowed identifiers and arbitrary href metadata do not count. Both review findings fixed/resolved. | Focused 5/5; full unit 3,172 passed / 1 skipped; `verify:cheap`; offline RAG; hosted required/security/policy green. | -| 2026-07-22 | PR #1062 / `codex/chat-supabase-rls-title-words-0ef3` | `38efe6d7ab8c3ea7c550f6c30bbcefd527a23a2a` (merged as `ae950de196b2a8e39e88226f41ef941be14e415d`) | Backend-only title-word policy and live-drift review | MERGED. Service-role-only RLS/ACL contract retained; browser roles remain revoked. Read-only live comparison found no unexpected drift and no migration apply was needed. Review thread resolved. | Focused schema 67/67; PostgreSQL replay/drift/grant/owner guards; production-readiness READY in the credential-bearing source checkout; live read-only drift clean. | -| 2026-07-22 | PR #1061 / `claude/settings-dialog-tests-123366` | `0638fee21a60f29b1be1f3302c95c69db693c19d` (merged as `3e70a22c671da0199d507b00b0a77e9a99db2621`) | SettingsDialog action-flow coverage | MERGED test-only action coverage with correct `vi.hoisted` setup. Stale review thread was verified, replied to and resolved; unnecessary fixture-reset follow-up was not pushed. | Focused 5/5; PR-local 3,172 passed / 1 skipped and offline RAG 36/36; hosted required checks green. | -| 2026-07-21 | main | 71059eba98bc6e335c2c82cb9ab542aad44dfae8 | database audit, drift analysis, and data contract review (/drift /data /audit) | Completed offline audit of database schema, migrations, generated drift manifest, function grants, owner-scope API boundaries, therapy data indexes, and data ingestion logic. Verified drift-manifest byte-identical match to schema.sql (schema_sha256: 50da0978a164...). Found one P2 static check failure: orphaned test tests/check-july8-live-batch.test.ts references deleted script scripts/check-july8-live-batch.ts, causing npm run check:knip and verify:cheap to fail. Live Supabase schema comparison and live ingestion audits were approval-gated and skipped per provider boundary rules. | Local offline checks run: Vitest 339/339 test files passed (3,053/3,054 tests passed, 1 skipped); tests/drift-detection.test.ts (10/10 passed); check:function-grants (28/28 SECURITY DEFINER functions revoked); check:owner-scope (40 API routes clean against 25 owner tables); check:therapy-data-index (205 records OK); check:design-system-contract (520 files clean); strict check:type-scale & check:icon-scale; check:runtime; check:github-actions; check:ci-scope; check:ci-triage; check:pr-policy; check:gate-manifest; check:codebase-index-coverage. Provider checks skipped (approval-gated): check:drift, check:supabase-project, check:migration-history, audit:source-governance. | -| 2026-07-14 | multiple remote branches (16 refs) | multiple SHAs | remote branch cleanup | Safely deleted 16 fully merged and redundant remote branches on origin (including `claude/canary-gate-fixes`, `claude/codebase-index-coverage`, `claude/design-elevation-e1e2`, `claude/design-sync-fixes-p1`, `claude/docs-script-linter`, `claude/document-image-viewer-review-ox7t11`, `claude/generation-token-starvation-fix`, `claude/github-actions-codex-issue-f4t4s5`, `claude/hero-composer-hydration`, `claude/pdf-signed-url-refresh`, `claude/pt-audit-monitor-marker-fix`, `claude/pt-audit-pr2-variant-early-exit`, `claude/pt-audit-pr4-trust-copy`, `claude/pt-audit-pt17-live-monitor`, `codex/eval-canary-quota-handling`, and `cursor/clean-sentry-lockfile-orphans-74cf`). | Confirmed zero unique commits against origin/main and MERGED/CLOSED status on GitHub via `gh pr list`. | -| 2026-07-14 | worktrees (6244, 8ba3, b6ff, e6b5, repo-improvement-review-09945c) | detached HEADs | local worktree cleanup | Safely removed and unregistered 5 clean, inactive worktrees from the git registry. | Ran `git worktree remove` and verified final active worktrees. | -| 2026-07-14 | main | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | branch alignment | Fast-forwarded local `main` to latest `origin/main` commit. | Verified main and origin/main revisions and updated ref locally. | -| 2026-07-14 | local branches (5 refs) | multiple SHAs | local branch cleanup | Safely deleted 5 local branches that were squash-merged or had no changes (including `claude/canary-latency-recalibration`, `claude/process-hardening-consolidation`, `codex/fix-registry-indexing-health`, `codex/pr-556-sync`, and `codex/pr-597-fix`). | Verified diff was identical to origin/main and confirmed MERGED status on GitHub. | -| 2026-07-18 | local repository cleanup against `origin/main` | 1d9fdcfdd | repository-maintenance summary (non-skip aggregate) | Removed 26 clean, exact-proven redundant worktree registrations (58 -> 32 before the temporary cleanup worktree) and deleted 78 unregistered local branches: 73 direct `origin/main` ancestors plus five exact/covered squash-merge refs for PRs #852, #859, #868, #869, and #870. Preserved all dirty, active, open-PR-owned, backup, ledger-protected, and patch-unique/ambiguous work, including the divergent local `main`; no reset, force operation, remote-branch deletion, or source replay was performed. Six unregistered Windows directory residues remain without `.git` markers after Git cleanup. Clean standalone deltas were either already merged/current-main content or owned by active PR/task work, so no product change was duplicated. This aggregate row is audit history only and must not be used to skip a future branch-level cleanup review. | Mandatory task-start preflight; fresh fetch/prune; full local branch/worktree/status and Codex task ownership inventory; 863-PR GitHub snapshot before the API rate limit was exhausted; cherry-pick-aware history, exact merged-head/descendant proof, and synthetic merge-tree checks; exact-old-value `git update-ref` deletion; per-worktree clean/head rechecks; final worktree/prune inventory. No OpenAI, Supabase, deployment, production-data, or live clinical workflow ran. | -| 2026-07-18 | PR batch screenshot queue → #883–#888 / #891 | 8b0a600209 (main tip after #887) | open-PR review + merge babysit | Reviewed and land-safe-merged screenshot PRs. Merged #888 (worker placement dedupe), #891 (PR policy `github.workflow_sha` checkout superseding incorrect #884 `base.sha`), #886 (mobile differentials FAB), #885 (Compare selected href; closed duplicate #883/#882), #887 (Therapy mode-home align + nested-main landmark fix). Closed superseded #884/#883/#882/#881/#877/#875. Fixed PR-policy bodies (Clinical KB governance checkbox), resolved Codex/CodeRabbit threads, Prettier on therapy landmark files, and re-synced branches through main between merges. No high-confidence residual P0-P1 on landed heads. | Hosted required checks green per PR before squash auto-merge (PR policy, Static, Unit, Build, Production UI where UI-scoped, PR required, Semgrep, Gitleaks, GitGuardian). Local: `check:pr-policy`, focused therapy landmark Vitest 5/5, Prettier on touched therapy files. No OpenAI/live Supabase writes. | -| 2026-07-18 | codex/chat-audit-remediation-pr-0a27 / PR #873 | 4bea60e9fc5c181fee33b2af27a4b6e3176eac27 | CI auto-resolve risk-routing regression and PR handoff | Confirmed the broader audit remediation was already merged through PR #814. Fixed the residual rename-routing gap by classifying both current and previous paths and explicitly covering `src/data`, reusable GitHub actions, and the action-pin/Codex guard scripts. Automated PR review then found one P2: an excluded old test path could still trigger high-risk routing when paired with a non-excluded new docs path. Fixed before handoff by deriving non-excluded paths first and using that same set for risk and complexity checks. No P0-P2 remained; no product runtime, clinical behavior, provider configuration, or production data changed. | Full `verify:pr-local` passed on the initial three-file patch: Node/npm runtime, changed-file format, ESLint, TypeScript, 301 Vitest files/2,788 tests, and 36 offline RAG fixtures; build skipped as unaffected. After the review fix, the Codex workflow guard, action-pin guard, Prettier, focused Vitest 54/54, and `git diff --check` passed. Hosted checks on the initial PR head passed; the review fix was also verified by the focused local checks before the final main merge. GitHub interactions were user-authorized; no Supabase/OpenAI/live-service command ran. | -| 2026-07-18 | PR #868 / codex/private-title-privacy-20260718 | 77482fc9e (privacy implementation + rollout-order follow-up) | title-vocabulary privacy, migration safety, and merge-readiness review | Fixed the historical private/non-indexed `document_title_words` exposure with a forward purge, exact indexed-public-title invariant, concurrency-safe `FOR SHARE` guard, constraint/ACL/RLS hardening, and a fail-closed postcondition. Review then found and fixed a P1 rollout interval by purging inside `20260717171000` before its table-backed corrector is installed, while retaining the forward migration for already-applied environments. The review thread was resolved; merged as `0df01d88ac36616a3f47e2e94e758432ef27999c` and verified on fresh `origin/main`. | Disposable Postgres replay and drift-manifest regeneration; focused schema Vitest 66/66 before the final docs-only sync; function-grant check; scoped ESLint; diff/manifest proof. Exact-head hosted Static, Unit coverage, Safety/config, Migration replay, PR required, policy, Semgrep, Gitleaks, and GitGuardian passed. Non-required Supabase Preview failed against a separate preview target and was not touched or rerun. No live Supabase/OpenAI/product-provider command or production migration apply ran. | -| 2026-07-18 | PR #865 / codex/docs-migration-runbook-safety-20260718 | 78ea2ccd6 | migration runbook, rollback safety, and clinical-governance review | Replaced stale sole-pending-migration guidance, prohibited restoring the unscoped corrector, added forward-only rollback and exact migration ordering, and marked the historical WIP report superseded. Review uncovered the pre-existing private title-word P1, so the runbook now blocks live rollout until a forward purge/invariant migration is merged and verified. The review thread was resolved; merged as `ec9142628752e6d11531e20a6ebf2e95cf39f865` with exact changed blobs verified on `origin/main`. | Documentation links 915, documented scripts 299, affected Markdown Prettier, static migration-order/rollout-blocker assertions, and `git diff --check` passed. Hosted Static, PR required, policy, Semgrep, Gitleaks, and GitGuardian passed; docs-irrelevant jobs skipped. No Supabase/OpenAI/database migration/deployment/provider call ran. | -| 2026-07-18 | PR #861 / codex/design-audit-main-safe-20260720-final | d8c1916ac (functional head 593d5aa00 + current-main merge) | design-audit/search cancellation merge review | Fixed unsupported Forms pathway claims, propagated cancellation through every retrieval RPC, removed duplicate favourites “Also matches” results, and resolved all four review threads. Merged as `3b2dd9ef76ff1c8c099fc1972065628d23b853b1`; exact `origin/main` commit and tree content were verified after merge. | Exact-head hosted Static PR checks, Unit coverage, Build, Safety and config checks, Production UI, Advisory UI, Migration replay, PR required, PR policy, Semgrep, Gitleaks, and GitGuardian checks passed. No Supabase, OpenAI, or other product-provider call ran. | -| 2026-07-18 | PR batch screenshot queue → #853 / cursor/pr-queue-land-3084 | 11ec0122f (tip of cursor/pr-queue-land-3084) | open-PR review + merge babysit | Reviewed screenshot PRs #833/#837/#845–#852 + Communication #19. #852/#848 already merged. Closed superseded/unsafe: #833/#837 (empty vs main), #845 (clinical-search over-expand; fixed in #853), #846/#847/#849 (Production UI red design-audit dupes), #850 (CONFLICTING), #851 (schema-test regressions), #726 (CONFLICTING CodeRabbit UTG). Unique safe fix landed in #853: agitation chart expansion without bare table/management over-trigger. Communication #19 inaccessible (repo not resolvable). | Focused Vitest clinical-search 42/42. Local verify:cheap unit suite hit pre-existing pdf-extraction-budget failures also on main (2 tests). Hosted #853 required checks green (Static/Unit/Build/PR required/policy/Semgrep/Gitleaks/GitGuardian). Squash-merged to main. Also closed follow-on dupes #854 (same failing tip as #851) and #855 (Clinical KB H1 reverts #814 Clinical Guide contract; Static/PR policy red). Communication #19 inaccessible. No OpenAI/live Supabase writes. | -| 2026-07-18 | PR batch screenshot queue → #808/#812/#814 | 44555ab9e414f615981eb444f46a62333c28ec18 | open-PR review + merge babysit | Screenshot PRs #784–#789 closed as superseded. Unique residual work landed via #808 and #812. Design-audit/Playwright stack landed via #814 after Production UI fixes (Clinical Guide H1, service mocks, reduced-motion dock asserts), presentations empty-query fallback, and CodeRabbit thread resolution (RightRail remount, IS DISTINCT FROM, no-op dropped trigram migration). #783 already merged. Communication #17 inaccessible from this token. | Hosted #808/#812/#814 required checks green including Production UI; migration replay green on #814. No OpenAI/live Supabase writes. | -| 2026-07-18 | PR batch screenshot queue → #808 / cursor/pr-queue-land-bfe7 | 3b54a785c7c6073024b6bae0182b6a9321154595 | open-PR review + merge babysit | Consolidated unique remaining work from screenshot PRs onto current main via #808 (Also matches placement, factsheets, audit metadata minimize with numeric storageRemoved, answer-progress UI gate, global-error role=alert). Superseded already-landed #800/#799/#801/#802 (via #798/#804). Closed conflicted/failing design-audit duplicates #789/#790/#803/#806/#807/#788 and older duplicates #748/#749/#751 without replaying Production UI regressions. | Hosted #808: required checks green (Static/Unit/Build/Production UI/Migration replay/PR required). Supabase Preview failed (non-blocking concurrent preview limit). Local focused Vitest audit+factsheets; sitemap:check; ci-change-scope self-test. verify:cheap PDF budget failures pre-existing on main. No OpenAI/live Supabase writes. | -| 2026-07-17 | PR #732 / claude/edge-to-edge-content-lv9x7k | 354f9bf31b56d811d8611a9b248f7aebc7cde082 | open-PR review + merge babysit | No high-confidence P0-P2. Phone shell/sheet/settings replace dvh clamps with h-full inside fixed inset-0 parents (iOS Safari toolbar collapse). Merged to main via auto-merge. | Hosted required checks + Production UI green; pairwise merge-tree with sibling UI PRs clean. | -| 2026-07-17 | PR #733 / claude/follow-up-design-sizing-250cop | 6565815b3bd000cb0224e52f8d0e4d84ae28371d | open-PR review + merge babysit | No high-confidence P0-P2. Follow-up chip row margin-bottom -0.125rem -> 0.4375rem stops overlap with composer pill. Merged to main. | Hosted required checks + Production UI green. | -| 2026-07-17 | PR #736 / claude/phone-touch-optimization-673ur4 | 755da28c29bf37e39fe2ab3d355f141a8f6eda35 | open-PR review + merge babysit | No high-confidence P0-P2. Touch floors reuse min-h-tap/size-tap; Therapy Compass phone overflow via tc-stack-sm/tc-scroll-sm. Merged to main. | Hosted required checks + Production UI green; globals.css auto-merges with #733. | -| 2026-07-17 | PR #737 / claude/therapy-compass-display-6kisnw | 594584dc79d9d6c14018dcce088357a251504d4f | open-PR review + merge babysit | No high-confidence P0-P2. Display rename Therapy Compass -> Therapy only (nav/sidebar/page/sitemap). Merged to main. | Hosted required checks + Production UI green. | -| 2026-07-17 | PR #738 / cursor/storage-bucket-migration-02e7 | b2755c814b47cdec6868bd009f3ca1cdbc3a7dea | open-PR review + merge babysit | Merge-ready storage-bucket idempotent migration + PR-policy base_ref checkout. Comment clarified for on-conflict reconciliation. Duplicate #710 closed. Merged to main. | Hosted required checks + Migration replay green; review thread resolved. | -| 2026-07-17 | PR #739 / cursor/pwa-optimization-merge-02e7 | 0d4aa5c73a4ff30274bb6286be04465286c815d7 | open-PR review + privacy fix + merge babysit | P1 fixed: removed backdated RAG migrations/schema seed that would regress public-only title corrector privacy. Also fixed sitemap API/redirect classification, services RightRail remount, focus=1 mode-menu flake, and merge conflict markers. Supersedes #735/#721. Merged to main. | Hosted full CI green including Production UI/Migration replay after fixes; unresolved CodeRabbit threads resolved. No OpenAI/Supabase writes. | -| 2026-07-17 | PR batch #732-#739 (screenshot queue) | 1ab611915e0630a527a533ee7ff16b82fd3e8982 | multi-PR merge babysit summary | Merged in order: #738, #733, #737, #732, #736, #739. #735 left open (token cannot close; CONFLICTING/superseded by #739). #710/#721 closed as duplicates. Residual: close #735 manually. | Hosted CI babysit + merge-tree; #739 Production UI flake fixed and re-verified green before merge. | -| 2026-07-17 | codex/ci-answer-progress-regression | bfa0ed3dfc69d5b333ba43479023cb9a8e8925d3 | CI verification gap | Fixed: the production answer-progress Playwright journey was excluded by both top-level and Chromium project matchers, while its filename also skipped the CI UI trigger; its assertions could therefore change without the required UI job executing. | Local static inspection of `playwright.config.ts`, `scripts/ci-change-scope.mjs`, Vitest globs, and CI workflow; classifier self-test confirms the journey now sets `ui_changed=true`. Focused Playwright execution reached the isolated Next build but was blocked by unavailable Google font downloads; no hosted CI or provider-backed checks run. | -| 2026-07-17 | PR #635 / claude/github-actions-codex-issue-f4t4s5 | ab09a8d52cc0a8a7e71b37885aaa358aae2522c8 | post-merge merge-readiness review | Already squash-merged to main on 2026-07-14 by BigSimmo. No open review threads or inline comments. CI required checks all green (Change scope, Static PR checks, Safety and config checks, Unit coverage, PR required, Semgrep, Gitleaks, GitGuardian); UI/build/migration jobs correctly skipped. Landed diff is test/guard hardening only for missing `CODEX_TRIGGER_TOKEN` graceful skip. No high-confidence P0-P2 defect. Source branch already deleted. No further merge action needed. | Hosted CI status via `gh pr checks 635` (all required pass); local `node scripts/check-codex-autofix-workflow.mjs` pass; focused Vitest `tests/codex-autofix-workflow.test.ts` 41/41. No OpenAI/Supabase/provider writes. | -| 2026-07-17 | PR #718 / codex/performance-latency-remediation-20260717 | b5f509744d4f4bac74d414644cd1802f64b97fa9 | CodeRabbit performance and SQL correctness follow-up | Resolved nine confirmed findings and dispositioned one stale test comment: document downloads revalidate signed URLs on every action; committed-generation filtering precedes detail pagination; enrichment fallback errors preserve identity; caller cancellation leaves the shared classifier flight alive; registry seeding preserves its cache signal; aliases emit canonical corrections; rate-limit success metadata is coherent; ambiguous upserts use named constraints; and grantable default ACLs fail closed. The proxy mock duplicate was not present. No remaining high-confidence P0-P2 defect was found. | Integrated focused Vitest 122/122; post-format Vitest 71/71; `npm run verify:cheap` passed runtime/policy/static guards, ESLint, TypeScript, and 2,684/2,684 tests; focused Prettier and `git diff --check`; disposable Docker replay, regenerated drift manifest, and transactional local SQL probes. No OpenAI calls, live Supabase DDL/migration/data write, deployment, or production mutation ran. | -| 2026-07-17 | PR #718 / codex/performance-latency-remediation-20260717 | d47ef7a329256687a615c33dd311806c2c1214a8 | hosted UI and migration-order merge-blocker follow-up | Fixed both integration defects exposed by the exact-head UI run: the document scope surface now triggers the deferred, deduplicated catalogue load, and viewer navigation closes unrelated disclosures before opening or scrolling to the selected section. Updated SSR-aware browser fixtures without restoring the removed detail request. Renumbered all three new migrations after the latest production migration and regenerated the drift manifest. No remaining high-confidence P0-P2 defect was found in the follow-up diff. | Focused Vitest 65/65; scoped ESLint and Prettier; `git diff --check`; isolated production Webpack build and TypeScript; focused Chromium 7/7 including both stress viewports; Docker schema replay and drift-manifest regeneration passed in 15 seconds with unchanged schema SHA. No OpenAI calls or live Supabase DDL, migration, rate-limit RPC, or data write ran. | -| 2026-07-17 | work | a185a59113619d160b29d8977b39a4a916e142b3 | component wiring and merge-readiness review | Reviewed the integrated PR #718 merge commit across its API routes, document viewer/dashboard wiring, universal-search streaming, owner catalogue cache, RAG response paths, migrations, and regression coverage. No new high-confidence P0-P2 defect was found beyond the previously recorded PR #718 reviews. The highest residual risk is exact-environment UI and full-suite verification because this checkout has no dependencies and its Node 20 runtime does not satisfy the required Node 24 toolchain. | Static merge/diff inspection; `git diff --check`; `git fsck --no-dangling --no-reflogs`. `npm run verify:pr-local` was blocked before checks because `tsx` is unavailable (`node_modules` is absent); installation was not attempted because the local Node 20.20.2/npm environment conflicts with `package.json`'s Node 24/npm 11 requirement. No provider-backed command ran. | -| 2026-07-13 | codex/lithium-answer-recovery-pr | c5fde11e64d8976e1c163d1b8618f58a52e0b8ff | lithium answer recovery and source governance | Fixed the provider-failure path with a grounded Australian source-backed fallback, a public-safe progress lifecycle, centralised Australian authority/context selection, and fail-closed locality repair. The live audit exposed and the branch fixed hierarchy identity false conflicts plus registry projections entering clinical metadata gates. The corrected audit/backfill found zero proposals, so no production write was made. No high-confidence defect remains. Residual risk is provider latency; live generation timed out but the grounded fallback completed. | `npm run verify:pr-local` passed: 1,988 tests passed/1 skipped, build/client scan, 36 fixtures, and 267 offline RAG tests. After review fixes, `npm run verify:cheap` passed with 1,992 tests passed/1 skipped. `npm run check:production-readiness` passed 5/5. `npm run test:e2e:critical` passed 9/9. `node scripts/run-playwright.mjs tests/answer-progress-ui-smoke.spec.ts --project=chromium` passed 2/2. `node scripts/run-eval-safe.mjs scripts/eval-rag.ts --question "Lithium dosing" --expect-australian --fail-on-threshold --json` exited 0 with one grounded FSH citation and no threshold/safety failures. `npm run audit:source-governance` reported 0 gaps/conflicts/proposals across 2,851 rows. `npm run backfill:source-metadata -- --locality-only` reported 0 changes. `git diff --check` passed. Full `npm run verify:ui` was not rerun after the aggregate runner lost its local server. | -| 2026-07-10 | codex/design-ux-review-fixes | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | design-system + UX + design | Five issue groups confirmed; scoped fixes applied in the worktree. | `npm run check:type-scale`; focused Vitest (19/19); `npm run typecheck`; `npm run lint`; `npm run sitemap:check`; browser/API-backed checks awaiting approval | -| 2026-07-11 | codex/design-ux-review-integration | 98093ec7b | branch-integration-review | Replayed the reviewed design and UX fixes onto current `origin/main`, preserved the lightweight evidence-panel boundary, and retained the merged quality fixes. | `npm run check:type-scale`; combined focused Vitest (8 files, 42 tests); runtime/action/sitemap/type-scale/lint stages of `verify:cheap`; typecheck blocked by stale worktree dependencies pending hosted clean install; `git diff --check` | -| 2026-07-09 | example/branch | abc1234 | branch-cleanup | Example: already merged into `main`; no unique patch content. | `git log --right-only --cherry-pick main...example/branch`; `git diff --name-status main...example/branch` | -| 2026-07-10 | codex/pr-testing-streamlining | 155c801cd58f797037d8aaa8b885405a1c599249 | working-tree diff: PR testing streamlining | Changes requested: 2 P1 clinical-gate defects and 7 P2/P3 scope, local parity, and UI-process defects. | `npm run check:ci-scope`; `npm run check:github-actions`; `npm run check:codex-autofix-workflow`; `npm run eval:rag:offline`; `npm run test:e2e:critical`; targeted scope classifications; `git diff --check` | -| 2026-07-10 | codex/pr-testing-streamlining | 155c801cd58f797037d8aaa8b885405a1c599249 | working-tree remediation review | All recorded P1-P3 findings fixed; no remaining high-confidence issue in the changed scope. | `npm run verify:cheap`; `npm run verify:pr-local`; `npm run eval:rag:offline`; `npm run test:e2e:critical`; `npm run test:e2e:advisory`; CI YAML parse; scope/action/Codex guards; `git diff --check` | -| 2026-07-10 | codex/review-autofix-flow | 155c801cd58f797037d8aaa8b885405a1c599249 | codex-autofix-flow | Fixed exact connector authorization, trusted-marker deduplication, and strict self-trigger matching; added regression coverage. | `npm run check:codex-autofix-workflow`; focused Vitest (4 passed); `npm run verify:cheap` pre-test stages passed before tool timeout; `npm test` (1,415 passed, 1 skipped); focused Prettier check; `npm run check:github-actions` | -| 2026-07-10 | codex/review-autofix-flow | 155c801cd58f797037d8aaa8b885405a1c599249 | codex-autofix-flow-followup | Fixed untrusted workflow-level concurrency interference and migrated the bridge from the Node 20 action runtime to `actions/github-script@v9`; added direct embedded-script execution coverage. | Focused Vitest (13 passed); targeted ESLint; `tsc --noEmit`; `npm run check:codex-autofix-workflow`; `npm run check:github-actions`; focused Prettier check; `git diff --check` | -| 2026-07-10 | codex/review-autofix-flow | 155c801cd58f797037d8aaa8b885405a1c599249 | codex-autofix-residual-fixes | Replaced one-shot PR deduplication with a three-cycle head-SHA cap, made comment permission failures fail visibly, and pinned `github-script` v9.0.0 to its verified immutable commit. | TDD red run (7 expected failures); focused Vitest green run (15 passed); `npm run verify:cheap` (152 files passed, 1 skipped; 1,426 tests passed, 1 skipped); focused Prettier check; `git diff --check`; official `git ls-remote` tag verification | -| 2026-07-10 | codex/architecture-review-fixes | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | architecture-review | Seven findings fixed in the working tree: three runtime cycles, unbounded owner caches, a client/server env boundary breach, reversed runtime-to-scripts ownership, and architecture-doc drift. | `npm run test -- tests/architecture-boundaries.test.ts tests/bounded-ttl-cache.test.ts tests/rag-score.test.ts tests/rag-cache-utils.test.ts tests/rag-cache-invalidation.test.ts tests/evidence-panels.test.ts tests/clinical-dashboard-merge-artifacts.test.ts`; `npm run verify:cheap`; `npm run check:production-readiness:ci` | -| 2026-07-10 | codex/architecture-review-fixes | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | frontend-architecture-review | Shared cycle/env findings confirmed and fixed; three additional findings fixed for defeated lazy boundaries, duplicate shell/dashboard subscriptions, and unstable search-context values. | `npm run test -- tests/architecture-boundaries.test.ts tests/evidence-panels.test.ts tests/clinical-dashboard-merge-artifacts.test.ts`; `npm run verify:cheap`; UI gate deferred pending explicit local-API approval | -| 2026-07-11 | codex/architecture-review-integration | b45df727b29aad8ba4ec5d4e96d1f0599d7dad8a | branch-integration-review | Replayed the reviewed architecture fixes onto current `origin/main`; preserved current CI/autofix history and found no new high-confidence defect in the integrated diff. | `npm run check:runtime`; `npm run check:github-actions`; `npm run sitemap:check`; `npm run lint`; `npm run typecheck`; focused Vitest (24 passed); full Vitest with `--testTimeout=30000` (1,433 passed, 1 skipped); `git diff --check` | -| 2026-07-10 | codex/quality-testing-typescript-fixes | 648abfa3f | code-quality + testing + TypeScript | 17 confirmed P2/P3 issues fixed; no P0/P1 findings; residual large-module complexity noted. | Focused Vitest and Playwright; full Vitest 1427 passed/1 skipped; coverage; lint; typecheck; production-readiness CI | -| 2026-07-11 | codex/quality-review-integration | d3fcef8bbc9ab12b929771421b532c1ed8b7e1e7 | branch-integration-review | Replayed the quality, testing, and TypeScript fixes onto current `origin/main` and consolidated the stronger standalone auth callback coverage into this branch. | Changed-file Prettier; focused Vitest (5 files, 23 tests); `git diff --check`; original branch full Vitest/coverage/lint/typecheck and targeted Chromium evidence retained | -| 2026-07-11 | codex/architecture-review-integration | 665103250ccc33b5870862b8d8467607a1ae5d23 | coderabbit-followup | Fixed POSIX project-root identity collisions and closed dynamic-import and self-cycle gaps in the architecture regression guard. | Local-server Vitest passed; architecture-boundaries Vitest passed (6 tests); `npm run typecheck`; focused Prettier; `git diff --check` | -| 2026-07-11 | codex/architecture-review-followup | f5deaaee98864f1d32c1060ae14966a4f5975872 | coderabbit-test-followup | Removed probabilistic no-collision assertions from the local identity test and replaced them with deterministic normalization, repeatability, ID-shape, and port-range checks. | Local-server Vitest (2 passed); focused Prettier; `git diff --check`; hosted CI/SAST/Secret Scan passed on the reviewed head | -| 2026-07-11 | codex/pr-check-followup | 298e8f5bec2a4673dd225da3f446f008b8f25953 | residual-pr-check-hardening | Ported only the three PR-check improvements not already merged by PR #454: pinned Supabase CLI/cache ownership, advisory Semgrep coverage for Edge Functions, and regression guards for both contracts. | `npm run check:github-actions`; `npm run check:ci-scope`; focused Prettier; `git diff --check` | -| 2026-07-11 | claude/mobile-search-bar-fix (PR #456) | b73196c2e2e4a536804cdcdb50879c29e2c582c5 | PR required-testing review | All 4 Advisory UI regression failures confirmed PR-caused via A/B against pre-merge main (01f2cee0d): the 640px mode-home query moved the phone composer out of the hero, contradicting the design tests; residual ≥640px vanish remained when the slot never mounts. PR merged (b32c17b34) before the rework landed; follow-up fix shipped on `claude/mode-home-composer-hero-fix` (0px hero query restored, portal-outcome inline fallback, new `@critical` composer-presence test). Also found: main CI red on every push — missing `RAG_QUERY_HASH_SECRET` secret fails the deployment boot smoke and skips `release-browser-matrix`; owner adding the secret. | Local chromium A/B (PR head 4/5 fail vs baseline product-pass); rework targeted run 6/6 pass incl. new `@critical`; `npm run typecheck`; `npm run lint`; focused Prettier check | -| 2026-07-11 | PR #487 / claude/answer-page-design-polish-ffd5a6 | b2c772606126f8323424bc9c0b636bac77c08789 | open-PR review, unresolved comments, and CI | Two findings fixed: expanded weak/unsupported prior answers retain an explicit source-review warning, and cross-mode search actions no longer log an incorrect detail-open telemetry event. Added a persisted prior-turn browser assertion. No additional high-confidence defect was found in the changed scope. | Focused answer-render and cross-mode Vitest (20/20); TypeScript; focused Prettier; `git diff --check`. Browser assertion delegated to hosted CI because Turbopack rejects the isolated worktree's external node_modules junction. | -| 2026-07-11 | PR #469 / claude/response-formatting-cleanup-b57a9c | f1864308e0b287bb83b2a13daca4c3aa2ab95a3e | open-PR review, unresolved comments, and CI | P2 fixed: the OCR bullet sanitizer now preserves line-start O blood values when followed by blood or red-cell noun tails while still stripping non-blood bullets such as `o Negative screen`. No additional high-confidence defect was found in the nine-file diff. | Focused sanitizer/extractive Vitest (75/75); TypeScript; focused Prettier; `git diff --check`. Production-readiness script ran fail-closed with provider variables cleared and reported only expected missing provider configuration. | -| 2026-07-11 | PR #466 / claude/search-timeout-failure-s6aiuj | 54d52292eeb9e1c7856b3dad89d1b72e0d49fd53 | open-PR review, unresolved comments, and CI | P2 fixed: SSE progress/token/error emission now tolerates a client cancellation racing an enqueue, so the catch path cannot throw while reporting the original stream error. No additional high-confidence defect was found in the six-file diff. | Focused SSE and search utility Vitest (13/13); TypeScript; focused Prettier. Hosted advisory browser failure was shared stale assertion drift and is rerun after this push. | -| 2026-07-11 | PR #483 / claude/differentials-page-review-a3daaf | 36cca1bf7c13718dcc60a61b75272c7c4fa5cd44 | open-PR review, unresolved comments, and CI | P2 fixed: authenticated diagnosis detail responses now derive related links, overlap links, and comparison presentation from the owner's current diagnosis and presentation rows rather than the bundled snapshot. Added an owner-only catalog regression test. No additional high-confidence defect was found in the changed scope. | Focused differentials route/catalog Vitest (26/26); TypeScript; focused Prettier; `git diff --check`. Production readiness ran fail-closed with provider variables cleared and reported only expected missing provider configuration. | -| 2026-07-11 | PR #489 / claude/document-viewer-redesign-55b68b | 9130c8b15a22dbbc965464a247ae930c04f2da62 | open-PR review, unresolved comments, and CI | P2 fixed: document deep links now expand the mobile indexed-text details and scroll the branch-specific visible mobile or desktop chunk instead of the first duplicated DOM match. Added focused desktop/mobile assertions. No additional high-confidence defect was found in the three-file diff. | Focused Prettier; TypeScript; `git diff --check`. Browser proof delegated to hosted CI because Turbopack rejects the isolated worktree's external node_modules junction. | -| 2026-07-11 | PR #488 / claude/code-review-42a2c3 | 7a8ea145013444f7cc29631499f48a8b0454937a | open-PR review, unresolved comments, and CI | Confirmed the remaining public error-code finding was already fixed at the reviewed head. Added the two focused advisory UI assertion stabilizations required by the hosted failure logs; no additional high-confidence defect was found in the changed scope. | `tests/http-error-response.test.ts` (3/3); Prettier check on affected files; `git diff --check`; hosted required CI passed before the test-only fix. Browser rerun deferred to hosted CI because Turbopack rejects the isolated worktree's external node_modules junction. | -| 2026-07-11 | PR #473 / claude/mobile-search-bar-popup-bx163m | 7cef01852a9713ec51184578868212df5805adbf | open-PR review, unresolved comments, and CI | P1 merge-conflict markers removed from the shared search header while retaining the all-viewport hero portal and inline fallback. P2 fixed: phone-hidden command results can no longer open, report expanded state, receive keyboard navigation, or execute an invisible selection. The launcher and global-shell conflict findings were already resolved at the reviewed head. | No conflict markers; TypeScript; focused Prettier; app-mode/search/universal-search Vitest (37/37); `git diff --check`. Browser proof delegated to hosted CI because Turbopack rejects the isolated worktree's external node_modules junction. | -| 2026-07-11 | PR #461 / claude/differentials-search-ux-polish-f2ff06 | 8bf455325b0915898417dd66aa61d419080c5528 | open-PR review, unresolved comments, and CI | Preserved diagnosis selections through workflow-aware comparison routing, constrained cross-workflow IDs to supported candidates, and removed comparison controls from presentation rows. Restored all four required core UI smoke markers and hardened answer/search mocks against invalid payloads and stale-response races. | Focused differential Vitest (22/22); TypeScript; full required CI, advisory Chromium, CodeRabbit, Semgrep, Gitleaks, and GitGuardian passed on the final head. | -| 2026-07-11 | PR #485 / claude/home-answer-page-layout-rtx10n | 96dbd0394888d5a52c916dba52b94d0f83e4507e | open-PR review and CI | Integrated the all-viewport hero composer, retained the compact hero scale, made composer width continuous across 1024px, and restored a mobile centering height floor. Review ledger SHAs were expanded to full IDs and source guards cover the layout invariants. | Focused source guards (30/30); TypeScript; full Vitest (1,594 passed, 1 skipped); required and advisory UI, build, static, unit, CodeRabbit, Semgrep, Gitleaks, GitGuardian, and post-merge main CI passed. | -| 2026-07-11 | PR #481 / claude/perf-r2-auth-roundtrip | 24fad070fb9834510309e74e1dc0e216cd08646b | main-integration follow-up | The stacked PR had merged into an already-merged feature base, so its reviewed delta was not present on `main`. Replayed only PR #481's first-parent patch onto current `main`, preserving current answer-route behavior while adding client payload trimming and cookie-authenticated proxy refresh coverage. | `npm run verify:cheap`; focused proxy/payload/clinical-safety Vitest (18/18); `npm run check:production-readiness:ci`; focused Prettier; `git diff --check`. | -| 2026-07-11 | codex/repository-review-remediation | 70ec6409a11a85e1678eb4b320519624673a94a0 | comprehensive repository report remediation | Revalidated all 17 findings from the 2026-07-09 comprehensive review. Remediated the current workflow injection, document scope, numeric faithfulness, ingestion lease/ownership, transactional enrichment replacement, request and upload budgets, browser identity isolation, PHI retention, public DTO, cache cancellation/versioning, evidence labelling, modal focus, misleading controls, telemetry, orphan-module issues, and two server/client loading-boundary failures exposed during browser QA. The runbook filename was already fixed on the reviewed head. | TypeScript, lint, focused Vitest (68/68), full offline Vitest (1,607/1,607; 1 skipped), production build, client-bundle secret scan, Docker schema replay and regenerated drift manifest, isolated full migration reset, local lease-reclaim concurrency proof, cache/enrichment SQL smoke, configured production-readiness (`READY`), Chromium document-scope/modal QA (4/4), manual disabled-control accessibility snapshots, and `git diff --check` passed. Read-only live drift found 26 unexpected differences, including the three unapplied remediation functions; no live mutation was performed. | -| 2026-07-11 | codex/responsive-accessibility-audit | 66883b7c86f606e617db4bee2bab6f85fff59bdc | responsive and accessibility audit | P2 fixed: the mobile expandable clinical table no longer wraps semantic table content in a duplicate ARIA button, and its full-screen dialog now traps keyboard focus while preserving Escape dismissal and focus return. Added responsive ARIA and focus regression coverage. No additional high-confidence responsive or accessibility defect was reproduced across audited primary app modes and 320px-1440px widths. | Multi-width DOM/geometry/contrast audit; a11y media (2/2); overlap (12/12); table Vitest (6/6); TypeScript; lint/static checks; full Vitest (1,598 passed, 1 skipped); `npm run verify:ui` (132/132); Prettier; `git diff --check`. Provider checks skipped. | -| 2026-07-13 | codex/repository-review-remediation | b72cefd2f5c0da79788cc0f8d0d40837c711ae92 | live-drift reconciliation and release review | Reconciled production migration history and live-ahead governance/retrieval definitions without mutating live; removed the migration-version collision; made captured OUT-signature changes fresh-replay-safe; preserved production ACLs; added a forward lexical-score correction; and reduced read-only live drift from 27 differences to five changes fully explained by the unapplied remediation migrations. No remaining high-confidence source defect was found in the reviewed scope. | Docker schema replay and regenerated manifest; isolated full Supabase migration reset; focused Vitest 74/74; full Vitest 1,712 passed/1 skipped; lint; typecheck; production build and client-bundle secret scan; configured production-readiness READY; targeted Chromium scope/modal/control QA 4/4; read-only live drift; Supabase security advisor clear. Live apply not run because authorization remained read-only. | -| 2026-07-13 | codex/repository-review-remediation | 452275824294564a1e08e6bec169bd4af744d09a | live migration apply and post-apply review | Applied the four reviewed forward migrations to `Clinical KB Database`, aligned repository filenames to the generated production versions, and corrected the schema snapshot so the legacy unfenced commit overload remains inaccessible to `service_role`. Live drift is clean and no active ingestion/enrichment overlap or duplicate open ingestion group was found. | Ran `npm run check:drift`: passed clean. Ran `npm run check:production-readiness`: READY. Ran Docker schema replay: passed. Ran focused concurrency/retrieval Vitest: 166/166 passed. Ran offline RAG: 36 fixtures and 60/60 contract tests passed. Ran M13, retrieval-owner, schema-health, lexical-retrieval, concurrency, and ACL live probes: passed; lexical retrieval returned 12 truthfully scored results. Not completed: full provider retrieval-quality evaluation exceeded the local command window; deterministic live retrieval checks passed. | -| 2026-07-13 | codex/fix-48h-review-findings-current | 49735663370735a60870d065ed0de3b9d34e077f | last-48-hours PR remediation | Revalidated the last-48-hours findings on current main after PRs #538 and #540; retained only unique fixes across auth/cache isolation, stale-response protection, upload/routing/UI behavior, RAG coalescing, telemetry, worktree tooling, and SAST enforcement. No remaining high-confidence local defect was found in the changed scope. The approved live drift check reported only the five differences already explained by unapplied migrations from #540. | Focused Vitest 107/107; `npm run verify:pr-local` (1,762 passed, 1 skipped; production build and client-bundle scan; offline RAG 60/60); critical Chromium 8/8; live `check:drift`; `git diff --check`. Full Chromium remains advisory after the earlier runner hang; the required critical subset passed on current main. | -| 2026-07-13 | codex/public-anonymous-access | 7f3eded3d17c9daf6a443c9cac3f0553e4e9321b | production UI design and accessibility review | Fixed the fullscreen clinical-table focus leak and divergent modal implementation, removed the non-native table-surface control, and lifted meaningful production metadata from 8-10px to the 11px floor with stronger muted contrast. No remaining high-confidence defect was found in the reviewed visual scope. | Baseline/final screenshots at 1440x1000 and 390x820; focused Chromium table expansion 3/3; focused Vitest 6/6; `npm run typecheck`; targeted ESLint; type-scale and focused Prettier checks; `git diff --check`. `verify:cheap` timed out in full lint/test execution; full `verify:ui` deferred under the API confirmation boundary. | -| 2026-07-13 | main (PR #570 squash, glass header) | cc6bfc1c80902ca3c91e5ba2ebe78a80f3fd9e14 | post-merge review: CSS/visual/a11y/perf + logic/regression | No P0/P1. P2s confirmed and fixed in follow-up: build pipeline dropped ALL hand-authored backdrop-filter declarations (manual -webkit- duplicates confused Lightning CSS — header scrim, bottom dock, and composer pill were tint-only in every engine); scrim retuned to carry the bar's frost alone (header backdrop-root removed) with masks fading to true zero; private-scope alert made sticky inside main (was scroll-away in non-answer modes); scroll-hide reporter reset on breakpoint-gate change; non-forced fallback backgrounds layered to preserve the utility-wins contract. | Ran custom Playwright probe (`node scratchpad/probe-blur.mjs`, Chromium 390x844): baseline showed `getComputedStyle(.edge-glass-header-backdrop).backdropFilter === "none"` on all three passes, after fix `blur(14px)/blur(20px)/blur(26px)` — passed; Ran `node scripts/run-playwright.mjs tests/ui-smoke.spec.ts --project=chromium -g "glass header\|collapse hide\|private-scope alert\|phone (short\|long) answer stays"`: 6/6 passed; Ran `node scripts/run-playwright.mjs tests/ui-smoke.spec.ts --project=chromium` (full file): 71 passed, 4 failed (pre-existing `/privacy` heading test, fails identically on clean main); Ran `npm run verify:cheap`: exit 0 (1935 unit tests passed); Ran `npm run format:check`: passed; Not run: WebKit/Safari real-device check (no WebKit runner in this environment — served client chunk verified to pair `-webkit-backdrop-filter` with each declaration for Safari <= 17) | -| 2026-07-13 | codex/rag-review-followup | 755ac9e517a3b81f8e12a119f80f3769dd58ae4e | PR #575 post-merge review finding remediation | Fixed the P1 path that could combine a medication amount and route from separate chunks, expanded the shared explicit amount/route/frequency intent detector, corrected route-only failure classification, and added microgram-symbol coverage. Requested attributes must now be co-located with the medication subject before the text fast path is accepted. No additional high-confidence defect was found in the changed scope after integrating the production answer-budget fix from PR #580. | Focused Vitest 143/143; `npm run eval:rag:offline` (21 files, 265/265); `npm run typecheck`; targeted ESLint; full `npm test` (211 files passed, 1 skipped; 1,946 tests passed, 1 skipped); PR-local dry-run selected runtime, format, lint, typecheck, full tests, build, and offline RAG; `git diff --check`. `verify:cheap` passed all pre-test stages but its 10-minute host bound expired during the full suite; the same suite then passed independently with a longer bound. | -| 2026-07-13 | origin/main (detached review worktree) | c523cabeae4b68ebdf569ecbc18d9f5a7b5afbf1 | repo-wide audit | Changes requested: one P1 clinical-answer trust cluster; three P2 tenancy/reindex guardrail issues; three P3 information-disclosure, dead-code, and transitive-deprecation cleanup items. No P0 found. | `npm run verify:cheap` (1,721 passed, 1 skipped); `npm run test:coverage` (thresholds passed); `npm run build`; `npm run verify:ui` (137/137); `npm run eval:rag:offline` (36 fixtures, 60 tests); format, Edge Function, Codex workflow, import/secret/dead-reference scans. Provider-backed checks skipped. | -| 2026-07-13 | HEAD / origin/main (detached worktree) | 04c1d0b036cae8af4dabfc692055c7aab93d5888 | OpenAI-facing API and integration review | Read-only review found one P1 clinical-streaming defect and four P2 reliability/API-contract issues: provisional clinical prose is exposed before validation; mid-stream failure can silently trigger a second buffered generation; answer caches are not model/prompt fingerprinted; OpenAI access/model errors are under-classified; and table-fact route IDs are not validated before database access. GPT-5.6 migration also requires replacing the legacy prompt-cache parameter. No application code was changed. | Static call-flow, prompt, model, schema, streaming, cache, error, route, test, and governance inspection; official OpenAI model/Responses/structured-output/streaming/prompt-cache guidance reviewed. Provider-backed checks were not run. Local tests were not run because this worktree has no installed dependencies (`openai`, `vitest`). | -| 2026-07-13 | codex/openai-gpt56-rag-upgrade | 4fa4c35e98d60fc104639089494b271a5f1951fd | OpenAI and RAG review remediation | Remediated all recorded findings: clinical SSE is final-only across mixed-version deployments; buffered generation cannot silently replace a partial stream; answer caches are generation/retrieval fingerprinted; GPT-5.6 model, prompt-cache, workload routing, parsed-output, usage, safety-identifier, and error handling are capability-aware; and table-fact UUIDs fail with the shared 400 contract. Added rollout and governance documentation. Independent final review found no remaining high-confidence issue after the mixed-version client guard was added. | Replaced the external `node_modules` junction with a clean `npm ci`; `npm run verify:cheap` passed runtime/policy/lint/typecheck and full Vitest (211 files passed, 1 skipped; 1,941 tests passed, 1 skipped); focused cache/stream tests, offline RAG preflight, production-readiness CI, changed-file Prettier/ESLint, and `git diff --check` passed before the current `origin/main` integration. Provider and post-merge checks are recorded separately when complete. | -| 2026-07-14 | codex/openai-gpt56-rag-upgrade | f83d7d49b32fb9bb8b8c2ede99e93675574c88d8 | PR review follow-up | Confirmed and remediated five scoped review findings: answer-quality JSON no longer retains owner-scoped answer previews; valid tablet/mmol dose phrases are accepted; review-fallback routing uses a shared token; the classifier sends only supported structural schema constraints and validates bounds after parsing; and equivalent maximum-dose wording remains eligible. Replaced the redundant dashboard source-string guard with the existing mixed-version browser behavior regression. | Focused Vitest 123/123; offline RAG 36 fixtures and 279/279 tests; `npm run typecheck`; `npm run verify:cheap` passed runtime/policy/lint/typecheck and full Vitest (234 files passed, 1 skipped; 2,229 tests passed, 1 skipped); `git diff --check`. Provider-backed retrieval remains separately blocked by exhausted OpenAI embedding quota after case 24/36. | -| 2026-07-14 | PR #626 / codex/openai-gpt56-rag-upgrade | 1c6c780f30f33d47e7dfb57dce56d5fd0501d46e | PR review follow-up | Confirmed and remediated three remaining scoped findings: empty `max_output_tokens` responses now reach the RAG retry path; equivalent maximum-dose wording satisfies the maximum-dose intent gate without requiring literal `maximum` or `dose` tokens; and long-form clinical dose units are accepted consistently by evidence extraction and final-answer validation. | Focused Vitest 99/99; offline RAG 36 fixtures and 279/279 tests; `npm run typecheck`; `npm run verify:cheap` passed runtime/policy/lint/typecheck and full Vitest (235 files passed, 1 skipped; 2,238 tests passed, 1 skipped); `npm run build` generated 636 static pages and passed the client-bundle secret scan; configured production readiness was READY with three documented warnings; `git diff --check`. Provider-backed retrieval remains separately blocked by exhausted OpenAI embedding quota after case 24/36. | -| 2026-07-14 | PR #626 / codex/openai-gpt56-rag-upgrade | 0301d59ab8d6afeecd340bb08b40b98ff6b95c6c | PR review follow-up | Confirmed and fixed one additional maximum-dose wording gap discovered after the current-main merge: `not to exceed` and `not more than` numeric limits now reach the same validated extractive path as the existing equivalent phrases. | Focused Vitest 84/84; offline RAG 36 fixtures and 279/279 tests; `npm run typecheck`; focused Prettier and `git diff --check`. The immediately preceding merged head also passed `npm run verify:cheap` (236 files passed, 1 skipped; 2,242 tests passed, 1 skipped), production build, and all hosted required checks. Provider-backed retrieval remains blocked by exhausted OpenAI embedding quota after case 24/36. | -| 2026-07-14 | PR #626 / codex/openai-gpt56-rag-upgrade | f2652021c1f14533f17c4a9724ef6dff17dd43f5 | PR review follow-up | Confirmed and fixed the two final scoped findings: GPT-5.6-and-later model families now use the TTL prompt-cache request shape, and unrelated prose containing `maximum` can no longer pass the maximum-dose evidence gate without a clinical dose value or explicit dose wording. | Focused Vitest 99/99 before current-main integration and 163/163 after it; offline RAG 36 fixtures and 279/279 tests; `npm run typecheck`; `npm run verify:cheap` passed after integrating `origin/main` (239 files passed, 1 skipped; 2,248 tests passed, 1 skipped); focused Prettier and `git diff --check`. The reviewed head passed every hosted required check before these narrow fixes. Provider-backed retrieval remains blocked by exhausted OpenAI embedding quota after case 24/36. | -| 2026-07-13 | claude/audit-ci-browser-gate-2026-07-13 | 65a8a0c9e7c3a165b09a1ad79e893af8c2c6973b | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | claude/beautiful-hamilton-5df54c | 5e2e90f0a3af4039c7e15515151569228476a60c | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 5e2e90f0a3af4039c7e15515151569228476a60c origin/main`. | -| 2026-07-13 | claude/beautiful-williamson-57d144 | 072434cd5f59b1441dd114958489028972c42d34 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #474; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/chunking-ocr-eval-plumbing-e1ac6b | b65de578ad50f128492d1ed316c6f11eb4a4dfc6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #508; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/codebase-review-ade6ed | 8a26e238b495f2e2fdae7227c8a9a915bc27f325 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #510; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/cranky-swirles-619a39 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | -| 2026-07-13 | claude/cross-border-openai-disclosure-2f170b | 14a155aabcecb79a5fbdfd442a1d684ecb901fa4 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #530; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/database-rag-image-visibility-d6b809 | 7a51b109df0575f570cc3351d18552d43e2f1e9f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #515; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/design-sync-78bad6 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | claude/desktop-plus-menu-design-1a4bb2 | 0e8752a7983e114c959d1e878ea80544a32900ce | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #478; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/differentials-search-ux-polish-f2ff06 | f7a3d95f54248d5c71c11084d0e5b60f2a83ae98 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor f7a3d95f54248d5c71c11084d0e5b60f2a83ae98 origin/main`. | -| 2026-07-13 | claude/document-viewer-design-review-4fc027 | a82f7c3974f870a661d1f1249b29dc79d449ab15 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #509; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/document-viewer-review-fixes | e765b3818b4bdda32b0bee4af7c9091f5d86d86d | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #505; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/edit-tools-responsive-layout-a2dd0b | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | -| 2026-07-13 | claude/eval-citation-coverage-strict | f7fb001c5ceb98874f45b4c8dad91e1b7e9c3f38 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #564; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/favourites-page-redesign-5a9c1b | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | -| 2026-07-13 | claude/forward-codify-retrieval-rpcs-05a3dc | e8ee696dd6db4a991e6964d96e4ded40131596a5 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor e8ee696dd6db4a991e6964d96e4ded40131596a5 origin/main`. | -| 2026-07-13 | claude/generation-token-starvation-fix | 65a8a0c9e7c3a165b09a1ad79e893af8c2c6973b | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | claude/git-workflow-prompt-970dd4 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | -| 2026-07-13 | claude/github-pr-testing-review-dde615 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | -| 2026-07-13 | claude/hero-composer-hydration | eb7cc81c0513da46cd07b9fe1a189952914a5613 | branch-cleanup | Redundant: no patch-unique non-merge commits remain against `origin/main`; eligible for deletion when unreferenced. | `git log --right-only --cherry-pick --no-merges origin/main...claude/hero-composer-hydration` returned empty. | -| 2026-07-13 | claude/hero-composer-teardown-microtask | af9ada42fa069761d21fc1a57e60a80d89e15dbc | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | claude/home-page-sizing-plan-02011e | 05b5977c4c7152ede77039543b5ac6c686c9d905 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #517; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/icon-design-review-393584 | 370cd7bdd6ca45484c14d04b66c51c3394472dd0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #519; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/icon-glyph-refinements | 7e807c1c7346ae998557911421500dce70fe3cd0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #523; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/july8-migration-batch-live-7d76fb | c78a4d7ff570179f28a33f03759e1d91f56d0f65 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #528; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/lithium-search-issue-7903a2 | a6b2dbcd6e289ada4d8abb88861dc43063236058 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #460; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/magical-bouman-0a04a4 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | -| 2026-07-13 | claude/missing-search-bar-a1b3d5 | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | -| 2026-07-13 | claude/mobile-search-bar-fix | b73196c2e2e4a536804cdcdb50879c29e2c582c5 | branch-cleanup | Redundant: no patch-unique non-merge commits remain against `origin/main`; eligible for deletion when unreferenced. | `git log --right-only --cherry-pick --no-merges origin/main...claude/mobile-search-bar-fix` returned empty. | -| 2026-07-13 | claude/mode-home-composer-hero-fix | 50fa59812a84081bc9b2c8cbac79aa3b089c7031 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #470; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/mystifying-wing-55853c | c9c3d2b0c0e71f09e8153f60fa6b2508dccddc25 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor c9c3d2b0c0e71f09e8153f60fa6b2508dccddc25 origin/main`. | -| 2026-07-13 | claude/observability-alerts-rollback-8d9b79 | 67144fe56b776fb58d2518d057d41612399f65b6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #536; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/perf-r2-bundle-hygiene | cb9c0f9502f61bd29fe3761e1ad3122a3233a27c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #475; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/perf-r2-eval-gated | 901fae59eca2c00c99c3b4ae79a84642b405672a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #486; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/perf-r2-hot-path | 848fa9248a48ac608ca1ca470cd85d203e4b036f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #480; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/perf-r2-network-caching | 7cea28560ae57777e449d672a265a20b4c11b44f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #479; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/perf-r2-payload-trim | 0c68d07d9e570848b76f76dc06d40a340fbc3e88 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #482; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/perf-r2-plan-cache-migration | 5f36914c0440f1dba6044c8d9ed6c9dc069e66d0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #484; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/pia3-doc-residual-cache | 4494a830df6682ce5edcaf61d6a178af162b50d7 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #535; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/privacy-footer-responsive-adbd0c | ad5ef99f68dfd07d56a2ad9e2d0871b7deaf882c | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | claude/prompt-improvement-skill-2e87bd | 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 648abfa3f7c91395b5eeca543f70e0b6ea59e9e0 origin/main`. | -| 2026-07-13 | claude/prompt-perfection-3d64fe | a51871954182c524d961eb077e5983fb87eb2260 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor a51871954182c524d961eb077e5983fb87eb2260 origin/main`. | -| 2026-07-13 | claude/pt-audit-pr7-ci-hardening | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | claude/quality-eval-expected-doc-coverage | c4868031b2294d26a5d35b06f9ecbb4c9b55ac28 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #562; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/rag-cross-reference-guard | abb648e0bd64631db41412148d93eee39eb4f5d2 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #538; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/rag-optimization-phase-2-748178 | 501b949e33ea1ac35abef7644a3cdc0aeb18cefd | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #526; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/rag-review-improvements-f1bf84 | 7154493e5e7c5ed1e2bd484503bfdbca94c23756 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #514; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/repo-next-steps-e53523 | 3f7d6d76f597f2a0311af1052480f84b68ecc259 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | claude/repo-productivity-ideas-2e8b98 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | claude/repo-task-recommendations-f32752 | 00ff16704e6f290148d888c3247cf75ca0c1faa2 | branch-cleanup | Retained for open PR #577. | GitHub open-PR query matched this branch at classification time. | -| 2026-07-13 | claude/review-chats-cleanup-83b6f5 | 70ec6409a11a85e1678eb4b320519624673a94a0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 70ec6409a11a85e1678eb4b320519624673a94a0 origin/main`. | -| 2026-07-13 | claude/scroll-icon-design-8b7675 | 636630a035df2da70353e4b7601d97744cdf0819 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #467; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/search-page-redesign-d50902 | 7d077a1d5fc3cbd7238bc8dc3f33733000684261 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #501; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/seeded-owner-catalogue-sync-7544e2 | 9613f9307be5728bb8dae0c56d6a35f053daad4c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #507; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/site-formatting-polish-b91374 | 619dd99845beb02aa93f30377011b89d70fcb814 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #494; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/site-performance-speed-61d154 | 46624913def3eaddaa1cc5aa4411f769e9c98b77 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #458; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/smart-search-presentations-differentials-a199bb | 0399ec7c3789cb892e0314454f971ba554839eab | branch-cleanup | Redundant: no patch-unique non-merge commits remain against `origin/main`; eligible for deletion when unreferenced. | `git log --right-only --cherry-pick --no-merges origin/main...claude/smart-search-presentations-differentials-a199bb` returned empty. | -| 2026-07-13 | claude/supabase-auth-connection-cap-8907c5 | d28cf149c36f0e44d3bde49068187f262190d74e | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #525; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/supabase-postgres-practices-3eeeb0 | 6d26f87c245eeb5e57c564cddbdd6a4680d7862f | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 6d26f87c245eeb5e57c564cddbdd6a4680d7862f origin/main`. | -| 2026-07-13 | claude/tools-responsive-layout | 45f646e1fdf43bf1201007ec9a502eed2e42717b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #464; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/wonderful-fermat-f00d79 | d6284c75b022f813f205fd3a73cce92b057a2a17 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #477; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/worker-edge-deploy-path-988cc3 | 1b6f02170b485fe21ba56537ed6ed1061cc11679 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #527; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/worker-server-only-boot | 964564f0477635d252238612586e1f83dda3b245 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #493; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/anonymous-document-access-tests | 4a3d954553a8c0618bd9c41baaadedd84bbca821 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #559; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/api-review-fixes | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 66883b7c86f606e617db4bee2bab6f85fff59bdc origin/main`. | -| 2026-07-13 | codex/branch-cleanup-2026-07-13 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | codex/codex-review-single-pass | 950e331006fe0b2d24447ea5b5df2bb83e69799b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #558; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/deep-memory-live-reconcile | 59a976be639e1dede8acec65c1c14166ca71cadb | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #569; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/dirty-work-pr-split | c688eaf1a041b466aad1259e688dbfbe4329f700 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | codex/domain-5-clinical-safety | d14ef4b4dd43d5e08c11c08a70492da0c1abe4ad | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor d14ef4b4dd43d5e08c11c08a70492da0c1abe4ad origin/main`. | -| 2026-07-13 | codex/domain-6-release-hardening | 9ffc2a5af1726f5fedc4d981b49981c902a2342a | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 9ffc2a5af1726f5fedc4d981b49981c902a2342a origin/main`. | -| 2026-07-13 | codex/domain4-data-lifecycle | 9ffc2a5af1726f5fedc4d981b49981c902a2342a | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 9ffc2a5af1726f5fedc4d981b49981c902a2342a origin/main`. | -| 2026-07-13 | codex/dose-fast-path-context | 26c93547d8ec46c0658bf98194fc2c5d1a6b383f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #575; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/fix-48h-review-findings | a035fa7d7ce16ba2758886b16b69dee0ff86f820 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #550; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/fix-48h-review-findings-current | 881a24242c369f768f2517d7706102cb565b731c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #551; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/fix-registry-indexing-health | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | codex/indexing-health-scan | 13b19b5746625081be85894f6d1c345c57c16225 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #561; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/lithium-answer-recovery | 16e51a167ef349ef516dc862ccaa278091bf63f7 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | codex/live-remediation-apply | f6a50117903445414facefa1b239033f2fec3313 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #568; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/openai-gpt56-rag-upgrade | 04c1d0b036cae8af4dabfc692055c7aab93d5888 | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | codex/opioid-dose-retrieval-gate | b8c5cb785e1d52d3af05212cf2bae10d412a9869 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #571; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/performance-deployment-review | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 66883b7c86f606e617db4bee2bab6f85fff59bdc origin/main`. | -| 2026-07-13 | codex/performance-prompt-audit | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 66883b7c86f606e617db4bee2bab6f85fff59bdc origin/main`. | -| 2026-07-13 | codex/pr-461-fixes | 8bf455325b0915898417dd66aa61d419080c5528 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 8bf455325b0915898417dd66aa61d419080c5528 origin/main`. | -| 2026-07-13 | codex/pr-466-fixes | b341fed3d6f8d94f1573db1ff3939e112c3240f0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #466; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/pr-469-fixes | 3a252e7cd53b8a825aef5d4432ff0f7373618c56 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #469; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/pr-473-fixes | ceccc7219cbd1bf2e0f5b166de94f293c7c25bfe | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor ceccc7219cbd1bf2e0f5b166de94f293c7c25bfe origin/main`. | -| 2026-07-13 | codex/pr-481-fixes | 24fad070fb9834510309e74e1dc0e216cd08646b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #481; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/pr-481-main-integration | a6a9e0292395bb53a832e894c8ce10707d425e57 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor a6a9e0292395bb53a832e894c8ce10707d425e57 origin/main`. | -| 2026-07-13 | codex/pr-483-fixes | 190affffacf2a0c0447b51fe87fdb22ae37737b1 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #483; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/pr-485-fixes | 96dbd0394888d5a52c916dba52b94d0f83e4507e | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 96dbd0394888d5a52c916dba52b94d0f83e4507e origin/main`. | -| 2026-07-13 | codex/pr-522-review | 344f10f9efca6dc340a6ac65128eaf2fdcddf727 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #522; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/privacy-link-only | 3ae36477f8a3b945870b545c2b0c048e597d2d29 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #557; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/privacy-ui-assertion | bafceee0588483bed209b321d9fdf68f48b7ea2f | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor bafceee0588483bed209b321d9fdf68f48b7ea2f origin/main`. | -| 2026-07-13 | codex/production-migration-history-final | 6e8eab2533df7ab2352b51223447f2dff1951a2a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #565; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/rag-remediation | 18cf01f2100c479beb2b8a089c287e8c7d978eb8 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #553; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | codex/rag-review-followup | a4b1c58ccbcf57f7a6ddd495c9217bce5544cccf | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | codex/release-blocker-remediation | 12377740a37e67523c720ab2952a75fd45aee2bd | branch-cleanup | Retained because the branch is checked out in an active or protected worktree. | Fresh worktree, status, lock, and process activity scan. | -| 2026-07-13 | codex/report-remediation | 70ec6409a11a85e1678eb4b320519624673a94a0 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 70ec6409a11a85e1678eb4b320519624673a94a0 origin/main`. | -| 2026-07-13 | codex/responsive-accessibility-audit | de533acdf4cba2bdc1ec9e13d207b86d09968fc8 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor de533acdf4cba2bdc1ec9e13d207b86d09968fc8 origin/main`. | -| 2026-07-13 | codex/review-findings-fixes | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 66883b7c86f606e617db4bee2bab6f85fff59bdc origin/main`. | -| 2026-07-13 | main | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Protected base branch retained. | Resolved as `main` / `origin/main`; deletion prohibited. | -| 2026-07-13 | origin | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 origin/main`. | -| 2026-07-13 | origin/claude/chunking-ocr-eval-plumbing-e1ac6b | b65de578ad50f128492d1ed316c6f11eb4a4dfc6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #508; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/cross-border-openai-disclosure-2f170b | 14a155aabcecb79a5fbdfd442a1d684ecb901fa4 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #530; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/de-fly-staging-doc | 4d39fe85f1f5d946e39d4b52bcc301b7e523d729 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #516; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/document-viewer-design-review-4fc027 | a82f7c3974f870a661d1f1249b29dc79d449ab15 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #509; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/document-viewer-review-fixes | e765b3818b4bdda32b0bee4af7c9091f5d86d86d | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #505; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/eval-citation-coverage-strict | f7fb001c5ceb98874f45b4c8dad91e1b7e9c3f38 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #564; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/fix-scroll-row-mask-mobile | 51198244b8990a1e43b8952fc0a0dad9a4495d87 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #498; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/forward-codify-retrieval-rpcs-05a3dc | e8ee696dd6db4a991e6964d96e4ded40131596a5 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor e8ee696dd6db4a991e6964d96e4ded40131596a5 origin/main`. | -| 2026-07-13 | origin/claude/gate-answer-persistence-flag-4b55da | 47206d8c2ab04f8a32fd64de8ba2f141999eb3e0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #537; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/hero-composer-hydration | eb7cc81c0513da46cd07b9fe1a189952914a5613 | branch-cleanup | Redundant: no patch-unique non-merge commits remain against `origin/main`; eligible for deletion when unreferenced. | `git log --right-only --cherry-pick --no-merges origin/main...origin/claude/hero-composer-hydration` returned empty. | -| 2026-07-13 | origin/claude/hero-composer-teardown-microtask | af9ada42fa069761d21fc1a57e60a80d89e15dbc | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #504; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/home-answer-page-layout-rtx10n | 96dbd0394888d5a52c916dba52b94d0f83e4507e | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor 96dbd0394888d5a52c916dba52b94d0f83e4507e origin/main`. | -| 2026-07-13 | origin/claude/home-page-sizing-plan-02011e | 05b5977c4c7152ede77039543b5ac6c686c9d905 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #517; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/icon-design-review-393584 | 370cd7bdd6ca45484c14d04b66c51c3394472dd0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #519; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/icon-glyph-refinements | 7e807c1c7346ae998557911421500dce70fe3cd0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #523; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/july8-migration-batch-live-7d76fb | c78a4d7ff570179f28a33f03759e1d91f56d0f65 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #528; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/mobile-search-bar-popup-bx163m | ceccc7219cbd1bf2e0f5b166de94f293c7c25bfe | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor ceccc7219cbd1bf2e0f5b166de94f293c7c25bfe origin/main`. | -| 2026-07-13 | origin/claude/observability-alerts-rollback-8d9b79 | 67144fe56b776fb58d2518d057d41612399f65b6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #536; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/perf-r2-auth-roundtrip | 24fad070fb9834510309e74e1dc0e216cd08646b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #481; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/perf-r2-eval-gated | 901fae59eca2c00c99c3b4ae79a84642b405672a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #486; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/phone-blackout-fix-nuxnt3 | 551b07b44e9572d141118866271af27c67d50370 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #570; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/pia3-doc-residual-cache | 4494a830df6682ce5edcaf61d6a178af162b50d7 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #535; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/privacy-footer-responsive-adbd0c | ad5ef99f68dfd07d56a2ad9e2d0871b7deaf882c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #576; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/production-deployment-setup-d83ef8 | 7cca301849908889f963c361980c378e3aaff07f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #511; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/quality-eval-expected-doc-coverage | c4868031b2294d26a5d35b06f9ecbb4c9b55ac28 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #562; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/query-hash-hmac-secret-0e44d3 | 97108314ec59dd015b1947ba0d0bc41da1f58d33 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #532; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/rag-cross-reference-guard | d6ba5930ecf9fcf5be1d441a197f7f53a3086ce5 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #573; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/rag-optimization-phase-2-748178 | 501b949e33ea1ac35abef7644a3cdc0aeb18cefd | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #526; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/rag-review-improvements-f1bf84 | 7154493e5e7c5ed1e2bd484503bfdbca94c23756 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #514; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/reconcile-mode-home-tokens | 344f10f9efca6dc340a6ac65128eaf2fdcddf727 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #522; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/repo-next-steps-e53523 | 3f7d6d76f597f2a0311af1052480f84b68ecc259 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #513; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/repo-task-recommendations-f32752 | 00ff16704e6f290148d888c3247cf75ca0c1faa2 | branch-cleanup | Retained for open PR #577. | GitHub open-PR query matched this branch at classification time. | -| 2026-07-13 | origin/claude/response-formatting-cleanup-b57a9c | 3a252e7cd53b8a825aef5d4432ff0f7373618c56 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #469; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/responsive-design-review-4d7395 | 889dc73a807145cf7db3326fd2ad77f8d594652b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #520; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/search-timeout-failure-s6aiuj | b341fed3d6f8d94f1573db1ff3939e112c3240f0 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #466; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/seeded-owner-catalogue-sync-7544e2 | 9613f9307be5728bb8dae0c56d6a35f053daad4c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #507; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/site-formatting-polish-b91374 | 859633eb72dee7ab430b0cbebb0f68b77caa072a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #506; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/smart-search-presentations-differentials-a199bb | e7b8a9621d30f22c7ae20aefbba7c023d1ac06df | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #499; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/supabase-auth-connection-cap-8907c5 | d28cf149c36f0e44d3bde49068187f262190d74e | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #525; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/type-scale-mode-home-tokens | 4c55b94f15a15f7c8b418d8dba776b007fb458a3 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #512; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/worker-edge-deploy-path-988cc3 | 1b6f02170b485fe21ba56537ed6ed1061cc11679 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #527; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/claude/worker-server-only-boot | 964564f0477635d252238612586e1f83dda3b245 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #493; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/coderabbitai/docstrings/13b19b5 | 87e8f42fed22fe6f0375a73f5653ea4c3b243385 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #566; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/coderabbitai/docstrings/21f9540 | aa58dd1f8ba40eff536ee61b13769ebb2418befc | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #503; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/coderabbitai/docstrings/4eaf00f | f6b1ce2e214ffd4875e511ad627a85a2dedcdcb6 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #518; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/coderabbitai/docstrings/abb648e | c6215211ac02ada5db1df81ce03a36b7714f7dd8 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #539; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/coderabbitai/docstrings/d5ab4c3 | 65e5575c4f6ff364b5bc52f7698de7d75986e871 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #521; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/coderabbitai/docstrings/faac19b | 6aba3a54370fca45af926ac98e6457b24d617dc1 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #554; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/coderabbitai/simplify/10f39fd | d6d41d79d3bdb126974bb0b2605f7a82de9babb3 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #534; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/coderabbitai/utg/3f739cd | fd1e68b4dd83de09f0b1159e15db8ac97708d5c3 | branch-cleanup | Retained for open PR #556. | GitHub open-PR query matched this branch at classification time. | -| 2026-07-13 | origin/codex/anonymous-document-access-tests | 4a3d954553a8c0618bd9c41baaadedd84bbca821 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #559; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/codex-review-single-pass | 950e331006fe0b2d24447ea5b5df2bb83e69799b | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #558; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/deep-memory-live-reconcile | 59a976be639e1dede8acec65c1c14166ca71cadb | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #569; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/domain2-remediation | 7ea33b20d230f65eb5ac5f6a7386ebd0db92a6ef | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #533; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/dose-fast-path-context | 26c93547d8ec46c0658bf98194fc2c5d1a6b383f | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #575; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/fix-48h-review-findings | f9e0ca42c7b234a894b49bd2958e69ebb2d5810a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #574; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/fix-48h-review-findings-current | 881a24242c369f768f2517d7706102cb565b731c | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #551; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/indexing-health-scan | 62e1f6abc9d1090c38b6ee861cb9dfb9bf3bac45 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #572; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/live-remediation-apply | f6a50117903445414facefa1b239033f2fec3313 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #568; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/opioid-dose-retrieval-gate | b8c5cb785e1d52d3af05212cf2bae10d412a9869 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #571; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/pr-481-main-integration | a6a9e0292395bb53a832e894c8ce10707d425e57 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor a6a9e0292395bb53a832e894c8ce10707d425e57 origin/main`. | -| 2026-07-13 | origin/codex/privacy-link-only | 3ae36477f8a3b945870b545c2b0c048e597d2d29 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #557; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/production-migration-history-final | 6e8eab2533df7ab2352b51223447f2dff1951a2a | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #565; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/public-anonymous-access | afae5df9155b518f93f6046c2d11634b9cd08a42 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #529; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/rag-remediation | 18cf01f2100c479beb2b8a089c287e8c7d978eb8 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #553; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/codex/responsive-accessibility-audit | de533acdf4cba2bdc1ec9e13d207b86d09968fc8 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor de533acdf4cba2bdc1ec9e13d207b86d09968fc8 origin/main`. | -| 2026-07-13 | origin/codex/result-sorting-design-polish | 51028464fe8ac671923ee739e81649ee1d9e1ab3 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #560; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | origin/copilot/fix | f7a3d95f54248d5c71c11084d0e5b60f2a83ae98 | branch-cleanup | Redundant: the exact HEAD is an ancestor of `origin/main`; eligible for deletion when no worktree or open PR references it. | `git merge-base --is-ancestor f7a3d95f54248d5c71c11084d0e5b60f2a83ae98 origin/main`. | -| 2026-07-13 | origin/dependabot/github_actions/actions/checkout-7 | 791b3cc27c43651bdecca3f154c506f51d110d8d | branch-cleanup | Retained for open PR #541. | GitHub open-PR query matched this branch at classification time. | -| 2026-07-13 | origin/dependabot/npm_and_yarn/eslint-10.7.0 | cb724b649082bcaf7046a5a8fd913c6ae603dd31 | branch-cleanup | Retained for open PR #547. | GitHub open-PR query matched this branch at classification time. | -| 2026-07-13 | origin/dependabot/npm_and_yarn/typescript-7.0.2 | 5e7ff09e9b24f54b719a36876ae6dad2283a6232 | branch-cleanup | Retained for open PR #545. | GitHub open-PR query matched this branch at classification time. | -| 2026-07-13 | origin/main | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Protected base branch retained. | Resolved as `main` / `origin/main`; deletion prohibited. | -| 2026-07-13 | origin/railway/code-change-MTk6ya | 540b07816b4f0f804e4270566fb3b757b852cf06 | branch-cleanup | Redundant: exact source HEAD was squash-merged by PR #462; eligible for deletion when unreferenced. | GitHub merged-PR source HEAD matched exactly. | -| 2026-07-13 | claude/audit-remediation-2026-07-13 | 6b24b66c844c08ac78f992380914c05e15ecef7c | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #582. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/axe-a11y-scan | 0c6b3e5e21b0132ccf50b0f32a5d2e5b775fdc68 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #586. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/enable-automation | 9d07419ab27c5b51b2264ef208aa260448393ea2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #604. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/ingestion-autopilot | 9122feef297a1b88050696042b10779626aef4bb | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #588. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/ops-digest | 8355970c0371b4150f2965a49c611678a8393ad2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #587. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/psych-vocab-seed | d41c65f209029ba37bd54424640918559209ffa1 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #605. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/repo-hygiene | 1db8d1508cf0cd3aec244358db32d8bc9f06a7f2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #596. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/session-guards | 08a83b87d612fa82157f962b4de7886f15199447 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #583. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/spend-telemetry | 323d9cb5d94c4173881690e15699a4e224622803 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #585. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/audit-remediation-2026-07-13 | 6b24b66c844c08ac78f992380914c05e15ecef7c | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #582. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/axe-a11y-scan | 0c6b3e5e21b0132ccf50b0f32a5d2e5b775fdc68 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #586. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/code-rabbit-credit-barrier-sibv4s | b379a82da4be5260957d1a38bd17a6aa82ae3ce5 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #601. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/enable-automation | 9d07419ab27c5b51b2264ef208aa260448393ea2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #604. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/ingestion-autopilot | 9122feef297a1b88050696042b10779626aef4bb | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #588. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/ops-digest | 8355970c0371b4150f2965a49c611678a8393ad2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #587. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/phone-blackout-fix-nuxnt3 | 94d1613b899be6ad220817dfcf1e894889a21f69 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #578. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/psych-vocab-seed | d41c65f209029ba37bd54424640918559209ffa1 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #605. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/repo-hygiene | 1db8d1508cf0cd3aec244358db32d8bc9f06a7f2 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #596. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/session-guards | 08a83b87d612fa82157f962b4de7886f15199447 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #583. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/session-skills | e2dc26162bb8ff1a50902c26a70fb5f18c5e761f | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #594. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/spend-telemetry | 323d9cb5d94c4173881690e15699a4e224622803 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #585. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/claude/subagents-clinical-rag-uqa5aa | 848c15dd3da014c08ca67df2867b86c49ddf861e | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #609. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | origin/codex/rag-review-followup | ea56104cd658217d67a0a768ec250943bdddd8e8 | branch-cleanup | Deleted after exact source HEAD was proven squash-merged by PR #581. | GitHub merged-PR source HEAD matched exactly; no worktree or open PR referenced the ref at deletion. | -| 2026-07-13 | claude/github-repos-discovery-a49873 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Deleted after the exact HEAD was proven an ancestor of origin/main. | git merge-base --is-ancestor succeeded; no worktree or open PR referenced the branch. | -| 2026-07-13 | codex/cleanup-domain1-governance | be0b3ebd86f717ca4478dd3fb2b2bbfeb63d5fcc | branch-cleanup | Deleted after squash-merging recovery PR #611 as 622988f47773297cedb882b6c236c6f80712c802. | GitHub PR state, hosted checks, merge ancestry, and zero path diff against origin/main were verified. | -| 2026-07-13 | origin/codex/cleanup-domain1-governance | be0b3ebd86f717ca4478dd3fb2b2bbfeb63d5fcc | branch-cleanup | Deleted after squash-merging recovery PR #611 as 622988f47773297cedb882b6c236c6f80712c802. | GitHub PR state, hosted checks, merge ancestry, and zero path diff against origin/main were verified. | -| 2026-07-13 | backup/site-formatting-pre-rebuild-a0ba77112 | a0ba771124c40bb8c5fe9d3cdfa81f98d33dc3c8 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/answer-page-design-polish-ffd5a6 | b2c772606126f8323424bc9c0b636bac77c08789 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/answer-page-design-polish-ffd5a6; git diff --name-only reported 10 path(s). | -| 2026-07-13 | claude/audit-ci-browser-gate-2026-07-13 | 09be064a09e8199e9359c50ea0dfceb25847cacf | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/bundle-budget | 0eb6bb60201924d3e5153c69f2efee39960124b7 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/canary-gate-fixes | 85411f5db736e111fdb278468787dc8b32bb5ebe | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/code-review-42a2c3 | 48cabd9b8754c06b34b006c544c7529b6f2f5400 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/code-review-42a2c3; git diff --name-only reported 65 path(s). | -| 2026-07-13 | claude/compact-design-mockup-fcfb04 | 296d09a48f67eec659045a573d6e63d6d61cab3a | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/compact-design-mockup-fcfb04; git diff --name-only reported 7 path(s). | -| 2026-07-13 | claude/design-sync-78bad6 | d3f68661646488390bfefa79b1f2e511c2ecb2d3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/differentials-artifact-filter-c5aea0 | cd4f6015ee6e400c0b13148a62dc7f17d5604130 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/differentials-artifact-filter-c5aea0; git diff --name-only reported 8 path(s). | -| 2026-07-13 | claude/differentials-page-review-a3daaf | 36cca1bf7c13718dcc60a61b75272c7c4fa5cd44 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/differentials-page-review-a3daaf; git diff --name-only reported 19 path(s). | -| 2026-07-13 | claude/document-page-redesign-7dd487 | c2cfd57b4e7ec602d96e7f042eb60ff0b10a9e8e | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/document-page-redesign-7dd487; git diff --name-only reported 13 path(s). | -| 2026-07-13 | claude/document-viewer-redesign-55b68b | a493538c11d8f24f7ca92de65448cb81ea460c32 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/document-viewer-redesign-55b68b; git diff --name-only reported 3 path(s). | -| 2026-07-13 | claude/gate-answer-persistence-flag-4b55da | c26e54f9d4f8e3ee212864cb076fba0dc7074dd7 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/gate-answer-persistence-flag-4b55da; git diff --name-only reported 10 path(s). | -| 2026-07-13 | claude/medspacy-assertion-eval | 5098fe32e7c091c09fb1d36b5d0a0f767fc009cd | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/perf-r2-auth-roundtrip | 82376e73f1d12c5e94e85847b307b49819524b89 | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/perf-r2-auth-roundtrip; git diff --name-only reported 46 path(s). | -| 2026-07-13 | claude/production-deployment-setup-d83ef8 | 631f0a35fc3b2ca2e198c1aff81ddf6fbbf0e673 | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/production-deployment-setup-d83ef8; git diff --name-only reported 13 path(s). | -| 2026-07-13 | claude/psychiatry-calculators-mockups-8dd1a4 | d25f495a03b96d328874eee3eb2e78863f7611ef | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/pt-audit-pr1-retrieval-dualpath | 7142bc41e6c570def1ece5903fdd923f7a953165 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/pt-audit-pr2-variant-early-exit | ddd67ca4a05e259e68a57f36a840d6521d8dfc0c | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/pt-audit-pr3-storage-unification | 6758a6c2a30f1479e742c6224ef886ef47726902 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/pt-audit-pr4-trust-copy | 46574ca1c93996505fada8c5610a62dbb11a90a5 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/pt-audit-pr5-ia-canonical | 1420ac698ea31bf7d506e3dcfb3c8d25467c19c4 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/pt-audit-pr6-ux-defaults | fba18eb02acbcf5545e7aa3dd6baed3a8a3bc594 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/pt-audit-pr7-ci-hardening | ec8bf327f67df4f90b4adb7c75c14e0f06993299 | branch-cleanup | Retained for open PR #592. | Fresh GitHub open-PR query matched this branch. | -| 2026-07-13 | claude/pt-audit-pt17-live-monitor | b5b5ab680d707fba05de5a15adf0ae77713e16d0 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/pwa-optimization-plan-4b7c4f | a180fb23b886e440f4bf839bc89c2c5085f7f5c3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/query-hash-hmac-secret-0e44d3 | 06dc4be72bcbdebb991ab8ad5c8d2e2eb67fcc59 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/query-hash-hmac-secret-0e44d3; git diff --name-only reported 2 path(s). | -| 2026-07-13 | claude/reconcile-mode-home-tokens | 8b3dee857fc0503d815b794371be19bfd088b973 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/reconcile-mode-home-tokens; git diff --name-only reported 1 path(s). | -| 2026-07-13 | claude/relax-openai-search-gate | fb2df603f472ea613d32ef0991f8ec00af5999c5 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/relax-openai-search-gate; git diff --name-only reported 1 path(s). | -| 2026-07-13 | claude/repo-agents-evaluation-8a41cd | b8b484398557231ce4ce05693b784dc3bac16299 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/repo-docs-infrastructure-4c2787 | fa75ccbf89413b6250d7f11957ee43d322410b9b | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/repo-improvement-review-09945c | a180fb23b886e440f4bf839bc89c2c5085f7f5c3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | claude/repo-task-recommendations-f32752 | 556487e08524d7f3095b76fce55add3e677fdc59 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/response-formatting-cleanup-b57a9c | f1864308e0b287bb83b2a13daca4c3aa2ab95a3e | branch-cleanup | Retained: 22 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/response-formatting-cleanup-b57a9c; git diff --name-only reported 9 path(s). | -| 2026-07-13 | claude/responsive-design-review-4d7395 | cfee2595b6fccd9b419a4aa221a0b813e9b51dc3 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/responsive-design-review-4d7395; git diff --name-only reported 5 path(s). | -| 2026-07-13 | claude/sentry-server-capture | c131b9b7eed39de85b97228d05dc67542e7262eb | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | claude/session-skills | 7df745420b8178df0101a35b75f1af07fea2d558 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...claude/session-skills; git diff --name-only reported 3 path(s). | -| 2026-07-13 | codex/branch-cleanup-2026-07-13 | 5daa779e75f7224b512c9788554c31dee5f654c5 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/domain-1-governance-remediation | 4470bad93bcd659651f1f61ffce503f77a9b4269 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/domain-1-governance-remediation; git diff --name-only reported 56 path(s). | -| 2026-07-13 | codex/domain2-remediation | d2a90f082d2f696a3c903e08544ae156bc93de41 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/domain2-remediation; git diff --name-only reported 46 path(s). | -| 2026-07-13 | codex/fix-registry-indexing-health | 5046c72731d476ca3a025be8e14ece1f837c5456 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/lithium-answer-recovery | 62e91f9209ca9e67b5b9edf3dc49e93677a2bf72 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | codex/lithium-answer-recovery-pr | 43a385d207399bc33010b8d7d34c0588d358d42d | branch-cleanup | Retained for open PR #607. | Fresh GitHub open-PR query matched this branch. | -| 2026-07-13 | codex/live-migration-history-alignment | c9853c7acdc80e3c33354c3b1a32e5df2682f521 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/live-migration-history-alignment; git diff --name-only reported 12 path(s). | -| 2026-07-13 | codex/openai-gpt56-rag-upgrade | 7e95daf221c171515b1eb501fbbc04129aaa5342 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/please-thoroughly-review-this-repo | 47e850ee93dd5281c792eb60618f98ba2e972b8e | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/please-thoroughly-review-this-repo; git diff --name-only reported 1 path(s). | -| 2026-07-13 | codex/pr-487-fixes | 01fa32826488d274ec7ed0af5a3544834d8d0777 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-487-fixes; git diff --name-only reported 12 path(s). | -| 2026-07-13 | codex/pr-488-fixes | 7afb4d06c8127341cc91ed178b79b059935fea05 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-488-fixes; git diff --name-only reported 65 path(s). | -| 2026-07-13 | codex/pr-489-fixes | 0dbd83c73d2783cbe8e8d00bf04c9947a33518fc | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-489-fixes; git diff --name-only reported 5 path(s). | -| 2026-07-13 | codex/pr-511-integration | c7c1dc3f2ad05bdb38420afddcf9b66bac569fd0 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-511-integration; git diff --name-only reported 12 path(s). | -| 2026-07-13 | codex/pr-514-review | af8d86117eb63428c9272e353826648f20fa0583 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-514-review; git diff --name-only reported 16 path(s). | -| 2026-07-13 | codex/pr-520-review | ff11093a2b3e7443d1403303586e1277d6f5bf22 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/pr-520-review; git diff --name-only reported 6 path(s). | -| 2026-07-13 | codex/pr-541-fix | a37e9baf63cb06845aa8876f9c88b3d63c13f778 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-545-fix | 19fc55cd033be7140e0a9cb321a26a8aa835b60e | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-547-fix | 4f0160b26ff9c9f24817a9972e11d5d77310a3f3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-556-sync | 67e396f553d098156ae9de693f021fb9ed73fd94 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-591-fix | 2bad7ba0499626edd8f1833a18983596d0b9f941 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-592-fix | 5bab36c456f57b32437d6c01f0ce30b32244fec4 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-595-sync | f1f17bfc4d23250bb727d01d61055702ea29b65c | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-597-fix | 10b89800ce1aef97bea10f69d58dc54fa13a45c2 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-600-fix | 1eb6a4b7cc0ba05bca18eee0ab00dafba2833904 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/pr-608-fix | a9d09ad4f0f1e549a9a88708862cc62b5d7f0374 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/public-anonymous-access | 7f3eded3d17c9daf6a443c9cac3f0553e4e9321b | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/public-anonymous-access; git diff --name-only reported 71 path(s). | -| 2026-07-13 | codex/rag-canary-completion | 8aa9f92e6f02870e164515778a591414dff2dce1 | branch-cleanup | Retained for open PR #612. | Fresh GitHub open-PR query matched this branch. | -| 2026-07-13 | codex/rag-canary-recovery | 1def894bff2338d68a1cd5e297a4f78671f3ca73 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | codex/rag-review-followup | db2fbf0576a4911fcde06580fee8cf1ff6e393f8 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/rag-review-followup; git diff --name-only reported 8 path(s). | -| 2026-07-13 | codex/release-blocker-remediation | 5f220f953a6ee9c4efba020b255c804b94fbf9d1 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | codex/repository-review-remediation | 29c598cd2db4fc9c00ed56f60e8ef2adb969cccf | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/repository-review-remediation; git diff --name-only reported 80 path(s). | -| 2026-07-13 | codex/result-sorting-design-polish | 00808ad9ee076018fca58006f0332565ddd5dc3a | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...codex/result-sorting-design-polish; git diff --name-only reported 36 path(s). | -| 2026-07-13 | main | b8b484398557231ce4ce05693b784dc3bac16299 | branch-cleanup | Protected base branch retained. | Resolved as main / origin/main; deletion prohibited. | -| 2026-07-13 | origin/claude/audit-ci-browser-gate-2026-07-13 | 09be064a09e8199e9359c50ea0dfceb25847cacf | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/bundle-budget | a9d09ad4f0f1e549a9a88708862cc62b5d7f0374 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/canary-gate-fixes | 85411f5db736e111fdb278468787dc8b32bb5ebe | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/codebase-review-ade6ed | a96b8ffafb88da22f667b41edf01b215866dde32 | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/codebase-review-ade6ed; git diff --name-only reported 19 path(s). | -| 2026-07-13 | origin/claude/design-sync-78bad6 | f1f17bfc4d23250bb727d01d61055702ea29b65c | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/document-page-redesign-7dd487 | c2cfd57b4e7ec602d96e7f042eb60ff0b10a9e8e | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/document-page-redesign-7dd487; git diff --name-only reported 13 path(s). | -| 2026-07-13 | origin/claude/document-viewer-redesign-55b68b | 0dbd83c73d2783cbe8e8d00bf04c9947a33518fc | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/document-viewer-redesign-55b68b; git diff --name-only reported 5 path(s). | -| 2026-07-13 | origin/claude/generation-token-starvation-fix | 5874814cd3e448dfa358a6e500115094cb3124cf | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | origin/claude/github-actions-codex-issue-f4t4s5 | a6f64938c8d0bbf915068869977dfe86c58f0d3f | branch-cleanup | Retained for open PR #610. | Fresh GitHub open-PR query matched this branch. | -| 2026-07-13 | origin/claude/perf-r2-bundle-hygiene | 95ce39f7715caeadc8197c35c2c41500183a715e | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-bundle-hygiene; git diff --name-only reported 40 path(s). | -| 2026-07-13 | origin/claude/perf-r2-hot-path | 843dcf8d287950b2ddf86a121701dfbb95ac86c0 | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-hot-path; git diff --name-only reported 49 path(s). | -| 2026-07-13 | origin/claude/perf-r2-network-caching | 424ae6b045d9ec38443292a1569de4b04d6a295d | branch-cleanup | Retained: 4 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-network-caching; git diff --name-only reported 44 path(s). | -| 2026-07-13 | origin/claude/perf-r2-payload-trim | 5a6ce71153198c746fab96859d5895374ac05bb9 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-payload-trim; git diff --name-only reported 50 path(s). | -| 2026-07-13 | origin/claude/perf-r2-plan-cache-migration | 471099c3031520fc4a083f802af3c8f95a9c7d44 | branch-cleanup | Retained: 8 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/perf-r2-plan-cache-migration; git diff --name-only reported 52 path(s). | -| 2026-07-13 | origin/claude/pt-audit-pr2-variant-early-exit | ddd67ca4a05e259e68a57f36a840d6521d8dfc0c | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | origin/claude/pt-audit-pr3-storage-unification | 10b89800ce1aef97bea10f69d58dc54fa13a45c2 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/pt-audit-pr4-ci-ui-regression | 0318502a5aa0ef011609c32dc7d7936ad1c6464e | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | origin/claude/pt-audit-pr4-trust-copy | 46574ca1c93996505fada8c5610a62dbb11a90a5 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | origin/claude/pt-audit-pr5-ia-canonical | 2bad7ba0499626edd8f1833a18983596d0b9f941 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/pt-audit-pr6-ux-defaults | 44fa37dfcd252c21dd3f57fc97fe4a272ab91de6 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | origin/claude/pt-audit-pr7-ci-hardening | 5bab36c456f57b32437d6c01f0ce30b32244fec4 | branch-cleanup | Retained for open PR #592. | Fresh GitHub open-PR query matched this branch. | -| 2026-07-13 | origin/claude/pt-audit-pt17-live-monitor | b5b5ab680d707fba05de5a15adf0ae77713e16d0 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/repo-docs-infrastructure-4c2787 | fa75ccbf89413b6250d7f11957ee43d322410b9b | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/repo-task-recommendations-f32752 | 3b54cc96113407203f73f41bf921d717a24dd8eb | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | origin/claude/sentry-server-capture | 1eb6a4b7cc0ba05bca18eee0ab00dafba2833904 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/claude/site-performance-speed-61d154 | cb0bcf35498385bca1180462c8ab79b6f8293708 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/claude/site-performance-speed-61d154; git diff --name-only reported 20 path(s). | -| 2026-07-13 | origin/coderabbitai/utg/3f739cd | 67e396f553d098156ae9de693f021fb9ed73fd94 | branch-cleanup | Retained for open PR #556. | Fresh GitHub open-PR query matched this branch. | -| 2026-07-13 | origin/codex/domain-1-governance-remediation | 4470bad93bcd659651f1f61ffce503f77a9b4269 | branch-cleanup | Retained: 7 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/codex/domain-1-governance-remediation; git diff --name-only reported 56 path(s). | -| 2026-07-13 | origin/codex/fix-registry-indexing-health | 5046c72731d476ca3a025be8e14ece1f837c5456 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/codex/lithium-answer-recovery-pr | 43a385d207399bc33010b8d7d34c0588d358d42d | branch-cleanup | Retained for open PR #607. | Fresh GitHub open-PR query matched this branch. | -| 2026-07-13 | origin/codex/live-migration-history-alignment | c9853c7acdc80e3c33354c3b1a32e5df2682f521 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/codex/live-migration-history-alignment; git diff --name-only reported 12 path(s). | -| 2026-07-13 | origin/codex/please-thoroughly-review-this-repo | 47e850ee93dd5281c792eb60618f98ba2e972b8e | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/codex/please-thoroughly-review-this-repo; git diff --name-only reported 1 path(s). | -| 2026-07-13 | origin/codex/rag-canary-completion | d1ecab038cb423de6a8c1ee0d7201b0b6f2dca06 | branch-cleanup | Retained for open PR #612. | Fresh GitHub open-PR query matched this branch. | -| 2026-07-13 | origin/codex/rag-canary-recovery | d6bd7fa7c0b9b29e9b7eddfd28e0478e042a0455 | branch-cleanup | Retained as part of a protected active workstream. | Protected-set match from the two-pass activity and ownership scan. | -| 2026-07-13 | origin/codex/repository-review-remediation | 29c598cd2db4fc9c00ed56f60e8ef2adb969cccf | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/codex/repository-review-remediation; git diff --name-only reported 80 path(s). | -| 2026-07-13 | origin/copilot/29199485110 | 4e09b838bda6a774f067b8e13717af2103502857 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/29199485110; git diff --name-only reported 16 path(s). | -| 2026-07-13 | origin/copilot/29202241308-fix-database-issue | 29db1aa1b29a812bf4c7eb7af5ea33371f086157 | branch-cleanup | Retained: 6 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/29202241308-fix-database-issue; git diff --name-only reported 14 path(s). | -| 2026-07-13 | origin/copilot/database-ci-setup | 45fa392a24987e4b596d80fc81528912e62d95c9 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/database-ci-setup; git diff --name-only reported 16 path(s). | -| 2026-07-13 | origin/copilot/fix-961c247e-5acb-45db-b4ed-62fcf97681cd | b6097f0fbf19f82527ea95a385efb2ca7b8ec794 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-961c247e-5acb-45db-b4ed-62fcf97681cd; git diff --name-only reported 17 path(s). | -| 2026-07-13 | origin/copilot/fix-again | 0b2d29a143926279b327ff302c2de3d5fe0edbc5 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-again; git diff --name-only reported 8 path(s). | -| 2026-07-13 | origin/copilot/fix-another-one | f1864308e0b287bb83b2a13daca4c3aa2ab95a3e | branch-cleanup | Retained: 22 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-another-one; git diff --name-only reported 9 path(s). | -| 2026-07-13 | origin/copilot/fix-barriers | 8711ee2b15c3b9a1a0e8444ba2ee799d6c5e6ab7 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-barriers; git diff --name-only reported 3 path(s). | -| 2026-07-13 | origin/copilot/fix-ci-issues | 5f1c6f64a544705df9df970e09da3b85f0d90efa | branch-cleanup | Retained: 8 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-ci-issues; git diff --name-only reported 7 path(s). | -| 2026-07-13 | origin/copilot/fix-database-action-error | 7ff6c547e55100d7dfff912530e006f0a5ee70a2 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-database-action-error; git diff --name-only reported 6 path(s). | -| 2026-07-13 | origin/copilot/fix-database-action-run-issues | de36fd3ef8aa101e75a22fab8ff15940bb241e00 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-database-action-run-issues; git diff --name-only reported 6 path(s). | -| 2026-07-13 | origin/copilot/fix-failing-ci | d248707d09f62bb153d0eece69b4f7f4e8aeb7dc | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-failing-ci; git diff --name-only reported 36 path(s). | -| 2026-07-13 | origin/copilot/fix-failing-ci-again | 28dacd7f19320bcbf2b03e5e40c7e97fc46a80cd | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-failing-ci-again; git diff --name-only reported 40 path(s). | -| 2026-07-13 | origin/copilot/fix-failing-ci-another-one | 59207b23fe88a23b0e2f3a6d7f1a288e0cca5132 | branch-cleanup | Retained: 3 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-failing-ci-another-one; git diff --name-only reported 36 path(s). | -| 2026-07-13 | origin/copilot/fix-issue-in-database-action | 82c0e87224880ccbeee39f4101e98cf29683f74f | branch-cleanup | Retained: 6 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-issue-in-database-action; git diff --name-only reported 66 path(s). | -| 2026-07-13 | origin/copilot/fix-issue-with-database-connection | 67f5bb2744939922ceb280fab8785ee0259b26f2 | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-issue-with-database-connection; git diff --name-only reported 1 path(s). | -| 2026-07-13 | origin/copilot/fix-one-more-time | 2682cbade791fc07f09d23fa11908eead223d3c7 | branch-cleanup | Retained: 2 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-one-more-time; git diff --name-only reported 0 path(s). | -| 2026-07-13 | origin/copilot/fix-please-work | 2f55346e72555500d17a08be02e6b649daa1a7cc | branch-cleanup | Retained: 1 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-please-work; git diff --name-only reported 5 path(s). | -| 2026-07-13 | origin/copilot/fix-yet-again | c57bc8af5570a5fc69fa0f804f67cfa98df76b89 | branch-cleanup | Retained: 5 patch-unique non-merge commit(s) remain and ownership or merge disposition is unresolved; deletion blocked. | git log --right-only --cherry-pick --no-merges origin/main...origin/copilot/fix-yet-again; git diff --name-only reported 12 path(s). | -| 2026-07-13 | origin/dependabot/npm_and_yarn/eslint-10.7.0 | 4f0160b26ff9c9f24817a9972e11d5d77310a3f3 | branch-cleanup | Retained because the ref is attached to or anchors a protected worktree. | Fresh worktree, status, lock, and path-referencing process scan. | -| 2026-07-13 | origin/main | d88fdafb15471f02de7f85e2426f5ea46e13ebb8 | branch-cleanup | Protected base branch retained. | Resolved as main / origin/main; deletion prohibited. | -| 2026-07-13 | codex/branch-cleanup-2026-07-13 | e76537b72f42827497fdbdf34769e8491f7d2f9e | branch-cleanup | Retained as the protected cleanup controller before the final ledger commit. | Current task worktree; deletion prohibited until its documentation PR is merged. | -| 2026-07-13 | main | 528a1752f41cd29a518ca9341c93c724030173ae | branch-cleanup | Protected base branch retained and synchronized with origin/main. | Local main was unattached, its old tip was an ancestor, and the ref was fast-forwarded to origin/main. | -| 2026-07-13 | origin/codex/rag-canary-completion | d1b7647bde73e7d0558472ad6aa19c3b49d94639 | branch-cleanup | Retained for open PR #612 and active worktree activity. | Fresh GitHub open-PR query and moving-head observation; deletion prohibited. | -| 2026-07-13 | origin/main | 528a1752f41cd29a518ca9341c93c724030173ae | branch-cleanup | Protected base branch retained. | Final refreshed origin/main snapshot before the ledger PR. | -| 2026-07-14 | PR #629 / codex/eval-canary-quota-handling | 8fe1be6d0c58c60afeeb82f720b03c90ce57c2cf | review-followup | One P2 structured-error retry defect confirmed and fixed on `codex/eval-canary-structured-errors`. | GitHub connector thread inspection; `tests/eval-utils.test.ts` 14/14; focused ESLint and Prettier. | -| 2026-07-14 | codex/global-answer-reliability | 01d2749978d4e8f3b4ac508e068ec7b8d331f816 | release-readiness / answer generation, source governance, progress, and document access | No unresolved P0-P2 findings after fixing demo-path governance parity, preserving feedback-token binding during the `origin/main` rebase, and binding legacy-summary feedback to the delivered governed answer. Ready for hosted PR checks. | `npm run verify:pr-local` (2,223 passed, 1 skipped; production build and offline RAG evaluation passed); focused Chromium answer regressions (4/4 passed); focused answer and route regressions (124/124 passed). | -| 2026-07-14 | claude/repo-next-steps-e53523 | 3f7d6d76f597f2a0311af1052480f84b68ecc259 | launch-readiness and RAG-performance follow-up | Branch changes were already squash-merged by PR #513. Fresh review found one P1 governance inconsistency (Singapore app/worker processing omitted from the PIA's cross-border account) and three P2 follow-ups: degraded-answer SLO overcounting, a second blocking shared-cache miss diagnostic query, and stale launch/RAG backlog status. No source fix was applied in this review. | `git diff --check c3828ceb9f3812abeebc1b653361fc254dda9f5e..3f7d6d76f597f2a0311af1052480f84b68ecc259`; focused Vitest 92/92; `npm run eval:rag:offline` 36 fixtures and 59/59 contract tests; `npm run verify:cheap` passed runtime, action pins, sitemap, type scale, lint, typecheck, and 1,672 passed/1 skipped tests. Provider-backed Supabase/OpenAI, browser, release, drift, and live retrieval-quality checks were not run. | -| 2026-07-14 | codex/rag-performance-followups | 5502fd498ea2069f810795a8659f98ab3abf8c80 | release-readiness review | The local release review found no P0-P2 defect after correcting one stale PIA statement; the later hosted review follow-up is recorded below. The scoped RAG round-trip, SLO, retention, privacy, and documentation changes were ready for PR handoff. Highest residual risk is the known live hybrid-RPC latency tail; model experiments remain blocked by provider quota and legal execution remains operator/counsel work. | Rebased onto `origin/main`; runtime and full Prettier check; ESLint; TypeScript; Vitest 2,213 passed/1 skipped; Next.js production build (636 pages) plus client-bundle secret scan; offline RAG 36 fixtures and 277/277 contract tests; `git diff --check`. Live retention jobs 13/16 were already verified during this workstream. | -| 2026-07-14 | PR #632 / codex/rag-performance-followups | aa264e92c44b42fdcceeac6292011ba51169b862 | review-followup | One P2 SLO-classification defect was confirmed: the broad source-only `degraded` flag also included healthy extractive answers. Fixed by persisting and counting a separate `provider_generation_degraded` flag derived only from `generation_fallback`. | GitHub connector plus UTF-8 thread-aware review inspection; focused ESLint; 45/45 targeted Vitest tests; TypeScript; offline RAG 36 fixtures and 277/277 contract tests; `git diff --check`. | -| 2026-07-14 | PR #632 / codex/rag-performance-followups | 07cac8f4e094bf4b5ccd264feb6420fbd4e35e2b | review-followup | CodeRabbit's APP 1/5 governance contradiction was confirmed and corrected; Railway's pending DPA and Singapore processor basis are now explicit checklist/status items. The optional cache-miss granularity suggestion was not adopted because it would undo the reviewed single-read cold-miss design or require a broader schema/RPC change. | GitHub review-thread inspection; focused Prettier and `git diff --check` passed. Local production-readiness inspection reported the expected missing provider env; the Railway production-context check had already passed on this workstream. | -| 2026-07-14 | PR #632 / codex/rag-performance-followups | 0c792b8c10516c85d18832fc96562dd70a671b5f | review-followup | One P1 privacy-disclosure defect was confirmed: OpenAI retrieval embedding can receive query text even when answer synthesis remains source-only. Fixed the PIA and public `/privacy` copy to distinguish retrieval-embedding egress from model-backed synthesis egress, with focused copy coverage. | GitHub connector review-thread inspection; focused privacy UI test, ESLint, TypeScript, Prettier, production-readiness, and `git diff --check`. | -| 2026-07-14 | PR #632 / codex/rag-performance-followups | a2eb6db0efbef983e1b3242261d5cc6b2b9d839d | review-followup | One late P2 rollout-compatibility defect was confirmed: the provider-fallback SLO would omit recent rows written before `provider_generation_degraded` existed. Fixed the count predicate to include the new flag or legacy `generation_fallback:` reasons while continuing to exclude intentional extractive routes. | GitHub connector review-thread inspection; focused answer-SLO test, ESLint, TypeScript, Prettier, and `git diff --check`. | -| 2026-07-14 | PR #634 / codex/global-answer-reliability | 588c34c3d455c367e6aa38dc9fce64191678631b | review-followup | One late P2 quota-bypass defect was confirmed: streamed full-document summaries consumed only the general answer quota. Fixed the route to enforce the stricter `document_summarize` quota before starting the stream or provider work while retaining the general answer ceiling. | GitHub connector review-thread inspection; focused private-access route suite 116/116; ESLint; TypeScript; Prettier; `git diff --check`. | -| 2026-07-14 | codex/specifiers-design | c3e7024e15d2157bbc0b989276324cc6ad3eea5c | Specifiers UI, clinical decision-support, accessibility, and release-readiness review | One P2 WCAG contrast defect was reproduced and fixed across the builder, comparison, and map accent eyebrows. No remaining high-confidence defect was found in the changed scope; residual risk is clinical/manual governance of the original specifier summaries. | Focused Vitest 18/18; focused Chromium desktop/mobile 2/2 with serious/critical axe WCAG A/AA scanning and overflow checks; `npm run check:production-readiness:ci` READY; `npm run verify:cheap` 2,210 passed/1 skipped; `npm run verify:pr-local` 2,213 passed/1 skipped plus production build and client-bundle secret scan; `git diff --check`. Full advisory `verify:ui` exceeded the local 10-minute execution window; provider-backed checks were not run. | -| 2026-07-14 | PR #633 / codex/specifiers-design | 03daca3bfdf86517b9956f3c7d91be27d9f1a751 | Review follow-up and failed UI regression | Eight distinct P2 behaviors across nine review threads were confirmed and fixed: initial selection normalization, duplicate query removal, clinical applicability mapping, canonical Specifiers routing, severity-neutral base wording, diagnostic-section ordering, base/specifier compatibility, and severe psychotic-features wording. The failed app-menu keyboard test was a stale order assertion and now covers the inserted Specifiers item. | Focused Vitest 6/6; focused Chromium 4/4; scoped ESLint and TypeScript; CI-mode production readiness READY; production build and client-bundle secret scan passed. Hosted required checks passed on the refreshed `main` merge before the final compatibility fixes; provider-backed Supabase/OpenAI checks were not run. | -| 2026-07-14 | PR #634 / codex/global-answer-reliability | b411329ec5f181661e5d49276c398440aa928fa2 | review-followup | One late P2 fast-context defect was confirmed: Australian tier ordering could push a higher-ranked supplementary passage outside the four-chunk routine fast budget. Fixed by preserving the retrieval-ranked, crowding-capped candidate budget before applying the order-only Australian preference within that set. | GitHub connector review-thread inspection; focused RAG context-budget suite 22/22; ESLint; TypeScript; Prettier; `git diff --check`. | -| 2026-07-14 | codex/release-blocker-remediation | 550e0588866c38583bd9445fc109ea7832a98211 | working-tree release remediation review | Reconciled the remediation onto current main after three retained-stash fast-forward syncs, preserving the extracted RAG and document-viewer architecture and main's Sentry removal. Review confirmed and fixed the Windows offline-release launcher failure, the offline Railway health-check blocker, and shared staging-test passwords. No remaining high-confidence issue was found in the changed local scope. Provider-backed production and staging evidence remains a post-PR gate. | `npm ci` and `npm ls --depth=0` passed; focused registry/offline/RAG/viewer/tenancy Vitest 207/207 plus health/config follow-up 15/15; `npm run format:check`; `npm run check:github-actions`; `npm run check:ci-scope`; `npm run verify:cheap` passed runtime, generated guards, lint, TypeScript, and full Vitest (254 files passed, 1 skipped; 2,325 tests passed, 1 skipped); `git diff --check`. | -| 2026-07-14 | claude/audit-ci-browser-gate-2026-07-13 | 09be064a09e8199e9359c50ea0dfceb25847cacf | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`; worktree/activity scan. | -| 2026-07-14 | claude/beautiful-hamilton-5df54c | 5e2e90f0a3af4039c7e15515151569228476a60c | branch-cleanup | Deleted local redundant ref; exact head was already represented on `origin/main`. | Local cherry-pick-aware comparison and prior exact-head ledger evidence. | -| 2026-07-14 | claude/canary-gate-fixes | 85411f5db736e111fdb278468787dc8b32bb5ebe | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/codebase-index-coverage | 258782c8426541f43e03009ccf6bb27b9ce90ca5 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/design-elevation-e1e2 | b91437c9068b6dba2f25e831d360e2dbcbeeb75a | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`; detached head remained remotely anchored before worktree removal. | -| 2026-07-14 | claude/design-sync-fixes-p1 | 8103c560fb7e69dcadb1155cf9feb706aa8a8517 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/docs-script-linter | 9f31fc5b62d4cd69cfe2ee92241d7e15e33d8de0 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/hero-composer-hydration | eb7cc81c0513da46cd07b9fe1a189952914a5613 | branch-cleanup | Deleted local redundant ref; the separately named teardown branch and its locked worktree were preserved. | Local cherry-pick-aware comparison plus worktree lock scan. | -| 2026-07-14 | claude/lithium-search-issue-7903a2 | a6b2dbcd6e289ada4d8abb88861dc43063236058 | branch-cleanup | Deleted local ref using prior exact-head squash-merge evidence; remote ref was left untouched. | Prior PR #460 exact-source-head ledger evidence and fresh worktree scan. | -| 2026-07-14 | claude/observability-alerts-rollback-8d9b79 | 67144fe56b776fb58d2518d057d41612399f65b6 | branch-cleanup | Deleted local ref using prior exact-head squash-merge evidence; newer remote work remained untouched. | Prior PR #536 exact-source-head ledger evidence and fresh ref scan. | -| 2026-07-14 | claude/pt-audit-monitor-marker-fix | 7d41cbe5a42b9a7f90d15ad3e80cdca6596548e0 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`; clean worktree removal. | -| 2026-07-14 | claude/pt-audit-pr2-variant-early-exit | ddd67ca4a05e259e68a57f36a840d6521d8dfc0c | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/pt-audit-pr4-trust-copy | 46574ca1c93996505fada8c5610a62dbb11a90a5 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/pt-audit-pt17-live-monitor | b5b5ab680d707fba05de5a15adf0ae77713e16d0 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/pwa-optimization-plan-4b7c4f | a180fb23b886e440f4bf839bc89c2c5085f7f5c3 | branch-cleanup | Deleted local redundant ref after its clean inactive worktree was unregistered. | Exact-head ancestry and local worktree/activity scan. | -| 2026-07-14 | claude/repo-agents-evaluation-8a41cd | b8b484398557231ce4ce05693b784dc3bac16299 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/repo-productivity-ideas-2e8b98 | 7ecade0b4e4ee611f8a5b5f168b2061f9f3370d7 | branch-cleanup | Deleted local ref after confirming no patch-unique content remained. | Local cherry-pick-aware comparison; clean inactive worktree removal. | -| 2026-07-14 | codex/eval-canary-quota-handling | 8fe1be6d0c58c60afeeb82f720b03c90ce57c2cf | branch-cleanup | Deleted local ref after confirming no patch-unique content remained; remote ref was left untouched. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | codex/performance-prompt-audit | 66883b7c86f606e617db4bee2bab6f85fff59bdc | branch-cleanup | Deleted local redundant ref after confirming no patch-unique content remained. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/canary-latency-recalibration | c27d87c1a5cc02721dbcb9fbdf9e0229b4c62a38 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/dependency-report | dbf1a8dbae3cab8ef5dfe54bcdf157709d752579 | branch-cleanup | Retained: patch-unique content remains; its inactive worktree was removed without deleting the ref. | Local cherry-pick-aware comparison and reachability check. | -| 2026-07-14 | claude/medspacy-assertion-eval | 0ebe88bdc893f362f2793f8062d48656a3d70302 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/process-hardening-consolidation | 2ecd302920b94a75d6031b54f61a4d058ad44a25 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | claude/remove-client-sentry | 8d54ddc980a0c883d1f8013e05aa1f96a85e622a | branch-cleanup | Retained: new patch-unique work appeared during the cleanup pass. | Final local ref refresh after `origin/main` advanced concurrently. | -| 2026-07-14 | claude/sentry-client-capture | beaab0bf2f0b1d27c6253004d400ac7be3ade19e | branch-cleanup | Retained: patch-unique content remains and a live shell references its worktree. | Local patch comparison, clean status, and path-referencing process scan. | -| 2026-07-14 | codex/database-productivity-pack | d25f495a03b96d328874eee3eb2e78863f7611ef | branch-cleanup | Retained because its checked-out worktree is dirty and task-backed, despite no unique committed patch remaining. | Worktree status and Codex task-registry scan. | -| 2026-07-14 | codex/dsm-diagnosis-mode | abba3c7d2909017f1691041c2caa11d9716c565e | branch-cleanup | Retained because its checked-out worktree is dirty and task-backed, despite no unique committed patch remaining. | Worktree status and Codex task-registry scan. | -| 2026-07-14 | codex/eval-canary-structured-errors | f8b543e6b22c2979aa64b60748f31a5ef31e87d3 | branch-cleanup | Retained because an idle Codex task still owns the clean worktree; no local or remote deletion was attempted. | Codex task-registry and worktree scan; zero-unique patch check. | -| 2026-07-14 | codex/formulation-workspace | 0696ded585ff9611e5a1325bc6e6c85d0c74bb50 | branch-cleanup | Retained because its checked-out worktree has uncommitted work. | Fresh worktree status and Codex task-registry scan. | -| 2026-07-14 | codex/global-answer-reliability | eb6160a140e1d785340f171a534a9d74da267179 | branch-cleanup | Retained: patch-unique content remains; the inactive clean worktree was removed without deleting the ref. | Local cherry-pick-aware comparison and reachability check. | -| 2026-07-14 | codex/lithium-answer-recovery-pr | 5bc19c665b1d9d9069485bb871d7ddb566858ccd | branch-cleanup | Retained: patch-unique content remains; the inactive clean worktree was removed without deleting the ref. | Local cherry-pick-aware comparison and reachability check. | -| 2026-07-14 | codex/openai-gpt56-rag-upgrade | 7e4b535fc53fe61ace561facdb8c7a224c18d86f | branch-cleanup | Retained: patch-unique content remains and an idle Codex task owns the worktree. | Local patch comparison plus Codex task-registry scan. | -| 2026-07-14 | codex/rag-canary-completion | b6a092fc9712efe6cb2849c219b29ce4fe0c71ee | branch-cleanup | Retained: patch-unique content remains; its detached inactive worktree was safely removed. | Local patch comparison and commit reachability check. | -| 2026-07-14 | codex/rag-performance-followups | fa0a6178fbbbb50de2544b4ec6cbd3f6cc9da0ae | branch-cleanup | Retained: patch-unique content remains and a Codex task still references the worktree. | Local patch comparison plus Codex task-registry scan. | -| 2026-07-14 | codex/railway-deploy-filters | 435274bb2a567272b3abf0519fa45a82ba6d797d | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | codex/release-blocker-remediation | 0696ded585ff9611e5a1325bc6e6c85d0c74bb50 | branch-cleanup | Retained because its active checked-out worktree has substantial uncommitted work. | Active Codex task and fresh worktree status scan. | -| 2026-07-14 | codex/specifiers-design | 65d8f533f23ca59190b1f7ed0ad86fd050381805 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Local cherry-pick-aware comparison to current `origin/main`. | -| 2026-07-14 | codex/universal-search-mode-ranking | 0696ded585ff9611e5a1325bc6e6c85d0c74bb50 | branch-cleanup | Retained because its active checked-out worktree has uncommitted work and a live Node process. | Active Codex task, worktree status, and process scan. | -| 2026-07-14 | origin/claude/canary-latency-recalibration | c27d87c1a5cc02721dbcb9fbdf9e0229b4c62a38 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | -| 2026-07-14 | origin/claude/codebase-index-coverage | 258782c8426541f43e03009ccf6bb27b9ce90ca5 | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | -| 2026-07-14 | origin/claude/dependency-report | dbf1a8dbae3cab8ef5dfe54bcdf157709d752579 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | -| 2026-07-14 | origin/claude/design-elevation-e1e2 | b91437c9068b6dba2f25e831d360e2dbcbeeb75a | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | -| 2026-07-14 | origin/claude/design-sync-fixes-p1 | 8103c560fb7e69dcadb1155cf9feb706aa8a8517 | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | -| 2026-07-14 | origin/claude/docs-script-linter | 9f31fc5b62d4cd69cfe2ee92241d7e15e33d8de0 | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | -| 2026-07-14 | origin/claude/document-image-viewer-review-ox7t11 | b874d857acfb32ec635332967e94d5bbc96ca68c | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; no fetch or GitHub query. | -| 2026-07-14 | origin/claude/github-actions-codex-issue-f4t4s5 | 1f4cdd51b0dfb98495fc293bf511c167071a217c | branch-cleanup | Retained: patch-unique content remains; prior open-PR state was not refreshed without provider approval. | Offline remote-tracking comparison only. | -| 2026-07-14 | origin/claude/medication-alerts-database-cb8o83 | c3b95239fba1b523ef7796a8fca0ef6dc7a271d8 | branch-cleanup | Retained: patch-unique content remains and no merge disposition was inferred. | Offline remote-tracking comparison only. | -| 2026-07-14 | origin/claude/medspacy-assertion-eval | 0ebe88bdc893f362f2793f8062d48656a3d70302 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | -| 2026-07-14 | origin/claude/process-hardening-consolidation | 2ecd302920b94a75d6031b54f61a4d058ad44a25 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | -| 2026-07-14 | origin/claude/pt-audit-monitor-marker-fix | 7d41cbe5a42b9a7f90d15ad3e80cdca6596548e0 | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; local ref and worktree were removed. | -| 2026-07-14 | origin/codex/eval-canary-quota-handling | 8fe1be6d0c58c60afeeb82f720b03c90ce57c2cf | branch-cleanup | Remote deletion candidate: no patch-unique content remains, pending live PR/provider confirmation. | Offline remote-tracking comparison only; local ref was removed. | -| 2026-07-14 | origin/codex/eval-canary-structured-errors | f8b543e6b22c2979aa64b60748f31a5ef31e87d3 | branch-cleanup | Retained because an idle Codex task still owns the branch worktree, despite zero unique patch content. | Offline remote-tracking comparison plus Codex task-registry scan. | -| 2026-07-14 | origin/codex/global-answer-reliability | eb6160a140e1d785340f171a534a9d74da267179 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | -| 2026-07-14 | origin/codex/lithium-answer-recovery-pr | 5bc19c665b1d9d9069485bb871d7ddb566858ccd | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | -| 2026-07-14 | origin/codex/openai-gpt56-rag-upgrade | 7e4b535fc53fe61ace561facdb8c7a224c18d86f | branch-cleanup | Retained: patch-unique content remains and an idle task owns the local worktree. | Offline remote-tracking comparison plus Codex task-registry scan. | -| 2026-07-14 | origin/codex/rag-canary-completion | b6a092fc9712efe6cb2849c219b29ce4fe0c71ee | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | -| 2026-07-14 | origin/codex/rag-performance-followups | fa0a6178fbbbb50de2544b4ec6cbd3f6cc9da0ae | branch-cleanup | Retained: patch-unique content remains and a Codex task references the local worktree. | Offline remote-tracking comparison plus Codex task-registry scan. | -| 2026-07-14 | origin/codex/railway-deploy-filters | 435274bb2a567272b3abf0519fa45a82ba6d797d | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | -| 2026-07-14 | origin/codex/specifiers-design | 65d8f533f23ca59190b1f7ed0ad86fd050381805 | branch-cleanup | Retained: patch-unique content remains; remote mutation requires provider confirmation. | Offline remote-tracking comparison only. | -| 2026-07-14 | main | aef020797b91a1e6f3e2584e3d7b12e29ea54046 | branch-cleanup | Protected local base retained and safely fast-forwarded to the latest locally observed `origin/main`. | Ancestry check; confirmed `main` was unattached before `git branch -f main origin/main`. | -| 2026-07-14 | origin/main | aef020797b91a1e6f3e2584e3d7b12e29ea54046 | branch-cleanup | Protected remote-tracking base retained; snapshot only, with no provider fetch performed. | Final locally observed remote-tracking ref after concurrent repo activity. | -| 2026-07-14 | codex/release-blocker-remediation | aef020797b91a1e6f3e2584e3d7b12e29ea54046 | branch-cleanup | Retained because its active checked-out worktree continued moving during the cleanup pass and still contains uncommitted work. | Active Codex task and final worktree/ref refresh; deletion prohibited. | -| 2026-07-14 | local merged-ref deletion batch (40 refs) | f0eec3ec504bdbaa2a82e2a3f86876c05925a6c2 | branch-cleanup | Deleted 40 non-checked-out local branch refs after exact-head revalidation showed each ref was the exact head of, or an ancestor of, merged PR work; no candidate changed or became checked out during deletion. | Fresh `git fetch --prune origin`; authenticated all-PR inventory; exact SHA guard; worktree guard; merged-PR reachability and cherry-pick-aware comparison to `origin/main`; `git branch -D` completed for all 40 candidates. | -| 2026-07-14 | origin merged-ref deletion batch (26 refs) | f0eec3ec504bdbaa2a82e2a3f86876c05925a6c2 | branch-cleanup | Deleted 26 origin branch refs whose current remote SHA exactly matched a merged PR head. No checked-out branch, open-PR head, or changed remote ref was included. | Authenticated `gh pr list`; `git ls-remote --heads origin`; exact remote-SHA, open-PR, and worktree guards immediately before three non-force `git push origin --delete` batches; all 26 deletions succeeded. | -| 2026-07-14 | fix/accessibility-remaining-findings | e6e735d2668f7383acc45bdb7cc7dc183e7a73a8 | branch-cleanup and merge-readiness | Retained. PR #654 is mergeable and its scoped accessibility diff had no high-confidence review finding, but the required UI regression check remains in progress and GitHub reports the PR blocked. | Authenticated PR metadata and check rollup; five-file diff review; mergeability and exact-head confirmation. No merge attempted. | -| 2026-07-14 | codex/release-blocker-remediation | 1ca2f9f372e23f563de0bc4f823cd341d82a562a | branch-cleanup and merge-readiness | Retained. PR #655 has green completed checks but currently conflicts with `main`; its branch remains checked out in an active worktree. | Authenticated PR metadata and check rollup; exact-head, worktree, and mergeability confirmation. No merge, rebase, conflict resolution, or branch deletion attempted. | -| 2026-07-14 | HEAD (detached) 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | clinical governance + RAG full-repo audit (source governance/citations, answer verification/clinical safety, privacy/query-privacy/private-search-scope, generation failure modes/degradation, retrieval/ranking/selection, ingestion/OCR index quality) | No high-confidence P0/P1. Fail-closed governance chokepoint (`buildGovernedAnswerClientResponse`) applies to both `/api/answer` and `/api/answer/stream`; numeric/quote/citation verification, prompt-injection neutralization, owner-scope tenancy, and query/answer redaction all conservative. Two P3 observations: (1) `secondStageScore` demotion penalties can be floored away by `Math.max(hybrid_score, boosted)` at the tail of the list (rag.ts:663); (2) `outdatedPenalty` default-ON uses governance metadata to weight ranking (eval-gated, demotion-only) — in tension with the "no governance weighting" principle but conservative. D4/D5 (#649) levers verified default-OFF with tests. | Pure review, no mutations except this ledger append. Offline: focused Vitest governance/verification/privacy/scope suites 79/79 + 98/98 passed. Provider-backed (Supabase/OpenAI), browser, release, and live retrieval-quality checks not run (confirmation boundary). | -| 2026-07-14 | HEAD (detached) 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | full repo-structure audit (broken imports, dead files, redundant config, module dependency, structural debt) | No P0/P1. P2: `RAG_TEXT_WEAK_OR_RELAXATION=true` in `.env.example` contradicts `default("false")` in `env.ts` (process-hardening hardened this to off); `reindex-eval-gate.ts` (488 lines) has no production importer — test-only orphan; `bundle-budget.json` still has `enforce: false` + `totalGzipBytes: null` after first production build window passed. P3: `client-env.ts` duplicates `isLocalNoAuthMode`/`publicUploadsEnabled` from `env.ts` using raw `process.env` (intentional server-only split, but divergent implementations); `OPENAI_PRICE_*`, `SPEND_ALERT_DAILY_USD` env vars undocumented in `.env.example`; `rag.ts` → extracted-module architecture still has acknowledged runtime back-edges in `rag-extractive-answer` but no import cycles detected by `architecture-boundaries.test.ts`; several `mockup`-named component files not removed from `src/components/` (production use gated via `mockupsEnabled()`). | `npm run verify:cheap` green (2,290 passed/2 skipped, 0 lint errors, typecheck clean, sitemap aligned, type-scale 0 hits, runtime Node 24/npm 11). `npm run check:env-parity` clean. `npm run docs:check-scripts` passed 266 refs. Architecture-boundaries suite (no cycles, server modules isolated, scripts not imported). Provider-backed (Supabase/OpenAI), browser, release, and live-eval checks not run (confirmation boundary). | -| 2026-07-14 | HEAD (detached) 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | RAG retrieval/ranking/selection/answer-generation audit (fresh scoped pass; PR #649 D4/D5 governance levers safe-by-default focus, token/effort waste, provider routing) | No P0/P1. Both #649 levers verified safe-by-default and fail-safe: D4 `unknownCurrentnessPenalty` default 0 (no-op, clamped non-negative, activated only via `RAG_RANKING_CONFIG`); D5 `NEXT_PUBLIC_RAG_TRUST_CAP_ALL_CLAIMS` unset=false (only tightens display trust high→medium, never exposes more; `NEXT_PUBLIC` correct as `buildAnswerRenderModel` runs client-side in `ClinicalDashboard.tsx`). Reasoning-effort defaults correct (`OPENAI_STRONG_REASONING_EFFORT`=medium, fast=low; `strongReasoningEffortForQueryClass` never raises, caps routine at medium, keeps dose/threshold at configured). Provider mode default `auto`. P3 (reaffirmed): (1) `Math.max(hybrid_score, boosted)` floor at rag.ts:663 can nullify demotion penalties (outdated/unknown/poor/lowIndex) at the list tail, making D4 partly inert when activated; (2) `document_status` defaults to `"unknown"` (source-metadata.ts:34) for unenriched docs, so activating D4 penalizes the corpus-wide fallback status, not a curated signal — same mechanism that dropped selection doc-recall@5 1.0→0.76 (retrieval-selection.ts:340) — eval gate is the safeguard. | Pure review, no mutations except this ledger append. Offline focused Vitest: answer-render-policy + ranking-config + answer-responsiveness-gate 54/54 passed. Provider-backed (Supabase/OpenAI), `eval:retrieval:quality`, browser, and release checks not run (confirmation boundary). | -| 2026-07-14 | HEAD (detached) 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | frontend/UI/accessibility audit — global-search-shell, master-search-header, composer, answer surfaces, document viewer, clinical dashboard modules; design-token usage, reduced-motion/forced-colors, icon aria, focus traps, composer/header placement | No P0. P2: (1) `aria-describedby`+`aria-hidden="true"` conflict in `mode-action-popup.tsx:622,651` makes menu descriptions invisible to AT; (2) ~25 dynamic `` render sites missing `aria-hidden` across dashboard modules — ESLint `require-lucide-icon-aria` rule gap for LucideIcon-typed variables; (3) Mode menu (`role="menu"` in header) does not close on Tab — keyboard users can Tab away from an open menu without dismissing it; (4) No live region on streaming `NaturalLanguageAnswer` — screen reader users not notified of incremental answer content. P3: (5) `--surface-glass`/`--panel-gloss` not remapped in `@media (forced-colors: active)` block — image-lightbox and PDF toolbar control bars could become invisible in high-contrast; (6) `bg-black/45` on Sheet backdrop instead of `var(--overlay-backdrop)` token; (7) `active:scale-[0.99]` on action-popup buttons without `motion-safe:` — still fires as a visual jump under reduced-motion; (8) Microsoft/Google brand hex squares not `forced-color-adjust:none` — lose brand identity in high-contrast mode. | Pure static review, no mutations. Files read: `master-search-header.tsx`, `global-search-shell.tsx`, `globals.css`, `sheet.tsx`, `mode-action-popup.tsx`, `image-lightbox.tsx`, `answer-content.tsx`, `ClinicalDashboard.tsx` (partial), `use-dismissable-layer.ts`, `layout.tsx`, `eslint-rules/require-lucide-icon-aria.mjs`, `ui-accessibility.spec.ts`, `process-hardening.md`. Browser/live checks not run (confirmation boundary). | -| 2026-07-14 | main / 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | repo-wide multi-skill audit (repo-auditor, security, clinical-governance, RAG, ingestion-worker, API, frontend-ui, release-readiness, testing/code-quality) | Highest code P1: anonymous public catalogs bypass rate limits while serving multi-MB payloads (medications 3.4 MB, services 894 KB, differentials 1.2 MB; `shouldResolvePublicCatalogAccess()` early-return in registry/medications/differentials routes skips `consumeSubjectApiRateLimit()` for requests without session cookie or bearer token). Active OPERATOR/LEGAL launch blockers: PIA-1 APP 8 overseas processing (Railway SG + OpenAI US), PIA-2 Railway `RAG_QUERY_HASH_SECRET` verify, unrun `verify:release`/golden evals, staging soak, Eval Canary trust, operator-backlog staleness vs runbooks. Confirmed code P2 cluster: public-doc DTO leaks (`storage_path`), single-layer service-role tenancy, commit-RPC unreachable fallback (`worker/main.ts:545-547`), recovery plan pending+failed unique-index crash, unwired `decideReindexGate`, CI scope misses (`src/lib/app-modes.ts`/`clinical-safety.ts` skip UI/RAG gates), a11y describedby/icon/Tab/live-region gaps, soft `@critical` safety UI assert, unenforced bundle budget, `.env.example` weak-OR flag. Residual risk: OCR quality upstream labels + hybrid-RPC latency tail. | Specialist audits + `ci-change-scope` probe; structure `verify:cheap` (2,290/2 skipped); focused Vitest governance/RAG/ingestion suites; no provider/live Supabase/OpenAI/`verify:release`/`check:drift` (confirmation boundary). | -| 2026-07-14 | codex/dsm-diagnosis-mode | f6cda83ca6aed3a24d999ef4ccd38bff167d4788 | DSM diagnosis mode, local clinical catalogue, search/comparison/differential UI, accessibility, and merge-readiness review | One P2 mobile tap-target defect was fixed across the DSM header, filters, comparison controls, and result actions. No remaining high-confidence P0-P2 finding after preserving current `main` and its Specifiers integration during conflict resolution. Residual risk is formal clinical governance and regulatory review of the paraphrased local DSM reference content before broader clinical deployment. | Focused Vitest 48/48; `npm run verify:cheap` passed with 2,321 tests/1 skipped; targeted Chromium DSM redirect/search/detail journey 1/1; CI-mode production readiness READY; `git diff --check`. Provider-backed Supabase/OpenAI and full advisory `verify:ui`/release checks were not run. | -| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 1ca2f9f372e23f563de0bc4f823cd341d82a562a | review-followup | One P1 offline-startup defect was confirmed: production instrumentation still required OpenAI after readiness and health accepted explicit offline mode. Fixed the boot guard so only explicit `offline` may omit OpenAI while `auto` and `openai` remain fail-closed. | GitHub review-thread inspection; focused instrumentation/readiness/health Vitest 21/21; scoped ESLint; Prettier; `git diff --check`. Hosted required checks on the reviewed head were green, including Gitleaks, PR required, unit coverage, build, UI, SAST, Docker images, and migration replay. | -| 2026-07-14 | PR #655 / codex/release-blocker-remediation | c8a3dd118b8bf802418598c7cb48083893625004 | production governance preflight follow-up | The live dry-run correctly stopped because 554 registry projections are deliberately public (`owner_id = null`) while 232 differentials remain owner-scoped. No second tenant exists. Updated reconciliation to preserve public/owner scope, reject any foreign owner or label-owner mismatch, and scope generated intent labels to the existing document owner without mutating ownership. | Read-only production ownership and label topology probes; focused registry/governance Vitest 18/18; scoped ESLint; Prettier; full TypeScript; `git diff --check`; production dry-run inspected 786 documents (554 public, 232 owner-scoped), planned 786 metadata updates and 786 intent-label inserts, and reported zero chunk rows/OpenAI calls. | -| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 3b152ed1f2f4f08b5672adaf0dc3b433f8ba8db1 + reviewed follow-up diff | final review-thread and release-readiness follow-up | Confirmed and fixed one P1 maintenance-path tenancy defect: registry embedding metadata refreshes could re-private public registry documents. The refresh now preserves public/owner scope, keeps generated intent-label ownership aligned, is idempotent, and rejects foreign-owner documents. Three scoped P2 review items were also resolved: answer-owner ref mutation moved out of render, PDF page changes use router navigation without scroll reset, and the worker-free staging harness no longer enqueues a reindex job before cleanup. No other high-confidence issue remained in the reviewed follow-up diff. | GitHub review-thread inspection; bundled Next.js navigation guide; focused Vitest 38/38; scoped ESLint; Prettier; full TypeScript; `git diff --check`. Final-head hosted CI, staging evidence, and provider-free production governance gates remain required after push. | -| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 978d4f462fcdd4f665060bfc86ed62d8617751cb + reviewed follow-up diff | final automated-review disposition | Fixed the remaining valid review findings: offline evaluation now excludes forced-vector fixtures and owns provider-mode selection; registry detection is shared; staging Supabase calls are bounded; retrieval is covered by a request-start deadline; deadline-expired answers are not cached; and registry label reconciliation preserves reviewer metadata and confidence while refreshing generator-owned metadata. The unsupported-related-document deadline finding was not applicable because the configured unsupported route budget is intentionally `0` and creates no deadline. | GitHub review-thread inspection; focused Vitest 58/58; scoped ESLint; Prettier; full TypeScript; `git diff --check`. Flaky aggregate browser/local suites intentionally not repeated; final-head hosted CI and staging evidence remain required. | -| 2026-07-14 | PR #655 / codex/release-blocker-remediation | dedb38a4a1bb05f87b94a89f5cade7b4a8109c99 + reviewed follow-up diff | late automated-review safety follow-up | Fixed two newly raised scoped issues: provider-free governance now rejects public differential projections while continuing to allow the three intentionally public registry kinds, and owner-scoped answer-thread clearing also removes the unscoped legacy session/local key so old clinical text is not retained. | GitHub review-thread inspection; focused Vitest 13/13; scoped ESLint; Prettier; `git diff --check`. | -| 2026-07-14 | detached review worktree (origin/main at scan start) | 0696ded585ff9611e5a1325bc6e6c85d0c74bb50 | repository-wide comprehensive and security audit | Eight security findings survived final calibration: two P2 (uncapped full-page PDF OCR raster; broad indexed-document public promotion) and six P3 (PDF deadline and aggregate budgets, delete/reindex lifecycle race, staged-generation document search, cross-tenant correction vocabulary, and fail-open future-object default privileges). Seven additional candidates were rejected. One P2 operational documentation drift was also confirmed between the operator backlog and launch runbook. No source fix was applied. | Codex Security standard scan completed with 763 ranked source-like files and 70 deep-reviewed selections; seven safe offline finding probes passed; local action-pin, documentation-link/script-reference, codebase-index, CI-scope, and autofix-workflow guards passed; offline npm audit reported zero cached advisories; `git diff --check` passed. Lint, typecheck, full tests, build, browser, live Supabase/OpenAI, hosted CI, drift, and production checks were not run because this checkout lacked `node_modules` and provider access was not authorized. | -| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 1ece1b891ed2d7f9577a060ae481e33cd4925ea4 + reviewed follow-up diff | offline release latency follow-up | The offline quality release gate reproducibly isolated one live timeout: a generic agitation table-lookup question was expanded into an unnecessary ten-term dose/route AND query, making lexical retrieval take about 39 seconds. Dose/route expansion now requires an actual dosing/route signal; the same case retrieves its expected source and four citations in 1.27 seconds without a model. | Focused clinical-search/retrieval Vitest 111/111; scoped ESLint; Prettier; `git diff --check`; live provider-free single-case quality eval passed with zero model/request/token/cost/generation evidence. | -| 2026-07-14 | PR #655 / codex/release-blocker-remediation | 3ed3a7a2df37d7d15143ab7606e5748ac7ecca09 + reviewed follow-up diff | offline dose-route latency follow-up | The next isolated timeout was a short IM/PO agitation question receiving the same blanket ten-term AND expansion. Agitation dose/route retrieval now keeps only the dose and route signals present in the question; the exact case retrieves its expected source and five citations in 1.54 seconds without a model. All remaining RAG cases 23–44 passed individually, so no further deadline crash remains. | Focused clinical-search/retrieval Vitest 111/111; scoped ESLint; Prettier; `git diff --check`; live provider-free case 22 passed; live provider-free cases 23–44 passed individually. | -| 2026-07-14 | PR #655 / codex/release-blocker-remediation | a3f3a89676015cd5f018c07e8c3ad9483f91cef6 + reviewed follow-up diff | offline adversarial-latency follow-up | The final blocking offline-quality failure was an adversarial secret-exfiltration query that correctly refused but first spent about 25 seconds in lexical retrieval. Adversarial manipulation now short-circuits at the search boundary before provider-client creation, cache access, classification, aliases, or Supabase work, and is never cached. | Focused Vitest 2/2; scoped ESLint; Prettier; full TypeScript; `git diff --check`; live provider-free adversarial case completed in 100 ms with 0 ms RPC time; `eval:quality:release:offline` passed with zero blocking failures and zero model, request-ID, token, cost, or generation-latency evidence. Flaky local browser/composite suites intentionally not repeated; hosted CI remains authoritative. | -| 2026-07-14 | PR #666 / codex/release-blocker-remediation | 9b56eebe4b23ab783207445fb827c317c8d59be8 + reviewed follow-up diff | review-followup | One late P2 retrieval-contract gap was confirmed: the optimized agitation query retained IM/PO but could drop other already-supported amount, route, and frequency aliases. Medication evidence intent is now shared with retrieval selection, and focused agitation queries preserve requested numeric units, SC, SL, PRN, and frequency signals without restoring the broad ten-term expansion. | GitHub review-thread inspection; focused clinical-search/retrieval Vitest 112/112; scoped ESLint; Prettier; `git diff --check`. Hosted final-head TypeScript/build/CI and exact-head staging evidence remain required after push. | -| 2026-07-15 | PR #673 / cursor/audit-remediation-plan-0411 | 03fe72683d83606b73c951914278eabe897fc395 + reviewed follow-up diff | docs audit remediation plan review + CI | Fixed the hosted Prettier failure and all actionable review comments: preserved the real branch ref for the generic ledger parser, corrected `npm run` commands, scoped the no-P0/P1 verdict without obscuring the M4 code P1, disambiguated finding IDs from wave IDs, aligned wave-to-ledger update instructions with the review protocol, and made B3 require the Supabase project-identity preflight before provider-backed release gates. No additional high-confidence defect remains in the changed docs. | GitHub unresolved-thread inventory; focused Prettier on all changed docs; docs link/script reference checks; `git diff --check`. Docs-only; no Supabase, OpenAI, or other live-service checks. | -| 2026-07-14 | codex/formulation-specifier-separation-current | 25d7f733f + uncommitted fix | Specifiers/Formulation boundary bug hunt and remediation | Confirmed two P1 clinical-navigation/content boundary defects: the completed Formulation change deleted the distinct psychiatric Specifiers workspace and redirected every `/specifiers/*` route into Formulation; a later universal-search contract also labelled Formulation mechanism results as `specifiers`. Restored the independent Specifiers catalogue, detail, builder, compare, and map surfaces; registered both app modes and action sets; kept submitted searches in their owning standalone workspace; and split universal search into real `specifiers` and `formulation` domains with correct records, headings, mode ownership, and destinations. | Offline only: full Vitest 2,404 passed/1 skipped, TypeScript, full ESLint, focused Vitest 56/56, sitemap check, `git diff --check`, production-readiness READY with expected missing-env warnings, identity-checked server at `http://localhost:3384`, and repaired Chromium journeys for Specifiers desktop/mobile, Formulation mobile, and explicit route-family separation all passed. No provider-backed or live API checks run. | -| 2026-07-14 | claude/specifiers-v2-design-r55baf | 343f4ee4e89844e6a668910958ce1e3f119c128e | branch-cleanup | Retained: open PR #656 (full DSM-5-TR specifier catalog; +19k, novel data/loaders not on main). | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/formulation-specifier-separation-current | 17c9ea7383f5b463ec648317cd170c24b8e7c584 | branch-cleanup | Retained: open PR #672 (Specifiers/Formulation separation residual; core already landed on main via #674). | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | cursor/audit-remediation-plan-0411 | 6d4b946e981a9251aaeb12097b6edc9e9dab2b60 | branch-cleanup | Retained: open PR #673 (audit remediation plan docs). | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/perf-r2-plan-cache-migration | 471099c3031520fc4a083f802af3c8f95a9c7d44 | branch-cleanup | Retained (user decision): preserves unmerged perf-r2 batch image signed-URL endpoint + client-fetch-cache absent from main; sibling perf-r2 dups pending deletion. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/calculators-search-page | ed600b8bf5a07ef48f464d36f099e5f1cd1e5d13 | branch-cleanup | Retained (user decision): clinical-calculators mockup feature; note PR #670 has since merged to origin/main so this content is now also on main. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/domain-1-governance-remediation | 4470bad93bcd659651f1f61ffce503f77a9b4269 | branch-cleanup | Retained (user decision): novel governance incident runbooks + clinical-production-posture lib + clinical-query-privacy-notice component never merged to main. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/filter-layout-search-prominence-kwrbwl | 59ced590a932e1c7fe28f26a94eb05105ce0e4dd | branch-cleanup | Retained: newly pushed active work (feat(dsm) compact category filter); single unique commit, no PR yet. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. No remote mutation attempted. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/codebase-review-ade6ed | a96b8ffafb88da22f667b41edf01b215866dde32 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/document-page-redesign-7dd487 | c2cfd57b4e7ec602d96e7f042eb60ff0b10a9e8e | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/document-viewer-redesign-55b68b | 0dbd83c73d2783cbe8e8d00bf04c9947a33518fc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/medication-alerts-database-cb8o83 | a0ca895015df8ebe6ae57fa8a811a1fbb240e623 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/perf-r2-bundle-hygiene | 95ce39f7715caeadc8197c35c2c41500183a715e | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/perf-r2-hot-path | 843dcf8d287950b2ddf86a121701dfbb95ac86c0 | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/perf-r2-network-caching | 424ae6b045d9ec38443292a1569de4b04d6a295d | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/perf-r2-payload-trim | 5a6ce71153198c746fab96859d5895374ac05bb9 | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/pr-672-specifiers-formulation-3n123f | 059398c962711f57e5f9ee7c6b4783066cd6718f | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/site-performance-speed-61d154 | cb0bcf35498385bca1180462c8ab79b6f8293708 | branch-cleanup-deletion-pending | Pending deletion (user decision): redundant perf-r2 duplicate; unmerged batch-endpoint work preserved in retained claude/perf-r2-plan-cache-migration. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | claude/therapy-compass-pages-rz0m5l | 5a89a521add5a02dc4f6dd640b393c5bdd690183 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/dsm-diagnosis-mode | f6cda83ca6aed3a24d999ef4ccd38bff167d4788 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/dsm-main-integration-20260714 | 9e013894b2e45d6be39af1ef4593a14604886476 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/formulation-workspace | ce6baa31ffe9647d736a18e95f9d95a95bda313c | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/live-migration-history-alignment | c9853c7acdc80e3c33354c3b1a32e5df2682f521 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/offline-retrieval-signal-followup | ef448e212d12c1cadbeb3ea053ca6639e6f0ada4 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/please-thoroughly-review-this-repo | 47e850ee93dd5281c792eb60618f98ba2e972b8e | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/rag-canary-recovery | d6bd7fa7c0b9b29e9b7eddfd28e0478e042a0455 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/release-blocker-remediation | 8a7ec72b22bff98b8d4b31d533ae9a0738dee071 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/repository-review-remediation | 29c598cd2db4fc9c00ed56f60e8ef2adb969cccf | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/universal-search-domain-exclusions | 6b2c4ffbc81b9a35746ee2fa8795c73a2f65d4fc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | codex/universal-search-mode-ranking | 6a0c37f8e3b4b23fa52c49fec28dcbc8d635b80f | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/29199485110 | 4e09b838bda6a774f067b8e13717af2103502857 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/29202241308-fix-database-issue | 29db1aa1b29a812bf4c7eb7af5ea33371f086157 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/database-ci-setup | 45fa392a24987e4b596d80fc81528912e62d95c9 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix | 060b2cd9c0cb38fa0cb0521ce3f67ead13a9ab87 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-961c247e-5acb-45db-b4ed-62fcf97681cd | b6097f0fbf19f82527ea95a385efb2ca7b8ec794 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-accessibility-test-timeouts | 17e11e45835510d2a43b8ea6fdfeed10df11e0d7 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-again | 0b2d29a143926279b327ff302c2de3d5fe0edbc5 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-another-one | f1864308e0b287bb83b2a13daca4c3aa2ab95a3e | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-barriers | 8711ee2b15c3b9a1a0e8444ba2ee799d6c5e6ab7 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-ci-error | e6e735d2668f7383acc45bdb7cc7dc183e7a73a8 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-ci-issue | a95b282433e6b01bdd6444eb9b2de9148daf2363 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-ci-issues | 5f1c6f64a544705df9df970e09da3b85f0d90efa | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-ci-test-to-pass | 660e5789f56a0a54f68616392fb456e1ad10e48c | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-database-action-error | 7ff6c547e55100d7dfff912530e006f0a5ee70a2 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-database-action-issue | b367aeb084a60fc46d3e4e8d3b318491a1530ac6 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-database-action-run-issues | de36fd3ef8aa101e75a22fab8ff15940bb241e00 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-database-actions | 50cf0744df83708405d0bd215e22f19dc1f27815 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-failing-ci | d248707d09f62bb153d0eece69b4f7f4e8aeb7dc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-failing-ci-again | 28dacd7f19320bcbf2b03e5e40c7e97fc46a80cd | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-failing-ci-another-one | 59207b23fe88a23b0e2f3a6d7f1a288e0cca5132 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-failing-ci-one-more-time | 00b61456b3f4fd528b24476865fde3b046b105ea | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-failing-ci-test | 1de23d35e534c33cf444bc5e81e60c7384e8d072 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-failing-ci-yet-again | 8f2928b9dc925ac9ccc31e413ab422d2ffa77118 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-issue-in-database-action | 82c0e87224880ccbeee39f4101e98cf29683f74f | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-issue-with-database-connection | 67f5bb2744939922ceb280fab8785ee0259b26f2 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-one-more-time | 2682cbade791fc07f09d23fa11908eead223d3c7 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-please-work | 2f55346e72555500d17a08be02e6b649daa1a7cc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/fix-yet-again | c57bc8af5570a5fc69fa0f804f67cfa98df76b89 | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | copilot/rerun-all-ci-again | 4615e39557112515cc9e4938fb5dd397f19ff70d | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | cursor/fix-pr654-ci-53b4 | 9f880853ea7d268186d982f4623b71f46e77d3dc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-14 | fix/accessibility-remaining-findings | 9f880853ea7d268186d982f4623b71f46e77d3dc | branch-cleanup-deletion-pending | Pending deletion: content already on origin/main or superseded old-lineage snapshot / throwaway CI-retry branch; branch-only-file sweep found no novel work. Remote deletion DENIED (HTTP 403, session lacks ref-delete permission); branch still exists at this HEAD — operator must complete deletion. Scope is deletion-pending so future cleanup passes re-evaluate rather than skip. | Provider-backed GitHub PR inventory via MCP (400 PRs #264-#674, all merged=false); local read-only git: rewritten-main-aware cherry-pick + two-dot tree + branch-only-file novelty sweep vs origin/main e75fad90; adversarial re-check. Remote `git push --delete` attempted (provider-backed write) and DENIED with HTTP 403. No OpenAI/Supabase/live-eval checks. | -| 2026-07-15 | PR #677 / claude/cleanup-branches-worktrees-mxov4x | a93db73a29ca6a19619a6592e2e30ca9ea2f8218 | active PR review and remediation | All three actionable review findings are fixed: every branch namespace is parsed from the ledger table, only an exact completed cleanup review at the current HEAD suppresses repeat work, pending deletions remain actionable, and GitHub provider provenance is accurate. No additional high-confidence defect remains in the changed scope. | GitHub unresolved-thread inventory (0 remaining); hosted required CI green; exact-head focused Vitest `tests/repo-hygiene.test.ts` (9/9); `node scripts/sweep-branch-ledger.mjs --no-fetch --json`; `git diff --check`. No Supabase, OpenAI, or other live-service checks. | -| 2026-07-15 | PR #656 / claude/specifiers-v2-design-r55baf | 58ce935758c31672a0a051c5b3e6b888a7d8d153 | full DSM/ICD specifier catalogue and clinical-content gate review | No remaining high-confidence code defect after the review sequence corrected source provenance, verified-content wording, search ranking/deduplication, empty-state behavior, and neutral mixed-source labelling. The 494 unverified definitions remain withheld from display and ranking. Residual risk is the PR-declared qualified-clinician and TGA classification review before broader clinical deployment. | GitHub review-thread inventory (0 unresolved); exact-head hosted required CI, build, critical UI, UI regression, coverage, static, and security checks green. No live Supabase/OpenAI or provider-backed clinical workflow run. | -| 2026-07-15 | PR #679 / claude/therapy-compass-pages-rz0m5l | f5ca25f8b6b14f41e63f708933fe4bb311994795 | Therapy Compass production promotion and review-followup | All five review findings are fixed on the reviewed head: run-enabled shared-composer links stay on the Therapy Compass route, production data loads outside `/mockups`, deep links seed the in-tool search, and same-route query changes remount the provider. No additional high-confidence defect remains in the changed scope. | GitHub review-thread inventory; exact-head hosted build, critical UI smoke, UI regression, unit coverage, static, security, and image checks green; focused Vitest 28/28; TypeScript; `git diff --check`. No live Supabase/OpenAI checks run. | -| 2026-07-15 | PR #680 / claude/rag-scalability-review-x0s55l | 32e242ab7fc386ea82b19c7cfc2112aa41f06f9a | privacy, public-catalog throttling, ingestion-recovery, and merge-readiness review | Audit remediation wave 1 plus review follow-ups. Confirmed and fixed: mixed-owner document list/detail responses exposed nested summary internals and free-form document metadata for public rows; anonymous catalog rate limiting skipped known-slug detail routes; and ingestion recovery could retry a failed row without seeing a legitimate pending/fresh-processing sibling. Ownership-specific projections/redaction now cover list and detail responses, every catalog detail path is throttled, and both recovery scripts pass every open sibling to the planner. No remaining unresolved review thread or high-confidence defect. | GitHub exact-head review-thread inspection (0 unresolved); hosted required CI, UI regression, migration replay, build, coverage, static, and security checks green; local focused route/recovery Vitest 163/163; TypeScript; earlier full `verify:cheap`; Prettier; `git diff --check`. No live Supabase/OpenAI/provider checks run. | -| 2026-07-15 | PR #682 / claude/codex-builder-perf-flakiness-ck5yv7 | dc942dddb87c8a1fa8d84d88052b3d50dd883a43 + reviewed follow-up diff | CI performance, cache correctness, browser-lane routing, and merge-readiness review | Confirmed and fixed two P2 CI safety gaps: the cached `node_modules` key ignored `package.json` and `.npmrc`, allowing install-contract changes to reuse stale modules and skip `npm ci`; and removing the advisory quarantine job made any newly tagged UI test run nowhere. The cache now covers every install input and the quarantine lane performs only a cheap source scan when empty, preserving the speed improvement without losing coverage. No remaining unresolved review thread or high-confidence defect. | GitHub exact-head checks green before final main sync; focused Vitest 6/6; GitHub Actions pin check; CI-scope self-test; TypeScript; Prettier; `git diff --check`. Final hosted exact-head checks required after push. No live Supabase/OpenAI checks run. | -| 2026-07-15 | codex/outstanding-work-cleanup | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f + working-tree diff | repo-wide outstanding-work reconciliation and cleanup | No high-confidence P0/P1 remained in the locally executable scope. Fixed the stale architecture index for DSM/specifier routes, pruned redundant Knip configuration, removed the unused `SignedImage` default export, and reconciled maintained docs so completed/superseded plans no longer present as active work. Retained explicitly blocked work: provider-gated operator actions, the live-eval shadow reindex harness, deep-memory section-ownership design, and RAG follow-ups that require live evidence or product/security decisions. Full Knip findings were triaged rather than mass-deleted; unresolved-import scan is clean. | Offline `npm run verify:cheap` passed with 2,417 tests/1 skipped; docs links 806, script refs 264, codebase index 35/35; Knip unresolved scan clean; typecheck clean; focused Vitest 15/15; env-name parity clean; `git diff --check`. Provider-backed Supabase/OpenAI/GitHub/Railway, dependency audit, browser, build, drift, and release gates not run. | -| 2026-07-15 | codex/design-polish-pass | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f + reviewed working diff | full live design, responsive, UX, accessibility, design-system, routing, performance, lint, testing, documentation, and release-readiness review | No P0/P1 reproduced. Fixed the P2 duplicate phone scroll surface in the shared standalone shell and added a regression test; fixed mode-menu Tab dismissal; explicitly hid decorative dynamic icons; restricted press scaling to motion-safe environments; moved sheet backdrops and forced-colour glass/backdrop behavior onto design tokens. External target fidelity remains blocked because no independent Figma/mockup source was supplied. | Live 30-route desktop + 21-route phone sweep; targeted 320/390/639/768/1440/1920 proofs; `npm run verify:cheap` (2417 passed/1 skipped); `npm run verify:ui` (175/175); focused keyboard 1/1; accessibility media/axe 5/5; scoped Prettier, ESLint, TypeScript, type-scale, and icon-scale passed. Provider-backed checks not run. | -| 2026-07-15 | codex/documents-closed-default | 49f63791bced2b1764a11ab723aea94b45b026b6 | documents viewer disclosure defaults and related defect hunt | Fixed the inconsistent default-open document viewer sections by making indexed text, high-yield summary, tables/diagrams, and indexing details a native mutually exclusive closed disclosure group. The section navigation opens its requested disclosure and deep-linked evidence still reveals its target. The hunt also removed the explicitly open nested table-review queue, preserved printable summary content through the browser print lifecycle, and added cold-server readiness guards to the affected viewer tests. No other high-confidence default-open defect remains in the live Documents scope. | `npm run verify:cheap`; TypeScript; focused ESLint/Prettier; clean-worktree mocked Chromium coverage for deep-linked evidence, structured summary, closed/mutually-exclusive disclosures, navigation opening, and print state restore; `git diff --check`. Turbopack could not run through the local external `node_modules` junction, so clean browser verification used Next's supported Webpack dev mode. No Supabase/OpenAI/live-provider checks run. | -| 2026-07-15 | HEAD (detached) 0c56f27a37af88a073d2bb695d2cf4c05067ff4f | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f | test flakiness, runner safety, CI duplication, and local execution-churn audit | P1 test-integrity issues: `run-vitest.mjs` can report success when Vitest terminates by signal and force-kills concurrent same-worktree runs; the default Vitest glob can execute the live Supabase owner-search test when credentials are present, while that test silently passes on authentication failure. P2 cluster: Playwright server races/shared `.next` state and config-time persistent-server startup; CI reruns the full unit suite for coverage and PR-local RAG verification repeats 21 suites; known-flake tracking is substring-only, not tied to quarantine, and structurally requires a non-empty ledger; unseeded property tests; repeated module resets/source-graph parsing; long retrying browser matrices and swallowed `networkidle` timeouts; host-wide concurrent worktrees/install/test/server activity causes memory pressure, native-module lock failures, and invalidated runs. | Pure review, no source mutation except this ledger append. Offline `node scripts/flake-ledger.mjs --self-test` passed (confirming the non-empty invariant); ledger matching confirmed `narrow-viewport-parallel` applies to an unquarantined blocking title; `node scripts/verify-pr-local.mjs --dry-run --files src/lib/rag.ts` confirmed full test + build + offline RAG duplication. Full Vitest/Playwright not run because this worktree has no dependencies and concurrent repo work was active; provider-backed checks not run (confirmation boundary). | -| 2026-07-17 | codex/test-reliability-hardening | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f + reviewed remediation diff | implementation and merge-readiness review of heavyweight locking, offline test isolation, focused/live test selection, Playwright ownership, flake classification, CI consolidation, and browser race fixes | No remaining high-confidence P0-P2 issue in the reviewed diff. Three scoped integration defects were fixed before handoff: advisory mockup tests were unreachable behind the production route boundary; explicit focused-test paths did not fail closed when deleted or missing; and JUnit spec identities were relative to the Playwright test directory while the ledger uses repository-relative paths. Provider scrubbing was expanded to all repository-specific Supabase/database/E2E credentials, and early Playwright server signal/launch failures now fail immediately. Residual risk is final integration with the latest `main` and the full production Chromium run. | Offline focused Vitest 36/36 then 22/22; full TypeScript passed; targeted Prettier passed; `git diff --check` passed. Full ESLint was externally interrupted without a result and remains required on the clean integrated tree. Provider-backed Supabase/OpenAI checks were not run. | -| 2026-07-17 | codex/scroll-geometry-stability-20260717 | f88a41ae5fb62ae39d5d1d33fd5e21490e1ea60e | phone scroll geometry and boundary stability review | Confirmed two coupled P2 interaction defects: hiding the fixed bottom composer removed its reserved space and changed the scroll viewport, while collapsing the in-flow header at the bottom produced a browser-driven scrollTop clamp that was misread as an upward gesture. The dock now keeps stable clearance, hide/reveal uses directional hysteresis, and geometry clamps are rebased without revealing chrome. No other high-confidence defect remains in the changed scope. | Focused Vitest 8/8; TypeScript; scoped ESLint; Prettier; `git diff --check`. `npm run verify:cheap` reached the full Vitest phase but was stopped after making no progress under concurrent local Vitest workloads. Turbopack rejected the external node_modules junction and Webpack did not reach the identity endpoint, so exact-head hosted UI and required CI remain the merge gates. No Supabase/OpenAI/live-provider checks run. | -| 2026-07-17 | codex/header-footer-scroll-timing-20260717 | 8298bfdcb40c207dbac1128e83c07b4aba782e32 | header and bottom-composer scroll timing, motion, responsive behavior, and merge readiness | Added deliberate hide/reveal travel thresholds with direction-reset handling, aligned header and composer easing/durations, and preserved reduced-motion and breakpoint behavior. No remaining high-confidence P0-P2 defect was found in the scoped diff or focused live behavior. | Focused Vitest 7/7; targeted Chromium UI 5/5; scoped ESLint; Prettier; full TypeScript; full lint; `git diff --check`. `verify:cheap` reached the aggregate Vitest phase, where two repository graph scans exceeded their 30-second test timeout under local disk contention; isolated assertions passed until the same timeout. No Supabase/OpenAI/live-provider checks run. | -| 2026-07-15 | HEAD / main snapshot (detached review worktree) | 0c56f27a37af88a073d2bb695d2cf4c05067ff4f | comprehensive repository review | Changes requested: two P1 defects (high-risk clinical claim support can accept a different trigger condition on lexical overlap; document-mode URL auto-run loops on navigation and leaves search loading indefinitely), one P2 supply-chain guard gap (the action-pin checker accepts mutable major tags and ignores SHA-pinned major versions), and one P3 orientation-doc gap (DSM and legacy specifier routes are absent from the codebase index). No P0 found. | Node 24/npm 11 and `npm ls --depth=0`; format, runtime, lint, TypeScript, sitemap/brand/icon/type-scale, docs links/scripts, CI/action/Codex guards; coverage 259 files passed/1 skipped and 2,417 tests passed/1 skipped; offline RAG 36 fixtures plus 282 tests; production build/client-secret scan; deployment boot smoke; critical Chromium 8/10 with two reproducible document-search failures; accessibility 5/5; viewport/focus checks through 1920x1080. Provider-backed governance, quality, drift, tenancy, hosted CI, and the cross-browser matrix were blocked or skipped by policy/targeted failures. | -| 2026-07-17 | codex/pwa-privacy-safe-20260717 | 35fa8c929d44a9bd84b3f7f2b795354d3b6dae02 | privacy-safe PWA shell and merge-readiness review | No remaining high-confidence product defect in the changed scope. The pre-push browser gate found and fixed one P2 test defect: cleanup referenced `PWA_CACHE_PREFIX` without passing it into the browser context, and the cold installability flow now has a focused 120-second budget. The worker caches only the generic offline page and allow-listed public shell assets; navigations, APIs, auth, queries, documents, uploads, signed URLs, range requests, and cross-origin traffic remain network-only. | Current-main integration; focused Vitest 81/81; full uncached ESLint; TypeScript; scoped Prettier and diff checks; production Webpack build generated 1,043 pages and the client-bundle secret scan passed; full Vitest produced 2,506 passes plus six contention timeouts, with all affected files passing 24/24 serially; focused Chromium PWA 2/2. No Supabase/OpenAI/live-provider checks run. | -| 2026-07-17 | codex/historical-branch-cleanup-20260717 | e36ac0c6628264c7ed6c494a597a62d0214b68f6 | branch-cleanup and historical-content recovery | Completed the pending historical cleanup: deleted 55 exact-SHA remote refs and 20 redundant local refs, removed nine clean merged worktrees, preserved every dirty, active, open-PR, or patch-unique worktree, and recovered the still-useful governance incident runbook from `codex/domain-1-governance-remediation`. Historical code changes were either tied to merged PRs or reviewed as superseded by current implementations; open PRs #699, #700, #702, and #704 remain protected. | Fresh `git fetch --prune`; GitHub PR inventory and exact commit-to-merged-PR associations; exact remote SHA rechecks before deletion; cherry-pick-aware logs; two-dot tree and branch-only-file review; Codex task-to-worktree cross-check; focused documentation validation recorded in the cleanup PR. No OpenAI, Supabase, production-data, or live clinical workflow was run. | -| 2026-07-17 | PR #704 / codex/scroll-geometry-stability-20260717 | 35e74ddbd61bacc5b34f06efbd58091f092665fd | nested scroll-source review follow-up | Confirmed the outside-diff CodeRabbit finding: the standalone shell shared one intent history across main and descendant scroll containers, so a switch from a deep main offset to a near-zero nested offset could falsely reveal chrome. Scroll metrics now identify their source, source changes rebase direction and travel while preserving visibility, and unit/UI regressions cover the switch. No unresolved actionable review finding remains. | Focused Vitest 9/9; TypeScript; scoped ESLint; Prettier; `git diff --check`. Exact-head hosted CI and UI remain required after push. No Supabase/OpenAI/live-provider checks run. | -| 2026-07-17 | main (origin/main) | e5caaa46cad5fb9a937f1dc43312723799b98abb | PWA setup review (service worker, offline fallback, lifecycle, manifest, headers/CSP, proxy bypass, test + CI wiring) | Completed the interrupted PWA setup review at current `main`. The PWA surface (`public/sw.js`, `public/offline.html`, `src/components/pwa-lifecycle.tsx`, `src/app/manifest.ts`, `docs/pwa.md`, all four PWA test files) is byte-identical to the already-reviewed `codex/pwa-privacy-safe-20260717` merge (35fa8c9); the only post-review deltas (#705) touch `next.config.ts` dist-dir guards, `playwright.config.ts`, and `vitest.config.mts` without changing PWA behavior. Privacy contract confirmed sound: network-only navigations with offline fallback, cache-first restricted to hashed `/_next/static` with MIME/destination validation, credentials omitted, cross-origin/query/auth/no-store/Set-Cookie requests blocked, bounded versioned caches, no auto-skipWaiting. No P0-P2 findings. P3: `docs/pwa.md` rule 6 requires an explicit retirement/kill-switch worker but none is committed. P3: `offline.html` is precached at install and never revalidated, so editing it without bumping `CACHE_VERSION` in `sw.js` strands installed clients; suggest a Vitest guard binding the `offline.html` content hash to `CACHE_VERSION`. Minor (documented): `?pwa-dev=1` registration persists until manual unregister. P4: optional manifest polish (`launch_handler`, `display_override`); `next.config.ts`/`src/lib/security-headers.ts` diffs do not set `ui_changed`, so served-header e2e assertions rely on the static guard in `tests/pwa-manifest.test.ts` (deliberate per the scope self-test). Housekeeping: the stale local `codex/pwa-optimization` checkout with uncommitted precursor files exists only on the owner machine and was left untouched. | Focused Vitest via `npm run test -- tests/pwa-service-worker.test.ts tests/pwa-manifest.test.ts tests/pwa-lifecycle.dom.test.tsx`: 45 passed (38 node + 7 jsdom) after `npm install` restored the lockfile-pinned `jsdom` missing from this container. Config inspection: `playwright.config.ts` testMatch and production pattern include `ui-pwa.spec.ts`; `ci.yml` `ui-critical` runs `npm run test:e2e:pr` (chromium, grep-invert quarantine/mockup) gated by `ui_changed`, whose patterns cover `public/`, `src/app`, `src/components`, and `tests/ui-*.spec.ts`; Vitest projects include `tests/**/*.test.ts` plus `tests/**/*.dom.test.tsx`, so the PWA unit tests run inside `npm run test` and `verify:cheap`. `git diff f7c4e293e..e5caaa4` over the PWA paths showed no changes. `tests/ui-pwa.spec.ts` confirmed to assert the CacheStorage inventory privacy contract with API/Supabase/OpenAI routes blocked. Not run: local Playwright PWA e2e (browser gate separate; covered in the CI PR gate) and provider-backed checks (confirmation-required). | -| 2026-07-17 | codex/chat-supabase-migration-preflight-b463 | f7c4e293ef35acc54f2b82bbccb2990d51289d5c | live production Supabase security, integrity, drift, and performance review plus remediation | Resolved and deployed the P2 retrieval-performance issue with `20260717160000_optimize_owner_public_retrieval`: owner/public filtering now happens in one scoped query and index-unit text/term candidates use separate GIN-friendly branches. Warm text retrieval improved from 1.269 seconds to 34 ms; warm index-unit retrieval completed in 36-39 ms (first cold run 2.376 seconds with 2,009 physical reads). No P0/P1 security, privacy, RLS, privilege, storage, migration-history, or integrity issue was found. | Isolated Docker schema replay; pre-deploy drift showed exactly four intended function changes; linked production push; post-deploy `No unexpected schema drift`; exact project and migration-history checks; security and performance advisors; live access-scope parity; bounded `EXPLAIN ANALYZE`; post-migration logs; focused Vitest 74/74; offline RAG fixtures 36/36 and contract tests 291/291; ESLint; TypeScript; function grants; production readiness. Full `verify:cheap` reached the 10-minute host timeout during broad Vitest and ended with EPIPE; focused and domain checks passed. No OpenAI calls, write load test, or backup/PITR restore test was performed. | -| 2026-07-17 | codex/chat-forms-import-6914 | e5caaa46cad5fb9a937f1dc43312723799b98abb + working-tree diff | shared Forms/Services catalogue access and LOCAL_NO_AUTH_OWNER_ID review | Fixed one P1 availability/design defect: authenticated reads materialized a private copy of the shared catalogue on first access, creating drift, unnecessary writes, and possible registry-corpus side effects. Forms/Services now merge the reviewed shared baseline with private owner overrides for list, detail, and universal search; older partial overrides retain missing shared metadata; no registry GET seeds or embeds. Private rows and linked documents remain owner-scoped. The ignored local owner setting was corrected to the verified sole live-owner UUID and source validation now requires a UUID. No remaining high-confidence defect in scope. | Focused registry/universal Vitest initially exposed four local expectation/count mismatches; corrected registry suite passed 17/17 and registry/logging suite passed 23/23. Full TypeScript passed. `verify:cheap` passed runtime, action pins, sitemap, brand, type/icon/function guards, full lint, and TypeScript; full Vitest reached 2,588 passing with one stale logging-guard failure, which was fixed and focused-verified. The final full-suite rerun was terminated by the 5-minute host timeout without a reported assertion failure. `git diff --check` passed. No Supabase/OpenAI/provider call or schema/RLS mutation was run for this review. | -| 2026-07-17 | codex/scrolling-cleanup-20260717 | ff77cd06c + latest origin/main sync | cross-page scrolling and interaction stability review | Fixed two confirmed P2 defects: desktop action-popup placement performed synchronous geometry work for every captured scroll event, and submitted differential searches with zero document matches fell back to the home state. Placement is now coalesced per animation frame with passive scroll listeners, and submitted empty-evidence results remain visible. Hardened three popup/navigation browser helpers that reproduced hydration timing failures. No other high-confidence defect remains in the scoped diff. | Scroll-focused Chromium 28/28; final affected Chromium 5/5; source regressions 2/2; scoped ESLint; Prettier; TypeScript and production build passed before the final upstream-only sync; `git diff --check`. The aggregate local Vitest/UI runs were affected by concurrent-worktree resource contention, so exact-head hosted CI remains required before merge. No Supabase/OpenAI/live-provider checks run. | -| 2026-07-17 | codex/chat-audit-remediation-port-20260717 | 4f41093ba01f88e6d04a53f0782e8676806e3f6f | audit-findings remediation and local merge-readiness review | No remaining high-confidence P0-P2 defect in the reviewed diff. The review fixed two integration issues before handoff: transactional delete moved `rag_response_cache` cleanup out of the API route but left the explicit route-table guard stale, and upstream added a migration after the intentionally final fail-closed ACL assertion. The guard now matches direct route queries and the unapplied ACL migration is renumbered last. Publication requires explicit approved manifests, delete/reindex is serialized transactionally with upload compensation, PDF extraction is bounded, search ignores staged generations, and unsafe effective default ACLs block. | Rebasing and regenerated drift manifest against local `origin/main` 220de891; disposable Docker schema replay; publication/delete/ACL SQL fixtures; Python 4/4; focused Vitest 237/237 plus post-sync schema/retrieval 66/66; docs guards; offline RAG 290/290; production-readiness CI ready; `verify:cheap` 2602/2602 before final upstream sync; exact-head `verify:pr-local` formatting, lint, typecheck, 2628/2628 tests, production build (1043 pages), client-secret scan, and RAG fixtures; `git diff --check`. No live Supabase/OpenAI/GitHub/hosted-CI/provider checks, deployment, or live migration apply. | -| 2026-07-17 | PR #713 / codex/chat-workflow-ideas-0916 | b52112df6aa36311d7420189064acd79dcf2c3f5 + reviewed follow-up diff | workflow toolkit review follow-up | Fixed all 14 actionable Codex and CodeRabbit threads: cross-platform path fixtures, installation-managed preflight guidance, complete Supabase-backed API database scoping, per-command approval boundaries, plugin-ignore narrowing, isolated CI-scope proof, remote-Git command guarding, repository-skill verification classification, `TypeError` diagnosis, strict CLI option values, machine-parseable JSON evidence output, and preservation of baseline database/clinical approval gates in the RAG lab. No unresolved actionable finding remains in the reviewed scope. | `npm run verify:cheap` passed with 273 files and 2,599 tests; focused toolkit Vitest 20/20; CI-scope self-test; plugin-ignore proof; `git diff --check`. Exact-head hosted CI remains required after the follow-up push. No Supabase, OpenAI, or other live product-provider command was run. | -| 2026-07-17 | PR #699 / codex/test-reliability-hardening | 6202835ab1cf3703af311b9afdf372f74c63e040 | branch-cleanup-superseded | Closed as fully superseded by merged PR #705 (`e5caaa46c`). Range-diff maps the original implementation commit to #705's first integration commit; #705 then adds seven focused reliability fixes, while #699's remaining commit is merge-only and contributes no unique relevant patch. The exact-SHA remote ref and the unregistered local predecessor ref (`b518c1de9`) were deleted after final rechecks. | Fresh GitHub PR/head/status inventory; exact `ls-remote` and local-ref checks; cherry-pick-aware log; range-diff against PR #705's merged head; merge-parent verification; exact leased remote deletion and exact-old-value local `update-ref` deletion. No Supabase/OpenAI/product-provider checks run. | -| 2026-07-17 | PR #716 / codex/pr-process-hardening-20260717 | 220de891f10f82df11eb2e8137367514c139a206 + reviewed implementation/follow-up diff | PR metadata, CI triage, review routing, Actions permissions, secret scanning, and branch-hygiene hardening | No remaining high-confidence P0-P2 defect in the reviewed process diff. Added a trusted base-SHA PR metadata/risk policy with draft and merge-queue handling; corrected CI triage to compare only the same workflow's latest completed `main` run; wired self-tests into local/hosted gates; documented the policy; created the missing durable Codex routing labels; removed four unused per-head routing labels; and applied read-only default Actions tokens, immutable Action pinning, no Actions-authored approvals, push protection, and automatic merged-branch deletion. Four policy defects were fixed before merge: API-only paths no longer trigger UI evidence, slash-bearing outcome titles are accepted, all seven governance items are required exactly, and placeholder risk/rollback text is rejected. | Offline `check:pr-policy`, `check:ci-triage`, `check:ci-scope`, action-pin check, scoped Prettier, and `git diff --check` passed. Initial hosted CI passed static, safety, coverage, build, images, Semgrep, Gitleaks, GitGuardian, and the aggregate gate; exact-head CI is required after the review fix. Broader local gates were deferred because other registered worktrees repeatedly held the heavyweight lock. GitHub provider inspection/settings changes were explicitly authorized. No Supabase/OpenAI/product-provider command ran. | -| 2026-07-17 | codex/performance-latency-remediation-20260717 | f277d13512e85dcaae4f9b94d028a8087e41375a | end-to-end database, network, middleware, client rendering, migration, privacy, and merge-readiness review | Fixed all confirmed performance findings plus three final review blockers: title-vocabulary backfill now installs its privacy trigger first, canonical schema replay preserves hardened trigger-function ACLs, and medication auto-seeding no longer aborts its own owner-cache flight. The isolated worktree also uses Next's supported Webpack fallback only when shared dependencies resolve outside the project. No remaining high-confidence P0-P2 defect was found in the reviewed diff. | Docker scratch replay and drift-manifest regeneration passed; live read-only plans selected lexical, table-fact trigram, and chunk HNSW indexes; exact TypeScript passed; focused Vitest owner-cache 9/9, runner safety 12/12, bundle budget 10/10, offline RAG 291/291, and earlier aggregate unit run 2,657 passed with its sole corrected schema assertion subsequently validated by direct ordering/ACL checks; production build and bundle budget passed at 1,363,382 gzip bytes; targeted Chromium dashboard deferral and NDJSON search passed, while the viewer trace reached all hydration/preview assertions and its corrected download-control selector remains for exact-head hosted UI. No OpenAI calls, live Supabase writes/migrations, deployment, or production mutation ran. | -| 2026-07-17 | codex/mobile-search-phone-refresh-20260717 (supersedes PR #700) | 42a3e3ce65dc5a0e1dce386e0b91fccd23d13d6c + reviewed follow-up diff | phone universal-search command-panel recovery and merge-readiness review | Recovered the still-useful behavior from PR #700 onto current `main`, including its hydration fix and wide-touch regression coverage. Hosted Production UI then exposed one desktop focus race: capability state intentionally initializes false for hydration safety, but an input could receive focus before the post-hydration effect synchronized the real browser state. The follow-up recomputes the same guarded predicate synchronously on focus; it requires the placement breakpoint plus either a fine pointer or a zero-touch desktop fallback, so wide touch devices remain suppressed while desktop keeps the first command-panel interaction. No remaining high-confidence P0-P2 defect was found in the scoped diff. | Focused Vitest 7/7; `npm run ensure` verified the project at `http://localhost:3751`; hosted static, safety, coverage, build, advisory UI, Semgrep, Gitleaks, and GitGuardian passed; the first hosted Production UI run isolated the nine desktop regressions. The focused browser proof reproduced the desktop race while the wide-touch regression passed, and exact-head hosted Production UI remains required after the focus fix. `format:changed -- --check` and `git diff --check` passed before the final follow-up. No Supabase/OpenAI/product-provider command ran. | -| 2026-07-17 | final historical branch/worktree cleanup against `origin/main` | 5d195d7ca8752b2ae4006725c6b145c5662bb687 | branch-cleanup | Merged PRs #716 and #717, closed superseded PR #700, and removed the three clean task worktrees. Deleted exact remote refs for `codex/mobile-search-phone-fix-20260717` (`590f32b73`), `claude/audit-findings-review-phgz92` (`ea3b8f95b8`), `codex/chat-forms-import-6914` (`b05da82f82`), `codex/chat-supabase-migration-preflight-b463` (`1ef0faee95`), and `codex/dsm-diagnosis-mode` (`f6cda83ca6`); the merged #716/#717 branches were deleted automatically. Deleted 14 unregistered local refs only after direct-main ancestry, exact ledger deletion-pending proof, or exact merged-PR commit provenance. Final inventory found zero remote branches without an open PR or registered worktree, zero locally merged or exact deletion-pending orphan refs, and no retired target refs or paths. Thirteen non-ancestor local refs and 25 registered worktrees remain preserved because they are backups, patch-unique/unresolved, open-PR-owned, or ownership could not be safely disproved. | Fresh fetch/prune; exact GitHub PR/head/merge associations; cherry-pick-aware logs; DSM PR #661 exact commit/file provenance; exact leased remote deletes; exact-old-value local `update-ref` deletes; clean-worktree and path/process checks; worktree prune; final zero-orphan inventory. The Codex task registry lookup timed out, so ambiguous registered worktrees were conservatively retained. No Supabase, OpenAI, production-data, or live clinical workflow ran. | -| 2026-07-15 | HEAD detached 570e6ba56 + WIP tree | 570e6ba56ae60bea56a32801b9cc96c5a8dfde4f | thorough multi-lens review: WIP RAG/schema + clinical design/UI + architecture/bug-hunt | Changes requested: no P0. Confirmed P1s in WIP — registryCorpusDetailHref typecheck break; ChunkLoadCache error/null poisoning across parallel hydrations; registry cleanup `::uuid` cast abort; corrector GIN unused by query path; new table-facts trgm index expression mismatch vs trgm_matches. Design: production clinical shell stays token/a11y-aligned; favourites nav multi-gradient bars and mockup hex drift fight clinical density. Residual: concurrent cache race, SECURITY DEFINER revoke gaps, schema/migration lifecycle drift, accidental pnpm-lock.yaml. | `npm run typecheck` (red: registry link callers + stale .next apps types); static SQL/expr/diff review; architecture + bug-hunt agents; design-system grep (tokens, reduced-motion, forced-colors). Not run: vitest, verify:*, ensure/browser screenshots, live Supabase/OpenAI. frontend-ui-reviewer subagent blocked by usage limit — design pass done inline. | -| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (PR #826) | 3d9ee5f44dea9edb1ef5af28f5f265d88d8b9f29 | PWA hardening implementation (plan Phase 1) | Implemented the three open findings from the 2026-07-17 PWA setup review with zero cache-semantics change: committed the rule-6 retirement worker `public/sw-kill-switch.js` with a five-test lock (`tests/pwa-kill-switch.test.ts`), bound the `offline.html` sha256 to the sw.js `CACHE_VERSION` pairing in `tests/pwa-manifest.test.ts` (drift trap closed), added the `?pwa-dev=0` local teardown to `pwa-lifecycle.tsx` with a dom test proving foreign workers and caches stay untouched, and updated `docs/pwa.md` rules 1 and 6 plus the local-dev cleanup step. Phase 0 of the approved plan (pr-policy `base_ref` checkout fix + the Set-Cookie worker-test case) was found already merged to main and skipped. | Focused Vitest 53/53. `verify:cheap` and the `verify:pr-local` unit stage green except `tests/pdf-extraction-budget.test.ts`, which fails identically on clean main in this container (child-process semantics; baselined twice). `verify:ui` 218 passed with 2 container-baselined pre-existing failures: the `ui-pwa` installability test (Chromium `in-incognito` artifact, reproduced from a clean-main detached worktree with its own server) and the `ui-smoke` document-viewer PDF-canvas mobile test (also fails on clean main `54229f0`; flagged as possible upstream regression). `format:check` clean for repo files. Conditional build/bundle stages deferred to the blocking hosted CI Build job on PR #826. No provider-backed checks run. | -| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (PR #835) | d46f381ac27b53b1bd5ac0ef77962fbd48cf3aa7 | PWA manifest and install-UX polish (plan Phase 2) | Implemented Phase 2 of the PWA plan with cache semantics untouched: `launch_handler` navigate-existing/auto and `display_override` standalone/minimal-ui in `manifest.ts`; `monochrome-192/512` icon variants rendered as a white alpha-only silhouette from the shared brand mark via `BRAND_MONOCHROME`; a one-time iOS/iPadOS Add to Home Screen hint in `pwa-lifecycle.tsx` (30-day dismissal key, never in standalone, timer-deferred eligibility for the set-state-in-effect lint rule). Docs Installability section updated; manifest screenshots remain deferred per the production-capture precondition. Phase 2 re-scout confirmed zero upstream drift before implementation. | Focused Vitest 55/55. `verify:cheap` 2773 passed/1 failed and `verify:pr-local` unit stage identical — the lone failure is the known container-only `pdf-extraction-budget` artifact (clean-main baselined; hosted CI green on #826). `test:e2e:pwa`: privacy journey passed; icon probes validated both new monochrome PNGs; sole installability error remains the container `in-incognito` artifact. `verify:ui` 219 passed/2 failed — exactly the two clean-main-baselined container artifacts, no new failures. `format:check` clean. Build/bundle stages deferred to the blocking hosted CI Build job on PR #835. No provider-backed checks run. | -| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (Phase 3, PR #872, final reviewed head ba46c1581a3c4e87d5d5989f3eb77483c9aa8aa5) | ba46c1581a3c4e87d5d5989f3eb77483c9aa8aa5 | PWA offline-page design upgrade (plan Phase 3) | Rebuilt the `public/offline.html` visual shell on mirrored Clinical White / Aegean Graphite tokens (each value annotated with its source token): pure-white canvas, aligned text/border/hover values, system UI font stack, and the clinical-accent focus ring replacing the off-contract amber. Privacy copy, structure, forced-colors behavior, safe-area insets, and target sizes unchanged. `CACHE_VERSION` bumped to the new unique `2026-07-18-v1` with the offline.html sha256 pairing updated — the Phase 1 binding guard exercised for real and enforced the paired move. A transient typecheck failure from stale `.next/dev` route types (cross-branch dev-server state) self-resolved after server regeneration; nothing was deleted. | Focused Vitest 55/55 including the binding guard on the new pairing. `verify:cheap` 2778 passed/1 failed and `verify:pr-local` unit stage identical — the lone failure is the known container-only `pdf-extraction-budget` artifact (clean-main baselined; hosted CI green on #826/#835). `test:e2e:pwa`: the cold-offline journey rendered and asserted the redesigned page through the new-version worker; sole installability error remains the container `in-incognito` artifact. `verify:ui` 219 passed/2 failed — the same two clean-main-baselined container artifacts, no new failures. Build/bundle stages deferred to the blocking hosted CI Build job. No provider-backed checks run. | -| 2026-07-18 | codex/rag-merge-final-20260718-655a | 20e5964bbfdcac0311b89c96931a43544be545a6 | RAG recovery, grounding, and latency merge closure | Reviewed the recovered historical RAG fix series against fresh `origin/main`. No additional source change was needed: current main already contains the stricter source-scoped numeric grounding, blocked-retrieval-only extractive recovery, generic LAI deterministic recovery, per-case answer latency diagnostics, and agitation lexical-path protections. The only residual branch diff was proven unreachable because every medication-chart trigger yields explicit search terms; it was intentionally not carried forward. | Full local Vitest: 301 files / 2,779 tests passed. Offline RAG fixture and production-contract validation: 36 golden cases, 21 suites, 294 tests passed. Prettier and `git diff --check` passed. `verify:cheap` reached its lint stage after all preceding static guards passed, but was blocked twice by active heavyweight jobs in other registered worktrees; it was not retried. No Supabase, OpenAI, live retrieval, production-readiness, deployment, or hosted CI command was run. | -| 2026-07-17 | codex/design-audit-20260716 | 47b58ddf95826231a6057b400e7f601c403a129d + reviewed working diff | exhaustive design, accessibility, UX, interaction, route, responsive, HTML/CSS/JS/TSX, and test-coverage audit with remediation | No P0. Fixed two P1 trust/responsive defects and the confirmed P2/P3 set: false Favourites provenance/demo leakage/dead controls, Therapy phone reflow/load recovery/contrast, semantic tabs/search/filters, error focus/theme, deterministic Forms back navigation, honest unavailable actions, application dialog semantics, duplicate differential keys, skip-link target, Playwright project isolation, and route coverage. External visual-target fidelity remains unavailable. | Static 261-file/~67,944-line inventory; independent combined-diff review; focused Vitest 21/21; jsdom 24/24; architecture 6/6; accessibility browser 5/5; focused route/browser recovery; lint; TypeScript; runtime/workflow/sitemap/brand/type/icon checks; production build with 1,043 pages and client-secret scan; `git diff --check`. Canonical aggregate Vitest was Windows-runner inconclusive and full UI was not repeated after focused remediation. No provider/API checks. | -| 2026-07-18 | codex/main-merge-51278-final-20260718-late | 45fa3c6c7, 14a0a898c | merge integration of 51278a70d onto fresh origin/main | Replayed the requested historical design-audit commit onto fresh `origin/main`. Kept current-main versions for five conflicts, including the regenerated drift manifest and current schema assertions. Fixed the duplicate sitemap-generator declaration, corrected redirect-section coverage, and restored the current `Clinical Guide` UI contract. | `git diff --check` and `npm run sitemap:check` passed. `npm run test` was attempted twice but blocked by the repository-wide heavy-command lock held by a separate Playwright worktree; no provider-backed checks ran. | -| 2026-07-18 | origin/main framework and dependency modernization snapshot | 4057677c8b92a5e1d997ec44958764fa91f5d424 | parallel build/infra, backend, and frontend modernization audit | Changes requested. No P0. Confirmed two P1 defects: Supabase SSR 0.12 auth-cookie responses discard mandatory anti-cache headers, and reindex bypasses the server-only-aware TSX runner after mutation-capable setup. Five P2 blockers cover the Webpack-to-Turbopack production cutover, incomplete Railway image-build watch ownership, missing clean `next typegen`, Node 26 types over a Node 24 runtime, and App Router retry actions that reset without re-fetching. P3 removal-readiness debt remains in Zod and Next Image APIs. Manual rewrite zones are auth response ownership, bundler/CSP/artifact consumers, JSZip resource limits, OpenAI request typing, and React Compiler adoption in the stateful dashboard/viewer roots. | Parallel read-only source/config/test audit against the exact snapshot; Node 24.18.0/npm 11.17.0; exact-version Next 16.2.10 bundled upgrade, Turbopack, error-boundary, and codemod guidance; TypeScript 6 backend no-emit analysis and Node import probes via a separately installed exact-version local dependency tree; `git diff --check`. No install, registry outdated/audit, full repo lint/typecheck/test/build/browser/Docker, Supabase/OpenAI, deployment, or hosted CI run; this worktree had no `node_modules`. | -| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (PR #890, plan Phase 4; single-batch implementation+ledger commit — Phase 3 landed as squash 44a4c511bc1381168474794d6f89273564659ead) | ceabc04d75fd0cea2a120d504418d44edd704bfb | App-wide performance pass: audit-then-fix + budget ratchet (plan Phase 4) | Audit on post-#872 main: enforced gzip budget +3.13% over the 1,363,382-byte baseline; analyzer treemap showed pdfjs-dist (123 KB) and cross-mode-differentials data (121 KB) already correctly lazy, and disproved the suspected forms-catalog dashboard leak (type-only import). Confirmed one real defect: the 143-line `/services` client home page value-imported `defaultServiceSlug` from `@/lib/services`, compiling the ~915 KB services snapshot (~100 KB gzip) into its route chunk. Fixed by computing the slug in the server page (`src/app/services/page.tsx`) and passing it as a prop; the client component builds its task cards from the prop. Measured result: budget swung from +3.13% to −3.97%; baseline ratcheted down 1,363,382 → 1,309,286 bytes gzip so CI locks the win. pdfjs/differentials/#718 paths deliberately untouched per audit rules. Two transient `.next/dev` generated-type corruptions from the long-lived dev server were resolved by stopping the server and setting the generated dir aside (reversible); nothing hand-deleted. | Build + `check:bundle-budget --json` before/after (artifacts in session scratchpad); `check:bundle-budget -- --update` for the ratchet; `npm run test` 2789 passed/1 failed (known container-only `pdf-extraction-budget` artifact, hosted-CI-green through #826/#835/#872); `verify:cheap` green to the same artifact; `verify:ui` 219 passed/2 failed (the two long-established container artifacts; ui-tools spec covering the services surface passed); `verify:pr-local` unit stage identical; typecheck/lint/format clean. Lighthouse not run (dev-server churn; bundle evidence sufficed for this fix set). No provider-backed checks run. | -| 2026-07-18 | PR #871 / codex/design-audit-final-pr-20260718 | bb85b546e + ledger closeout | final current-main design/accessibility audit integration, hosted review resolution, and PR-readiness review | No remaining high-confidence P0-P2 defect after current-main reconciliation, two independent read-only reviews, and remediation of every confirmed review finding. The follow-ups made client demo state fail closed in production for both prototype items and set suggestions, separated local no-auth upload capability from Favourites demo treatment, kept unavailable Favourites controls focusable with accessible reasons, restored visible skip-target focus, limited Favourites selection to the wide layout that exposes its workspace, aligned upload/index semantics with each responsive rendering mode, exposed filtered Tools results as a labelled group, and kept Therapy Compass in an honest loading state until its catalogue resolves. The audit also distinguishes completed browser assertions from an incomplete valid document-source redirect case. External design-target fidelity remains unverified without an approved target. | Canonical local PR verification completed through runtime, changed-file formatting, full ESLint, TypeScript, full Vitest, webpack production build/client-secret scan, and offline RAG fixtures. Focused Therapy, navigation/auth, demo-boundary, and unavailable-control regressions passed after correcting one test-order issue; the final demo/upload boundary selection passed 4/4; scoped zero-warning ESLint, changed-file formatting, and `git diff --check` passed. The full local Chromium sweep completed 236/237 with one hydration-timing failure: the app-mode test clicked before React attached its handler. The existing handler-readiness pattern was applied; focused rerun attempts were then lock-blocked by another registered worktree, so exact-head hosted Chromium remains the required proof. Initial hosted checks, including Production UI, passed before these final follow-ups. No OpenAI, Supabase, production-data, deployment, or live clinical workflow ran. | -| 2026-07-18 | claude/clinical-kb-pwa-review-asi3wb (PR #896, plan Phase 5; content commit + this ledger follow-up) | a6c2b4e92374e9002fb00c547eb5677d01ce538c | Design-polish sweep: audit-then-fix (plan Phase 5, final phase) | Audit on post-#890 main: three strict design guards clean; full re-run of the 07-token-adoption-audit grep method shows all July 3 debt resolved (M1–M3 done, L4 reduced to the deliberate theme-aware `ring-white/N dark:ring-white/10` glass idiom, L5/L7 gone; production hex all legitimate print/brand/console/comment classes); 43-capture live sweep across 15 routes × desktop/phone + 320px spots + dark/reduced-motion/forced-colors spots found 0 overflow and 0 console errors. Three defects found and fixed: (1) forced-colors solid-button labels rendered as blank Canvas-on-Canvas backplate boxes (axe-invisible) — command controls flattened to the native HCM ButtonFace/ButtonText pairing and accent glyph tokens flipped to ButtonText inside the existing forced-colors block, regression-locked by a new ui-accessibility test; (2) tools desktop 6-up quick-action rail truncated card titles at 1440×1000 — card metrics tightened, all six titles verified unclipped; (3) privacy page rendered "systemand" from a JSX newline-adjacent-to-tag drop — explicit space, locked by a privacy-ui assertion. Dated July 18 run appended to docs/redesign/07-token-adoption-audit.md (archived design-qa.md not resurrected). | Guards + focused vitest 14/14; `verify:cheap` chain green to the known container-only pdf-extraction-budget artifact (2806/2809); `verify:ui` 220 passed/2 failed (the two long-baselined container artifacts, hosted-CI-green through #826/#835/#872/#890); `test:e2e:accessibility` 8/8 incl. the new forced-colors token test; production build + client-bundle secret scan passed; `check:bundle-budget` within tolerance vs the Phase 4 ratchet (1290.6 vs 1278.6 KiB baseline); `verify:pr-local` runtime/format/lint/typecheck/build/rag-fixtures green with the same sole unit-suite artifact. `verify:release` not run (provider-backed; awaits explicit confirmation). No provider-backed checks run. | -| 2026-07-19 | all remote feature branches and registered worktrees against `origin/main` through PR #899 | 8242fa63d5f5b79fc770c9ae4f633e3a784b80e1 | branch/worktree cleanup, useful-work recovery, and protected-main merge closure | Deleted 122 stale or closed remote feature refs with exact SHA leases; four additional merged PR branches were removed by the protected-main PR workflow. Removed 32 obsolete, superseded, or merge-proven worktree registrations. Recovered useful dirty RAG work into PR #901 (deterministic and opt-in semantic reranking) and PR #902 (retrieval phase latency telemetry), preserved follow-up decisions in `docs/process-hardening.md`, and recovered four missing historical review rows. PRs #897, #899, #901, and #902 are merged with green exact-head checks and zero unresolved review threads. A detached full-repo-review worktree is deliberately retained because its ownership/activity could not be safely disproved; one unregistered `node_modules` junction residue is also retained because deletion was denied by local safety policy. | Fresh fetch/prune; full GitHub PR/check/thread inventory; `git worktree list --porcelain`; cherry-pick-aware right-only logs; exact leased remote deletes; exact-old-value local ref deletes; clean-worktree, path, and merged-PR proof before every removal. PR #899 local proof: focused Vitest 31/31, changed-file ESLint, `verify:cheap` 317 files / 2,879 tests, and `verify:ui` 239/239; exact-head hosted checks all passed. PR #901 local proof: `verify:cheap` 316 files / 2,870 tests; PR #902 focused Vitest 8/8 plus ESLint and typecheck. No OpenAI, Supabase, live clinical, deployment, or production-data workflow ran; provider-backed semantic canary evaluation remains approval-gated. | -| 2026-07-19 | main / `codex/supabase-database-review` | 4034d2e60ebb6616130ff17bf3cb69368f36f8f6 + reviewed working diff | live `Clinical KB Database` security, migration, schema-drift, integrity, and performance review against current repo | Confirmed and remediated a P1 privacy defect: 601 private-document title-vocabulary rows were reachable by the service-role query corrector; the live public-only sync/backfill now reports zero private or out-of-scope rows. Applied the committed retrieval-count bound, audit-metadata minimization, registry cleanup/index, public-title corrector, and atomic summary-rate-limit migrations. The missing FK and registry indexes are present and no invalid indexes remain. A second P1 was found in the untracked live `ingestion-worker`: gateway JWT verification accepted any project JWT before privileged direct-Postgres job processing. Recovered the deployed source into the repo, restricted it to POST plus a gateway-verified `service_role` claim, expanded the Deno checker to every tracked Edge Function, and deployed exact-matching v13 with JWT verification enabled. Review also exposed a repo mirror/test gap: the count-clamp migration was not reflected in `schema.sql`; the branch now mirrors it and locks both sources in the focused test. Remaining hosted blocker: `postgres` cannot assume managed `supabase_admin`, so the fail-closed default-ACL migrations and final title-word constraint/trigger migration remain unapplied; the intentional service-role-only table still produces one INFO no-policy advisor. | Supabase connector project identity, migration and Edge Function inventory, full drift snapshot comparison, security/performance advisors, catalog integrity/ACL/index queries, Vault JWT-role compatibility check, post-apply invariants, exact deployed-source hashes, and unauthenticated live rejection (401); focused retrieval/schema/drift Vitest 82/83 with only manifest freshness failing; Edge/retrieval auth 9/9; Deno check for both functions; offline RAG 36 cases / 294 tests; function-grant guard; scoped ESLint, Prettier, and `git diff --check`. `check:supabase-project` was attempted but stopped before provider contact because local project env vars are unset. `drift:manifest` was blocked because Docker Desktop could not start and was cleaned up. `verify:cheap`, `verify:pr-local`, production-readiness, OpenAI, hosted CI, broader deployment, and commit/push were not run. | -| 2026-07-19 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | 87d4a479cd320220c91eba5c91e253e843dcc98f | final Mode phone-sheet review + merge-readiness | No remaining high-confidence P0/P1. Fixed residual P2 Sheet backdrop drag-dismiss (gesture must start on dimmed area). Phone ≤639px Mode menu uses bottom Sheet; desktop absolute dropdown/keyboard/blur contracts preserved. Python PDF extractor resolves python/python3 and process-group kills reliably. Clinical governance: UI + fail-closed extractor binary resolution only; no answer/source/privacy surface change. Safe to merge after hosted required checks green on this HEAD. | `verify:cheap` 2954 passed; Mode Playwright 5/5 (phone sheet/backdrop/desktop/keyboard/a11y); `check:production-readiness:ci` READY; prettier format check fixed for CI Static; no OpenAI/live Supabase writes; full `verify:ui`/`verify:release` not required beyond Mode proofs. | -| 2026-07-20 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | f6522603eedabb88c311a6f7df172505673d087e | main sync + merge-readiness revalidation | Re-merged moving `origin/main` (kept `PR_POLICY_BODY.md` for CI body sync; adopted main `python-bin` helper; retained PDF process-tree kill hardening). Mode phone Sheet path still present. PR Policy had a race with Sync PR policy body on prior tip; body now contains checked governance items matching main policy. No new P0/P1 in product scope. Merge-ready once exact-head required checks are green. | Local after merge: focused Vitest for extractor/sheet 1127 passed; Mode sheet symbols intact in `master-search-header.tsx`. Hosted: awaiting Static/Unit/Build/Production UI/PR policy on this HEAD. No OpenAI/live Supabase writes. | -| 2026-07-20 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | ddbc549a6af469b61c112373d6a5099cb04810d0 + ledger | hydration fix + merge-readiness | Fixed P1 UI regression: phone `matchMedia` in `useState` caused React #418 hydration pageerrors on DSM/specifier/differential phone journeys in Production UI. Gate now SSR-safe (`useState(false)`), syncs after mount, and refreshes from live matchMedia on Mode open. Merged `#940` header inset. | Local: route-coverage 3/3 previously failing; Mode smoke 3/3; audit-navigation + focused header/sheet Vitest green. Hosted: awaiting exact-head Production UI/PR required. No OpenAI/live Supabase writes. | -| 2026-07-20 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | 792142c88191e201311238984b1530f784430f0e | exact-head merge-ready CI | No remaining high-confidence product defect. Hosted required checks green on tip after Prettier format fix. Residual: branch protection still needs a human approving review (`mergeStateStatus=BLOCKED`, empty `reviewDecision`). | Hosted exact-head: PR policy, Sync PR policy body, Static, Safety, Unit, Build, Production UI, Advisory UI, PR required all SUCCESS. Local Mode Playwright 5/5 + route-coverage hydration 3/3. No OpenAI/live Supabase writes. | -| 2026-07-20 | PR #935 / `cursor/mobile-mode-menu-sheet-efee` | e05cd0b8ac1ef4dbc9b30307e3715fc437b1540e + ledger | CodeRabbit findings + merge push | Closed unresolved review threads: removed PR-head `GOVERNANCE_ALL_CHECKED` self-attest (aligned sync with main + workflow guard), restored strict checklist regex, fixed unset `PYTHON_BIN` test path. Hydration Mode-sheet thread already resolved. Local: full unit 2971 passed; Mode Playwright 5/5; route-coverage 3/3; pr-policy self-test + workflow guard green. | Awaiting exact-head hosted CI; then human approving review remains the only merge gate. No OpenAI/live Supabase writes. | -| 2026-07-19 | cursor/safari-edge-to-edge-f46b (PR #933) | 15061964dd2fdf9665f72b7282f5cc81c736e57f | final Safari edge-to-edge / phone dock reserve review + merge readiness | No high-confidence P0-P1. Confirmed implementation: shared reserve module collapses to 0.75rem when dock hides; shell uses block scrollport + inner mobile-composer-reserve-pad so clearance contributes to scrollHeight; child dock-sized env(safe-area) pads removed; DocumentViewer owns its dock pad. Review polish: formulation/specifier max-sm:min-h-0 alignment, document-route ownership simplification, hidden-pad CSS token guard. Residual P2/P3 only: differentials compare zero-inset backdrop margin, idle 2rem vs max(2rem,safe-area) ~2px, unused-looking #main-content padding transition still needed by ClinicalDashboard. Merge-ready. | Local: format/lint/typecheck/knip/budgets pass; unit 2952 passed with only pre-existing pdf-extraction-budget (python ENOENT, also fails on clean main); production build + client-bundle secret scan pass; focused Chromium composer suite 6/6 (forms hide, tablet/desktop clearance, differentials compare, service-detail endpoint, document-viewer hide, long-answer dock). Hosted CI on prior head fully green including Production UI; polish head re-checked before merge. No OpenAI/live Supabase/provider calls. | -| 2026-07-19 | cursor/hide-favourites-guest-mode-a26d (PR #934) | 23d05539320427ea3f994eaec3c2e95daa481492 | Favourites guest mode-switcher/sidebar auth gate review | No P0/P1. Primary request correctly wired: MasterSearchHeader fails closed; ClinicalDashboard and global-search-shell both pass session favouritesAccessible to mode menu + desktop/mobile showAccountLibrary; selectSearchMode/changeMode guarded; /favourites stays on-page with signup for guests. Residual P2: guest discovery still possible via composer cross-mode Favourites chips and Tools catalog Saved workflows (content remains gated on /favourites). P2 test gap: wiring tests are source-string, not MasterSearchHeader DOM. P3: header passes precomputed access as authenticated plus demoMode (redundant OR, intentional demo reopen). | Focused Vitest favourites-auth-gate + app-modes 26/26; prior verify:cheap green on branch; browser guest check: sidebar omits Your library/Favourites, /favourites shows signup gate; mode-menu automation inconclusive. No OpenAI/Supabase/hosted CI. | -| 2026-07-19 | cursor/hide-favourites-guest-mode-a26d (PR #934) | 04192653 | Final Favourites total guest-blackout review + merge readiness | No P0/P1. Fixed residual P2s: rankToolRecords now fails closed by default; mode/chip filters stop double-ORing demoMode; gated deep-link mode chrome falls back to Answer; MasterSearchHeader mode-menu DOM tests added. Guest discovery closed for mode menu, sidebar, cross-mode chips, Tools Saved, universal tools ranking, also-matches, prefetch. Intentional residual: direct /favourites signup gate; mockup routes. PR body appears overwritten by unrelated Sync PR policy content — agent posted corrective comment (403 on body edit). | Focused Vitest 37/37; verify:cheap green; verify:pr-local green (build + client-secret scan + RAG fixtures); browser guest Tools/sidebar/favourites proof earlier. No OpenAI/Supabase writes. | -| 2026-07-19 | cursor/pr-policy-body-cleanup-f46b (PR #942) + PR #933 closeout | 7c8e6aadf0890b143372fb96f13d9de47a416db9 | post-merge CI triage for #933 PR-policy red check | PR #933 product merge (`bd864de0`) already on main with green post-merge main CI (Static/Unit/Build/Production UI/SAST/Docker). Sole remaining red check on #933 was post-ready PR policy against a stale synced body with unchecked governance boxes (from leftover `PR_POLICY_BODY.md` introduced by #932). Token cannot edit merged PR bodies (403). Removed the stale template via #942 so Sync PR policy body no longer reapplies unchecked governance. Local composer regression 6/6 on main; reserve unit 11/11. No product regression. | Hosted #933 pre-merge + main push green; #942 required checks green then squash-merged; focused Chromium composer 6/6; reserve Vitest 11/11. No OpenAI/Supabase provider calls. | -| 2026-07-19 | cursor/documents-search-header-3eab / PR #936 | a7feaa3033180b672cfafaaaf75dc75088ebf052 | documents search header redesign final review + merge readiness | No remaining high-confidence P0-P1. Implemented identity-first results chrome, unified Sort/type-filter/Library toolbar, removed documents Also-in-library strip, relocated ScopeAndGovernanceNotice under controls, fixed Prettier CI failure and memo-busting empty warnings default, synced accurate PR policy body then removed the stale leftover, and repeatedly merged origin/main so squash auto-merge is not blocked behind/dirty. Hosted required checks including Production UI passed on the integrated head. | Local: typecheck/lint/format; focused Playwright documents `@critical` + deferred source/admin + forms sort persistence; design-system/icon-scale/maintainability; build + RAG fixtures; verify:pr-local units with known pdf-extraction-budget env artifact also on clean main. Hosted: PR policy, Static, Unit, Build, Production UI, Advisory UI, PR required green. No OpenAI/live Supabase writes. | -| 2026-07-19 | cursor/specifiers-results-ui-7850 (PR #941) | ef9bcf23bb93cbaddddeda3aedf08e6d037e2f18 | Specifiers results UI elevation final review + merge readiness | No high-confidence P0-P1. Ranking blurb removed; solid Aegean subnav kept vs soft family chips; diagnosis control content-sized with min-h-tap; match cards single Open hit target with motion-reduce and guarded typical language. Re-synced origin/main after #936 ledger append conflict. Residual risk: hosted Production UI must finish green on exact head; full verify:cheap still hits known container-only pdf-extraction-budget failures also seen on main. | Local: format:changed; lint/typecheck on touched files; design-system + icon-scale; vitest specifiers+reserve 10/10; Playwright ui-specifiers 5/5 including filter interactions; production build + client-bundle secret scan; offline RAG fixtures 36/21. PR marked ready for review. No OpenAI/live Supabase provider calls. | -| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | 2df3181859345339d777ac814908b3095cea36fd | ModeHomeMain contentAlign fix for differentials mobile clipping | No high-confidence P0–P2. Fix correctly introduces exclusive `contentAlign` (`center` \| `start` \| `startOnPhone`), migrates therapy/formulation/specifiers off broken className justify overrides, top-aligns differentials results via `autoRunSearch`, and guards with static + Playwright fold assertions. Residual: DSM/forms/services still default-center; justify-strip leaves variant prefixes; Playwright `0.55*vh` upper bound may flake if header band grows; Chip compact overrides still dual-utility via `cn()`. | Static diff vs `origin/main`; inventory of all `ModeHomeMain` call sites; justify-strip regex probe; `npx vitest run tests/mode-home-main-align.test.ts` 4/4. Not run: Playwright/`verify:ui` (browser), `verify:cheap`/`verify:pr-local`, provider-backed checks. | -| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | 74c370d81342dd729398dc2b40ba3158ea30f1db | follow-up review + residual polish (policy body, align API, UI flake) | Prior residuals closed: `PR_POLICY_BODY.md` rewritten for #938 (Sync PR policy body was overwriting with stale #932 text); `withoutJustifyUtilities` strips prefixed utilities; Chip uses exclusive `density` type scale; DSM/forms/services use `startOnPhone`; Best Answer fold bound uses header+240px; `ui-overlap` waits for a single `header#search`. No remaining high-confidence P0–P2 in the ModeHomeMain/differentials mobile scope. | `npx vitest run tests/mode-home-main-align.test.ts` 5/5; Prettier on touched files. Playwright focused rerun and hosted Production UI expected after push. | -| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | b62d414ca9001fbc1ac0d50b315450e107751d67 | merge-readiness after policy + hosted UI | No remaining high-confidence P0–P2. PR description sync + `verify:ui` evidence keep PR policy green; hosted Production UI / PR required green on exact head. | Local: align Vitest 5/5; ui-overlap 12/12; differentials fold Playwright 1/1. Hosted: Production UI, Advisory UI, Static, Unit, Build, PR policy, PR required, Sync PR policy body all pass. | -| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | f6682cc08eb0fcc0b8dd170d5c9358b3fedc0c0d | final meticulous review + safe-merge handoff | No high-confidence P0–P2. Forms/services now centre when unseeded/loading and use `startOnPhone` only when seeded (avoids sparse empty homes). CodeRabbit risk-line comment dispositioned as stale #932 body confusion. Residual: branch protection still requires a human approving review before squash auto-merge can land. | Local: align Vitest 5/5; focused Chromium overlap+fold 13/13; verify:cheap/pr-local unit stages 2953/2955 with only known container `pdf-extraction-budget` Python ENOENT failures; format/lint/typecheck/RAG fixtures pass; local `next build` blocked by running ensure server (hosted Build green). Hosted exact-head: Production UI, PR required, Unit, Static, Build, PR policy all SUCCESS. Enabled squash `--auto` merge. | -| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | e177b5e877aa2f834b3a601fa37679fa3e77b0e3 | merge main (#933) + post-merge revalidation | Merged `origin/main` (Safari edge-to-edge #933) with ledger conflict resolved by keeping both review rows. No product conflicts; `contentAlign`, Chip density, and Best Answer fold asserts intact. No new P0–P2. Still blocked only by required human approving review; squash auto-merge remains enabled. | Local after merge: align+composer-reserve Vitest 9/9; focused Chromium dock-hide + fold + compare-dock 3/3. Hosted on merge head: Production UI, PR required, Unit, Static, Build, PR policy all SUCCESS. | -| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | 3a775d4fd9a44e97388c0041cb421f06265a7721 | fresh final review (user-requested) + main sync (#937) | No high-confidence P0–P2. Product delta unchanged vs prior merge-ready head; #933 reserve + #938 contentAlign remain complementary. Merged `origin/main` (#937) cleanly. Follow-up: dropped `PR_POLICY_BODY.md` when syncing #942 so this PR does not reintroduce the stale template; live PR description already correct. Residual: required human approving review. | Local: align+composer-reserve Vitest 9/9; focused Chromium overlap+fold+compare 14/14. Hosted CI green on prior tip. | -| 2026-07-19 | PR #938 / `cursor/fix-differentials-results-top-d760` | efe472fac3489473e2465da2d92980508c20fd81 | merge main (#934 favourites) + #941 sync | Merged favourites guest-gate (#934) then Specifiers results UI (#941). Product conflicts none: kept `contentAlign="startOnPhone"` on Specifiers home while taking #941 results chrome. `ui-overlap` gotoHome wait conflict resolved with settled single-header short-circuit. No new P0–P2. Residual: human approving review required for squash auto-merge. | Local: align Vitest; favourites+app-modes+tools 42 tests; Chromium ui-overlap+ui-tools 95/95; verify:cheap unit stage green. Hosted CI green on pre-#941 tip; re-running after this merge. | -| 2026-07-20 | cursor/documents-search-header-3eab / PR #936 | bdc333a9fa7e420e2beb2f146c6f271196869cb5 (squash on main) | post-merge closeout + branch-cleanup | Squash-merged to main. Product proof on main: `DocumentResultsControls`, identity-first documents results chrome, governance notice under controls, Also-in-library strip removed from documents results path. Remote feature ref already deleted by protected-main workflow; local tip `fd559a07` retained only merge/review commits with no unique product patch vs main. | Hosted pre-merge and post-merge required checks green (Static/Unit/Build/Production UI/PR required). Squash content proof via main tree symbols; remote `ls-remote` empty after prune; local branch deleted after this ledger row. No OpenAI/Supabase provider calls. | -| 2026-07-20 | cursor/fix-ui-overlap-duplicate-header-3eab / PR #944 | 08181b8b45cf23d53ff7fb8682fb5f83f4417fb0 (squash on main) | post-merge closeout + branch-cleanup | Squash-merged to main. Product proof: `gotoHome` pins `/?mode=answer` and waits for exactly one `header#search` before overlap measurement, closing the landing-preference dual-banner flake that failed Production UI then PR required on #936. Remote feature ref already deleted; local tip `418de1b9` is merge-only after squash. | Local before merge: verify:pr-local (2961 unit) + Chromium ui-overlap 12/12. Hosted exact-head and post-merge: Production UI, PR required, Static, Unit green (Build skipped for test-only). No OpenAI/Supabase provider calls. | -| 2026-07-19 | cursor/mobile-header-new-chat-inset-66c0 (PR #940) | 84eb0b6c3782e27fbbd1ec79b87b10327802ec1e | final mobile header new-chat edge inset review + merge readiness | No high-confidence P0-P1. Root cause: unlayered `@media (max-width:639px)` zeroed `.edge-glass-header` padding and beat `@layer components`. Fixed with tokenized `--header-edge-pad: 1rem` shared by layered base + unlayered phone guard; Playwright symmetry checks at 360/390; source contract blocks a `max(0px, safe-area)` regression. Merged latest `origin/main` (including #933/#942/#943) while keeping the header-edge-pad token. Residual: headless Chromium cannot exercise asymmetric safe-area `max()`; DocumentViewer gains the same pad but is outside the symmetry test. | Local geometry probe 360/390/640 = 16px/16px symmetric; CSS contract Vitest 5/5; `ui-overlap` Chromium 14/14; prior `verify:ui` 242/242 on the functional head; `verify:cheap` unit suite hit only the known container-only `pdf-extraction-budget` python ENOENT artifact (also fails on clean main / hosted-CI-green elsewhere). PR marked ready; squash auto-merge enabled. No OpenAI/live Supabase/provider calls. | -| 2026-07-20 | origin/main PWA-surface review, window `ef042ca..e128384` (44+ commits; explicit user request) + phone install-sheet redesign (this branch, content commit d8d8c4a) | e1283846647b20cd49ca6ae6920a7c76f2b945d7 | PWA-version review of new progress + install-notification design elevation | Sweep verdict (agent-verified): only #905/#897 (this program's own work) touched PWA surfaces in the window — sw.js CACHE_VERSION `2026-07-18-v1` and its offline.html binding, manifest (7 icons incl. monochrome; screenshots deliberately absent), icons route, kill-switch, and next.config headers all unchanged, so the privacy contract holds by construction. Geometric risk from five composer/dock-space reworks (#933 mobile-composer-reserve, #932, #930, #922, #899) probed live at 390×844: the non-install notice stack keeps correct clearance at rest (offline card bottom 744/844 with the 5.5rem gutter) and the stack's offset is now a custom property (`--pwa-notice-bottom-gap`) for one-line re-anchoring if composer geometry moves again. Redesign: install prompt + iOS hint present as a native bottom sheet on phones (full-bleed, flush bottom, grip bar matching #935's sheet language, real app icon identity via /icons/icon-192, Free/no-store meta row, two accent step chips for Share→Add to Home Screen as aria-hidden reinforcement of the unchanged accessible sentence); ≥640px keeps the #905 card/toast placements; region names, button names, and test-locked sentences unchanged. | Focused vitest 56/56 across the four PWA suites; `verify:cheap` 2971/2975 (sole fail = known container-only pdf-extraction-budget artifact); `test:e2e:pwa` privacy/offline green (installability fail = known container `in-incognito` artifact); `verify:ui` 243 passed/2 failed (the two long-baselined container artifacts); production build + client-bundle secret scan + bundle budget within tolerance (1303.4 vs 1278.6 KiB baseline; sheet adds ~0 JS); visual evidence at 390 light/dark/iOS-hint + 768 + 1440 with bounding-box math (full-bleed flush-bottom on phone; card/toast intact above). No provider-backed checks run. | -| 2026-07-20 | Credentialed release-gate checkpoint closeout (workflow_dispatch on main `7ec25d9`; user-authorized ≤$10, single dispatch each) | 7ec25d9675dea13635fa4a895af88c93da694a42 | Credentialed half of the release gate: CI dispatch + live eval canary | CI dispatch: 9/10 jobs green (unit coverage, build, Chromium production journeys, migration replay on local Supabase emulator, production-readiness CI-safe, policy self-tests, static/safety/scope). `release-browser-matrix` (WebKit/Firefox) CANCELLED twice by main-churn: ci.yml `concurrency: CI-${ref}, cancel-in-progress: true` kills in-flight dispatch runs on every main push and this repo merges every few minutes — livelock confirmed at the 2-attempt cap; WebKit/iOS verification remains outstanding with three human options (quiet-window dispatch, the weekly scheduled run, or a one-line dedicated concurrency group for the matrix job — operational-risk change, not applied). Eval canary: golden retrieval eval FAILED 4/36 (document_recall@5 0.944, ndcg@10 0.923, force_embedding_failure_count 0, no 429s — vector layer healthy, NOT the documented vector-ptsd transient class); the July 17 dispatch PASSED this step pre-#901, so the regression window implicates #901's deterministic semantic reranking (lithium-therapy-monitoring shows three unrelated documents with byte-identical rerank scores burying the lithium guideline; two other failures add fixture-vs-corpus identity components; answer-quality subset — the July 17 failure — never ran). NO canary re-run per plan (deterministic, not transient); retrieval is clinical-path and deferred to a human decision. Provider spend ≈ $1–2 (one canary run's embeddings); matrix/CI runs $0. | actions_run_trigger dispatches + rerun_failed_jobs (attempt 2); job-level conclusions and log excerpts from runs 29675875530 (both attempts), 29675878737 (July 19 canary), and 29567502452 (July 17 baseline). No local provider calls; secrets never left GitHub Actions. | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: ci.yml concurrency) | 79aaacf04e64f753c480dd957a81ac9be6acbb43 | CI workflow concurrency: stop main churn cancelling dispatch/schedule runs | One-line group expression: workflow_dispatch/schedule events now get a per-run concurrency group (github.run_id) while push/PR keep the shared ref group with cancel-in-progress — fixes the release-browser-matrix livelock (cancelled twice on 2026-07-19/20 by main merges mid-run; the weekly Sunday 18:00 UTC scheduled run was subject to the same cancellation). release-browser-matrix is not a required branch-protection check; pin/scope checkers do not constrain the concurrency block. Accepted side effect: deliberate runs can overlap push runs. Rollback: plain revert. | check:github-actions PASS; check:ci-scope PASS; format:check PASS (repo files; local-only .claude/settings.local.json warning is gitignored) | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: #901 rerank regression closeout) | fd5dcd1582e1c7aa8bf92ff097575e0c68aa930d | #901 rerank regression: baseline re-eval + offline guard net + saturated-tie fix | Baseline eval-canary dispatch on remediated main b3ae061 (run 29731533081) PASSED — golden retrieval 36/36 + answer-quality green, confirming #913-#926 closed the live 4/36 regression (July 19 failing run tested the raw #901 state; fixes landed 1-8h after it, never re-evaled until now). Residual defect found by new offline repro and fixed: with byte-identical imputed fast-path primaries, selection's clamped keys tie exactly and the chunk-id fallback decides, which secondStageScore's position adjustment launders into releaseRankScore (buried the CIWA answer doc in repro); fix = contentRankScore carried on RetrievalCandidate as tie-break between clamped rerankScore and chunk id, never added to scores. Amended #901's own never-live-validated saturated-tie pin to content-rank-then-id. Guards: tests/rag-fast-path-ordering.test.ts (4 end-to-end eval-shape repros) + ranking-tuning gates (4 golden-mapped hard negatives at production weights + full-snapshot high-risk). Fixture aliases NOT changed (Step C not triggered — identity cases pass live). | Targeted 4-suite vitest 37/37; npm run test 2981 passed (sole fail = container-only pdf-extraction-budget artifact); verify:cheap green through all 18 pre-test checks incl. lint+typecheck; check:production-readiness PASS on substantive checks (2 FAILs = documented missing-secret class in this container); build + client-bundle scan + check:rag:fixtures PASS | -| 2026-07-20 | claude/phone-scroll-fix (PR #993) | f0f4c42e7 | Phone scroll "locks to bottom" regression from #964 + all-pages phone scroll audit + guardrails | Root cause: #964's phone mode-home dock made one hide-on-scroll event release ~180-260px of scroll geometry (header grid collapse + reserve-pad shrink) — more than a short mode home's remaining runway, so scrollTop clamps onto the new bottom and a 12px up-drag snaps it back (oscillation; measured 266→84px runway, 2 flips/gesture on /formulation @390×844). Invisible to all gates because the suite-wide reducedMotion:"reduce" disables the causal transitions. Fix: collapse-budget gate in computeScrollHideUpdate (hosts report the would-be geometry release via readChromeCollapseBudget; hide refused without runway to absorb it; budget-less consumers unchanged; bottom-clamp guard untouched). Bonus latent bug fixed: DocumentViewer's one-shot #main-content discovery could hold a detached node after shell remounts (viewer hide-on-scroll dead); observer now persists. ui-smoke bottom-hide scenario updated to the gate contract. New 18-test sweep tests/ui-phone-scroll.spec.ts (10 mode homes + 3 dashboard modes + 4 long routes, motion enabled, simulated PWA insets) verified to fail red pre-fix. Residual: real-device iOS momentum clamping is device-only — user PWA confirmation requested post-deploy. | vitest focused 24/24 + mobile-composer-reserve; verify:cheap 3020 green; ui-phone-scroll chromium 18/18 + webkit advisory 18/18; ui-formulation+ui-tools+ui-smoke 180/180; verify:ui 264/264; verify:pr-local green (format/build/bundle-scan/RAG fixtures). No provider calls. | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: coverage tie-break follow-up) | 57ec880b306a8e2b31c5f20dacc47256fc93b4e2 | Post-merge live-eval finding on #982 + corrective fix: saturated-tie key rankScore → query-term coverage | Post-#982 golden dispatch (eval-canary run #50, 29735004222, main b9057f0 + deps) came back 35/36: the three verifiable July-19 failures (lithium-therapy-monitoring, clozapine-anc-threshold, patient-safety-plan-include) all PASS live, but alcohol-ciwa-threshold flipped pass→FAIL vs the same-morning pre-#982 run #49 (29731533081, 36/36) — failing top-3 ordered by descending rankScore (1.85/1.75/1.53, all finalScore-saturated, releaseRankScore 1.09/1.086/1.07), i.e. #982's tie-break let generic clinicalSignalBoost stacking outvote the ciwa/score/threshold-bearing chunk; #982 is the only retrieval-path delta in the window. Fix: contentRankScore → contentCoverageScore sourced from lexicalCoverageScore (query-term coverage, immune to boost stacking; ties still fall to chunk id); saturated-tie contract test re-pinned so coverage beats a HIGHER rankScore (discriminating — old key fails it); fast-path CIWA guard gains the run-#50 screening-chunk shape + content-term assertion. Live validation: tonight's 18:00 UTC scheduled canary (dispatch cap 2/2 spent ≈$2-4). Separately: ci.yml dispatch 4012 survived 30+ min of main churn under #979's per-run concurrency group (fix working); duplicate dispatch 4017 cancelled. | Targeted vitest 38/38; npm run test 3012 passed / 1 known container-only pdf-budget artifact; verify:cheap green to the same artifact; build + client-bundle scan + check:rag:fixtures PASS; check:production-readiness expected missing-secret FAILs only (no secrets in container) | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: WebKit matrix diagnosis) | caa298972846ef52d472bfbff98c90fc26481ed8 | First completed release-browser-matrix in weeks (run 4012, main b9057f0, 38 min uncancelled under #979) — full triage of 28 failures + fix for the dominant cluster | Run 4012: 716 passed / 28 failed (25 webkit, 3 firefox) / 4 skipped. Dominant cluster (root-caused, FIXED here): all 8 ui-universal-search webkit failures share one signature — typeahead content never enters the DOM — because commandDropdownCanDisplay (added 42a3e3c 2026-07-17, AFTER the last completed matrix; never ran on WebKit until 4012) requires fine-pointer OR zero-touch; headless browsers fail the (hover:hover)+(pointer:fine) query (proven by the zero-touch escape existing for CI at all), Chromium/Firefox pass via maxTouchPoints===0, and Playwright's Linux WebKit build advertises phantom touch points — flunking both branches and disabling useUniversalSearch entirely. Fix: beforeEach addInitScript in ui-universal-search/ui-smoke/ui-tools specs stubbing Navigator.prototype.maxTouchPoints to the runner's true 0 (inert on Chromium/Firefox; product gate + tests/search-command-surface.test.ts pins untouched). Local chromium runs of ui-universal-search fail 16/20 IDENTICALLY on unmodified main (container artifact — hosted CI chromium green in 4012 is authoritative; verified by stash/run/pop baseline). Expected delta next matrix: ≥8 webkit failures clear; candidates ui-tools:1244 + several ui-smoke answer-flow cases (same surface). NOT yet root-caused (triaged remainder, hosted-matrix-only reproduction): webkit ui-stress overflow 330/409 (360px overflow at mobile), webkit ui-accessibility 195/252 (focus dismissal; forced-colors labels), webkit ui-formulation 132, webkit ui-smoke copy-table/retry/recovery/recent-searches/source-only/differential-context/viewer-hydration/document-questions, webkit ui-tools 2087 (goto interrupted by ?q= navigation), webkit ui-universal-search 183 strict-mode duplicate options (fallback-surface rendering; likely clears with the gate fix), firefox ui-smoke 946/2206/2932 (@critical document search fails on BOTH firefox and webkit — cross-browser, highest-priority remainder). | prettier PASS; eslint PASS; typecheck PASS; chromium stash-baseline no-delta (16 fail pre AND post — container artifact); webkit validation lands via tonight's 18:00 UTC scheduled matrix | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: matrix-remainder fixes) | ec070ccb20b9a067216e64e8399d9cd795027024 | Run-4012 remainder: 7 root-caused fixes (SW navigation hijack, WebKit focus/forced-colors/stale-style, Firefox tab order, CIWA alias, helper extraction) | Agent-diagnosed with probe evidence: (1) production-build PWA worker registers in EVERY matrix test (pwa-lifecycle.tsx:287 NODE_ENV gate), clients.claim()s the page and serves all navigations — Chromium probe proved SW-served reloads bypass page.route entirely (routeSawNav=[]); Playwright-Firefox wedges on its only two reloads (ui-smoke 2206/2932, both deterministic) → playwright.config.ts serviceWorkers:'block' + ui-pwa 'allow' opt-in (offline/CacheStorage journey verified passing locally under the opt-in). (2) Mode-menu dismissal relied solely on wrapper focusout; WebKit Tab navigation can move focus nowhere (links excluded) or wrap into the menu → keydown Tab-close in handleModeTriggerKeyDown (agent verified no test depends on old forward-Tab behavior). (3) WebKit has no forced-colors implementation → capability skip on the token-remap test. (4) WebKit stale :disabled computed style feeds axe a phantom 1.93 contrast for the re-enabled Previous button (blend arithmetic exact: 0.4×#475467+0.6×#fff=#b5bbc2) → toBeEnabled+opacity-1 pin before the scan, failure-at-pin = direct proof. (5) Firefox includes scrollable containers in tab order (sheet body scrollHeight 1125 vs 707 measured) → conditional step-over. (6) canary #50/#51 CIWA failure root cause: whitespace-delimited textContainsClinicalTerm can never match hyphenated 'CIWA-Ar' though the dosing-table region ranks top-5 → clinicalContentAliases ciwa:[ciwa, ciwa-ar] (plan-authorized fixture-alias route; content substance unchanged). (7) tests/helpers/zero-touch.ts shared helper replaces six #995 inline stubs (CodeRabbit follow-up). NOT claimed: ui-stress 409 overflow, ui-tools 2087 navigation race, webkit answer-flow subset — next matrix run (post-merge dispatch) measures these vs the 28-failure baseline; ui-smoke 2932 webkit-side is a distinct mock-data class deliberately deferred pending that run. | Targeted vitest 25/25 (eval-retrieval + search-command-surface); npm run test 3012 passed / 1 known container pdf-budget artifact; verify:cheap green to same artifact; build + client-bundle scan PASS; prettier/eslint/typecheck clean; chromium ui-pwa under new SW config: offline/CacheStorage privacy journey PASS, installability = known container in-incognito artifact; UI verification not run locally beyond that: chromium ui suites carry documented container artifacts — hosted ui-critical/ui-advisory + next matrix authoritative | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: eval measurement floor, ADDENDUM 4 A-PR-1) | 81ab9696da4b330ca0b2e5519891a9942f90421b | Measurement floor for evidence-gated ranking tuning: canary artifact emission, alias-aware snapshot builder, snapshot provenance/freshness — no ranking behavior change | Closes the three gaps blocking safe tuning (Phase B): (1) eval-canary's golden step now writes the per-case JSON artifact (--json-out decoupled from --json so the tee'd log keeps the human-readable lines the failure-issue analyzer parses) and uploads .local/eval-canary/ via pinned upload-artifact (30-day retention, include-hidden-files for the dot-dir, contents = same class as the already-public step logs: titles/telemetry/220-char previews of the all-public corpus) — snapshot regeneration stops costing a paid dispatch; (2) clinicalDocumentAliases/clinicalContentAliases moved verbatim to shared scripts/lib/clinical-aliases.ts and the snapshot builder grades documentMatch/contentMatch through them (discriminating tests: EMHS agitation title and spelled-out "absolute neutrophil count" grade as hits only via aliases — raw labelMatches pinned false), ending tuner ground truth disagreeing with the live gates; (3) snapshots carry generatedAt + optional sourceRunId, validator accepts them, exactly-36 relaxed to at-least-36 (floor still rejects truncated artifacts; sourceCaseCount + per-case candidate minimums unchanged), and a 30-day freshness test (activates on first regeneration) blocks silent corpus drift. Builder smoke-verified end-to-end on a synthetic 36-case artifact (alias grading + provenance stamped + validator green). Static hyphen audit of all 36 cases' terms: no currently-blocked term (canary #52 = 36/36); residual risk classes documented for the A-PR-2 artifact-grounded pass — punctuation-joined tokens (IM/PO, schizo-affective, post-natal) and inert stem entries (obsess/compuls/hyperactiv/impuls can never match whole-token) that currently ride on whole-word OR-alternates. | Targeted vitest 52/52 (ranking-tuning + eval-retrieval + eval-quality); npm run test 3019 passed / 1 known container-only pdf-budget artifact; lint + typecheck clean; check:github-actions + check:ci-scope PASS; prettier clean; check:production-readiness expected missing-secret FAILs only (demo-mode container); no provider calls — live validation = tonight's scheduled canary emits the first artifact at $0 | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR #1001: A-PR-2 measurement-floor completion) | 3d8f798 + 5b664f8 + e58c827 | First provenance-stamped snapshot regeneration from a live canary artifact + alias tiering docs + fixture-length pin + lithium doc-gate — Phase A of ADDENDUM 4 functionally complete | Artifact chain: user-authorized paid dispatch (canary #53, run 29763761133, 36/36 green, doc_recall 1.0 / content_recall 1.0 — first perfect content recall, ciwa alias confirmed live; mrr@10 0.8644, irrelevant@10 0.1083) emitted the first eval-canary-output artifact (51787 bytes, sha256 5af5b802… verified byte-identical after user transfer into the sandbox — this container cannot download run artifacts). Work: (1) two-tier alias documentation — investigation of the governance-review P3 showed src/lib/eval-document-matching.ts is a deliberately WIDER captured-case tier (e.g. "Clozapine GP Shared Care"); bulk-merge would loosen golden ground truth, so both files now carry cross-referencing do-not-merge headers instead; (2) snapshot case count pinned to live golden fixture length (regeneration instructions in failure message) — closes the coarse-floor P3; (3) snapshot regenerated via the alias-aware builder with --source-run-id provenance: agitation-im-po-options 0→5 graded positives (EMHS alias working on real data), flowchart-next-step confirmed sole zero-positive case; generatedAt promoted to validator-REQUIRED (closes the hand-edit P3); two stale data pins updated (missing-positives 2→1; broad_summary defaults-equality pin dropped — defaults' provenance was the retired snapshot, fresh recommendations are Phase B input); (4) artifact-grounded punctuation audit: 7 joined-token occurrences in top-5 previews — 3 ciwa-ar (alias-covered, incl. line-broken "ciwa- ar"), 4 ORDINARY-PROSE punctuation ("treatment," / "mood," / "(opioid" / "ptsd.[35]") — matcher word-boundary change proposed as its OWN reviewed follow-up per plan (systemic class, not bundled); (5) lithium-therapy-monitoring was the ONLY ungated case (rr@10 hardcoded 0.00 = measurement noise): expectedDocumentSubstrings ["Lithium"] added from live evidence (deliberately broad across the corpus's multiple legitimate lithium guidelines), snapshot rebuilt in lockstep from the same artifact, measured mrr@10 +~0.028 from de-noising. Deferred with reasons: NEW-query fixture cases (saturated-tie shapes, captured rag_query_misses) need live validation before they may gate — unlocked by Phase D-1 branch-eval dispatch or a dedicated validation dispatch; real ordering headroom for Phase B = flowchart 0.20, alcohol-ciwa 0.25, patient-safety 0.33, opioid 0.33, all text_fast_path. | Targeted vitest 76/76 ×3 (after each stage); npm run test 3019 passed / 1 known container-only pdf-budget artifact; prettier clean; freshness gate ACTIVE and green; no provider calls beyond the user-authorized dispatch (~$1-2, ADDENDUM 4 spend now ~$1-2 of ≤$10) | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: B-PR-1 canary dispatch inputs) | see PR head | eval-canary.yml workflow_dispatch gains rag_ranking_config (staged Phase B weight evals, loud malformed-JSON validation to prevent silent fallback corrupting pair comparisons) + ref (Phase D-1 pre-merge branch evals) — schedule runs unaffected (empty inputs = today's behavior) | Tuner (offline, $0) on the A-PR-2 regenerated snapshot recommends 3 constrained per-class improvements (document_lookup titleSectionRelevance→0.9; table_threshold clinicalEvidence→0.95; comparison hybridRelevance→0.95 with proxy mrr 0.833→1.0), all with recall non-regression + zero high-risk hard-negative failures; medication_dose_risk + broad_summary stay neutral. Staged config JSON banked for the live pair; baseline = canary #53 re-gated (mrr@10 ≈0.8922 after lithium de-noising). Targets per approved plan: mrr@10 ≥0.90, irrelevant@10 ≤0.08, zero case regressions. Budget: user raised cap to ≤$20 (spent ≈$1-2). Security note: ref input runs branch code with eval secrets — dispatch requires repo write access (sole trusted collaborator), documented in PR risk. | check:github-actions PASS; check:ci-scope PASS; prettier clean; no provider calls (workflow change only) | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (Phase B live pair — no code change; recorded for eval-history completeness) | canary runs 29763761133 (#53 baseline) + 29769050798 (#54 tuned) | ADDENDUM 4 Phase B verdict: staged 3-class tuner weights produced ZERO live movement — NOT adopted per the measured-gain rule | Offline tuner recommendations (document_lookup titleSection→0.9, table_threshold clinicalEvidence→0.95, comparison hybridRelevance→0.95; proxy comparison-mrr 0.833→1.0) staged via the B-PR-1 rag_ranking_config input; #54 log proves the override active (validation step echo). Result vs re-gated baseline: mrr@10 0.8921 vs 0.8922, irrelevant@10 0.1083 vs 0.1083, recalls 1.0/1.0 both, 36/36 both, all four headroom cases byte-identical rr (flowchart 0.20, ciwa-threshold 0.25, patient-safety 0.33, opioid 0.33). Learning: the 5-candidate linear proxy saturates; real headroom lives in fast-path saturated-tie structure (Phase C trigger condition mrr < 0.90 formally met; user authorized C). Nothing to roll back (per-run override). Spend ≈$2-4 of user-raised ≤$20 cap. | Both canary runs green (36/36 + answer-quality); override-active proof in #54 job log; no adoption = no code diff | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted; PR: Phase C saturation-tail primaries) | 7572c7f | ADDENDUM 4 Phase C (user-authorized): per-candidate discriminative primaries for saturated fast-path ties — design-agent planned (consumer map + dead-band envelope proof), red-proven, tie-conservation guarded | Mechanism: min(text_rank,1) collapses all tr≥1 candidates to byte-identical imputed primaries; ordering fell to chunk id at release. Fix: saturationTailUnit (pure, monotone, SET-INDEPENDENT — rejected per-query min-max + rank-tier designs for set-dependence/#118 authority risk; rejected full-range log rescale for moving sub-knee values across the 0.62-0.82 gate ladder) scales the excess into DEAD cap bands only: S2 table-fact similarity (0.92, 0.94) with hybrid byte-identical (gates/triggers/selection provably unchanged; similarity = the release tie-break key), S1 lexical-chunk hybrid (0.48, 0.5) behind the truthful-contract signature (sub-0.5 bars hold). Sub-knee byte-identical (fixtures now DERIVE from the helper; 0.45→0.755/0.795 pinned). Discriminating test verified RED on old formulas (2 fail: discriminating + envelope) → green with tail; equal-tr tie-conservation pins the #987 coverage comparator; second-stage-engaged pools documented out of scope (position-derived releaseRankScore sorts first there) — matches live evidence that non-engaged pools (patient-safety, opioid, flowchart) are where id-order decided. S3/S4 = C-PR-2 candidates, evidence-gated on the post-merge canary vs #54 baseline (doc/content recall MUST stay 1.0, zero per-case regressions; success signal = rr lift on the headroom cases). Rollback: single revert (helpers + 2 expression sites + 1 map call; no schema/config/cache surface). | Targeted vitest 121/121 (fast-path 11/11 incl. 6 new, retrieval-selection, rag-routing, rag-answer-fallback, ranking-tuning, second-stage); npm run test 3025 passed / 1 known container pdf-budget artifact; lint + typecheck + prettier clean; red-proof executed and recorded; live validation = post-merge canary dispatch (~$1-2) | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (PR: revert Phase C pending review) | revert of f96217c | User-requested revert of #1004 (Phase C saturation-tail primaries): auto-merge fired before the adversarial rag-retrieval-reviewer pass landed; retrieval code returns to the last reviewed state until that verdict is in | Clean single-commit revert (the documented rollback path — helpers + 2 expression sites + 1 map call; no schema/config/cache surface). Ledger history rows from f96217c retained (docs are append-only record, not behavior). The 19:44Z post-merge canary dispatched on f96217c completes regardless and stands as Phase C's live validation datapoint; re-land decision = reviewer verdict + that pair result together. Offline state of the reverted change remains fully proven (red-proof + 121/121 + envelope tests). | Revert verified by vitest fast-path suite returning to pre-C 5/5 shape expected in CI; ladder on the revert = hosted pr-required | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (Phase C live verdict — no code change; main stays reverted at 0a498e6) | canary run 29773198933 (#55, on f96217c) | ADDENDUM 4 Phase C LIVE-REFUTED: canary on the merged tail code FAILED 3/36 (doc_recall 1.0→0.9167, mrr@10 0.8921→0.8138) — the user-ordered revert (#1005) was correct and STANDS | Failures: patient-safety-plan-include (PtSafetyPlan out of top-5, rr 0.33→0.14), patient-property-visual-table (rr 1.00→0.11) and schizophrenia-overview (rr 1.00→0.14) — two previously rank-1 cases destroyed. Root cause (post-hoc): the S1 lexical-chunk lift spreads hybrid_score, which is the PRIMARY release sort key — inside the dead (0.48,0.5) band it still PREEMPTS every downstream key, so raw ts_rank order overrode the boost/title/subject-aware relevance order that previously decided all-tied-at-0.48 pools. Lexically-loud chunks leapfrogged title-boosted correct documents = the #118 mechanism, reproduced live. The offline S1 test used identical-content candidates (coverage tie) and could not see it. The S2 similarity tail (tie-break-position key) remains reviewer-verified safe in isolation — retrieval reviewer verdict on the full diff: APPROVE-WITH-NITS, P3 only (0.49-lowering proven unreachable via the SQL 0.48 cap; no gate crossings in (0.92,0.94); hardening nits recorded). DISPOSITION: no re-land as-is. Any retry = S2-only + S1 redesigned to a key BELOW relevance in the comparator chain, new design + fresh pair. The staged-rollback discipline (canary pair + instant revert) worked exactly as designed. Spend ≈$4-8 of ≤$20. | Canary #55 read from job log (3 FAIL lines + summary); reviewer verdict from subagent report; main verified reverted (0 saturationTailUnit refs at 0a498e6) | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (PR: RAG memory + safeguards) | see PR head | (recorded with Outcome) | User-directed close-out: durable RAG behaviour memory (docs/rag-behaviour/, 4 files) + AGENTS.md standing protection rules + ENFORCED safeguards — pr-policy blocking `RAG impact:` gate on protected surfaces (self-tested: undeclared/vague blocked, no-change/canary declarations pass) + source-pin contract test on imputation formulas and release comparator key order (red-proven vs a mutated constant). Confirmation canary #56 (29774459706, reverted main 0a498e6): SUCCESS — 36/36 restored, closing the #55-regression→revert→restore arc live. Phase D complete (D-1 ref input #1003, D-2 eval:trend #1006, D-3 policy §3.1 #1006, D-4 latency in trend rows); remaining documented plans: word-boundary matcher (own PR), irrelevant@10 labeling audit, Phase E (separate approval). Spend ≈$5-10 of ≤$20. | pr-policy self-test + workflow guard PASS; contract test 4/4 + red-proof; npm run test 3025 passed / 1 known container pdf-budget artifact; lint+typecheck+prettier clean; docs:check-links 1030 refs PASS; check:github-actions PASS | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (PR: matcher + artifact follow-ups) | ab145f6 | Remaining documented improvements implemented: word-boundary textContainsClinicalTerm + top-10 canary artifact rows | Matcher: boundaries + internal separators widened to any non-alphanumeric run — PROVEN strict superset by artifact replay on canary #53 (1,126 term×alias×result comparisons, 0 lost matches, 7 gained = exactly the previously-documented punctuation-joined occurrences: treatment,/mood,/(opioid/ptsd.[35]/ciwa-ar ×3). More-tolerant measurement cannot fail a passing case → weekly scheduled canary = free live confirmation. Exported + 3 direct unit-test groups (superset preservation, audit classes incl. line-broken 'ciwa- ar' and 'full-blood-count', substring-inside-word rejections). Artifact: topResultSummary 5→10 rows so rr@10/irrelevant@10 metrics' actual inputs are captured — unblocks the offline irrelevant@10 labeling audit next artifact. docs/rag-behaviour updated to implemented state. Phase E remains gated on separate approval. | Targeted vitest 59/59; npm run test 3028 passed / 1 known container pdf-budget artifact; lint+typecheck+prettier clean; audit script run recorded above; no provider calls | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (PR: DB easy wins) | see PR head | User-requested database + process easy-wins pass: read-only Supabase advisor sweep (user-authorized) → canary-liveness probe + advisor-disposition docs; live mutations withheld for per-item confirmation | Advisors (live, read-only): security = 1 INFO (document_title_words RLS-no-policy = the deliberate fail-closed pattern — now comment-documented at the schema block so it is never 'fixed'); performance = ~33 unused-index INFOs + auth connection-strategy note → docs/db-maintenance.md TRIAGE list with retrieval-surface trgm indexes flagged RAG-protected (dropping = full canary protocol), owner-scoped indexes retained for multi-tenant design, operational candidates deferred (negligible benefit at corpus size). Implemented: ci.yml static-pr warn-only eval-canary staleness probe (actions:read, github-script pinned, >8 days → warning; never fails) — needed because #923 (2026-07-19) moved the canary cadence from daily to weekly Sunday 18:00 UTC, where a dropped fire would go unnoticed for a week (the failure-issue step only reacts to runs that happen). CORRECTION (CodeRabbit review on this PR): the initially recorded "2026-07-20 dropped Sunday fire" incident did not occur — 2026-07-20 is a Monday; the Sunday 2026-07-19 slot fired as scheduled run #48 (19:03 UTC, success), and under the weekly cron no 2026-07-20 slot existed. Probe stands as proactive hardening, staleness now measured from updated_at with a finite-timestamp guard. Presented for confirmation (NOT implemented): scheduled telemetry retention (purge:query-logs is owner-scoped + unscheduled; needs owner/window/policy decision), auth percentage connection strategy (dashboard config), any index drops. | check:github-actions PASS; check:ci-scope PASS; check:function-grants 28/28 PASS; docs:check-links 1034 PASS; supabase-schema vitest 66/66; lint+typecheck+prettier clean; Supabase access read-only only | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted from e6cd6cb; PR: telemetry-retention correction) | 01368ff (+0144e69 main merge-in) | User-directed "implement your recommendation for all decisions" close-out: the scheduled-retention recommendation is RETRACTED as founded on a false premise — telemetry retention is ALREADY ACTIVE inside the database via pg_cron; docs corrected, nothing built, no live mutations | Fresh read-only cron.job verification (2026-07-20) matches docs/privacy-impact-assessment.md §6 exactly: jobid 11 purge-expired-rag-queries daily 03:30 (30d), jobid 12 purge-rag-retrieval-logs daily 03:00 (90d), jobid 13 purge-rag-query-misses daily 03:45 (90d), jobid 16 purge-rag-response-cache hourly (bounded 1000); v3 worker jobs present-inactive under backlog auto-toggle (jobid 10); obsolete unbounded cache job absent; audit_logs indefinite by design. db-maintenance.md "open decision" section replaced with the resolved state; purge:query-logs clarified as the MANUAL owner-scoped tool (not the retention mechanism). A GitHub-side weekly deleter would have duplicated pg_cron with window drift (a 90d rag_queries sweep can never out-delete the live 30d job). Remaining decisions stand as documented no-action: auth percentage connection strategy deferred to next instance resize; operational index drops not recommended. | prettier + docs:check-links PASS; Supabase access read-only (single cron.job SELECT, user-authorized read-only envelope); no workflow/schema/config changes | -| 2026-07-21 | claude/x4-sast-gate (PR #1012) | 0d4985e63 | Maturity X4: blocking SAST gate on the untrusted-document parsing surface | Triage-first per workorder: CI-pinned semgrep/semgrep:1.168.0 over worker/**, src/lib/ingestion*.ts, src/lib/extractors, src/app/api/{ingestion,upload} = 0 ERROR findings (24 TS rules/17 files; 55 Python rules/3 files) — gate starts green with no suppressions. Shipped `semgrep-ingestion-gate` job (no continue-on-error; container digest-pinned to the triage-verified 1.168.0 image) with p/python added for the worker OCR stack; repo-wide advisory job untouched. check-github-action-pins.mjs now enforces both policy halves fail-closed (advisory repo-wide / blocking-and-scoped gate / digest-pinned gate container). Residuals: registry-pack mutability accepted for the narrow surface; making the workflow a branch-protection required check is an operator decision outside this PR. | Exact gate command exit 0 in pinned container; check:github-actions (new assertions verified fail-closed); check:ci-scope; yaml-contract vitest 1/1; verify:cheap 3031 tests green. No provider calls (local Docker only). | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted from f33890a; PR: Phase E instrument input) | see PR head + follow-up SHA pin | Phase E kickoff (user-approved with budget): eval-canary gains opt-in `answer_quality_eval` dispatch input running the 30-case eval:answer-quality fixture (5 quality metrics + per-intent targeting) — the instrument was previously never run in CI. Dispatch-only, default-off, informational (exit 0, no --targeting-floor): scheduled runs and existing dispatch shapes byte-identical; gates stay owned by eval:quality. Follows the #1003 input-only precedent. | E-1 recon (all $0/read-only) recorded here: canary answer gate samples only 8 of 44 eval:quality cases (ANSWER_CASE_LIMIT default); eval:quality --provider-mode offline is a real $0 harness (provider deleted, deterministic source-only path) usable as an E-3 regression guard; live 30-day answer telemetry (34 answer-path rows): 25 full answers, misses = evidence_gap ×4 (avg 26s spent before gap), provider_incomplete_max_output_tokens ×2 (avg 82s wasted then discarded), provider_generation_failed ×1, retrieval_gap_or_conflict ×1, source_only_no_api ×1; success latency avg 13.1s / p90 25.2s. Headroom classes for E-3: truncation waste (rag.ts:4265 self-heal insufficient live), late evidence-gap detection, p90 latency, thin CI answer coverage. Next: E-2 baseline dispatch (answer_case_limit=44 + answer_quality_eval=true, est $3-8 of user-authorized ≤$20 Phase E envelope) after this merges. | check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS; prettier clean; no provider calls this PR (workflow change only); RAG impact: none — retrieval steps untouched | -| 2026-07-20 | claude/clinical-kb-pwa-review-asi3wb (restarted from 5b4098d; PR: E-2 baseline record + instrument fix) | see PR head | (recorded with Outcome) | ADDENDUM Phase E-2 BASELINE BANKED (canary dispatch #57, run 29786560936, main 5b4098d, answer_case_limit=44): golden retrieval 36/36 green in-run (no-regression net held); eval:quality full-44 RED on exactly two gates — citation_failure_rate 0.0227 (1/44: neuroleptic-side-effect-escalation — expected doc never retrieved, generation quality-failed, extractive fallback with 1 citation) and route_ceiling_failure_count 2 (clozapine-anc-withhold-threshold: 13.3s pure retrieval vs 12s extractive budget, RPC 9.3s, zero generation; agitation-arousal-typo-dosing: 25054ms vs 25000ms after provider_timeout ate 22.6s pre-recovery). Green gates: grounded_supported 1.0, unsupported_correct 1.0 (all 14 refusals incl. both prompt-injection probes at 2ms), numeric grounding failures 0, governance danger 0, p95 17.4s. Non-blocking signals: expected_source_hit 0.6136 (both admission-discharge cases miss MHSP.AdmissionCommunityPts.pdf to sibling NMHS/RKPG policies — labeling-vs-ranking question, §3.1 class), source governance warning rate 0.8182 (metadata debt, waivable class). SYSTEMIC E-3 TARGET: ~9 of 19 generation attempts discarded (fast output fails quality gate → extractive fallback wins; ~7 cases carry fast_quality_retry_strong→extractive reasons) = ~half of generation latency+spend wasted. Instrument defect found+fixed this PR: targeting step was skipped after the red gate (GitHub failure-skip semantics) → if: gains !cancelled() so baselines observe red gates. Spend: est ~$1-2 actual (19 OpenAI-request cases; cost rates unset in CI so report shows n/a) of ≤$20 Phase E envelope. Next: cheap re-dispatch (default limit 8 + answer_quality_eval=true) to bank the skipped 30-case targeting baseline. | Gates this PR: check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS; prettier clean. Baseline evidence: job log run 29786560936 (5 failing-case diagnostics + Answer Metrics table read in full) | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (restarted from 87815f4; PR: E-3a cost self-reporting) | see PR head + follow-up pin | (recorded with Outcome) | Phase E-3a wave (all $0 diagnostics complete, recorded here) + I8 fix: eval-canary env gains the three RAG_EVAL_*_USD_PER_MILLION rates (gpt-5.6-terra standard tier, verified from the live OpenAI pricing page 2026-07-21; documented as a LOWER BOUND since gpt-5.6-sol strong retries cost 2x and the estimator applies one rate set) so estimated_cost_usd stops reading n/a in CI. E-3a findings: (1) discarded-generation histogram from run #57 — fast_quality_retry_strong→extractive x6, generation_quality_failed x4, provider_timeout x2; gate sub-reasons fragment_like x2, bad_final_answer_quality x1, ungrounded_extractive_fallback x1 → E-3c targets the fast-attempt-fails-extractive-wins shape first. (2) I2 resolved: routeCeilingExceeded (eval-quality.ts:157/171) keys on the RUNTIME's own route_budget_ms + deadline flag, NOT the cross-region-widened eval gates — clozapine case = 13.3s retrieval vs the runtime's 12s extractive budget, geography-amplified; design → E-3b. (3) FIXTURE-CORPUS DRIFT (major): the live corpus contains ZERO MHSP*-named files; the 44-case fixture's expectedFiles are all MHSP.*/CG.MHSP.* and pass only via the eval-document-matching alias tier. All three expected-doc failures triaged: neuroleptic-side-effect-escalation = REAL retrieval-coverage gap (alias exists; Neuroleptic Side Effects (AKG).pdf indexed 11 chunks, 3 contain escalat%, yet answer retrieval returned a single off-point source) → protected-path item awaiting user go-ahead; admission-discharge x2 = top-5 preference for sibling NMHS/RKPG policies over the existing aliased AKG doc → labeling-vs-ranking decision presented to user. No fixture/alias edits made (ground truth requires sign-off). | check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS; prettier clean; Supabase access read-only (documents/document_chunks SELECTs); OpenAI pricing page read via WebFetch | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (restarted from c308fdc; PR: labeling widen) | see PR head | (recorded with Outcome) | USER-APPROVED ground-truth widening (AskUserQuestion 2026-07-21: "Widen to accept siblings") for the two admission-discharge cases: the WIDER alias tier's AdmissionCommunityPts entry gains the two NMHS "Admission to Discharge" titles (Community Mental Health + Mental Health Inpatients). Deliberate exclusions documented in-code: discharge-only docs must not satisfy the admission slot; the MHHITH programme policy is too narrow. STRICT golden tier untouched (bulk-merge prohibition respected). Verified by replaying run #57's actual top-5 lists through expectedFileCoverage: admission-discharge-coverage-paraphrase now passes; admission-discharge-comparison STILL FAILS honestly (its top-5 carries no admission-side doc at all — dup discharge-planning + Falls Prevention) and is retained as a genuine comparison-class retrieval-coverage signal, folded into the same investigation as the neuroleptic case. | typecheck PASS; prettier clean; probe script replay recorded (paraphrase allHit true / comparison allHit false, missing admission slot); no retrieval code touched; protected-file edit (eval-document-matching.ts) per explicit user authorization | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: E-3b budget-aware generation deadlines) | 314d03f | Clinical-governance review of E-3b diff `git diff origin/main...HEAD` (commits 1078264 + 314d03f): answer-side generation timing/gating + telemetry — reserve-aware generation timeout (`generationRequestTimeoutMs`), truncation self-heal budget gate (`deadlineAllowsGenerationRetry`), `route_budget_exhausted_by_retrieval` telemetry, and the cross-region eval carve-out in scripts/eval-quality.ts. | APPROVE-WITH-NITS. No P0/P1/P2. (a) Conservative failure preserved: reserve-aware timeout fires ~2s early producing the SAME error type — an internal SDK timeout is mapped by mapOpenAIError to PublicApiError(openai_timeout) (openai.ts:525-529), NOT a bare DOMException, so the rag.ts:4636 re-throw guard is not tripped and the existing source-backed fallback/extractive recovery is reached; truncation-skip falls through to the terminal throw (rag.ts:4309-4313) into the same catch. No new answer-producing path. (b) Safety gates intact: all recovery answers finalize through finalizeAnswer→finalizeRagAnswerQuality and isSafeExtractiveFallbackCandidate (grounded/confidence/quality/numeric) — none touched. (c) Eval carve-out env-gated: crossRegionRunner && budgetExhaustedByRetrieval && generationMs===0; EVAL_LATENCY_CONTEXT set only in eval-canary.yml:164, prod caller (eval-quality.ts:1095) passes no options → inert in release/local; generationMs===0 requirement means a generation-side failure (generationMs>0) is never suppressed. (d)/(e) Telemetry additions non-PHI (boolean + mechanical retry-reason strings); no privacy/query-privacy/cross-border/verification source files touched; no new provider call. Nits (P3, non-blocking): carve-out also excuses fast/strong routes when generationMs===0 (sound — provably no generation ran); `requestTimeoutMs` now prod-dead (test-only); report label "retrieval-exhausted" (routeDeadlineExceeded && flag) is broader than actual gate suppression (audit label only, gate stays strict). | 88 offline unit tests PASS (tests/rag-route-budget.test.ts, tests/eval-quality.test.ts, tests/rag-offline-answer.test.ts, tests/rag-answer-fallback.test.ts); no provider/Supabase/OpenAI calls; no files mutated except this ledger row | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: E-3b budget-aware generation deadlines) | 314d03f (+eb08ec5 review row) | (recorded with Outcome) | ADDENDUM 5 wave E-3b implemented per the design-agent plan: generation attempts clamped to route budget minus a measured 2s recovery reserve (single call-site, all four attempt kinds); truncation self-heal gated on retry viability (reserve+5s floor) with observable truncation_retry_skipped_budget_reserve marker; additive route_budget_exhausted_by_retrieval runtime flag; eval route-ceiling gains the triple-condition cross-region carve-out (context + runtime flag + zero generation) with retrieval-exhausted audit cells — local/release gates provably strict. Fixes I3 (54ms budget overrun after 22.6s provider timeout), I5 (82s truncation waste class), resolves I2 (clozapine 13.3s retrieval vs 12s runtime budget = geography, now suppressed ONLY in the sanctioned cross-region context with full auditability). Reviewer verdicts: rag-retrieval-reviewer APPROVE-WITH-NITS (2 P3: prod-dead requestTimeoutMs retained for symmetry; report-cell coupling cosmetic; cached-replay invariant PROVEN — budget-exhausted answers never cached, carve-out unreachable via replay; marker isolation proven — SLO counters key on fallback_reason not answer_retry_reasons); clinical-governance-reviewer APPROVE-WITH-NITS (prior row) — internal-timeout→PublicApiError→existing-fallback path verified, all safety gates still applied to recovery answers. ALSO BANKED — E-2 targeting baseline (canary run #58, 29788404357, all-green incl. first execution of the !cancelled()-fixed instrument, ~$1-2): metric_rates relevance 0.6 / readability 1.0 / artifact_leaks 1.0 / intent_coverage 0.9333 / fail_closed 0.9; targeting_rate 0.5909 (13/22); by intent: document_lookup 5/5, red_result_action 3/3, contraindication 2/2, dose 1/5, monitoring_schedule 1/5, pathway_referral 1/2; all 9 misses = missing dose figure/schedule-interval (answer lengths 73-232 chars) → E-3c co-primary target alongside the wasted-generation class. Phase E spend ≈$3-6 of ≤$20. | Red-proofs: reserve pinned 3 independent ways (exact 23000ms grant, deadline flag clear, total under budget); self-heal skip pins exact marker + single provider call; offline flag pinned true/false. Focused: route-budget 9/9, eval-quality 27/27, fallback+offline 52/52, parser/abort regressions 15/15. Full suite 3043 passed / 1 known container pdf artifact. typecheck+lint+prettier clean. No provider calls; live proof = E-4 paired run | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (restarted from e02ba3d; PR: E-3c PR-A instrument) | see PR head | (recorded with Outcome) | ADDENDUM 5 wave E-3c design accepted (Plan agent, full report in session record) and PR-A delivered: eval-answer-quality gains --dump-answers (per-case answer TEXT + sections + targeting verdict JSON for the canary artifact — answers are not retained at rest by privacy design, so miss diagnosis needs eval-time capture), parseArgs/buildAnswerDumpRecord exported behind an import.meta main-guard (eval-quality precedent), canary targeting step wired with the flag. Design highlights for the record: DEFECT 1 root confirmed as fast-attempt-doomed-then-discarded on strong_routine_retrieval procedural shapes — PR-B generalizes the EXISTING validated-extractive short-circuit pattern (LAI + blocked-recovery precedents, hasValidatedExtractiveCandidate) to the measured shape via a new rag-extractive-first.ts module (net ~-110 rag.ts lines against the 5030 budget); DEFECT 2 rank-1 root = extractive lead-slot selection prefers shortest sentence and admits figure-less leads (sort at rag-extractive-answer.ts:917, 1-slot monitoring leads) — PR-C adds intent-figure-aware lead promotion with a claim-support atom-corpus nuke-proofing guard + dose/threshold fallback candidate preference (find(safe && figure) ?? find(safe)); answer-verification CLEARED as direct cause (whole-answer gap or unbold only, never per-figure deletion). H2 (strong-route comparison/complex residual) explicitly deferred as the named E-3d candidate. E-4 metrics set: discarded-generation <20% from ~47%, dose ≥3/5, monitoring ≥3/5, no intent below #58, recalls pinned 1.0, relevance/fail_closed/readability/artifact_leaks ≥ #58. | PR-A gates: new tests/eval-answer-quality.test.ts 4/4; typecheck, check:github-actions, check:ci-scope, eval-canary-workflow test, prettier all clean; no provider calls | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: E-3c PR-B short-circuit) | f7e6cbb + hardening commit | (recorded with Outcome) | E-3c PR-B: pre-generation validated-extractive short-circuit for gate-passed routine procedural "What...process/include/required" queries (marker validated_routine_extractive_first), generalizing the LAI + blocked-recovery precedents via new rag-extractive-first.ts (3 predicates moved byte-verbatim, machine-verified; rag.ts 5029→4908 vs 5030 budget). Kills the run-#57 6x wasted-generation class. REVIEWS (both pre-push): rag-retrieval-reviewer APPROVE-WITH-NITS — move fidelity brace-diff verified byte-identical; confidence-gate skip PROVEN safe (passed-gate is a no-op in applyConfidenceGate; markers pairwise mutually exclusive); comparison false-positives blocked by unchanged classifier precedence; offline/source-only idempotent; zero retrieval/ranking/selection/threshold change; P2 = eval-only assertions (intent_coverage/artifact_leaks/expected-file) unverifiable offline for flip candidates (quality-nocc-document-support, quality-form-required-documentation, quality-discharge-documentation, quality-duress-pathway + rag-set siblings) → pre-merge BRANCH canary recommended and ADOPTED (offline-green + review-approved proven insufficient for this surface, 2026-07-20). clinical-governance-reviewer APPROVE-WITH-NITS — full gate-stack trace: nothing bypassed (same finalizeRagAnswerQuality, same citation scoping, numeric verification not fail-open, ungrounded-finalize defense at rag.ts:3694); P2 = pre-existing bare-cross-reference-with-overlap gap, NOT materially widened (new trigger anti-correlates), hardening recommended → APPLIED this PR: !isBareCrossReferenceAnswer screen in hasValidatedExtractiveCandidate (closes all three short-circuit paths; discriminating test added; disclosed post-review delta, strictly narrows shipping). MERGE GATE: draft until the branch canary pair (baseline #57/#58 vs branch run with answer_case_limit=44 + answer_quality_eval=true, est $3-6 of authorized envelope) is green — zero per-case regressions, recalls 1.0, quality/targeting rates >= baseline. | Red-proof + 3 negative guards; focused 61/61 + fallback/offline/contract suites; full suite 3061 passed / 1 known container artifact (pre-hardening tree; hardening re-verified focused); typecheck+lint+prettier clean; maintainability budget passed (4908/5030) | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (pair verdict — no code change; main stays at 22b6a2e) | canary run 29794759627 (#59, branch head 7310cb3 = merged PR-B content) | (recorded with Outcome) | E-3b + E-3c PR-B LIVE-VALIDATED (pair vs banked #57/#58): route_ceiling_failures 2→0 (E-3b proven: agitation timeout now fits inside budget; clozapine retrieval-exhausted ceiling honestly excused via the triple-condition cross-region carve-out — exactly one "retrieval-exhausted" audit cell in the report); p95 17.4s→15.47s (-11%); golden retrieval SUCCESS 36/36 (stop-ship criterion held); validated_routine_extractive_first fired on 4 of the 6 target cases (patient-safety-plan 3.3s, treatment-team-process 2.6s, ect-procedure 2.2s, illegal-substances 2.2s — all pure extractive, zero generation, was 6-9s each with a discarded attempt), the other 2 (community-home-visits, best-practice-prescribing) stayed on generation+fallback because their extractive candidates legitimately fail validation gates = the designed-conservative outcome; ZERO new failing cases (list 5→2, both known residuals: neuroleptic citation red = Option A territory, admission-comparison expected-doc = non-blocking labeling residual); grounded 1.0 + unsupported_correct 1.0 held; targeting 0.5909→0.619, fail_closed 0.9→0.9333, readability/artifact_leaks/intent_coverage unchanged; relevance 0.6→0.5667 = single-case wobble on n=30, WATCH in E-4, not a gate. Discarded-generation rate materially down (4 conversions; residual = the H2 strong-route slice named as E-3d candidate, per design's 20-33% expectation band). MERGE STANDS (user had armed auto-merge pre-verdict; revert drill not triggered). Spend +~$3-6 → Phase E total ~$6-12 of ≤$20. | Pair evidence: run #59 job log (Blocking failures = citation only; Answer Case Diagnostics markers; metric_rates + targeting blocks); dump artifact populated for PR-C diagnosis | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: E-3c PR-C figure-aware selection) | 043b030 + P2-fix commit | (recorded with Outcome) | E-3c PR-C: dose/monitoring extractive answers now carry the asked-for figure/schedule when the cited chunk verbatim supports it — lead-slot promotion (dose swaps last of 2 slots, monitoring appends 2nd sentence; no-op when a lead already carries a figure) guarded by the claim-support atom corpus (sourceEvidenceText exported, promotionAtomKey byte-identical to claim-support's atomKey), plus the dose/threshold generation-fallback preferring the safe figure-carrying candidate (safety gate unchanged, filter-order-stable). Fallback helpers extracted to rag-extractive-answer (cycle-check verified); rag.ts 4908→4901. Six discriminating tests each verified red-on-prior-code incl. proving the nuke-guard load-bearing by disabling it. REVIEWS (both pre-push on 043b030): rag-retrieval-reviewer APPROVE-WITH-NITS — no-op path byte-identical verified, atom-key identity verified, filter-vs-find proven side-effect-free, 2-sentence append gate-safe, intent double-gated, zero retrieval/ordering change, imputation contract green; P2 = zero-atom monitoring figures ("every 6 weeks" yields no value atom) pass the guard trivially and can be nuked by claim support if sourced only from adjacent context (fails SAFE — evidence gap, never a wrong figure). clinical-governance-reviewer APPROVE-WITH-NITS — all six clinical concerns CLEARED end-to-end (verbatim-support guarantee, citation binding preserved, conservative failure test-proven, unsafe candidates impossible, wrong-drug risk controlled by pre-existing entity/multi-drug guards, no PHI); same zero-atom finding as P3 + one comment-precision nit. P2 FIXED post-review (disclosed): zero-atom figures now require the matched figure substring verbatim in sourceEvidenceText (intentFigureMatchText); proven both directions by 3 new tests (promotes from content, refuses from adjacent-context-only); comment-precision nit folded in. | Focused post-fix: extractive-formatting 32/32 + fallback/eval-cases/offline/contract/extractive-first 98/98 incl. imputation contract; typecheck+prettier+budgets clean; full-suite 3068-passed baseline pre-P2-fix (fix re-verified focused). Live proof = E-4 pair next | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (E-4 pair verdict — no code change; #1039 merged as 9b655fa) | canary run 29800029819 (#60, main 9b655fa = E-3b+PR-B+PR-C) | (recorded with Outcome) | PHASE E-3 WAVE CLOSED — E-4 VERDICT: ADOPT (no revert). 44-case: the ONLY blocking red is the KNOWN persisting neuroleptic citation case (0.0227, identical #57 signature: generation quality-failed → extractive fallback 1 citation — the pre-declared Option A carve-out, retrieval-side, untouched by answer waves); route_ceiling_failures 0 CONFIRMED ON MAIN (E-3b: agitation 23.1s < 25s after 20.3s provider timeout; clozapine 14.5s with exactly one retrieval-exhausted audit cell); grounded 1.0 / unsupported_correct 1.0 / numeric 0 / governance-danger 0 all held; expected_source_hit 0.6136→0.6364 (#1020 widen); generation attempts 19→9 across 44 cases (10+ cases short-circuit via validated_routine_extractive_first at 2-6s, zero generation spend — the absolute wasted-generation seconds collapse; residual 6 discarded attempts are the named E-3d H2 strong/comparison slice). Targeting vs #58 baseline: rate 0.5909→0.6667, dose 1/5→2/4 (sertraline + quetiapine still miss), document_lookup 5/5→6/6, contraindication 2/2, red_result 2/2, pathway 1/2; readability/artifact_leaks 1.0. NOT met: monitoring_schedule flat 1/5 — per-miss lens shows answers of 73-232 chars with NO schedule token available to promote (olanzapine-lai 79ch, metabolic 73ch = single-fact extractive answers; the PR-C promotion is a no-op when no figure-bearing fact is extracted) → root is fact-extraction/retrieval depth on monitoring shapes, queued as the Option-A-wave companion diagnosis (dump artifact 8483731630, 30d retention). WATCH escalated: relevance 0.6 (#58) → 0.5667 (#59) → 0.5333 (#60) — two single-case steps coinciding with more terse extractive answers; fail_closed 0.9 = exactly the #58 main baseline (#59's 0.9333 was the outlier), safety texture flat. Adoption per plan criteria: targeting ≥ baseline ✓, grounded/refusal 1.0 ✓, golden 36/36 ✓ (in-run), ceilings 0 ✓, citation red = carved known case ✓. CodeRabbit post-review follow-up landed pre-merge (02b5c78): interval-regex full-match reorder (atom path proven to intercept the claimed exploit; reorder = drift hardening), clinicalValueAtomKey exported (mirror deleted), guard tests made honestly discriminating + genuine zero-atom "annually" coverage both directions. Instrument note: cost rates live on the targeting step env but eval:quality still reports cost n/a (estimator not consuming them in the 44-case path) — minor tooling residual. Spend +~$2-4 → Phase E total ~$8-16 of ≤$20. | Evidence: run #60 job log read in full (Threshold Status: citation-only; Answer Metrics + 44-row diagnostics; targeting metric_rates + 7-miss list); artifact eval-canary-output 8483731630 sha256 d5c7006e… (download blocked in-session — GitHub App scope; log tee carried the targeting output) | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (Option A: title-supported escalation rescue) | 0abf3c9 (parent 1aebf02) | rag-retrieval-reviewer PROTECTED-surface review of the S3 document-lookup escalation rescue: shouldAttemptDocumentLookupFastPath exported + gains medication_dose_risk branch firing ONLY when analysis.intent==="escalation_risk" && documentTitleTerms.length>0; call site passes queryAnalysis; new tests/rag-document-lookup-escalation-rescue.test.ts. | APPROVE-WITH-NITS. No P0/P1/P2. Binding constraints held: released-search-order.ts + retrieval-selection.ts clamp + rag-candidate-sources.ts imputation all byte-identical to parent (git diff empty); imputation-contract test green; 0.66/0.055 floor (rag.ts:1765) unmodified and still gates rescued pools (S3 block sits after the 2513 fast-path return + re-runs decideTextFastPath at 2631). BLAST RADIUS empirically proven via 110-case offline probe (44 ragEvalCases + 30 answerQualityEvalCases + 36 golden): EXACTLY 1 fires (neuroleptic-side-effect-escalation, intent=escalation_risk tt=3); all 8 named dose cases non-firing (clozapine-monitoring general, paraphrase general, agitation-pharm general, im-po drug_dosing, typo-dosing drug_dosing, missed-dose-table drug_dosing, LAI general/tt0, prompt-injection-forge intent=protocol). intentFromSignals precedence (clinical-search.ts:575-585) returns drug_dosing before escalation_risk so pure-dose structurally cannot fire — confirmed by construction AND empirically. ADVERSARIAL: prompt-injection-forge intent=protocol => cannot fire (empirical); unsupported short-circuit (rag.ts:2371) precedes S3 block. DOWNSTREAM: buildRetrievalIntent for the escalation query yields EMPTY requiredTermSignals => demote/promote arms (retrieval-selection.ts:354-355/529/555) + wrong-medication cap (rag.ts:730-737, gated on clinical_subject) all inert; end-to-end test proves neuroleptic-doc rank#1 with >=2 citations, sibling retained, arrival-order invariant. golden vector-\* probes = broad_summary (already allowlisted) => predicate byte-identical => unaffected. TEST HONESTY: S3 fixture (0.92/0.34/0.94/synthetic_text) faithful to searchDocumentLookupFastPath (rag-candidate-sources.ts:570 caps alias documentScore at 0.34 => sim=min(0.92,0.58+0.34+bonus)=0.92, hybrid=min(0.94,0.94)); differently-relevant fixtures (not identical-content); red-proof structurally airtight (e2e gates its own fixture pool on the predicate). EFFORT: one S3 RPC (same call allowlisted classes issue), rescue-only in the non-forceEmbedding path (floor already rejected => query was headed to embedding anyway; successful rescue short-circuits at 2646 pre-embedding = net-neutral/positive). NITS (P3, non-blocking, no code change pre-canary): (1) redundant analysis?. on the documentTitleTerms clause (&& short-circuit already guarantees analysis defined there); (2) a queryMode forcing medication_dose_risk over an originally-escalation-shaped table_threshold could newly fire S3, but table_threshold already ran S3 so behavior-consistent, not a regression; (3) "forceEmbedding discards S3 merges" is imprecise — line 2649 merges S3 even under forceEmbedding; the accurate unaffected-reason for vector-\* probes is broad_summary allowlisting. TRUST GATE = the mandated live canary pair (correctly deferred by the commit). | Offline only, no provider calls: new test 10/10 + imputation-contract 2/2; protected-surface batch 31/31 (escalation-rescue + imputation-contract + fast-path-ordering + released-search-order + retrieval-selection); 110-case classifier probe (temp test, removed); npm run typecheck exit 0. Not run (provider-gated): eval:retrieval:quality, eval:rag, the live canary pair. | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (parity commit review) | 1aebf02 (fix landed a3b9a54) | (recorded with Outcome) | rag-retrieval-reviewer on the monitoring evidence-gate parity commit: REQUEST-CHANGES (soft) — P2 reproduced: inflected monitoring kind tokens (monitor\w*/annual(?:ly)?/blood tests?/ecgs?/lfts?) steal sole-dose-value sentences from the dose arm; dose-intent answers then reject the monitoring-kind fact ("Quetiapine is monitored at a dose of 200 mg daily" flipped grounded true→false, source-gap — fails CLOSED, never a wrong dose). P3: monitoring figure escape lacked the dose escape's multi-drug bare-row guard. Clean: over-admission bounded (broad vocab lives in gate/filter only, promotion still corpus-guarded, claim-support unchanged); regex cost negligible; mismatched-unit test relaxation legitimate (synopsis is corpus-verbatim; weeks pin enforced by atom identity + adjacent_context exclusion from both gate and claim corpora). | BOTH FINDINGS FIXED in a3b9a54: kind arm classifies legacy tokens byte-identically and new-inflection-only sentences fall through to the dose arm when they carry a clinicalDoseValuePattern value (both repro sentences pinned as dose-intent tests); multi-drug bare-row guard extended to monitoring_schedule with a discriminating test — red-proven both directions. Reviewer checks: formatting 38/38, focused 644/644; targeting eval deferred to the wave's live canary pair. | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (parity commit review) | 1aebf02 (fix landed a3b9a54) | (recorded with Outcome) | clinical-governance-reviewer on the same commit: APPROVE-WITH-NITS. P2 (independently converged with the retrieval reviewer's P3): monitoring figure-escape lacked the dose-path multi-drug cross-entity guard — a bare wrong-drug schedule/level row in a multi-drug chunk could be entity-prefixed for a named-drug monitoring query; downstream gates verify text-vs-source presence, never attribution (worked lithium/valproate LFT path traced through finalize). FIXED in a3b9a54 exactly as its smallest-fix prescribed (guard at the :872-881 site now fires for monitoring_schedule; negative multi-drug test added, red-proven). Clean: unsupported figures impossible (admission-only change; promotion corpus guard + numeric verification + claim support all byte-unchanged); conservative failure intact (figure-bearing-only escape, schedule-free refusal pinned); adjacent-context safety held (sourceEvidenceText excludes adjacent_context; weeks refusal confirmed by probe); no PHI/provider/ranking surface. P3s: RAG impact line (present in the PR body — behaviour-change form, correct since the PR also carries the Option A retrieval change); multi-drug negative test (landed in a3b9a54). | Offline guard-chain trace + targeted vitest probes (named-drug guard, bare-figure admission, conservative gap, adjacent refusal). Provider/release gates deferred per confirmation boundary. | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (Option A rescue review) | 0abf3c9 | (recorded with Outcome) | clinical-governance-reviewer on the S3 escalation rescue: APPROVE-WITH-NITS, no P0/P1. P2 = the mandated live canary pair itself (process gate, declared in the PR body; offline-green + review-approved proven insufficient for this surface 2026-07-20). P3s: multi-drug escalation-query recall edge (titled drug + untitled drug — fast-path return can skip the vector leg; recall limitation, not misattribution, mirrors the pre-existing allowlisted-class tradeoff); reviewer probe files must stay uncommitted (relocated to scratchpad). All six clinical concerns verified safe: wrong-document impossible (alias phrases must appear in the query; per-document alias groups, no cross-drug conflation), conservative availability (S3 purely additive via keyed-union merge; sibling retention test-pinned), live expansion acceptable (title-named correct-entity SOP in every firing shape), fail-closed double layer (adversarial short-circuit precedes the predicate; injection-forge case intent=protocol cannot fire — executed), governance metadata unbypassed (same attachDocumentRankingMetadata + status=indexed + access-scope filters), no PHI/provider/schema surface. | Reviewer checks: escalation-rescue suite 8/8, injection-forge intent derivation executed, static trace of the full S3 chain. Live canary pair = the trust gate, dispatched post-merge. | -| 2026-07-21 | claude/patient-profile-input-bounds-123366 (PR #1045: FV-03 fail-safe input bounds) | 75303e8b8 | Clinical-governance verification of FV-03 (patient-profile numeric fields → medication-safety alert engine). 4-agent adversarial workflow (consumer map + suppression audit + physiological bounds + synthesis). | ADJUST→implemented. Consumer map: evaluatePatientAlerts is the ONLY numeric consumer, no dose arithmetic, sanitize() is the sole guaranteed chokepoint. Suppression audit found naive null-routing UNSAFE via the bare-renal both-null hole (medication-patient-alerts.ts:286) — nulling one out-of-range renal input while the other is present-normal → false all-clear; fixed with &&→\|\| (0 bare-renal contraindication rows in corpus → no-op on current data). Bounds VALIDATED (age 0-130, egfr 0-250, crcl 0-400, qtc 240-800, scr µmol/L 15-3000 unit-aware): never reject a legitimate clinical extreme. Reject-to-null (never clamp). | typecheck, lint, format:check, full unit+jsdom 349 files/3120 passed/0 failed (incl. 38 new/updated FV-03 tests), design-system-contract (baselines unchanged), type-scale, icon-scale, check:production-readiness READY. verify:ui in CI. No provider calls. | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (Option A wave verdict — no code change; #1040 merged as cde6c5c) | canary run 29827012719 (#61, main cde6c5c) vs banked #60 (29800029819) | (recorded with Outcome) | OPTION A WAVE ADOPTED — FIRST FULLY-GREEN 44-CASE CANARY IN PROGRAM HISTORY (Blocking failures: None). (1) Option A payoff EXCEEDED: citation_failure_rate 0.0227→0; the neuroleptic-side-effect-escalation case flipped from wrong-doc→failed-generation→1-citation-fallback to **strong route, successful gpt-5.6-sol generation, passed in 15.4s with no fallback marker** — the rescued S3 retrieval fixed generation itself, not just the citation count; expected_source_hit 0.6364→0.6591. (2) Golden held exactly as the blast-radius analysis promised: 36/36 PASS, content_recall 1.0, mrr@10 0.8921 BYTE-IDENTICAL to the pre-wave baseline (zero ordering movement — no golden case fires the predicate), irrelevant@10 0.1083→0.0917 (slightly better). (3) Parity payoff PARTIAL: monitoring targeting 1/5→2/5 (olanzapine-lai flipped — previously called a retrieval-depth residual; quetiapine-dose also flipped on the dose side); lithium-range (232ch) + metabolic (73ch, byte-identical answer to #60) did NOT flip despite offline-proven fixes — their live chunk sets evidently contain no admissible schedule sentence even under the widened gate → reclassified as retrieval-depth/live-content residuals joining adhd; below the ≥3/5 target but strictly improved, no regression anywhere. Dose 2/5 vs 2/4: same passing count, applicable set grew (new quality-metformin-renal-dosing miss = eval-set churn, not regression). (4) No-worse EXCEEDED: relevance 0.5333→0.6 (the two-step watch-item slide FULLY REVERSED to the #58 level), targeting_rate 0.6667→0.6957, fail_closed 0.9 held, readability/artifact_leaks 1.0, route ceilings 0, grounded 1.0, unsupported_correct 1.0, numeric 0, p95 22.8s, red_result 3/3. Adoption per the measured-gain rule: primary goal achieved, three case flips, relevance recovered, zero regressions. Residual queue: monitoring retrieval-depth trio (lithium-range/metabolic/adhd), E-3d H2 discards, weekly ANSWER_CASE_LIMIT 8→44 raise now unblocked (gate would be green), comparison-class coverage. Wave spend +~$2-4 → Phase E + Option A total ~$12-20 of ≤$20. | Evidence: run #61 job log read (Threshold Status: None; Answer Metrics; neuroleptic diagnostics row; targeting metric_rates + 6-miss list; golden 36 PASS lines + summary). Revert drill NOT triggered. | -| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: I9 weekly coverage raise) | see PR head | (recorded with Outcome) | ADDENDUM 5 post-green item I9 (plan-authorized "after reds fixed"): weekly scheduled canary ANSWER_CASE_LIMIT default 8→44 — the Sunday 18:00 UTC cron now guards the FULL answer-quality case set instead of the first 8 (both #57 blocking reds historically lived OUTSIDE the first 8, leaving the weekly gate blind to them). Unblocked by run #61 proving the citation gate green on the full 44. Cost: est +$1-2/week (user-authorized in the plan). Contract test pin updated in lockstep (eval-canary-workflow.test.ts). Dispatch shapes unchanged (input override still wins); operational-risk diff, plain-revert rollback. | check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS (20/20); eval-canary-workflow contract 4/4; prettier clean; no provider calls | -| 2026-07-21 | claude/database-governance-audit-10b6ed (PR #1051: source-governance audit — safe subset) | cee396730 | Governance-metadata observability + UI display + provenance flow test; no ranking/retrieval/generation surface touched. | IMPLEMENTED + handed off (not a review of prior work). Resolved audit #1 (logger.warn on unrecognized enum values; return value unchanged), #2 (review_due_source added to frontendVisibleWarningCodes → answer-level badge; warning-severity, no refusal impact), #9 (source_metadata retained on safety-finding citations + governance pill in SafetyFindingsListContent), #13 (new tests/provenance-flow.test.ts: DB-normalize→governance→client payload sources+safety citations→render policy). Deferred #4/5/6/8/10 (RAG-protected ranking/selection/LLM-context/cache — need live eval-canary+approval), #11/#5 flag debt (D5/D4), #3 (is_public schema/RLS), #7 (conflict-detection scope), #12 (canary automation). Rebased onto origin/main (was 18 behind; conflict-free — none of the 18 commits touched the 8 files). PR-policy CI green (confirmed no ragRankingPatterns match). | verify:pr-local exit 0 (351 files/3129 tests, production build, client-bundle secret scan, offline RAG fixtures 36/36); typecheck + lint + prettier green. verify:ui NOT run locally: pre-existing globals.css Tailwind/Turbopack dev-compile error (git-clean, unrelated; prod build passed) — CI Production UI job covers it. check:production-readiness deferred (offline env/config validator; PR changes no env/secret/config inputs; secretless worktree). No provider calls. | -| 2026-07-19 | all remote feature branches and registered worktrees against `origin/main` through PR #899 | 8242fa63d5f5b79fc770c9ae4f633e3a784b80e1 | branch/worktree cleanup, useful-work recovery, and protected-main merge closure | Deleted 122 stale or closed remote feature refs with exact SHA leases; four additional merged PR branches were removed by the protected-main PR workflow. Removed 32 obsolete, superseded, or merge-proven worktree registrations. Recovered useful dirty RAG work into PR #901 (deterministic and opt-in semantic reranking) and PR #902 (retrieval phase latency telemetry), preserved follow-up decisions in `docs/process-hardening.md`, and recovered four missing historical review rows. PRs #897, #899, #901, and #902 were merged with green exact-head checks. Correction: the original zero-unresolved-thread statement was inaccurate for PR #901; a subsequent full-repository audit recorded two unresolved semantic-rerank threads, whose code findings are remediated by the 2026-07-19 P2 audit-fix entry below. A detached full-repo-review worktree is deliberately retained because its ownership/activity could not be safely disproved; one unregistered `node_modules` junction residue is also retained because deletion was denied by local safety policy. | Fresh fetch/prune; full GitHub PR/check/thread inventory; `git worktree list --porcelain`; cherry-pick-aware right-only logs; exact leased remote deletes; exact-old-value local ref deletes; clean-worktree, path, and merged-PR proof before every removal. PR #899 local proof: focused Vitest 31/31, changed-file ESLint, `verify:cheap` 317 files / 2,879 tests, and `verify:ui` 239/239; exact-head hosted checks all passed. PR #901 local proof: `verify:cheap` 316 files / 2,870 tests; PR #902 focused Vitest 8/8 plus ESLint and typecheck. No OpenAI, Supabase, live clinical, deployment, or production-data workflow ran; provider-backed semantic canary evaluation remains approval-gated. | -| 2026-07-19 | codex/fix-p2-audit-20260719 | 4034d2e60ebb6616130ff17bf3cb69368f36f8f6 + reviewed working diff | full-repository remediation of audit findings P2-6 through P2-23 across RAG, cancellation, privacy/API validation, PDF extraction, auth durability, offline/CI verification, Factsheets, Therapy Compass, and review records | Remediated all 18 recorded P2 findings with scoped code and regression tests. Semantic rerank signals and safety identifiers now survive answer ranking; source summaries reject embedded instructions; shared search/embedding/answer work respects per-caller cancellation; public search omits internal storage paths and document chunk validation fails closed; JS PDF extraction enforces dimensions and aggregate budgets before copying; transient auth validation outages retain local user data; offline release and CI PDF prerequisites are deterministic; Factsheet print/save state is honest and persistent; Therapy artifact actions are capability-aware and catalogue routes load a compact generated index; the prior PR #901 thread claim is corrected. No remaining high-confidence P2 was found in the reviewed working diff. Remote review-thread disposition was not attempted because GitHub API interaction requires separate confirmation. | `verify:cheap` passed 318 files / 2,891 tests / 1 skipped; final PR-local constituent run passed format, lint, typecheck, and 318 files / 2,892 tests / 1 skipped; production Next.js build generated 1,682 pages and the client-bundle secret scan passed; `verify:ui` passed 239/239 Chromium tests; offline RAG fixtures passed 36 cases / 21 suites and offline RAG eval passed 295 tests; focused changed-surface Vitest and DOM suites passed; CI-scope, Therapy index, offline-release dry-run, and `git diff --check` passed. The PR-local wrapper's first build attempt was correctly blocked by the identity-verified dev server; after stopping only that isolated server, the build and remaining RAG fixture step passed directly. No OpenAI, Supabase, GitHub, hosted-CI, deployment, or production-data workflow ran. | -| 2026-07-19 | origin/main 24-hour merged window (d1937d78e..ef042cacd, ~30 PRs incl. #853/#859/#861/#865/#868/#871–#874/#879/#885–#888/#890–#894/#896) | ef042cacd | integrated post-merge regression audit of the full 24h window (code review + design/performance/defect angles) | No P0/P1 regression found at the merged tip. One confirmed P2: the new settings surface (`use-app-preferences.ts` + `settings-dialog.tsx`) presents jurisdiction, population, answer-style, landing, home-content, compact-citations, and all notification preferences as live controls, but no consumer reads them — only density/motion (html attributes + globals.css) and theme are functional; a clinician selecting "Conservative" answer style reasonably but wrongly believes generation changed. One plausible P2/P3: `AuthProvider.initializeSession` now requires a live `getUser()` round-trip, so a transient network failure on load resolves a valid stored session to signed_out (INITIAL_SESSION replay is also skipped); the deliberate stale/tampered-token defense does not distinguish retryable network errors. One P3: `/medications` legacy redirect drops the query string while `/applications` and `/differentials/presentations` preserve theirs. Cleared after inspection: worker image-placement dedupe (key symmetric on both sides), title-word purge/scope migration (matches its replayed review), RPC-layer-only cancellation consolidation (intentional per PR #861), services route-chunk fix intact with no other heavy client value-imports (type-only imports verified), forced-colors ButtonFace/ButtonText flip, codex-autofix/pr-policy workflow changes conform to AGENTS.md (pin retained, rename-aware routing, workflow_sha checkout), audit-metadata allowlist exhaustive over the closed AuditAction union, answer-stream merged abort signals. Environment note (not a repo defect): the session-start hook skips `npm install` when node_modules exists, so this window's dependency bumps left the container stale and `verify:cheap` failed at typecheck until `npm ci`; the hook should compare a lockfile hash. | `npm ci` then typecheck clean and full Vitest 2828 passed / 1 failed / 2 skipped — the sole failure is the long-baselined container-only `tests/pdf-extraction-budget.test.ts` artifact (hosted-CI-green through #826/#835/#872/#890). First `verify:cheap` run passed every static guard (runtime, actions-pin, ci-scope, ci-triage, pr-policy, sitemap, brand, type-scale, icon-scale, function-grants, owner-scope, lint) before the stale-deps typecheck stop. No OpenAI, Supabase, deployment, or provider-backed check ran. | -| 2026-07-19 | origin/main foreign merges post-#896 landing (541da7b #871 remediation + f4557ca #892 policy parsing; explicit user review request) | ef042ca6a34d33862936e77e4b71068978382c1e | Bug review of recent main changes (diff-review protocol) | One P2 confirmed and fixed in PR #905: #892's widened heading matcher ended a required PR-body section at ANY next heading, so `###` sub-structure inside `## Verification` truncated the section and false-rejected valid bodies (fail-closed; repo template unaffected; repro via direct evaluatePullRequestPolicy probe old-vs-new). No P0/P1. Cleared after verification: `src/lib/client-env.ts` (no env leakage; production demote-to-demo removal deliberate and fail-safe — upload gating still locked via canUsePrivateApis), applications/medications redirect routes (fixed targets, 307+HEAD alias, no open-redirect/header-injection), test infra (no weakened assertions; route-coverage spec added to all projects), and the three biggest #871 UI diffs read inline (ClinicalDashboard upload tablist roving-tabindex + hydration-safe useSyncExternalStore role switch; visual-evidence unavailable-source rows became real non-interactive elements; favourites library demo-gates prototype items with sound menu keyboard nav). Residual (report-only): pr-policy `section()` remains fence-unaware (headings inside fenced code can satisfy required-section checks — pre-existing class, author-controlled attestation surface); dev-only Turbopack persistent-cache staleness served an old globals.css compile across restarts twice this session (fixed by setting `.next` aside). | Reviewer fan-out: general lane completed with concrete probes (pr-policy self-test, node repro on old parser from f4557ca^, adversarial body probes); UI lane agent lost to session limit and re-done inline on the three biggest diffs, leaning on the merged tree's green gates (verify:ui 236-passed run in this session covers #871's own new specs). No provider-backed checks run. | -| 2026-07-19 | claude/clinical-kb-pwa-review-asi3wb (PR #905; commits b2afe66 visuals + 6531178 policy + this ledger follow-up) | 6531178c1a3427dfd58c4bfcf8e29020c5731179 | PWA install/update notice redesign (all breakpoints) + review-follow-up policy fix | Redesigned the five PWA notices (install, update, iOS hint, offline, restored) as glass lux cards: per-type semantic icon tiles, heading-ink titles, corner dismiss buttons, reduced-motion-safe 280ms entrance. Deliberate placement per screen size: phones keep the bottom card above the fixed composer (thumb zone, safe areas); ≥640px floats a 25rem card bottom-right; ≥1280px moves the stack to a top-right toast under the header (same 4.25rem+safe-area offset constant as the mode-menu popover) with the animation direction flipped. Copy, roles, and button names unchanged. Plus the outline-aware pr-policy section parser fix from the same-session review (see the review row above). | Focused vitest pwa-lifecycle.dom 9/9 + pwa-manifest 8/8; `check:pr-policy` self-test green incl. new sub-heading case; `verify:cheap` 2828/2831 (sole fail = known container-only pdf-extraction-budget artifact); `test:e2e:pwa` privacy/offline green (installability fail = known container `in-incognito` artifact); `verify:ui` 236 passed/2 failed (the two long-baselined container artifacts); production build + client-bundle secret scan + bundle budget within tolerance (1293.4 vs 1278.6 KiB baseline); visual evidence at 390/768/1440 light+dark+offline in session scratchpad. Dev caveat recorded: Turbopack persistent `.next` cache served stale globals.css across restarts twice; fixed by setting the cache aside. No provider-backed checks run. | -| 2026-07-19 | `origin/main` through PR #903 plus fixed 48-hour PR snapshot (`#689`–`#902`) | 4034d2e60ebb6616130ff17bf3cb69368f36f8f6 | whole-repository, all-lens regression and PR-activity review | Changes requested. No P0. Confirmed five P1 defects: stale publication approvals are not bound to reviewed document state; invalid supplied credentials can become anonymous uploads; pooled duplicate uploads expose another uploader's metadata; readiness is fail-open for database usability errors; and settings promise clinical tailoring/alerts with no consumers. Eighteen P2 findings cover semantic rerank effectiveness/privacy, summary prompt trust, PDF resource limits, cancellation, auth-state loss, public storage-path exposure, query validation, provider-boundary/CI/test gaps, factsheet/Therapy behavior, Therapy startup cost, and the PR #903 ledger's incorrect claim that PR #901 has zero unresolved threads. GitHub GraphQL still reports two current unresolved P2 threads on merged PR #901. | Exact tree `68a58f6f..4034d2e60`: 217 commits, 566 files, +59,742/-8,242. Fixed snapshot inventory: 213 PRs created and 25 older PRs updated. On `a871dd765`, `verify:cheap` passed (317 files/2,879 tests), offline RAG passed (21 suites/294 tests), and production build plus required Chromium passed (1,682 pages; 239/239). PR #899 exact head `8242fa63d` has the same full local proof and green hosted checks; PR #903 is docs-only and passed `git diff --check`, docs links, and docs script references. Production-readiness CI, design-system, env parity, workflow guard, and offline audit passed. `docs:check-index` remains advisory-red and full-range `git diff --check` reports four intentional Markdown hard breaks plus three SQL whitespace lines. No OpenAI, Supabase, deployment, live clinical, or provider-backed release command ran. | -| 2026-07-19 | local branches and worktrees after PRs #905 and #907 | e377ab1aed44d56c303eede80572c1df82ddcd6e | final local branch/worktree cleanup and useful-history preservation | Reduced 153 local branches to `main` plus the two actively edited task branches. Deleted 150 redundant refs using cherry-pick containment, exact merged-PR heads, synthetic no-op merge trees, exact duplicate-head retention, merged-PR commit association, and explicit supersession review. Removed two clean obsolete worktrees and retained only the active auth/Supabase and P2-remediation worktrees for their owners. Archived the final 66 superseded historical heads in a verified 76,395,256-byte Git bundle before ref deletion. PRs #905 and #907 merged through protected `main`; PR #906 subsequently merged through protected `main` and its remote branch was removed. | Fresh fetch/prune and PR inventory; exact-old-value `git update-ref`; `git merge-tree --write-tree`; GraphQL commit-to-PR association for 178 commits; reverse-patch checks against a detached fresh-main worktree; verified bundle `Database-local-refs-before-final-cleanup-20260719-0525.bundle`; final branch/worktree/remote checks. No OpenAI, Supabase, deployment, live clinical, or production-data workflow ran. | -| 2026-07-19 | claude/audit-recent-changes-kde66i (audit-remediation follow-up to the ef042cacd audit row) | see PR head | remediation of the three 2026-07-19 audit findings | Fixed all three findings from the 24-hour merged-window audit. (1) Inert settings honesty (P2): every preference the app does not yet consume — jurisdiction, population, answer style, landing, both home-content toggles, compact citations, and all three notification toggles — now renders an explicit "Saved for later — not active yet" marker in `settings-dialog.tsx`; the functional appearance/density/motion rows stay unmarked. Wiring the preferences into answer generation was deliberately NOT done here (clinical-behavior change requiring governance review); the new dom test documents the contract for flipping a control live. (2) Auth offline resolution (P2/P3): `resolveInitialAuthState` gains `verificationUnavailable`, set from `isAuthRetryableFetchError(getUser().error)`, so an unreachable auth server keeps the stored session signed in while a reachable server that rejects the token still resolves signed_out; server-side bearer validation is unchanged. (3) `/medications` redirect (P3): now preserves the sanitized q/focus/run search context with the same allowlist as the root legacy-mode redirect. | Focused Vitest 30/30 across `settings-inert-preferences.dom` (new), `private-client-auth` (3 new cases), `audit-navigation-auth-regressions` (query-preservation case), `app-preferences`, and `site-map`. Full `verify:cheap` run recorded on the PR. No OpenAI, Supabase, deployment, or provider-backed check ran. | -| 2026-07-19 | claude/audit-recent-changes-kde66i (preference wiring + session-start hook follow-up to the #906 remediation) | see PR head | wiring the wireable inert preferences live and fixing the stale-node_modules session-start gap | Wired three of the seven remaining inert preferences into real behavior and removed their "Saved for later" markers: (1) Default landing view — `GlobalSearchShellClient` applies a one-shot `router.replace` to the saved landing mode (`search`→documents, `browse`→tools via `landingModeForPreference`) on a bare "/" load only; explicit mode/query/run params always win, and the dashboard's existing URL-sync effect performs the switch. (2) Recent searches on home — `AnswerEmptyState` now gates its recent-query chips on `showRecentOnHome`. (3) Compact citations — the answer source capsule drops its text label to icon+count when `compactCitations` is on, with the "No direct source found" warning explicitly exempted so compact mode can never hide a missing-source signal. Still marked inactive with reasons documented in the test contract: jurisdiction/population/answer-style (wiring them into answer generation is provider-eval-gated per the confirmation boundary), saved-protocols-on-home (no protocols module exists), and the three notification toggles (no delivery infrastructure). Separately, `.claude/hooks/session-start.sh` now stamps the `package-lock.json` sha256 into `node_modules/.session-start-lock-hash` after `npm ci` and reinstalls when the lockfile no longer matches, closing the stale-container gap that faked a typecheck regression during the 24h audit. | New `tests/answer-preferences.dom.test.tsx` (recents gate on/off, compact capsule display incl. the missing-source exemption, landing mapping) and the updated `settings-inert-preferences.dom` contract (3 rows moved inert→functional) pass with `app-preferences` and `private-client-auth`: 26/26 focused. Full typecheck, scoped zero-warning ESLint, and the full Vitest suite recorded on the PR; `bash -n` on the hook. `check:production-readiness` not run: no secrets in this container (documented demo-mode expectation) and no answer-generation, retrieval, or source-governance logic changed — the capsule change is presentational with the missing-source warning locked by test. No OpenAI, Supabase, deployment, or provider-backed check ran. | -| 2026-07-19 | work | 39378863a5d713bfdeb617377a90319ae75810d4 | Repository-wide static review sweep across security/auth/privacy, RAG/clinical answers, database/RLS, UI/accessibility, CI/release automation, dependencies/build/runtime, and local verification hygiene. | Findings recorded in docs/audit/repo-wide-review-sweep-2026-07-19.md. Highest severity: P1 summary-mode non-stream route contract drift; P1 release PR policy coverage gap. | npm run workflow:flightplan -- --write-evidence (pass); npm run format:check (failed existing formatting drift); npm run check:knip (failed missing node_modules); npm run typecheck (failed missing TypeScript binary); npm run lint (failed heavy-run lock because typecheck was active); npm run check:runtime (failed missing tsx/node_modules). Provider-backed checks skipped per confirmation boundary. | -| 2026-07-23 | work | 570a507d099c64fcf9db1d27ddbef5f5e1f142d3 | Quick follow-up review of issues raised in the 2026-07-19 repository-wide review sweep, plus local static checks requested in chat. | Several prior findings remain reproducible in the current tree: non-stream /api/answer still accepts summaryMode without a summary branch; stream summaryMode can still scope documentIds separately from summarized documentId; PR policy still targets only main while CI targets main and release/**; action pin checker still scans only workflow YAML files; local shell remains Node 20 with node_modules absent; Prettier drift still reports 27 files. check:github-actions and check:pr-policy self-tests pass but do not cover the remaining coverage gaps. | node/npm/dependency presence probe; static source inspection of answer request/routes, CI/PR policy triggers, action pin checker, UI/accessibility remnants, .npmrc/package engines; npm run check:github-actions && npm run check:pr-policy && git diff --check (pass); npm run format:check (failed existing formatting drift). No provider-backed checks run. | -| 2026-07-24 | work | bcf4571dd37005622dbef7aae0e2374afafb6b0f | Targeted review of search bar/header/footer chrome behaviour after the edge-to-edge phone dock fix, plus durable repo rules for page-adaptive search chrome. | No new P0/P1 search chrome defect found in the static review. Fixed one regression hazard: a stale ClinicalDashboard comment still instructed a 0.75rem hidden dock pad despite the implementation/tests requiring 0rem. Added durable search chrome behaviour rules in AGENTS.md and docs/search-chrome-behaviour.md, with a static guard tying the remembered rules to the hidden-reserve contract. | dependency shortcut section count; git diff --check; targeted rg for stale 0.75rem hidden-pad source wording (only negative test assertions remain); targeted Vitest command attempted but blocked by missing node_modules/vitest under Node 20.20.2 in this container. No provider-backed checks run. | -| 2026-07-26 | execute-audit-remediation-fixes | 599cc563d7ff9df3aaff605f392a3d57d483ef40 | Deep review and bug hunt across Phase 1 & Phase 2 audit remediation changes, git conflict resolutions, RAG UI governance fail-closed checks, privacy routing mocks, and offline RAG evaluation suites. | Discovered and remediated a fail-closed governance defect in `src/components/clinical-dashboard/evidence-panels.tsx`, where a loose `isSourceBacked !== false` check allowed untrusted answers with missing relevance evaluations to pass through, and where `ClinicalNotesChecklistPanel` and `clinicalNotesDisplayCountForAnswer` were not trust-gating visual evidence before rendering tables or calculating tab counts. Replaced with explicit `=== true` check and wired `trustGatedAnswerForClinicalNotes` into the components and helpers. Also confirmed merge conflict resolutions in `service-catalog-mapper.ts` and `api/answer/route.ts` are spotless, and `privacy-ui.test.ts` static Next router mocks are functioning correctly. | `npx vitest run tests/visual-evidence-tabs.dom.test.tsx` (6/6 passed); `npm run eval:rag:offline` (21/21 suites passed, 308 tests passed). No provider-backed checks run. | -| 2026-07-24 | execute-audit-code-remediation (PR #1162) | 632e84c9436f1f28be9d7aaadbbe942f72618199 | Run PR sweep: CI fix + threads + drift | before: CONFLICTING + PR policy FAIL + unresolved Codex P1 (conflict markers in answer/route.ts). after: conflict markers removed and pushed (80212dd91, 632e84c94); merge origin/main aborted (non-trivial conflicts: privacy/page.tsx, answer-render-policy.ts, source-authority-metadata.ts, upload/route.ts, supabase/drift-manifest.json, settings-dialog, validation/answer-request, plus UI/docs/tests); PR policy still FAIL (Clinical Governance Preflight missing — body edit forbidden this sweep); thread reply/resolve needs parent (comment 3644028277 / thread PRRT_kwDOSh5Fis6Tfkev) — ManagePullRequest/GitHub write MCP unavailable | typecheck:internal pass; vitest clinical-dashboard-merge-artifacts + visual-evidence-tabs pass (9); no provider-backed checks run | -| 2026-07-24 | execute-audit-code-remediation (PR #1162) | e386d074da69be3d7805a9e851f430603d3b0249 | Run PR sweep: CI fix + threads + drift | supersedes prior #1162 row: post-sweep HEAD includes ledger commit; conflict-marker fixes at 80212dd91+632e84c94; merge-from-main skipped (privacy/clinical/source-authority/supabase conflicts); PR policy + thread resolve deferred to human/parent | same gates as prior row; no provider-backed checks run | -| 2026-07-24 | execute-audit-code-remediation (PR #1162) | a398316163f75748fcfd59db3b5c61fd87819877 | Run PR sweep: CI fix + threads + drift | re-attempt merge origin/main ABORTED: non-trivial conflicts remain in privacy (src/app/privacy/page.tsx), clinical/RAG (src/lib/answer-render-policy.ts, src/lib/validation/answer-request.ts), source governance (src/lib/source-authority-metadata.ts), upload (src/app/api/upload/route.ts), supabase/drift-manifest.json, plus UI/docs/tests (search-chrome-behaviour, settings-dialog, navigation-back-button, sheet, patient-safety-plan, form-detail, differentials, bulk route, colour-coding, favourites-auth-gate, private-access-routes, services-catalog). Markers previously cleaned; PR policy body deferred to parent | merge aborted; no provider-backed checks run | -| 2026-07-24 | execute-audit-code-remediation (PR #1162) | 9664fb279adae41cd9846cca1a1a17650a1ac138 | Run PR re-sync sweep | Re-check only: still CONFLICTING vs origin/main. Semantic conflicts include privacy/page.tsx, answer-render-policy.ts, answer-request.ts, source-authority-metadata.ts, upload/bulk routes, settings-dialog, drift-manifest (+ more). Merge aborted; no force-resolve. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | repo-auditor (detached HEAD 037b4808 — explicit full-repo structural audit) | 037b4808100946f96aee28b8ff51939ae2986851 | Full-repo structural audit: broken imports, dead files, consolidation. Scope: src/, scripts/, worker/, tests/. Pure triage — no files mutated. | P0/P1: none. P2: confirmed dead file src/components/clinical-dashboard/prior-answer-turn-surface.tsx (115 lines, zero importers; superseded by answer-thread-turn.tsx per its 'Extracted from ClinicalDashboard.tsx maturity X3' comment; old file exports PriorAnswerTurn type + PriorAnswerTurnSurface component — both replaced). P3: three duplicate package.json script pairs (test:e2e = test:e2e:all; promote:public-documents = promote:public-documents:batch; postinstall = hooks:install — last pair intentional lifecycle). Unused public exports: authorization.ts (administratorRoleClaim/Value internal-only), api-client-error.ts (ApiClientError — only parseApiErrorResponse imported), rag/rag.ts (answerQuestion — superseded by answerQuestionWithScope), supabase/project.ts (isExpectedSupabaseProjectConfig + 2 types). RAG surface note only (do not touch): rag-extractive-first.ts exports hasValidatedRoutineExtractiveRecovery/hasValidatedGenericLaiManagementExtractiveAnswer with no external consumers. Knip false positives: taskkill (win32-gated), railway (opt-in --railway flag). No broken imports (typecheck + lint both exit 0, zero relative ../ imports in src/). | npm run typecheck (exit 0); npm run lint (exit 0); npm run check:knip (exit 0); knip --reporter json full export/file/type analysis; rg import-graph probes across all source trees | -| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138) | 46597a9b | Explicit performance + frontend-ui review of search/interactive surfaces; low-risk client deferral/cache/abort/progressive-reveal pass | Prior document/universal search latency work retained (NDJSON stream, LRU, lazy PDF, content-first detail). New work: differential debounce+abort+LRU; useDeferredValue on catalogue ranking; document results Show more window; RelatedDocumentsPanel memo; universal LRU 100+TTL; deferred registry search extracted from ClinicalDashboard. No RAG/retrieval/ranking edits. No high-confidence P0–P2 defect found in the shipped scope; residual risk = deferred paint lag on large catalogues and progressive reveal missing deep cards until Show more. | Focused Vitest 10/10 (differential + universal + performance boundaries); verify:cheap exit 0 (3262 tests); typecheck clean; verify:ui exit 0 (Chromium). No provider calls. | -| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 follow-up) | 7e2ccee0 | Bugfix pass on search interactive performance diff | Fixed P1 auth-stale differential matches; P2 progressive-reveal hiding selected card; P2 deferred empty/full-catalogue flash on services/forms/formulation/therapy-compass; Prettier CI failure on universal-search test. No remaining high-confidence P0–P2 in scoped diff. Residual: differential debounce skeleton flicker; RelatedDocumentsPanel memo limited by unstable callbacks. | Focused Vitest 11/11; typecheck; format:check; maintainability budgets. No provider calls. | -| 2026-07-24 | implement-audit-recommendations-fix (PR #1141) | 864f738e6 | Run PR sweep: CI fix + threads + drift | Before: PR required green, 2 unresolved duplicate sm:max-h command-surface threads, branch behind main. After: merged origin/main cleanly; removed generic duplicate sm:max-h cap; both threads resolved via GraphQL; reply mutations 403 noted in commit 864f738e. | node scripts/run-vitest.mjs run --reporter=dot tests/search-command-surface.test.ts PASS (8/8); git diff --check PASS; no Supabase/OpenAI/live eval gates run. | -| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | e3dc87000 | Run PR sweep: CI fix + threads + drift | Before: PR required green, 1 unresolved guest-favourites dock thread, branch behind main. After: merged origin/main cleanly; gated favourites hero composer slot on favouritesAccessible; thread resolved via GraphQL; reply mutation 403 noted in commit e3dc8700. | node scripts/run-vitest.mjs run --reporter=dot tests/mobile-composer-reserve.test.ts PASS (9/9); git diff --check PASS; no Supabase/OpenAI/live eval gates run. | -| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 babysit) | e27df0fa | Bugbot + merge babysit | Merged origin/main. Fixed Bugbot medium findings: deferred clear left stale service/registry matches. No unresolved review threads. | Focused Vitest (deferred registry + differential + boundaries); typecheck; maintainability budgets. Watching hosted CI. | -| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 merge-ready) | 36d86fd0 | Babysit closeout | CodeRabbit: stable RelatedDocuments callbacks, identity-based progressive reveal, clear differential LRU on 401, Sheet unmount focus-restore via layout flag, formulation/therapy clear. Bugbot: live therapy filters with deferred query text. CI PR required green; 0 unresolved threads. | Focused Vitest; hosted CI PR required PASS. | -| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 bugbot) | 8d712183 | Bugbot babysit | Fixed medium: formulation builder/home cleared live query still ranked against lagging deferredQuery. Merged main (#1137 search-chrome). No unresolved review threads. | Focused Vitest deferred registry; typecheck pending in CI. | -| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 babysit close) | 2f8509cc | Babysit to merge-ready | Merged main; fixed Bugbot deferred-clear findings; fixed Sheet focus-restore teardown flake that failed Unit coverage; no unresolved review threads. Hosted PR required green. | Hosted CI: Static PR, Unit coverage, Build, Production UI, Advisory UI, PR required PASS. No provider calls. | -| 2026-07-24 | codex/reindex-agent-enrichment-guard (PR #1143) | f82cf9cfa | Run PR sweep: CI fix + threads + drift | Before: PR required green, 1 unresolved reindex/agent-claim serialization thread, branch behind main. After: remote branch already had atomic RPC fix 2bb0470d plus merge-main d2d57d7c; validated pushed head, resolved thread via GraphQL; reply mutation 403 noted in commit f82cf9cf. | node scripts/run-vitest.mjs run --reporter=dot tests/reindex-enrichment-lease.test.ts tests/private-access-routes.test.ts tests/supabase-schema.test.ts tests/drift-detection.test.ts PASS (218/218); npm run check:migration-role PASS; npm run typecheck PASS; npm run check:production-readiness PASS with non-blocking warnings; no live eval gates run. | -| 2026-07-24 | PR #1153 / audit-remediation | 6f87e0ec88ac0cf2d45f0771e00f86039eaedd6a | Audit remediation diff review | 1 P1, 1 P2, 1 P3 finding. P1: Heavy Run Lock can be stolen from long-running commands (test-run-lock.mjs). P2: Tautological assertions in skill catalog tests (database-skills.test.ts). P3: Useless multiline flag in provider failure regex (semantic-rerank.ts). | Local static review of PR diff. | -| 2026-07-24 | PR #1137 / `codex/review-search-bar-behavior-and-establish-rules` | 6ee0484cc97b087c0e4f3661a49493f24a3ea9ba | Targeted review of search bar/header/footer chrome behaviour after the edge-to-edge phone dock fix, plus durable repo rules for page-adaptive search chrome. | No new P0/P1 search chrome defect found in the static review. Fixed one regression hazard: a stale ClinicalDashboard comment still instructed a 0.75rem hidden dock pad despite the implementation/tests requiring 0rem. Added durable search chrome behaviour rules in AGENTS.md and docs/search-chrome-behaviour.md, with a static guard tying the remembered rules to the hidden-reserve contract. | dependency shortcut section count; git diff --check; targeted rg for stale 0.75rem hidden-pad source wording (only negative test assertions remain); targeted Vitest command attempted but blocked by missing node_modules/vitest under Node 20.20.2 in this container. No provider-backed checks run. | -| 2026-07-24 | mobile-ergonomics-fixes (PR #1156) | f57274a4179a7e5678a5906399ed73da4801f3b3 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger auto-merge); pushed f57274a41. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | PR #1140 / `implement-audit-viewport-fixes` | 1f0aed90d | mobile keyboard viewport audit fixes | REJECTED. Found two P1 defects. 1) Broken keyboard detection due to `resizes-content` conflict. 2) Aggressive keyboard dismissal breaks scrolling. | `npm run verify:cheap` running. | -| 2026-07-24 | PR #1140 / `implement-audit-viewport-fixes` | 1528f69cda55f46e6eca910671987219ce9cbbaf | mobile keyboard viewport audit fixes | APPROVED. Fixed the two P1 defects (keyboard detection logic, scrollable container touch bubbling). | `npm run verify:cheap` passed. | -| 2026-07-24 | cursor/frontend-ui-review-docs-e8d9 (PR #1146) | 9c373eb1c2308b298a4c3abe970e5db793854ee4 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger/codebase-index auto-merge); pushed 9c373eb1c. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | cursor/search-performance-review-4ee9 (PR #1134) | 022a1ab95718e5e7636226f0dfebe88d7d7bc4f4 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green (pr-required), 0 unresolved threads. After: merged origin/main cleanly (auto-merge ledger/codebase-index); pushed 022a1ab95. Threads: none. Residual: CI re-running post-merge. | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | cursor/search-performance-review-4ee9 (PR #1134) | 9311d01212fe42bd41ffb22a83bfa51f1a4d19f2 | Run PR re-sync sweep | Re-check: CONFLICTING on use-differential-catalog.ts (+ related). Not cheap; merge aborted, no push. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | cursor/comprehensive-repo-review-ledger-d9a1 (PR #1150) | 60a3c3a83a31e65ec2759540629687e7113e2489 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger auto-merge); pushed 60a3c3a83. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138) | ff4b293d95f922e70ebf5ee9b0c156c41a8bff3b | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. RAG impact: no retrieval behaviour change — PR is client deferred-search/UI only (no src/lib/rag/**). After: merged origin/main; conflict resolved in src/components/ui/sheet.tsx by keeping main restoreTimersRef/unmountingRef focus-restore fix; pushed ff4b293d9. Threads: none. | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | implement-audit-recommendations-fix (PR #1141) | b5f8959af8ec44de63200b1d19c273bae1b7d541 | Run PR sweep: CI fix + threads + drift | Before: behind main by 6. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 6528aec920eb3cda84149980bdd26a20845227ec | Run PR sweep: CI fix + threads + drift | Before: behind main. After: merged origin/main cleanly (no conflicts). Unresolved review threads left as non-P0/P1. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 69af1e5db0d3fff45214b1cc17f37b0fbd5fffb2 | Run PR babysit: CI/threads/drift | Run PR babysit: Codex P2 density assertion fixed + thread resolved. Before: CI mostly green (Production UI in progress), 1 unresolved Codex P2 (3644978153). After: scoped per-button density assertions + count=2; reply+resolve PRRT_kwDOSh5Fis6TiJPl. Not behind main. | npx vitest run tests/mobile-interaction-regressions.test.ts PASS (5/5). No provider-backed checks run. | -| 2026-07-24 | codex/fix-next.js-startup-failure-and-verify-pages (PR #1149) | 8ddddbab2a29a94b3f993cbd114889f72c95f4f1 | Run PR sweep: CI fix + threads + drift | Before: behind main. After: merged origin/main cleanly (no conflicts). Unresolved review threads left as non-P0/P1. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 8964ed6d39603ac40c360e934b582c4e43388c7f | Run PR babysit: CI/threads/drift | Post-fix merge origin/main (clean). Density P2 fixed+resolved earlier; CI re-running. | merge origin/main; vitest mobile-interaction-regressions 5/5 earlier; no provider-backed checks run. | -| 2026-07-24 | audit-remediation (PR #1153) | c4adfe9e27e43edfdfea78f296257330cda39aca | Run PR sweep: CI fix + threads + drift | before: behind/conflicting + PR policy FAIL (missing Clinical Governance Preflight + RAG impact). after: merged origin/main cleanly; PR policy still FAIL — body edit forbidden this sweep (needs human to add Clinical Governance Preflight + RAG impact line); no unresolved review threads worked | merge only; no provider-backed checks run | -| 2026-07-24 | cursor/information-page-structure-2a5d (PR #1148) | 97511d69256b97de4f4e654ff6c12f3742f795f4 | Run PR sweep: CI fix + threads + drift | Before: behind main. After: merged origin/main cleanly (no conflicts). Unresolved review threads left as non-P0/P1. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | codex/audit-remediation-final (PR #1158) | 4bfaf2a77a5c8cc0e6c48ee27a72a2faad203dd3 | Run PR sweep: CI fix + threads + drift | Before: behind main by 64. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | implement-audit-viewport-fixes (PR #1140) | 47ebd3d20184875d80bf192144b614ec58d48e08 | Run PR sweep: CI fix + threads + drift | Before: already contained origin/main. After: ledger-only record. Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | codex/hydration-fixes (PR #1131) | 6c093e927d7b4f7261fb78160d85bdc407853001 | Run PR sweep: CI fix + threads + drift | Before: already contained origin/main. After: ledger-only record. Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | codex/hydration-fixes (PR #1131) | f5451102cc0f157d0f63a3679e532d02ae85918c | Run PR babysit: CI/threads/drift | Run PR babysit: Codex P2 theme cookie validated+fixed + thread resolved. Before: CI mostly green, 1 unresolved Codex P2 (3644928239; prior Codex claim not on this branch). After: cookie fallback in THEME_BOOTSTRAP_SCRIPT + useTheme write/clear + shared keys; reply+resolve PRRT_kwDOSh5Fis6TiAhF. Not behind main. | npx vitest run tests/theme.test.ts PASS (9/9). No provider-backed checks run. | -| 2026-07-24 | codex/hydration-fixes (PR #1131) | 93518331fd1839e773a0cb08d0e8425e502f876d | Run PR babysit: CI/threads/drift | Theme cookie P2 fixed+resolved; merged origin/main resolving layout.tsx (kept cookie html class + THEME_COOKIE_NAME atop localFont/skip-link from main). | merge origin/main; vitest theme 9/9; no provider-backed checks run. | -| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | 2cb98b40e2fd36650e293b27a97996c069971db3 | Run PR sweep: CI fix + threads + drift | Before: behind main by 35. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | e061ce29300cd80df5c8cd95d2ea8ecfeef1e2b0 | Run PR babysit: CI/threads/drift | Run PR babysit: Codex P2 prescribing typed-draft dock path fixed + thread resolved. Before: CI mostly green, 1 unresolved Codex P2 (3644919028). After: showDesktopHomeComposer for prescribing requires !query.trim(); documents half dispositioned as not holding (home slot stays pre-submit); reply+resolve PRRT_kwDOSh5Fis6Th-6B. Not behind main. | npx vitest run tests/mobile-composer-reserve.test.ts PASS (9/9). No provider-backed checks run. | -| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | bbd5aafaadc7334107bfe531eef291615b26ed4b | Run PR babysit: CI/threads/drift | Post-fix merge origin/main (clean). Prescribing dock P2 fixed+resolved earlier; CI re-running. | merge origin/main; vitest mobile-composer-reserve 9/9 earlier; no provider-backed checks run. | -| 2026-07-24 | cursor/repo-auditor-ledger-4132 (PR #1147) | 030723c7716da98a6cf166327e5b7a72c2991b8b | Run PR sweep: CI fix + threads + drift | Before: behind main by 64. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run | -| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 8b2359589fe61c19c78fb02be50316c8f29d7e18 | Run PR sweep: CI fix + threads + drift | before: CONFLICTING; Static PR checks + Unit coverage + PR required FAIL (stale docs/site-map.md). after: merged origin/main cleanly (2e7b034d1); regenerated site-map (8b2359589fe61c19c78fb02be50316c8f29d7e18); no unresolved review threads; CI re-running expected green for static-pr/coverage/pr-required | vitest tests/site-map.test.ts pass (6); sitemap:check pass; no provider-backed checks run | -| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 992ebefa296d6894d5448c1381f1b0b95580e529 | Run PR sweep: CI fix + threads + drift | supersedes prior #1160 row: final HEAD after prettier site-map; merge origin/main clean; stale sitemap fixed; no threads | vitest site-map pass; sitemap:check pass; no provider-backed checks run | -| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 04201a87cc7ad7dd1477d17cd2b96544b7379789 | Run PR sweep: CI fix + threads + drift | re-merge origin/main after CONFLICTING relapse; resolved scripts/run-eval-safe.mjs (kept main taskkill /T /F + validPids); sitemap Prettier format() retained from fe0588b86; no unresolved threads; no conflict markers | merge + conflict resolve only; no provider-backed checks run | -| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | cbb493c2b51dd7120df39cfbcd5f19b73f882d43 | Run PR babysit: CI/threads/drift | Before: not behind at start, then main advanced (8 behind); required checks green except Production UI still pending on prior head; 0 unresolved review threads; no Bugbot findings. After: merged origin/main cleanly (docs/branch-review-ledger.md + src/app/layout.tsx auto-merge). No code fix needed. | merge origin/main only; no provider-backed checks run. | -| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | ad3d38c62a19f5fa2a7e8356021795937c5b0f66 | Run PR babysit: CI/threads/drift | Supersedes prior #1166 row in this push: post-merge+ledger HEAD after syncing origin/main (clean auto-merge). 0 threads; required CI re-running. | merge origin/main; ledger append; no provider-backed checks run. | -| 2026-07-24 | `codex/query-ribbon-search-headings` (PR #1166) | `37cfa5553ccb784ee5e9f47ded1ad69914c053ed` + reviewed correction diff | Correction: universal Query Ribbon implementation and responsive search-heading review | SUPERSEDES the earlier row that named non-existent pre-amend SHA `16ce57d9615708528e7924b41837210a24414722`. This resolvable reviewed tip contains functional commit `0b67944b0d2973d612833422fb4074aeacdb6c8c`, current-main syncs, and the append-only ledger correction. The prior APPROVE outcome and residual-risk statement are unchanged; no P0-P2 finding remains. | Query Ribbon DOM 4/4 after each main sync; exact-head hosted policy, static checks, unit coverage, build, advisory UI, Production UI, safety/config, Semgrep, Gitleaks, GitGuardian, and `PR required` passed before the final docs-only correction. No OpenAI, Supabase, Railway, deployment, production-data, or clinical provider workflow ran. | -| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | 37cfa5553ccb784ee5e9f47ded1ad69914c053ed | Run PR babysit: CI/threads/drift | Final HEAD after merge origin/main + ledger bookkeeping. 0 unresolved threads; no Bugbot actionable findings; required CI re-running on this SHA. | merge origin/main; no provider-backed checks run. | -| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | 9eac2e252bcc5c548aa919b69faeb79b9ff7d2cf | Run PR babysit: CI/threads/drift | Merged origin/main; Codex ledger-SHA P2 dispositioned+resolved (append-only supersede already in 9eac2e252). 0 unresolved threads. | merge origin/main; thread resolve only; no provider-backed checks run. | -| 2026-07-24 | remediate-audit-system-issues (PR #1160) | bdf530fc8c6faaa4491c510396b47872fc39bf25 | Run PR sweep: CI fix + threads + drift | second re-merge after main moved to 2e68888f3 during first push; clean ort merge (ledger + layout.tsx); taskkill /T retained; sitemap prettier retained | merge only; no provider-backed checks run | -| 2026-07-24 | implement-audit-recommendations-fix (PR #1141) | 7cd9d428a9c2c8c1ba22af2c1d6c4725334221c8 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 90cd914f07fc33019c3d80e37edd92f8d73d71f9 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | audit-remediation (PR #1153) | 4163069d49456d665fc7bfaf633e7012befa78b1 | Run PR re-sync sweep | Before: CONFLICTING in scripts/test-run-lock.mjs. After: merged origin/main; kept main lock wait/backoff semantics. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | mobile-ergonomics-fixes (PR #1156) | 5cff1cd0cf69539f18307fdeabbe87fc8a0fb13c | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | cursor/information-page-structure-2a5d (PR #1148) | 230770a53f9bfb53ba69abc81d6e8491e021f8a9 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | codex/audit-remediation-final (PR #1158) | 78fab6be0c43cf5e92361315399d393ee7742f2e | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean (no RAG conflict markers). NOTE: PR still intentionally adds deterministic broad_summary queryClass shortcut in src/lib/rag/rag.ts (+17) — RAG impact behaviour change, not dropped during merge. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | implement-audit-viewport-fixes (PR #1140) | a541b75c0e49f84125fc7e5d114cd9fc32d1a694 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | codex/hydration-fixes (PR #1131) | a29b0d778b542932972aa6035ee115b91e49025a | Run PR re-sync sweep | Before: CONFLICTING + Static PR FAIL (suppressHydrationWarning on skip link). After: merged origin/main; removed illegal suppressHydrationWarning from skip-to-content anchor; theme fix already on PR head b4b5f21b9. CI re-running. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | d0a96caa01b90dffa40e60770b7700f36e8ba43f | Run PR re-sync sweep | Before: CONFLICTING @8adaaf229. After: merged origin/main clean (ort). CI re-running. Threads: not re-triaged. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | cursor/repo-auditor-ledger-4132 (PR #1147) | 2f47746ad7e13e8cb848da71fb2647644388da8f | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | cursor/frontend-ui-review-docs-e8d9 (PR #1146) | 2b17f5fcbe06307e7ff50ad0373789daa8f07a01 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | c94e89f392f578c4b2c749195dd485b74959074c | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. CI re-running. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-24 | cursor/comprehensive-repo-review-ledger-d9a1 (PR #1150) | 345c02cdbaefb13aeb951a14674aedfe4648a50e | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-25 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 05ec10d50bd18b63e23fa2e8ce1bc1d00fb182c5 | Open-PR maintenance: CI fix + threads + drift | Before: Static PR checks/PR required failed and 1 unresolved P1 thread because a byte-identical PR #1149 ledger row was duplicated. After: current main is merged and the duplicate is removed; the ledger guard is green. | branch-review-ledger guard pass (717 records); no provider-backed checks run. | -| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | 84e930925d929ff45fded8f1276e6746e45bc9b3 | Open-PR maintenance: review fixes + drift | Before: 24 commits behind, 2 unresolved Codex threads; keyboard baseline reset existed but `--keyboard-height` had no dock consumer. After: merged current main cleanly; visible reserves include keyboard height and the edge-to-edge phone dock translates above overlay keyboards while hidden reserve stays zero. | focused Vitest pass (15/15); Prettier check pass; `git diff --check` pass; `npm run ensure` verified project at localhost:3264; full `verify:ui` not run because hosted CI will rerun and repository heavyweight work was active elsewhere; no provider-backed checks run. | -| 2026-07-25 | codex/hydration-fixes (PR #1131) | d6b5d23f7e97f99310a249db8e9f006833e697c6 | Open-PR maintenance: CI fix + threads + drift | Before: 24 commits behind, Static PR checks/PR required failed, 2 unresolved Codex threads. After: merged current main cleanly and removed the branch-introduced byte-identical PR #1149 ledger duplicate; hydration suppression fix was already present. | branch-review-ledger guard pass (717 records); targeted lint blocked by active repository heavyweight lock in worktree 6314; `git diff --check` pass; no provider-backed checks run. | -| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | c59ae820db3034ef3cf74ae6d0030a0472a3a264 | Run PR babysit: merge/CI/threads | Before: CONFLICTING + Static PR checks FAIL (duplicate #1149 ledger row) + 2 unresolved Codex P2s. After: merged origin/main; removed duplicate ledger row; Differentials hero slot gated on !(query.trim() && documentMatches.length); threads resolved. | vitest mobile-composer-reserve 9/9; check:branch-review-ledger pass; maintainability 4132/4140. No provider-backed checks run. | -| 2026-07-25 | codex/document-clinical-summary-20260725 (PR #1169) | 6bbce2b97477cb4497624abe2a37c74864e872c8 | Open-PR maintenance: review-thread verification | Before: 2 unresolved Codex threads; branch current with main and required CI running. After: both persisted-profile/placeholder-summary fixes confirmed on the exact head and ready for reply-then-resolve; no further code change required. | `node scripts/run-vitest.mjs run tests/document-clinical-summary.test.ts tests/document-clinical-summary.dom.test.tsx --reporter=dot` pass (5/5); `git diff --check` pass; no provider-backed checks run. | -| 2026-07-25 | cursor/pr-babysit-bugbot-agents-6c52 (PR #1167) | ee44812aae9dad1973d8302eba5bfca5000dffb6 | Open-PR maintenance: review-thread fixes | Before: 8 unresolved Codex/CodeRabbit threads; branch current with main. After: target-head pinning, fresh-main verification, exact `cursor[bot]` identity checks, explicit mutation/provider authorization, direct reply-then-resolve semantics, and no-op ledger bookkeeping are documented. | Prettier check on both agent files pass; `git diff --check` pass; GitHub author probe confirmed `cursor[bot]` account type `Bot`; no provider-backed checks run. | -| 2026-07-24 | cursor/pr-babysit-bugbot-agents-6c52 (PR #1167) | 6ec7a852 | Babysit sweep: CI fix + Codex/CodeRabbit threads | Before: mergeable, PR required green, 8 unresolved agent-guidance threads. After: fixed pr-babysit/pr-bugbot agents (fetch origin/main, no Run PR live-gate auth, pin target head SHA, exact bot identity, ledger-after-every-sweep). Thread reply/resolve 403 on this token — fixes pushed. | typecheck on agent files; no provider-backed checks run | -| 2026-07-24 | codex/fix-merge-conflicts-and-ci-on-open-prs (PR #1170) | 48fcb485 | Babysit sweep: CI fix | Before: Static PR checks FAIL (docs:check-links missing legacy route paths). After: expanded check-docs-links allowlist for pre-(search-app) paths. Production UI re-running. | npm run docs:check-links PASS; no provider-backed checks run | -| 2026-07-24 | codex/document-clinical-summary-20260725 (PR #1169) | ef4ffca5 | Babysit sweep: Codex P2 threads | Before: 2 unresolved Codex P2s (missing pages guard, placeholder summary filter). After: profileItemPages helper + usefulSummaryText placeholder filter. CI re-running. | npm run typecheck PASS; no provider-backed checks run | -| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | fb39314e | Babysit sweep: drift | Before: behind main, PR required cancelled. After: merged origin/main cleanly. CI re-running. | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | cursor/pr1135-native-disabled-followup-6780 (PR #1157) | 05ec10d5 | Babysit sweep: CI fix + drift | Before: CONFLICTING, Static PR + PR required FAIL (duplicate ledger row). After: merged origin/main; removed duplicate PR #1149 ledger row. CI re-running. | check-branch-review-ledger PASS; merge origin/main; no provider-backed checks run | -| 2026-07-24 | codex/hydration-fixes (PR #1131) | 21bdde7d | Babysit sweep: CI fix + drift | Before: CONFLICTING, Static PR + PR required FAIL. After: merged origin/main; removed duplicate PR #1149 ledger row; lint already green on head. CI re-running. | npm run lint PASS; check-branch-review-ledger PASS; no provider-backed checks run | -| 2026-07-24 | cursor/frontend-ui-review-docs-e8d9 (PR #1146) | c29d57c5 | Babysit sweep: drift | Before: CONFLICTING. After: merged origin/main cleanly. 1 unresolved Codex P2 (ledger insert vs append) left for human. | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | execute-audit-code-remediation (PR #1162) | b4675d7b | Babysit sweep: drift skipped | Before: CONFLICTING, PR policy FAIL. Merge origin/main aborted: 20+ conflict files across clinical/auth/API surfaces — needs human resolution. | merge --abort; no provider-backed checks run | -| 2026-07-25 | codex/fix-merge-conflicts-and-ci-on-open-prs (PR #1170) | e979fc892f11a17b1a8f2ef1ab058ef40d629182 | Open-PR maintenance: CI fix + threads + drift | Before: Static PR checks failed because route-group moves made nine valid legacy `src/app/*` documentation references appear missing; 0 unresolved threads; branch already contained current main. After: docs-link resolution checks known App Router route groups and the focused failure is fixed. | `node scripts/check-docs-links.mjs` pass (1162 references); Prettier check pass; `git diff --check` pass; no provider-backed checks run. | -| 2026-07-25 | execute-audit-code-remediation (PR #1162) | 1ea38c730f10c6b2de483c036c47e70f58780d43 | Open-PR maintenance: restore regressed thread fixes | Before: 3 unresolved review threads; the action-pin checker crashed on a duplicate helper, mobile detail-page back actions depended on browser history, and the bulk publisher-code fix was present but unverified. After: action discovery is single-source, detail routes use stable parent destinations, and all three thread fixes are covered or verified. | GitHub Actions pin self-test and `check:github-actions` pass; focused Vitest 20/20 pass; `npm run ensure` verified http://localhost:3264; Prettier and diff checks pass; no provider-backed checks run. | -| 2026-07-25 | implement-audit-recommendations-fix (PR #1141) | 0aaf441775786e5def408a2eda551d9b5d95542d | Open-PR maintenance: review fix + drift | Before: 24 commits behind and 1 unresolved P2 thread; nested result content retained safe-area padding after the shared dock hid. After: current main is merged and child content uses fixed small phone gaps so the shared zero hidden reserve reaches the viewport edge. | focused Vitest pass (7/7); Prettier check pass; `git diff --check` pass; no provider-backed checks run. | -| 2026-07-25 | audit-remediation (PR #1153) | 80ca8bbeaaf43696863ce4a0949ca880d17a5eed | Open-PR maintenance: fail-closed test and skill sync fixes | Before: 3 actionable review threads; Vitest accepted empty selections; skill sync auto-promoted uncatalogued folders and generated aliases as implicitly invocable. After: empty selections fail by default, uncatalogued folders require an explicit catalog decision, and generated alias manifests target the canonical skill with implicit invocation disabled. | `npm run skills:sync` pass; `npm run check:skills` pass (32 canonical, 8 aliases); Prettier and diff checks pass; focused Vitest blocked by the repository heavyweight lock owned by another worktree; no provider-backed checks run. | -| 2026-07-24 | open-PR conflict sweep (13 clean + 5 conflicted) | multi-head | Conflict fix sweep | Merged origin/main into #1124 #1140-1142 #1146-1148 #1153 #1156-1158 #1167 #1169 #1171 #1172 (clean). Resolved conflicts on #1131 #1134 #1153 #1167 #1162. All 18 open PRs mergeable after sweep. | merge-tree classify + per-PR merge; focused private-access tests on #1162; Bugbot on #1162; no provider-backed checks | -| 2026-07-24 | execute-audit-code-remediation (PR #1162) | 3cb7c977 | Conflict fix + Bugbot + local review | Before: CONFLICTING (21 files). After: mergeable. Restored atomic upload RPC; aligned private-access tests (133/133). Bugbot 2 medium left open. | private-access-routes 133/133; no provider-backed checks | -| 2026-07-25 | codex/document-clinical-summary-20260725 (PR #1169) | 605a47b551a03774fab41416bf980dfbc9610221 | Open-PR maintenance: malformed persisted profile guard | Before: one actionable thread showed non-array or malformed persisted summary groups could throw during render. After: every priority group is normalized through an array/item guard and malformed values are ignored while valid items still render. | Focused Vitest 7/7 pass; Prettier and diff checks pass; no provider-backed checks run. | -| 2026-07-25 | cursor/search-performance-review-4ee9 (PR #1134) | 692834a86e612cc8b311dc6895e007f182f5c5b8 | Open-PR maintenance: superseded docs-link thread and clean main sync | Before: branch was behind current main with one outdated docs-link thread; its product tree already matched main. After: merged current main cleanly and verified the route-group-aware docs-link fix now covers legacy route references. RAG impact: no retrieval behaviour change — history sync and docs tooling verification only. | `node scripts/check-docs-links.mjs` pass (1154 references); clean merge-tree; no live RAG canary or provider-backed check run. | -| 2026-07-24 | `cursor/sidebar-six-item-land-cfa0` / PR #1174 content-proof `d97c11e6` | `d97c11e6` | #066 land/proof of six-item sidebar from `cd54e68f` onto main | PROVE — feature content landed; focused 20/20; verify:pr-local PASS; ensure spot-check PASS; verify:ui 267/267. Not merged to main. | vitest favourites+therapy; verify:pr-local; ensure+computerUse spot-check; verify:ui | -| 2026-07-24 | PR #1175 / `cursor/ledger-009-010-032-041-063-519b` | f3986abc39468e077643611ec2d95e374c2e901f | PR review + CI fix (ledger docs #009/#010/#032/#041/#063) | FINDINGS FIXED. P1: Static PR checks failed on Prettier (5 docs). P1: leftover `PR_POLICY_BODY.md` from merged #1134 caused Sync PR policy body to overwrite this docs PR description with search-performance text — deleted the stale template. No P0. Product scope remains docs-only; gated brief follow-ups (wire coming-soon, Current Clinical Work storage, Factsheets second mode, governance ranking) correctly not implemented. Residual: human approving review once CI green. | Local: prettier --check on touched docs; ledger open/resolved/queue integrity for five IDs; no client fetch(`/api/jobs`); `verify:cheap` earlier on tip 95d68c6b. No OpenAI/Supabase writes. | -| 2026-07-24 | PR #1178 / `cursor/local-presence-054-7cf3` | `c1b462a0d2db74b4a9e2f7136c33bf075ab52c7e` | Local presence #054 + Tools canonical #007 + CI remediation | FINDINGS FIXED. P1 Prettier on presence files formatted. P1 Safety audit postcss<=8.5.17 cleared by bumping to ^8.5.18/$postcss (8.5.23). P1 stale PR_POLICY_BODY.md removed so Sync PR policy no longer overwrites this PR with unrelated search-performance text. #007 implemented as `/tools` canonical (PT-11); `/?mode=tools` alias retained. No P0. Residual: hosted #054 secrets remain operator-owned. | Focused Vitest 70/70; verify:cheap 374/3326; npm audit high clean; check:local-presence ok. No hosted secret/provider mutations. | -| 2026-07-24 | PR #1178 / `cursor/local-presence-054-7cf3` | `162f64cfdb475262d5f8534313397c3e895457d4` | Local presence #054 + Tools canonical #007 + CI remediation (supersedes prior tip review) | Same findings fixed on tip including PR_POLICY_BODY.md deletion commit. No new high-confidence defects. Residual: hosted #054. | verify:cheap green on prior tip; tip adds leftover PR_POLICY_BODY removal + this ledger row. | -| 2026-07-24 | cursor/search-correctness-030-075-6273 (PR #1177) | 54ab9f8498751ef7e96815dd2496b8137f29dad7 | Review + follow-up hardening of #030/#075 search-correctness fixes | Findings fixed: (P2) one combo-titled source could still make multi-slot allHit true via substring alias hits — `expectedFileCoverage` now assigns each retrieved top-file to at most one expected slot; (P2) label pagination could loop forever on a stuck full-page API — fail-closed page budget added; (P2 process) stale `PR_POLICY_BODY.md` from search-performance leftover was overwriting this PR body via Sync PR policy body — corrected then deleted. No remaining high-confidence P0–P1 in product scope. Residual: human approving review; Unit coverage CI still finishing on later heads. RAG impact: no retrieval behaviour change — eval matching / label pagination only. | Focused Vitest 32/32; `verify:cheap` green; `verify:pr-local` green (lint/typecheck/3326 unit/build/client-bundle/offline RAG fixtures 36/36). No OpenAI/live Supabase/provider-backed canary. | -| 2026-07-24 | cursor/search-correctness-030-075-6273 (PR #1177) | 96ba6152c1f8e5e0000000000000000000000000 | Supersedes prior #1177 review row with post-sync tip | Same product outcome as prior row; tip includes correct PR_POLICY_BODY sync + template deletion so Sync PR policy body cannot reintroduce the stale search-performance description. | `npm run check:branch-review-ledger` pass; no provider-backed checks run. | -| 2026-07-24 | PR #1175 / `cursor/ledger-009-010-032-041-063-519b` | 15a5d080a375635ca6ef042659fe8837d485c8e3 | PR #1175 follow-up (description restore + template removal) | SUPERSEDES prior #1175 row on `f3986abc`. PR description restored via temporary `PR_POLICY_BODY.md` sync then file deleted again so merge will not reintroduce the #1134 leftover. Scope unchanged: docs-only ledger closeout. | Sync PR policy body SUCCESS with correct ledger summary; prettier clean on prior tip. Awaiting Static/Unit on final tip. No providers. | -| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | 283ad65377ee3e60ceb70f5cd01974caf0a54227 | Open-PR maintenance: keyboard overlay fallback | Before: fixed docks always consumed the measured visual-viewport height, double-lifting them when `interactive-widget=resizes-content` already resized the layout viewport. After: the provider subtracts layout shrink and exposes only residual overlay height to CSS while retaining keyboard-open state. | Focused Vitest 18/18 pass; `npm run ensure` verified http://localhost:3264; Prettier and diff checks pass; no provider-backed checks run. | -| 2026-07-24 | `main` / `01c209576207a3c279972697718d06c819fff000` | `01c209576207a3c279972697718d06c819fff000` | Sitewide design/UX/interactive review (production pages, breakpoints, a11y) | CHANGES REQUESTED / findings. No P0. Two confirmed P2 UX defects: (1) mobile presentation Compare tab is a self-link that drops `ids`/`q` and resets selection (1→default 4) + clears Query chip; (2) document “Browse by tag” / `searchByTag` navigates to `/?mode=documents&q=…` without `run=1`, so results do not run. P3: comparison disabled dropdown/filter controls lack `aria-describedby` placeholder contract; bare `/documents` 404 (no inbound links; `/documents/search` is canonical); phone mode-switcher truncates “Differenti…”. Deduped: `/tools` vs `/?mode=tools` remains #007; coming-soon density/favourites/forms remain #010. Phone docks flush `bottom:0` on sampled result routes; no document horizontal overflow at 390/768/1280 across 30 routes. | `npm run workflow:design-sweep -- --write-evidence`; `npm run ensure` → http://localhost:4461 identity Clinical KB; Playwright HTTP+overflow matrix 30/30 no overflow; live Compare/tag proofs + phone route matrix; `npm run test:e2e:accessibility` 12/12; screenshots under `/opt/cursor/artifacts/screenshots/design-review-2026-07-24/`. No OpenAI/Supabase/GitHub/hosted CI/provider mutations. Added project subagent `.cursor/agents/design-review.md`. | -| 2026-07-24 | PR #1176 / `cursor/pdf-crop-malformed-repro-9b3e` | `5391bf185cd5dffd00a31eb1d282ccfc93277a73` | #076 page-edge table crop geometry fix + fixture regression | APPROVE. No P0-P1. Fix is narrowly scoped to post-find_tables candidate extension from contiguous cell drawings; title/footer inflation avoided by ignoring text during geometry growth; incompleteness warning retained when content continues past the page. Highest residual risk: text-grid tables without cell drawings still will not edge-extend; left/right/top paths are symmetric but fixture-proven only for bottom. Broad PR #1129 retention/padding/storage changes remain out of scope. | Python page-edge + budget 6/6; Vitest pdf-extractor 3 passed / 1 skipped; offline only. | -| 2026-07-24 | PR #1176 / `cursor/pdf-crop-malformed-repro-9b3e` | `28c1e2352a7cabb9c73f52d5084ee69f47895c5e` | #076 page-edge table crop geometry fix (post-merge tip) | APPROVE (supersedes prior #1176 row for 5391bf18 after remote merge). No P0-P1. Same scoped drawing-based edge extension; residual: text-grid tables without drawings, and left/right/top only unit-symmetric. PR #1129 retention/padding still out of scope. | Re-ran Python page-edge + budget 6/6 and Vitest pdf-extractor 3/1 skipped after merge; offline only. | -| 2026-07-25 | codex/hydration-fixes (PR #1131) | 555213fcf4dec82c6dbb445630e59e0d5465149a | Open-PR maintenance: persisted-state hydration coverage | Before: the browser guard covered only an empty-storage dashboard load. After: it seeds theme localStorage plus cookie, sidebar state, and document-viewer PDF mode before navigation, while retaining the default case. | Repository Playwright runner built the isolated production app and passed 3/3 Chromium hydration scenarios; Prettier and diff checks pass; no provider-backed checks run. | -| 2026-07-24 | open-PR conflict sync (20 PRs) | multi-head | Conflict resolution pass | Before: 8 PRs behind/dirty (#1124 #1131 #1162 #1169 #1174-1177). After: merged origin/main into all; all 20 open PRs MERGEABLE behind=0 (BLOCKED only by CI/reviews). | merge origin/main per branch; no provider-backed checks run | -| 2026-07-24 | open-PR conflict sync (22 PRs) | multi-head | Conflict resolution pass | Before: all 22 open PRs behind/dirty vs main (several CONFLICTING/DIRTY). After: merged origin/main into every open head; all pushes OK; merge-tree classified 22/22 clean. | merge origin/main per branch; check:branch-review-ledger on #1172; no provider-backed checks run | -| 2026-07-24 | cursor/pr-queue-hygiene-72ec | pending-push | PR queue hygiene | Add pr-branch-sync workflow + sync:pr-branches helper; bump postcss to clear npm audit high; document anti-churn guidance in AGENTS/process-hardening/pr-babysit/run-pr. | check:github-actions PASS; docs:check-scripts/index PASS; vitest sync-open-pr-branches 3/3; npm audit high clean; no provider-backed checks run | -| 2026-07-25 | cursor/fix-mode-switch-lag-22f6 | 54d45f687e3723f51fa3d7e9940692c9a6e3b52c | Same-class bug hunt: mode-switch/layout thrash after reserve-flip fix | No P0. Branch fix mitigates pathname∧searchMode gate, shell changeMode optimistic setSearchMode, selectSearchMode leaving dashboard, and always-on padding-bottom transitions. Still open P2s: (1) ClinicalDashboard.crossModeSearch still setSearchMode before router.push without isDashboardModeHref guard; (2) dashboard-internal Answer↔/?mode=* still eager setSearchMode → overlay/collapse + heroBreakpoint + portal rebind; (3) standalone shell persists #main-content scrollTop + phoneScrollHide across mode homes; (4) ClinicalDashboard↔GlobalStandaloneSearchShellClient remount + grid-template-columns transition; (5) hero portal null gap while slot/MutationObserver rebinds; (6) ModeHomeRouteLoading phone min-h 13.5rem vs idle-reserve mode homes; (7) /tools vs /?mode=tools dual shell (#007). P3: services/forms contentAlign center→startOnPhone after registry load. | Static source audit of shell/dashboard/header/reserve/CSS/app-modes/skeletons; no browser/provider checks. | -| 2026-07-25 | `cursor/fix-mode-switch-lag-22f6` | `b9484396347defaaa934571604b9d165ae6d8b98` | Same-class mode-switch thrash review + fixes | FIXED prior open P2s from 54d45f68 hunt: crossModeSearch now mirrors selectSearchMode (navigate-only when leaving dashboard); shared shell resets phone scrollTop + scroll-hide on pathname; hero portal keeps default composer until host attaches; ModeHomeRouteLoading uses --shell-header-h; services/forms contentAlign stays startOnPhone while loading. No P0/P1. Residual P2: ClinicalDashboard↔standalone shell remount + sidebar grid-template-columns transition; dashboard-internal Answer↔Documents still eager setSearchMode (overlay/hero flip by design, scroll now reset). Residual P3/#007: /tools vs /?mode=tools dual entry. | Focused Vitest ownership/align/hide-on-scroll/merge-artifacts/overlay 46/46; typecheck; static contracts for portal/scroll reset/crossModeSearch. No verify:ui / provider-backed checks. | -| 2026-07-25 | `cursor/fix-mode-switch-lag-22f6` / PR #1187 | `775d15adef8155aba68e43f0e9354adf60f1ea8d` | Same-class thrash fixes lint closeout | Supersedes b9484396 row for lint follow-up: pathname bottomComposerHidden reset moved to render-time; removed unused desktopHomeComposerFallback. verify:cheap green. Residual unchanged (dashboard↔standalone remount; #007 Tools dual entry). | verify:cheap 3345 passed / 3 skipped; focused ownership tests; eslint clean on touched shell/header. No provider checks. | -| 2026-07-25 | `cursor/fix-mode-switch-lag-22f6` | `0ef62ff521fb9f0457f685e9d2f50a24d640e663` | Frontend-architecture review: loading/navigation performance for modes/pages | No P0. P1: (1) GlobalSearchShell statically imports ClinicalDashboard into shared (search-app) layout client graph — every namespaced mode pays dashboard module weight; (2) ClientHydrationBoundary blanks standalone mode children until hydrate — defeats RSC paint for DSM/factsheets/etc. P2: ClinicalDashboard↔standalone remount + grid-template-columns transition; dashboard URL sync still useEffect+rAF (shell already render-time); ToolsHub ssr:false on /?mode=tools; MutationObserver portal rebind cost on mode-home slot changes; SearchCommandProvider value tied to query in shell. P3/#007: /tools vs /?mode=tools dual entry (PT-11 vs nav). Quick wins: dynamic() ClinicalDashboard; remove/narrow ClientHydrationBoundary; point tools href to /tools. Larger: unify shells / extract shared chrome. | Static architecture review of SharedSearchAppShell/GlobalSearchShell/ClinicalDashboard/MasterSearchHeader/app-modes/search-route-ownership/mode homes/tools routes; prior mode-switch ledger rows at b9484396/775d15ad noted. No browser, verify:ui, bundle measure, or provider-backed checks. | -| 2026-07-24 | codex/apply-phone-layout-to-all-home-pages (PR #1124) | pending | Babysit: ledger dedupe + merge readiness | Before: Static PR failed on exact duplicate ledger rows after main sync. After: removed duplicate rows; squash auto-merge armed. | check:branch-review-ledger PASS; no provider-backed checks run | -| 2026-07-25 | cursor/local-presence-054-7cf3 (PR #1178) | b438cd872286c831c6d9c8db49b017745f98abcc | Run PR sweep: CI fix + threads + drift | Before: GitHub reported DIRTY; Static PR checks found three stale `npm run check:local-presence` references because the implemented script was not registered; Production UI had one focus-restoration failure after 266 passes; 0 unresolved threads. After: merged current `origin/main` cleanly and registered the missing local script, so all 348 docs script references resolve. | `node scripts/check-docs-script-refs.mjs` pass; Prettier and `git diff --check` pass; focused Vitest/UI rerun deferred while another worktree owns the heavyweight lock; environment-reading presence mode and provider-backed checks not run. | -| 2026-07-25 | cursor/sidebar-six-item-land-cfa0 (PR #1174) | c44a5c536e43f300feb1b88892d0b2a8ca2c4feb | Run PR sweep: CI fix + threads + drift | Before: GitHub reported DIRTY and Static PR checks failed formatting `docs/outstanding-issues.md`; 0 unresolved threads. After: merged current `origin/main` cleanly and formatted the failing document. | Prettier check pass; `git diff --check` pass; no provider-backed checks run. | -| 2026-07-25 | cursor/pdf-crop-malformed-repro-9b3e (PR #1176) | c31543f5b5862dbe6911079029f28500a6af2a59 | Run PR sweep: CI fix + threads + drift | Before: GitHub reported DIRTY and Static PR checks failed formatting `docs/outstanding-issues.md` and `tests/pdf-extractor.test.ts`; 0 unresolved threads. After: merged current `origin/main` cleanly and formatted both failing files. | Prettier check pass; `git diff --check` pass; no provider-backed checks run. | -| 2026-07-25 | codex/search-results-filters-20260725 | 88131e7267efd33059766dec80355a9246fbb2bf | Search result filters and document Sources merge-readiness review | APPROVE. No P0-P2 finding after current-main sync. Documents open Sources as an on-screen filtering surface with source-type controls; the shared results ribbon is applied across search pages. Highest residual risk: unusual real-content combinations may alter perceived density, while responsive, forced-colors, focus, and overflow paths are browser-covered. RAG impact: no retrieval behaviour change - UI controls and source browsing only. | `npm run verify:ui` pass 268/268; `npm run verify:cheap` pass (377 files, 3340 passed, 1 skipped); post-sync `npm run verify:pr-local` pass (378 files, 3349 passed, 1 skipped, production build, bundle-secret scan, offline RAG fixtures); `npm run check:production-readiness` pass with OPENAI_SAFETY_IDENTIFIER_SECRET warning; no live/provider-backed app checks run. | -| 2026-07-25 | `codex/therapy-page-polish-ad78b4` | `157559aa0678f02de09c14f66d544b62a5138c4a` | Targeted release review: Therapy naming, centred navigation, and white canvas | APPROVE. No P0-P3 findings. The production Therapy route consistently uses the title Therapy, the shared page background token, and a centred overflow-safe section navigation. The latest `origin/main` merge was clean and retained both upstream responsive/home-composer assertions. Highest residual risk is visual drift at an untested browser engine; exact desktop and phone Chromium measurements were stable. | Focused Vitest 40/40; pre-sync `verify:cheap` 378 files / 3342 passed / 1 skipped; pre-sync `verify:ui` passed; integrated runtime, Prettier, lint, and typecheck passed; integrated Vitest was interrupted by the shared heavyweight-test queue after an independent 378-file / 3342-pass run. Required hosted checks must pass on the published exact head before merge. No clinical/provider workflow ran. | -| 2026-07-25 | codex/search-results-filters-20260725 (PR #1184) | 8f74d8bd40810ede34ad4b155973b598c1be0101 | Superseding merge-readiness review after Sources focus repair | APPROVE. Supersedes the 88131e72 row: the automated P2 showed a transient Daily Actions menu item could disconnect before Sources restored focus. Closing Sources now falls back after unmount to the currently rendered action trigger, and the regression requires the visible Documents trigger to own focus. No P0-P2 finding remains. RAG impact: no retrieval behaviour change - UI focus restoration only. | Post-fix isolated production Chromium 1/1; post-current-main local Chromium 1/1; `npm run verify:cheap` pass (378 files, 3350 passed, 1 skipped); targeted Prettier and ESLint pass; required hosted checks must rerun on the published exact head; no live clinical/provider workflow ran. | -| 2026-07-25 | `codex/mobile-search-filter-dropdowns-dcbb32` | `d9f0051ef8335817e7fa29aeb02ee6324331df39` | Release review: responsive search-result filter dropdowns across production modes | APPROVE with verification note. No P0-P2 finding. Phone result-type rails are replaced by page-specific native selects while desktop controls remain intact; shared controls own a real 44px interactive target and retain forced-colors/focus behavior. Highest residual risk is browser-specific native-select rendering outside Chromium. RAG impact: no retrieval behaviour change - result filtering and sort presentation only. | `npm run verify:cheap` pass twice (378 files, 3351 passed, 1 skipped); focused production Chromium routes and accessibility/stress guards pass; production `npm run build` and client-bundle secret scan pass; offline RAG fixtures 36/36 pass. `verify:pr-local` reached unit tests but local infrastructure tests timed out under heavy worktree contention; two remained timeout-only on focused retry. Required hosted checks must pass on the exact published head before merge. No live clinical/provider workflow ran. | -| 2026-07-25 | `cursor/fix-mode-switch-lag-22f6` / PR #1187 | `876d7ecfa1ae8ec79fc0f0bdf1198c6640ad89b8` | Parallel loading UX + frontend-architecture review + quick-win fixes | No P0. Confirmed live: H1 dashboard↔standalone remount dominant (~0.6–1.2s settle); H4 hero portal rebind; H3 registry post-paint. FIXED quick wins: remove ClientHydrationBoundary blanking; ModeHomeRouteLoading startOnPhone; mode-home loading.tsx alignment/additions; forms server defaultFormSlug + client-boundary test; dynamic ClinicalDashboard; sidebar grid transition mount-gate; forms drop key=query; DocumentViewer key=id; therapy Suspense ModeHomeRouteLoading; redirect /?mode=services\|forms. Residual P2: unify shells (H1), stable hero slot, registry abort+LRU/summary fields, Tools dual entry #007, prescribing full-catalogue cliff. | Parallel explore×3 + debug measurement; focused Vitest loading/forms/ownership/align contracts; typecheck; eslint touched shell. No verify:ui / provider-backed checks. | -| 2026-07-24 | PR #1142 / `fix-physics-animation-audit` | `880f2acf23f35a94c2e5245c2df586012bd6a350` | Spring physics animation audit remediation against main (globals.css + answer-evidence-popups mockup page) | APPROVE. No P0-P2 finding. Centralized spring dynamics tokens registered, generic ease timing replaced with --ease-out-soft and --ease-spring tokens, GPU compositing layer hints added to loading skeletons and bottom reserve pads, dynamic velocity duration supported for gesture keyframes, and reduced-motion presets added. Zero regression risk across design tokens or component interactions. | `node scripts/check-design-system-contract.mjs` passed (534 production files; 0 token violations); `npm run typecheck:internal` passed (0 TypeScript errors); Vitest `tests/route-reachability.test.ts` passed (5/5 tests). No OpenAI, Supabase, Railway, or provider-backed services called. | -| 2026-07-24 | fix-physics-animation-audit (PR #1142) | 67f1d7aee5f9f43295482b2a877c9cb691d774e6 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger auto-merge); pushed 67f1d7aee. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | fix-physics-animation-audit (PR #1142) | ff31b9417eca4e8726bd096fd9559b618b153181 | User-requested merge conflict resolution | Before: CONFLICTING/DIRTY vs main (behind after #1138 search-interactive-perf). After: merged origin/main with ort auto-merge (no conflict markers; ledger + search-perf files landed cleanly); pushed ff31b941. GitHub now MERGEABLE (BLOCKED only on branch-protection/CI). | merge origin/main only; no provider-backed checks run | -| 2026-07-24 | fix-physics-animation-audit (PR #1142) | 11776696ddaa4e3d41f395ea35c22075e3144e7e | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run | -| 2026-07-25 | fix-physics-animation-audit (PR #1142) | bdfe81e15c57d376ff74ddb611a8959b0ae94cc9 | Open-PR maintenance: review fix + drift | Before: 24 commits behind and 1 unresolved P2 thread; CSS changed phone reserve timing without pinning the timing in static/phone-scroll coverage. After: current main is merged; static coverage pins 200/240ms transitions and the motion-enabled phone-scroll sweep asserts the active 200ms reserve transition before geometry checks. | Prettier check pass; `git diff --check` pass; focused Vitest/Playwright not run because repository heavyweight lock is owned by worktree 6314; hosted CI will exercise the updated tests; no provider-backed checks run. | -| 2026-07-25 | fix-physics-animation-audit (PR #1142) | c88c4516476cae3246e1975ce648dff0f3ecb3f7 | Ledger append-only placement fix | CORRECTION: relocated the five PR #1142-unique ledger rows that had been inserted below the table header / among older entries so they append after the final existing record, without rewriting any other rows' content. Restores the append-only contract called out in the Codex P1. | `npm run check:branch-review-ledger`; no provider-backed checks run | -| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | f4ae0a7217e513b893d14400fcfd49f31a3dd090 | PR babysit sweep: sync + threads + CI fix + squash merge | Before: CONFLICTING/DIRTY (stale), threads open, behind main. After: merged origin/main, resolved Codex/CodeRabbit threads, fixed document-viewer keyboard lift + baseline reset + Sources focus restore; Production UI green; squash-merged. | Hosted CI PR required SUCCESS on tip 761765a3f; focused vitest keyboard/overlay contracts. No provider-backed checks run. | -| 2026-07-25 | implement-audit-recommendations-fix (PR #1140) | f4ae0a7217e | Babysit sweep: viewport/keyboard audit ? squash-merged after CI green + thread triage | production-ui + pr-required | merged | -| 2026-07-25 | fix-physics-animation-audit (PR #1142) | e966b5aa972 | Babysit sweep: spring physics / reduced-motion ? auto-merged after main sync | pr-required | merged | -| 2026-07-25 | information-page-shell (PR #1148) | 5b9574af480 | Babysit sweep: unify information-page structure ? squash-merged | pr-required | merged | -| 2026-07-25 | mobile-ergonomics-fixes (PR #1156) | de1a82b4936 | Babysit sweep: mobile touch ergonomics ? squash-merged | pr-required | merged | -| 2026-07-25 | automated-audit-remediations (PR #1158) | aa745922f00 | Babysit sweep: automated audit remediations ? squash-merged | pr-required | merged | -| 2026-07-25 | cursor-indexing-ignore (PR #1171) | 3a4036580df | Babysit sweep: Cursor indexing ignore rules ? squash-merged | pr-required | merged | -| 2026-07-25 | cursor/ledger-009-010-032-041-063-519b (PR #1175) | 87b6b432c19 | Babysit sweep: close ledger #009/#010/#032/#041/#063 ? resolved outstanding-issues merge + prettier, squash-merged | static-pr + pr-required | merged | -| 2026-07-25 | canary-comparison-preflight (PR #1180) | 43f261cf229 | Babysit sweep: canary comparison preflight docs ? squash-merged | pr-required | merged | -| 2026-07-25 | sitewide-design-review-ledger (PR #1181) | 8284fcd4420 | Babysit sweep: design-review ledger ? auto-merged after sync | pr-required | merged | -| 2026-07-25 | codex/complete-all-pending-tasks (PR #1191) | e2488dbb108 | Babysit sweep: scoped-label pagination + order assertion for CodeRabbit thread ? squash-merged | unit + pr-required | merged | -| 2026-07-25 | implement-audit-recommendations-fix (PR #1140) | f4ae0a7217e | Babysit sweep: viewport/keyboard audit — squash-merged after CI green + thread triage | production-ui + pr-required | merged | -| 2026-07-25 | fix-physics-animation-audit (PR #1142) | e966b5aa972 | Babysit sweep: spring physics / reduced-motion — auto-merged after main sync | pr-required | merged | -| 2026-07-25 | information-page-shell (PR #1148) | 5b9574af480 | Babysit sweep: unify information-page structure — squash-merged | pr-required | merged | -| 2026-07-25 | mobile-ergonomics-fixes (PR #1156) | de1a82b4936 | Babysit sweep: mobile touch ergonomics — squash-merged | pr-required | merged | -| 2026-07-25 | automated-audit-remediations (PR #1158) | aa745922f00 | Babysit sweep: automated audit remediations — squash-merged | pr-required | merged | -| 2026-07-25 | cursor-indexing-ignore (PR #1171) | 3a4036580df | Babysit sweep: Cursor indexing ignore rules — squash-merged | pr-required | merged | -| 2026-07-25 | cursor/ledger-009-010-032-041-063-519b (PR #1175) | 87b6b432c19 | Babysit sweep: close ledger #009/#010/#032/#041/#063 — resolved outstanding-issues merge + prettier, squash-merged | static-pr + pr-required | merged | -| 2026-07-25 | canary-comparison-preflight (PR #1180) | 43f261cf229 | Babysit sweep: canary comparison preflight docs — squash-merged | pr-required | merged | -| 2026-07-25 | sitewide-design-review-ledger (PR #1181) | 8284fcd4420 | Babysit sweep: design-review ledger — auto-merged after sync | pr-required | merged | -| 2026-07-25 | codex/complete-all-pending-tasks (PR #1191) | e2488dbb108 | Babysit sweep: scoped-label pagination + order assertion for CodeRabbit thread — squash-merged | unit + pr-required | merged | -| 2026-07-25 | open-pr-babysit-sweep-20260725 | multipass | Babysit continuation: approved action_required workflows; Sources autofocus fix on #1141; ledger dedupe #1157; outstanding-issues merges #1175/#1177; skipped non-trivial conflict clusters #1162/#1185-1190/#1187 draft | gh checks + merge-tree | in-progress | -| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | f4ae0a7217e513b893d14400fcfd49f31a3dd090 | PR babysit sweep: sync + threads + CI fix + squash merge | Before: CONFLICTING/DIRTY (stale), threads open, behind main. After: merged origin/main, resolved Codex/CodeRabbit threads, fixed document-viewer keyboard lift + baseline reset + Sources focus restore; Production UI green; squash-merged. prlanded content-diff empty. | Hosted CI PR required SUCCESS on tip 761765a3f; focused vitest keyboard/overlay contracts. No provider-backed checks run. | -| 2026-07-25 | cursor/canary-artifact-comparison-8e05 (PR #1180) | 618d8640fa528de4a94b0d3e2599bcfe0df3f6f5 | PR babysit: retrigger required CI | Empty sync after main advanced; no product change. | No provider-backed checks. | -| 2026-07-25 | cursor/codebase-indexing-optimize-7a2b (PR #1171) | 37a534fb4b89ba504bec00f4c91932a251f0739a | PR babysit: retrigger required CI | Empty sync after main advanced; no product change. | No provider-backed checks. | -| 2026-07-25 | implement-audit-viewport-fixes (PR #1140) | f4ae0a7217e513b893d14400fcfd49f31a3dd090 | PR babysit sweep + squash merge | Merged after sync/threads/CI fixes (keyboard lift, baseline reset, Sources focus). prlanded content empty. | Hosted PR required SUCCESS. No provider-backed checks. | -| 2026-07-25 | cursor/codebase-indexing-optimize-7a2b (PR #1171) | 3a4036580df1f7701b600df26d368b66bcfc3251 | PR babysit sweep + squash merge | Retriggered CI via ledger note; squash-merged when PR required green. | Hosted PR required SUCCESS. No provider-backed checks. | -| 2026-07-25 | cursor/canary-artifact-comparison-8e05 (PR #1180) | 43f261cf229cbc0baf7e289bdbc3e5a534161543 | PR babysit sweep + squash merge | Synced main after #1171; squash-merged. | Hosted PR required SUCCESS. No provider-backed checks. | -| 2026-07-25 | codex/audit-remediation-final (PR #1158) | aa745922f00 | PR babysit sweep + squash merge | Synced main; auto-merge completed. | Hosted CI green. No provider-backed checks. | -| 2026-07-25 | cursor/sidebar-six-item-land-cfa0 (PR #1174) | pending-merge | CORRECTION: clarify sync vs product merge for the d97c11e6 content-proof row | The earlier "from `cd54e68f` onto main" / "merged onto current main" wording meant the feature branch was synchronized with `origin/main` (main merged into the feature branch); the six-item sidebar product change is not yet on `main` until this PR merges. Date 2026-07-25 on the c44a5c53 sweep row is the actual execution date (not future-dated). | CodeRabbit threads on ledger/OI wording; no provider-backed checks run. | -| 2026-07-25 | cursor/search-correctness-030-075-6273 (PR #1177) | 4138c0dd9ac0096787af47f7d86a9adc390eeb44 | PR babysit sweep + squash merge | Before: CONFLICTING on outstanding-issues + search-scope vs #1191; PR policy missing RAG/clinical checklist. After: kept loadScopeLabels batching, closed #030/#075, fixed PR body; squash-merged. | pr-required + PR policy + Gitleaks; focused search-scope/eval tests; no provider-backed checks. | -| 2026-07-25 | open-pr-babysit-continuation-20260725 | multipass | (recorded with Outcome) | Babysit continuation after 14 merges: #1177 landed; #1174/#1178/#1153 in progress; drafts #1187/#1192 skipped; large cluster #1162/#1185/#1186/#1188/#1190 content-conflicted (skip). | merge-tree inventory; no provider-backed checks. | -| 2026-07-25 | audit-remediation (PR #1153) | 5a731df5c25fed9b07fd2321a0ad4b6519471f4b | PR babysit: CodeRabbit thread fixes + merge | Before: MERGEABLE/BLOCKED on required_review_thread_resolution + pending CI; 6 CodeRabbit threads. After: fixed sync-skills pad/YAML escape, PDF temp cleanup, squash-aware rollback wording; dispositioned ledger mid-table + retained false-positive; approved CI; merged to main `191b17d2f` (merge commit); branch deleted; tip is ancestor of main. | Hosted CI green on tip; no provider-backed checks. | -| 2026-07-25 | cursor/local-presence-054-7cf3 (PR #1178) | 9135891bfd194394549cb480a7ec86de12b23ee7 | PR babysit: local-presence + /tools + CI/UI fixes + squash merge | Before: flaky Safety audit on package.json scripts, Production UI Sources autofocus flake, CodeRabbit short-env duplicate thread. After: ci-change-scope lockfile-only; strip stale short env keys; sheet open-focus retries + skip focus=1 reclaim under modal; squash-merged `d08ec2e8e`; branch deleted; key-file content-diff empty. | Hosted PR required SUCCESS (Production UI green on tip); focused local-presence vitest; no provider-backed checks. | -| 2026-07-25 | PR #1185 / `execute-typography-audit-fixes` | `dd641579f4cf54f82de89ef268ac8aa6acb439b5` | Fresh Cursor review + Bugbot + prlanded | DO NOT MERGE / CLOSE+REDO. Confirms prior ledger: intentional tip commit is safe typography-only (5 files), but branch tree still carries committed conflict markers from `faa50e6e3` (answer/upload routes, docs, tests) so the PR cannot build. Codex P1 markers + upload publisher spoof + P2 mobile back regression are real on that dirty tree. `prlanded`: not merged (`state=OPEN`, `mergedAt=null`). Replacement: cherry-pick tip onto current main as `cursor/typography-audit-fixes-1c1e`. | Bugbot on PR head; `git show` of tip; marker scan; `git merge-tree`/diff vs main. No provider calls. Hosted PR policy FAIL. | -| 2026-07-25 | `cursor/typography-audit-fixes-1c1e` (supersedes #1185) | pending-push | Clean cherry-pick of typography audit tip onto `origin/main` | APPROVE-ready local. Scope is only font-stack + mockup heading/truncation/tabular-nums. No conflict markers. Highest residual risk: visual-only mockup/CSS change; unrelated Vitest flakes seen locally (pdf-extractor SIGKILL, reconciliation-preflight timeout) not tied to this delta. | `npm run verify:cheap`: lint+typecheck+static gates pass; Vitest 3379 pass / 2 env flakes. No provider/UI matrix. | -| 2026-07-25 | `cursor/typography-audit-fixes-1c1e` (supersedes #1185) | `c78271bae02ddf82792bb0625f479483240e76b8` | Clean cherry-pick published | APPROVE-ready. Published replacement for contaminated #1185; 5-file typography delta + format + ledger. | Local `verify:cheap` as above; pushed to origin. | -| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `6bc05690a966e3e8aebdc8ea0460b60899201c52` | Explicit merge-readiness review (typography supersede of #1185) | NOT READY. Clean 5-file product delta vs main (font-stack + mockups). Confirmed P2: answer-evidence sheet/modal titles promoted h3->h2 while nested under Section h2 (hierarchy regression). P2 process: PR body describes unrelated audit-remediation work. Process blockers: draft; tip CI/SAST/Secret Scan `action_required` (green only on older `3cc6fa0cd`). No P0/P1 product defects. Font-stack/min-w-0/tabular-nums OK. | `origin/main...HEAD` 6 files; merge-tree clean; marker scan clean; no provider/UI matrix. | -| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | pending-push | Follow-up perfection pass | FIXED: reverted nested mockup titles to `h3` under Section `h2`; restored correct `PR_POLICY_BODY.md` after stale overwrite; remaining product delta is font-stack + recent-search `min-w-0` + bedside `leading-tight` drop + clinical-console `tabular-nums` + ledger. | Heading hierarchy re-check; Prettier check on touched files. | -| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `e7d93cddd75a71a4d7c4deff48e0038c98f6706f` | Follow-up perfection published | APPROVE once tip CI green. Heading hierarchy fixed; correct policy body template on branch; product scope reduced to 4 source files + ledger/template. | Prettier check; pushed tip. | -| 2026-07-25 | cursor/fix-mobile-composer-edge-scroll-5b1d (PR #1192) | 3b5ef43f1825dd8cf11dd767069569ba1c701c45 | Bugbot branch review: mobile Answer edge dock, synchronized hide/reveal, focus safety, reserve-collapse and fractional-clamp safeguards | No bugs found. Highest residual risk is physical iOS Safari toolbar/visual-viewport behavior beyond Chromium emulation. | `npm run verify:cheap` (3,357 passed); `npm run verify:ui` (272 passed); focused clamp/reserve Vitest (28 passed); focused production Chromium regression passed; clean headed-phone video proof; no provider-backed checks run. | -| 2026-07-25 | cursor/fix-mobile-composer-edge-scroll-5b1d (PR #1192) | 69dc0dbfb46586f54f5934199d4a65b9f6a0aba8 | User-requested Bugbot review of current PR head after geometry-aware clamp handling and CI formatting fix | No bugs found. | Bugbot branch review; prior focused unit/Chromium/manual proofs retained; no provider-backed checks run. | -| 2026-07-25 | cursor/fix-mobile-composer-edge-scroll-5b1d (PR #1192) | c08ed37c5e8c7b62cf7d547089afff7a63c9122c | Live local document-detail scroll/ownership review at 390x844, 768x1024, and 1440x900 | FINDINGS: P2 canonical phone detail renders shared mobile header plus DocumentViewer header; P2 expanded desktop sticky rail scrolls its section navigation off-screen; P3 390px in-flow section nav fully hides Images with no overflow cue. Composer focus pinning, actions sheet, endpoint clearance, safe-area gap, and single composer/content reserve ownership otherwise held. | `npm run workflow:design-sweep -- --write-evidence`; `npm run ensure` + `/api/local-project-id` identity; live local Chromium natural down/up, anchors, focus, sheet, endpoint and geometry probes; focused document-viewer Playwright 3/3; reduced-motion + forced-colors visibility at 390/1440; no OpenAI/Supabase/GitHub/hosted CI/provider calls. | -| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `5b5ecf4057b54f1b689935f8cb876a2ed1cbdb3a` | Bugbot triage after 0c2b60a REQUEST CHANGES: verify prior P1/P2 on 8b812b116 and fix remaining defects | P1 confirmed: `composerChromeFocused` still latched after phone dock teardown (`shouldAutoFocusComposer` only covers answer autofocus). Fixed by clearing focus pins when dock inactive / hide-on-scroll disabled. P2 confirmed: reserve-only hide gate still ignored offset (118/191 material-clamp frames); fixed with `offset <= postCollapseMaxOffset + tol`. Compact answer hide retained; material clamps ? 0. Prior autofocus/retainTarget mitigations kept. | Node stress before/after; vitest use-hide-on-scroll + mobile-composer-reserve 28/28; no provider/UI browser matrix. | -| 2026-07-25 | cursor/search-correctness-030-075-6273 (PR #1177) | 96ba61520aeea59647dcaec6671ccb82618553ef | CORRECTION: real SHA for the 2026-07-24 post-sync #1177 row | That row recorded `96ba6152c1f8e5e0000000000000000000000000`, a zero-padded placeholder that resolves to no Git object. The real commit is `96ba61520aeea59647dcaec6671ccb82618553ef` ("ci: remove PR_POLICY_BODY.md after sync"); the reviewed outcome itself is unchanged. | `git rev-parse` verification; `npm run check:branch-review-ledger` pass; no provider-backed checks run. | -| 2026-07-25 | cursor/eval-matching-distinct-identity-6273 | f5620e3a4a2d60fd8a67fd43d8046726f1761e5f | Self-review of the merged #030/#075 fixes against current main | Before: merged coverage matched expectations to distinct source *positions*, so one document repeated across `answer.citations` still filled both comparison slots, and first-come assignment made `allHit` depend on `expectedFiles` order; `PR_POLICY_BODY.md` was back on main (via #1153) ready to overwrite the next PR body; the #030/#075 queue row survived their archival. After: coverage dedupes by document text and assigns by maximum bipartite matching, label accumulation is linear, the stale template is removed, and #080 records the removed admission widening for approved eval re-test. Both new contracts were verified failing against main's matcher before the fix. RAG impact: no retrieval behaviour change — eval matching and label bookkeeping only. | Focused Vitest 39/39 (eval-document-matching, eval-utils, eval-search, search-scope, rag-imputation-contract); fail-closed proof 2 failed on the `origin/main` matcher; `npm run verify:cheap` pass (3379 passed, 5 skipped); `check:branch-review-ledger` and `check:pr-policy` pass; no OpenAI/Supabase/provider-backed checks run. | -| 2026-07-25 | execute-audit-code-remediation (PR #1162) | d5455837231f5cb6a927e8c4752ef5aa9c72767c | Merge conflict + CI + Bugbot review | Merged origin/main (164 behind). Fixed conflicts in ClinicalDashboard/global-search-shell/mode-home/search-scope/tests/pdf extractor. Renamed duplicate migration 20260724120000→20260724130200. CI: skills openai.yaml, owner-scope setup-status exemption, sitemap, drift hash, answer-render duplicate key, setup-status mock `.eq`. Bugbot: fixed Codex P1 view-only indexing + P2 differential back; also fixed P2 viewer visibility for retained images and duplicate-upload cleanup ledger fail-closed. | Focused Vitest (back-href/worker/skills/setup-status/owner-scope/drift/sitemap/search-scope/favourites/forms/therapy/document-detail/upload-ledger) + typecheck + check:skills/migration-role/sitemap; no provider-backed checks. | -| 2026-07-25 | execute-audit-code-remediation (PR #1162) | f07c711a0e1ee853b128733a51db182d8192c3c4 | CI unblock after Bugbot | Fixed Prettier (11 files), restored package-lock/.npmrc to main so blocking npm audit is advisory (lockfile_changed=false), updated mobile-composer-reserve contract for answer-home hero breakpoint. Prior tip e5c8c49c had Static/Safety/Unit failures. | format:check; focused Vitest 41; ci-change-scope lockfile_changed=false; no provider-backed checks. | -| 2026-07-25 | execute-audit-code-remediation (PR #1162) | 1de1b32f562c0a972997750a5dc97a02ab1a9c15 | Production UI fix | Fixed ui-tools services referral header test (H1/quick-filters contract). Prior tip 09c6eb2d had Static/Safety/Unit/Migration green; only Production UI failed. | Local Playwright chromium services referral test PASS; no provider-backed checks. | -| 2026-07-25 | execute-audit-code-remediation (PR #1162) | b9b56c140eb14cbba5a2c2230e3fa28d3a791add | CI unblock after bot sync | Tip 96188eca had PR required SUCCESS (Static/Safety/Unit/Build/Migration/Production UI). Hosted pr-branch-sync then merged main (a420b86b/b9b56c14), leaving CI action_required for bot-authored runs. Pushing agent commit to re-trigger non-bot CI. | Prior tip 96188eca hosted CI green; local services referral Playwright PASS; no provider-backed checks. | -| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `80421c38c54c5960bf51210d6bc29109b52afb53` | Main sync after CONFLICTING + perfection | MERGE-READY product scope. Merged `origin/main` cleanly; no markers; product delta remains font-stack + 3 mockup tweaks + policy body/ledger. Heading hierarchy fix retained. | merge-tree clean; marker scan clean; type-scale + design-system-contract + Prettier pass. | -| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | pending-push | Production UI flake fix | FIXED reproducible Sources Find autofocus: Sheet open retries now upgrade from close-button fallback to late-mounted `data-sheet-autofocus` (was leaving focus on Close after drawer children mount). Typography product delta unchanged. Removed temporary `PR_POLICY_BODY.md`. | `node scripts/run-vitest.mjs run tests/sheet.dom.test.tsx` 5/5. | -| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `7a94877745c652b7bb7144cf9be02a22a9a0dbdf` | Autofocus fix published | Awaiting exact-head Production UI green. | Sheet DOM 5/5; pushed. | -| 2026-07-25 | `cursor/ledger-066-067-519b` | f04392a408eceee14215c15169cbd6b70ac2041c | Close stale ledger #066/#067 (+ drop resolved #030/#075 from queue) | READY. #066 proven on main via #1174; #067 already fixed in #1191 in-process preflight. Docs-only ledger sync; no code change. | Local proof: `git show`/`log` for #1174/#1191; preflight test already in-process on main; ledger integrity asserts. No providers. | -| 2026-07-25 | PR #1196 / codex/fix-p2-audit-20260719 | 6d59b038514a92566e986d302b0c75707f13ea30 | fresh bug/regression review + Bugbot (clinical/RAG/search/auth/privacy) | Changes requested. Not merge-ready. No P0. P1: search/embedding last-waiter abort leaves dying inflight map entry so healthy same-key retry can coalesce onto aborted work (HTTP 500 / AbortError); also present on main — fixed forward in cursor/pr1196-coalesce-main-4711 / PR #1212. P2: fractional PDF render dimensions rejected by Number.isSafeInteger(pixels), aborting JS fallback — also fixed in #1212. Cleared after inspection: public storage_path omission, document chunk UUID fail-closed schema, factsheet save persistence, therapy capability flags, extractive section-dedup exemption, auth definitive-vs-retryable handling. Blockers: GitHub mergeable CONFLICTING; ~680 commits behind main; ~23 content conflicts including openai.ts, rag.ts, semantic-rerank, supabase client, package.json, therapies-index. PR body RAG impact understates clinical-search / answer-ranking / retrieval-variant edits. prlanded: state OPEN, not merged. | Bugbot + offline static/diff review + pure-JS race/fractional-pixel proofs; focused Vitest on #1212 fix (163 passed). Full PR #1196 Vitest/UI not re-run on stale tip. No OpenAI/Supabase/provider writes. Hosted CI for #1196 only showed PR policy pass + GitGuardian fail; required suite not green on this head. | -| 2026-07-25 | cursor/pr1196-coalesce-main-4711 / PR #1212 | fbe4f46ee | fix-forward from #1196 review: coalesce poison + fractional PDF pixels | Immediate map delete on last-waiter abort for search/embedding coalescing; ceil fractional render dims before safe-integer pixel budget. Regression tests + repro script. | Vitest openai-cache + pdf-extraction-budget + private-access-routes: 163 passed; node repro script. No provider-backed checks. | -| 2026-07-25 | PR #1196 / codex/fix-p2-audit-20260719 | 6d59b038514a92566e986d302b0c75707f13ea30 | closeout: superseded by #913 / current main | CLOSED without merge. Content proof: tip ~680 behind, CONFLICTING; remediation family already on main via #913 (01040d2c). Tip would regress docs admin gate, factsheet governance, PDF/RAG/auth advances. Live residual coalesce/PDF bugs fixed-forward in PR #1212. Remote branch retained (no delete). | Content diff vs origin/main + #913 path overlap; no provider-backed checks; no branch delete. | -| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | `5e22eb4c4c7f717f94e32b545f31c0d0f6374a96` | Final merge-readiness after perfection | APPROVE / MERGE-READY. Product: typography delta + Sheet late-autofocus upgrade. Hosted tip green: PR policy, Static, Unit, Build, Safety, Production UI, PR required, SAST, Secret Scan. mergeStateStatus CLEAN. Residual: human approving review if branch protection requires it. | Hosted CI success on `5e22eb4c4c7f717f94e32b545f31c0d0f6374a96`; Sheet DOM 5/5; no provider-backed evals. | -| 2026-07-25 | PR supersede #1186 / `cursor/pr1186-audit-remediation-c94c` | `a38e83860510a4229d5658960657cd7448aff278` | Clean main-based port of intentional #1186 audit fixes | SUPERSEDE #1186 (do not merge old PR). Ported intentional 16-file delta onto current main; dropped conflicted checkpoint tree and placeholder skills. Fixed eval single results binding; async run-heavy so lock heartbeat fires; branch:cleanup dry-run default + argv-safe deletes; skill-create interface YAML. Close #1186. | Focused Vitest tooling+lock 6/6; check:skills 33; prettier on touched files; no provider/live eval runs. | -| 2026-07-25 | PR #1200 / `cursor/typography-audit-fixes-1c1e` | pending-push | CORRECTION: remove exact-duplicate ledger row | Removed a merge-union exact duplicate of the `cursor/ledger-066-067-519b` / `f04392a40` READY row (kept the earlier copy). No product change. | `npm run check:branch-review-ledger` | -| 2026-07-25 | PR #1190 / `remediate-dark-mode-audit` | `00eca49b9b0d7e5fbfa5703a15e9e930963984a6` | Cursor review+Bugbot+prlanded+debug (fresh pass, same HEAD) | DO NOT MERGE; NOT LANDED (OPEN, mergeable=CONFLICTING/DIRTY, 468 behind / 2 ahead). Reconfirmed P0: conflict resolution deleted `trustGatedAnswerForClinicalNotes` (0 hits on head; main L584/632/659/1075) — Clinical Notes consumes ungated answer. P1: `src/app/api/answer/route.ts:6` imports nonexistent `@/lib/rag` (tsc TS2307; stream correctly uses `@/lib/rag/rag`). P1: merge-tree conflicts on answer/upload/evidence-panels + 10 paths; literal `<<<<<<<` in docs audit plan; migration timestamp collision risk vs main. Intentional dark-mode delta is only commit `363672602` (~10 files). Salvage: `cursor/pr1190-dark-mode-salvage-f453` cherry-picks that commit onto current main, restores unused-manifest-import cleanup, keeps clinical gate. Close #1190 after salvage lands. | Bugbot; `git grep` gate/import/markers; merge-tree; `tsc` TS2307 proof; gh pr view/checks (PR policy fail). Salvage: tsc clean; visual-evidence+overlay tests 13/13; eslint on changed files. No provider/UI matrix. | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `f3d90eccf78a5e8c6569c0889d1932230588f1d2` | Bugbot triage of asset-optimization PR (supersedes d63682c7 READY row) | NOT READY previously: tip carried committed conflict markers from dirty checkpoint `faa50e6e` (answer/upload routes, services UI, tests), was DIRTY vs main, and GitHub three-dot showed ~117 polluted files. Fixed: merged `origin/main`; removed SignedImage client transform rewrite (undeclared width/height/resize + max-h-52 heuristic on object/sign URLs = silent no-op/risk); replaced mutating non-recursive `svgo -f` check:assets with `scripts/check-assets.mjs` stability gate; multipass-optimized `src/app/icon.svg`; added signed-image regression test. | merge-tree + tsc conflict-marker scan; `vitest run tests/signed-image.dom.test.tsx` (4 pass); `npm run check:assets` OK. No provider-backed checks. | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `8888bf87cbdc5a061bb6d3a2cf46b638af773b1b` | Cursor review+Bugbot+/debug (supersedes f3d90ecc Bugbot row) | CONDITIONAL READY after favicon fix. Prior tip DO NOT MERGE (conflict-marker pollution) cleared by Bugbot main-merge; SignedImage transform silent no-op removed; check:assets now compare-only. Remaining P1 found+fixed: SVGO-stripped `icon.svg` failed `brand:check` and removed dark-mode favicon styles — restored `brandIconSvg()` and excluded that file from SVGO gate. Residual P2: orphan AVIF/WebP binaries unused by demo/mockup PNG refs; year-long immutable Cache-Control on unversioned `/icons/*`; `minimumCacheTTL: 86400` still a long lower bound for any optimized next/image. NOT LANDED (OPEN). | Bugbot; marker scan clean; brand:check + check:assets PASS; signed-image vitest 7/7; hosted Static/Safety were red on pre-fix tip (brand:check). No provider-backed app checks. | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `fc0afee8324561e7937be43b6346e260cafd00a4` | Cursor /debug CI follow-up after favicon fix | Static PR still red: knip unlisted `sharp` from `optimize-public-images.mjs` (was overrides-only). Declared `sharp@0.35.3` dependency. | `npm run check:knip` PASS locally after declare. No provider-backed checks. | -| 2026-07-25 | execute-audit-remediation-plan (PR #1188) | 8b8639113925601e1687bfe4f1f29c44a4308b61 | Bugbot/diff-review: maintainability remediation tip | BLOCK: tip tree carries unresolved conflict markers (answer/upload APIs, clinical-dashboard, services, tests); invalid `async export function sha256Hex` in indexing-v3 utils; ClinicalDashboard still calls removed `renderSystemNotice`; merge-tree vs main conflicts in check-github-action-pins.mjs + ui-primitives.tsx. Intended notices extraction/dynamic imports look mostly sound; search-scope/migration not in three-dot product delta. | `git grep` conflict markers on tip (none on origin/main); `git show` for ClinicalDashboard:3824 + utils.ts:191; `git merge-tree --write-tree origin/main 8b8639113`; no provider-backed checks. | -| 2026-07-25 | PR #1209 / `cursor/pr1186-audit-remediation-c94c` | `4cb22e45dfe46b1975fa15ddd028c7e14ceb5fab` | Close #1186 + babysit #1209 CI | DONE. Closed #1186 as superseded. Synced origin/main (MERGEABLE/CLEAN). Fixed PR-policy RAG impact line. Hosted PR required SUCCESS (Static/Safety/Unit/Build/Production UI/Advisory UI/containers) on pre-ledger tip; docs-only follow-up pushed. Ready to merge; auto-merge not enabled. | gh pr checks; local policy ok; no provider/eval runs. | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | 963a9a0b4acb40659118eb1160712c0b99ab8bb1 | Cursor /debug CI unblock | Dropped svgo/sharp/check:assets lockfile delta (exceljs brace-expansion highs become blocking when lockfile_changed). Kept runtime asset fixes + themed favicon. Orphan AVIF/WebP remain unused. | brand:check/knip/prettier/signed-image vitest local PASS; no provider checks. | -| 2026-07-25 | `cursor/fix-mobile-composer-edge-scroll-5b1d` (PR #1192) | 333e67b8 | pr-ci-fix: Static PR checks / Maintainability hotspot budgets | Main merge (e688c6e2) expanded a JSX comment from 2→3 lines while restructuring heroComposerBreakpoint/heroOwnsPhoneComposer declarations, netting +2 lines vs budget-fix commit (ae77f8c3). ClinicalDashboard.tsx hit 4141 vs 4140 budget. Fix: compressed 3-line comment back to 2 lines. Zero behaviour change. | `npm run check:maintainability-budgets` → PASS (4140/4140). No provider-backed checks. | -| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `70abb74f7ceee5a50748c4c1e6baa730d7225cf4` | User-requested /review + Bugbot + /debug + /prlanded on current tip | APPROVE with notes. Prior P1 focus latch and P2 near-bottom reserve-only clamp confirmed fixed on `5b5ecf405` and retained through main merge. No new P0/P1. Residual P2s: PR body was wrong audit-remediation paste (fixing); non-answer `focus=1` autofocus still broad; earlier document-detail double-header findings unchanged/out of Answer-dock scope. /prlanded: still OPEN, not merged. GitHub CONFLICTING was staleness (merge-tree clean) — merged origin/main. | Bugbot; focused Vitest use-hide-on-scroll + mobile-composer-reserve 28/28 before and after main merge; merge-tree clean; no provider/UI browser matrix this pass. | -| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `73e87da63f5a9eca4162534074755891f952a4ee` | CORRECTION/supersede: final head after Bugbot fixes + main sync + review ledger push | APPROVE with notes retained from prior row. Product fixes from `5b5ecf405` still present; branch now 0 behind / mergeable (BLOCKED on CI). Wrong audit-remediation PR body corrected. /prlanded: still OPEN — do not delete branch. | Focused Vitest 28/28 on pre-sync tip; merge-tree clean; CI re-queued on tip; no provider-backed checks. | -| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `477ec929` | pr-ci-fix: Static PR checks / ESLint react-hooks/set-state-in-effect | Two `useEffect` blocks in `master-search-header.tsx` called setState synchronously (lines 383-392). Fix: moved `heroComposerOwnsPhones`, `phoneBottomSearchDockActive`, `hideOnScrollEnabled` before `sharedChromePinned`; gated focus pins at consumer; removed both effects. Net -12 lines, budget OK (4133/4140). | ESLint on file: 0 errors; `npm run typecheck`: clean; `prettier --check`: clean; `check:maintainability-budgets`: PASS. No provider-backed checks. | -| 2026-07-25 | PR #1192 / `cursor/fix-mobile-composer-edge-scroll-5b1d` | `b200d37af9bd6a93589e7984a7cb9c23164079f0` | Apply recommended review fixes after /review+/bugbot | Fixed Static CI eslint set-state-in-effect on latch clear (derive pins + queueMicrotask). Fixed residual P2: suppress `focus=1` autofocus after any `modeSearchSubmitted` and on `run=1` bootstrap. Prior P1/P2 chrome fixes retained. | eslint master-search-header+ClinicalDashboard; maintainability 4137/4140; vitest use-hide-on-scroll+mobile-composer-reserve 28/28; no provider-backed checks. | -| 2026-07-25 | PR #1188 / `execute-audit-remediation-plan` | `8b8639113925601e1687bfe4f1f29c44a4308b61` | Explicit Bugbot + protocol review (+ /prlanded + /debug) | DO NOT MERGE tip. Not landed (state OPEN, mergeable CONFLICTING, 468 behind main). P0: ClinicalDashboard orphaned import body (parse break). P0: dangling `renderSystemNotice` after helper extraction. P0: `indexing-v3-agent/utils.ts` `async export function sha256Hex`. P0/P1: `CLINICAL_PHRASE_PATTERN` left in index.ts but used from utils. P0: ~12 files still contain conflict markers from archive base `faa50e6`. P1: PR policy missing Clinical Governance Preflight. P2: notice visibility dropped `answer` gate + `hidden sm:block`. IMP-04 prune unsafe vs current main (still-exported symbols in use). Clean rebuild of intentional remediation on main: `cursor/pr1188-fix-build-breakers-6ee0`. | Bugbot subagent; `git show`/marker scan; esbuild parse of tip utils; `gh pr view/checks`; typecheck + check:github-actions on fix branch. No provider calls. | -| 2026-07-25 | `cursor/pr1188-fix-build-breakers-6ee0` (PR #1213) | `183291a1f892489218b3d6b6c8a04966cdadd1e3` | Clean rebuild of intentional #1188 remediation on main | READY for review. Ports notice extraction + admin lazy-load + indexing-v3 utils extraction without the dirty archive base / conflict markers / syntax breakers from #1188 tip `8b86391`. Preserves system-notice answer gate + responsive visibility. Recommend close #1188 after this merges. | typecheck; check:github-actions; check:branch-review-ledger; prettier; esbuild utils parse. No provider calls. | -| 2026-07-25 | PR #1188 / `execute-audit-remediation-plan` + replacement PR #1213 / `cursor/pr1188-fix-build-breakers-6ee0` | tip `8b8639113925601e1687bfe4f1f29c44a4308b61` (broken); rebuild `fd67d6bf3` | Cursor Bugbot+/review+/prlanded+/debug (fresh pass) | DO NOT MERGE #1188; NOT LANDED (OPEN, CONFLICTING/DIRTY, 469 behind). Runtime-proof P0s: tsc TS1185 conflict markers in answer/upload/answer-status/etc; ClinicalDashboard orphaned import body; dangling `renderSystemNotice`; `async export function sha256Hex`. PR policy FAIL (missing Clinical Governance Preflight). Intentional ~11-file delta rebuild is PR #1213 on clean main (tsc/eslint/pins green). Close #1188 after #1213. | Bugbot; isolated worktree tsc on tip; gh pr view/checks; fix-branch tsc+eslint+pins+16 Vitest. No provider/UI matrix. | -| 2026-07-25 | PR #1188 / `execute-audit-remediation-plan` | `8b8639113925601e1687bfe4f1f29c44a4308b61` | prlanded + close as superseded | CLOSED (not merged). Content never landed; tip remained CONFLICTING with P0 build breakers. Superseded by PR #1213 (`cursor/pr1188-fix-build-breakers-6ee0`). | Final P0 scan on #1213 tip clean; focused Vitest 16/16; node --check utils; check:github-actions. Closed via ManagePullRequest with supersession comment. | -| 2026-07-25 | PR #1213 / `cursor/pr1188-fix-build-breakers-6ee0` | `64b13fba5d8c7c97dac553d02a8dd4c2b5522e1e` | Safe land handoff after #1188 close | #1188 CLOSED superseded. Tip was bot-merge-only so hosted CI sat in action_required; pushing agent commit to re-trigger non-bot CI before squash-merge to main. merge-tree clean vs main; intentional rebuild (notices/lazy/utils) intact. | gh run list action_required on bot tip; merge-tree clean; no provider calls. | -| 2026-07-25 | cursor/pr1197-fix-regressions-d06a (PR #1197 fix) | c1e9696de6000440ad5b44e4d2fb2738a858deae | Fix-forward after Bugbot do-not-merge review | FIXED for tip. Synced to origin/main; restored clinical-notes trust gate + boundary tests + summaryMode 400 contract by taking main; removed ISSUE-07 RAG pre-classifier (rag.ts matches main — RAG impact: no retrieval behaviour change). Kept only additive SQL remediation: migration 20260725000000 (real worker URL + ISSUE-05 revokes), schema.sql URL/[REDACTED] fix + ISSUE-05, regenerated drift-manifest. Dropped broken upload authority refs (undefined canonicalAuthority). | Vitest: summaryMode reject + ClinicalNotes boundary 4/4; rag-classifier-memo + rag-tail-latency 17/17; upload smart-title/cleanup 3/3; check:migration-role pass; drift:manifest regenerated via Docker. No provider-backed checks. | -| 2026-07-25 | execute-system-audit-remediation (PR #1197) | c7ae011683614c8de6027347b49e8b3fb79dfa34 | Merge-ready polish: grant reassert + CI green path | READY. Hardened migration/schema to reassert service_role EXECUTE after CREATE OR REPLACE / ISSUE-05 revokes; drift regenerated. Prior regressions remain fixed (trust gate, summaryMode, no RAG pre-classifier). Delta vs main: migration + schema + drift + ledger only. | check:migration-role; drift:manifest; supabase-schema + function-grants Vitest 83/83; awaiting hosted PR required on tip. | -| 2026-07-25 | cursor/pr1190-dark-mode-salvage-f453 (PR #1214) | pending-ci-retrigger | CI unblock after bot sync | Hosted pr-branch-sync merged main onto tip (`68d0ceaab`), leaving CI `action_required` for bot-authored runs. Pushing agent commit to re-trigger non-bot CI before squash-merge; then close #1190. | Local pwa-manifest 8/8; trust gate present; prior unit failure fixed. No provider-backed checks. | -| 2026-07-25 | cursor/pr1190-dark-mode-salvage-f453 (PR #1214) | pending-ci-retrigger-2 | CI unblock + skip-branch-sync | Repeated pr-branch-sync bot merges left CI `action_required`. Applied `skip-branch-sync` label and agent retrigger so required checks can finish for squash-merge; then close #1190. | Hosted CI pending on tip; no provider-backed checks. | -| 2026-07-25 | cursor/pr1190-dark-mode-salvage-f453 (PR #1214) | `e19442240afbd7f28c321e399c6b4dcb0a7c9fdf` / squash `bb6b394617cbd906285ebe19e0e452912793320a` | prlanded after squash merge | MERGED. Two-dot content diff vs `origin/main` empty; clinical gate preserved; `no-hardcoded-hex` + theme CSS on main; PWA manifest theme colours intentionally absent. Hosted PR required SUCCESS (Unit/Build/Static/Production UI). Remote salvage branch deleted by squash `--delete-branch`. | `gh pr view` MERGED; `git diff origin/main e19442240` empty; trustGated grep on main; no provider-backed checks. | -| 2026-07-25 | PR #1190 / `remediate-dark-mode-audit` | `00eca49b9b0d7e5fbfa5703a15e9e930963984a6` | Close without merge after #1214 salvage | CLOSED (not merged). Unsafe tip superseded by #1214. Remote branch `remediate-dark-mode-audit` retained pending optional cleanup; do not merge. | `gh pr view` state=CLOSED mergedAt=null; no provider-backed checks. | -| 2026-07-25 | execute-system-audit-remediation (PR #1197) | `12ab1af1a353b4e3d0aa54a7d05145e296d3b2f0` / squash `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). `npm run check:branch-review-ledger` pass. No provider-backed checks. | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `15a8093ec4fb6abd73ddead7c0f436e633359ab8` | Cursor review+Bugbot+/debug closeout | CONDITIONAL READY / CI green on tip before final main sync. Supersedes polluted DO NOT MERGE tip. Runtime asset opts retained; themed favicon restored; SVGO/sharp lockfile delta dropped (stub `check:assets`). Residual P2: orphan unused AVIF/WebP; year-long immutable `/icons/*` Cache-Control; `minimumCacheTTL: 86400`. NOT LANDED (OPEN). | Hosted PR required PASS (Static/Safety/Unit/Build/Production UI); brand:check + signed-image vitest local; no provider app checks. | -| 2026-07-26 | cursor/global-header-scroll-hide-4fd7 (PR #1222) | `a7f6d81f8b1dd5613dda94a3ddef78d480de876e` | Cross-breakpoint header hide/reveal + tablet/desktop scroll coverage | Header now hides on scroll down and returns on scroll up at every breakpoint; bottom search dock stays phone-only. Two root causes fixed: GlobalSearchShell had no scroll source above phones (`#main-content` onScroll never fires there) and its sticky rule sat on `header#search`, which has zero travel inside two header-height parents; ClinicalDashboard's collapse row was `max-sm`-gated so it never hid. Red/green proof captured: with the four source files reverted to base `1aa64e94`, all 12 new Playwright tests and 8/10 static contract assertions fail. | `npm run verify:cheap` pass except pre-existing local `tests/pdf-extractor.test.ts` Python-OCR failure (reproduced identically at base `1aa64e94`); `npm run verify:ui` 284/284 Chromium on the main-synced tree; `check:migration-role`, `check:function-grants`, `check:branch-review-ledger` pass after the #1197 SQL sync; no provider-backed checks. | -| 2026-07-25 | PR #1213 / `cursor/pr1188-fix-build-breakers-6ee0` | `c45189c76502050002e579cf2038157416a65f2d` | Deduplicate ledger rows before land | Removed 2 exact duplicate table row(s) introduced by union-merge churn (no unique review content lost). Production UI green after Sheet autofocus upgrade. | check:branch-review-ledger; hosted Production UI success on tip. | -| 2026-07-25 | PR #1213 / `cursor/pr1188-fix-build-breakers-6ee0` (supersedes #1188) | merge `8e3a49d0449ec2c1b8e4e10f6cd500c0c8c9550b` | prlanded after safe close+#1213 land | LANDED. #1188 CLOSED (not merged). #1213 squash-merged to main after PR required green (Production UI/Static/Unit/Build/Migration). Content verified on main: dashboard-notices extract, indexing-v3 utils `export async function sha256Hex`, Sheet autofocus defense. Remote feature branch deleted by merge. | Hosted CI run 30165248633 success; gh pr merge squash; git cat-file content checks on origin/main. No provider calls. | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `98dd14853e262cd3073db3974b92f266b33289fb` | Resolve residual P2s from Cursor review closeout | Cleared residual P2s: deleted unused public AVIF/WebP orphans; replaced year-long immutable `/icons/*` Cache-Control with `max-age=86400, stale-while-revalidate=604800`; removed `minimumCacheTTL: 86400` (keep Next default 60s). Contract covered in pwa-manifest test. NOT LANDED (OPEN). | pwa-manifest + signed-image vitest 13/13; no provider-backed checks. | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `4bb07845d5bb50e4eda7f78fc39e1e22dacda302` | Cleanup+PR-body prep before merge | Synced main; upgraded stub `check:assets` to themed-favicon marker gate (wired into verify:cheap/CI, no lockfile); removed redundant `/icon.svg` preload; matched non-PDF failure `aria-live` to SignedImage. Residuals previously cleared. NOT LANDED (OPEN). | check:assets/brand:check/gate-manifest/docs:check-scripts PASS; pwa-manifest+signed-image vitest 14/14. No provider checks. | -| 2026-07-26 | PR #1192 / cursor/fix-mobile-composer-edge-scroll-5b1d | `6721ca449` + short-runway determinism hunk | Production UI failure root-cause + focused fix | Failing check pair (Production UI + PR required aggregate) traced to ui-smoke short-runway test racing PageDown smooth-scroll against the near-bottom reserve guard (hide only fired when a frame sampled the 32-40px intent window). Replaced with deterministic scrollPrimarySurface path: bottom-jump refusal asserted, then floored post-collapse-offset hide. App code unchanged. | Focused Playwright chromium repeat-each=3 pass (2 runs, 6/6) on isolated prod build; no provider-backed checks. | -| 2026-07-25 | PR #1192 / cursor/fix-mobile-composer-edge-scroll-5b1d @ 2955bc5c | `df72c725` | CI / Production UI failure — non-answer phone header keeps the in-flow collapse hide | FIXED. Single failing Playwright test: `tests/ui-smoke.spec.ts:3780 — non-answer phone header keeps the in-flow collapse hide`. Root cause: RAF debouncing in useHideOnScroll.onScroll coalesces a layout-clamp scroll event with the test's deliberate -24px upward scroll into one RAF evaluation. The hook sees lastMaxOffsetRef stale (pre-collapse visibleMaxOffset V) while the net offset is already V-96 (= newMaxOffset-24). The clamp detection fires (`lastOffset V > newMaxOffset V-72`), incorrectly suppressing the genuine reveal. Fix: added `offset >= maxOffset - revealIntentDistance` guard to the clamp detection in `computeScrollHideUpdate`. Only treat movement as geometry feedback when the net offset is within revealIntentDistance (12 px) of the new bottom edge. Unit test added. PR-required failure is downstream of Production UI only (no independent breakage). | verify:cheap pass (exit 0); npm run test 20/20 on use-hide-on-scroll.test.ts; Playwright chromium 9/9 scroll-hide smoke tests; Playwright chromium 1/1 target test. No provider-backed checks. | -| 2026-07-26 | PR #1192 / cursor/fix-mobile-composer-edge-scroll-5b1d | `2955bc5ca` + in-flow reveal hardening | Production UI second failure root-cause + focused fix | Second Production UI failure (in-flow collapse test, reveal after bottom clamp) traced to rAF starvation coalescing the single upward scrollTop write into the trailing bottom-clamp evaluation, which the shrinking-range hold rebases away; real drags emit follow-up events so product behavior is unaffected. Replaced single -24 write with two separated upward steps yielding frames each. | Focused Playwright chromium repeat-each=3 pass for both touched tests (6/6) on isolated prod build; no provider-backed checks. | -| 2026-07-25 | PR #1217 / `cursor/sheet-focus-hardening-c6d3` | `f7208d52eca6d9059f15908367cebada568b0124` | Sheet focus stress test + CI unblock before land | READY. Stress pass found and fixed two defects in this branch's own work before land: (1) the open-sheet stack guard skipped every close-restore while any sheet was open, so closing a stacked sheet dropped focus to body instead of the sheet below (now `canRestoreFocusTo`: restore proceeds when the target is inside the top-most sheet); (2) a background surface re-focusing itself from its own focus handler could trade `focus()` calls synchronously with the controller (reclaims that do not stick are now bounded; a reclaim that holds resets the count). Resolved the #1213 conflict in favour of the event-driven controller and widened the settle window to cover the lazily imported `data-sheet-autofocus` child main's 200-attempt poll was defending. Repeated `pr-branch-sync` bot merges left hosted CI `action_required`; applying `skip-branch-sync` + this agent commit to re-trigger non-bot CI before land. | `verify:pr-local` green (389 files / 3458 tests, build, client-bundle scan, RAG fixtures); `test:e2e:pr` 285/285 Chromium; `ui-smoke.spec.ts --repeat-each=3` 273/273 no flake; 120-cycle browser soak of the phone mode-menu sheet (zero inert/scroll-lock leaks, focus restored every cycle, median 0 ms / max 10 ms); new `tests/sheet-focus-stress.dom.test.tsx` 13 cases + real-browser inert guard in `ui-accessibility.spec.ts`. No provider-backed checks. | -| 2026-07-25 | cursor/eval-matching-distinct-identity-6273 (PR #1204) | `c0db5f5810a37dbe7df9efa3d5479db134c98e10` | prlanded — #030 coverage hardening | LANDED. Squash `eb443dfda0fcfca8181e6839d156d9986dfc52db`. `expectedFileCoverage` now dedupes the citation window by document identity and assigns sources by maximum bipartite matching, closing two re-entry routes into #030 (repeat chunk citations of one document; order-dependent greedy assignment). Content verified by tree comparison against the squash commit (identical). Remote branch deleted at merge; local branch pruned 2026-07-25 after that verification. | `npm run verify:cheap` green pre-merge; hosted `PR required` green; tree-identity check `git diff eb443dfd c0db5f58` empty. No provider-backed checks. | -| 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-26 | PR #1244 / `implement-motion-audit-fixes` | `4fec4f8830bac3b0e95a2b5255aba9fbc72e6e7e` | Open-PR hygiene: close contaminated Antigravity motion tip | CLOSED. `faa50e6e3` ancestor; 497 behind/1 ahead; tip strips conflict markers from answer/upload while deleting private-access governed-summary test + outstanding-issues rows; merge-tree conflicts include answer/upload/evidence-panels. Motion-only re-derive on fresh main if still wanted. | Marker/ancestry/grep; merge-tree conflict list; tip `git show` on API/tests. No provider calls. | -| 2026-07-26 | PR #1187 / `cursor/fix-mode-switch-lag-22f6` | `7bceebf562dc6700091964996a6e2749b0d63df6` | Open-PR hygiene: close unfixed P1 + heavy conflicts | CLOSED. Prior P1 still present (`isDashboardModeHref` Documents early-return). 177 behind; conflicts in globals.css/ClinicalDashboard/search chrome. Re-implement on fresh main if mode-switch thrash still needed. | Confirmed guard still on head; merge-tree conflicts; close+comment. No provider calls. | -| 2026-07-26 | open-PR hygiene (merge-ready keep) | multi | Confirm clean supersedes after Antigravity closures | KEEP OPEN / MERGE-READY: #1241 IMP-04 (PR required green), #1239 page-anchored composer (PR required green), #1200 typography supersede (Production UI pending), #1224 ledger docs (CLEAN). Noted on each PR. #1231 leave open (outstanding-issues.md conflict only). #1212 leave open (GitHub DIRTY; needs worktree sync). Drafts #1227/#1199 untouched. | gh pr checks + merge-tree classify; comments posted. No merges to main. | -| 2026-07-26 | PR #1212 / `cursor/pr1196-coalesce-main-4711` | `d01352a096114a7804a97bf126cdf168c304b1ec` | Open-PR hygiene: sync main (merge-tree clean) | Before: GitHub DIRTY/CONFLICTING; update-branch 422. After: clean `ort` merge of origin/main in worktree and push; mergeable. Coalesce search path retained. | merge origin/main + push; no provider calls. | -| 2026-07-26 | PR #1231 / `cursor/formulation-accessibility-linear-14d4` | pending | Open-PR hygiene: resolve outstanding-issues conflict | Merged origin/main; kept PR `#064` linear-ready detail and added main `#082` bot-sync row; pushed. | conflict resolve only; no provider calls. | -| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `e1f7dad583465a10231abc058ee4320177998894` | Post-review main sync and stable-CI retrigger | APPROVE pending hosted required CI. The automated branch-sync merge brought current `main` (`b91b4600171be08198e92bcf19b7d67e8207cb2f`) into the reviewed repair without content conflicts; `skip-branch-sync` was applied to prevent another bot-head cancellation while required checks run. | `git merge-tree --write-tree` clean; three-dot PR scope unchanged except the required ledger record; hosted CI retrigger pending. | -| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `de4864ef06626931ecd6bd22b97387f80f529cb2` | Production UI second-failure repair | APPROVE pending final hosted required CI. The first repair exposed a second invalid assumption in the same new test: `/formulation/worry` does not own a fixed phone dock, so geometry used the `-1` missing sentinel. Replaced it with the established submitted Forms result route, explicitly waiting for the dock and unfocused composer before asserting paint and scroll-hide geometry. | Exact focused production Chromium test pass 1/1 (isolated Next build); Prettier, ESLint and `git diff --check` pass; prior hosted run had 290/291 Production UI tests pass with this single invalid-route assertion. | -| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `547d3a100c73333895554cf66eb0efd8d8dde8da` | Late unresolved review-thread verification and fix | APPROVE pending final hosted required CI. Confirmed the open P2 despite a bot summary claiming it was fixed: opaque phone `.edge-glass-header` / `.universal-header` still inherited `backdrop-blur-xl`. Added standard and WebKit `backdrop-filter: none` overrides and static/computed-style guards. | Prettier, ESLint and `git diff --check` pass; focused local Vitest/browser reruns blocked by consecutive legitimate shared-lock owners, so hosted Static/Unit/Production UI remain the merge gate. | -| 2026-07-26 | PR #1238 / `cursor/header-hide-top-bar-only-4fd7` | `fdc20bfedb61a2c267c22a3d78ccc8214e6c0087` | Continue-executing: top-bar-only hide + CI green | APPROVE / MERGEABLE. Root cause fixed: collapse wraps only `header#search` (+ Therapy addon); sticky hosts pin outer [top bar \| search] below `chrome-safe-area-top` without translating search away; sticky-stack composers stay `relative`. Services rail overlay hardened (testids + center scrollIntoView); ui-tools accepts sticky ancestor; Therapy nav assert uses collapse-host top under safe-area spacer. Merged main safe-area + submitted-result focus rules. | Hosted PR required + Production UI SUCCESS on tip; contract 14/14; focused Playwright services/desktop composers 6/6, chrome-scroll 12/12, therapy-nav 1/1. No provider-backed checks. | -| 2026-07-26 | PR #1238 / `cursor/header-hide-top-bar-only-4fd7` | head `db4390b3814910d0210497e2982414904f2e0704` / squash `cdbe0e662366f9308813e8d5fe8951ca11a47d6b` | prlanded after squash merge | LANDED. Top-bar-only hide-on-scroll with sticky search stack below `chrome-safe-area-top`; two-dot content diff empty vs `origin/main`. Remote feature branch deleted at merge. Required CI green at merge (PR policy, PR required, Production UI). | `gh pr view` MERGED; `git diff origin/main db4390b3` empty; no provider-backed checks. | -| 2026-07-26 | cursor/formulation-a11y-linear2-14d4 (PR #1250) | head `14b4e80ee41b16a80c974b6a1f8201407a0df05b` / squash `b91b4600171be08198e92bcf19b7d67e8207cb2f` | prlanded after squash merge | LANDED. Formulation disabled-state accessibility (#064) on main; product two-dot diff empty vs pre-merge tip. Superseded conflicted PRs #1219, #1223, #1226, #1231, #1249 closed. Remote feature branch deleted at merge. | Focused Chromium formulation 7/7; verify:cheap 3473 tests; hosted Production UI + PR required SUCCESS; `git diff 14b4e80e origin/main -- formulation-builder-page.tsx ui-formulation.spec.ts` empty. No provider-backed checks. | -| 2026-07-27 | branch-cleanup merged/equivalent batch | `multi-head` | branch-cleanup | REMOVED. Deleted 63 clean inactive worktrees, 64 local branches, and 2 remote branches only after `origin/main` ancestor or cherry-pick-equivalence proof. Retained the primary/current branches, all open-PR heads, 42 dirty worktrees, patch-unique or ambiguous refs, two secret-safeguarded worktrees, and two process-locked worktrees restored after removal refusal. | Fresh `git fetch --prune origin`; reconciliation preflight 209 worktrees / 42 dirty / 0 active Git operations / 0 matching worktree Node processes; verified incremental recovery bundle for 20 non-ancestor equivalent refs; no application tests or provider-backed application workflows run. | -| 2026-07-27 | branch-cleanup exact merged-head batch | `multi-head` | branch-cleanup | REMOVED. Deleted 30 additional clean worktrees and 34 additional local branches whose exact tips matched GitHub merged PR head records. Preserved the newly merged `codex/settings-ux` worktree under a recent-work grace rule, along with all checked-out, dirty, open-PR, closed-unmerged, secret-safeguarded, process-locked, or unmatched refs. | GitHub merged/open PR head inventory; exact OID match immediately before removal; no force worktree removal; no application tests or provider-backed application workflows run. | -| 2026-07-27 | branch-cleanup aged and closed-ref batch | `multi-head` | branch-cleanup | REMOVED. Deleted 36 clean branch-backed worktrees older than 72 hours while retaining their refs, then deleted 16 old temporary or exact closed-PR local refs and 11 exact closed-PR remote refs after verified recovery bundles. Restored and retained one permission-locked Antigravity worktree; retained all dirty, open-PR, recent, archive/preserve, secret-bearing, high-risk, divergent, detached, or potentially useful UI refs. | Fresh GitHub open/all/closed PR inventories; 72-hour creation/closure cutoff; exact tip checks; four verified incremental bundles for 21 refs in this pass; no force worktree removal, application tests, or provider-backed application workflows run. | -| 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-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. | -| 2026-07-25 | origin/execute-audit-remediation-plan (PR #1188 closed tip) | `8b8639113925601e1687bfe4f1f29c44a4308b61` | branch-cleanup | DELETED remote. Tip rejected (conflict markers + parse breakers); intentional maintainability work already on main via #1213 (`8e3a49d0`). IMP-04 mockup/export prune from tip commit `3bc391dff` was not ported (knip-only unexports; optional follow-up). Local Antigravity worktrees left untouched. | Content proof: notices/utils/Sheet autofocus on origin/main; tip marker count 12; `git push origin --delete execute-audit-remediation-plan`. No provider calls. | -| 2026-07-25 | `cursor/imp04-prune-dead-exports-01f2` | `4739510e8650e38e3c3a3cd2d8866dcf3abb8ab6` | IMP-04 safe port from rejected #1188 tip | READY. Ports dead-export prune for calculator/factsheet mockups + unused ui-primitives tokens. Deletes truly unused locals (not just unexport) so eslint max-warnings=0 stays green. Keeps Skeleton + commandInput focus shadow (tip incorrectly removed/changed those). Supersedes optional follow-up noted on #1188 branch-cleanup row. | typecheck; eslint on touched files. No provider calls. | -| 2026-07-25 | PR #1195 / `subagent-Asset-Optimization-Implementer-self-b295a5bb` | `c612c88aae386a29715cadfb5dbd2b95163e1dc9` | prlanded after squash merge | MERGED. Squash tip `c612c88aa` on main; remote feature branch deleted. Product content verified on main (`check:assets`, icon Cache-Control, SignedImage/non-PDF a11y). Local review worktree retained for optional cleanup. | gh pr view MERGED; two-dot product-file diff empty vs origin/main; no provider checks. | -| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | `ac056083bad351659cc970171c8cd62bbb3526a5` | Codex P2: sync recipe catalogs after prune | FIXED. Updated `.design-sync/conventions.md` + `docs/redesign/09-ui-primitives-recipes.md` (plus badge/design-system mentions) so catalogs no longer advertise deleted or module-private recipes (`insetCard`, `iconTile`, `compactMetadataRow`, `commandInput`, `toneWarningQuiet`, …). | Doc grep of catalogs vs `ui-primitives` export surface; `check:branch-review-ledger`. No provider calls. | -| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | `2c6d9c96` merge of `origin/main` `5475fcfb` | Main sync after GitHub CONFLICTING | SIMPLE. `git merge-tree --write-tree` clean before merge; GitHub DIRTY was staleness behind #1227/#1245/#1200. Ledger union auto-merge. Calculator path rename `calculator-mockups`→`calculators` detected; IMP-04 dead-export prune content carried onto new paths (`calculatorById`/`useCalculatorState` still absent). No conflicting intents; no conflict markers. | merge-tree clean; merge ort; `check:branch-review-ledger`; `tsc --noEmit` clean; no stale calculator-mockups imports. No provider calls. | -| 2026-07-26 | PR #1246 / `codex/standardize-header-and-footer-behavior` | `b51ee15e6961d46a14c288f621d25ab30a434c7d` | Explicit CI-failure review and focused repair | APPROVE pending hosted required CI. All three completed CI failures were the same new Playwright assertion: `/formulation/worry` legitimately omits the optional legacy dock backdrop, but the test required `display: none` and received `missing`; the downstream `PR required` failure was only the aggregate. Updated the test to accept absence or require `none` when rendered; no high-confidence product defect remains. | Focused Vitest 11/11; Prettier, ESLint and `git diff --check` pass; exact local Chromium rerun blocked by the shared heavyweight lock owned by another worktree, so hosted Production UI is the merge gate. | -| 2026-07-26 | PR #1256 / `codex/pr1246-header-blur-followup` | correction to `547d3a100c73333895554cf66eb0efd8d8dde8da` | CSS prefix contract correction | FIXED. Hosted Unit coverage exposed the repository guard forbidding hand-authored `-webkit-backdrop-filter`; retained the standard `backdrop-filter: none` source rule and removed the duplicate vendor declaration, which the CSS toolchain owns. This supersedes only the prior row's claim that both declarations should be authored. | Targeted `clinical-dashboard-merge-artifacts` and mobile paint contract rerun required; Production UI continued separately. | -| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | merge `origin/main` `6fd8902b` | Main sync after GitHub CONFLICTING | SIMPLE. Staleness behind #1256/#1246/#1252/#1251. `git merge-tree` clean; only overlapping path was append-only ledger. Dropped 2 exact-duplicate #1238 rows re-appended by union driver (kept earlier copies). No product conflict markers; IMP-04 prune surface unchanged. | merge-tree clean; merge ort; `check:branch-review-ledger`; no provider calls. | -| 2026-07-26 | `codex/test-concurrency-20260726` | `1b1f4817b0cf932d8b43f8715725770045528f8c` | Protected-main release-readiness review of cross-worktree test concurrency | APPROVE. Shared admission is fail-closed to explicit focused Vitest selections and isolated typechecks; full suites, lint, builds, coverage and Playwright stay exclusive with queue priority and legacy-lock compatibility. Review found and fixed one blocker before approval: junctioned worktrees would have raced the shared `node_modules/.cache` TypeScript build-info file, so shared typechecks now receive a worktree-hashed temporary `.tsbuildinfo` path. Highest residual risk is Windows cross-process filesystem timing, covered by coordinator race/recovery tests and the full local gate. | `npm run verify:pr-local` PASS: format, lint, isolated typecheck, 391 files / 3489 tests passed / 2 skipped, production build (1680 static pages), client-secret scan, and 36-case offline RAG fixtures. Focused coordinator/tooling 32/32; PDF portability 3 passed / 2 platform-or-dependency skips. No provider-backed checks. | -| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | `b3b1eb7e7084859cd18c05152be1b9f8968592ff` | Authorized babysit sweep | Fixed P1 locality-audit-out-of-pr-local + comparator-direction conflicts; typed locality accumulator; hardened citationTelemetry schema; clozapine mg-gated span. Merged `origin/main`. 10/10 threads replied+resolved (2 deferred). | Focused Vitest evidence + verify-pr-local 24/24 PASS. No provider-backed checks. | -| 2026-07-26 | PR #1248 / `cursor/fix-mode-switch-lag-22f6` | `af4908bb9bdbf7a30fc1f8ed031ef9bd75f292ef` | Authorized babysit sweep | Fixed P1 documents-search ownership + P2 reserve-reveal transition; forms readiness null-slug + private-scope hash; merged remote Suspense standalone paths. 6/6 threads replied+resolved (1 deferred boundary scan). | Focused Vitest search-route-ownership + clinical-dashboard-merge-artifacts PASS before final push; hosted CI re-running. No provider-backed checks. | -| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | `b3b1eb7e7084859cd18c05152be1b9f8968592ff` | Authorized babysit sweep | Fixed P1 locality-audit-out-of-pr-local + comparator-direction conflicts; typed locality accumulator; hardened citationTelemetry schema; clozapine mg-gated span. Merged `origin/main` (verify-pr-local conflict resolved to main shape). 10/10 threads replied+resolved (2 deferred: unit normalize, query-context wiring). | Focused Vitest evidence + verify-pr-local 24/24 PASS. No provider-backed checks. | -| 2026-07-26 | PR #1257 / `cursor/therapy-search-trim-e63e` | `b80a3810819846760e862e1d0d4aa746ae6b0237` (merged) | Authorized babysit sweep | Already MERGED to main before code changes needed; tip had correct sidebar absence assertion; 0 unresolved threads at close. | Hosted PR required + Production UI SUCCESS on merged tip. No provider-backed checks. | -| 2026-07-26 | PR #1253 / `remediate-system-audit-findings` | `cc1fa9d48434c809e2cf73dfeb3124d2b36f0968` | Authorized babysit peek | CLOSED before sweep actions. CONFLICTING vs main with clinical/answer/privacy paths; non-trivial — no merge attempted. Policy failure was missing Clinical Governance Preflight (body not agent-managed). | merge-tree conflict inventory only; no provider-backed checks. | -| 2026-07-26 | PR #1255 / `execute-audit-remediation-plan` | `cc645928cefb18e4c08870ddc1c483bc051a92b9` | Authorized babysit peek | CLOSED before sweep actions. CONFLICTING vs main including `api/answer`, ClinicalDashboard, privacy routes; non-trivial — no merge attempted. Policy failure was missing Clinical Governance Preflight. | merge-tree conflict inventory only; no provider-backed checks. | -| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | `720fd19879f6463a87ad61309b91148f90efa23e` | PR babysit: sync main, supersede stale READY row, close review thread | APPROVE pending hosted required CI. `git merge-tree --write-tree origin/main ba799d4a3cfdcb20eb1e040b5d6e328e2fbbc147` was clean, so GitHub DIRTY/CONFLICTING was stale branch drift after main advanced to `a9920e3fc29fce9ad2ffb547811e085a708680b9`; merged `origin/main` with no content conflicts. This supersedes the older 2026-07-25 READY row rather than editing append-only history; the remaining CodeRabbit ledger-check thread is dispositioned by this row and the final merge remains gated on exact-head required CI. | `npm run check:branch-review-ledger` PASS; hosted PR required, PR policy, and GitGuardian to be waited on exact pushed head; no provider-backed evals/checks. | -| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | `5de2f4cdfa707ed53145b2e39a7f283995887f85` | Authorized babysit sweep | Threads: 1 CodeRabbit ledger rewrite request dispositioned (append-only policy; hosted CI already green). Merged `origin/main` (mechanical). 0 unresolved left. | Hosted required CI previously SUCCESS on prior tip; no provider-backed checks. | -| 2026-07-26 | `codex/phone-header-hidden-edge` | `16e7bfdb33cbf05199b8044fc199ab2a9457c132` | Protected-main release-readiness review of shared phone header collapse | APPROVE. All 13 app modes release the hidden phone header and top safe area to the physical viewport edge through one scroll signal; Therapy, DocumentViewer, and Differential detail page headers portal into the same collapse track. Review found and fixed one blocker before approval: the generic flex track initially honored DocumentViewer min-content width and expanded to 383px on a 320px viewport; `min-w-0 max-w-full` now bounds both the shared track and addon host. Highest residual risk is physical iOS Safari status-bar compositing beyond Chromium's simulated safe area. | `verify:cheap` PASS; focused contracts 46/46; phone-scroll production spec 38/38 before final width guard; focused 320px page-owned headers 3/3 and DocumentViewer smoke 1/1; final `verify:ui` 308/308; `verify:pr-local` PASS including production build and 36-case offline RAG fixtures. No provider-backed checks. | -| 2026-07-26 | PR #1248 / `cursor/fix-mode-switch-lag-22f6` | pending final pushed head after ledger append | PR babysit: sync main + Codex P2 submitted-param seed | Before: GitHub reported DIRTY/CONFLICTING while `git merge-tree --write-tree origin/main 7250d6d38269b734d903f9995782a4eedeaeebcb` was clean; branch was 1 behind main with 1 unresolved Codex P2. Merged `origin/main` cleanly, dropped one exact-duplicate PR #1241 ledger row reintroduced by the union driver, and fixed the P2 by deriving standalone shell chrome from `window.location.search` via `useSyncExternalStore` before the delayed `useSearchParams` bridge hydrates. Hosted CI, thread reply/resolution, and squash merge to main remain the final babysit gates. | `npm run test -- --run tests/search-route-ownership.test.ts` PASS (12/12); `npm run lint` PASS; `npm run check:branch-review-ledger` PASS; `npm run verify:cheap` PASS (393 files; 3505 passed / 5 skipped); no provider-backed checks. | -| 2026-07-26 | PR #1248 / `cursor/fix-mode-switch-lag-22f6` | pending final pushed head after UI CI fix | PR babysit: Production UI failure fix | Supersedes the prior PR #1248 babysit row for hosted CI closeout. Production UI failed only on two branch-adjacent chrome tests after the P2 fix: restricted the browser query fallback to submitted searches (`run=1` + `q/query`) so route-owned query pages do not adopt submitted chrome, and aligned the phone-scroll reserve-transition assertion with the `data-reserve-transitioning` marker for no-dock/expired-marker states. | Hosted log diagnosis from run `30187649755`; local exact Chromium production rerun `npm run test:e2e:pr -- tests/ui-phone-scroll.spec.ts tests/ui-tools.spec.ts --grep "formulation/builder\\?mechanism=rumination\|differentials presentation comparison"` PASS (2/2); no provider-backed checks. | -| 2026-07-26 | `codex/phone-header-hidden-edge` | `31608d98a578b9311c3cec2d66b6ba7c37809c0c` | Superseding release-readiness review after main sync | APPROVE. Merged current `origin/main` at #1248 and resolved the sole content conflict by retaining its extracted DocumentViewer PDF/chrome-scroll hook together with the page-header collapse portal. The sync exposed and fixed one stale Therapy static assertion that had accidentally depended on the removed Therapy-only slot conditional; it now tests the route-ownership helper directly. No unresolved findings remain. Highest residual risk remains physical iOS Safari status-bar compositing beyond Chromium's simulated safe area. | Focused merged-head contracts 54/54; phone-scroll production spec 38/38; `verify:cheap` PASS; final `verify:ui` 308/308; `verify:pr-local` PASS including production build and offline RAG fixtures. No provider-backed checks. | -| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `a2c1a2739afd41fddc648d28eabef106d60e553c` | Hosted Production UI failure triage and test hardening | APPROVE pending exact-head required CI. Hosted Chromium passed 307/308; the sole failure was a strict locator seeing both the live service detail and a hidden Next streaming `S:` clone, the same known class already scoped for the differential presentation test. Scoped the service assertion to `mobile-composer-reserve-pad` without weakening the page or clearance assertions. Also accepted CodeRabbit's non-blocking whitespace-insensitive static-test nitpick. No product defect or unresolved review thread remains. | Hosted run `30189929594` diagnosis; exact focused production Chromium service-detail test 1/1; header contract 15/15; Prettier, focused ESLint and `git diff --check` PASS. Required CI rerun pending; no provider-backed checks. | -| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | code fix `ee6a56bd0fc08ded140c36b5de213bda40d93179` | PR babysit: main sync + P1 inclusivity/static/build fix | Supersedes the earlier #1254 sweep rows for the new head after main advanced to `dbcd4cea605ee7f5af8f2f9b5ff22d18385131ea`. Before: GitHub reported DIRTY/CONFLICTING, PR policy failed missing RAG/clinical body, Static failed Prettier, Build/Production UI failed typecheck, and Codex P1 thread `3651695530` was unresolved. `git merge-tree --write-tree origin/main 91aeb19d4d4856a3aa120265d3602414b472e19a` was clean, so merged `origin/main` without conflicts; fixed threshold inclusivity (`<`/`<=`, `>`/`>=` stay distinct), source-open telemetry types, missing `onOpenSource`, missing `SourceGovernanceWarning` export, and lint/Prettier issues. PR body/thread resolution/squash merge still require GitHub write tooling unavailable in this Cursor run, so DO NOT MERGE until those are completed and hosted required CI is green. | Focused Vitest evidence/source metadata 67/67 PASS; `npm run typecheck` PASS; `npm run format:check` PASS; `npm run lint` PASS; `npm run build` PASS; `npm run check:rag:fixtures` PASS; `npm run check:production-readiness` failed only for missing local Supabase/OpenAI env secrets. No provider-backed evals/checks run. | -| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | pending pushed head after CodeRabbit follow-up | PR babysit: evidence false-positive hardening | Follow-up to the prior #1254 row after CodeRabbit re-opened evidence threads on the pushed head. Fixed scoped source-governance issues: bare `clozapine` now only binds its own dose comparator when the captured threshold is mg-qualified; table/prose same-value unknown comparator is compatible with known comparator; cross-source conflicts require document-level disagreement rather than one internally inconsistent document plus another source repeating one side. Production UI hosted failure was a single `/tools` strict-locator browser flake; exact local production rerun passed. PR body metadata and reply/resolve remain blocked by missing GitHub write tooling in this run. | `npm run test -- tests/evidence.test.ts` PASS (26/26); `npm run typecheck` PASS; `npm run lint` PASS; `npm run build` PASS; `npm run check:rag:fixtures` PASS; exact local `npm run test:e2e:pr -- tests/ui-tools.spec.ts --grep "mode home search is centered at desktop width on /tools"` PASS (1/1). No provider-backed checks run. | -| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | pending pushed head after Production UI locator hardening | PR babysit: Production UI strict-locator rerun fix | Hosted Production UI failed twice on different `tests/ui-tools.spec.ts` strict locators because duplicated page containers under `mobile-composer-reserve-pad` made `getByTestId(...)` ambiguous in full-suite browser state. Product code unchanged; tests now scope to visible/current page containers and the metrics helper measures a visible home container. PR body metadata and review-thread reply/resolve still require GitHub write tooling unavailable in this run. | Exact local production rerun `npm run test:e2e:pr -- tests/ui-tools.spec.ts --grep "mode home search is centered at desktop width on /tools\|13YARN service detail is usable at mobile"` PASS (2/2). No provider-backed checks run. | -| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | `5b616da1f84ffde127473e327e3ab63369244749` | PR babysit: ledger duplicate clarification | Clarifies the CodeRabbit duplicate-ledger thread without rewriting append-only history: the later `b3b1eb7e7084859cd18c05152be1b9f8968592ff` row at prior line 1072 is a superseding clarification of the earlier same-commit #1254 row, not a second independent sweep. PR body metadata and review-thread reply/resolve still require GitHub write tooling unavailable in this run, so DO NOT MERGE until those are completed and hosted required CI is green. | `npm run check:branch-review-ledger` required after this append; no provider-backed checks run. | -| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `1166fcff041c7f7e3e59bbef9e758307e3b0b89e` | Automated main sync after #1254 | APPROVE pending exact-head required CI. The repository branch-sync workflow merged `origin/main` `4d54abfa4d467b16e5e2f0fe3f16b8b3b52bc967` with a clean merge tree. Feature scope is unchanged; the only overlapping task-adjacent file was `tests/ui-tools.spec.ts`, where main's visible-root hardening and this PR's live service-shell scope both remain intact. No new product conflict or review finding. | `git merge-tree --write-tree` clean; three-dot feature inventory reviewed; branch-review-ledger guard PASS; focused header/Therapy contracts 23/23; exact-head hosted CI pending. No provider-backed checks. | -| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `e2037303151fc187953f9f6da025e2d919fe25bd` | Final Codex P2 focus-safety review | APPROVE pending exact-head required CI. Fixed the actionable P2 by bridging native `focusin`/`focusout` from the real phone addon DOM host into the shared header focus pin, because React portal events follow the source tree. A focused DocumentViewer or Differential header control can no longer collapse and clip during scroll. No other unresolved product finding remains. | Typecheck and `verify:cheap` PASS (393 files; 3514 passed / 2 skipped); focused production regression 1/1; complete phone-scroll suite 39/39; full `verify:ui` 308/309 with one unrelated short-runway geometry outlier, then exact failed smoke rerun PASS 1/1. No provider-backed checks. | -| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `a82713dc2699969efbfef10a39bdfa11565bec4e` | PR babysit: main sync + Codex P2 focus fix | Before: assigned `3300f94b911358eb91c16cf3e73d3c4440809b73` was GitHub DIRTY/CONFLICTING while `git merge-tree --write-tree origin/main 3300f94b911358eb91c16cf3e73d3c4440809b73` was clean, Production UI was pending, and there were 0 unresolved threads. Merged `origin/main` cleanly and pushed; a later Codex P2 found portaled phone header addon focus could collapse. Fixed by forwarding `PhoneHeaderCollapsePortal` focus to `MasterSearchHeader` and updating static/phone UI guards. Thread is fixed and outdated but left unresolved because `gh api graphql` reply failed `Resource not accessible by integration`; no GitHub write-capable MCP tool was available. Normal squash merge was blocked by base branch policy; no `--auto`/`--admin` used. | Local `npm run test -- tests/header-scroll-hide-contract.test.ts` PASS (15/15); focused production Chromium `npm run test:e2e -- tests/ui-phone-scroll.spec.ts --project=chromium --grep "phone portaled addon focus pins"` PASS (1/1); targeted Prettier PASS; hosted PR required, Unit coverage, and Production UI PASS on `a82713dc`. No provider-backed checks. | -| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `cceea70588d50d3f119394e93e50f7b38ed6f920` | Superseding P2 implementation review after parallel branch merge | APPROVE pending exact-head required CI. Merged the concurrently advanced PR branch without force or rebase. Both sides fixed the same portal-focus defect; the resolved tree retains the native listener on the actual addon DOM host and removes the document-global custom event, which could clear the universal header focus pin during unrelated desktop mutations. Retained the stronger static and browser assertions from the remote branch. No unresolved code conflict or product finding remains. | Merge conflicts limited to the duplicate focus implementations and duplicate UI test; TypeScript PASS; header-scroll contracts 15/15; focused production Chromium regression 1/1. Earlier exact local tree: `verify:cheap` PASS and phone-scroll 39/39. No provider-backed checks. | -| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `d7f1ac58d00d20a2405eb1641054d31c3a5b996e` | Final focus lifecycle remediation review | APPROVE pending exact-head required CI. Addressed the final CodeRabbit and Codex P2 lifecycle findings: the addon host is now tracked as state so listeners follow conditional host creation/replacement, focus is recomputed on attach, a scoped MutationObserver clears the pin when focused portal content unmounts without focusout, and cleanup clears the latch. The phone regression now activates the focused Back link with Enter and proves the destination header can hide again. No unresolved code finding remains locally. | Focused production Chromium focus-and-navigation regression 1/1; complete phone-scroll suite 39/39; header-scroll contracts 15/15; TypeScript PASS; `verify:cheap` PASS (393 files; 3514 passed / 2 skipped). No provider-backed checks. | -| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | `482d6f2489c9ca1ee4603f0013bd9b3190a2cc36` | Superseding lifecycle resolution after concurrent branch merge | APPROVE pending exact-head required CI. Merged the concurrently advanced lifecycle fix without force or rebase. The resolved tree uses a stable callback ref, explicit collapse-strategy ownership, active-element synchronization on attach, scoped subtree observation, and cleanup clearing. Kept separate browser cases for focus pinning and keyboard-navigation teardown so each contract fails independently. No unresolved code conflict or local finding remains. | Header-scroll contracts 15/15; TypeScript PASS; focused production Chromium lifecycle cases 2/2. Immediately preceding equivalent lifecycle tree: phone-scroll 39/39 and `verify:cheap` PASS; final exact-head cheap gate follows this record. No provider-backed checks. | -| 2026-07-26 | PR #1255 / `execute-audit-remediation-plan` | `cc645928cefb18e4c08870ddc1c483bc051a92b9` | open-PR babysit sweep: close without merge | CLOSED (not merged). Unsafe #1188 lineage: ~507 behind, merge-tree dirty, literal `>>>>>>> theirs` in `evidence-panels.tsx`, dangling `renderSystemNotice`. Intentional maintainability already on main via #1213. | Marker/dangling-call grep on tip; merge-tree conflict inventory; no provider-backed checks. | -| 2026-07-26 | PR #1253 / `remediate-system-audit-findings` | `cc1fa9d48434c809e2cf73dfeb3124d2b36f0968` | open-PR babysit sweep: close without merge | CLOSED (not merged). ~507 behind with real merge-tree conflicts across answer API/evidence/tests/docs; PR policy missing governance/RAG impact. Salvageable ideas need clean rebuild on main, not this tip. | merge-tree conflict inventory; no provider-backed checks. | -| 2026-07-26 | PR #1257 / `cursor/therapy-search-trim-e63e` | head `b80a3810819846760e862e1d0d4aa746ae6b0237` / squash `024ebffdf753b8487af4615768d19d882b27d2b7` | prlanded after squash merge | LANDED. Therapy search intro/local query field removed; Codex sidebar assertion thread resolved on tip. Remote branch deleted by merge. | Hosted Production UI + PR required SUCCESS; merge-tree clean; no provider-backed checks. | -| 2026-07-26 | PR #1212 / `cursor/pr1196-coalesce-main-4711` | head `b88d69bb1dc1aa6c6ca8f34f3df3641801b60bd0` / squash `a9920e3fc29fce9ad2ffb547811e085a708680b9` | prlanded after squash merge | LANDED. Search/embedding coalesce poison + fractional PDF pixel budget on main. GitHub CONFLICTING was stale drift; merge-tree clean before sync. Remote branch deleted by merge. | Hosted PR required/Production UI/Unit/Build/Static SUCCESS on tip; no provider-backed checks. | -| 2026-07-26 | PR #1241 / `cursor/imp04-prune-dead-exports-01f2` | head `7f9c56c148fbd743ea3b48fe86c67461c42fc0f4` / squash `5d6f06156f0370427361343f249bf1d7f180e874` | prlanded after squash merge | LANDED. IMP-04 dead mockup/primitive export prune intact on main. CodeRabbit ledger thread dispositioned. Remote branch deleted by merge. | Hosted PR required/Production UI/Static/Unit/Build SUCCESS; `git diff` tip vs main empty; no provider-backed checks. | -| 2026-07-26 | PR #1248 / `cursor/fix-mode-switch-lag-22f6` | head `83419c98fea9385df9beb10a9062d2dc7289f0f0` / squash `dbcd4cea605ee7f5af8f2f9b5ff22d18385131ea` | prlanded after squash merge | LANDED. Mode-switch lag/portal keep-alive; Documents cross-mode ownership fixed; submitted-param hard-load P2 seeded for `run=1`+query only. Codex thread resolved then squash-merged. Remote branch deleted by merge. | Hosted PR required/Production UI/Static/Unit/Build SUCCESS; verify:cheap PASS pre-merge; no provider-backed checks. | -| 2026-07-26 | PR #1254 / `apply-audit-remediation-fixes` | head `b5aa92f0febbd0425c5f3d809356946a7d2371f5` / squash `4d54abfa4d467b16e5e2f0fe3f16b8b3b52bc967` | prlanded after squash merge | LANDED. Provenance/governance UI tokens, citation telemetry, threshold inclusivity (`lt`/`lte`/`gt`/`gte`), locality audit kept out of offline pr-local. Supersedes earlier DO NOT MERGE babysit rows after thread resolve + green CI. Remote branch deleted by merge. | Hosted PR policy/PR required/Static/Unit/Build/Production UI/Migration SUCCESS; Codex P1 thread resolved; no provider-backed evals. | -| 2026-07-26 | PR #1259 / `codex/phone-header-hidden-edge` | head `0025d17a2c8c727d4e6cf44ae368f6448a84eeba` / squash `ecf54db378c8081b36c8fd62eaadbd716a1750c8` | prlanded after squash merge | LANDED. Edge-to-edge phone header collapse + shared hide/reveal + portaled addon focus lifecycle. Supersedes earlier blocked babysit rows. Remote branch deleted by merge. | Hosted PR required/Production UI/Unit/Build/Static SUCCESS; focused phone-scroll/header contracts PASS; no provider-backed checks. | -| 2026-07-26 | open-PR babysit sweep (Cursor) | `origin/main` @ `ecf54db378c8081b36c8fd62eaadbd716a1750c8` | triage + close + sequential land | Queue cleared. Closed #1255/#1253 as unsafe/superseded. Squash-merged useful #1257, #1212, #1241, #1248, #1254, and late-arriving #1259 after CI green + thread triage. Open PR count 0 at closeout. | Per-PR hosted required CI green at merge; merge-tree used to classify GitHub CONFLICTING as staleness vs real conflicts; no provider-backed checks. | -| 2026-07-26 | `codex/phone-footer-glass` | `5ad4f8b28` | Final phone footer glass and scroll-stability review | APPROVE. Replaced the opaque phone footer/safe-area slab with localized translucent glass across shared docks and page-owned calculator/document composers; hidden chrome releases paint, pointer ownership, and reserve. Final review found and fixed calculator reserve under-budgeting plus Chromium scroll anchoring feedback, with insufficient-runway collapse refusal and sufficient-runway frame-monotonic hide/reveal. No P0-P3 findings remain. Highest residual risk is physical iOS/WebKit safe-area and momentum compositing beyond simulated Chromium. | `verify:cheap` PASS (393 files; 3518 passed / 2 skipped); focused Services/Calculators and calculator transition Chromium PASS; `verify:ui` production build 312/313 with the sole unchanged Answer short-runway geometry outlier immediately passing exact rerun 1/1; final diff review APPROVE; no provider-backed checks. | -| 2026-07-26 | `codex/phone-footer-glass` | `7e4fd1a23` | Review-follow-up and CI hydration-race review | APPROVE. Scoped the expanded collapse runway only to combined in-flow header plus reserve owners, cleared the calculator dock focus latch after sheet teardown, and made mode-home UI assertions wait for one settled owner during production hydration. Both automated review threads were addressed and resolved. No P0-P3 findings remain; physical iOS/WebKit compositing remains the only material unverified surface. | `verify:cheap` PASS; focused scroll-hide/static contracts 25/25 PASS; focused calculator teardown/geometry Chromium 3/3 PASS; affected mode-home production Chromium 5/5 PASS; no provider-backed checks. | -| 2026-07-27 | `codex/phone-footer-paint` | `e1657a4a4e3e25b4a35a1dcf544b3efddb123c3f` | Protected-main release-readiness review of phone footer safe-area paint | APPROVE. The prior footer remained visually opaque because its normal/fallback terminal tints reached 72-90%, all blur masks painted through the physical edge, and hidden WebKit paint had no explicit terminal visibility state. The shared dock now has bounded localized tint, transparent gradient/mask terminals, an 88% pill, and delayed `visibility: hidden` synchronized to the 240ms exit; reduced-motion hides immediately. Therapy and calculator ownership prove the standard shared behavior. No P0-P3 finding remains. Highest residual risk is physical iOS momentum/compositor behavior beyond local WebKit emulation. | `verify:cheap` PASS (393 files; 3518 passed / 2 skipped); focused Therapy Chromium + WebKit PASS; calculator shared-dock Chromium + WebKit PASS; `verify:ui` PASS (314/314); `verify:pr-local` PASS including production build/client-secret scan and 36-case offline RAG fixtures; no live provider-backed checks. | -| 2026-07-27 | `codex/phone-bottom-band-root-20260727` | `a8efe4a08f00a2365e2035f83ce2128ec680576f` | Protected-main release-readiness review of the shared phone viewport shell | APPROVE. The remaining bottom band clipped live result content above the hidden dock because both phone application owners used viewport-sized fixed roots, a physical-iOS paint path that can disagree with correct DOM geometry. Both owners now share a bounded in-flow dynamic-viewport shell; hidden reserve remains zero, the last viewport pixel remains content-owned, and viewport resize preserves the reading offset. No P0-P3 finding remains. Highest residual risk is physical-device iOS compositing beyond desktop WebKit emulation. | `verify:cheap` PASS (393 files; 3519 passed / 2 skipped); focused Therapy and dashboard production WebKit PASS; `verify:ui` PASS (314/314); `verify:pr-local` PASS including production build/client-secret scan and 36-case offline RAG fixtures; no live provider-backed checks. | -| 2026-07-27 | `codex/phone-bottom-band-root-20260727` | `a8a72a43d` | CI follow-up review of calculator dock hide lifecycle | APPROVE. Hosted production Chromium exposed a fast-close race where effect cleanup could cancel the queued focus-latch reset, plus a paint-contract journey coupled to natural short-page geometry. The reset now survives rapid sheet teardown, actual input focus is asserted before hide, and explicit runway isolates the paint contract from the anti-clamp boundary tests. No P0-P3 finding remains. | Exact locked Next 16.2.11 / Playwright 1.61.1 production Chromium repeat PASS (20/20); `verify:cheap` PASS (393 files; 3519 passed / 2 skipped); no provider-backed checks. | -| 2026-07-27 | `codex/phone-bottom-band-root-20260727` | `cc63ee90928d402eb9c5dd241e411ed88cc01f27` | Hosted Applications search hydration follow-up review | APPROVE. The final hosted Chromium failure was a test synchronization race: server-rendered content was visible before the controlled global-search input had its React onChange handler, so hydration could discard an immediate fill. Both shared-search tests now wait for the React handler and assert the accepted value before checking filtering. No product behavior changed and no P0-P3 finding remains. | Exact locked Next 16.2.11 / Playwright 1.61.1 production Chromium repeat PASS (20/20); `verify:cheap` PASS (25 gates; 393 files; 3519 passed / 2 skipped); no non-GitHub provider-backed checks. | -| 2026-07-27 | `codex/phone-bottom-band-root-20260727` | `a4802b9373404a00549a3479d86340398e978cc8` | Automated review follow-up for phone viewport fallback layering | APPROVE. Verified the review finding and separated the baseline 100vh declarations from the supported 100svh override, while retaining the later 100dvh override as the preferred dynamic viewport size. This removes duplicate properties without changing the intended fallback order. The ledger date remains the Australia/Perth task completion date. No P0-P3 finding remains. | Focused viewport-shell static contract PASS (8/8); `git diff --check` PASS; prior full `verify:cheap` and hosted required CI were green before this CSS-only declaration-layering follow-up; no non-GitHub provider-backed checks. | -| 2026-07-27 | `codex/fix-phone-bottom-edge-20260727` | `2cfd726843e034620091c9bb400640cce0fa40d3` | Superseding review of the physical-iOS phone bottom-edge regression | APPROVE pending broad local gates and physical staging acceptance. PR #1266 restored a phone `100dvh` shell and moved the primary regression away from Services, so Chromium parent geometry stayed green while Safari and a freshly relaunched standalone PWA clipped live result content above the physical edge. Both application owners now share a phone-only fixed `inset: 0` shell without a viewport-unit height clamp. The repaired Services journey requires the real result list to own the final pixel and preserves its pre-resize anchor through viewport shrink and expansion. No P0-P3 code or test finding remains. | TDD RED on the base shell (`relative` instead of `fixed`); exact Services Chromium GREEN (1/1); focused shell contracts GREEN (19/19); full Vitest GREEN (393 files, 3520 passed / 2 skipped); independent spec and quality reviews PASS; physical Safari/Home Screen staging proof and broad local gates pending; no provider-backed checks yet. | -| 2026-07-27 | `codex/fix-phone-bottom-edge-20260727` | `3f33b0b4b7c08dab74ba6685fbd6aa672a8e6c91` | Final review of browser and standalone phone edge ownership | APPROVE pending exact staging device acceptance. Supersedes the `2cfd7268` review after physical Safari and cold-launch PWA evidence disproved the fixed-root solution. Browser phones now use document scrolling so Safari can minimize its chrome and paint content through released top and bottom edges; standalone phones retain a bounded 100vh frame with page-owned calculator, DocumentViewer, and differential footers portaled outside the inner scroller. Hidden chrome releases reserve, opacity, hit testing, and last-pixel ownership without a backward scroll jump, while sm+ returns portal content inline. Independent final review found no P0-P3 issue. | `verify:cheap` PASS (393 files; 3526 passed / 2 skipped); focused static contracts PASS (43/43); exact new standalone and responsive production Chromium journeys PASS (4/4); `verify:ui` PASS (323/323); Prettier and `git diff --check` PASS; physical Safari and freshly relaunched Home Screen PWA staging proof pending; no live provider-backed verification. | -| 2026-07-27 | `codex/config-reconciliation-current-20260727` | `4400f59730fbd24efc5f4c54adda828506f3835b` | Protected-main review of #054 production configuration reconciliation | APPROVE. GitHub reads are repository-pinned; Railway reads are pinned to the live project, production environment and explicit app/worker services; each provider call has a 30-second bound; output is names-only even though Railway JSON is reduced from values in memory. Multiline Zod and `.env.example` drift are guarded. The correct primary checkout received only three generated gitignored local HMAC/probe values. No P0-P3 finding remains. Residual staging, webhook activation and legal/ZDR work remain #056, #025 and #053 rather than being overstated as complete. | Focused parity/local-presence 22/22 PASS; `verify:cheap` PASS (25 gates; 393 files; 3523 passed / 2 skipped); `verify:pr-local` PASS (same unit matrix + 36 offline RAG fixtures; build correctly skipped as unaffected); production-readiness READY (8 PASS, 2 checkout-file-location warnings); exact provider names-only GitHub/Railway parity PASS; Ops Digest active + latest schedule SUCCESS; Railway app/worker latest deploy SUCCESS; Supabase read-only cron/Vault-name proof; no OpenAI request or live RAG evaluation. | -| 2026-07-27 | PR #1271 / `codex/config-reconciliation-current-20260727` | `ada836d167f6a03f2a6514d56d3aee6304c6276c` | Automated-review follow-up for cross-worktree local fill persistence | APPROVE. The P2 was valid: caller-only process secrets could hide missing target-file values during `--root --fill`. Fill mode now computes persistent gaps from target env files while project identity still uses the merged file/process view; report mode retains its existing process override behavior. A dedicated contract proves all caller-only fillable values remain target-file gaps. No other P0-P3 finding remains. | Focused `tests/local-presence.test.ts` PASS (10/10); exact primary `check:local-presence -- --root C:\Dev\Apps\Database` PASS; Prettier + `git diff --check` PASS; earlier exact-tree `verify:cheap` and `verify:pr-local` remain the broad baseline; hosted required checks will rerun on this follow-up. | -| 2026-07-27 | PR #1271 / `codex/config-reconciliation-current-20260727` | `3321c1eb1f2d1ac4294caf40e09a63b74fe1f713` | Second automated-review follow-up for safe local fill targeting/reporting | APPROVE. Two valid P2 findings were fixed: an explicit root must now carry the Database package identity before any fill, and fill mode applies file-only state solely to writable HMAC/probe gaps while preserving merged process/file truth for report-only provider rows and project identity. Tests cover an unrelated package root, caller-only fillable values, and caller-only provider reporting. Zero unresolved local findings remain. | Focused `tests/local-presence.test.ts` PASS (11/11); exact primary presence PASS; unrelated-root CLI rejection PASS; Prettier PASS; hosted required checks and automated review must rerun on this head before merge. | -| 2026-07-27 | PR #1270 / `codex/fix-phone-bottom-edge-20260727` | `40d7cb1e4e934b47e96e9d7d8cea6a956472c12c` | Final automated-review follow-up for phone chrome scroll ownership | APPROVE. Three valid minor review findings were fixed: the latest scroll reporter now uses the commit-synchronized event-callback abstraction instead of mutating a ref during render; the 1024px focus regression proves bounded `main` ownership before and after scrolling; and paired answer geometry reads are ordered instead of raced. The component remains within its no-growth budget, visible edge geometry is unchanged, and no P0-P3 finding remains. | `verify:cheap` PASS (25 gates; 393 files; 3532 passed / 2 skipped); focused scroll contracts PASS (32/32); exact affected production Chromium journeys PASS twice (4/4 each); scoped ESLint, maintainability budget, Prettier, and `git diff --check` PASS; no non-GitHub provider-backed checks. | -| 2026-07-27 | PR #1270 / `codex/fix-phone-bottom-edge-20260727` | `931f7cef632921b0e41d0368ad4e5fc117221498` | Hosted Production UI hydration-settlement follow-up | APPROVE pending fresh hosted required checks. The full hosted Chromium matrix exposed one missed strict-locator guard: `/forms` can briefly overlap its server and settled client mode-home trees during production hydration. The test now applies the same one-owner convergence assertion already used by the adjacent shared-home loop, so a transient duplicate waits while a persistent duplicate still fails. No product behavior or edge geometry changed, and no P0-P3 finding remains. | First hosted run: 322/323 Chromium journeys PASS with the sole `/forms` strict-mode duplicate; exact failed production journey PASS 10/10 after the guard; scoped ESLint, Prettier, and `git diff --check` PASS; fresh hosted required checks pending; no non-GitHub provider-backed checks. | -| 2026-07-27 | `codex/remaining-safe-fixes-20260727` | `37c1fd9a10fc953013ef9bdbcff9d2bad681dab4` | Protected-main review of focused document-search timeout and reconciliation evidence | APPROVE. The staging tenancy failure was reproduced against the 750 ms federated timeout, then fixed by restoring the historical 6,000 ms budget only when documents are the sole requested domain; multi-domain requests retain the 750 ms cap. The diff does not change retrieval, ranking, ordering, aliases, scores, ownership, or selected results. Current canary, production-content, staging-boundary, and migration-gap evidence is recorded without overstating the remaining browser or schema work. No P0-P3 finding remains. Residual operational risk is the exact 23-migration staging reconciliation and post-merge tenancy proof. | Red/green fake-timer contract PASS; focused search/RAG tests 77/77; offline RAG 36 cases / 309 tests PASS; production-readiness READY (8 PASS, two isolated-checkout file warnings); `verify:cheap` PASS (25 gates); `verify:pr-local` PASS (393 files, 3,526 passed / 2 skipped, production build/client-secret scan, 36 offline RAG fixtures); no new live RAG dispatch or OpenAI spend. | -| 2026-07-27 | `codex/retire-bot-branch-sync-20260727` | `1f391140066ed6b677812a384f60e175c069fd47` | Protected-main review of #082 PR branch-sync reliability | APPROVE. Removed the automatic `GITHUB_TOKEN` update workflow that repeatedly created bot-authored heads with required checks awaiting approval. The replacement remains operator-only and dry-run by default, fixes the helper's raw-text/JSON repository parsing defect, verifies apply identity, and refuses missing or bot identities before any mutation. The ordinary GitHub Actions check rejects direct API/CLI updates and indirect apply-helper invocation from workflows. Guidance and the durable ledger agree. No P0-P3 finding remains. | `check:github-actions` PASS with direct/indirect self-tests; operator dry-run PASS across 8 open PRs with zero updates; focused helper contracts 7/7 PASS; docs index/scripts/links PASS; `verify:cheap` PASS before final helper hardening; exact final `verify:pr-local` PASS (393 files, 3,530 passed / 2 skipped, offline RAG fixtures; build correctly skipped); no provider mutation, OpenAI request, or live RAG spend. | -| 2026-07-27 | `codex/settings-ux` | `57b64668835269e7931b81ef9bbab5a8c7494c87` | Protected-main release-readiness review of responsive settings UX | APPROVE. The settings sheet now keeps clinical fields stacked through phone and tablet widths, uses one responsive dismiss control, consolidates account context, and replaces repeated inactive copy with shared accessible section notes. Focused review found no P0-P3 issue and no retrieval, ranking, clinical-output, or provider behavior change. Residual risk is physical iOS Safari rendering, which was not available locally. | `workflow:design-sweep -- --write-evidence` PASS; focused ESLint and typecheck PASS; targeted settings production Chromium PASS; `verify:cheap` PASS (25 gates; 393 files; 3,538 passed / 2 skipped); exact integrated-head `verify:pr-local` PASS (runtime, formatting, lint, typecheck, 3,538 passed / 2 skipped, production build/client scan, offline RAG fixtures); `verify:ui` 322/323 PASS with one unrelated desktop stress timeout, then the exact failed stress journey PASS 1/1 in isolation; `git diff --check` PASS; no non-GitHub provider-backed checks. | -| 2026-07-27 | `claude/clinical-kb-pwa-review-asi3wb` (PR #1050: eval cost readout fix + issues-ledger capture) | `eb1046be132d8e94d9d6b4905d7e240a99f33187` | Retrospective disposition row for PR #1050 (omitted at merge time; ride-along from the 2026-07-26 scheduled-runs reader) | MERGED 2026-07-22 as squash `9fb9bc7`. External reviews dispositioned pre-merge: one Codex P2 and one CodeRabbit Major converged on the same defect (zero-usage cases with a provider attempt must stay `n/a`, not `$0`) plus two CodeRabbit ledger Minors and a real merge conflict against #1049's concurrent ID allocation — all resolved in `eb1046b` (provider-attempt cost branch; issue rows renumbered #018-#023, next-id 024), threads resolved and confirmed by the reviewer. Cost readout subsequently validated live twice: merged-main canary `30018289898` (2026-07-23) and scheduled run `30216191889` (2026-07-26, Estimated cost USD 0.235936; 9 priced + 35 provably-zero-cost cases, no `n/a`), archiving issue #020. | PR CI green at merge (squash auto-merge armed by the user); post-merge validation read-only from hosted run logs; tests 28/28 on `tests/eval-quality.test.ts` plus typecheck and prettier at `eb1046b`; no provider dispatch or live RAG spend for this row. | -| 2026-07-27 | `codex/publish-document-nav-20260727` (PR #1278) | `71d442e7921c36fe036128207c9925484a908fd0` | Protected-main review of preserved cleanup records, reusable review prompts, and document navigation mockups | APPROVE pending final exact-head hosted required checks. The unique preserved work was transplanted onto current `origin/main`; stale phone-chrome and unsafe 15-minute lock-expiry patches were excluded. The first hosted static run found arbitrary mockup font sizes, which were replaced with the established named type-scale tokens. Review found no remaining P0-P3 issue and no retrieval, clinical-output, provider, or production-route behavior change. | Flight plan, Prettier, docs index/scripts/links, sitemap, branch-ledger, type-scale, icon-scale, brand, design-system, and `git diff --check` PASS; hosted build, static, unit coverage, advisory mockup UI, safety, policy, Semgrep, and secret checks PASS on reviewed head; Production UI pending at ledger append; local heavy gates deferred behind legitimate shared exclusive owners; no non-GitHub provider-backed checks. | -| 2026-07-28 | `codex/search-performance-correctness-20260727` | `7ae4eb49339fc334540912c173a7d2bed4dd5a8b` | Local integration review of Documents and shared-search correctness and latency fixes | APPROVE. Removed the sequential document typeahead enrichment query, deferred narrow-screen cross-mode requests until expansion, prefetched only the mode a user targets, separated in-document search from answer generation, keyed results to their response query, and made document matching boundary-aware. Local `main` was one disjoint documentation/mockup commit ahead; `git merge-tree --write-tree` and the no-commit merge were clean with no overlapping feature paths. No P0-P3 finding remains. Residual risk is live Supabase/OpenAI behavior, which was intentionally not exercised. | Feature `verify:cheap` PASS (25 gates; 393 files; 3,543 passed / 2 skipped); feature `verify:pr-local` PASS including production build/client-secret scan and 36 offline RAG fixtures; full feature Chromium 321/323 exposed two follow-ups, then exact final production Chromium PASS 3/3; feature final TypeScript PASS; focused search regressions PASS 186/186 before commit and again on the integrated tree. Integrated primary typecheck was not completed: its stale generated `.next/dev/types` cache was malformed, then coordinator leases blocked clean reruns; no tracked-source typecheck failure occurred. No provider-backed checks. | -| 2026-07-27 | `codex/phone-chrome-testing-infra-20260727` | `f50bb000cd9addf98086cfccc07e25aa327be022` | Protected-main release-readiness review of phone-chrome testing infrastructure | APPROVE pending exact-head hosted required checks. Added installed-lock parity, risk-scoped phone verification, one-owner and atomic geometry helpers, stable chrome diagnostics, physical iPhone acceptance guidance, and a fail-closed final merge audit. The full Chromium run exposed a stale endpoint assertion while chrome changed the document range; the test now re-converges the endpoint without weakening its one-pixel contract. Current `origin/main` merged cleanly; its new Playwright matcher is mockup-only and does not alter the tested production project. No P0-P3 finding remains. Residual acceptance risk is physical Safari and cold-launch PWA paint, which was not available locally. | `verify:phone-chrome` PASS: contracts 91/91, focused phone journeys 12/12, full Chromium 323/323; exact repaired differential journey 1/1; Prettier, ESLint, typecheck, full unit 396 files / 3,554 passed / 2 skipped, production build/client-secret scan, offline RAG fixtures 36 cases, and `git diff --check` PASS; no live provider-backed app checks. | -| 2026-07-27 | PR #1279 / `codex/phone-chrome-testing-infra-20260727` | `9aa0416313addaa9fc3a850c699b0e51f3a14c6c` | Hosted Production UI split-owner and hydration follow-up | APPROVE pending fresh exact-head hosted checks. The retained CI traces proved the calculator footer and frame header could independently accept or reject the same scroll event under slower RAF scheduling. Page-owned calculator chrome now consumes the frame's authoritative hide decision, with local reporters only as a shell-less fallback. A separate desktop smoke timeout filled a controlled input before React attached `onChange`; the shared fill helper now establishes that handler boundary before all 16 answer journeys. No assertions were relaxed and no P0-P3 finding remains. Residual acceptance risk remains physical Safari and cold-launch PWA paint, which was not available locally. | Final `verify:phone-chrome` PASS: installed/lock parity, runtime, contracts 92/92, focused phone journeys 12/12, full Chromium 323/323; exact two calculator regressions plus desktop hydration journey PASS 3/3; Prettier, typecheck, production builds, and `git diff --check` PASS; no non-GitHub provider-backed checks. | -| 2026-07-27 | PR #1279 / `codex/phone-chrome-testing-infra-20260727` | `d6d76f9b61479997f747ddd45767d81b851e207c` | Exact-main sync review after hydrated-interaction test hardening | APPROVE pending fresh exact-head hosted checks. Current `origin/main` merged with one test-only overlap in the differential compare endpoint journey. The resolution preserves main's handler-readiness guard and 15-second live-endpoint convergence while keeping the feature branch's atomic document-owner assertion. Main's remaining hydrated-interaction changes merged automatically; no production component, phone geometry, or retrieval behavior conflicted. No P0-P3 finding remains. | Pre-sync `verify:phone-chrome` PASS: 92/92 contracts, 12/12 focused phone journeys, 323/323 full Chromium; post-sync exact resolved production differential journey PASS 1/1; production build/TypeScript and `git diff --check` PASS; hosted required checks pending. | -| 2026-07-27 | `codex/settings-followup` | `806fcc4c3167d9e2f9fbd832c39e53d3491f270a` | Protected-main release-readiness review of settings follow-up browser reliability | APPROVE. The test-only diff waits for one settled React owner before strict answer/search interactions, makes universal-search mocks echo the requested query, and retries scroll-to-live-endpoint geometry after late dock layout. Review found no P0-P3 issue and no product, retrieval, ranking, clinical-output, or provider behavior change. Highest residual risk is physical iOS/WebKit behavior outside local Chromium coverage. | Focused integrated production Chromium PASS (5/5); exact integrated-head `verify:pr-local` PASS (runtime, formatting, lint, typecheck, 393 files, 3,538 passed / 2 skipped, 36 offline RAG fixtures); `verify:ui` PASS (323/323); `git diff --check` PASS; no non-GitHub provider-backed checks. | -| 2026-07-27 | PR #1279 / `codex/phone-chrome-testing-infra-20260727` | `e1add338ae6b138ded13c44f5cc8f7eef5302669` | Automated-review follow-up for required-check selection in the final merge audit | APPROVE pending fresh exact-head hosted checks. The P1 was valid: the audit selected the required aggregate but incorrectly treated every advisory status as merge-blocking. Unsettled-state validation now applies only to the required aggregate, while missing or unsuccessful `pr-required` still fails closed. A regression snapshot proves a failed Advisory UI job cannot block a successful required aggregate. No other P0-P3 finding remains. | Focused `tests/final-merge-audit.test.ts` PASS (7/7); Prettier and `git diff --check` PASS; earlier exact-tree `verify:phone-chrome` remains the browser baseline because this follow-up changes only the audit validator and its unit test; hosted required checks must rerun on this head. | -| 2026-07-27 | PR #1279 / `codex/phone-chrome-testing-infra-20260727` | `a2331fc8d1883d687d0bbb6e1b023503ab5deb1d` | Automated-review follow-up for changed Playwright journey selection | APPROVE pending fresh exact-head hosted checks. The P2 was valid: fixed title filters could omit a modified journey while the planner still reported focused coverage. Changed phone-chrome Playwright specs now run completely without `--grep`; the title-filtered matrix remains only for relevant unchanged specs, preserving focused-first feedback without hiding edited tests. Regression cases cover both `ui-phone-scroll` and `ui-tools`. No other P0-P3 finding remains. | Focused `tests/verify-phone-chrome.test.ts` PASS (7/7); smart-plan dry run selects complete changed specs before the risk-selected full UI suite; Prettier and `git diff --check` PASS; fresh hosted required checks must rerun on this head. | -| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `78c7d1c7766c081d886f1abbd14fa7b3018a0d44` | CI fix: Production UI Loading-answer strict-mode race | FIXED. Hosted Production UI failed once on `answer search URL opens chat without the answer home copy` when `getByLabel("Loading answer")` matched the live skeleton plus a hidden Suspense `S:` clone (search-chrome invariant 17). Assertion now uses the suite-standard `:visible` locator. Not a product regression from the results-band rebuild. | Exact journey PASS 3/3 with system Chrome after the harden; hosted CI rerunning on this head; no provider-backed checks. | -| 2026-07-27 | open-PR review + Bugbot sweep (Cursor) | multi-head | Fresh review of all open PRs + pr-bugbot on each head | Reviewed 10 open PRs after #1277 merged. No hosted `cursor[bot]` Bugbot comments existed on any PR; ran repo `pr-bugbot` triage per head instead. Cluster: close #1261/#1263 (unsafe audit lineage); salvage/rebuild only thin #1262 bits; hold Dependabot #1267→#1268→#1269 pending workflow approval; fix #1273 type-scale + mockup UX before design trust; sync #1275 and restore ledger from main; #1280 blocked by unrelated Loading-answer strict-mode flake; #1281 sound clinical follow-up with two P2 polish items. | merge-tree classification; gh PR/CI/thread inventory; pr-bugbot review-only agents; no provider-backed checks; no PR mutations. | -| 2026-07-27 | PR #1261 / `apply-audit-system-remediation` | `b4dae8469024` | Bugbot + merge-tree review | DO NOT MERGE / CLOSE. Same `faa50e6e` dirty-checkpoint lineage as closed #1255/#1253; 526 behind; 18 real merge-tree conflicts including answer API/ClinicalDashboard/evidence. Confirmed Codex P1: tip adds unconditional `out_of_corpus` short-circuit that main deliberately avoids. PR policy missing RAG/governance. | merge-tree; tip vs main RAG guard compare; unresolved-thread validation; no provider checks. | -| 2026-07-27 | PR #1262 / `perform-audit-system-remediation` | `0a1fd57b2b6a` | Bugbot + merge-tree review | CLOSE or REBUILD (narrow cherry-pick). Only 3 merge-tree conflicts but tip unsafe: GitGuardian FAIL, parallel `verify:cheap` rewrite drops installed-lock-parity, zero-valued preflight limits skipped. Salvage candidates: therapy-compass `@layer`, PDF extractor code 137, visual maxDiffPixelRatio. ISSUE-01 RAG claim not in commits. | merge-tree; tip file inspect; CodeRabbit/Codex thread validation; no provider checks. | -| 2026-07-27 | PR #1263 / `implement-audit-design-fixes` | `dda4a42baa34` | Bugbot + merge-tree review | DO NOT MERGE / CLOSE. Same unsafe lineage; tip carries literal conflict markers; route-group file-location conflicts; confirmed P1s persist raw clinical query offline and drain offline queue without owner binding. Rebuild empty/error states on main under `(search-app)/` if still needed. | tip marker grep; merge-tree; Codex P1 validation; no provider checks. | -| 2026-07-27 | PR #1267 / `dependabot/github_actions/...` | `fdc6bdf5e235` | Bugbot review | HOLD then MERGE after workflow approval. Pin `anthropics/claude-code-action` b76a077→be7b93b (v1.0.183) SHA matches annotated tag. merge-tree CLEAN; required CI awaiting Dependabot approval. | pin/tag verify; merge-tree; no provider checks. | -| 2026-07-27 | PR #1268 / `dependabot/npm-production/...` | `7a433befca9d` | Bugbot review | HOLD then MERGE after approval + green CI (highest Dependabot risk). Patch bumps next/react/supabase/openai/lucide; lockfile integrity-only; no engine break. | package.json/lock diff scan; merge-tree CLEAN; no provider checks. | -| 2026-07-27 | PR #1269 / `dependabot/npm-development/...` | `c9114439e6e6` | Bugbot review | HOLD; rebase after #1268. Playwright 1.61.1→1.62.0 is residual flake risk; prettier/eslint-config-next/@next/bundle-analyzer patches otherwise low risk. | package.json/lock diff; merge-tree CLEAN; no provider checks. | -| 2026-07-27 | PR #1273 / `codex/create-mobile-navigation-mockups` | `130399c24334` | Bugbot + CI diagnosis | NOT READY. Static PR historically failed on 17 arbitrary `text-[Npx]` sizes (`check:type-scale --strict`). Confirmed mockup P2s: PhoneFrame no inner scroll; PriorityDock More loses selection; ProgressNavigator center wraps past last section. Mockups-only; fix tokens + UX before design review. | CI log + local type-scale mapping; Codex thread validation; no provider checks. | -| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `24605b57e288` | Bugbot + merge-tree review | NOT READY. Prefetch product change looks auth-safe/correct. GitHub DIRTY is staleness (merge-tree CLEAN). Blockers: ledger rewrite/corruption (~95 historical rows) + incomplete required CI. Sync main, restore ledger from origin/main, append one row, then recheck. | merge-tree CLEAN; ledger byte/corruption inspect; unresolved Codex/CodeRabbit threads; no provider checks. | -| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `93a9f90ff287` | Bugbot + CI debug | NOT READY until Production UI green. Product band rebuild looks sound; Advisory UI green. Hosted failure is Answer Suspense `Loading answer` strict-mode (2 nodes / one hidden) in ui-smoke — not caused by band diff. Optional P2: `useRailOverflow` can miss child-list changes. | Production UI log job 90037898852; unique diff vs main; focused band unit 9/9 on tip; no provider checks. | -| 2026-07-27 | PR #1281 / `claude/safety-planning-tools-page-tsq4vs` | `a26e95fc9ac9` | Bugbot clinical review | APPROVE pending exact-head required CI + minor P2 polish. Incomplete plans get draft banner/clipboard marking; contact reach methods required for Ready/Finalise. P2: StepBuilderCard green check still uses entries.length; clipboard DRAFT text untested. No P0/P1. | unique diff review; GraphQL no cursor[bot] threads; no provider checks. | -| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `980b4298933642d134d44105b62ab0c31d39d4e3` | Hosted required CI after Loading-answer harden + main sync | GREEN. Supersedes the `78c7d1c7` pending-rerun row. Production UI and `PR required` both SUCCESS on this tip; Loading-answer `:visible` assertion retained through the later rail-overflow fix and `origin/main` merge. | Hosted CI run 30308513222: Production UI SUCCESS (11m22s), PR required SUCCESS; local exact journey PASS 3/3 earlier on the harden; no provider-backed checks. | -| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `c844560da909b7f88a1ef351fc833ad45cfb0a81` vs `origin/main` `7740535a` | Thorough merge-readiness review vs main | APPROVE AFTER MAIN SYNC. No P0/P1. Presentation-only shared results band rebuild; clean merge-tree; hosted PR required + Production UI green on tip; 0 unresolved threads. Branch is 1 commit behind unrelated safety-plan #1281 — final-merge audit fails closed until tip contains origin/main. Residual P2 (non-blocking): phone overflowing-rail `mask-image` lacks forced-colors clear (pattern exists for edge-glass); ResizeObserver does not unobserve removed children. | Diff review of 6 unique files; `git merge-tree` clean; `audit:final-merge --dry-run` fails only on missing main ancestor; band DOM 9/9; hosted checks green on tip; no provider-backed app checks. | -| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `97ab067bfdca644e0750bfbc717da7d58ecd27ee` | Bugbot defect hunt (cursoragent request; no hosted cursor[bot] threads) | APPROVE pending exact-head required CI. No P0/P1. Projection ≡ live helpers (201 diagnoses / 31 presentations / 20 alias keys); `--check` compares parsed values (Prettier-safe); CI `static-pr` + `verify:cheap` wire `check:cross-mode-index`. Residual P2: re-importing `@/lib/differentials` into `cross-mode-differentials.ts` would restore the ~1.2 MB lazy-chunk weight while data gates stay green — no import-graph lock yet. P3: stale comment in `cross-mode-links.tsx`; scripts-index omits new generator. | `check:cross-mode-index` PASS; vitest `cross-mode-differentials-index` 2/2; gate-manifest PASS; drift/invalid-JSON proofs FAIL closed; import-graph grep clean today; no provider-backed checks. | -| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `09dbd2dcc5126e4ae7d6f9e99e7325853047f749` | Bugbot P2 follow-up: import-graph lock for cross-mode differentials | FIXED. Added a client-performance-boundaries source assertion that `cross-mode-differentials.ts` stays on the trimmed JSON index (no value-import of `@/lib/differentials` / snapshot / fixtures) and that `cross-mode-links.tsx` keeps the dynamic import. Updated the stale 1.2 MB comment. Residual: dual projection logic still lives in the build script and `differentials.ts` (caught by the existing deep-equal test). | Focused `tests/client-performance-boundaries.test.ts` PASS (7/7); no provider-backed checks. | -| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `18fcfae24b41cdd5caebd2780afa963a2a1335a5` | Follow-up — Bugbot/CodeRabbit residuals addressed (supersedes the 97ab067 Bugbot row) | Residual P2 closed: import-graph lock added — an allowlist test asserts `cross-mode-differentials.ts` may import ONLY the precomputed index + the (type-only) catalog type, catching direct, transitive-via-new-import, and dynamic `import()`/`require` reintroductions of `@/lib/differentials`. P3s closed: stale `cross-mode-links.tsx` comment fixed; `build-cross-mode-differentials-index.mjs` listed in `scripts-index.md`. CodeRabbit's two Minor nits (guard depth + this ledger refresh) addressed. | vitest `cross-mode-differentials-index` 3/3; typecheck + lint PASS; `docs:check-scripts` + `docs:check-links` PASS; `check:cross-mode-index` PASS; no provider-backed checks. | -| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `82f73943a88fdccf8226344bbb5a0bf52f665ede` | Bugbot P2 reconcile after parallel remote fix | FIXED (reconciled). Remote already landed an allowlist import-graph guard in `tests/cross-mode-differentials-index.test.ts` plus scripts-index/comment refresh. Merged that work and retained a consumer-side lock: `cross-mode-links.tsx` must dynamically import the catalog module (not statically). | Focused vitest `client-performance-boundaries` + `cross-mode-differentials-index` PASS (10/10); no provider-backed checks. | -| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `5c2816d1dc2e7a99c37d27310b487bcac5232db3` | Production UI CI fix: differentials-home hydration strict-mode | FIXED. Hosted Production UI failed solely on `dashboard differentials mode param redirects…`: `getByTestId(differentials-home)` hit 2 nodes (server+client overlap). Applied `expectSingleSettledOwner` before the visibility assert. No product change. | Focused production Playwright journey PASS 1/1 via `npm run test:e2e` (system Chrome); no provider-backed checks. | -| 2026-07-27 | open-PR recommendation implementation (Cursor) | multi-head | Implement review recommendations safely | CLOSED #1261/#1262/#1263 without merge (unsafe audit lineage). Pushed fixes: #1273 type-scale + phone-frame scroll + PriorityDock selection; #1275 prefetch source-contract tighten; #1280 rail MutationObserver + main sync; #1281 StepBuilderCard completeness + clipboard draft test (automerge temporarily disabled to land polish). Opened #PDF-137 salvage branch for exit-code 137. Dependabot #1267-1269 left HOLD — workflow approve/update-branch 403 for this integration token; no merge to main. | type-scale strict PASS; focused Vitest safety-plan 3/3 and prefetch contract 1/1 and band 9/9; PDF extractor pymupdf tests skipped in this VM; no provider-backed checks; no main merges. | -| 2026-07-27 | PR #1273 / `codex/create-mobile-navigation-mockups` | `f6964aeb` | Implemented review fixes | Type-scale tokens, phone-frame inner scroll, PriorityDock overflow selection. Rebased onto concurrent tip. | `check:type-scale --strict` PASS; no provider checks. | -| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `6c544c16` | Implemented review follow-up | Prefetch contract now requires both `openModeMenuWithFocus` and `toggleModeMenu` bodies. Prior tip already restored ledger + synced main. | Focused Vitest prefetch contract PASS; no provider checks. | -| 2026-07-27 | PR #1280 / `claude/top-search-design-mockups-w53znc` | `980b4298` | Implemented review follow-up | Synced main; rail overflow observes childList mutations. Temporarily disabled auto-merge to land polish without squash race. | Focused band Vitest 9/9; no provider checks. | -| 2026-07-27 | PR #1281 / `claude/safety-planning-tools-page-tsq4vs` | `f7e616d1` | Implemented review polish | StepBuilderCard filled uses `isStepComplete`; clipboard DRAFT assertion added. Auto-merge temporarily disabled to land polish. | Focused safety-plan Vitest 3/3; no provider checks. | -| 2026-07-27 | PR #1261/#1262/#1263 audit cluster | closed tips | Close without merge | Closed per review: unsafe lineage / tip markers / privacy+RAG P1s / parallel verify:cheap rewrite. Thin PDF exit-137 salvage opened separately. | Prior Bugbot + merge-tree evidence; no provider checks. | -| 2026-07-27 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | pending-push | CI babysit + Bugbot + main sync | Before: required CI SUCCESS on tip `630792c9`; mergeable but BEHIND main; 0 unresolved review threads; no `cursor[bot]` Bugbot comments. After: merged `origin/main` cleanly; pr-bugbot found no P0/P1 — fixed P2 by moving SIGKILL/exit-137 regressions out of `describe.runIf(hasPyMuPDF)` and asserting `PdfExtractorProcessError` by name so the OOM path cannot silently skip or pass via JS fallback. | Focused Vitest `tests/pdf-extractor.test.ts` 2 passed / 4 skipped (PyMuPDF absent locally); merge-tree clean; no provider-backed checks. | -| 2026-07-27 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `dd9d96b64042004f9162b5ef2eaf4495073a5a60` | CI babysit + Bugbot + main sync (exact head) | Supersedes pending-push row. Merged origin/main; no failing required CI on prior tip; 0 review threads; no hosted cursor[bot] comments. Fixed P2: process-failure tests ungated from hasPyMuPDF and assert PdfExtractorProcessError by name. No P0/P1. | Vitest tests/pdf-extractor.test.ts 2 passed / 4 skipped; merge-tree clean; no provider checks. | -| 2026-07-27 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `bfd66ba8546b215e4d98ec46fcdd2a8538d053a0` | CI babysit + Bugbot closeout | Final pushed tip after main sync + process-failure test ungate. Required CI re-running on this head. | Local Vitest process-failure 2/2; prior tip required CI SUCCESS; no provider checks. | -| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `88d8638974075fa91334c2bb4a0e6b54fda00176` | Review closeout: main sync + resolved-graph guard + ledger attribution | FIXED. Cause of GitHub CONFLICTING/DIRTY: both tips appended `docs/branch-review-ledger.md` (union); `git merge-tree` was clean — merged `origin/main` (#1284 ledger rows). CodeRabbit recursive import-graph ask: walk resolved runtime imports from `cross-mode-differentials.ts` (services/forms boundary pattern) + keep entry allowlist. Supersedes residual wording on rows 1148/1149: import-graph lock + scripts-index + comment already landed; `client-performance-boundaries` guards the consumer dynamic import, `cross-mode-differentials-index` guards the catalog module/graph. Hosted Production UI already green after hydration settle. | Focused vitest index+boundaries 10/10; `check:cross-mode-index` PASS; merge-tree CLEAN vs origin/main; prior Production UI PASS on `f738f083`; no provider-backed checks. | -| 2026-07-27 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `662a93f826ea6ba34df9d15677ef5ae2446a2e40` | Static PR Format check fix | FIXED. Hosted `static-pr` Format check failed on Prettier for `tests/cross-mode-differentials-index.test.ts` after the resolved-graph guard. Reformatted; no behaviour change. Mergeable vs main (merge-tree CLEAN, 0 behind). Prior review threads already dispositioned. | `prettier --check` local PASS for the file; vitest index test 3/3; no provider-backed checks. | -| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | `2e5ee9f891d9f251adffb6a15bc2ab13e0f18b23` | CI babysit + Bugbot | Blocking PR policy fixed via temporary `PR_POLICY_BODY.md` sync (Clinical Governance Preflight all checked, Risk/Verification completed), then template removed. Merge with main clean. Bugbot: zero `cursor[bot]` findings; offline scan of unique claim-cap fail-closed diff found no high-confidence defect. No review threads. Residual: human approving review once exact-head required checks finish. | Local: `npx vitest run tests/rag-claim-support.test.ts` 40/40; `evaluatePullRequestPolicy` ok. Hosted prior tip `19495e7c`: PR policy + Sync SUCCESS. No OpenAI/live Supabase. | -| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | `1d43484ad56bde756ecdc9c98d448779836b2f97` | CI babysit + Bugbot (SHA correction) | SUPERSEDES prior #1292 row that recorded pre-amend `2e5ee9f8`. Same outcome: PR policy remediated, `PR_POLICY_BODY.md` removed, Bugbot clean, no review threads. Residual: human approving review after exact-head CI. | Same local evidence; awaiting hosted checks on tip `1d43484a`. | -| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | `cb73b200ccbafa4378df8d7ae103beb8e464e783` | CI babysit + Bugbot closeout | COMPLETED for current tip. Required CI green (PR policy, Static, Unit, Build, PR required, SAST, Gitleaks). Body retains checked Clinical Governance Preflight. Bugbot: no findings. No unresolved review threads. Residual: human approving review only. | Hosted tip `cb73b200`: all required checks SUCCESS. Local claim-support Vitest 40/40. No providers. | -| 2026-07-27 | PR #1290 / `codex/search-performance-correctness-pr` | `82775e25fc1519c436a719b0d204a7c57332d811` | CI fix + Bugbot | Fixed P1 from trim commit: restored `sourceSearchInputRef` + double-rAF focus for mobile Search in document (was title-seeding). Cleared Prettier indent break that failed Static PR checks. Mergeable; 0 behind main; no unresolved review threads (Codex/CodeRabbit rate-limited). | Bugbot; vitest document-detail/private-access/universal-search/viewer-shell/audit-nav 186/186; maintainability 1734/1734; prettier check; no provider checks. | -| 2026-07-28 | PR #1290 / `codex/search-performance-correctness-pr` | `3acf0ee3b6b1da10d6e0c76d20825d9eb0c76e48` | CI fix + Bugbot | Fixed P0 duplicate sourceSearchInputRef from tip 1e5ee645; restored sheet-safe Search-in-document focus; hardened openComposer with expectSingleSettledOwner for Production UI dual-composer race. Mergeable; 0 unresolved threads. | Bugbot; document-detail vitest 8/8; Playwright presentation/grouped typeahead 3/3; maintainability 1733/1734; no provider checks. | -| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | `4e069df4c8c47b385a4fb1f04753c09319c925fa` | CI babysit follow-up + main sync + Bugbot | GitHub labeled CONFLICTING/DIRTY while `git merge-tree` was clean (11 behind main). Merged `origin/main` with no content conflicts. CI was already green on prior tip; no failing product tests. Bugbot: zero reviewThreads / zero inline findings; product claim-cap fail-closed scan clean. No comments to resolve (issue comments are rate-limit/status only). Residual: human approving review after exact-head CI. | Local merge-tree clean; Bugbot empty threads; awaiting hosted checks on merge tip. No providers. | -| 2026-07-28 | PR #1273 / `codex/create-mobile-navigation-mockups` | `c8af3d1ab830` | CI babysit + Codex thread closeout | MERGEABLE; 0 behind main; merge-tree CLEAN. Fixed earlier Static type-scale failure; suppressed shared composer on phone nav mockup; resolved 4 Codex P2 threads (scroll, overflow More, progress clamp x2). Bugbot: no cursor[bot] findings. | check:type-scale --strict PASS; hosted Static/Build/Unit/Advisory PASS on tip; Production UI pending; no provider checks. | -| 2026-07-27 | PR #1286 / `fix-test-run-lock` | `d2219a8be89e6c218c4412fe40d4eb4b86fd79bf` | Merge-conflict repair + Bugbot + CI fix | FIXED. Resolved CONFLICTING merge vs main by keeping main soft-glass phone chrome, shared test-run-lock coordinator, tokenized document-nav mockups, and accessible-name Playwright contract; preserved PR forced-colors:border and literalShadowClasses 0 ratchet. Bugbot found no remaining P0-P2 on unique product delta. Removed 9 exact duplicate ledger rows introduced by merge=union. | Focused design-system + knip + mobile-chrome-paint + test-runner-safety PASS; ledger guard PASS after dedupe; hosted Static PR re-run pending; no provider-backed checks. | -| 2026-07-27 | PR #1286 / `fix-test-run-lock` | `bef2377d477a03b7b8bbb50ad7caf99eda258be5` | Ledger dedupe follow-up after conflict merge | APPROVE pending exact-head hosted required checks. Supersedes the `d2219a8b` row for CI readiness: exact duplicate ledger rows removed; unique product delta remains forced-colors:border, literalShadowClasses 0, and diagnosis-map shadow token. No unresolved review threads; Bugbot found no remaining P0-P2. | `check:branch-review-ledger` PASS (1084 records); design-system / knip / mobile-chrome-paint / test-runner-safety PASS; `verify:cheap` rerunning; no provider-backed checks. | -| 2026-07-27 | PR #1286 / | `b9ac1621a3993338a242d520bdc2d1a1dc29934c` | Post-conflict CI green + Bugbot closeout | APPROVE. Conflicts resolved; hosted required aggregate green (Static PR, Unit coverage, Build, Safety, Production UI, PR required). No unresolved review threads. Bugbot: no remaining P0-P2 on unique product delta (forced-colors:border, literalShadowClasses 0, diagnosis-map shadow token). Residual: NodeDetails phone sheet now uses downward --shadow-elevated instead of old upward literal cast (visual only). | Hosted PR required PASS; Production UI PASS (11m41s); Advisory UI PASS; local verify:cheap PASS (396 files / 3558 passed); focused design-system/knip/mobile-chrome-paint/test-runner-safety PASS; no provider-backed checks. | -| 2026-07-27 | PR #1286 / `fix-test-run-lock` | `ac2327d231e1f74ab63a0cd04f0c1065a8ab037a` | Superseding closeout row (branch label repair) | APPROVE. Supersedes the malformed `b9ac1621` closeout row whose branch cell lost `fix-test-run-lock` to shell backtick expansion. Same outcome: merge conflicts fixed, Bugbot clean, hosted required checks green on product tip; this tip is ledger-only. | Hosted PR required + Production UI PASS on `b9ac1621`; ledger guard PASS; no provider-backed checks. | -| 2026-07-28 | PR #1286 / `fix-test-run-lock` | `e86d01edee26a361cbf69aab53ab168d963e3e71` | Production UI favourites-hub hydration flake fix | FIXED. Hosted Production UI failed once after main sync on favourites hub strict-mode duplicate (`getByTestId('favourites-hub')` -> 2). Applied existing `expectSingleSettledOwner` guard to favourites smoke asserts. Not a product regression from this PR's unique delta. | Prior tip hosted Static/Unit/Build/Safety PASS; Production UI 322/323 then fail on favourites hydration; fix pushed; no provider-backed checks. | -| 2026-07-28 | PR #1286 / `fix-test-run-lock` | `5532e928ad18a1d451732f6b0323009d9198dc48` | Final merge-conflict + CI + Bugbot closeout | APPROVE. Conflicts cleared vs current main; Bugbot clean on unique product delta; favourites-hub hydration settle guard landed; hosted PR required + Production UI green. Unique product delta: forced-colors:border, literalShadowClasses 0, diagnosis-map shadow token. | Hosted Static/Unit/Build/Safety/Advisory/Production UI/PR required PASS on tip; local verify:cheap PASS earlier; no provider-backed checks. | -| 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. | -| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | c665fce7b84d9ecda3e92b1db7bfc3c1877d0222 | Main conflict resolve + Bugbot | Real merge conflicts in `answer-verification.ts` / `rag-claim-support.ts` after #1289/#1286 landed. Resolved by retaining main band-conflict + sectionIndex claim assessment and re-applying unassessed numeric fail-closed. Bugbot: 0 reviewThreads. No comments to resolve. | Local: vitest claim-support+answer-verification 223/223; merge-tree clean post-resolve. | -| 2026-07-28 | PR #1273 / `codex/create-mobile-navigation-mockups` | `af9a957b` | Babysit recheck | Hosted CI green on prior tip; GitHub DIRTY was staleness (merge-tree CLEAN). Merged origin/main cleanly. Unresolved threads 0. Bugbot: no cursor[bot] findings. | merge origin/main; check:type-scale --strict PASS; no provider checks. | -| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `82c17f76` | Mode-switch prefetch review + merge restore | Prefetch mode homes on menu open; later reconciled with main per-option prefetch. Ledger restored append-only from main after mojibake rewrite. | Focused nav tests; check:branch-review-ledger; no provider checks. | -| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `bc5b51c2` | CodeRabbit duplicate-ledger disposition | DISPOSITIONED / not actionable as a PR product delete. Near-duplicates already exist on origin/main as non-identical historical records; check:branch-review-ledger passes on main. Removing main-owned history from a feature PR would violate append-only. | substring counts on origin/main; ledger guard PASS; no provider checks. | -| 2026-07-27 | PR #1275 / `codex/identify-and-fix-performance-issues-during-mode-switch` | `191707ee` | CodeRabbit malformed-ledger-row disposition | DISPOSITIONED / not actionable on this PR. MD056 cell-count warnings on ~700-722 are identical on origin/main. Fix belongs in dedicated main ledger hygiene if desired. | cell-count scan main vs tip; check:branch-review-ledger PASS; no provider checks. | -| 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. | -| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `f1e422e8ee64f7e161e78d9a56707a1a83cc3374` | CI babysit: PR policy + main sync | Before: PR marked ready → PR policy FAIL (missing Clinical Governance Preflight); GitHub CONFLICTING/DIRTY but merge-tree clean (17 behind). 0 unresolved review threads; Bugbot no P0/P1. After: merged origin/main; PR body updated with complete Clinical Governance Preflight (7/7 checked). | Local pr-policy evaluate ok; Vitest process-failure 2/2; no provider checks. | -| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `734931960175afa12359e84c030290396c381bb5` | CI babysit closeout | Final tip after main sync + Clinical Governance Preflight body fix for ready PR. | Awaiting exact-head PR policy/required CI. | -| 2026-07-28 | PR #1292 / `codex/chat-clinical-grounding-cap-bbc4` | ff40a2b945caf657b45cec0d662317057c63abe3 | CI babysit + main sync + Bugbot | GitHub DIRTY/CONFLICTING with clean `merge-tree` (2 behind main). Merged `origin/main` with no content conflicts. CI already green on prior tip; no product test failures. Bugbot: reviewThreads=0; product fail-closed scan clean. No comments to resolve. | Local overflow Vitest 1/1; ledger guard pass; awaiting exact-head hosted CI. No providers. | -| 2026-07-28 | claude/branch-review-ledger-fixes-42575f | 11a4ed746be7a83b144876f7a16948cad280df25 | branch review ledger + review-doc process review and repair | Repaired the ledger and closed the loop that corrupted it. Found: 146 mojibake lines from non-UTF-8 hand-appends, 46 duplicate records the mojibake hid from the exact-duplicate guard, 21 wrong-width rows (unescaped prose pipes / merged Scope+Outcome cells), 4 records written as a heading+bullet block inside the table (invisible to every row parser and splitting the table), and 137 HEADs recorded as prose/abbreviations that no rev-parse lookup could match - so the throttle the ledger exists for silently never fired. Restored 140 lines byte-exact from git history, repaired 6 residual separators, converted the 4 block records, dropped exact duplicates, normalised all 1067 rows to six cells. Added scripts/branch-review-ledger.mjs (lookup + append), hardened check-branch-review-ledger.mjs (mojibake, cell width, heading records, real dates, table gaps, and from 2026-07-29 resolvable HEADs + near-duplicates), fixed the escape-unaware cell split and exact-SHA compare in sweep-branch-ledger.mjs, and repointed AGENTS.md, codex-review-protocol.md, branch-cleanup-guide.md, docs/README.md and 12 skill/agent files at the two commands. | npm run check:branch-review-ledger PASS (1067 records); vitest tests/repo-hygiene.test.ts 24/24 PASS; npx tsc --noEmit clean; eslint on changed scripts/tests clean; prettier --write applied; docs:check-scripts 379 refs PASS; docs:check-links 1273 refs PASS; docs:check-index PASS; check:gate-manifest PASS; check:ci-scope PASS. npm run typecheck was blocked by another worktree holding the heavy-run lock, so tsc ran directly. No provider-backed checks run. | -| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `0cab0a6475a9744e7d64a25dedb4a89b06909464` | CI babysit re-sync | Re-merged origin/main after GitHub DIRTY/staleness (merge-tree clean). PR policy already SUCCESS with Clinical Governance Preflight. 0 review threads. | merge-tree clean; hosted PR policy/required were SUCCESS on prior tip; no provider checks. | -| 2026-07-28 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `562bce2b3c90bf1790da9683077915cd3f8fdb17` | Main sync + conflict repair + Bugbot closeout | FIXED. Real CONFLICTING vs advanced main was `docs/outstanding-issues.md` only (ledger/ui-smoke auto-merged). Resolution keeps `#012` in Resolved with this PR's outcome while retaining main's newer open/archive rows. CI on prior tip was fully green (Static/Production UI/PR required); re-runs after sync. Review threads already dispositioned (resolved-graph guard, ledger residuals, attribution). | merge-tree CLEAN; focused vitest index+boundaries 10/10; `check:cross-mode-index` PASS; `prettier --check` on touched tests PASS; Bugbot pass pending agent; no provider-backed checks. | -| 2026-07-28 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `742b0d154f7058800c945b3ec6e720eef24ce4c0` | Bugbot P2: finish #012 recommended-queue closeout | FIXED. After main-sync conflict repair, `#012` was correctly Resolved/Open-clean but the Recommended execution queue still listed it (order 20 composite + #017 Before hint). Applied `/issues done` queue rewrite: order 20 is now `#013`, `#016`; #017 timing is Before `#013`/`#016`. | Bugbot review on `1b31607b`; queue/Open/Resolved audit; focused vitest previously green; no provider-backed checks. | -| 2026-07-28 | PR #1287 / `claude/site-audit-quick-wins-21v9gb` | `b90d659be12efedd339297daa2d289c2bd7ebb03` | Sync main + Format check on outstanding-issues | FIXED. Cause of GitHub CONFLICTING/DIRTY: branch 1 behind main (`11a4ed74` numeric claim truncation); `git merge-tree` CLEAN — ledger union auto-merge. Cause of Static PR red: Prettier on `docs/outstanding-issues.md` after queue closeout rewrite. Merged main; reformatted file; `#012` remains Resolved and out of the recommended queue. | merge-tree CLEAN; `prettier --check` PASS; `check:branch-review-ledger` PASS; no provider-backed checks. | -| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `c5ee34f2a17222a0ec6fb592a2dd7db4e43f1496` | CI babysit + Bugbot recheck | Before: required CI SUCCESS; GitHub CONFLICTING/DIRTY from 1-commit main staleness (merge-tree clean); 0 review threads. Bugbot: no P0/P1/product P2. After: merged origin/main (#1287). Nothing to resolve for comments. | Prior tip required CI SUCCESS; merge-tree clean; no provider checks. | -| 2026-07-28 | PR #1285 / `cursor/pdf-extractor-sigkill-137-0687` | `1c77291a93373b56c136075b5941f5e61ac2859b` | Ledger hygiene after main merge | Dropped one exact-duplicate #1292 babysit row introduced by ledger `merge=union` during main sync; first copy retained; zero unique records lost. | `check:branch-review-ledger` PASS after dedupe; no provider checks. | -| 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 #1298 / `codex/fix-p2-audit-20260719` | `647dd6a1c4fe418e23cd566bc717067e57f91178` | CI babysit: merge conflicts + GitGuardian + PR policy | FIXED. Merged origin/main (~790 behind, 33 content conflicts). Preferred main for superseded remediations (secret scanner masking, babel parser 8, RAG module layout, coalesce abort, join-constructed offline DB URL). Retained unique clinical-search/neuroleptic+clozapine monitoring, sheet focus-trap, Playwright serviceWorkers block, and aligned regression tests to current main APIs/alias tiering. Restored GitGuardian-safe DB URL construction (literal postgres URI was a tip regression). PR body updated for Clinical Governance + RAG impact. | Focused Vitest 218/218 on unique delta; merge-tree clean vs origin/main after sync; no provider-backed checks. | -| 2026-07-28 | `codex/fix-p2-audit-20260719` | `d99a71b82abf605f26fcc81ba61cdc805a99a36f` | Bugbot-style unique product delta vs origin/main (playwright SW block, ClinicalDashboard focus drop, sheet Tab trap, clinical-search neuroleptic/clozapine/med-dose, rag-retrieval-variants, supporting tests) | CHANGES REQUESTED. No P0. P1: `medicationDoseQueryContext` named-medication gate requires canonical generic token in evidence (`evidenceTokens.has("clozapine")`) and ignores brand aliases, so Clozaril-only evidence fails for Clozaril/clozapine monitoring queries and can rank below unrelated high-hybrid monitoring docs (−0.24 / missed +0.26). P2: neuroleptic side-effects early `document_lookup` return preempts dose classification (`What dose applies for neuroleptic side effect management?` → `document_lookup`). Cleared: SW block + PWA allow, documents `focus:true` removal on in-place pushState ask path, clozapine blood-token retention, Clozaril→clozapine variant intent via analysis.medications. Highest residual: sheet Tab trap rewrite has no Tab-cycle DOM proof. | Offline red proofs via temporary Vitest probes (brand gate + neuroleptic class); focused clinical-search regressions 6/6; no OpenAI/Supabase/hosted CI. | -| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `a51954ed7db4626a4523ddb53d111742ef6a45ae` | Bugbot triage of unique delta vs main | FIXED P1: medicationDoseQueryContext + clozapine-specific boost/penalty now accept brand aliases (Clozaril evidence ranks above unrelated monitoring for clozapine queries). FIXED P2: neuroleptic side-effect title short-circuit runs after explicit dose/route classification. Cleared: sheet trap, documents focus drop, Playwright serviceWorkers block. | clinical-search Vitest 69/69; unique-delta Vitest 219/219; no provider-backed checks. | -| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `d81c55b23815948a7043333ad4f56c09ec107c4f` | CodeRabbit thread fixes + PR policy body sync | FIXED: duplicate serviceWorkers key; sheet focus trap excludes aria-hidden/inert ancestors; WCC in clozapine blood-intent gate; formulation Open Worry click-once outside toPass; PR_POLICY_BODY.md added for Sync PR policy body (token cannot edit non-agent-managed description). | retrieval-query-variants + playwright-isolation Vitest pass; local pr-policy evaluate ok; no provider checks. | -| 2026-07-28 | PR #1298 / `cursor/fix-p2-audit-clean-9957` | `986ffd28d493c8daf7d900bc65a3cdab3aca496e` | Clean rebuild onto main for secret-scanner history | Rebuilt unique product delta onto origin/main as a single clean commit so Gitleaks/GitGuardian no longer scan historical false-positive fixtures (offline postgres URI, sb_secret_ test key). Product behaviour unchanged from prior tip. | patch apply clean; prior focused Vitest green; no provider checks. | -| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `43795bcb00a55961b734813e78f74aef933beea3` | Closeout after clean rebuild + policy sync | MERGEABLE. Secret scanners green after history rebuild; PR policy green with Clinical Governance + RAG impact; 0 unresolved review threads (CodeRabbit + Codex P1 resolved). Unique delta retained. Residual: required human approving review / remaining hosted suite. | PR policy PASS; GitGuardian PASS; Gitleaks PASS on prior tip; focused Vitest 189/189 on clean rebuild; no provider checks. | -| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `c89756f89d61730e926b35c4e5152e087650f440` | CI babysit: Build RAM guard + escalation class + alias scope | FIXED. Unit coverage: removed neuroleptic document_lookup short-circuit that broke title-supported escalation rescue (medication_dose_risk + escalation_risk). Build: CI/GITHUB_ACTIONS warn-and-continue under <10 GiB reported RAM. CodeRabbit: medicationDoseQueryContext alias equivalence is per named medication; multi-med regression added; Prefered typo fixed. | Focused Vitest clinical-search + escalation-rescue + guard-next-build 79/79; tip `c89756f8`; no provider checks. | -| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `7f75c39c153394a89969122693b572376353b9af` | CI babysit tip (format + ledger marker) | Supersedes prior #1298 CI babysit row at `c89756f8` for exact-head bookkeeping after Prettier on clinical-search and ledger tip-marker repair. Product delta unchanged. | check:branch-review-ledger pending; tip `7f75c39c`; no provider checks. | -| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `f8d4d17bac65c17290b634e5c04bdd76e6d58a07` | CI babysit closeout tip | Exact HEAD after Build RAM CI bypass, escalation-class restore, per-medication alias scoping, Prettier, and review-thread resolution. Unresolved review threads: 0. Residual: hosted CI on this tip + human approving review. | Focused Vitest 79/79 earlier; check:branch-review-ledger PASS; tip `f8d4d17b`; no provider checks. | -| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `dc472567ab0be7c404d515f9a2be8f1fdc377e3e` | Exact tip after Bugbot trigger post | Docs-only exact-head row after posting `@cursor review` via ManagePullRequest. Product delta unchanged from `c89756f8`/`6f06b845`. | tip `dc472567`; unresolved threads 0; no provider 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. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `cdde82e087ed3e7ad6be3662b1b96aa55462cae5` | CI babysit + Bugbot + main sync | FIXED. Required CI was already green on prior tip; branch was BEHIND (merge-tree CLEAN). Merged origin/main. Bugbot P2s fixed: wired shimmer-sweep into `.animate-skeleton-shimmer::after`, applied `.stagger-item` on AnswerSkeleton, knob uses `var(--ease-spring)`. ISSUE-02/05 reduced-motion halt retained. 0 review threads to resolve. | focused vitest 34/34; tsc --noEmit PASS; merge-tree CLEAN; no provider-backed checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `9154d6ef` | CI Build flake fix | FIXED. Hosted Build failed when a runner reported 7.8 GiB via `os.totalmem` and hit the local Docker RAM floor in `guard-next-build.mjs`. Gate now skips under `CI`/`GITHUB_ACTIONS` (local protection retained). Prior tip motion/Bugbot fixes unchanged. | CI=true guard exit 0; awaiting exact-head hosted Build; no provider checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | tip after container RAM-gate fix | CI container Build flake | FIXED. `Container images / app-image` failed because Dockerfile `npm run build` hit the same local RAM floor (7.8 GiB, no CI env in the build stage). Guard now also skips for `CI=1` and `/.dockerenv`; Dockerfile sets `ENV CI=1`. | awaiting exact-head hosted container + PR required; no provider checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `2ab54c8ac4a062d15051d604e04e585a446f363c` | CI container RAM-gate closeout | SUPERSEDES prior #1297 container row with placeholder tip. Tip includes motion wiring + CI/GITHUB_ACTIONS + `/.dockerenv` RAM-floor skips + Dockerfile `ENV CI=1`. | awaiting exact-head hosted Build/container/PR required; no provider checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `b1318a4b80a3fa4b29e3de05150cf04d3aaf6525` | CI retrigger after prettier | Tip includes motion wiring + RAM-floor CI/container skips + prettier on guard-next-build. Prior Static failure was prettier-only on superseded tip `2a07c109`. Hosted pull_request CI failed to schedule on intermediate tips while a long Production UI job held the concurrency slot. | local focused vitest/tsc earlier PASS; awaiting exact-head hosted CI. | -| 2026-07-28 | PR #1304 / `fix-test-run-lock` | `352eedfeb4bcec2665201188c1113fceab7d565d` | CI/conflict babysit + Bugbot | FIXED. Real content conflicts vs main (9 files). Merged origin/main; took main for superseded test-run-lock rewrite (lease/heartbeat already present), phone chrome CSS/tests, document-top-navigation mockups, ui-primitives forced-colors, and ultra-review prompts. Kept knip.json cleanup removing unused `ignoreDependencies: ["tailwindcss"]` (only unique product delta). Bugbot: zero `cursor[bot]` findings; 0 review threads. Local `verify:cheap` PASS (4114 tests). Hosted CI re-running on merge tip; mergeable=MERGEABLE. | merge-tree then manual resolve; verify:cheap PASS; Bugbot triage; no provider-backed checks. | -| 2026-07-28 | PR #1304 / `fix-test-run-lock` | `6300b0218b2911fcdd6bc09c51db34dc9bed765b` | Babysit closeout tip | MERGE-READY for knip-only product delta. Supersedes prior #1304 row at `352eedfe` after ledger append. Hosted PR required SUCCESS on exact tip; mergeable=MERGEABLE; 0 review threads; Bugbot empty. Unique vs main: knip.json drops unused `ignoreDependencies: ["tailwindcss"]`. Original test-run-lock/phone-chrome work superseded by main during conflict resolve. | Hosted CI run 30328907503 PR required SUCCESS; verify:cheap PASS earlier; no provider-backed checks. | -| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `7662c94cf85fac19925debb567035c2e3717a20f` | pr-bugbot proactive (zero cursor[bot] Bugbot threads) | FIXED P1 phone-chrome regression: reverted ClinicalDashboard `@container`/`@max-sm:fixed`/`@md:` migration to viewport `sm:`/`md:`/`max-sm:` (search-chrome #20 + reserve contracts). FIXED P2 privacy notice stacking: restored `z-[5]` and allowed rung 5 in z-index ladder. Validated merge-sensitive: trustGatedAnswer clears `answer:""`; upload has no `canonicalAuthority`; SettingsStateProvider wired; no conflict markers. | Vitest chrome/clinical 31/31; eslint touched files clean; no provider-backed checks. | -| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `6c089f2fa5ce5a0e6057dc99ff0199fce136d105` | CI/conflict babysit + Bugbot + PR policy body | FIXED. Merged origin/main (was CONFLICTING); restored fail-closed clinical-notes `answer:""` wipe; fixed upload merge hazard (undefined canonicalAuthority → 500); restored phone chrome viewport breakpoints; kept ClinicalDashboard under 4140-line budget via settingsState handle + memoized provider; updated account-access source contract; completed Clinical Governance Preflight in PR body. Zero unresolved review threads; zero cursor[bot] Bugbot findings. | `npm run verify:cheap` PASS (4115 tests); local pr-policy evaluate ok; no provider-backed checks. | -| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `b488485d075912bc54d514ea65a1cf73c3d9b413` | PR policy body sync closeout | SUPERSEDES prior #1305 babysit tip. Synced complete Summary/Verification/Risk/governance via temporary `PR_POLICY_BODY.md` (gh/API cannot edit PR body — 403), then deleted template. PR policy PASS; mergeable CLEAN. | Sync PR policy body SUCCESS; PR policy PASS; `verify:cheap` prior tip green. | -| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `f1c978d9d63f3b3451c30d5e13e3428f29a706b5` | CI Build RAM-guard fix | FIXED hosted Build exit on local Docker RAM check: skip `guard-next-build` totalmem gate when `GITHUB_ACTIONS=true` (runners can report ~7.8 GiB). PR policy PASS with synced body. Prior CI tip `5d18668e` Build failed on guard; Unit/Static/Safety green. Retrigger CI for this tip. | Local `npm run build` PASS; `verify:cheap` prior tip PASS; 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 #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. | -| 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. | -| 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 #1298 / `codex/fix-p2-audit-20260719` | `111aee5f5d1c6aadf054632148f48dcea06626b2` | merge main + adopt main RAM-guard | Merged origin/main (#1309). Resolved guard/Dockerfile conflicts by taking main's evaluateNextBuildRamGuard + ALLOW_LOW_RAM_BUILD Docker path. Prior tip Unit/Build green; unique product delta retained (clinical-search aliases/escalation, sheet trap, Playwright SW block). | Focused Vitest 81/81; tip `111aee5f`; no provider checks. | -| 2026-07-28 | PR #1298 / `codex/fix-p2-audit-20260719` | `4de7ec8901b555f11badc8d08c6b57cdf88c386e` | CI green closeout after main merge | MERGE-READY for required checks. Hosted PR required / Build / Unit / Production UI / Static / Safety / PR policy / Semgrep / Gitleaks / GitGuardian PASS. Unresolved review threads: 0. Bugbot requested via `@cursor review`. Unique delta vs main: clinical-search (brand aliases, escalation class, neuroleptic query anchor, clozapine blood tokens), sheet Tab trap, Playwright serviceWorkers block, retrieval-variants WCC, formulation UI flake, supporting tests. Residual: human approving review. | Hosted required checks PASS on `4de7ec89`; no provider-backed app checks. | -| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `060d81355b97c3ba51232df8feee6132f1036b63` | Final closeout: conflicts + reviews + CI green | COMPLETED. Merged main (adopted main RAM-guard). CodeRabbit intrinsic-size + Codex will-change/transform threads resolved. Local Bugbot: no P0/P1. Hosted PR required SUCCESS (Build/Unit/Static/Advisory/Production UI). mergeable CLEAN. | Hosted CI run 30330463512 SUCCESS; local vitest 4114 + focused guard/nav/container 18; no provider 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. | -| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `957a79e4` | Re-inspect: main sync + Bugbot | FIXED CONFLICTING/DIRTY: 1 commit behind main (#1294 typography) — ledger/tests auto-merged clean. Prior CodeRabbit/Codex threads remain resolved. Local Bugbot: no P0/P1. Residual only intentional z-token demotions for mockup/popover. | lint+typecheck PASS; focused vitest 19/19; awaiting exact-head hosted CI; no provider checks. | -| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `129edaf39e76143527fee6a56356fc750d45bb75` | Re-inspect closeout: CI green + ledger dedupe | COMPLETED. Root cause of CONFLICTING was 1-commit main drift (#1294); synced clean. Deduped exact #1306 ledger row from merge=union. Prior review threads remain resolved. Bugbot re-run: no P0/P1. Hosted PR required SUCCESS on this tip. mergeable CLEAN. | lint/typecheck/format:check PASS; vitest 4122; local build PASS; hosted CI 30331626271 SUCCESS; no provider checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `c5a145ddbcf66ebcb4c32acf75c6b9588e253b2a` | CI babysit + Bugbot + conflict closeout | READY. Merged origin/main; resolved real Dockerfile/guard-next-build conflicts by adopting main's evaluateNextBuildRamGuard + ALLOW_LOW_RAM_BUILD. Motion fixes retained: ISSUE-02/05, IMP-01 spring token, IMP-04 shimmer ::after wiring, IMP-02 AnswerSkeleton stagger. Bugbot re-review: no remaining P0/P1/P2. 0 review threads. Hosted PR required SUCCESS. | focused vitest earlier; guard-next-build Vitest 3/3; hosted Build/Static/Unit/Production UI/PR required SUCCESS; no provider checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `68b3d1de343ef1164d389925a9f45d4dc1106de2` | Review-thread disposition | RESOLVED Codex P2 (shimmer already wired) + CodeRabbit reduced-motion shimmer kill (explicit `animation: none` on `::after`). Threads replied + resolved. | prior tip PR required SUCCESS; awaiting exact-head recheck; no provider checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | tip-after-ledger-dedupe | Ledger hygiene | Dropped 1 exact-duplicate #1306 row introduced by ledger merge=union during main sync; first copy retained. | check:branch-review-ledger PASS; no provider checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `9997ac9944e7e67135570cd86cc056da5d84aa0a` | Ledger hygiene closeout | SUPERSEDES prior placeholder tip row. Dropped 1 exact-duplicate #1306 record from merge=union; motion/a11y product tip unchanged (`68b3d1de` + main sync). | check:branch-review-ledger PASS; awaiting exact-head hosted CI; no provider checks. | -| 2026-07-28 | PR #1297 / `motion-audit-fixes-clean` | `8ef0c1b2d63451c51e8886e8ea076aad56498576` | CI babysit + Bugbot + review closeout | READY. Motion audit complete (ISSUE-02/05, IMP-01/02/04); reduced-motion shimmer kill; overlap gotoHome flake hardened; main synced; RAM-guard conflicts adopted main's ALLOW_LOW_RAM_BUILD. Codex + CodeRabbit threads resolved. Hosted PR required SUCCESS. | Hosted Build/Static/Unit/Advisory/Production UI/PR required SUCCESS; Bugbot clean; no provider checks. | -| 2026-07-28 | PR #1305 / `execute-audit-remediation-fixes` | `4141ca3a737cdea51fe948f6e03599d3755930fa` | Ledger dedupe + CodeRabbit thread closeout | FIXED Static PR ledger guard: removed 1 exact-duplicate #1306 row from merge=union. CodeRabbit autofix threads (outstanding-issues row, z-index matcher, CardTitle ref, OverlayProvider deps) replied and resolved; OverlayProvider context value memoized. Adopted main RAM-guard. | check:branch-review-ledger PASS; Build/Unit green on prior tip; no provider-backed checks. | -| 2026-07-28 | PR #1310 / claude/branch-review-ledger-fixes-42575f | 7c870c139211a419fe8b4dfacae3195a7a7caa2b | PR babysit: CI + Codex P2s + Bugbot-equivalent | Hosted PR required SUCCESS on 7c870c13. Fixed 3 Codex P2s (exact scope match, supersede mints distinct scope, verify full SHAs via git rev-parse) plus n/a-embedded hex and parenthetical ref-token false matches. 3 review threads replied+resolved. Mergeable; 0 behind main. Hosted Cursor Bugbot check not produced — bot-authored bugbot run/cursor review comments ignored; local Bugbot-style review done and defects fixed. | check:branch-review-ledger PASS; vitest repo-hygiene 25/25; lint; typecheck; full vitest 4133 pass; hosted Static/Unit/Build/Safety/PR-required SUCCESS. No provider-backed gates. | -| 2026-07-28 | PR #1305 / execute-audit-remediation-fixes | 71ed5083616acff5b820069f2fd9835eab92ec88 | CI/conflict babysit + Bugbot + ledger merge residue | FIXED. Merged origin/main (#1310 ledger repair); converted 4 merge-residue heading records into table form (unique 2026-07-26 review kept as six-cell row). PR MERGEABLE + PR required PASS on this tip. Unresolved review threads 0. Bugbot-equivalent product-diff review: no P0/P1/P2; @cursor review requested. Trust gating + upload fail-closed + SettingsStateProvider + phone chrome viewport breakpoints retained. | check:branch-review-ledger PASS; focused vitest 41/41; hosted PR policy/Static/Build/Unit/Safety/Advisory/Production UI/PR required PASS; no provider-backed checks. | -| 2026-07-28 | codex/universal-search-live-test-fix | 9f5994069cddb8a58308d9d5acb9403948a7f617 | live universal-search owner test handoff | APPROVE. Test-only fix aligns live owner coverage with the intentional federated and focused document timeout contract; no production behavior changed. | Node TypeScript syntax PASS; git diff --check PASS; full local gates blocked by an active exclusive repository lease; hosted required checks pending; no live provider tests run. | -| 2026-07-28 | PR #1296 / `css-layout-audit-complete` | `067a17f8` | Resolve merge conflict with main | FIXED. GitHub CONFLICTING/DIRTY was 2 commits behind main (#1310 ledger repair + #1320 search test). `git merge origin/main` completed with ort auto-merge (ledger repaired by main); no content conflicts in product files. Unique CSS layout audit delta retained. | `check:branch-review-ledger` PASS; merge-tree clean vs origin/main; no provider checks. | -| 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 ', 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 | cursor/search-correctness-030-075-6273 | 134b006b7ff42412e727292c6c03fa4c404252ae | six-pr-consolidation | close-superseded: already on main via #1177/#1204/#1215 | diff-vs-main,merge-tree,gh-merged-history | -| 2026-07-28 | codex/chat-mode-page-navigation-2328 | db7fee69d13239de92800ff83e85610884bdde7d | six-pr-consolidation | ported-to-#1336; tip closed | diff-vs-main,merge-tree,port-review | -| 2026-07-28 | claude/pr-policy-caveman-fix-6875bb | 29c58693d6e63f8174386e6a8cdc94e39f0f8343 | six-pr-consolidation | ported-to-#1335; tip closed | diff-vs-main,content-proofread | -| 2026-07-28 | codex/chat-top-nav-mockups-b3ce | b8f4c658412d8f546f47b64b77e7f274a11018ff | six-pr-consolidation | close-superseded: mockups via #1278 | diff-vs-main,gh-merged-history | -| 2026-07-28 | codex/backlog-diagnostics-reconciliation | c0e8a126bfdba0e7ee22ba8da236c452592524b7 | six-pr-consolidation | close-superseded: canary/eval already on main | diff-vs-main,merge-tree | -| 2026-07-28 | codex/comparison-alias-distinctness | 9f93b1a56fa557e15fa1df8526d28d0b10bd1d21 | six-pr-consolidation | close-superseded: matcher evolved on main | diff-vs-main,merge-tree | -| 2026-07-28 | cursor/pr-policy-caveman-docs-dc4e | e449eccc7e050736519588a89d2c35b2348e4380 | pr-1335 | docs-ready: caveman×pr-policy guidance | content-proofread | -| 2026-07-28 | cursor/mode-secondary-navigation-dc4e | 3712edca0a4ea0638668d316c8696a695d180256 | pr-1336 | nav-port-ready; UI chrome gate pending | vitest-51+58+4186,tsc,eslint | -| 2026-07-28 | cursor/pr-policy-caveman-docs-dc4e | c0fe85980b998a7790e99e4a0ab4a04c01934536 | pr-1335 | docs-ready: caveman×pr-policy + consolidation ledger | content-proofread,check:branch-review-ledger | -| 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. | -| 2026-07-28 | PR #1304 / fix-test-run-lock | 7cc32c053c752bef19f3de408a1376428e54af74 | CI babysit: sync main | SUPERSEDED (documenting stale-CI ledger error). Prior row for this HEAD incorrectly treated hosted required-CI SUCCESS on earlier tip e6b826ed9150f312c2e7a957f715019e73a7f0be as verification of this later merge commit 7cc32c05. No hosted required-CI result exists for this exact SHA. This ref has since advanced; the later row at 463e5c0adc77fe722e20376666f5991db3e288d9 recorded exact-tip hosted CI SUCCESS, so this commit's status is historical/superseded. | No hosted CI run on this exact HEAD; prior row reused results from e6b826ed; corrective ledger entry only. | -| 2026-07-28 | claude/close-knip-false-positive | 81ae7de27688fda09c6142adba55a2a76b2ceec2 | PR #1340 babysit / CI+Bugbot | MERGE-READY for docs-only tip. No failing CI; PR required SUCCESS; Static PR checks SUCCESS; no merge conflicts (0 behind / 1 ahead of origin/main; merge-tree clean); 0 unresolved review threads; 0 Bugbot/cursor[bot] findings. Claim revalidated: npm run check:knip exits 0 after install. No code/config fix needed. Residual: human approving review / merge decision. | hosted CI PR required+Static SUCCESS; local check:runtime, lock-parity, lint, typecheck, format:changed, docs:check-links, docs-script-refs, check:knip; Bugbot none | -| 2026-07-28 | claude/close-knip-false-positive | f39ca98a7aed4cda8bf8980490adb79266891fb9 | prlanded | LANDED. Squash f39ca98a on main contains the docs/outstanding-issues.md #087 archive. Product tip 81ae7de2 matches squash content. Late babysit ledger row on 664b8fa1 was orphaned by auto-merge race and is fix-forwarded in this PR. | gh pr view MERGED; two-dot diff squash vs 81ae7de2 empty; two-dot vs late tip = ledger only; check:knip 0; hosted PR required green before merge | -| 2026-07-28 | PR-1298 | de14ee2c45cbd0cb5a3b366febef70bcc2ea245e | PR #1298 full diff vs origin/main | BLOCKED: protected RAG behaviour change lacks required live baseline-to-post canary | Local diff review found no additional high-confidence P0-P2 defect; prior exact-head PR required passed; offline Vitest is insufficient for ranking trust; no provider-backed canary run | -| 2026-07-28 | PR #1316 / `claude/top-search-design-mockups-w53znc` | `8ccd7f481819ae4b41352acf9d867b2b850696be` | CI/review closeout: remaining band review gaps | FIXED. Prior Production UI failure on older tip was Suspense duplicate `global-search-input` (addressed earlier). Tip closes 7 unresolved review threads: favourites partial-status + refetch, differentials unauthorized copy, docs typography, forced-colors adoption gate, forms/loading control suppression confirmation. Merge-tree clean vs main; hosted CI rerunning on this head. | Focused vitest 38/38; tsc + eslint on touched files PASS; no Bugbot MCP available in this environment; no provider-backed checks. | -| 2026-07-28 | claude/top-search-design-mockups-w53znc | af07e34b5e6ca958206926a05509c1e321dbe862 | bugbot SearchResultsHeaderBand favourites status | P1: favourites status override under-reports registry faults when any items exist; empty/filter guards use overridden status; registryStatus unused. P2: demo prototype merge still over-faults band. No code change. | static review of band/favourites/diff call sites; offline fold proof; PR thread context; no provider/CI | -| 2026-07-28 | PR #1316 / `claude/top-search-design-mockups-w53znc` | `1c65a083e8307f108774b0c3a3fb96559c42ee0d` | CI/review closeout complete | READY FOR HOSTED CI. All review threads resolved. Account-favourites pending/failure folded into band status; remaining Codex/CodeRabbit gaps closed; Bugbot residual noted (binary band cannot express partial source failure without a dedicated `partial` status). Merge-tree was clean vs main at prior tip; CI rerunning on this head. | Focused vitest 43/43; tsc/eslint PASS on touched files; Bugbot via pr-bugbot subagent (no MCP Bugbot server); no provider-backed checks. | -| 2026-07-28 | PR-1296 | 58a6fe241de122c81822a5f60064cc2c49b2f245 | PR #1296 full diff vs origin/main | FIXED P1 z-index ladder bypass; approve after exact-head CI | Removed semantic z-index utilities that lowered established overlay rungs and bypassed main lint; diff check pending; prior exact-head PR required and Production UI passed; refreshed exact-head CI pending | -| 2026-07-28 | PR #1337 / claude/circleci-config-decision-f1efc6 | eb2f8f867de13ca64fbdb5e95242e7e5067be6dc | CI babysit: CircleCI verify + Codex P2s | FIXED. Root causes: (1) CircleCI missing PyMuPDF/pip so CI=1 pdf-extractor prerequisite failed; (2) naive docs-only md regex false-greened policy Markdown; (3) Bugbot P1: non-root npm install -g fails on cimg/node. Fixed by ci-change-scope docs_only halt, apt python3-pip + PyMuPDF==1.28.0, npm 11.x assert. Both Codex threads resolved. brace-expansion already on main via #1314. | format:check; contract Vitest 5/5; pdf-extractor 6/6 with CI=1+PyMuPDF; typecheck; lint; Bugbot re-review no remaining bugs; hosted CI/CircleCI re-running on eb2f8f86 | -| 2026-07-28 | PR #1337 / claude/circleci-config-decision-f1efc6 | e9bcebb9ef7baddb2eed961bf40bbd89a358b41b | CI babysit: CircleCI verify green | FIXED. Root cause of CircleCI red: cimg/node:24.9 fails engine-strict npm ci because @babel/parser requires Node >=24.11. Switched to cimg/node:24.18. Also addressed Codex P2s (ci-change-scope docs-only; PyMuPDF venv+PYTHON_BIN). Hosted ci/circleci: verify SUCCESS on tip; GH PR required SUCCESS. Codex threads previously resolved. | circleci config validate; contract Vitest 6/6; hosted CircleCI verify SUCCESS (job 225); hosted PR required/Static/Unit SUCCESS | -| 2026-07-28 | cursor/mode-secondary-navigation-dc4e | ea9f74062269cc820af5fdc9d3d1ce09e5cf0a4a | pr-1336-babysit | fixed P1 Suspense+DocumentViewer double-nav; P2 documents/search gate; CI babysit | verify:cheap,vitest-70+4189,tsc,eslint,build | -| 2026-07-28 | cursor/mode-secondary-navigation-dc4e | e33997dbdd4a62689ff17ff1f536d9e830ae22ad | pr-1336-babysit | fixed Codex P1 horizontal scroll + P2 service section ids; merged main | vitest-62,eslint,tsc | -| 2026-07-28 | PR #1336 / cursor/mode-secondary-navigation-dc4e (merged) | b92c2721f942e4a35b09af2151b327cbb989b2b2 | prlanded | LANDED babysit tip: Suspense bridge, DocumentViewer ownership, horizontal chip scroll, service section ids; PR required + Production UI green before squash | hosted-pr-required,production-ui,static,unit,build,verify:cheap | -| 2026-07-28 | claude/top-search-design-mockups-w53znc | 9731a9e35fdd036e039f88cbe1f8ccb0f99e9fdc | PR #1316 tip WIP: #024 status + favourites count suppress + therapy retry settle | no high-confidence P0/P1; residual #091 partial-count trust + search-band onRetry dead behind workspace error gate | vitest favourites-hub-unavailable-controls + therapy-compass-data-recovery (7 passed); static review of uncommitted diffs | -| 2026-07-28 | PR #1316 / `claude/top-search-design-mockups-w53znc` | `9bace1d1b359df5c9a87c40be1e374a89976fd2a` | CI/review closeout: #024 prose, favourites counts, therapy retry settle | FIXED open threads. CodeRabbit #024 contradiction corrected in prose (item stays open). Codex favourites counts suppressed until trusted. Codex therapy retry returns settling Promise + busy coverage. Merged latest main (clean). Bugbot: no P0/P1. Residual #091 partial-count trust; search-band onRetry still behind workspace error gate (workspace Retry uses loading). | full vitest 4229 passed / 4 skipped; typecheck; eslint touched; check:branch-review-ledger; Bugbot via pr-bugbot | -| 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 | open-prs@2026-07-28 | ac786b3553252df48bd13ef414afbcc62e1b41e9 | open-pr-usefulness | TRIAGE of 19 open PRs vs origin/main ac786b35: CLOSE #1364 (author throwaway), #1322 (superseded by #1335), #1352 (stale continuation of merged #1305; 595 behind; real merge-tree conflicts; deletes private-access tests / diverges answer+upload). KEEP product: #1366 Claude settings diagnostic, #1365 issues #096/#097, #1335 caveman×pr-policy docs, #1360 npm-ci CI, #1361 sheet max-h, #1362 calculator/therapy mockups, #1311 doc-nav mockups+viewer, #1351 error/a11y audit, #1298 sheet-focus/P2 tests, #1295 tablet mode-home, #1268/#1269/#1267 dependabot. FOLD ledger-only #1353+#1341+#1363 into one hygiene PR then close the extras. Order: land #1335 before depending on caveman guidance; sync #1361 vs #1298 (same sheet.tsx, different deltas); refresh #1267 after #1366; do not land #096's seven unrun follow-ups piecemeal. | gh-pr-list; git-fetch-prune; ahead/behind+cherry-pick+merge-tree per tip; three-dot file inventory; overlap matrix; #1305 MERGED proof; content compare SettingsStateProvider/Overlay/z-ladder already on main; #1335 body supersedes #1322; no provider checks; no closes performed | -| 2026-07-28 | PR-1298 | 56536a4d00a5fc799025522d2dbe98377721837e | PR #1298 final remediation vs current origin/main | APPROVE after exact-head CI; unvalidated retrieval behaviour removed, remaining changes are UI/test hardening | Protected clinical-search and retrieval-variant production files match origin/main byte-for-byte; merge-tree clean; ledger guard PASS; diff check PASS; verify:pr-local dry-run selected full local gate; local execution unavailable because node_modules is absent; RAG impact no retrieval behaviour change | -| 2026-07-28 | claude/navigation-pane-mockups-0600af | 8fb9867483104a5cc89eec5cfb512e1ca8718029 | PR #1311 CI/review fix | Fixed maintainability budget (DocumentViewer extract), sticky-header anchors/rail, lg-only section card, section reading order + non-collapsible source-text; dispositioned CodeRabbit mockup wiring as exempt; 0 unresolved threads; Bugbot none | verify:cheap PASS (419 files/4256 tests); maintainability 1633/1734; vitest section+account-access; eslint/typecheck; sitemap:check; Bugbot none | -| 2026-07-28 | claude/navigation-pane-mockups-0600af | 29372bb5a53df26902bef53f8a1cb5dd4be5b239 | PR #1311 CI/review fix | Supersedes prior head: Prettier format:check was the remaining Static PR / CircleCI blocker; formatted 8 files. Product fixes unchanged; 0 unresolved threads. | format:check PASS; maintainability budgets; prior verify:cheap retained | -| 2026-07-28 | codex/consolidate-platform-reliability | aa178d6465ff9aeb92b02766f4accff522c0f8a8 | dirty-work consolidation review | APPROVE. Retained reproducible npm-cache installs, explicit dev dependency installs, toolchain parity coverage, and corrected ops preflight wording. Rejected contaminated image work, fail-open audit behavior, duplicated assets, visual-regression machinery, and the unsafe primary-checkout stale-lease recovery. | git diff --check; focused Vitest 8/8; check:github-actions; check:installed-lock-parity; verify:cheap PASS (412 files, 4199 passed, 3 skipped); no provider checks. | -| 2026-07-28 | codex/consolidate-navigation-overlays | 2e30b2bb39a99a48fc95fd76374520ce592f5854 | dirty-work consolidation review | APPROVE. Retained only current-main-compatible responsive sheet max-height precedence. Rejected stale sidebar/routes, calculator removals, broken overlay imports, and focus/inert regressions. | git diff --check; focused sheet DOM Vitest 6/6; verify:cheap PASS (412 files, 4199 passed, 3 skipped); no provider checks. | -| 2026-07-28 | codex/consolidate-design-mockups | d120dbcca5ab4c5caab85176aace052788320405 | dirty-work consolidation review | APPROVE. Isolated calculator and therapy-navigation experiments under mockup routes, kept production calculators/navigation unchanged, and fixed the final decorative-icon accessibility lint finding. | boundary Vitest 3/3; design-system contract PASS; sitemap PASS; mockup Playwright 16/16; verify:cheap PASS (413 files, 4201 passed, 3 skipped); 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 | | 2026-07-29 | claude/latency-findings-impl-s8g01v | 78e2beb89b646c3d5c2d4745e3f2f692f9ba61a0 | latency audit implementation (PR #1377) | Implemented the free/flag-gated findings of docs/audit/latency-audit-2026-07-28.md after PR #1312 closed unmerged: Server-Timing preamble on answer/stream/search, scope-vs-ratelimit overlap with abort, deferred shared-cache-hit write, narrowed table-facts projections, medication catalogue memo, 10 loading fallbacks, Supabase preconnect. L2-3/L2-5 authored as operator SQL only; supabase/ untouched. L4-2 retracted as deliberate. Remainder filed as ledger 098-105. | verify:cheap exit 0; verify:pr-local exit 0 (418 files, 4244 passed/4 skipped, build compiled 59s, client bundle scan passed, 36 golden cases validated) | | 2026-07-29 | claude/clinical-design-system-update-e34ca9 | 19b0de8d5f095b1560032e7e31d6e39a88b75415 | Clinical Sky design-system token port: accent ramp, five-step surface scale, --e0-e4 elevation ladder, status/identity contrast, 4px radius grid, type-scale floor, tracking/leading tokens, brand+pre-paint+print-palette drift fixes, new design-token contract test | PR #1375 opened; no auto-merge (user review of visual change pending) | verify:pr-local 418/418 files 4265 tests; verify:cheap green; verify:ui 323 passed with load-race failures re-verified idle; header-overlap race fixed stable x4; live token readback both schemes | -| 2026-07-28 | claude/navigation-pane-mockups-0600af | 7cde973ac8983daef4b274618e83a706bcb9a22a | PR #1311 CI/review fix | Supersedes prior: merged main (clean), fixed CodeRabbit section-spy test harness/assertions; 0 unresolved threads; mergeable; Static/CircleCI previously green on prettier head | vitest document-section-nav 8/8; merge-tree clean vs origin/main; format:check prior PASS; verify:cheap prior PASS | -| 2026-07-28 | claude/navigation-pane-mockups-0600af | b5e71179b1210ce208094ee9c7dfc7665511ecf1 | PR babysit #1311 | ci-retrigger: parent tip bdddc44b green (Static/UI/PR-required); empty tip skipped Actions CI; pushed non-empty ledger to queue checks | parent-bdddc44b: static-pr+ui-critical+pr-required+circleci green; tip-b5e71179: awaiting Actions CI after empty-commit skip | -| 2026-07-28 | PR #1371 / cursor/document-viewer-ci-guards-eac3 (merged) | 64be97b96b46617e63f7d004fef4f9bcb14bf710 | open-pr-merge-sweep | MERGED. Useful Production UI drift guards (document-overview id ownership + phone section sheet selectors). Draft→ready; sync main; squash+delete-branch. | hosted-pr-required,static,unit,circleci,merge-tree-clean | -| 2026-07-28 | PR #1353 / cursor/pr-1336-ledger-closeout-dc4e (merged) | 7581cfcb29197449fd728995a4b47a0ec46b9824 | open-pr-merge-sweep | MERGED. Ledger-only prlanded for #1336 was missing on main; fold/sync+squash. Row retained. | hosted-pr-required,static,circleci,merge-tree-clean | -| 2026-07-28 | PR #1352 / execute-audit-remediation-fixes | dcdcb5b2b0546eddbb5bfd6efdb68122be2eabaa | open-pr-merge-sweep | SKIP-CLOSE confirmed: stale continuation of merged #1305; REAL merge-tree conflicts across answer route, ClinicalDashboard, OverlayProvider, z-index ladder, private-access tests, etc. Close attempted → 403. | merge-tree-conflicts,gh-pr-1305-MERGED | -| 2026-07-28 | PR #1351 / audit-design-fixes-clean | dcf0844d4ec715dcb32ddd3fc958d731a8657cb4 | open-pr-merge-sweep | LEFT OPEN for other agent (EmptyState/actions + audit a11y). Head advanced during sweep; do not steal. MERGEABLE/BEHIND at handoff. | coordination-leave;no-product-edit | -| 2026-07-28 | PR #1341 / cursor/pr1340-ledger-prlanded-c9d2 (merged) | dc23e8cce6b00c042cb367cf7397b1d11b72dc37 | open-pr-merge-sweep | MERGED. Ledger babysit+prlanded for #1340 missing on main; fold/sync+squash. | hosted-pr-required,static,circleci,merge-tree-clean | -| 2026-07-28 | PR #1335 / cursor/pr-policy-caveman-docs-dc4e (merged) | fd5651c821426605df0cb9df44236d6c67e65f41 | open-pr-merge-sweep | MERGED ledger fold. Product AGENTS/handoff already on main via #1322 (two-dot empty). Fixed Codex P2: pr-* ledger refs → resolvable branch names; resolved blocking thread (reply 403). | hosted-pr-required,static,circleci,resolveReviewThread | -| 2026-07-28 | PR #1268 / dependabot/npm-production (merged) | 1753c0bf4f3d236ba23a42afb1620156d8586484 | open-pr-merge-sweep | MERGED prod deps: next/env/supabase/lucide/openai/react 16.2.12/2.110.8/1.27/6.49/19.2.8. Sync+auto after hung Bundle budget retrigger. | hosted-pr-required,static,unit,build,containers,circleci | -| 2026-07-28 | PR #1269 / dependabot/npm-development (merged) | dee52deb44271e99dde8021513471eba1a1955d5 | open-pr-merge-sweep | MERGED after #1268 (lockfile order). Dev bumps: bundle-analyzer/eslint-config-next 16.2.12, playwright 1.62, prettier 3.9.6. | hosted-pr-required,static,unit,build,circleci | -| 2026-07-28 | PR #1267 / dependabot/github-actions (merged) | 359b0e1a21a489978f00df8075ebcd906d57de4b | open-pr-merge-sweep | MERGED. Allowlisted anthropics/claude-code-action be7b93b (v1.0.183 peeled tag) in github-action-pins.mjs; pin check PASS. | hosted-pr-required,static,unit,check-github-action-pins,tag-peel-verify | -| 2026-07-28 | PR #1351 / audit-design-fixes-clean (merged) | c2ec2d75553e7718fd89194cbc8362d9905151d3 | open-pr-merge-sweep | MERGED after EmptyState actions= fix, DocumentViewerRail re-home, review-thread clearance. Supersedes prior LEFT OPEN handoff row. | hosted-pr-required,static,build,production-ui,merge-tree-clean | -| 2026-07-28 | PR #1352 / execute-audit-remediation-fixes (closed) | dcdcb5b2b0546eddbb5bfd6efdb68122be2eabaa | open-pr-merge-sweep | CLOSED as superseded junk: stale continuation of merged #1305 with real merge-tree conflicts. Supersedes prior SKIP-CLOSE 403 row; closed via ManagePullRequest. | merge-tree-conflicts,gh-pr-1305-MERGED,manage-pr-close | | 2026-07-29 | main | 70e5101c320088a79cdffaac7be82ec9534d4ac7 | last-100-prs-bug-review | FINDINGS+FIXES: P1 safety-plan example shareable; P1 signed-url cache after logout; P2 diagnostics query leak; P2 search non-indexed fallback; P2 not-found copy; RAG P1/P2 deferred (needs approval). Fixes in PR #1374. | focused-vitest 1415 pass; static review via 5 subagents; no provider/RAG canary | | 2026-07-29 | origin/main | 02144ab6e5f2040110cc5e15cfcd15455c2a0615 | cross-page PWA search composer click-close defect | P1 confirmed; explicit gesture-only focus release implemented locally | manual PWA/browser repro; focused Vitest 48/48; typecheck | | 2026-07-29 | codex/search-composer-focus-pwa | f9a14e8e38a568d8675c4154597f73340161e4ea | current diff vs origin/main: PWA search composer focus | P1 fix reviewed; passive viewport scroll no longer blurs search | focused Vitest 48/48; typecheck; ledger guard; phone and PR plans inspected | @@ -1314,7 +118,6 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie | 2026-07-30 | PR #1394 / `claude/top-search-design-mockups-w53znc` | `8c39158d99876338613d5bb3195847fd253ef5ff` | CI/review closeout: /tools page-only roots + thread disposition | FIXED. Layout false-positive for `/tools` closed via `isStandaloneModeHomePath` in reachabilityRoots. Import-as-rendered finding left as `#115` (pre-existing; lint catches the plausible slip). Both Codex threads dispositioned. Merge clean vs main. | vitest adoption 6/6; full unit 4451 passed / 4 skipped; typecheck; prettier; Bugbot pr-bugbot | | 2026-07-30 | PR #1394 / `claude/top-search-design-mockups-w53znc` | `d658f120253ac0a2dbfe1c9b1a14c6a0744af14d` | CI/review closeout tip (supersedes 8c39158d row) | FIXED layout `/tools` false-positive; `#115` deferred with human disposition; threads resolved; merge-tree clean; CI settling | vitest adoption 6/6; full unit 4451/4; typecheck; Bugbot | | 2026-07-30 | PR #1394 / `claude/top-search-design-mockups-w53znc` | `4a001efadedea6e8f8ad59ac7374ff9293cf7e14` | CI/review closeout after format + main sync | FIXED. Tip `66c5eb2c` failed Static PR / CircleCI solely on prettier padding in `#096` row; fixed on `61314887`. Main synced via `4a001efa` (shallow-clone inventory refusal from #1392). No open review threads; layout/`/tools` false-positive already fixed; `#115` remains deferred. No product-code change this pass. | format:check pass; Static PR pass; Unit coverage pass; PR required pass; CircleCI pass; vitest adoption 6/6; typecheck; Bugbot no open P0/P1; merge-tree clean vs main | -| 2026-07-28 | claude/pr-policy-caveman-fix-6875bb | ebd169358d1d1c9c596a486c12d51101cb5860ee | PR policy caveman-mode carve-out (docs-only) | Opened via reopened PR #1322; merged origin/main (real conflict in handoff SKILL.md resolved by hand, both step-6/step-7 edits kept); squash-auto-merge enabling | check:pr-policy self-test+workflow-guard PASS; prettier --check PASS; lint PASS 0 warnings; typecheck/test/rag:fixtures not run locally (cross-worktree heavy-lock contention, docs-only diff, deferred to hosted CI); no provider-backed checks | | 2026-07-30 | claude/test-coverage-analysis-2vcd8a | 4f498b66a56b2a7eddde6c841a79621f23b59cc7 | PR #1398 babysit | BLOCKER CLEARED: CONFLICTING due to docs/outstanding-issues.md vs main (#115 band-adoption follow-up). Kept main #115 + next-id=116; preserved PR #109 single-branch/refspec update. Prior tip had no GitHub CI suite (only PR Policy/CircleCI) — push retriggered full CI. 0 review threads; 0 Bugbot findings. | verify:cheap PASS (432 files, 4467 passed \| 4 skipped); repo-hygiene 38/38; sweep:branch-ledger --no-fetch exit 0; format:changed PASS; Bugbot none; hosted CI re-triggered on tip | | 2026-07-30 | PR #1394 / `claude/top-search-design-mockups-w53znc` | `0d47141fc030684299dcb265e3d853c93b9e2a91` | CI/review closeout — merged | MERGED as squash `0d47141f`. Prior tip `4a001efa` had required CI green after prettier fix `61314887` (Static PR/CircleCI red on `#096` padding) and main sync. Layout/`/tools` false-positive fixed; `#115` deferred; review threads resolved. Post-merge ledger-only follow-up. | hosted Static/Unit/PR-required/CircleCI pass on pre-merge tip; vitest adoption 6/6; typecheck; Bugbot no open P0/P1; merge-tree clean | | 2026-07-30 | cursor/pr-1394-ledger-closeout-c2bf | f734dc4d4c8b19d5fec43bbd388c2a421e47668a | PR #1399 babysit / CI+Bugbot closeout | MERGE-READY. No failing CI, no unresolved review threads, merge-tree clean vs origin/main, Bugbot no bugs. Docs-only ledger append for merged #1394; no code fix required. | hosted PR required SUCCESS; Static PR SUCCESS (lint/typecheck/format/ledger); CircleCI verify SUCCESS; local check:branch-review-ledger PASS; prettier PASS; lint PASS; Bugbot pr-bugbot no findings | diff --git a/docs/maturity-backlog-workorders.md b/docs/maturity-backlog-workorders.md index 10ee6b39ea..d0aa95e95a 100644 --- a/docs/maturity-backlog-workorders.md +++ b/docs/maturity-backlog-workorders.md @@ -210,11 +210,14 @@ structural change, not a single mixed PR. - **Files:** `scripts/check-gate-manifest.mjs`, `package.json`, `.github/workflows/ci.yml`. - **Verification:** the self-test passes (20 gates) and fails if the two lists diverge. -### L4 · Rotate the branch-review ledger — `OPEN` - -- **Outcome:** `docs/branch-review-ledger.md` (361 KB, append-only) stays navigable. -- **Approach:** archive entries older than a quarter into `docs/archive/branch-review-ledger-.md`; - keep the live ledger to the current quarter. +### L4 · Rotate the branch-review ledger — `DONE` + +- **Outcome:** `docs/branch-review-ledger.md` stays navigable; historical rows live under + `docs/archive/branch-review-ledger-.md`. +- **Approach:** `npm run ledger:rotate` moves rows older than a cutoff (default: current + calendar-quarter start); `ledger:lookup` / `sweep:branch-ledger` read live + archives; + `check:branch-review-ledger` validates archive structure. Bootstrap on 2026-07-30 used + `--before 2026-07-29` because the whole history was one month old. - **Risk:** low. ### L5 · Documentation quick-wins — `DONE` / `SATISFIED` diff --git a/package.json b/package.json index 2b9528ae18..c5b53e96fe 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ "check:outstanding-issues": "node scripts/check-outstanding-issues.mjs --self-test && node scripts/check-outstanding-issues.mjs", "ledger:lookup": "node scripts/branch-review-ledger.mjs lookup", "ledger:append": "node scripts/branch-review-ledger.mjs append", + "ledger:rotate": "node scripts/branch-review-ledger.mjs rotate", "check:pr-policy": "node scripts/pr-policy.mjs --self-test && node scripts/check-pr-policy-workflow.mjs", "check:env-parity": "node scripts/check-env-parity.mjs", "sweep:branch-ledger": "node scripts/sweep-branch-ledger.mjs", diff --git a/scripts/branch-review-ledger.mjs b/scripts/branch-review-ledger.mjs index 67fd5455cc..3969d887d6 100644 --- a/scripts/branch-review-ledger.mjs +++ b/scripts/branch-review-ledger.mjs @@ -12,28 +12,151 @@ * * node scripts/branch-review-ledger.mjs lookup [--head ] [--scope ] [--json] * node scripts/branch-review-ledger.mjs append --ref --head --scope --outcome --checks + * node scripts/branch-review-ledger.mjs rotate [--before YYYY-MM-DD] [--dry-run] * node scripts/branch-review-ledger.mjs --self-test * * `lookup` answers the only question the ledger is for: has this exact ref at this exact - * HEAD already been reviewed for this scope? `append` writes one valid row, in UTF-8, - * with the cells escaped and the HEAD resolved to a full SHA. + * HEAD already been reviewed for this scope? It reads the live ledger plus any + * `docs/archive/branch-review-ledger-*.md` files. `append` writes one valid row to the + * live file only. `rotate` moves dated records older than a cutoff into a quarterly + * archive file so the live table stays navigable (maturity L4). * - * Read-only except for `append`, which only ever adds one line at the end of the file. - * Never calls a provider or a network service; `git rev-parse` is local. + * Read-only except for `append` / `rotate`. Never calls a provider or a network service; + * `git rev-parse` is local. */ import { execFileSync } from "node:child_process"; -import { appendFileSync, readFileSync } from "node:fs"; +import { appendFileSync, existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; const root = path.join(path.dirname(fileURLToPath(import.meta.url)), ".."); const LEDGER_PATH = "docs/branch-review-ledger.md"; +const ARCHIVE_DIR = "docs/archive"; +const ARCHIVE_PREFIX = "branch-review-ledger-"; /** Cell separator: a literal `|` that was not escaped as `\|` inside prose. */ export const CELL_SPLIT = /(? readFileSync(path.join(root, relative), "utf8")) + .join("\n"); +} + +function splitLedgerMarkdown(markdown) { + const lines = markdown.split(/\r?\n/); + const preamble = []; + const records = []; + const trailing = []; + let seenRecord = false; + for (const line of lines) { + if (RECORD_START.test(line)) { + seenRecord = true; + records.push(line); + continue; + } + if (!seenRecord) preamble.push(line); + else trailing.push(line); + } + return { preamble, records, trailing }; +} + +function archivePreamble(label) { + return [ + `# Branch Review Ledger Archive — ${label}`, + "", + "Historical review records rotated out of `docs/branch-review-ledger.md` so the live", + "table stays navigable. Do not hand-edit. `npm run ledger:lookup` reads this file", + "together with the live ledger. New reviews append only to the live file.", + "", + "| Date | Branch or ref | Reviewed HEAD | Scope | Outcome | Checks |", + "| --- | --- | --- | --- | --- | --- |", + ].join("\n"); +} + +/** + * Move live dated records with date < before into quarterly archive files. + * Returns counts; does not delete unique review content. + */ +export function rotateLedgerMarkdown(liveMarkdown, { before, existingArchives = new Map() } = {}) { + if (!/^\d{4}-\d{2}-\d{2}$/.test(before)) { + throw new Error(`before must be YYYY-MM-DD (got ${JSON.stringify(before)})`); + } + const { preamble, records, trailing } = splitLedgerMarkdown(liveMarkdown); + const keep = []; + const byLabel = new Map(); + for (const line of records) { + const date = line.slice(2, 12); + if (date < before) { + const label = archiveQuarterLabel(date); + if (!byLabel.has(label)) byLabel.set(label, []); + byLabel.get(label).push(line); + } else { + keep.push(line); + } + } + + const archives = []; + for (const [label, moved] of [...byLabel.entries()].sort(([a], [b]) => a.localeCompare(b))) { + const relative = path.join(ARCHIVE_DIR, `${ARCHIVE_PREFIX}${label}.md`); + const prior = existingArchives.get(relative) ?? ""; + const priorRecords = prior ? splitLedgerMarkdown(prior).records : []; + const seen = new Set(priorRecords); + const mergedRecords = [...priorRecords]; + for (const line of moved) { + if (seen.has(line)) continue; + seen.add(line); + mergedRecords.push(line); + } + const body = prior.trim() ? splitLedgerMarkdown(prior).preamble.join("\n") : archivePreamble(label); + let markdown = `${body}\n${mergedRecords.join("\n")}\n`; + if (!markdown.endsWith("\n")) markdown += "\n"; + archives.push({ path: relative, label, markdown, added: moved.length, total: mergedRecords.length }); + } + + let live = [...preamble, ...keep, ...trailing].join("\n"); + if (!live.endsWith("\n")) live += "\n"; + return { + liveMarkdown: live, + archives, + moved: records.length - keep.length, + kept: keep.length, + }; +} + /** Parse the six cells of every review record. Non-record lines are ignored. */ export function parseLedgerRows(markdown) { const rows = []; @@ -195,7 +318,7 @@ function summarize(row) { return ` ${row.date} ${row.head.replace(/`/g, "").slice(0, 12).padEnd(12)} ${row.scope}\n ${outcome}`; } -function runLookup(markdown, argv) { +function runLookup(_liveMarkdown, argv) { const { flags, positional } = parseFlags(argv); const ref = positional[0] ?? flags.ref; if (!ref || ref === true) { @@ -205,16 +328,19 @@ function runLookup(markdown, argv) { } const head = flags.head && flags.head !== true ? resolveHead(flags.head) : resolveHead(ref); const scope = flags.scope && flags.scope !== true ? flags.scope : ""; + const sources = listLedgerPaths(); + const markdown = readLedgerCorpus(); const { atHead, otherHead } = findReviews(markdown, { ref, head, scope }); if (flags.json) { - console.log(JSON.stringify({ ref, head, scope: scope || null, atHead, otherHead }, null, 2)); + console.log(JSON.stringify({ ref, head, scope: scope || null, sources, atHead, otherHead }, null, 2)); return; } console.log(`ref: ${ref}`); console.log(`head: ${head}${/^[0-9a-f]{40}$/.test(head) ? "" : " (not resolvable to a SHA here)"}`); if (scope) console.log(`scope: exact ${JSON.stringify(scope)}`); + console.log(`files: ${sources.join(", ")}`); console.log(""); if (atHead.length > 0) { @@ -265,7 +391,8 @@ function runAppend(markdown, argv) { normalizeScope(existing.scope) === normalizeScope(scopeValue) && [...appendTokens].some((token) => refTokens(existing.ref).has(token)); - const rows = parseLedgerRows(markdown); + // Near-duplicate checks cover live + archives so a rotated row cannot be re-appended silently. + const rows = parseLedgerRows(readLedgerCorpus()); let scope = String(flags.scope); const near = rows.filter((existing) => sameRefHeadScope(existing, scope)); if (near.length > 0) { @@ -309,6 +436,52 @@ function runAppend(markdown, argv) { console.log(`Appended review record to ${LEDGER_PATH}:\n${row}`); } +function runRotate(liveMarkdown, argv) { + const { flags } = parseFlags(argv); + const before = flags.before && flags.before !== true ? String(flags.before) : calendarQuarterStart(new Date()); + const dryRun = Boolean(flags["dry-run"]); + if (!/^\d{4}-\d{2}-\d{2}$/.test(before)) { + console.error(`refusing to rotate: --before must be YYYY-MM-DD (got ${JSON.stringify(before)})`); + process.exitCode = 1; + return; + } + + const existingArchives = new Map(); + for (const relative of listLedgerPaths().slice(1)) { + existingArchives.set(relative, readFileSync(path.join(root, relative), "utf8")); + } + + let result; + try { + result = rotateLedgerMarkdown(liveMarkdown, { before, existingArchives }); + } catch (error) { + console.error(`refusing to rotate: ${error.message}`); + process.exitCode = 1; + return; + } + + if (result.moved === 0) { + console.log(`No live records dated before ${before}; kept ${result.kept}.`); + return; + } + + console.log( + `${dryRun ? "Would move" : "Moving"} ${result.moved} record(s) dated before ${before}; ` + + `${result.kept} remain in the live ledger.`, + ); + for (const archive of result.archives) { + console.log(` ${archive.path}: +${archive.added} (archive total ${archive.total})`); + } + if (dryRun) return; + + mkdirSync(path.join(root, ARCHIVE_DIR), { recursive: true }); + for (const archive of result.archives) { + writeFileSync(path.join(root, archive.path), archive.markdown, "utf8"); + } + writeFileSync(path.join(root, LEDGER_PATH), result.liveMarkdown, "utf8"); + console.log(`Rotated ${result.moved} record(s) out of ${LEDGER_PATH}.`); +} + function assert(condition, label) { if (!condition) throw new Error(`self-test failed: ${label}`); } @@ -386,6 +559,25 @@ function selfTest() { "documented n/a HEAD accepted", ); + assert(calendarQuarterStart("2026-07-30") === "2026-07-01", "Q3 start"); + assert(calendarQuarterStart("2026-10-01") === "2026-10-01", "Q4 start"); + assert(archiveQuarterLabel("2026-07-15") === "2026-q3", "July is q3"); + const preamble = [ + "# Ledger", + "", + "This file is append-only.", + "", + "| Date | Branch or ref | Reviewed HEAD | Scope | Outcome | Checks |", + "| --- | --- | --- | --- | --- | --- |", + ].join("\n"); + const oldRow = `| 2026-07-01 | old/x | ${"a".repeat(40)} | s | o | c |`; + const newRow = `| 2026-07-29 | new/x | ${"b".repeat(40)} | s | o | c |`; + const rotated = rotateLedgerMarkdown(`${preamble}\n${oldRow}\n${newRow}\n`, { before: "2026-07-29" }); + assert(rotated.moved === 1 && rotated.kept === 1, "rotate moves only older rows"); + assert(rotated.archives[0].path.endsWith("branch-review-ledger-2026-q3.md"), "archive path uses quarter label"); + assert(rotated.liveMarkdown.includes(newRow) && !rotated.liveMarkdown.includes(oldRow), "live keeps new only"); + assert(rotated.archives[0].markdown.includes(oldRow), "archive receives old row"); + console.log("branch-review-ledger self-test passed."); } @@ -399,12 +591,18 @@ function main() { const [command, ...rest] = argv; if (command === "lookup") return runLookup(markdown, rest); if (command === "append") return runAppend(markdown, rest); - console.error("usage: branch-review-ledger.mjs [...]"); + if (command === "rotate") return runRotate(markdown, rest); + console.error("usage: branch-review-ledger.mjs [...]"); console.error(" lookup [--head ] [--scope ] [--json]"); console.error( " append --ref --head --scope --outcome --checks [--date ] [--supersede]", ); + console.error(" rotate [--before YYYY-MM-DD] [--dry-run]"); process.exitCode = 2; } -if (process.argv[1]?.endsWith("branch-review-ledger.mjs")) main(); +// Use a path-segment match: `check-branch-review-ledger.mjs`.endsWith("branch-review-ledger.mjs") +// is true and would wrongly run this CLI when the checker imports the module. +const isMain = + process.argv[1]?.endsWith("/branch-review-ledger.mjs") || process.argv[1]?.endsWith("\\branch-review-ledger.mjs"); +if (isMain) main(); diff --git a/scripts/check-branch-review-ledger.mjs b/scripts/check-branch-review-ledger.mjs index feb5c7406f..eeb4362475 100644 --- a/scripts/check-branch-review-ledger.mjs +++ b/scripts/check-branch-review-ledger.mjs @@ -24,6 +24,7 @@ import { execFileSync } from "node:child_process"; import { readFileSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { listLedgerPaths, parseLedgerRows } from "./branch-review-ledger.mjs"; const root = path.join(path.dirname(fileURLToPath(import.meta.url)), ".."); const LEDGER_PATH = "docs/branch-review-ledger.md"; @@ -256,6 +257,31 @@ function selfTest() { console.log("branch-review-ledger self-test passed."); } +function validateArchiveStructure(relativePath, markdown) { + const failures = []; + if ([...markdown.matchAll(conflictMarker)].length > 0) { + failures.push(`${relativePath}: conflict marker(s) found.`); + } + if (markdown.includes("???") || markdown.includes("�")) { + failures.push(`${relativePath}: mojibake found.`); + } + const rows = parseLedgerRows(markdown); + const wrongWidth = rows.filter((row) => row.cells.length !== 6); + if (wrongWidth.length > 0) { + failures.push(`${relativePath}: ${wrongWidth.length} record(s) do not have exactly 6 cells.`); + } + const seen = new Set(); + const duplicates = []; + for (const row of rows) { + if (seen.has(row.raw)) duplicates.push(row.line); + seen.add(row.raw); + } + if (duplicates.length > 0) { + failures.push(`${relativePath}: ${duplicates.length} exact duplicate record(s).`); + } + return { failures, recordCount: rows.length }; +} + function main() { if (process.argv.includes("--self-test")) { selfTest(); @@ -268,18 +294,30 @@ function main() { protocol: readFileSync(path.join(root, PROTOCOL_PATH), "utf8"), }); - if (result.failures.length > 0) { + const failures = [...result.failures]; + let archiveRecords = 0; + for (const relative of listLedgerPaths().slice(1)) { + const archive = validateArchiveStructure(relative, readFileSync(path.join(root, relative), "utf8")); + failures.push(...archive.failures); + archiveRecords += archive.recordCount; + } + + if (failures.length > 0) { console.error("Branch review ledger guard failed:"); - for (const failure of result.failures) console.error(`- ${failure}`); + for (const failure of failures) console.error(`- ${failure}`); process.exit(1); } console.log( - `Branch review ledger guard passed: ${result.recordCount} table records ` + + `Branch review ledger guard passed: ${result.recordCount} live table records` + + `${archiveRecords > 0 ? ` + ${archiveRecords} archived` : ""} ` + `(${result.strictCount} under the ${STRICT_FROM} machine-readable contract), union merge active, ` + `six cells each, no conflict markers, mojibake, heading records, or duplicates.`, ); } // Guarded so the unit tests can import validateLedger without running the gate. -if (process.argv[1]?.endsWith("check-branch-review-ledger.mjs")) main(); +const isMain = + process.argv[1]?.endsWith("/check-branch-review-ledger.mjs") || + process.argv[1]?.endsWith("\\check-branch-review-ledger.mjs"); +if (isMain) main(); diff --git a/scripts/sweep-branch-ledger.mjs b/scripts/sweep-branch-ledger.mjs index fa6b5f7c39..c63a0fb2e7 100644 --- a/scripts/sweep-branch-ledger.mjs +++ b/scripts/sweep-branch-ledger.mjs @@ -13,12 +13,11 @@ * Flags: --no-fetch (skip the network fetch), --json (machine-readable output). */ import { execFileSync } from "node:child_process"; -import { readFileSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { readLedgerCorpus } from "./branch-review-ledger.mjs"; const root = path.join(path.dirname(fileURLToPath(import.meta.url)), ".."); -const LEDGER = path.join(root, "docs/branch-review-ledger.md"); function git(args) { return execFileSync("git", args, { cwd: root, encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim(); @@ -281,7 +280,7 @@ function main() { const ledgerText = (() => { try { - return readFileSync(LEDGER, "utf8"); + return readLedgerCorpus(); } catch { return ""; } diff --git a/tests/repo-hygiene.test.ts b/tests/repo-hygiene.test.ts index be6b19d5a0..42a8804399 100644 --- a/tests/repo-hygiene.test.ts +++ b/tests/repo-hygiene.test.ts @@ -19,7 +19,16 @@ import { parseLedgerBranches, shallowCloneRefusal, } from "../scripts/sweep-branch-ledger.mjs"; -import { buildRow, findReviews, headMatches, parseLedgerRows, sanitizeCell } from "../scripts/branch-review-ledger.mjs"; +import { + archiveQuarterLabel, + buildRow, + calendarQuarterStart, + findReviews, + headMatches, + parseLedgerRows, + rotateLedgerMarkdown, + sanitizeCell, +} from "../scripts/branch-review-ledger.mjs"; import { validateLedger } from "../scripts/check-branch-review-ledger.mjs"; describe("check-env-parity name parsing", () => { @@ -432,6 +441,28 @@ describe("branch-review-ledger row parsing", () => { expect(() => buildRow({ ...base, head: "abc1234" })).toThrow(/full 40-character SHA/); expect(buildRow({ ...base, head: "n/a - branch never pushed" })).toContain("n/a - branch never pushed"); }); + + it("rotates older rows into a quarterly archive while keeping newer live rows", () => { + expect(calendarQuarterStart("2026-07-30")).toBe("2026-07-01"); + expect(archiveQuarterLabel("2026-07-15")).toBe("2026-q3"); + const preamble = [ + "# Ledger", + "", + "This file is append-only.", + "", + "| Date | Branch or ref | Reviewed HEAD | Scope | Outcome | Checks |", + "| --- | --- | --- | --- | --- | --- |", + ].join("\n"); + const oldRow = `| 2026-07-01 | old/x | ${"a".repeat(40)} | s | o | c |`; + const newRow = `| 2026-07-29 | new/x | ${"b".repeat(40)} | s | o | c |`; + const rotated = rotateLedgerMarkdown(`${preamble}\n${oldRow}\n${newRow}\n`, { before: "2026-07-29" }); + expect(rotated.moved).toBe(1); + expect(rotated.kept).toBe(1); + expect(rotated.liveMarkdown).toContain(newRow); + expect(rotated.liveMarkdown).not.toContain(oldRow); + expect(rotated.archives[0]?.path).toBe("docs/archive/branch-review-ledger-2026-q3.md"); + expect(rotated.archives[0]?.markdown).toContain(oldRow); + }); }); describe("branch-review-ledger guard", () => {