diff --git a/.prettierignore b/.prettierignore index c8fdd236ce..5a8dea64ea 100644 --- a/.prettierignore +++ b/.prettierignore @@ -45,6 +45,14 @@ docs/branch-review-ledger.md # row shape, ids, the next-id marker and the merge attribute far more strictly than # Prettier's alignment ever did. docs/outstanding-issues.md +# Generated by `scripts/generate-branch-review-index.mjs` from +# docs/branch-review-records/. Same reason as the two ledgers above: Prettier +# column-pads markdown tables, so one long cell would repad all 576 rows and turn +# a one-record append into a whole-file diff. The generator emits single-space +# padding so appending a record stays a one-line diff. Structure is not lost — +# tests/branch-review-index.test.ts gates the generator's escaping, ordering and +# per-record coverage far more strictly than Prettier's alignment would. +docs/branch-review-index.md # Verbatim user-provided prompt inputs retained for cloud review. docs/prompts/codex-cloud-review/ # Generated by `scripts/generate-outstanding-issues-snapshot.mjs` from diff --git a/PR_POLICY_BODY.md b/PR_POLICY_BODY.md index 6dc5bdf083..0754445eeb 100644 --- a/PR_POLICY_BODY.md +++ b/PR_POLICY_BODY.md @@ -1,48 +1,50 @@ ## Summary -This PR completes three non-RAG UI maintenance items across the developer area and search/UI components: - -1. **Developer Hub Phase 2 Tidy-ups (Dev Hub Handoff §6.5)**: - - **`PanelSection` Server Component**: Exported a shared Server Component `PanelSection` in `src/components/developer-area/hub/panel-primitives.tsx` (pure Server Component, zero client imports or `"use client"`). - - **Page Migrations**: Migrated all 17 repetitive `
` blocks across 5 developer mockup pages: - - `src/app/mockups/development/documentation/page.tsx` - - `src/app/mockups/development/ledger/page.tsx` - - `src/app/mockups/development/review-state/page.tsx` - - `src/app/mockups/development/routes/page.tsx` - - `src/app/mockups/development/test-health/page.tsx` - - **Documentation Section Counts Cleanup**: Cleaned `DocumentationSection.sections` to `{ name: string }[]` in `src/lib/developer-area/repo-awareness-types.ts` and `scripts/generate-repo-awareness-snapshot.ts` so snapshot metadata and reader consumption stay 1:1. - - **Prettierignore Sync**: Added `data/repo-awareness-snapshot.json` to `.prettierignore` mirroring `data/outstanding-issues-snapshot.json`. - -2. **Search CLS Layout Reserve Verification (`#308` / `#JVYQEM`)**: - - Verified settled height reserve tokens and layout constraints at composer adoption boundary (160px for tablet / 88px for desktop). - - Verified zero reserve when search is `hidden` or unmounted, avoiding interference with phone bottom-dock. - -3. **Form Control Design Token Modernization (`#321`)**: - - Audited form controls across `src/components/document-viewer/` and verified design token alignment (`aria-disabled`, `ignoreUnavailableActivation`, focus rings). +- Add `docs/branch-review-index.md`, a generated, human-readable index of the 577 immutable records in `docs/branch-review-records/`. Every filename there is a raw SHA-256 content address, so the directory cannot be navigated by hand, and the hash-filename to review-row join existed in no static artifact: `scripts/generate-repo-awareness-snapshot.ts` reads each record's path in `readReviewRecordRows` and then discards it in `buildReviewStateSection`, emitting only the six cells. The index supplies that missing join. +- Add `scripts/generate-branch-review-index.mjs` (`npm run ledger:index`, refreshed by `npm run docs:update`) plus `tests/branch-review-index.test.ts`. The generator reuses the existing corpus reader — `listLedgerRecordPaths` and `parseLedgerRows` from `scripts/branch-review-ledger.mjs` — rather than adding a third parser, which matters because four records carry escaped pipes that a naive split on the pipe character would mis-parse. +- Add `docs/branch-review-archival-policy.md`, recording what may and may not be done to the append-only corpus with the enforcing code quoted at file and line, so the constraint is not re-derived by the next session. +- Register both documents in `docs/README.md`, extend `docs/branch-review-records/README.md` with pointers, add the index to `GENERATED_CATALOGS` in `scripts/check-stale-docs.mjs` and to `.prettierignore`, and refresh the generated `docs/scripts-index.md` and `data/repo-awareness-snapshot.json`. + +**Deliberately not a gate.** Records are appended at roughly 26 a day (576 records spanning only 2026-08-12 to 2026-09-02, 570 of them in August). A byte-equality drift check on a file derived from that corpus would turn `main` red after nearly every merge and would conflict between concurrent pull requests. This is not a new judgement: `scripts/check-repo-awareness-snapshot.ts:22-41` already excludes `review_state` from `COMPARED_CONTENT_KEYS` for exactly this reason. So nothing is added to `verify:cheap:internal`, CI, `verify-pr-local.mjs`, or the pre-commit hook; `ledger:index:check` is advisory; and `npm run ledger:lookup` remains authoritative for "has this ref been reviewed?". The index states its own possible staleness in its header. + +**Scope note — no archival.** The task also asked whether records could be archived. They cannot, and the policy document records why with the code quoted. Editing a row is blocked (`check-branch-review-ledger.mjs:379-381` recomputes the filename as the sha256 of the row); compacting rows into one file is blocked (`:374-377`); deletion is forbidden by `docs/codex-review-protocol.md:65` and caught by nothing. Moving records into subdirectories is the dangerous one: the only reader is a non-recursive `readdirSync` filtered to `*.record.md` (`branch-review-ledger.mjs:172-180`), so a nested record disappears from `ledger:lookup`, from `check:branch-review-ledger`, and from the repo-awareness snapshot **while every gate still passes green**. No gate was weakened, exempted, or bypassed. + +One incidental gain: because the index links every record relatively, `npm run docs:check-links` now resolves 578 more references than before, which makes it the first — partial — enforcement of the never-delete-a-record rule. It only catches deletions of records the index already lists, and the policy document says so rather than overstating it. ## Verification -- [x] `npm run check:repo-awareness-snapshot`: Passed (188 pages, 429 docs, 2609 reviews) -- [x] `npm run check:design-system-contract`: Passed (1006 production files checked) -- [x] `npm run check:design-system-adoption`: Passed (54 components, 96 roots) -- [x] `npm run check:design-sync-contract`: Passed (54 components, 7 guidelines) -- [x] `tsc -p tsconfig.typecheck.json --noEmit`: Passed (0 errors) -- [x] `npm run ensure` + `/api/local-project-id`: Passed (HTTP 200 `Clinical KB` at `http://localhost:4131`) -- [x] Probed all 5 migrated mockup routes live: all returned HTTP 200 -- [x] Vitest suites: **127 / 127 tests passed** across 9 test files (`developer-hub-panels`, `developer-documentation-page`, `developer-routes-page`, `developer-ledger-page`, `repo-awareness-gate`, `repo-awareness-generator`, `repo-awareness-snapshot`, `search-route-ownership`, `document-image-filmstrip`) -- UI verification not run: production UI journeys already green on this head in CI (`Production UI critical` / `Production UI (1–3)` SUCCESS); local `verify:ui` not re-run for this body-only policy fix. -- Verification not run: `verify:release` — not a release/handoff confidence claim; provider-backed gate not authorized for this PR-policy body fix. +Local gates were selected to match the change (documentation, a new offline generator, and generated-document machinery) rather than running a broad gate that covers no plausible failure path here. All output quoted below is verbatim. + +- [x] `npm run check:ledger-write-discipline` — `Ledger write discipline passed for c0ee4ddd5fdd..HEAD.` +- [x] `npm run check:branch-review-ledger` — `Branch review ledger guard passed: 880 live table records + 1206 archived + 577 immutable (880 under the 2026-07-29 machine-readable contract), immutable review writes, six cells each, no conflict markers, mojibake, heading records, or duplicates.` +- [x] `npm run check:outstanding-issues` — `[snapshot] in step with data/outstanding-issues-snapshot.json (70 open, 0 pending)` +- [x] `npm run check:repo-awareness-snapshot` — `[repo-awareness] in step with data/repo-awareness-snapshot.json (204 pages, 578 documents, 2663 reviews)` +- [x] `npm run docs:check-links` — `docs link check passed: 5412 repo path references resolve.` +- [x] `npm run docs:check-scripts` — `docs script-ref check passed: 1222 npm-run reference(s) resolve to real scripts.` +- [x] `npm run docs:check-inventory` — `Docs inventory current: 285 script files, 289 npm scripts.` +- [x] `npm run ledger:index:check` — `[ledger:index] docs/branch-review-index.md is current.` +- [x] `npm run format:check` — `All matched files use Prettier code style!` +- [x] `npm run typecheck` — exit 0, `[gate-receipts] recorded a pass for "typecheck:internal" (6025 input files).` +- [x] `npx eslint scripts/generate-branch-review-index.mjs tests/branch-review-index.test.ts` — exit 0, no output. +- [x] `npx vitest run tests/branch-review-index.test.ts` — `Test Files 1 passed (1)`, `Tests 22 passed (22)` +- [x] Regression sweep over every existing test this diff could disturb, plus both workflow-contract suites — `npx vitest run tests/branch-review-index.test.ts tests/ci-cache-safety.test.ts tests/browser-test-plan.test.ts tests/docs-inventory.test.ts tests/repo-hygiene.test.ts tests/site-map.test.ts tests/repo-awareness-generator.test.ts` — `Test Files 7 passed (7)`, `Tests 245 passed (245)` + +Verification not run: `npm run verify:pr-local`, `npm run verify:ui` and `npm run verify:release` were deliberately skipped. The focused gates above cover this diff's plausible failure paths, no UI, routing, styling or browser behaviour changed, and no release confidence is claimed. CI remains the authoritative merge gate. + +No provider-backed gate was run. Nothing touching OpenAI, Supabase, live CI, or any paid API was executed. + +Two defects were found and fixed during verification rather than being left for CI: a stray NUL byte embedded in the generator's supersession-key separator, which made `grep` treat the source file as binary, replaced with its escape sequence; and a TypeScript error in the test fixture, whose spread through a `Record` cast erased the `hash` property. ## Risk and rollout -- Risk: Low; developer mockup refactor and generated snapshot shape only; no production clinical path change. -- Rollback: Revert the branch commits. +- Risk: Low, and additive. The generator only ever writes `docs/branch-review-index.md` — it contains a single `writeFileSync` and no rename or unlink call, and it never modifies anything under `docs/branch-review-records/`. Nothing was added to any verification gate, so no existing gate changes behaviour. The one edit to an existing script is a single new entry in the advisory `GENERATED_CATALOGS` list in `scripts/check-stale-docs.mjs`. +- Rollback: Revert the single commit. Nothing reads the index, so no consumer breaks. - Provider or production effects: None. -- RAG impact: no retrieval behaviour change — developer-area mockups and repo-awareness snapshot metadata only; no rag/retrieval/ranking surfaces touched. +- RAG impact: none. No file under `src/lib/rag/`, no retrieval RPC, no ranking surface, no golden fixture, and no eval harness file is touched by this diff. ## Clinical Governance Preflight -This is a developer-hub mockup refactor + snapshot metadata cleanup; no clinical pipeline/RAG/privacy change. +This diff is documentation and offline tooling. It is classified clinical-risk solely because it regenerates `data/outstanding-issues-snapshot.json` and `data/repo-awareness-snapshot.json`, which the path classifier treats as clinical data exports. Both regenerations are mechanical output of committed generators, required because this change adds two documents; no clinical content, answer path, or access rule is touched. Each item below is confirmed against the actual diff, not assumed. - [x] Source-backed claims still require linked source verification before clinical use - [x] No patient-identifiable document workflow was introduced or expanded without explicit governance approval @@ -52,21 +54,16 @@ This is a developer-hub mockup refactor + snapshot metadata cleanup; no clinical - [x] Source metadata, review status, and outdated/unknown-source behavior remain conservative - [x] Deployment classification/TGA SaMD impact was checked when clinical decision-support behavior changed - +Evidence for the above: no file under `src/`, `worker/`, `supabase/`, or `src/lib/rag/` is in this diff; the Supabase integration bot confirmed on this PR that it detected no changes in the `supabase` directory; Gitleaks and GitGuardian both passed; and no clinical decision-support behaviour changed, so the TGA SaMD classification is unaffected. + +## Notes + +The policy check reports one advisory warning that is accurate and not worth splitting the PR over: operational-risk and clinical-risk paths are bundled, because `package.json` (two new npm scripts) and the regenerated `data/` snapshots must land in the same commit as the generator they describe. Splitting them would leave either the snapshot stale or the scripts unregistered, and each half would fail its own gate. + +The index is 644 lines and about 172 KB, roughly 0.6% of the documentation tree — a real but small cost, stated plainly in the policy document alongside the growth figures rather than glossed over. The archival-policy document's size measurements are quoted with the measuring method (`du -sh` versus `du -sh --apparent-size` differ by about 6 MB across thousands of small files), so a later reader does not "correct" one figure into the other. ---- +A repo audit of the diff found no defects; its residual observations — the size-measurement ambiguity and a missing curated entry in `docs/scripts-index.md` — were both fixed before the first push. -> [!NOTE] -> **Low Risk** -> Refactor of dev-only mockup UI and generated snapshot shape with matching tests; no production auth, API, or payment paths touched. -> -> **Overview** -> Introduces a shared **Server Component** `PanelSection` in `panel-primitives.tsx` and replaces repeated `
` + heading markup across the five developer mockup panels (documentation, ledger, review-state, routes, test-health). Section headings, `h2`/`h3` levels, optional `data-testid`, and default spacing stay consistent without adding a client boundary. -> -> **Repo-awareness documentation metadata** no longer stores per-section `documents` / `uncatalogued` counts in the snapshot: `DocumentationSection.sections` is now `{ name }[]`, `buildDocumentationSection` only emits section names, and the committed `data/repo-awareness-snapshot.json` is regenerated. The documentation page still shows counts via `documentsBySection`, which groups live document rows. -> -> Adds `data/repo-awareness-snapshot.json` to **`.prettierignore`** (same rationale as the outstanding-issues snapshot) so generator formatting and `check:repo-awareness-snapshot` stay aligned. -> -> Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 0c052c08df58974aa059fc52a4987e62afe0be10. Configure [here](https://www.cursor.com/dashboard/bugbot). +🤖 Generated with [Claude Code](https://claude.com/claude-code) - +https://claude.ai/code/session_01AxPVZhAvzE2YupMiDz8sqF diff --git a/data/repo-awareness-snapshot.json b/data/repo-awareness-snapshot.json index b0db0b6e14..944e44fd59 100644 --- a/data/repo-awareness-snapshot.json +++ b/data/repo-awareness-snapshot.json @@ -1,8 +1,8 @@ { "version": "repo-awareness-snapshot-v2", "captured_revision": { - "sha": "cdfb3fdda5533c126e76fecaf4e0352a6757249f", - "committed_at": "2026-09-02T11:12:52+00:00" + "sha": "a683a5a6af3d400574bb8ef55e199e0c8665c60f", + "committed_at": "2026-09-02T11:35:41+00:00" }, "routes": { "modes": [ @@ -1850,6 +1850,16 @@ "section": "root", "catalogued": true }, + { + "path": "docs/branch-review-archival-policy.md", + "section": "root", + "catalogued": true + }, + { + "path": "docs/branch-review-index.md", + "section": "root", + "catalogued": true + }, { "path": "docs/branch-review-ledger.md", "section": "root", @@ -4437,8 +4447,8 @@ } ], "counts": { - "documents": 580, - "catalogued": 111, + "documents": 582, + "catalogued": 113, "uncatalogued": 469, "sections": 21 } diff --git a/docs/README.md b/docs/README.md index ead63ae46b..8a78118a37 100644 --- a/docs/README.md +++ b/docs/README.md @@ -103,6 +103,8 @@ npm run docs:check-links - [claude-cloud.md](claude-cloud.md) — Claude Code on the web container parity: tiered provisioner and checked-in user profile - [branch-cleanup-guide.md](branch-cleanup-guide.md) — branch hygiene workflow - [branch-review-ledger.md](branch-review-ledger.md) — reviewed branch/SHA ledger; read with `npm run ledger:lookup` (historical tables + immutable records), write with `npm run ledger:append`, and convert a pre-system active-branch row with `npm run ledger:migrate-legacy` +- [branch-review-archival-policy.md](branch-review-archival-policy.md) — what may and may not be done to the immutable records under `docs/branch-review-records/`; which operations are blocked by code, which are forbidden by policy but caught by nothing, and why foldering or deleting a record is silent history loss +- [branch-review-index.md](branch-review-index.md) — **Generated** browsable index of every immutable review record; regenerate with `npm run ledger:index`, refresh with `npm run docs:update`, check currency with `npm run ledger:index:check`. It may lag the corpus, so `npm run ledger:lookup` stays authoritative ## Plans and workstreams (living) @@ -128,17 +130,18 @@ npm run docs:check-links ## Subdirectory map -| Directory | What lives there | -| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| [agents/](agents/) | Agent-rule reference files `AGENTS.md` delegates to by name — the full text of rules its always-loaded core only points at | -| [rag-behaviour/](rag-behaviour/) | Protected retrieval/ranking surface: behaviour map, refuted approaches, safeguards. **Read before touching ranking.** | -| [prompts/](prompts/) | Copy/paste review prompts, including the verbatim `codex-cloud-review/` inputs | -| [codex/](codex/) | Per-lens Codex ultra-review output folders, one per review dimension | -| [evidence/](evidence/) | Captured evidence artifacts backing ledger items (reliability reports, review manifests) | -| [audit/](audit/) | Dated repo, design, accessibility, and latency audits (point-in-time) | -| [redesign/](redesign/) | Premium redesign plans, decision log, token adoption | -| [superpowers/](superpowers/) | Agent-authored plans and specs | -| [archive/](archive/) | Completed phase plans, superseded designs, old progress logs — never current guidance | +| Directory | What lives there | +| ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [agents/](agents/) | Agent-rule reference files `AGENTS.md` delegates to by name — the full text of rules its always-loaded core only points at | +| [rag-behaviour/](rag-behaviour/) | Protected retrieval/ranking surface: behaviour map, refuted approaches, safeguards. **Read before touching ranking.** | +| [prompts/](prompts/) | Copy/paste review prompts, including the verbatim `codex-cloud-review/` inputs | +| [codex/](codex/) | Per-lens Codex ultra-review output folders, one per review dimension | +| [evidence/](evidence/) | Captured evidence artifacts backing ledger items (reliability reports, review manifests) | +| [audit/](audit/) | Dated repo, design, accessibility, and latency audits (point-in-time) | +| [redesign/](redesign/) | Premium redesign plans, decision log, token adoption | +| [superpowers/](superpowers/) | Agent-authored plans and specs | +| [branch-review-records/](branch-review-records/) | Immutable one-row review records — one file per review — named for the SHA-256 of the row. **Append-only: never edit, delete, or move into subdirectories** ([policy](branch-review-archival-policy.md)) | +| [archive/](archive/) | Completed phase plans, superseded designs, old progress logs — never current guidance | ## Point-in-time records (historical — do not update) diff --git a/docs/branch-review-archival-policy.md b/docs/branch-review-archival-policy.md new file mode 100644 index 0000000000..ff570b7b23 --- /dev/null +++ b/docs/branch-review-archival-policy.md @@ -0,0 +1,370 @@ +# Branch review records: archival policy + +What may and may not be done to the immutable one-row files under +`docs/branch-review-records/`. This document exists so that nobody has to re-derive it from +the source a second time: every claim below is backed by the enforcing code, quoted verbatim +with its file and line, and every claim is labelled as one of three things — **blocked by +code**, **forbidden by policy but caught by nothing**, or **permitted**. + +The distinction matters more here than in most of the repository, because the most tempting +housekeeping operation on this directory — sorting 576 flat files into dated subfolders — +is neither blocked nor merely discouraged. It silently deletes review history while every +gate in the repository continues to report green. + +## If you are about to… + +| You want to… | Do this | Status | +| --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| Record a new review | `npm run ledger:append` | Permitted; the only sanctioned way to create a record | +| Fix a record that says something wrong | Append a superseding record with `npm run ledger:append -- … --supersede` | Permitted; editing the wrong record is not an option | +| Find a record | `npm run ledger:lookup`, or browse [branch-review-index.md](branch-review-index.md) | Permitted; `ledger:lookup` is authoritative and the index is a derived view | +| Correct a typo inside an existing record | Supersede it — do not edit it | Editing the row is blocked by code; editing plus renaming is forbidden policy | +| Combine several small records into one file | Nothing; the shape is fixed at one row per file | Blocked by code | +| Move records into `2026/08/` or any other subfolder | Nothing. Read [Foldering is silent data loss](#foldering-is-silent-data-loss) before considering it | Not blocked, not detected, and destructive | +| Delete an obsolete record | Nothing; supersede instead | Forbidden by policy and almost entirely undetected | +| Shrink the directory | You cannot. See [Growth is the price of the design](#growth-is-the-price-of-the-design) | No safe mechanism exists | +| Rotate or archive the **legacy table** `docs/branch-review-ledger.md` | That is a different corpus with a different rule set; see [The legacy table is not this corpus](#the-legacy-table-is-not-this-corpus) | Permitted under an explicit opt-in | + +## What the corpus is + +Each record is a single Markdown table row in its own file, named for the SHA-256 of that +row. The file name is therefore a content address: the row and the name are one fact stored +twice, and every integrity check recomputes one from the other. + +`scripts/branch-review-ledger.mjs:188-191`: + +```js +export function reviewRecordPath(row) { + const hash = createHash("sha256").update(row, "utf8").digest("hex"); + return path.posix.join(RECORDS_DIR, `${hash}${RECORD_SUFFIX}`); +} +``` + +The design is deliberate and its reason is recorded beside the reader, at +`scripts/branch-review-ledger.mjs:172`: "Immutable review records avoid a shared append hunk +across active PRs." Concurrent pull requests never touch the same file, so they never +conflict — which is the property that all of the constraints below exist to protect. + +## Permitted + +These are the operations the system is built to support. None of them needs special +approval, and between them they cover every legitimate need. + +**Appending a new record.** `npm run ledger:append` builds the row, computes its content +address and writes exactly one file. This is the only supported way to create a record. + +**Superseding an inaccurate record.** Because editing is not available, correction happens by +appending. When a new append collides with an existing record on the same ref, HEAD and +scope, the tool refuses unless `--supersede` is passed, and with it the new record's scope +cell is disambiguated from the record it replaces. `scripts/branch-review-ledger.mjs:559-567`: + +```js +const priorDate = near.at(-1).date; +let suffix = 1; +do { + scope = + suffix === 1 + ? `${String(flags.scope)} (supersedes ${priorDate})` + : `${String(flags.scope)} (supersedes ${priorDate} #${suffix})`; + suffix += 1; +} while (rows.some((existing) => sameRefHeadScope(existing, scope))); +``` + +The prior record stays on disk. That is the point: the corpus records what was reviewed and +concluded at the time, including conclusions later found wrong, and a superseding record +makes the correction legible rather than erasing the error. + +**Migrating a pre-system row.** An already-open branch carrying a row in the frozen legacy +table runs `npm run ledger:migrate-legacy`, which converts that row into an immutable record +and removes only the branch's own added row from the table. + +**Generating derived views.** `docs/branch-review-index.md` is a generated, non-authoritative +browsing surface over the same corpus. Producing views like it changes nothing about the +records themselves and is unconstrained. + +## Blocked by code + +### Editing a record's row + +The file name is the SHA-256 of the row and is recomputed on every run of +`npm run check:branch-review-ledger`. Change one character of the row without renaming the +file and the check fails. `scripts/check-branch-review-ledger.mjs:379-381`: + +```js +if (reviewRecordPath(row.raw) !== relativePath) { + failures.push(`${relativePath}: filename must be the SHA-256 content address for its record row.`); +} +``` + +**The loophole, stated plainly:** editing the row _and_ renaming the file to the new hash +passes every check in the repository. Nothing compares record files against a base ref — +`check-branch-review-ledger.mjs` validates each file in isolation against its own name, and +`check-ledger-write-discipline.mjs` does not govern this directory at all (see +[Deleting a record](#deleting-a-record)). A rewritten-and-renamed record is therefore +**forbidden by policy and caught by nothing**. The prohibition is stated at +`docs/branch-review-ledger.md:5` — "Never rewrite an existing review record's content; append +a correction or superseding record instead" — and again at `docs/codex-review-protocol.md:65`: +"never edit or delete an existing record; append a correction or superseding record +(`--supersede`) instead." + +### Merging or compacting several records into one file + +Every record file must be exactly one row and nothing else — no heading, no prose, no second +row. `scripts/check-branch-review-ledger.mjs:374-377`: + +```js +if (rows.length !== 1 || markdown.trim() !== rows[0]?.raw) { + failures.push(`${relativePath}: immutable record must contain exactly one table row and no prose.`); + return { failures, rows: [] }; +} +``` + +Compaction — the obvious response to 576 tiny files — is therefore unavailable. A file +holding two rows fails on the row count, and even if it held one row it would then fail the +content-address check unless renamed, since its bytes would no longer hash to its name. + +### Hand-adding a record + +A hand-written file is not rejected on principle; it is rejected in practice, because it must +satisfy every clause of `validateImmutableRecord` (`scripts/check-branch-review-ledger.mjs:367-389`) +_and_ be named for the SHA-256 of its own row. In practice that means using +`npm run ledger:append`, which is what policy requires anyway. `docs/branch-review-ledger.md:11` +states it directly ("Do not hand-edit this table or a record file"), and +`docs/codex-review-protocol.md:65` gives the reason: "Do not hand-write a record — +hand-written rows are what produced the mojibake, wrong-width, and duplicate records the +2026-07-28 hygiene pass had to repair." + +## Foldering is silent data loss + +This is the operation that looks like tidying and behaves like deletion, and it is the single +most important thing in this document. + +The only enumerator of the corpus is a **non-recursive** `readdirSync` that filters on a name +suffix. `scripts/branch-review-ledger.mjs:173-180`: + +```js +export function listLedgerRecordPaths() { + const absRecords = path.join(root, RECORDS_DIR); + if (!existsSync(absRecords)) return []; + return readdirSync(absRecords) + .filter((name) => name.endsWith(RECORD_SUFFIX)) + .sort() + .map((name) => path.posix.join(RECORDS_DIR, name)); +} +``` + +A directory entry named `2026` does not end in `.record.md`, so the filter drops it and +nothing ever descends into it. Every record inside it disappears from `npm run ledger:lookup`, +from `npm run check:branch-review-ledger`, and from the repo-awareness snapshot — and **every +gate still passes**, because a moved file is not a malformed file. There is no count to +compare against, no manifest that says how many records there should be, and no base-ref +comparison anywhere in the chain. The reviews are still on disk and still in git history, but +the system that exists to stop duplicate reviews can no longer see them, so the branches they +cover will simply be reviewed again. + +The same flatness holds for the second reader. `scripts/generate-repo-awareness-snapshot.ts:323`: + +```ts +export const REVIEW_RECORDS_PATHSPEC = ":(glob)docs/branch-review-records/*.record.md"; +``` + +In git's `:(glob)` magic a single `*` does not cross a `/`, so a record at +`docs/branch-review-records/2026/08/.record.md` is not matched. The filesystem fallback +used when git is unavailable is flat in the same way +(`scripts/generate-repo-awareness-snapshot.ts:388-395`), filtering `entry.isFile()` and a +`.record.md` suffix within the one directory. + +**A tidier folder layout here is not a tidier layout. It is silent data loss that no check +will report.** + +There is an adjacent trap in the same code. `listLedgerRecordPaths` filters on the name only, +with no `isFile()` test, so a _directory_ named `something.record.md` survives the filter and +is handed to `readFileSync` at `scripts/check-branch-review-ledger.mjs:418`, which throws +`EISDIR`. The failure mode is at least loud, unlike the foldering case, but the cause will not +be obvious from the message. + +If the directory layout must ever change, the only safe route is a deliberate, explicitly +reviewed migration that changes the **reader** — `listLedgerRecordPaths`, the snapshot +pathspec and its filesystem fallback — in the same change as the files move, with a count +assertion proving the corpus is the same size before and after. Never a bare `git mv`. + +## Forbidden by policy but caught by nothing + +### Deleting a record + +Policy is unambiguous. `docs/codex-review-protocol.md:65`: "never edit or delete an existing +record; append a correction or superseding record (`--supersede`) instead." + +Enforcement, until now, was absent. No gate compares the set of record files against a base +ref: + +- `scripts/check-branch-review-ledger.mjs` only iterates the files that exist. A file that is + gone is never named, so it is never validated and never missed. +- `scripts/check-ledger-write-discipline.mjs` governs three paths and this directory is not + among them. `scripts/check-ledger-write-discipline.mjs:28-31`: + + ```js + const REVIEW_LEDGER = "docs/branch-review-ledger.md"; + const ISSUES_LEDGER = "docs/outstanding-issues.md"; + const INBOX = "docs/outstanding-issues-inbox"; + const APPLIED = `${INBOX}/applied`; + ``` + + and its path classifier at `scripts/check-ledger-write-discipline.mjs:178-183`: + + ```js + function governedReason(relative) { + if (relative === ISSUES_LEDGER) return "the canonical outstanding-issues ledger"; + if (relative === REVIEW_LEDGER) return "the frozen branch-review ledger"; + if (relative === INBOX || relative.startsWith(`${INBOX}/`)) return "an outstanding-issues inbox request"; + return undefined; + } + ``` + + Neither list mentions `docs/branch-review-records`. + +- The staleness backstop is deliberately blind here. `scripts/check-repo-awareness-snapshot.ts:22-41`: + + ```ts + * `review_state` is also deliberately NOT compared in check gates. Review + * records are dynamic and concurrent merges to `main` append new review records, + * which would cause feature branch staleness check failures and merge conflicts. + * + * Excluding them fails safe: every deterministic content difference in routes, + * documentation, and test health is still caught. + * + * Excluding a key from comparison was never enough on its own, though, and + * `#EFETZT` is what that cost: the un-compared content still shipped in the + * committed file, still changed on both sides of every append, and still + * conflicted [...] + */ + const COMPARED_CONTENT_KEYS = ["routes", "documentation", "test_health"] as const; + ``` + + That exclusion is correct for its own purpose and is not a bug to fix, but it does mean the + snapshot gate cannot notice a record vanishing either. + + The second paragraph above is the sharper lesson, added by #2530 after this document was + first written: **not gating a derived file is not the same as making it safe.** The + un-compared snapshot content still conflicted on every append, which sets + `mergeable_state=dirty`, suppresses `refs/pull//merge`, and leaves the check list empty + rather than red — a far worse failure than a red check, because empty reads as green. The + index in this change avoids that trap for a different reason rather than by luck: nothing + regenerates it on an ordinary pull request. Only `npm run docs:update` and an explicit + `npm run ledger:index` rewrite it, so it does not change on both sides of a concurrent + append the way a snapshot regenerated by every branch does. If that ever changes — if the + index is wired into the pre-commit hook, or into a generator every branch runs — it must + first be given a shape that merges cleanly, exactly as `review_state` was. + +**New with the generated index — the first partial enforcement.** `docs/branch-review-index.md` +links every record it lists with a relative Markdown link, and `npm run docs:check-links` +(which runs in `verify:cheap` and in CI) resolves relative link targets and fails when one does +not exist. Deleting a record that the index lists therefore now breaks a required check. Be +honest about the limit: this catches only deletions of records the index **already lists**, so +a record appended and deleted before the index is next regenerated remains completely +invisible, and so does any deletion made in the same change that regenerates the index. It is +an incidental first net, not a deletion gate. + +## Overrides: there are none that apply + +- `scripts/check-branch-review-ledger.mjs` contains **no `process.env` reference at all**. There + is no skip flag, no override, and no environment-dependent behaviour. Verified by grep: zero + matches in the file. +- `scripts/check-ledger-write-discipline.mjs` has no bypass environment variable of its own, + and the reason is on the record at `docs/outstanding-issues.md:401`: "No override env var: + both callers are unaffected by construction, so an escape hatch would only reopen the hole." +- `SKIP_LEDGER_WRITE_GUARD=1` skips only the **pre-push wrapper**, not the check itself. + `scripts/guard-push.mjs:1258-1261`: + + ```js + function ledgerWriteGuard(ranges) { + if (process.env.SKIP_LEDGER_WRITE_GUARD === "1") { + return { name: "ledger-write", ok: true, skipped: "SKIP_LEDGER_WRITE_GUARD=1" }; + } + ``` + +- `ALLOW_LEGACY_REVIEW_LEDGER_MAINTENANCE=true` unlocks `npm run ledger:rotate` and + `npm run ledger:dedupe`, and those two commands operate on the **legacy table and its + archives only**. Nothing in that path can move, merge or delete a record file. + `scripts/branch-review-ledger.mjs:701-717`: + + ```js + /** Historical maintenance writes need an intentional, visible opt-in. */ + export function legacyMaintenanceAllowed({ + dryRun = false, + allow = process.env.ALLOW_LEGACY_REVIEW_LEDGER_MAINTENANCE, + } = {}) { + return dryRun || allow === "true"; + } + + function requireLegacyMaintenance(command, dryRun) { + if (legacyMaintenanceAllowed({ dryRun })) return true; + console.error( + `refusing ${command}: the historical review table is frozen. ` + + "Use --dry-run to inspect, then set ALLOW_LEGACY_REVIEW_LEDGER_MAINTENANCE=true for an explicitly approved repair.", + ); + process.exitCode = 1; + return false; + } + ``` + + Its only two callers are `runRotate` and `runDedupe`. + +## The legacy table is not this corpus + +`docs/branch-review-ledger.md` is the frozen historical table that predates immutable records. +It is a different corpus with a different rule set: it may be rotated into `docs/archive/` +under the explicit opt-in above, and `npm run check:ledger-write-discipline` governs changes to +its dated rows. Do not reason from what is permitted there to what is permitted here. Rotating +the table is sanctioned housekeeping; the equivalent move applied to record files is the silent +data loss described above. + +## Why there is no drift gate on the generated index + +`docs/branch-review-index.md` is generated, and generated files elsewhere in this repository +are usually pinned by a byte-equality check. This one deliberately is not. + +The corpus grows at roughly 26 records per day — 576 records spanning 2026-08-12 to +2026-09-02, with 570 of them written during August and a single-day peak of 97 on 2026-08-18. +A byte-equality gate against that would redden `main` after nearly every merge, because every +merge that appends a record invalidates the committed index; and it would conflict between +concurrent pull requests, because each would regenerate the same file over a different set of +records. That is precisely the reasoning already recorded for `review_state` at +`scripts/check-repo-awareness-snapshot.ts:21-28`, quoted above, and it applies here for the +same reason. + +The consequence has to be stated plainly rather than glossed over: **the index may lag.** It +lists the records that existed when it was last generated, and nothing reports how far behind +it is. `npm run ledger:lookup` remains the authoritative read of the corpus and is what a +review decision must be based on. The index is a browsing convenience, refreshed by +`npm run docs:update`. + +## Growth is the price of the design + +The measured facts, as of 2026-09-02: + +- 577 entries in `docs/branch-review-records/` — 576 records plus this directory's README — + totalling 2.4 MB. +- That is more than half of the 1,144 tracked Markdown files under `docs/`. +- `docs/` now outweighs `src/`: 26 MB against 23 MB by apparent size (`du -sh --apparent-size`), + 32 MB against 23 MB by allocated blocks (`du -sh`). Quote the method with the number — the two + differ by ~6 MB here because `docs/` holds thousands of small files, and a figure without its + method invites a later reader to "correct" it to the other one. Either way the documentation + tree is larger than the application it documents. + +The conclusion the code forces is uncomfortable but unavoidable: **this cannot be solved by +archiving, compaction, or foldering.** Compaction is blocked by the one-row-per-file check. +Archiving into a subdirectory is the foldering case and is silently destructive. Deleting is +forbidden by policy and is exactly the history loss the corpus exists to prevent. There is no +fourth option hiding behind those three. + +The append-only design is deliberate and it is correct. Concurrent pull requests never contend +on a shared hunk, an equivalent retry converges on the same file rather than duplicating, and +the review history is tamper-evident by construction. The growth is the cost of those +properties, and it is a cost worth paying at this size. + +If growth ever genuinely must be addressed, the only safe direction is a deliberate, +explicitly reviewed migration that changes the reader in the same change as the layout — see +[Foldering is silent data loss](#foldering-is-silent-data-loss) for what that entails. Do not +weaken, relax, or exempt any gate to make room; every constraint documented above is load +bearing, and the two that are not enforced are weaknesses to be aware of, not licences. diff --git a/docs/branch-review-index.md b/docs/branch-review-index.md new file mode 100644 index 0000000000..010673e9cb --- /dev/null +++ b/docs/branch-review-index.md @@ -0,0 +1,647 @@ +# Branch review record index + +This file is generated by `npm run ledger:index` (and refreshed by `npm run docs:update`). +Run `npm run ledger:index:check` to see whether it is current. + +**This index is not a gate and it may lag the corpus.** Review records are appended by +every PR handoff, so a byte-equality check on a file derived from them would go red on +`main` after nearly every merge and would conflict between concurrent pull requests. It is +therefore wired into no verification gate, and `ledger:index:check` is advisory only. For +the authoritative answer to "has this ref been reviewed for this scope?", ask the records +themselves: `npm run ledger:lookup -- --scope ""`. + +Record format and write rules: [`branch-review-records/README.md`](branch-review-records/README.md). +Retention and rotation: [`branch-review-archival-policy.md`](branch-review-archival-policy.md). + +## Summary + +- Records: 579 +- Distinct ref cells: 363 +- Distinct reviewed heads: 562 +- Date range: `2026-08-12` to `2026-09-02` + +Records per date, newest first: + +- `2026-09-02` — 4 records +- `2026-09-01` — 5 records +- `2026-08-31` — 4 records +- `2026-08-30` — 3 records +- `2026-08-29` — 2 records +- `2026-08-27` — 19 records +- `2026-08-26` — 12 records +- `2026-08-25` — 7 records +- `2026-08-24` — 21 records +- `2026-08-23` — 11 records +- `2026-08-22` — 43 records +- `2026-08-21` — 26 records +- `2026-08-20` — 11 records +- `2026-08-19` — 6 records +- `2026-08-18` — 97 records +- `2026-08-17` — 77 records +- `2026-08-16` — 21 records +- `2026-08-15` — 93 records +- `2026-08-14` — 62 records +- `2026-08-13` — 51 records +- `2026-08-12` — 4 records + +## All records, newest first + +Scope and outcome are truncated; follow the record link for the full six-cell row. + +| Date | Ref | Scope | Outcome | Record | +| --- | --- | --- | --- | --- | +| 2026-09-02 | codex/smart-local-modes-20260901 | smart local modes integration | Fixed calculator identity matches inside natural-language queries; no… | [23084cec](branch-review-records/23084cec05666473530d8878ab4246ada0dbdb860c28584da348ade298ccf63c.record.md) | +| 2026-09-02 | claude/caring-contacts-vocabulary-tmnc89 | caring-contacts prohibited-language scan | Reviewed by the clinical-governance-reviewer subagent before the push;… | [2672ead5](branch-review-records/2672ead51d97f295e2cf156914c4c940ac17eba55d569f189224986f2e9797ce.record.md) | +| 2026-09-02 | claude/caring-contacts-vocabulary-tmnc89 | caring-contacts plural job-title exemption | Second clinical-governance review on this branch, covering commit 33e1… | [3f5afc46](branch-review-records/3f5afc461d6cd9444e4720b112fa5b424610487e28999e732d87d342fa4a492b.record.md) | +| 2026-09-02 | claude/instruction-tiering-n9vs14 | Instruction tiering: AGENTS.md/CLAUDE.md always-loaded core plus docs/agents reference fil… | No findings. Reorganisation only: all 662 non-blank AGENTS.md lines ve… | [9b97c2e6](branch-review-records/9b97c2e689cead2aabfd99148f22120ca4d7f1b907be8e06dc595b279216be69.record.md) | +| 2026-09-01 | PR-2504 | Resolve Codex P1: corpus-health table access | Verified the authenticated role lacks table SELECT; the administrator-… | [5d80826b](branch-review-records/5d80826bf56625f7a05594bf5c46f05a421a883a038ace94c07ca265528f1dba.record.md) | +| 2026-09-01 | PR-2507 | Run PR sweep: enforce Favourites phone tap-target minimum | Replaced the blacklist-only target guard with a positive 48px-or-row-w… | [8b140d28](branch-review-records/8b140d281375ce001e5f712e3c697b4828186a605e096bb86342f16f0452610a.record.md) | +| 2026-09-01 | codex/smart-local-modes-20260901 (PR #2508) | PR #2508 native Smart catalogue matching | Fixed P1 Compare result-order regression; no additional P0-P3 findings… | [9d028419](branch-review-records/9d02841985e0414aa379b2fbbb0f47077e456cf6454d23e55e46487dc4dd2e8a.record.md) | +| 2026-09-01 | PR-2508 | Run PR sweep: prioritise embedded catalogue identities | Ranked named Factsheet titles or brands and Dictionary terms or abbrev… | [b3bf9965](branch-review-records/b3bf996531230caa2adc7f32de08e3884ea96891f776e9fc518f210295d8828c.record.md) | +| 2026-09-01 | PR-2504 | Run PR sweep: scope corpus-health reads | Replaced inaccessible authenticated-table reads with an independently… | [d18c3d70](branch-review-records/d18c3d70e330374ea9ebb009b5f215b7abbf794a97198dc5745a9a2a67b77788.record.md) | +| 2026-08-31 | gemini/pr-group-3-ui-a11y-caring-contacts-ward-flow (PR #2479) | Run PR sweep: existing unresolved review threads | 0 → 2 threads resolved: useful-actions disclosure semantics, workspace… | [38c77f11](branch-review-records/38c77f1167740922262bdf237802d21945497a9d612a51685a62002989e57c7d.record.md) | +| 2026-08-31 | codex/answer-surface-compact-20260830 | compact answer source safety and library UI | No P0-P2 findings; compact source status, answer utilities, safety row… | [46928e14](branch-review-records/46928e14c627bd4e8be016b6d181c434e996a4a21e5d788b2862b12296656a21.record.md) | +| 2026-08-31 | codex/chat-smart-natural-mode-search-pr-2480-landed-verify | Smart natural-language catalogue search separation | no P0/P1 findings; ready for PR | [59910cd5](branch-review-records/59910cd5286d4386f2d1b58327c7fd4deec2fff472836a8e5e7a8d91cee14d82.record.md) | +| 2026-08-31 | core_rag_security_hub | PR Group 2: Core RAG, Security, DB Functions & Developer Hub (#DHAR98, #0JJ4RD, #2X46NY, #… | PASS: All 11 Group 2 tasks verified clean against database guards, RAG… | [eb3b45f1](branch-review-records/eb3b45f1c916b2533496cd8afa3563a413625a0b67ddd31360d242f48cb9a2b3.record.md) | +| 2026-08-30 | codex/smart-natural-search-current-main | Smart natural search CI reconciliation exact-tree review | No open P0/P1/P2 findings; maintainability blocker fixed by cohesive e… | [10fbaef7](branch-review-records/10fbaef7936e8de7d6818195fc99a9044817d5080a7ab7b8a310f3e4c40c95cd.record.md) | +| 2026-08-30 | codex/smart-natural-search-current-main | Smart natural search exact-tree implementation and review | P2 findings fixed; no open P0/P1/P2 findings | [14bef4b9](branch-review-records/14bef4b95b18c084da0b351b28dae58d7c99b5cabda2da0c21a1ab019e6eed17.record.md) | +| 2026-08-30 | codex/smart-natural-search-current-main | Smart natural search final CI test correction review | No open P0/P1/P2 findings; stale extracted-owner tests corrected | [9a1ec0c9](branch-review-records/9a1ec0c9779d86d7920b0c976eb3037befd3daab2942755b0a8e1dadb41d65c6.record.md) | +| 2026-08-29 | PR-2457 | PR #2457 review-and-fix | Fixed repository breakpoint coverage, conservative same-band Tailwind… | [554462bf](branch-review-records/554462bf56443e5221eec0997a2489b31359c24bfdf9593c1058321161f57bda.record.md) | +| 2026-08-29 | PR-2454 | CI triage and unresolved review findings | Confirmed PR-specific repo-awareness drift and two P2 documentation fi… | [ac0b229c](branch-review-records/ac0b229c8d4618a0760a588b4efbcd47ec164e68cf0fa3a4240dfac33d602e8f.record.md) | +| 2026-08-27 | codex/therapy-pathways-redesign (PR #2413) | Run PR follow-up: second merge-drift + PR-policy fix | Re-synced with origin/main after PR #2416 landed (mechanical conflict… | [093e552f](branch-review-records/093e552fb22a9e87c899dd093a3c133dd13a262ad6b2fc4fbb5b5a6deee67d93.record.md) | +| 2026-08-27 | codex/therapy-compare-phone-ux (PR #2410) | Run PR sweep: CI fix + threads + drift | Before: mergeable_state dirty (real conflict in src/components/dsm/dsm… | [20f28afc](branch-review-records/20f28afc603cba993489d5388afdb6567cea43820bf426bee03f46716fc88185.record.md) | +| 2026-08-27 | codex/tooling-hooks-ci-invariants | PR #2397 babysit: merge main, conflict resolution, review thread fixes | mergeable; snapshot regenerated; 5 premature inbox done requests remov… | [3d772ae2](branch-review-records/3d772ae226f7524d949fe2a22a1d5f62ebac498b6cdcf20a53f1f44bc4e08659.record.md) | +| 2026-08-27 | update_documentation_structure (PR #2444) | PR 2444 review: main sync + CI fix + review thread | before: PR policy/Static PR checks/Unit coverage failing, 1 unresolved… | [60f6fcda](branch-review-records/60f6fcdaec6a782ff45fd00f775fe8163959317c5232913d18286e44c45de3af.record.md) | +| 2026-08-27 | codex/therapy-pathways-redesign (PR #2413) | Run PR sweep: CI fix + threads + drift | Before: PR required failing (Static PR checks red on check:repo-awaren… | [7895a181](branch-review-records/7895a1814c28b2fe53fd6877a91f0bc86535eee70ed77c22032f6989646a2a1d.record.md) | +| 2026-08-27 | codex/therapy-compare-phone-ux (PR #2410) | Run PR follow-up: second merge-drift + real bug fix + PR-policy fix | Re-synced with origin/main after PR #2416 landed (mechanical conflict… | [812457de](branch-review-records/812457de8c07639fd0b8c0910761e7e67a515864ed9324e6a0d3131d03da7307.record.md) | +| 2026-08-27 | ds-hazard-1-2-sweep | design-system | Findings — 0 P0/P1; 4 structural P2 (disabled-send border jump, hero l… | [9252ad9d](branch-review-records/9252ad9dfa57000de74b55496e6c60bbdde1ca84db9e2bfa7faf784cdcf7d98d.record.md) | +| 2026-08-27 | codex/therapy-compare-phone-ux (PR #2410) | Run PR sweep: CI fix + threads + drift | Before: Static PR checks failing (check:repo-awareness-snapshot drifte… | [9e932f48](branch-review-records/9e932f4880f7b7b745043f533dd770b2d0cad9c2ad12450b4e7aa50dd5339520.record.md) | +| 2026-08-27 | codex/therapy-pathways-redesign (PR #2413) | Run PR sweep: CI fix + threads + drift | CI was already green pre-sweep (PR required: success on d3f39c4); bran… | [ad2f2cc5](branch-review-records/ad2f2cc55ed454d781f0501ef25a67e6f7bbaf869908014dfceacbcd2b8838d4.record.md) | +| 2026-08-27 | gemini/engineering-maintenance-and-ledger-reconciliation (PR #2418) | Run PR sweep: CI/drift diagnosis + review-thread sweep on ledger-reconciliation PR | No fix pushed. mergeable_state=dirty is real: git merge origin/main co… | [b2fac1be](branch-review-records/b2fac1be83baee8c08175d37f3bed371c7c6a6b0027709f097d137dcc22e07a9.record.md) | +| 2026-08-27 | codex/therapy-compare-phone-ux (PR #2410) | Run PR sweep: CI fix + threads + drift | Static PR checks failing (check:repo-awareness-snapshot: committed sna… | [b88e809f](branch-review-records/b88e809f0017354eccba3273e1033cefd148765280d0a7d1a6d0eeebeaba7012.record.md) | +| 2026-08-27 | 2398 | pr-babysit sweep: merge conflicts, review threads, snapshot CI fix | FIXED | [ca7b9dde](branch-review-records/ca7b9dde3719ecff0347e226a3c7902d6e2aee8a619eb187fff0c63958889a5b.record.md) | +| 2026-08-27 | codex/dsm-search-ux-elevation (PR #2415) | Run PR sweep: CI fix + threads + drift | Before: mergeable_state dirty again (main advanced one more commit, #2… | [cf00a664](branch-review-records/cf00a66483dbef7c54915e7aa2c7a11e141ad5efd9613d587005bf5b9f2dd321.record.md) | +| 2026-08-27 | codex/therapy-pathways-redesign (PR #2413) | Run PR sweep: CI fix + threads + drift | Before: mergeable_state dirty (conflict vs main), all real CI green on… | [d99361a8](branch-review-records/d99361a8c9a53049ee45227f0230020721e9aebb18ee7548804835c510538765.record.md) | +| 2026-08-27 | codex/therapy-compare-phone-ux (PR #2410) | Resolve merge conflict against origin/main (requested follow-up after Run PR sweep) | Real content conflict in compare-ids-chrome.tsx, compare-slot-strip.ts… | [dcb88dab](branch-review-records/dcb88dab3a8f1280282012995f12e1a859954b143553f4ec105b93ca2cb37424.record.md) | +| 2026-08-27 | ds-hazard-1-2-sweep (PR #2416) | Run PR sweep: CI fix + review threads + drift resolution | Before: PR was 1 commit behind main (mergeable_state=behind), 0 unreso… | [e2777429](branch-review-records/e2777429da65fee35e22d333fddce1e1da86c1628775e7b22e28b2e3429d617b.record.md) | +| 2026-08-27 | codex/therapy-compare-phone-ux (PR #2410) | Resolve CodeRabbit review comment | CodeRabbit flagged a real SSR/client hydration mismatch: usePhoneMedia… | [e6519ddf](branch-review-records/e6519ddf48e2d749ace398192a8a5a6db5d6db598f6564e30086bfb84043f7d6.record.md) | +| 2026-08-27 | claude/home-page-scroll-stability-cbnak6 | Phone defects from device screenshots: safety-findings sheet scroll lock and flex-clipped… | Merged to main 2026-08-27 as squash 28b1fef (PR #2422). Squash verifie… | [f4c8adb5](branch-review-records/f4c8adb574e71b567fd8a7bbb8de353459d2936deaabc6aa06d8efcad0a9a834.record.md) | +| 2026-08-27 | codex/dsm-search-ux-elevation (PR #2415) | Run PR sweep: CI fix + threads + drift | Before: mergeable_state dirty (main advanced 5 commits past merge base… | [fcb04e01](branch-review-records/fcb04e011e3d8443756a9b6379f2fca8c90147ad5475ffa449fd583580afaa64.record.md) | +| 2026-08-26 | codex/chat-image-preview-reliability-image-preview-reliability | authenticated document cover selection, retry lifecycle, optional preview failure, and sou… | All substantiated P2 findings fixed; no remaining P0-P2 findings | [04098ccb](branch-review-records/04098ccb23c407505308b9e046181f8b978d85a4122db061e5b56a5f3cc0d988.record.md) | +| 2026-08-26 | PR #2384 | PR #2384 Ward Flow Phase 5 docs and sidebar changed scope | Post-merge review: original head tree matches squash merge; two review… | [05dba5d5](branch-review-records/05dba5d5d54fbe6733f15470a3d69957522452e434e543af81b8189c5d4a04db.record.md) | +| 2026-08-26 | codex/chat-document-viewer-workspace-document-viewer-workspace-20260826 | PR #2389 | fixes-applied | [1ef502c0](branch-review-records/1ef502c0076498eceb425d2fbe956b262fbb9b8415a95710ebb7c4cfa1f85514.record.md) | +| 2026-08-26 | codex/medication-risk-highlights (PR #2380) | PR #2380 full changed scope | No P0-P2 findings; corrected the stale six-item governance body with t… | [8047e7cf](branch-review-records/8047e7cfa1155ff116a68e54c06b8ce32db789c3564b1fc03b64a05c35fafa29.record.md) | +| 2026-08-26 | codex/chat-image-preview-reliability-image-preview-reliability | PR #2391 | fixes-applied | [a3ef569d](branch-review-records/a3ef569d0937ef0d619ee26c491cf0bac4c4d808d1597a7d1969c1cd5fe49762.record.md) | +| 2026-08-26 | PR #2385 | privacy trust brief changed scope | No unresolved findings; named design-value review comment fixed | [b3d95124](branch-review-records/b3d9512451f7ad59433ca465b01960badcea87dd1fec94c69561b1a6aca919e4.record.md) | +| 2026-08-26 | PR #2383 | PR #2383 Care Plan synthetic clinical prototype changed scope | Fixed four review findings and merge conflicts with minimal root-cause… | [b4d66c79](branch-review-records/b4d66c792240f2e2f06951f9130efb02c5c5cd7d59a955d5d2e061fcb0dfc893.record.md) | +| 2026-08-26 | claude/ward-flow-phase-5-p8rwcm | Ward Flow Phase 5 — bed availability lifecycle, leave beds, discharge board, capacity band… | Whole-branch review: approved with findings, 0 P0, 0 P1, 7 P2 — all se… | [dc2281cb](branch-review-records/dc2281cbb115db3be68986c3b2208038eb0962bfb2479c973cf031b30cf5d8f8.record.md) | +| 2026-08-26 | claude/dev-hub-handoff-accuracy (PR #2382) | PR #2382 full changed scope | Fixed the valid P2 by removing a spurious request that would duplicate… | [dd17b1f5](branch-review-records/dd17b1f5dd12781e5efb12c05d419fa65474775eb6a70e7c65cc7ab9448266aa.record.md) | +| 2026-08-26 | claude/therapy-compare-tray | therapy compare tray: phone dock addon, add-in-place, stacked comparison, device memory | built and verified; verify:cheap exit 0 (876 files / 10547 tests), ver… | [e9e97c01](branch-review-records/e9e97c01e7bcec0aa0ee1416a488f8890818ce71281b5d5841a814a017eca245.record.md) | +| 2026-08-26 | codex/chat-document-viewer-workspace-document-viewer-workspace-20260826 | document detail viewer reliability, PDF workspace UI, and phone/PWA recovery | No P0-P2 findings after fixes; ready with documented environment-only… | [fdefa159](branch-review-records/fdefa159942d280cd84cfdfd8d5053f017c548877db15be4783b7e26c2637c1c.record.md) | +| 2026-08-26 | codex/medication-risk-highlights | PR #2380 CI blocker: medication verdict signal | fixed and independently reviewed | [ff1c17dc](branch-review-records/ff1c17dcc29908e7a257a25bd6bb02e2288497a2bd71908f7592269a54a4fa7d.record.md) | +| 2026-08-25 | claude/ward-flow-phase-4-spec | PR #2373 CI failures, merge conflicts, and review-thread fixes | fixed seven review findings, merge conflicts, and stale sandbox docume… | [3695bb07](branch-review-records/3695bb07ddb686cb820c7c585ed285ceb863a5aa2f9902ebe83d831fab2df066.record.md) | +| 2026-08-25 | claude/settings-page-review-optimize-bicxn9 | PR #2364 Codex P2 preference sync + main merge | Supersedes accf3563 record after ledger-commit tip. Same preference-sy… | [7a2a2ac6](branch-review-records/7a2a2ac66769f3d381aea50eb860669ce468b48996f3343584988a70927abf58.record.md) | +| 2026-08-25 | claude/settings-page-review-optimize-bicxn9 | PR #2364 Codex P2 preference sync + main merge | Merged origin/main (adoption-manifest conflict resolved). Fixed three… | [972a8bff](branch-review-records/972a8bff175499efed52ae40d82cd8cbd04a9c1728f86c7cede97b203ec7110d.record.md) | +| 2026-08-25 | codex/ward-flow-phone-test | Ward Flow phone drawer advisory test follow-up | updated the stale phone navigation assertion after PR #2373 auto-merge… | [a6039ca5](branch-review-records/a6039ca5963c0b696adfe805fe306bfb8a2733ca952dbf20800a78420abb645a.record.md) | +| 2026-08-25 | claude/ward-flow-phase-4-spec | PR #2373 CI failures, merge conflicts, and review-thread fixes | fixed seven review findings and merge conflicts | [caf00bc1](branch-review-records/caf00bc10f3cb68ea01cd69d3456de137cd89f6f366b1c34cf6f6ec88e70a99f.record.md) | +| 2026-08-25 | backup/pr-2333-prelinear-20260824 | pr-ci-fix | Fixed: prettier format:changed; PR_POLICY_BODY sync for Clinical Gover… | [d7f69969](branch-review-records/d7f69969adf58477befb402a505082b062d1e8b00d1554d5289191a5b2a6e977.record.md) | +| 2026-08-25 | claude/settings-page-review-optimize-bicxn9 | settings surface review and rework | Reviewed and reworked: settings search index, phone/tablet section rai… | [f0bd6f6b](branch-review-records/f0bd6f6bc7b2deb87deb0d88f58c0250666acf3a6bb89c91e034e1da9f039236.record.md) | +| 2026-08-24 | claude/therapy-comparison-mobile-design-z0dagr (PR #2339) | Run PR sweep: branch sync | Already fully green (PR required success) before sweep; only action wa… | [018d666b](branch-review-records/018d666bbf82061b551bd8c52246310c88abce21a64e5468114fe97cd744ce40.record.md) | +| 2026-08-24 | dependabot/npm_and_yarn/npm-development-2db4774c1b (PR #2297) | Run PR sweep: main sync | before: CI already green on prior head; branch behind main only (merge… | [0f01b1cc](branch-review-records/0f01b1cc3970eec31955bc53d6624ef30e68c315f7df2b4ec09401f6e3391d31.record.md) | +| 2026-08-24 | dependabot/npm_and_yarn/npm-production-9d7c78ff3c (PR #2296) | Run PR sweep: main sync | before: CI already green on prior head; branch behind main only (merge… | [2e396899](branch-review-records/2e396899ac12a435a2a3b2d3c6813cf359094d0830024bf6ce81eec0c235a2e2.record.md) | +| 2026-08-24 | cursor/dictionary-heading-controls-mockup-4ee0 (PR #2322) | Run PR sweep: main sync | Before: draft mockup PR behind main (mergeable_state=behind), no faili… | [3156724b](branch-review-records/3156724bfd67ff8868ffb5e65b60aa070953ab022a9147a4bf35d732df66931e.record.md) | +| 2026-08-24 | 2354 | PR #2354 current changed scope | P1 privacy URL leak and P2 inventory/data-boundary defects fixed; fina… | [4fd3c57d](branch-review-records/4fd3c57dfcaeeca4519af86125867531ecd26b357b492519598c72a8dc49b0ff.record.md) | +| 2026-08-24 | codex/therapy-best-match-20260824 (PR #2342) | Run PR sweep: branch drift only | No unresolved review threads on current head (Cursor Bugbot / Codex fi… | [539859dd](branch-review-records/539859dde22645134c9a0698807da115b718c898168870bbb21c991acc5e39a4.record.md) | +| 2026-08-24 | dependabot/github_actions/github-actions-a0271f4b22 (PR #2325) | Run PR sweep: CI fix | before: PR required failing (Static PR checks: check:github-actions pi… | [5cf19781](branch-review-records/5cf197814565d993b56b7a99572409e956423257a31bc73a9df056c6e9a86a00.record.md) | +| 2026-08-24 | 2360 | PR #2360 current changed scope | No P0-P2 findings; merge conflicts resolved while preserving removal o… | [62d970f8](branch-review-records/62d970f8e7020f900fcfa1d2fad0c48ca2b2224a81c6f05879896eaf9654eb82.record.md) | +| 2026-08-24 | cursor/calculators-show-all-mockups-7ce3 (PR #2337) | Run PR sweep: CI fix | Fixed real CI failure: Static PR checks failed on check:design-system-… | [68d5616b](branch-review-records/68d5616bffac66b7aa334e3785ed9de6aeca711c4280a58e263d58221ec6378c.record.md) | +| 2026-08-24 | PR #2346 | answer page redesign handover | Reviewed the handover and the perfected mockup against the live answer… | [6db09ce9](branch-review-records/6db09ce93d6b8a6699b2577fa59a13c9a24cc65aaec4825715094972f3ef0941.record.md) | +| 2026-08-24 | cursor/factsheets-topics-page-ec19 (PR #2333) | Run PR sweep: CI fix + drift sync | Fixed real CI failure: legacyTapClasses (h-11/w-11) in factsheets-topi… | [72c5a977](branch-review-records/72c5a9775b63dec1da3871de945351009d6a31809d32e80c7108d5b7d5a06c9d.record.md) | +| 2026-08-24 | codex/platform-performance-infrastructure | Run PR sweep | fixes-applied: merged origin/main + regenerated snapshot; HMAC secret… | [7c6bf47d](branch-review-records/7c6bf47d40279ba2c42fd2ceee7eddc470ddbc39140abc0b1d396b34ea109004.record.md) | +| 2026-08-24 | claude/browser-test-gate-handoff-d5c1db (PR #2347) | Run PR sweep: CI fixes (owner closed mid-sweep) | Before: PR required failing (Static PR checks: stale outstanding-issue… | [82e2fac3](branch-review-records/82e2fac319f19c945709ba44a8882aafde1f18fd49cf471631f517ddb2b4d74e.record.md) | +| 2026-08-24 | cursor/dictionary-persistent-filter-band-4ee0 (PR #2341) | Run PR sweep: CI diagnosis + drift sync | Before: PR required failing (Production UI shard 3 red on an unrelated… | [8630ee29](branch-review-records/8630ee29b3ed12d2c35aeccb703dedcdf0855e198da9ced10731e889b52e1db5.record.md) | +| 2026-08-24 | cursor/answer-chat-mockups-025d (PR #2321) | Run PR sweep: main sync + conflict resolution | Before: draft mockup PR reported mergeable_state=dirty. git merge-tree… | [8bc499ac](branch-review-records/8bc499ac7dde32f6a06543bccf35b98778ebaa785e8bc95b144c7e40763c14e2.record.md) | +| 2026-08-24 | PR #2358 | answer page decisions + clinical-notes Essentials audit | Records the four settled owner decisions in the handover with reasonin… | [a1c2e57a](branch-review-records/a1c2e57acd6543dc226bcecf6f7b91b4830de1d1b10ff61c57731c7d2aa76377.record.md) | +| 2026-08-24 | codex/design-system-ui-kit-lab | Run PR sweep | fixes-applied: merged origin/main + regenerated outstanding-issues sna… | [a5c77f3c](branch-review-records/a5c77f3ca91dbe43011689690a9bcd152afdad635902e663c5b925cba048db3f.record.md) | +| 2026-08-24 | cursor/dictionary-control-row-polish-4ee0 (PR #2316) | Run PR sweep: main sync | Before: ready-for-review PR behind main (mergeable_state=behind); 2 re… | [a94911bf](branch-review-records/a94911bf269d66b1dee46a927086585c035a3df3c2582244a082251553cb75a4.record.md) | +| 2026-08-24 | claude/review-queue-header-design-of7baq (PR #2338) | Run PR sweep: drift sync | No code fix needed; branch was only behind origin/main (clean merge-tr… | [ba504bd5](branch-review-records/ba504bd5ee15c145f50f09fae92928bfbfa0a5b546a8af0732fc674927c67c0c.record.md) | +| 2026-08-24 | PR #2359 / claude/dev-hub-phase-2-recovery | PR #2359 current changed scope | P2 findings confirmed: complete review corpus omitted legacy/archive r… | [bec176b7](branch-review-records/bec176b75230d7aba0c403f46297911b33fafe5c01b54aaaea6a643de3357ab1.record.md) | +| 2026-08-24 | dependabot/docker/docker-images-263a700181 (PR #2326) | Run PR sweep: diagnosis only | before: PR required failing. Root cause confirmed via job logs: Docker… | [f02d1a58](branch-review-records/f02d1a581a75dd0dfabb583935cde7fc2ed1dc52565410a11b31a087aa3789d9.record.md) | +| 2026-08-23 | 2317 | tools catalogue cards and CI failure | fixed | [018f46d4](branch-review-records/018f46d4e138c95ca2c345610a2184aab44e8613682a2037a8baae8dffa590ad.record.md) | +| 2026-08-23 | codex/status-semantics-followup (PR #2304) | Run PR sweep: CI fix + threads + drift | before: required CI green, 4 unresolved review threads, 0 behind main.… | [18efb700](branch-review-records/18efb7003b9aa2bf01ca39504c821e83393c6e1bf0e5b37a9afc46c8ca5ce4e3.record.md) | +| 2026-08-23 | PR-2291 | Run PR: CI repair for blocked CMHT contact actions | published the omitted contact-action guard, workspace forwarding, and… | [4bd26d4b](branch-review-records/4bd26d4badd0bcc4410f69b50ff57255bece54812392affec6cad066652891dd.record.md) | +| 2026-08-23 | codex/tier-1-quick-wins | Tier 1 quick wins (10 tasks) | clean review (0 defects) | [6f453b76](branch-review-records/6f453b76982e3dfb13d12a0eaa3e39c1e6d2b12d8352119ececa64d5c5f79095.record.md) | +| 2026-08-23 | codex/maturity-quick-wins-20260823 | maturity quick wins: soak, tenancy, drift, and governance | No blocking findings after independent review; redirect, authenticatio… | [7ec2f08b](branch-review-records/7ec2f08bfa6c9b286ff9712744a8b8de24e976075e50426809533397f2936bbf.record.md) | +| 2026-08-23 | PR-2308 | open review-thread sweep for retired detailed mode homes | CHANGES REQUESTED / fixed five unresolved review findings | [831adac3](branch-review-records/831adac3361aced97257021499f1a150d193b70e6b1c46c06b5afbdb3c0a95b0.record.md) | +| 2026-08-23 | codex/task-performance-remediation | performance remediation: CLS attribution and geometry, intent prefetch, bundle provenance… | PASS - no P0/P1/P2 findings after measured 1024-1279 boundary fix, mai… | [83404e58](branch-review-records/83404e58e44d3ce722a13c3023c0539b3734d3f79920b45cfcb6061a9deccca0.record.md) | +| 2026-08-23 | codex/clinical-operations-programme | pr-2306-review | fixed | [93f2e798](branch-review-records/93f2e7987617511cf759748840b604f35eedd967c319b98a989310638137a5ab.record.md) | +| 2026-08-23 | PR #2293 / codex/implement-mode-aware-clinical-ask-feature | PR #2293 full diff and Clinical Ask reconciliation | no-new-p0-p1; four-p2-fixes-applied; draft-release-gates-open | [b1c2fc23](branch-review-records/b1c2fc2352457d33801a0ea439cfa0fc3f17df73a7646b2bfed10f0b45668b33.record.md) | +| 2026-08-23 | codex/clinical-operations-programme | PR #2306 unresolved-thread verification and merge-blocker remediation | Confirmed and fixed favourite-set reorder scoping and Railway DPA evid… | [c62c668f](branch-review-records/c62c668f6cb47cdfb5592f0a300617536fbe60cd6f1c00e5f74f3741d0dd218e.record.md) | +| 2026-08-23 | codex/maturity-quick-wins-20260823 | maturity ledger snapshot follow-up | No blocking findings; refreshed the generated pending-request snapshot… | [e15bcce6](branch-review-records/e15bcce6c52e3387420b995d8d074c019691b811f68d2f9a15b3c025b7bcf8fc.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | latest-main merge conflict resolution and CI repair | resolved snapshot conflict while synchronising latest main; focused pr… | [0ab43043](branch-review-records/0ab430432022488485b3cb8902dd30e720a45e7262cd63fae1a8e499b2f8ea1f.record.md) | +| 2026-08-22 | work | PR 1 clinical status semantics and baseline provenance | status semantics implemented with zero contract debt; no high-confiden… | [1233fbf3](branch-review-records/1233fbf36b5160345976009075cd18f47201a1635e459105ba8fb0cda19d332a.record.md) | +| 2026-08-22 | codex/status-semantics-followup | status semantics rendered coverage and visual baseline provenance truth | No findings; stale baselines stay pending and contradictory human attr… | [166acb91](branch-review-records/166acb91823f11f5d3784c615f45d933d5498a04db5ecd5e4941e1730e7a0b66.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | CI repair | replaced a regex-shaped documentation example that the Markdown link c… | [1d91b9c4](branch-review-records/1d91b9c4062360f5d5070fcd6ae9b2cc1261b73ed674af1bfe5193a8fab67de8.record.md) | +| 2026-08-22 | PR-2291 | Run PR: main merge and six P1 review fixes | main merged; six P1 fixes published; local runtime blocked before exec… | [222ddecb](branch-review-records/222ddecb7394f5ef160bc68d94fe857bb735d67672444e7a28528f984db53b58.record.md) | +| 2026-08-22 | PR #2292 / claude/dev-hub-phase-2-plan | PR #2292 CI repair after unit coverage failure | Fixed CI run 32594149250: PanelPageShell now uses contextual history f… | [269a4c69](branch-review-records/269a4c69830c7ffd8a6d203682b0cd105930d5e867594660bba2701f4b6e5536.record.md) | +| 2026-08-22 | claude/rag-quality-predicate-gap-uw320a | eval-quality source-backed review fallback threshold (0 -> 2) after canary 32589154243; pa… | Approved. Threshold raise is evidence-led and deliberately a fixed two… | [27ed1ee9](branch-review-records/27ed1ee9480639b311a97e92f1c4c321da07be47f749ec70afac085818309ab6.record.md) | +| 2026-08-22 | work | adversarial review of design-system title fix and live shared-home UI | P2 client-side mode switches left document.title stale; fixed with sha… | [343cc515](branch-review-records/343cc5158a797014c739bcb139022ae207e83e51306dfd0f925f9da6057bcf85.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | CI repair | refreshed generated scripts inventory after latest-main sync | [40bb3af7](branch-review-records/40bb3af7342dd6b97225c81b1cf9611b6587587d8dd7e4bef5727b3b5cf2f36f.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | latest-main merge conflict resolution and CI repair | resolved generated-document and Playwright-registration conflicts whil… | [4593025d](branch-review-records/4593025d615e1345b1e7e55c846c3d71530233f108ed60290e33c8986e2d52ba.record.md) | +| 2026-08-22 | claude/ed-care-plans-impl-7f44cd (PR #2291) | Run PR sweep: CI fix + threads + drift | Before: mergeable_state dirty (main-sync merge conflict never attempte… | [5e6887ef](branch-review-records/5e6887ef5a98b9bd18e2ec20b3c724488166d6a899f5442d605c052854e2ef74.record.md) | +| 2026-08-22 | work | design-system live convergence programme plan and local handoff | No P0-P2 defect in the plan. Six independently revertible tranches, ad… | [66988d5e](branch-review-records/66988d5ef89875ea4478e969fa246f6e84d36fdfaaf2afa95923f8ee8857522b.record.md) | +| 2026-08-22 | HEAD | Task 10 structured Clinical Ask feedback and migration | pass: no P0-P2 findings | [68443eda](branch-review-records/68443eda366f6cd886ec7a27878e9c14b4046b9c776fcf3b188b58264d8aa270.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | CI repair | restored Caring Contacts entries removed from the codebase index durin… | [684e1d1b](branch-review-records/684e1d1b722fc80f461227651d36d57ade286e9c17f47b9f50a4ed9048e7df61.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | current-main merge conflict resolution and CI repair | resolved regenerated snapshot conflict while synchronising current mai… | [6b71abf6](branch-review-records/6b71abf684a3d4ebd2439214fb448c9229f6ceb1f888d262866024ee70b2a93a.record.md) | +| 2026-08-22 | PR #2265 | full PR merge-safety review | FIXED: formatting, loading-inventory evidence, mergeability workflow c… | [6d7ef13f](branch-review-records/6d7ef13fc6f342a5f95ea5edafa8a179de6ff07e6173056d81dfc7ede80becab.record.md) | +| 2026-08-22 | PR #2292 / claude/dev-hub-phase-2-plan | PR #2292 CI repair for ledger page router harness | Fixed the second CI failure: the developer-ledger DOM suite renders Pa… | [70c18c29](branch-review-records/70c18c299fd7b0dde7d7cf053ebfb9b9726dfa286516d07ae9cdd5e15a8989be.record.md) | +| 2026-08-22 | codex/review-design-system-and-live-design | pr-ci-fix | green | [76e5eff4](branch-review-records/76e5eff45d022253b5017e75703fa591adbb9c5f76c5632f1bd44c923f39569b.record.md) | +| 2026-08-22 | PR-2291 | Run PR: final main sync after review fixes | latest main merged cleanly after review fixes; executable local gates… | [816d2699](branch-review-records/816d269908ad19d9830f2c7a085f6f11d79150537f76544123c06ec01ca3afa6.record.md) | +| 2026-08-22 | codex/review-design-system-and-live-design | pr-ci-fix | merge-ready | [87168de7](branch-review-records/87168de7b2eaa97017e1cceb4cbbac55bf854cd6bbbe91d019e7d25be11e6197.record.md) | +| 2026-08-22 | PR-2291 | Run PR: final current-main sync after review fixes | newly advanced main merged cleanly; executable local gates remain bloc… | [92c1abfb](branch-review-records/92c1abfb9f9ac018fd923247076c528cfafaefb88cd8441ea9e00d4dfd48ce99.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | CI repair | formatted codebase index after latest-main coverage repair | [9352911b](branch-review-records/9352911bf4c8207c421264082f96d65f4c53e36e979b5313c9f469dca96c2560.record.md) | +| 2026-08-22 | work | cloud design-status semantics implementation prompt | no high-confidence findings; bounded offline-first PR1 prompt with tru… | [99b9ea02](branch-review-records/99b9ea02fd5f93288c57c502619ad01fda97f2253fd6da239fd6bde1ca6c0a28.record.md) | +| 2026-08-22 | codex/implement-mode-aware-clinical-ask-feature | pr-ci-fix | fixes-applied: merged origin/main (globals.css + ClinicalDashboard con… | [9d529eed](branch-review-records/9d529eedf5bfdbebba5b033ddda508841590b826606958ddd44347aaa42a8b6c.record.md) | +| 2026-08-22 | work | Task 7 Clinical Ask external authority evidence | P1: route bypasses profile allowedAuthorityIds and enables all registr… | [9d7ed885](branch-review-records/9d7ed885d800beabea61086a6b1261984e64971a4c96063139caad933a82cdd4.record.md) | +| 2026-08-22 | work | mode-aware Clinical Ask Tasks 1-12 whole-branch clinical privacy security UI review | P1 clarification loop, unsafe auxiliary output, handoff navigation, an… | [9decc16d](branch-review-records/9decc16d7d4f6cca5fa359a07bdd71768580a02ca8a742fba18e28e151f4c35c.record.md) | +| 2026-08-22 | PR #2292 / claude/dev-hub-phase-2-plan | PR #2292 developer-hub review and P2 fixes | Merged current main; confirmed the external Markdown URL guard and add… | [9e74aa49](branch-review-records/9e74aa49d3e5b822a78bf81bcc90837d009fb026f0b49ded2b7cde9358f311c8.record.md) | +| 2026-08-22 | work | current design system and live UI | P2 shared-home route titles were not mode-specific; fixed locally with… | [a2d50135](branch-review-records/a2d5013511e1efca2e90f83a38a3b72b382993025a928ef253c4818a1663f06e.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | merge conflict resolution, review threads, and CI repair | resolved current-main conflict; verified existing review threads were… | [ac2fe952](branch-review-records/ac2fe9528fdd19d7a8f9f51cff8d3061ae7c71a2f252d0c96709d48649879815.record.md) | +| 2026-08-22 | codex/ward-management-design (PR #2289) | Repair CI drift after main merge | Repaired stale documentation paths and generated contract drift; conte… | [b569eab9](branch-review-records/b569eab9ffb958ffaebe6eeaaeccc2325bc626719590f2878d6270fe8cae032d.record.md) | +| 2026-08-22 | PR #2273 | PR #2273 full diff vs refs/remotes/origin/main | P1 clinical governance gap fixed locally: drafted MHA summaries and su… | [ba14367f](branch-review-records/ba14367f11bcdca1746067e27ce87e4af9662512cdbaaa4a1e69c0fe361302fc.record.md) | +| 2026-08-22 | PR #2292 / claude/dev-hub-phase-2-plan | PR #2292 developer-hub review and P2 fixes after main sync | Merged latest main 3e5c2234 cleanly after the P2 fixes. The merged tre… | [c098126c](branch-review-records/c098126cd910731212bdd8aa2bbe0b34a993d3661e387d907f5eb3dc00ba08ba.record.md) | +| 2026-08-22 | codex/implement-mode-aware-clinical-ask-feature | pr-ci-fix | fixes-applied | [c1ca1c7c](branch-review-records/c1ca1c7c441e7ee50174368ef82960e75a2ba94113b048419526e52743251b3d.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 (PR #2279) | Run PR sweep: CI fix + threads + drift | before: MERGEABLE/BLOCKED, CI in progress, 1 unresolved Codex P1 on de… | [c4dd792a](branch-review-records/c4dd792ad3a08a4ddd13a4730066d7e8f395cd967c60268d09e3775a59266008.record.md) | +| 2026-08-22 | codex/ward-management-design (PR #2289) | Run PR sweep: CI fix + threads + drift | Before: mergeable_state dirty (PR mergeability + PR policy both failin… | [c7b727ba](branch-review-records/c7b727bab40ad00fb24a30334953c787ddd0d4d7b3d8d78ce589aff3c3a18250.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | CI repair | refreshed outstanding-issues snapshot after latest-main sync | [cda60112](branch-review-records/cda6011264b58fa497081e3fde82de7edfea4e9542dd60bc05be38205a55c87f.record.md) | +| 2026-08-22 | PR #2265 | full PR merge-safety review | FIXED: pre-push type error removed; loading inventory, mergeability co… | [d5f95c17](branch-review-records/d5f95c173dcd03146cd937c64c8b89484657f157d25d552ce81c8c7c8d7e4c52.record.md) | +| 2026-08-22 | codex/ward-management-design (PR #2289) | Merge current main and validate Ward Flow review fixes | Merged current main with semantic Ward Flow conflict resolution; prese… | [d8a5b14d](branch-review-records/d8a5b14dd4d19ea98ba238e61bc032a805eea1597bfaf53a2892856afb90488d.record.md) | +| 2026-08-22 | claude/post-drift-ledger-tidy | post-drift ledger tidying: close #M54C4N/#056/#3514B7, re-scope #47M1XD, escalate #M6JNR8;… | pass — three rows closed with quoted evidence (live-drift run 32514326… | [e1e55cd4](branch-review-records/e1e55cd4fef796216d96d803aaf29e7120ffd9bf6f295b54668280658e5684b5.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | CI repair | replaced a legacy shadow alias with the canonical elevation token to r… | [ef34ad05](branch-review-records/ef34ad05002debf7fb16d2071be3b1b9441131435685c0c9494eefba6c81371e.record.md) | +| 2026-08-22 | PR #2274 | PR #2274 full diff vs refs/remotes/origin/main | Two P2 behavior defects fixed; CI policy, secret-scan, design-system,… | [ef78ebe5](branch-review-records/ef78ebe56daf193a014a7dfbfef22f40583112c104084f3adbfcc4e9439bb1e5.record.md) | +| 2026-08-22 | claude/rag-quality-predicate-gap-uw320a | Packet 2 (#NPQJKP): answer-quality predicate gap — src/lib/rag/rag-extractive-answer.ts, t… | SHIPPED as PR #2285 (draft). Falsification confirmed the premise first… | [f3c39361](branch-review-records/f3c39361155f0ac88546b70667b3aac31b49d945478a9a6d75067314de8f75e8.record.md) | +| 2026-08-22 | claude/suicide-contact-mockup-b5aaa0 | Latest-main sync | merged current main and retained caring contacts registrations plus co… | [fb357854](branch-review-records/fb3578543f33f56e47ed56d143ea7520092042c21bdaa96bb695e41c81f7b09c.record.md) | +| 2026-08-21 | claude/frontend-design-6sl1ft | full-frontend design review remediation: tokens, ward a11y, answer support label, gate gap… | applied — 20 review findings resolved or dispositioned; 3 architectura… | [017879a1](branch-review-records/017879a1e01ebb393ee9cfcacfe95f6f72f36926ac3b954e40cce1cc53c02b27.record.md) | +| 2026-08-21 | claude/clever-bohr-w87uiz | Claude Code web container parity, code half of the PR #2227 split: tiered provisioner, clo… | PR #2236 opened (draft), replacing #2227. Vendored skill tree moved to… | [09c32fd6](branch-review-records/09c32fd61a987e090cb7cb719c6cab135f5335c2753f48a294c554088723d22f.record.md) | +| 2026-08-21 | claude/gate-e-blinded-eval-b6076d | Gate E blinded-eval capture tooling: eval-answer-quality --extra-cases + gate-outcome dump… | PR #2208 opened; offline-only, no retrieval behaviour change (#E0N0QC)… | [2d2b3c78](branch-review-records/2d2b3c78d86d6c1599ede00358ad6ffc66a5adba0563fd5dee8656f0ef55ea87.record.md) | +| 2026-08-21 | claude/permission-prompts-issue-0dfcf3 | config: .claude/settings.json permission allowlist | approved, low-risk config-only change | [2fc0dc93](branch-review-records/2fc0dc93c0eee27a382f9aeed7c7e30fefc559c5d67fbcb6ad98ffd15cde7f76.record.md) | +| 2026-08-21 | claude/phase-5-closeout | Phase 5 close-out: measurement baselines, staging parity, D4 documentation correction (#31… | Supersedes the 2026-08-21 record for the same head. No finding changed… | [4dd785f6](branch-review-records/4dd785f6a227e847467c76e68e4c08df2fc9394343295e0985c70bd306ab2861.record.md) | +| 2026-08-21 | claude/ledger-reconcile-2026-08-21 | docs/outstanding-issues.md reconciliation of 29 queued inbox requests; no product code | Serialized reconcile transaction, machine-generated by issues:reconcil… | [5217a373](branch-review-records/5217a373b39b0197b4df172abe971bd0615770270470fb6c8faed38bf3d501aa.record.md) | +| 2026-08-21 | claude/local-cloud-settings-migration-bf4707 | Claude Code web container parity: cloud-profile snapshot, tiered provisioner, SessionStart… | PR #2227 opened; lint/typecheck/format/docs gates green; 16/16 new tes… | [595e86f2](branch-review-records/595e86f239ffb3dd861641db5fdb492589f0b5b5e81af14a1eaf3165710c8dfe.record.md) | +| 2026-08-21 | claude/prevent-duplicate-testing-yefgxc | gate-receipts: content-addressed memoisation of lint/typecheck/Vitest in run-heavy.mjs and… | Authored and self-reviewed. Local-only memo; CI reuse disabled outrigh… | [5d2ef502](branch-review-records/5d2ef502f952d385b6a7233ee5a84cce8b551200d88c447ba16f858fdf416fea.record.md) | +| 2026-08-21 | origin/main | bare PR publication policy | P2 fixed locally | [7e15f75b](branch-review-records/7e15f75b1793317c2f47e08ce31022e8d48332b6b53b246df8e10f14019bf45f.record.md) | +| 2026-08-21 | claude/github-comment-resolution-pr-77klg5 | prlanded | merged clean, content diff empty, no orphaned commits | [84c9153f](branch-review-records/84c9153fbb8c430ee7413dedafc0554b6526b4ffa7c9b5e2571dac4bd2691e5b.record.md) | +| 2026-08-21 | claude/frontend-design-6sl1ft | prlanded | landed clean — PR #2210 merged 2026-08-21T11:07:02Z by BigSimmo via me… | [9a043dd1](branch-review-records/9a043dd172f40889e8583a0ff2595d53c14afcd01db0bd936e5d2f6664c9763c.record.md) | +| 2026-08-21 | claude/specifiers-dead-exports | src/lib/specifiers-content.ts dead-export removal + outstanding-issues inbox request | Approved — 9 deleted lines of unreferenced code, no behaviour change;… | [a332fa3a](branch-review-records/a332fa3a0ca203c44eb07f65a895fefbe443f1eeb1b665ae8923a3c239eb1132.record.md) | +| 2026-08-21 | claude/gate-e-verdict-record | docs/rag-improvement/HANDOVER.md — Gate E blinded-read verdict recorded in the S2 and Gate… | Docs-only. Owner blinded read complete: v18 4ea310e48 3 / v19 cdfcbacc… | [a496af62](branch-review-records/a496af623a4c7760261ee3e8ce29826197b3a26c6edf7e3a811665e09e7ae7b2.record.md) | +| 2026-08-21 | claude/local-cloud-profile-vendored | Vendored half of the PR #2227 split: .claude/cloud-profile/skills 402 files 91782 lines, .… | PR #2238 opened (draft), superseding the stacked PR #2237 which was cl… | [a4e6a8ca](branch-review-records/a4e6a8cac34a4e17f0cfb8e9261aa792a78378f582fbb76413c522dc832ade3b.record.md) | +| 2026-08-21 | origin/main | bare PR publication residual latency | P2 fixed locally | [a62fa26f](branch-review-records/a62fa26f7d12ee71a6662ed9061014b938008ebad61b92795c61025ba45b63a2.record.md) | +| 2026-08-21 | claude/worktree-cleanup-guard | scripts/clean-worktree.mjs, scripts/check-base-freshness.mjs, .claude/settings.json | author-implemented; PR #2240 opened | [a8edc68d](branch-review-records/a8edc68de42114a1d9780e9e58d5b160d06bbdbaa8772c51e525108cf6ec2484.record.md) | +| 2026-08-21 | claude/clever-bohr-w87uiz | tests/claude-cloud-profile.test.ts — sandbox HOME for every provisioner spawn so the suite… | Fixes a false red that landed via PR #2236: the held-lock test planted… | [bb90f873](branch-review-records/bb90f87387ba8c26de25192b09483295c4f6f962cd0d81301e7564d53e5c7d49.record.md) | +| 2026-08-21 | work | on-demand DocumentViewer search desktop and phone behaviour | No remaining P0-P2 implementation or review issue: current main contai… | [c476bbb9](branch-review-records/c476bbb91aa7f911cd1922c2cf617e5692574c2deca449bde3efc3c8b638c148.record.md) | +| 2026-08-21 | claude/issues-reconcile-post-2206 | docs(issues): reconcile the queued inbox batch into the canonical ledger (#2218) | Backfilled record — PR #2218 merged 2026-08-21 (squash 02d1bcaab01f933… | [d021712c](branch-review-records/d021712c69d85d2e42499fadabae91ada5396e3de2eb4652d748b09fae84ba8c.record.md) | +| 2026-08-21 | claude/auto-close-next-servers-7ymzsx | scripts/dev-free-port.mjs, scripts/ensure-local-server.mjs, src/lib/local-server-utils.mjs… | approved — self-authored PR #2212, idle-timeout self-shutdown for ensu… | [d6f42a0d](branch-review-records/d6f42a0dc063e6c15d25ae3ebfc9cc56ec7ad99d3775774592ad8d2abc8e5093.record.md) | +| 2026-08-21 | claude/phase-5-closeout | Phase 5 close-out: measurement baselines, staging parity, D4 documentation correction (#31… | Self-review; no blocking findings. Docs-only diff plus five ledger inb… | [da9eaddd](branch-review-records/da9eadddac4befebc995b1000caa73f1fa0ced0d25d52b5789223410bac06c08.record.md) | +| 2026-08-21 | claude/worktree-cleanup-guard | scripts/clean-worktree.mjs, scripts/check-base-freshness.mjs | author-implemented; addressed CodeRabbit finding on PR #2240 (programm… | [e246b114](branch-review-records/e246b1146921341f3d4d59e978c5c64eba136dbf114ced90cc88cac2c1f28c08.record.md) | +| 2026-08-21 | claude/frontend-design-6sl1ft | design-review remediation + loose ends + nested-mockup CI scope routing | applied — 20 review findings resolved or dispositioned, 5 loose ends c… | [e59c5e7a](branch-review-records/e59c5e7a53f6377bb610ffaeec065030de7aaccb89378c8c0d6318d233cfe41e.record.md) | +| 2026-08-21 | claude/phase-5-closeout | PR #2250 review-thread sweep: Codex P1/P2 + CodeRabbit findings on the Phase 5 close-out d… | Fixed and resolved. P1 db-push contradiction removed (db push reserved… | [eecaf3f5](branch-review-records/eecaf3f51b0f4d8dad88a76dbb9c162887d5067cd48bdde0bbaa87a410f4701a.record.md) | +| 2026-08-21 | claude/shadow-runbook-operator-answers | docs(worker): answer two of the four B4 operator unknowns from measured evidence (#2228) | Backfilled record — PR #2228 merged 2026-08-21 (squash 1fe3c60c94822f6… | [f97d90d5](branch-review-records/f97d90d561a026c4d126c174fc5ab7882423a4f351a6158170f0ad2fa240c3c3.record.md) | +| 2026-08-21 | claude/ledger-231-timeout-diagnosis-6e306e | #231 offline diagnosis: docs/rag-improvement/231-diagnosis-2026-08-22.md, docs/README.md,… | Re-scoped #231. The row premise (answerRouteBudgetMs.fast binds) is fa… | [fdb12854](branch-review-records/fdb128546cfba6d90d819674629097c35681d97fbf32580016fd8ed1fee9191b.record.md) | +| 2026-08-20 | claude/task-ledger-review-bee095 | docs/outstanding-issues-inbox ledger requests (25 files); no product code | Self-reviewed handoff: 11 done + 12 update + 2 add requests from a cod… | [04a6b6cf](branch-review-records/04a6b6cf6815736f021554e2dfe6960c23759410799c666a0b4406db6fe7cfcd.record.md) | +| 2026-08-20 | PR #2201 | PR #2201 drift alignment window record — Codex P1 review-comment resolution | Fixed: the status board's active 'Next dispatches' line, the D4 owner-… | [0b9f33db](branch-review-records/0b9f33dbb3fde5baaca33bd4ac3d075d142ccc11773079e8b7026dcf973d5579.record.md) | +| 2026-08-20 | codex/chat-disable-user-document-upload-disable-user-document-upload | user document upload removal design sweep | No upload-removal design regression found; relevant upload and respons… | [119caae0](branch-review-records/119caae0f02c0a6c44fb260b285629ac4b310388f111afde3b5cea37a0dc144f.record.md) | +| 2026-08-20 | codex/image-auto-retry | signed image lazy loading and automatic recovery | P2 findings: classify automatic retries by failure status and preserve… | [350eacd4](branch-review-records/350eacd4fda845452351264941bf3866a6f737e93bb27458ba93d336623ea14d.record.md) | +| 2026-08-20 | claude/docling-shadow-extraction-runbook-942862 | packet B4 docling shadow extraction Gate F operator runbook (docs only) | runbook-added;values-verified-from-code-and-gate-b-record;cost-cap-sta… | [4ec22911](branch-review-records/4ec2291165da59a78cf8fa25a7d04e7cca8c1c312a7b08bca06a23b7273ff0b3.record.md) | +| 2026-08-20 | claude/settings-portability-b38ea3 | Move project-specific autoMode allow/soft_deny/environment block from user settings to .cl… | Clean — verbatim move, no behaviour change intended; 41 added lines, n… | [69c1ad57](branch-review-records/69c1ad571fe121333c48aba14a7725b42ff6eede02d4bb4298c972e81c267286.record.md) | +| 2026-08-20 | claude/ledger-reconciliation-docs-truth-b0a2e9 | docs/outstanding-issues.md, docs/outstanding-issues-inbox/**, docs/rag-improvement/COORDIN… | PR #2206 opened: reopens #343 (re-filed as #S19JRT) and #318 (reopened… | [a5af2f79](branch-review-records/a5af2f79967d97669b10f94d0894c54e4295d92811796eae62580b3a173d4e3d.record.md) | +| 2026-08-20 | PR #2198 (claude/phase-4-index-restoration-b0f4ea) | migration-history alignment RPC: 20260820120000 migration_history_versions(), check-migrat… | Authored and self-reviewed. Root cause proven from live-drift run 3237… | [b0f1f213](branch-review-records/b0f1f213296ed6e158184a90156c52a58b6fa4fc3597114c8fd29864d090f58d.record.md) | +| 2026-08-20 | claude/docling-shadow-extraction-runbook-942862 | packet B4 docling shadow extraction Gate F operator runbook (docs only) — post-review pass | two-codex-P2-findings-verified-against-code-and-fixed;search-delay-cla… | [cf5f4bc2](branch-review-records/cf5f4bc2b34ec20df29958026b121de2abc549bfd79f6a2f662c38f1c69f6171.record.md) | +| 2026-08-20 | PR #2199 | PR #2199 on-demand document search — Codex P2 review-comment resolution | Fixed: the document-viewer visual-baseline target still declared .docu… | [e5aed82f](branch-review-records/e5aed82f89e308e20fae2728a7601d6f36d8d946da7b21e5adf1163a061a530a.record.md) | +| 2026-08-20 | claude/repository-audit-review-o5vtp9 | repo-wide audit | Findings: 2 P0/P1-critical (shared answer-cache key collision serving… | [efcdd55d](branch-review-records/efcdd55dcf32389ef9d3d5975628028f520663a5a95da3caac3a7294ad581a9a.record.md) | +| 2026-08-19 | gemini/safe-workflow-guards-and-motion-contracts | release-readiness | MERGE_READY | [04cb87d0](branch-review-records/04cb87d0bf597b493a511c1e3a120f4b291b563a5aa939e75020fc5526ba9b37.record.md) | +| 2026-08-19 | claude/rag-d6-reconcile-b4 | issues:reconcile post-B4 (2 requests; #9DGA6R closed) + HANDOVER S7 merged row + pending f… | reconcile clean; 1 pending (new request, applies next pass); register… | [69f8dc5e](branch-review-records/69f8dc5e98bd8461fc83a8937ab127c3010024c0d01e04ab940b47f74b230fa6.record.md) | +| 2026-08-19 | claude/migration-history-drift-allowlist-37444c | Phase 6.2 (#Q5JHBJ): six validation guard migrations 20260819110000-110500 + fifteen migra… | Drift zero on production (live-drift 32251326536 compare step: No unex… | [6a3785a8](branch-review-records/6a3785a84afec6df46b90f552bb0b3bcb3555d1c1b80156ecbf1c4ce17a2d357.record.md) | +| 2026-08-19 | claude/lightweight-mode-homes | PR #2157 lightweight mode homes consolidation | Reviewed and fixed: PR policy body was empty, blocking merge. Restored… | [84221136](branch-review-records/8422113687c1731c49a6de6c7be1262f126e2360c2246fc0f1ef223327f14e67.record.md) | +| 2026-08-19 | claude/docling-worker-shadow-mode-b6fa17 | Packet B4 docling worker shadow mode (PR #2170): worker/shadow-extraction.ts, worker/pytho… | ingestion-worker-reviewer: approve-with-nits (docling_version regex en… | [b97fde4d](branch-review-records/b97fde4db6c54bbb8d8febcffd266be8c6a46d0467edf4f9225254d87202b5f0.record.md) | +| 2026-08-19 | claude/settings-developer-button-8dd78d | src/proxy.ts, mockups gate/layouts, settings-dialog, supabase auth client, developer-area… | reviewed-by-author, PR #2176 opened | [bf1462e5](branch-review-records/bf1462e5f5f52330bf2620ed1e0e05bc83bb903ceff49a3eecc7b5818616a846.record.md) | +| 2026-08-18 | claude/form-names-design-rjw40t (PR #2041) | Run PR sweep: CI fix + threads + drift | mergeable_state blocked = CI still in flight, not failing; only non-re… | [023f1a7d](branch-review-records/023f1a7d191bcaf28e60e3401dca4af353f75dbeb7c7c158bdeb388917cc7384.record.md) | +| 2026-08-18 | claude/code-setup-review-a95519 | Follow-up to PR #2113: five outstanding-issues inbox requests, plus a reporting-only corre… | shipped as PR #2117. Five follow-ups captured that #2113 could not clo… | [028b9861](branch-review-records/028b986193b51f1cc5792e772b070306c269a353bebc430402d91df50a38a5b1.record.md) | +| 2026-08-18 | claude/home-pages-cleanup-qeh5fr (PR #2139) | Run PR sweep: CI fix + threads + drift | Branch already current with origin/main (base sha a9552eb4 == main tip… | [02fa2028](branch-review-records/02fa2028df916a22d9fcc90c3cb8bee27f3f83dddda784e84d76dff86464b414.record.md) | +| 2026-08-18 | claude/db-remediation-phase-1-2-19e4de | docs-only: Phase 1.2 RPC divergence dossier (docs/audit/live-drift-forensics-2026-08.md §1… | self-review complete: all ten match_* def_hash mismatches classified a… | [0363fe6d](branch-review-records/0363fe6d8b7a12cc846d0bb62401f25b543e33bee5210cfc9708ac8c0ba8b348.record.md) | +| 2026-08-18 | claude/schema-work-mem-codify-6200f1 | supabase migrations, schema.sql (PR #2106 Phase 3 codification review) | Reviewed via supabase-schema-guardian: signatures, ordering, idempoten… | [094e8208](branch-review-records/094e8208cf8f6aac89158b14059d7ea3c97f584cd8555ccb73d251d72ed9845e.record.md) | +| 2026-08-18 | claude/restore-source-metadata-pin | restore .nullable() source_metadata pin in src/lib/rag/rag-row-contracts.ts after PR #2107… | strict pin restored; 26/26 contract tests; offline 623/623; 36 golden | [0a18b8e9](branch-review-records/0a18b8e9ba7fa494f75b85ffd05fd9b65fead2f59404ca47158efc100ed27dc6.record.md) | +| 2026-08-18 | dependabot/github_actions/github-actions-6d70da7aad (PR #2011) | Run PR sweep: CI fix + threads + drift | Ledger throttle showed NOT REVIEWED at cda7ff21b. Found the substantiv… | [0d04d24d](branch-review-records/0d04d24d06ae96a37799bf8dd50f837cfe5b294a2b8208cfad9252fa1d949bf8.record.md) | +| 2026-08-18 | fix-316-pending (PR #2118) | docs/outstanding-issues-inbox/5bff7294-a329-4fda-a36b-25489e36660d.json, docs/outstanding-… | Queues a cancel of stale request 22946f19 (duplicate #316 target, alre… | [1315af8a](branch-review-records/1315af8a904f5c490a02e404fea89b7eb3245ef3bfbbda68273d3223b7c4a2f0.record.md) | +| 2026-08-18 | claude/dictionary-mode-ui-updates-uwoicy (PR #2132) | Run PR sweep: CI fix + threads + drift | No fix needed: all required in-scope checks (static-pr, safety, covera… | [196a129d](branch-review-records/196a129d152e41b7d7af1e82b2a335d905520acf60450bcfb3925cd089df6c32.record.md) | +| 2026-08-18 | claude/clinical-guide-footer-search-4l54hp | Guide tour action rendered as a dock addon pill on phones | approved | [19cdca49](branch-review-records/19cdca49e6751aaf2914f2d6ee4ab144b1689c076eb51580aff9534f27b98c65.record.md) | +| 2026-08-18 | codex/caring-contact-design-20260815 (PR #2142) | Run PR sweep: CI fix + threads + drift | Skipped: mergeable_state dirty is a genuine content conflict (merge-tr… | [1ab533ca](branch-review-records/1ab533ca6d901544900e9c8bd0bfa786711a5a8149258c73c57081056cc51e41.record.md) | +| 2026-08-18 | claude/dictionary-mode-ui-updates-uwoicy | Dictionary a11y + zero-state + Browse header replay after #2114 merged mid-branch (PR #213… | approved | [1c99cd1f](branch-review-records/1c99cd1f4f7fc28a1bae4d20b72bac77c80665af8487cac6441b92e183bf5922.record.md) | +| 2026-08-18 | claude/db-remediation-phase4-indexes-a1661a | Phase 4 index restoration: 20 concurrent index builds + 2 concurrent drops on production,… | PASS — 20/20 indexes rebuilt indisvalid+indisready with canonical defi… | [1fd02045](branch-review-records/1fd0204537f6955d37613b686bc81de075429ecd88cce458fd455865c870a467.record.md) | +| 2026-08-18 | claude/issues-reconcile-2026-08-19 | Serialized reconcile of 21 queued outstanding-issues inbox requests (PR #2168) | approved — documentation-only; canonical diff equals the recorded reco… | [209b08a9](branch-review-records/209b08a93bea5954ac3af3034d10c056a50f6b4dde3771c74ad6bebb83b4ea44.record.md) | +| 2026-08-18 | claude/header-redesign-mockups-3ms5kn | Dictionary browse header rebuilt on the selected direction (production /dictionary/browse) | approved | [2149be40](branch-review-records/2149be40c9723dfdcf39c3831bee991df0e35a86a2f2426a566763d4c7df1916.record.md) | +| 2026-08-18 | 2129 | RAG eval scorer: readability metric split (fragmentation vs v19-derived length bound), eva… | Approved — evaluation scorer only; no retrieval/ranking/selection/prom… | [2399b67b](branch-review-records/2399b67bef6792a2d01d66efd20576ba87265a3855f2cd37fc64641934115b87.record.md) | +| 2026-08-18 | claude/db-remediation-board-refresh-2026-08-18b | docs/database-remediation-coordination.md board refresh after #2093/#2098 (#316) | coordinator self-review: docs-only, verified against main 2c311c7ed | [26601359](branch-review-records/26601359b89b2dd146e61f664ae30c068ebd46d97eb56a209e5e8f56adc175eb.record.md) | +| 2026-08-18 | claude/development-index-page (PR #2135) | Run PR sweep: CI fix + threads + drift | No repair needed: branch already at origin/main tip (0 behind), sole r… | [27fb5a95](branch-review-records/27fb5a9577d8e590ddbabd73d2ee25bb9897c5f00a5fee3e1ff5f298320852c2.record.md) | +| 2026-08-18 | claude/dictionary-mode-ui-updates-uwoicy (PR #2114) | Run PR sweep: CI fix + threads + drift | Before: all required checks already green (PR required success), 0 unr… | [2def7e31](branch-review-records/2def7e3195b192726b0e31499f86e26f9e51b9ab0d231421d15e91bed9e13665.record.md) | +| 2026-08-18 | claude/db-remediation-board-d4-2026-08-19 | docs/database-remediation-coordination.md board update after #2123 (#316, D4) | coordinator self-review: docs-only, verified against main 3bb34a579 an… | [323d3701](branch-review-records/323d37016e13d31cf7e0c23930490fae9d945ce0ebefbf3620ff7f0be07f39bd.record.md) | +| 2026-08-18 | claude/db-phase3-staging-proof-bodies | db remediation Phase 3 follow-up: staging proof (110000/111000/112000 applied to ikoiolksx… | Reviewed and handed off; staging drift residual after apply = trgm ind… | [374fbb8a](branch-review-records/374fbb8ab1553ad0ad69733f3456873bf7e30871fdafbd985fd22feaea12279b.record.md) | +| 2026-08-18 | claude/docling-gate-b-eval-5czgln | packet S6b: Gate B run + decision record (eval/docling harness fixes + docs/rag-improvemen… | Gate B PASS recorded from evidence run 32176604314; four latent harnes… | [381b4151](branch-review-records/381b41511e145024c0d34d173ed186f1659871b294a41e390fa36fdf6f5bdfb9.record.md) | +| 2026-08-18 | dependabot/npm_and_yarn/npm-development-f0b269800a (PR #2012) | Run PR sweep: CI fix + threads + drift | Behind main (mergeable_state: behind), no CI failures or unresolved-th… | [3a19409a](branch-review-records/3a19409a3ee775a76ed310a42c100cae6ecc99d6b0b7b388ece227fbe5259e7b.record.md) | +| 2026-08-18 | claude/db-remediation-316-d4-capture | inbox requests #316 close-out/D4 and #Q5JHBJ re-scope | coordinator self-review: inbox-only, verified against forensics 3.7 an… | [3bf41505](branch-review-records/3bf415052283c7c9ccd1792f7d354ba9a0d6efd4d5b0716281e86fcb133abbf1.record.md) | +| 2026-08-18 | claude/dictionary-mode-ui-updates-uwoicy | Dictionary UI: topics/compare copy removal, sources page rebuild + composer suppression, s… | approved | [3cefd0b3](branch-review-records/3cefd0b317247513501ba8e6a5088ccb5e089481047931ea74fd8400f3f390a3.record.md) | +| 2026-08-18 | gemini/catalogue-toolbars-proofs (PR #2073) | Run PR sweep: CI fix + threads + drift | Behind main (mergeable_state: behind), all check runs green or in-flig… | [4089bf4a](branch-review-records/4089bf4a7736bfd726f6a2269aa0917f39ea4c979aead45d3b26f2198b806083.record.md) | +| 2026-08-18 | gemini/safe-ledger-resolutions-and-hardening (PR #2107) | Run PR sweep: CI fix + threads + drift | Synced origin/main into behind-but-clean branch (no conflicts; f3ea973… | [4e262bb8](branch-review-records/4e262bb80863de82f05070ca638861abbaa290b834c0af51b4166ffa18a15a58.record.md) | +| 2026-08-18 | gemini/therapy-compass-and-tooling-hardening (PR #2159) | Run PR sweep: CI fix + threads + drift | Before: real (git merge-tree confirmed) merge conflicts against origin… | [5934041c](branch-review-records/5934041c7e3c7c31e44855d4b0fde7ad29a5f52f5f63c6a003e158c82ce807b4.record.md) | +| 2026-08-18 | claude/header-redesign-mockups-3ms5kn | Dictionary Browse header redesign mockup study (design scratch) | approved | [599419ed](branch-review-records/599419ed3f41f0407ee7e9c44816a1c23691e853437cb963c33d0dcd860f4099.record.md) | +| 2026-08-18 | claude/settings-development-section (PR #2109) | Run PR sweep: CI fix + threads + drift | Before: Static PR checks failing (design-system-contract ratchet — leg… | [5b03318c](branch-review-records/5b03318c07763efecca63e3f476dd4dfa1757c1297c491599e715bfbe3739a04.record.md) | +| 2026-08-18 | claude/db-remediation-board-2026-08-18 | docs/database-remediation-coordination.md board update 2026-08-18 (#316) | coordinator self-review: docs-only board update verified against main… | [5ecfa15a](branch-review-records/5ecfa15a0ff0f5fa2491e64f167abc7b978531c45d2e3d8193fc5eea0c1c286f.record.md) | +| 2026-08-18 | claude/clinical-guide-footer-search-4l54hp | Guide Centre footer composer shared phone dock chrome | approved | [5ef27bdd](branch-review-records/5ef27bddd67e7684747a62117c9d75bf90397fb061f937dc1df32ca05c31fbbc.record.md) | +| 2026-08-18 | claude/header-redesign-mockups-3ms5kn | Dictionary Browse header round two — letter dropdown + Abbreviations in Filters (design sc… | approved | [5f15d81f](branch-review-records/5f15d81f006cc85637c12e37a6c1fc41c800de4a1f9f93e6f6d66745a57a5636.record.md) | +| 2026-08-18 | claude/database-drift-remeasure-phase2-7c4215 | Phase 2 re-measure: staging migration parity + check:drift against current main (#056) | Applied the single missing migration 20260818090000 to staging by the… | [627ade3c](branch-review-records/627ade3c681407cb483184c4fed41fa07bb1dd9f0333ad1b31c2aedd7950a251.record.md) | +| 2026-08-18 | dependabot/github_actions/github-actions-6d70da7aad (PR #2011) | Run PR sweep: CI fix + threads + drift | Behind main (mergeable_state: behind), no CI failures or unresolved-th… | [62d3aab1](branch-review-records/62d3aab1f2deeec7fe1b00cd344870e89ca4014d1b858c5f2c1b9112e45c1600.record.md) | +| 2026-08-18 | claude/settings-development-section (PR #2141) | Run PR sweep: CI fix + threads + drift | No unresolved review threads (0 threads; only bot noise: Codex/CodeRab… | [63a14de8](branch-review-records/63a14de80d0b9ae0b7b7fa79a69079bf2df8cee1283d751ca6d6df91742bb1c8.record.md) | +| 2026-08-18 | claude/eval-canary-protocol-docs-01bb49 | docs/rag-behaviour/safeguards.md, docs/rag-improvement/README.md — eval-canary pair protoc… | approved — docs-only, no code/behaviour change | [65462d1d](branch-review-records/65462d1d993e393eb03e0fc2cefc1b6b50174027a14f1831edb0d266829567aa.record.md) | +| 2026-08-18 | claude/search-recovery-rail | SearchResultsEmptyState rail restyle + desktop tap floor restore (PR #2147) | approved — presentation-only; no copy, testid, heading-level, live-reg… | [6651300a](branch-review-records/6651300a557416232b1653304a7e175fb005cc557190f316fe8c221a57c2e2bf.record.md) | +| 2026-08-18 | claude/issues-reconcile-2026-08-18-evening | issues ledger reconciliation (88 queued inbox requests: database-remediation set + PR #210… | clean — reconciler applied all 88 queued requests with 10 cancellation… | [6b6d74c4](branch-review-records/6b6d74c4bb911f95ea8c260a89c63e8a815a33b9c9e6c1c5294aeb7aa817e7b4.record.md) | +| 2026-08-18 | claude/lighthouse-baseline-refresh (PR #2134) | Run PR sweep: CI fix + threads + drift | Before: mergeable_state=behind; PR required failed solely on a cancell… | [6c208625](branch-review-records/6c20862518a0de5b31286eaddb998e04d85d36eecd18aa7b71513a175ab82ade.record.md) | +| 2026-08-18 | dependabot/npm_and_yarn/npm-development-f0b269800a (PR #2012) | Run PR sweep: CI fix + threads + drift | Before: PR behind main by 25 commits (mergeable_state=behind), 0 unres… | [6da0da97](branch-review-records/6da0da97cf89979dea2aad2492c01da7faea8e94b1a742067155e7c8259150d1.record.md) | +| 2026-08-18 | claude/therapy-modes-visibility-bb37d2 | Therapy production visibility: remove devOnly gate, route-layout not-found gate and produc… | Approved — reachability now disclosed rather than gated; per-record re… | [730c1139](branch-review-records/730c1139a3494d1af3269ee1091efae428933fc910dc3da951590bdc62190344.record.md) | +| 2026-08-18 | dependabot/docker/docker-images-263a700181 (PR #2013) | Run PR sweep: CI fix + threads + drift | Behind main (mergeable_state: behind), no CI failures or unresolved-th… | [738f1612](branch-review-records/738f1612e1b097f39fbe8b7b651833815991b0541e1194cd71911c9ebaa9176a.record.md) | +| 2026-08-18 | claude/therapy-mode-consistency-a466b0 | Therapy Compass shared-component convergence B3/C/D: control recipes to shared Button, 16… | Approved for review as PR #2122 — 19 button call sites converted with… | [73c130d8](branch-review-records/73c130d8ea3909acf382f2a098d9e9edcc221d659be6e0f4920750e4c5360c21.record.md) | +| 2026-08-18 | claude/s2-rag-composition-7330b0 | src/lib/rag/answer-composition.ts (new), src/lib/rag/rag.ts buildAnswerInput + answerSecti… | packet S2 (A2 + A3) built and self-reviewed: intent-conditioned relate… | [7be5b09c](branch-review-records/7be5b09c1f8088555adaf8667b61b3bc5fc44e0e4504164733179aac5eb61df0.record.md) | +| 2026-08-18 | claude/patient-factsheets-search-regression-8iyvnd | src/components/mode-home-template.tsx,tests/mode-home-main-align.test.ts (correction to pr… | approved | [81997d38](branch-review-records/81997d38c381bb8080a941b3ba8e54540b842a4341cf4b38c4b6f6a3b91ce316.record.md) | +| 2026-08-18 | claude/patient-factsheets-search-regression-8iyvnd | src/components/factsheets/factsheets-home-page.tsx merge-conflict resolution | resolved: kept PR's ModeHomeTemplate rewrite over main's now-supersede… | [85adbcb3](branch-review-records/85adbcb388f97e5cacd515137c05989fedfe4423caca99867b727f7a0011a965.record.md) | +| 2026-08-18 | claude/home-pages-cleanup-qeh5fr | remove caveat footer from every mode home | self-review clean; all mode-home caveat footers removed, dead reserve/… | [85fbcdfb](branch-review-records/85fbcdfb47931329db567714a1714c37fa301323219bcdaf26e142726d266a32.record.md) | +| 2026-08-18 | claude/header-redesign-mockups-3ms5kn (PR #2143) | Run PR sweep: CI fix + threads + drift | Before: all required CI green on 11256e9f, mergeable_state=behind main… | [87b58716](branch-review-records/87b587160940950a98519841f747c7ab08644497b75bcb763c6fd161dec759a3.record.md) | +| 2026-08-18 | claude/services-navigation-removal-7bnknn (PR #2040) | Run PR sweep: CI fix + threads + drift | mergeable_state blocked = CI still in flight, not failing; only non-re… | [8ce52f3f](branch-review-records/8ce52f3fa0fc7bca2009990c2498c57d77b902e52e310062f66268bc327fca65.record.md) | +| 2026-08-18 | claude/post-reconcile-review-2026-08-18 | retire stale visual-register instructions in issues/ledger skills + AGENTS.md; queue recon… | clean — three instruction surfaces no longer point at the ISSUES-LIST.… | [919dacc6](branch-review-records/919dacc65e8ee47d9ce4c41758e474d87071283c5c52543e48b01b71fb1c7be6.record.md) | +| 2026-08-18 | claude/diagnostic-criteria-duplication-udg99e | dsm diagnosis page criteria duplication | fixed: replaced criteria-echo card row with a four-tile at-a-glance su… | [92610868](branch-review-records/92610868c245fa3f12c1f952f99050f4632920a5e95b42b678790e93fabb0050.record.md) | +| 2026-08-18 | codex/chat-dictionary-ultimate-dictionary-ultimate | Dictionary mode: 8 production routes, 96-entry governed catalogue, shared search/filter li… | Approved for draft PR with one declared red gate — production bundle b… | [95854524](branch-review-records/958545248192195caf5c7b0a29d7daf058011f92c1b70d00c86aec57fb44822b.record.md) | +| 2026-08-18 | claude/advisory-tools-spec-repair (PR #2115) | Run PR sweep: CI fix + threads + drift | Synced behind branch to origin/main via GitHub update-branch (clean fa… | [9c83ebb1](branch-review-records/9c83ebb18e9d5bf0c5a2f2840eccad03527562a9d96d800d1cdf6b970eaa126a.record.md) | +| 2026-08-18 | claude/db-phase3-staging-proof-bodies | db remediation Phase 3 follow-up, final: 20260818113000 applied to staging, 111000/112000… | Reviewed and handed off; staging proof complete — zero function mismat… | [9d9815f1](branch-review-records/9d9815f1d88e54d6803eca19580348e2e3d9e209af3725527ade39fc5ad9badd.record.md) | +| 2026-08-18 | claude/clinical-kb-prod-migration-db4aab | docs/audit/live-drift-forensics-2026-08.md §3.7 — production window pre-flight found the f… | docs-only; no production writes; findings recorded for coordinator (in… | [9f07fe8e](branch-review-records/9f07fe8e5559d62b5ddb863fad587daa01b7dd770ef8b4101d3cedabdbb7fb69.record.md) | +| 2026-08-18 | claude/rag-eval-scope-detection-23b6a2 | scripts/ci-change-scope.mjs rag_eval_changed classification (#SDQSFD) + change-scope self-… | Fixed: src/lib/rag/** now sets rag_eval_changed=true so eval:rag:offli… | [a0a71a3b](branch-review-records/a0a71a3be50e54391ae9bdf848e5812c92b532350013d9b9e02d7779aa1a638a.record.md) | +| 2026-08-18 | claude/refresh-therapy-visual-baseline | Refresh all six Linux visual baselines from hosted-CI artifact visual-baseline-32189416778… | Approved — all six actual renders opened and reviewed before adopting;… | [a1801bd0](branch-review-records/a1801bd086d8c47dbbfba09ddfad2f9a2f1929379b7d02d1d20ee232c411db72.record.md) | +| 2026-08-18 | codex/caring-contact-linked-mockup | Caring Contact linked prototype: 13 mockup routes, 17 mockup components, docs/caring-conta… | Approved for draft PR — mockup-only scope, no production route/API/lib… | [a4393aea](branch-review-records/a4393aea7ff4468596ed459334842f3dd7cce0586238bf3a90297a7b83b808a3.record.md) | +| 2026-08-18 | codex/ward-management-design (PR #2140) | Run PR sweep: CI fix + threads + drift | Resolved a real 7-file merge conflict against main's icon/tone registr… | [a72887a7](branch-review-records/a72887a7a37874900d52e4edd50b04c606a8e739dc7969e023a8025c494427c0.record.md) | +| 2026-08-18 | claude/revert-2065-claim-condition-regression | revert PR #2065 (claim-leading for/in condition binding) after live canary 32097916649 reg… | single-commit revert; probe restores 5 citations; offline 614/614; con… | [a843a22b](branch-review-records/a843a22bab4d2c65ae47bc683f553fb5e5726f2fe111fb3f93fa9386e7b46b20.record.md) | +| 2026-08-18 | gemini/ui-favourites-polish-and-ledger-sync | merge-conflict-resolution | merged (#2156, squash 42426f4bd) | [aaee65e1](branch-review-records/aaee65e1907cae958ce1e0aec49a9d39ce53e26d4228ef496d42a82a59a82c97.record.md) | +| 2026-08-18 | claude/rag-d5-reconcile-inbox | issues:reconcile (31 requests) after #2107/#2127-#2131 (ledger-only) | 0 pending afterwards | [acf724f2](branch-review-records/acf724f2277e144a5e024bd2778f09ae3f58d95104addd461829495fb0fdf07d.record.md) | +| 2026-08-18 | claude/code-setup-review-a95519 | Claude Code environment: hook exec bit + bash registration + contract test, settings.json… | shipped as PR #2113; session-start.sh was mode 100644 and bare-path re… | [ad1e40bd](branch-review-records/ad1e40bd3d8c42b132f27a2240602c3c56d2e3ddff9f1354bbe5c50aef7099fd.record.md) | +| 2026-08-18 | claude/db-remediation-board-phase3-2026-08-18 | docs/database-remediation-coordination.md board update after #2104/#2106 (#316) | coordinator self-review: docs-only, verified against main 511d22f4d an… | [aedb200d](branch-review-records/aedb200d3e2ca20b411be7be48c1e744356ce8168ee76751786d1ec8eccb476d.record.md) | +| 2026-08-18 | claude/therapy-mode-consistency-a466b0 | prlanded | Landed correctly. PR #2122 squash-merged as 092633eb; verified by cont… | [af4de581](branch-review-records/af4de581bea0990cd58f3886b76d98f595e149247e894caaa3f51c69d680dcf7.record.md) | +| 2026-08-18 | dependabot/npm_and_yarn/npm-production-0af95c93ad (PR #2010) | Run PR sweep: CI fix + threads + drift | Behind main (mergeable_state: behind), no CI failures or unresolved-th… | [af7b0f7d](branch-review-records/af7b0f7dbb09ca9dfb278497f9e4652bf8f23d8e2ad68149a62176038c980b94.record.md) | +| 2026-08-18 | dependabot/npm_and_yarn/npm-production-0af95c93ad (PR #2010) | Run PR sweep: CI fix + threads + drift | CI already green at head (PR required: success, Static PR checks: succ… | [b08122ee](branch-review-records/b08122eeafdd60fef9a4d45bb6e8b5a05ed6139df923d6b6360897fc3ff49b14.record.md) | +| 2026-08-18 | claude/ci-main-verification-blindspot | CI concurrency: exempt base-branch pushes from cancel-in-progress | shipped | [b1814fea](branch-review-records/b1814fea1580f18252cda21f16744ba5373c7933d894c80cba5e425c53430b23.record.md) | +| 2026-08-18 | claude/patient-factsheets-search-regression-8iyvnd | src/components/factsheets/factsheets-home-page.tsx,src/components/factsheets/factsheets-da… | approved | [b56ee4be](branch-review-records/b56ee4be00d225db51c54f2debc8c43e4fe2b0123f4aaf6c647811c847b94790.record.md) | +| 2026-08-18 | claude/rag-d4-reconcile-inbox | issues:reconcile (17 requests) + HANDOVER G1/S1d/S1c/S2 rows + COORDINATION §7 (docs-only) | single fresh-base reconcile; 0 pending afterwards; G1/S1c/governance r… | [b6d9c187](branch-review-records/b6d9c18765ffda0a1890452f25c18d773c8c8eb05ca8de516da7f1e099e69b88.record.md) | +| 2026-08-18 | claude/home-pages-cleanup-qeh5fr | mode home footers + dictionary command surface | self-review clean; footers removed on user instruction, dictionary exa… | [c5dc5a81](branch-review-records/c5dc5a81e8d54c798c0750476a66cfd5fe5dac55336a9339fd8986a3b1ab873b.record.md) | +| 2026-08-18 | PR #2105 (list_manual_ledger_tasks) | src/lib/medication-interaction-lexicon.ts, docs/medication-interaction-lexicon-review.md,… | REMEDIATED 2026-08-18. Branch carried fabricated clinical governance c… | [c74114b8](branch-review-records/c74114b8f66aa5078cf48a7157a710a37d8f6aa30b6e62c1624f0e6fe73ff93e.record.md) | +| 2026-08-18 | claude/patient-factsheets-search-regression-8iyvnd | src/lib/search-command-surface.ts,src/components/mode-home-template.tsx | approved | [c7d52917](branch-review-records/c7d5291702bbc1acdbe61d91c20665e02df1aa60d3560900cd46e5c272b72d0a.record.md) | +| 2026-08-18 | claude/services-navigation-removal-7bnknn | src/components/services/services-navigator-page.tsx (referral progress stepper phone cente… | PR #2103 opened — verify:pr-local complete (7091 tests, build, lint, t… | [c9089c1b](branch-review-records/c9089c1be4eccbe787644d8ceb04bbb8fd0fbd7faf769b235b340a9a2e32befa.record.md) | +| 2026-08-18 | claude/factsheets-homepage-routing-obr8g4 (PR #2112) | Run PR sweep: CI fix + threads + drift | Before: mergeable_state behind main, PR required failing (Static PR ch… | [ca54149d](branch-review-records/ca54149d26828a62369fda1bd657d46478a4ddb68cb50fa71963d5ee01c7a1e0.record.md) | +| 2026-08-18 | claude/s3-follow-up-suggestions-95e160 | packet S3 / A4: menu-derived, evidence-gated follow-up chips in src/lib/answer-follow-up.t… | Approved - deterministic composition only; candidates come from the S2… | [cc149b75](branch-review-records/cc149b75e900816f35298154ab35a6e553ac49a88cacbd0b7ea4de568250259a.record.md) | +| 2026-08-18 | claude/cls-regression-correction | docs/outstanding-issues-inbox/51e687a9-406a-4f2e-bb70-f6ba9aebef53.json | created PR #2078: cancels the mistaken CLS-regression request from #20… | [cc8a51d4](branch-review-records/cc8a51d4e4ee056183065529ec544e6682e14063b450adc6a6ac211b9fe7553e.record.md) | +| 2026-08-18 | claude/factsheets-homepage-routing-obr8g4 | shared mode home phone hero design + per-mode copy | shipped | [cf160394](branch-review-records/cf160394d2edd122aee9520f4ce17df15019615222cc8897febbc4f381054ffd.record.md) | +| 2026-08-18 | claude/db-remediation-phase-2-a0c20b | Phase 2 staging parity replay (#056): 28-migration chain replayed onto Clinical KB Staging… | Self-review passed. Replay proven: 194/194 parity, zero statements IS… | [d54d14f0](branch-review-records/d54d14f00e65448e6ced1f60805bc47334ea1e7147a46a5f13b0b8e4e7ef818e.record.md) | +| 2026-08-18 | claude/therapy-compass-convergence-2iufoh (PR #2131) | Run PR sweep: CI fix + threads + drift | No drift (0 behind main, base sha matches origin/main exactly) and no… | [d74bfb19](branch-review-records/d74bfb19e578d603ecda7dadf68f393617f7e38a0145bda3c5631de4f5eff18e.record.md) | +| 2026-08-18 | gemini/clinical-medication-graph-dedup | Clinical medication graph & deduplication (#322, #323) | READY | [dc184278](branch-review-records/dc184278fcbb5c0e83539eb038dbafc5e9f2da2db8985bba8a34dc9d62ae2e47.record.md) | +| 2026-08-18 | issues-reconcile-fresh (PR #2119) | docs/outstanding-issues.md, docs/outstanding-issues-inbox/** | Replaces PR #2110, whose reconciliation had permanently baked two appl… | [dfc41a86](branch-review-records/dfc41a86e3ff8a725918e688ca8f15daf4ff20296601dbb8d33bac59c780d6b6.record.md) | +| 2026-08-18 | claude/issues-reconcile-2026-08-18-evening | prlanded | clean — PR #2120 merged as squash ed19e143; two-dot content diff again… | [e2220e1f](branch-review-records/e2220e1f5f8658b740f3154b9d6732135c8663968e76f3b6d90c02261583ca72.record.md) | +| 2026-08-18 | claude/drift-probe-comment-pointers | follow-up to #2058: stale comment pointers + RPC-missing hint name the v2 probe migration;… | self-review: comment/doc-only, no SQL/manifest/test change | [e4f69008](branch-review-records/e4f69008ad6f53bc51fceeff12fe8d1116722ca31f4c53c56bc0b1a611cf5e53.record.md) | +| 2026-08-18 | claude/lighthouse-baseline-refresh | Lighthouse baseline refresh from pinned-browser CI run at 533989f | shipped | [e56e0fe8](branch-review-records/e56e0fe8053c2af58ddd7cfa2149ac3cae54fcf65a803a76b3efe20eb2328933.record.md) | +| 2026-08-18 | claude/schema-work-mem-codify-6200f1 | db remediation Phase 3 (reframed): codify live SET work_mem on ten match_* RPCs, eight sch… | Reviewed and handed off; no function body changed; ten manifest def_ha… | [e7988c80](branch-review-records/e7988c8069a294eb5d39a6292bfe60f94f940fdc0c272877227a7de151077d5a.record.md) | +| 2026-08-18 | claude/clinical-guide-footer-search-4l54hp (PR #2137) | Run PR sweep: CI fix | Fixed real merge conflict blocking pull_request CI (mergeable_state di… | [eb70cfab](branch-review-records/eb70cfaba7c07bbf08378dd1ef9b98cf417952ab43e1e7f4be477ab9fb06d808.record.md) | +| 2026-08-18 | claude/bundle-budget-production-baseline | bundle-budget.json production baseline refresh + measurement evidence doc + outstanding-is… | Approved — investigated before refreshing: main's +8.03% is diffuse fe… | [eb993f92](branch-review-records/eb993f9206e1027b9919ddfcf00607246f6490249b5ce4f864db107ad619319d.record.md) | +| 2026-08-18 | codex/ward-management-design (PR #2140) | Run PR sweep: CI fix + threads + drift | No fix applied — branch history is unrelated to main (git merge-base/m… | [f1511d35](branch-review-records/f1511d35f98e58dee82685aefbd3f67544ae75e9dc6992937f790238cf9c7fbd.record.md) | +| 2026-08-18 | claude/ledger-issues-reconcile-945d0a | docs/outstanding-issues-inbox ledger queueing | PR #2130: queued 7 immutable ledger requests (done #DP6M3G, update #23… | [f214d132](branch-review-records/f214d132e7088a47d7ffac71a3e6bcf24b7c2d26368431b5675aff16ade3926d.record.md) | +| 2026-08-18 | gemini/responsive-tokens-headers (PR #2072) | Run PR sweep: CI fix + threads + drift | Behind main (mergeable_state: behind), all check runs green or in-flig… | [f2d5e0ad](branch-review-records/f2d5e0adf35407450f958f657203373f87a77f0e171269a999c0517bb2f3440f.record.md) | +| 2026-08-18 | claude/lightweight-mode-homes (PR #2157) | Run PR sweep: CI fix + threads + drift | Before: PR mergeability/PR policy transiently failed (self-healed on r… | [f3e3e644](branch-review-records/f3e3e6440a98a6ad538046cf6ae0558d2f323059a1a570a19d995a15c9b844a5.record.md) | +| 2026-08-18 | claude/issues-capture-h5a-residual-ulid-lookup | two immutable outstanding-issues inbox requests (P3 issue: H5a residual after G1; P3 rec:… | approved — inbox-request files only; canonical ledger untouched, appli… | [f76cd75e](branch-review-records/f76cd75e2ad4d6a67dd26e562753ca92c3cd2b63e321bef0fd8f7c226ee31714.record.md) | +| 2026-08-18 | claude/clinical-guide-footer-search-4l54hp | prlanded | approved | [f9c56210](branch-review-records/f9c56210f7787f6efa1ea378c67a893c9d06a38b91f0dd7c9050fd751028846e.record.md) | +| 2026-08-18 | claude/issues-reconcile-post-phase2 | Dedicated ledger reconciliation, re-cut off base dda4956ff: 17 queued inbox requests appli… | Self-review passed. Corrects the prior tip, which was cut against 9d83… | [fddd42a9](branch-review-records/fddd42a9e93d9f7e66607077eb77d2a71ad979f40926fb3f0452cd67ade9e0c8.record.md) | +| 2026-08-18 | claude/header-redesign-mockups-3ms5kn | prlanded | landed clean | [fe3fb936](branch-review-records/fe3fb93648dc52663a4c8f62e9b80f79a95e3d30e9205c2e1a8423cd888abc24.record.md) | +| 2026-08-17 | claude/database-drift-allowlist-48839e | remediation Phase 6: schema_drift_snapshot v2 history probe migration (not deployed), chec… | self-review: migration authored + mirrored + manifest regenerated, not… | [014fee0f](branch-review-records/014fee0f5a9c0fc049bfa0047afa855ccd498160d291ebb5c3d2eb0b0749a7cf.record.md) | +| 2026-08-17 | claude/services-navigation-removal-7bnknn (PR #2040) | Run PR sweep: CI recovery confirmed | Supersedes the pending-rerun record from this sweep. Both flagged fail… | [02471c51](branch-review-records/02471c51928a64ed4d9010f91d3c62ef5391134683ddd67a7652b9e8d45621ac.record.md) | +| 2026-08-17 | 2018 | merge-conflict resolution + review fixes for PR #2009 (docs/filter-contract.md, scripts/ch… | reviewed and fixed: resolved 6-file merge conflict against main, fixed… | [09f7a622](branch-review-records/09f7a6223d2cc9cf801d28f42c84347fb6e8fe8167098620126ddf8a61a1994e.record.md) | +| 2026-08-17 | claude/remove-clinical-entries-text-0vtmot (PR #2049) | Run PR sweep: main sync + CI recovery | New PR opened mid-sweep. Synced clean (no conflicts, was already curre… | [0a2d1689](branch-review-records/0a2d16896060b173da8252e56bd916a1cb9a5cd122ac0cbb9bc4a837c075b6b2.record.md) | +| 2026-08-17 | dependabot/npm_and_yarn/npm-production-0af95c93ad (PR #2010) | Run PR sweep: main sync + CI | Behind main -> synced clean twice (no conflicts, main advanced mid-swe… | [0d59dbe9](branch-review-records/0d59dbe9cfcbb2e3db4458650b0d489e3c1e300b04a37dc6d7a265432c31ee75.record.md) | +| 2026-08-17 | gemini/design-tokens-source-contracts (PR #2031) | Run PR sweep: CI diagnosis | Not fixed — diagnosed a real, measured Lighthouse regression that need… | [0faeeb67](branch-review-records/0faeeb672dd307bb7561e240f2041506c271f1b7f89fcb2d98a3b6f9f8548632.record.md) | +| 2026-08-17 | claude/g1-rag-document-context-qn9ubx | packet G1 document_context provenance tag + ledger issueRowFingerprint display-id fix + tw… | approved — G1 is a provenance tag only, deriveConfidence and synthetic… | [1048a2a6](branch-review-records/1048a2a62bd4a4306cb90f6c144e94427f6cf21d5a9f449f983b170ddb35a4b5.record.md) | +| 2026-08-17 | PR-2040 | src/components/services/services-navigator-page.tsx, src/components/services/service-group… | OPENED PR #2040: folded the standalone services browse nav (All/Urgent… | [10685ba8](branch-review-records/10685ba8c4bac91df3e8b00a440f4fca3019fc74ac081bec1630d13a1540b0a1.record.md) | +| 2026-08-17 | claude/remove-specifiers-nav-gamiom | src/components/specifiers/specifier-map-nav-header.tsx,tests/mode-nav-addon-slot.dom.test.… | PASS | [14c700c4](branch-review-records/14c700c4e329646fe2db4f0d19ea4f8fa97a00147beca36461097c4fcdac4d5f.record.md) | +| 2026-08-17 | claude/rag-d2-handover-sync | docs/rag-improvement HANDOVER/COORDINATION sync after S1b canary pair + S1d packet + S4/T4… | docs-only; S1b canary root cause recorded; S1d packet added | [19c1cf38](branch-review-records/19c1cf380274d86de82505984d1baef6b335c14020361671fcd7b83b680aef2c.record.md) | +| 2026-08-17 | gemini/clinical-medication-graph-dedup | Clinical medication graph & deduplication (#322, #323) | READY | [1bf7c9b1](branch-review-records/1bf7c9b14f7edbb599931c721d96a41bfa8bf96f62cbc131ae94f3cbccf22c03.record.md) | +| 2026-08-17 | 2014 | PR #2014 review-and-fix | High-confidence defects fixed; review threads resolved | [23787765](branch-review-records/23787765990717e03f13cc7032add47d5a8e7d5b869c94ad78c36a062211e4e5.record.md) | +| 2026-08-17 | claude/form-names-design-rjw40t (PR #2041) | Run PR sweep: main sync + CI fix + threads | Behind main -> synced clean. Fixed 2 actionable CodeRabbit findings (f… | [2b7232bf](branch-review-records/2b7232bf51b1cd14e50de99bd267db403909f10a81a00a777b46b81ea0c6b69b.record.md) | +| 2026-08-17 | claude/database-coordination-chat-9c0730 (PR #2044) | Run PR sweep: CI diagnosis | 0 behind main, no sync needed. PR required check: success. Only failin… | [2c9d370b](branch-review-records/2c9d370b34d56d2621a78f2aee70a23f6b9a97cad7eb9ccdfae3cceaa73d64bb.record.md) | +| 2026-08-17 | claude/pr-auto-merge-safety-tpxupu | scripts/guard-push.mjs, tests/guard-push.test.ts, AGENTS.md, .claude/skills/run-pr/SKILL.m… | authored: allow ordinary fast-forward push/commit to a PR branch while… | [34da6f5a](branch-review-records/34da6f5a63ff446e67f42d58dd5935969b7425557ddb21aa01bcadd78378fec9.record.md) | +| 2026-08-17 | claude/packet-s4-adversarial-fixtures-5ho5tp | packet S4 (B0): adversarial fixture contract, check:rag:adversarial-fixtures validator, ba… | Implemented and self-reviewed; offline only, no retrieval/ranking/gene… | [36d27ad5](branch-review-records/36d27ad5147b1d477eae67738bdb00662de75297d59969cbbeb55344d99e472c.record.md) | +| 2026-08-17 | codex/pr-1998-fix | pr | PARTIAL-FIX | [3cb7ccda](branch-review-records/3cb7ccda715349528ce874a104d8f7086772b310145b8ef3f028b82ae6b4f63c.record.md) | +| 2026-08-17 | claude/g1-rag-document-context-qn9ubx | packet G1 — document_context similarity_origin provenance tag (types.ts, answer-stream-con… | approved — provenance tag only; deriveConfidence and synthetic_similar… | [3f5dad0c](branch-review-records/3f5dad0c7109ddc3f59bd3ce42fa9df1587d3cbcd938a01b8950f1f1e746472a.record.md) | +| 2026-08-17 | claude/rag-r0-reconcile-inbox | issues:reconcile after PRs #2023/#2024/#2035/#2036/#2037 (28 requests, 3 cancellations, #2… | single fresh-base reconcile; supersedes PR #2032 partial-base attempt | [42c9767e](branch-review-records/42c9767e935f4f73474461a37aeb350869157a151008e52d8e808b1f58a33faa.record.md) | +| 2026-08-17 | PR (branch claude/p1-ledger-324-318-316-xag5sy, #324 follow-up) | scripts/audit-merge-loss.mjs + tests/merge-loss-audit.test.ts + one #324 inbox request (1d… | Authored handoff, owner-approved scope (tab fix + mechanism classifier… | [4405a36b](branch-review-records/4405a36b7fedb006b4f8a9947a9e66aec8589e5a59de4871bbab616ad8a91c5c.record.md) | +| 2026-08-17 | claude/rag-plan-review-guide-vhrls9 | docs/rag-improvement coordination handover + HANDOVER status sync + hazard H5a note + 6 in… | docs-only; conflict with merged S1 row resolved; state re-verified aga… | [446cd9ee](branch-review-records/446cd9ee36ef481c9c26ae8b85d66d4e88b005ab7e601c5123d71834c246ceda.record.md) | +| 2026-08-17 | claude/packet-s4-adversarial-fixtures-5ho5tp | packet S4 (B0) conflict resolution + secret-scanner remediation | Resolved three base advances. Two real conflicts kept both sides: rag-… | [4734ed4f](branch-review-records/4734ed4fb1d2b10601d34284097fa7bee15fc8b78648fff78e9230950c943bf1.record.md) | +| 2026-08-17 | claude/mobile-bottom-toggle-cutoff-efo7mv | src/components/DocumentViewer.tsx phone content-reserve padding; tests/clinical-dashboard-… | PR #2042 opened. DocumentViewer's hidden-composer content padding kept… | [4d97cced](branch-review-records/4d97cced04265f7f2e53091a4254fe530c242dfa86fe8b441db662f3e1a301cd.record.md) | +| 2026-08-17 | claude/rag-r0-reconcile-inbox (PR #2043) | Run PR sweep: diagnosis only, no sync | SKIPPED sync/merge - main already carries commit 14421fba 'docs(issues… | [52a87eef](branch-review-records/52a87eef5406cb676f6d346f6a30b9cf3b769156050cc1947843f6f0525f73b1.record.md) | +| 2026-08-17 | claude/fix-theme-transition-timer-race | theme-transition timer race in use-theme.ts causing Vitest unhandled-error failures | Fixed: guarded the 200ms theme-transitioning callback against a torn-d… | [534ba018](branch-review-records/534ba018669ad4d7117683335cd7476a61ea84f765230826f4cd6d186cf0b95a.record.md) | +| 2026-08-17 | claude/s1c-residuals-r2-r3-4pb1at | S1c follow-ups: use-theme transition-timer guard + issues:done ULID display-id fingerprint… | PR #2063 open; both loose ends from the S1c babysit fixed; no RAG surf… | [5b8f236b](branch-review-records/5b8f236b72e13bc70a99be7384b79d387fc2317f46ed5f222d2f5ef425a0aadc.record.md) | +| 2026-08-17 | claude/ledger-reconcile-issues-c1trbj | issues:reconcile after #2023/#2024 | 22 requests applied (8 requested: #212 correction, #J912J9 governance… | [65d188be](branch-review-records/65d188be1a43a7c8cb344d1587c1f8e617108bc2de777d41e308fa989bb725c3.record.md) | +| 2026-08-17 | https://github.com/BigSimmo/Database/pull/2023 | src/app/api Zod row contracts (ledger #212 tranche 3) + 2 ledger inbox requests | Approved -- 4 unchecked structure-asserting casts on inbound DB/RPC da… | [66904e05](branch-review-records/66904e0507ba08c4f28e5760ba2b025ce41fac8f096ab7ba1cc4ef61db2eb599.record.md) | +| 2026-08-17 | PR (branch claude/p1-318-lexicon-slug-and-guards, #318 follow-up) | src/lib/medication-interaction-lexicon.ts (tcas slug), scripts/build-medication-lexicon-re… | Authored handoff, owner-approved scope (dead slug + guard blind spots… | [691b5961](branch-review-records/691b5961fbbe31dbb74413feee9a1471c1303aad0af3e55e97664038a28937de.record.md) | +| 2026-08-17 | claude/packet-s6-docling-lab-d6foa6 | eval/docling isolated Docling lab benchmark harness + Gate B decision-record template (pac… | PR #2057 open — harness only, no benchmark verdict; hard boundaries re… | [6ea4a185](branch-review-records/6ea4a18560d833a6c86edeeebf1828e2a11801d2e55027be54889272b93e7a96.record.md) | +| 2026-08-17 | claude/regrade-322-warfarin | docs/outstanding-issues-inbox — #322 re-grade to P1 on traced evidence | Traced data/medication-interaction-index.json and src/lib/medication-i… | [6fe6f89a](branch-review-records/6fe6f89aef723a52b7a0abbd9fb38c4eec193bafc303312bf16c9201630bffaf.record.md) | +| 2026-08-17 | 2009 | direct merge-conflict re-resolution pushed onto PR #2009's own branch (codex/account-setup… | pushed a real merge commit (not squashed) directly onto the PR branch… | [75a51e74](branch-review-records/75a51e7413c063ecd1a7ac074cba09c119cb4ef8c5318bfdde5f7836b4143d9e.record.md) | +| 2026-08-17 | pr-1998 | filters | fixed-second-ci-blocker | [7765db73](branch-review-records/7765db7390f88c4cb763e05a58bef1158fb0db2c3232072b73ddddd3d653876a.record.md) | +| 2026-08-17 | claude/phone-pwa-animation-bug-suooj4 (PR #2046) | Run PR sweep: CI recovery | 0 behind main, no sync needed. CI: PR required green after rerunning t… | [779c1f5f](branch-review-records/779c1f5f4140674cb189885a321f4aa3494e8a34b521681e1c4420ae0fda4cf6.record.md) | +| 2026-08-17 | gemini/viewer-batch-urls-image-probe | viewer batch signed urls, image encodings probe, public doc filter | clean | [7d870a0e](branch-review-records/7d870a0e009afb1f94df3f20108573b8df7967431be9e6825bfb162d37506944.record.md) | +| 2026-08-17 | codex/filter-system-overhaul | pr #1998 clinical filter overhaul | PASS | [81782f18](branch-review-records/81782f186cfefcfe52006b705b15b5018bd6bc01d0998839c9544151db434263.record.md) | +| 2026-08-17 | claude/search-bar-behavior-2g0vnq (PR #2038) | Run PR sweep: main sync + CI | Behind main -> synced clean (no conflicts). CI: PR required green afte… | [858ec5bf](branch-review-records/858ec5bff081d1c2cd29a554833c1b9e8277325ef7c67e6fa01fa8163a817608.record.md) | +| 2026-08-17 | dependabot/github_actions/github-actions-6d70da7aad (PR #2011) | Run PR sweep: CI fix + drift | Fixed: Static PR checks failed on npm run check:github-actions (claude… | [8bd2ec44](branch-review-records/8bd2ec4489e545bda0d985e3b6299063260994a858d9a6769322cc7575fbe64f.record.md) | +| 2026-08-17 | claude/p1-318-lexicon-slug-and-guards (PR #2015) | Run PR sweep: CI fix + drift | Fixed: docs:check-links (via ledger-inbox mutationConflicts) failed be… | [9180bdc9](branch-review-records/9180bdc997ea5df680595372f4448a337c961f16496a03a205d685998a8671a3.record.md) | +| 2026-08-17 | gemini/clinical-data-lexicon-integrity (PR #2029) | Run PR sweep: threads + drift | Partially fixed. Fixed 1 CodeRabbit review thread: tests/therapy-compa… | [9af43c91](branch-review-records/9af43c91039941fa2ab4a94e04cb960f42c3b0860aed9e7168f8f333d9f5d1b6.record.md) | +| 2026-08-17 | PR (branch claude/p1-316-phase3-blocked-capture, #316 offline capture) | one #316 inbox request (855d03b3). No code, no schema, no migration, no live call; Supabas… | Offline capture only, no remediation performed. Corrects this row's NE… | [9c51e4a4](branch-review-records/9c51e4a42ec2ecfa3a149a7471ccf09a55e29ae5f28ced52926f38c6d96f97b2.record.md) | +| 2026-08-17 | dependabot/docker/docker-images-263a700181 (PR #2013) | Run PR sweep: main sync + CI | Behind main -> synced clean (no conflicts). CI genuinely fails: bumpin… | [a2a20243](branch-review-records/a2a20243232ef03f85524e726d201cdc0b0a2225451648fb7178112e51ddf17d.record.md) | +| 2026-08-17 | claude/s1c-residuals-r2-r3-4pb1at | packet S1c: rag-claim-support R2 normative-norm disjunct + R3 adjacent atom-free topic len… | PR #2052 open; offline 613/613; verify:pr-local heavy scope green; R3… | [a8521fd0](branch-review-records/a8521fd05bde007f6203e4cdd7fee80e20e0dbfc7f8d3d99fc588dfef30b50fe.record.md) | +| 2026-08-17 | claude/search-results-differentials-prs-o7z531 | src/components/clinical-dashboard/differentials-home.tsx, tests/differentials-compare-sele… | shipped: safety banner promoted to top of differentials search results… | [aae02f8c](branch-review-records/aae02f8c03b038ce9dd6023f790b777401d6b1139dd106ebf87320253c63ab86.record.md) | +| 2026-08-17 | claude/rag-d3-s5-followups | docs/rag-improvement S5 follow-ups: HANDOVER S5/S2 rows, COORDINATION §7, 4 inbox requests… | docs-only; S5 landed; follow-ups queued | [b2ecb1ce](branch-review-records/b2ecb1cee8bf7fcc71dfc33aafe348fd300805816d36dc8164eed9ed3fc356cf.record.md) | +| 2026-08-17 | claude/phone-pwa-animation-bug-suooj4 | phone/PWA answer-progress animation defect: reduced-motion suppression, tri-state Motion p… | Fixed: OS Reduce Motion was freezing all animation and setting the ECG… | [b3baa45b](branch-review-records/b3baa45bd8bd11f3109359b91166246e208af8ee8a80c77c6f19cea9b2439b80.record.md) | +| 2026-08-17 | gemini/test-infra-tooling-hardening (PR #2030) | Run PR sweep: threads + drift | Fixed 5 of 6 CodeRabbit review threads (3 Major, 2 Minor): (1) findBra… | [b54eed89](branch-review-records/b54eed89ca997cfd8b6d0880ae90897972cbce391bd4a5fbab6c2a3bbd6a79db.record.md) | +| 2026-08-17 | claude/cls-regression-issue-log | docs/outstanding-issues-inbox/d92786de-de31-4118-84cc-0a9098e7f2e0.json | created PR #2059: queued /issues inbox request tracking a real mobile… | [b95dcebe](branch-review-records/b95dcebed8f49816cdcac3eead65621d52cd793cb7c9d9e23546097645f24dd1.record.md) | +| 2026-08-17 | claude/s5-rag-telemetry-harness-2wvis7 | Packet S5 (B1+B2): telemetry gap assessment + offline adversarial harness + routing | PR #2056 open; offline gates green; 3 divergences pinned in KNOWN_DIVE… | [b976a45d](branch-review-records/b976a45d26170b11c35eb497940d68bd4d2ba8679fd0d427732e1b1d73032bf9.record.md) | +| 2026-08-17 | codex/therapy-global-convergence-20260814 | PR #1992 CI-blocker fix (format + regex anchor) | fixed 2 required-CI blockers: prettier format on tests/therapy-pr-unbl… | [b9fd36f9](branch-review-records/b9fd36f90154b07043f9ea0dd6456f7bc0f6337655ee0d5e54143fab8128966b.record.md) | +| 2026-08-17 | claude/s1b-rag-dosing-routing-6u1mik | RAG answer routing: medication_dose_risk pre-deadline strong route (S1b/R1, #231) + extrac… | PR #2035 open; behaviour change awaiting owner merge + post-merge cana… | [bcb5e0bf](branch-review-records/bcb5e0bf76d1501946c3d093a30dfd8c1351c6ebd83d0ae0a980e65d12eda5b6.record.md) | +| 2026-08-17 | dependabot/npm_and_yarn/npm-development-f0b269800a (PR #2012) | Run PR sweep: main sync + CI | Behind main -> synced clean (no conflicts). CI: rerunning codeload.git… | [bd883765](branch-review-records/bd88376551c6b4dc85fb876f5388c5557b7b3710f89f8e6578ea3e00121bf509.record.md) | +| 2026-08-17 | claude/s1-rag-mitigation-231-86c182 | RAG answer-verification faithfulness fixes (#231 S1) + review-nit test coverage | PR #2022 CI green (PR required SUCCESS, CLEAN/MERGEABLE); CodeRabbit n… | [c4178542](branch-review-records/c41785428c51bac930771cdeca2f76774bb555c73d9c5bb9469e702af2734790.record.md) | +| 2026-08-17 | pr-1998 | filters | fixed-ci-blockers | [c77521d7](branch-review-records/c77521d7551a10d87a7824257e5ec615ced08a21d9254bc8612ea6318a73e9f4.record.md) | +| 2026-08-17 | PR #2038 / claude/search-bar-behavior-2g0vnq | src/components/clinical-dashboard/guide-dialog.tsx, tests/guide-centre.dom.test.tsx | reviewed-by-author, add trailing send-button chrome to Guide Centre se… | [cc198221](branch-review-records/cc198221bf69036be752da700eed8a71c9ebfd250389d79cc39d979515fa1494.record.md) | +| 2026-08-17 | claude/s1d-final-gate-gap-recovery-dxgrn2 | S1d final-gate gap recovery: finalizeRagAnswerQualityCore extractive recovery for fast str… | PR #2054 open; behaviour change, post-merge canary pair owed (baseline… | [ce864242](branch-review-records/ce864242309b87ec27f7947bddac2350e40dcd2241dfeea7fdcafbb6733823f3.record.md) | +| 2026-08-17 | claude/differentials-design-refinement-xh1znl (PR #2050) | Run PR sweep: main sync + CI in progress | New PR opened mid-sweep. Synced clean (no conflicts). CI in progress a… | [d0ac38a5](branch-review-records/d0ac38a5e91454db4e823e33a42d05366d46f943c77edaae3e5305808ce86e44.record.md) | +| 2026-08-17 | claude/pr-auto-merge-safety-tpxupu (PR #2028) | Run PR sweep: main sync + CI | Behind main -> synced clean (no conflicts). CI: PR required green afte… | [d4a3a1ed](branch-review-records/d4a3a1ed1ee25cad7de4ff1d83fb1e69da4c20f565e0afc8fb751e1630dd1db3.record.md) | +| 2026-08-17 | claude/search-results-differentials-prs-o7z531 (PR #2047) | Run PR sweep: merged during sweep | Merged by BigSimmo (repo owner) mid-sweep, no action needed from this… | [d808a22f](branch-review-records/d808a22fd581334845d24f8f15a1f4e9fc7475e8df92f72007bc549cb5b0a133.record.md) | +| 2026-08-17 | claude/ledger-reconcile-issues-c1trbj (PR #2032) | Run PR sweep: babysit | No action needed. New PR discovered mid-sweep (opened by the owner dur… | [d822f594](branch-review-records/d822f594b2e8049b6a1feffd00de6873ebb1992919bdf816e95c1ef6486d8e3e.record.md) | +| 2026-08-17 | codex/guide-search-chrome-20260815 | PR #2007 CI fix: prettier format, design-sync contract regen, guide-centre scroll-hide rac… | Fixed 4 CI failures (Static PR checks, Unit coverage x2, Production UI… | [d9883c1c](branch-review-records/d9883c1c107d462f6ba5bf9e1447b570eb90fa0026059959a4ca253be147df3a.record.md) | +| 2026-08-17 | claude/ledger-212-tranche-4-worker-q3y6i4 | worker/row-contracts.ts, worker/main.ts, tests/worker-row-contract.test.ts | approved — no defects found; concurrency/lease fencing, schema-constra… | [da99c19c](branch-review-records/da99c19c3dd97371833d588e531db66c29c2d5e5fbeb467f26082b87ad7c1c91.record.md) | +| 2026-08-17 | claude/services-navigation-removal-7bnknn (PR #2040) | Run PR sweep: main sync + CI recovery | Behind main -> synced clean (no conflicts). CI: Static/Build/Unit cove… | [db385c81](branch-review-records/db385c8181a9620272ece6df071f3b5afabd6085d21755f30dddf9e6e0ffaf10.record.md) | +| 2026-08-17 | claude/database-coordination-chat-9c0730 | docs/database-remediation-coordination.md board re-baseline (#316), PR #2044 | coordinator self-review: docs-only, anchor corrected #312→#316, board… | [de0121cd](branch-review-records/de0121cd3d30b30a3db40226b655a866957e65e04a043f71cb75b91ae612cdad.record.md) | +| 2026-08-17 | claude/correct-056-staging-gap | docs/outstanding-issues-inbox — #056 staging migration gap correction | Remeasured read-only: staging ikoiolksxqxfxgiyqpnu holds 166 migration… | [e27d89bb](branch-review-records/e27d89bb33c18b84e032b879f44426bb9bc7e51e2ca594f142d49b327708bed1.record.md) | +| 2026-08-17 | claude/pr-auto-merge-safety-tpxupu (PR #2028) | Run PR sweep: babysit | No action needed. CI was mid-run at first snapshot (Unit coverage in p… | [e38ff090](branch-review-records/e38ff0902a44f2adbfed15cc2109dded1da5d252a33d2cbb8143645400d96329.record.md) | +| 2026-08-17 | claude/rag-plan-review-guide-vhrls9 | docs: coordination-chat handover (COORDINATION.md, HANDOVER status corrections, catalogue) | clean | [e5b5d137](branch-review-records/e5b5d137733340e2e8440c1a3f3fb4e4d0fb9654a76f6444a1af1eb0d6467fa3.record.md) | +| 2026-08-17 | claude/s1-rag-mitigation-231-86c182 | RAG answer-verification faithfulness fixes (#231 S1): markdown-emphasis atom folding + cla… | PR #2022 open — rung 1 mitigation; residuals recorded (unbudgeted stro… | [e60e67c8](branch-review-records/e60e67c8bd9bd71a271101bd68b0da1eac8b1633ed57ff72ad389f420fd20a2b.record.md) | +| 2026-08-17 | dependabot/npm_and_yarn/npm-development-f0b269800a (PR #2012) | Run PR sweep: drift sync | CI already green. Was behind main by 6 commits; synced via authenticat… | [e6ceae7e](branch-review-records/e6ceae7e80112a6ac29173e6f6a6cf3aeaad586efa9166edec80fa6ab46d374d.record.md) | +| 2026-08-17 | dependabot/docker/docker-images-263a700181 (PR #2013) | Run PR sweep: CI diagnosis | Not fixed — genuine incompatibility, not a bug: bumping the Dockerfile… | [ea80967c](branch-review-records/ea80967cf646c86a1d58751044c56afd63e89fa76ec1f6a64dfff6d7a2f3c801.record.md) | +| 2026-08-17 | claude/form-names-design-rjw40t | src/components/forms/form-detail-page.tsx | PR #2041 opened (BigSimmo/Database). User-requested UI relabel of the… | [eac503b9](branch-review-records/eac503b9ddf311057c2d0b0c05ab3cc7cb240a5eb34fbed37920b32612534694.record.md) | +| 2026-08-17 | claude/s1c-trigger-condition-first-4pb1at | S1c follow-up: claim-leading for/in condition binding in highRiskTriggerTokens (protected… | PR #2065 open; digit-free population mis-bind closed fail-first; merge… | [ed2853a1](branch-review-records/ed2853a1fe7ad33b3ef164093f54fa8df20452c2f8e144ffa1546bb7603c142e.record.md) | +| 2026-08-17 | claude/mobile-bottom-toggle-cutoff-efo7mv (PR #2042) | Run PR sweep: main sync + CI fix | Behind main -> synced twice (main advanced mid-sweep via merged #2047/… | [ed685c7d](branch-review-records/ed685c7d2679d3a007283febdc1e084bed4ef96da0242c80ec5944311327ae4a.record.md) | +| 2026-08-17 | dependabot/npm_and_yarn/npm-production-0af95c93ad (PR #2010) | Run PR sweep: drift sync | CI already green (Static PR checks/Unit coverage/Build/Container image… | [f633bf7c](branch-review-records/f633bf7c7d8b084e707f4357229a4c5aa536bc55ca6659f7843f00ce44901b8f.record.md) | +| 2026-08-17 | claude/ledger-reconcile-issues-c1trbj | issues:reconcile after #2023/#2024, redone against fresh main | 28 requests applied (22 original + 6 landed on main mid-session: 3 can… | [f90327a7](branch-review-records/f90327a7dcc408246c5531f97d430de3ada668553127d8034ecfc152d00ad207.record.md) | +| 2026-08-17 | dependabot/github_actions/github-actions-6d70da7aad (PR #2011) | Run PR sweep: main sync + CI | Behind main -> synced clean (no conflicts). CI: PR required green. No… | [fcdfc457](branch-review-records/fcdfc457cd09d5afa22454edada6fc3627761785c45a0e5781a1da574c731e2a.record.md) | +| 2026-08-17 | claude/differentials-design-refinement-xh1znl | src/components/differentials/differential-compare-queue-page.tsx | created PR #2050: simplified compare-queue hero card (removed eyebrow… | [fd90b933](branch-review-records/fd90b933e6bf2bd4a3be809c74e1aec9dd9be5fe870e28f21aba6f624f621ca2.record.md) | +| 2026-08-16 | codex/chat-service-facets-317-service-facets-317 | PR #2004 registry service facet contract test | P2 false-negative contract guard fixed: compare restored tags with the… | [140eabfb](branch-review-records/140eabfb61f0822b5fb955d0c1d8d7fd924563215dd96f29802abdb3f093fc41.record.md) | +| 2026-08-16 | PR-1993 | PR #1993 Tools phone footer search review | Fixed: preserved the tappable standalone-home suggestion ticker while… | [1798e0af](branch-review-records/1798e0af4644bdccaa00cfc3bd7fedeb56a5a019e93f3966580d3d41434e2a47.record.md) | +| 2026-08-16 | codex/therapy-global-convergence-20260814 | PR #1992 unblocking review-and-fix | P1/P2 PR regressions fixed: clear/write ordering, failed Therapy retry… | [24698bda](branch-review-records/24698bda67158357da68ef84d907b338f132a96e1006edbe2c5a8b7fc5f035ea.record.md) | +| 2026-08-16 | codex/chat-search-error-342-search-error-342 | PR #2002 universal NDJSON stream error propagation review | Fixed reproducible P2: structured error rejection now cancels an open… | [2f102c68](branch-review-records/2f102c68fe61b45d4dbfd9b43a1ca1d14a753cf9a1522a6298f9286d8835adfd.record.md) | +| 2026-08-16 | codex/finalize-tooling-follow-through-documentation | PR #1994 unblocking review and scope repair | P1 accidental 1035-file scope and stale-base conflict removed; invalid… | [34ba441a](branch-review-records/34ba441a8c53d4b7eaa2bb5afd846da9722498df625ff9e72b40ac86e0f75fe1.record.md) | +| 2026-08-16 | codex/account-setup-polish-20260814 | PR #1997 Services quick-search removal | P1 scope contamination and conflicts confirmed; intended quick-search… | [4a8002d2](branch-review-records/4a8002d2aa8743b62a8189f3bd3621768458290b624c6b506f6fd403ad8157c0.record.md) | +| 2026-08-16 | PR-2008 / codex/tools-show-all-20260816 | PR #2008 latest-base refresh after green exact-head CI | Merged main fb8c71c94f8a45028df36aa669e3653c4f75cd2a; its durable ULID… | [522436cc](branch-review-records/522436cc75e96c3d5ec24c4ed5206978ed6cc3c4e988daa2a9d1d5165c4a8e2e.record.md) | +| 2026-08-16 | PR-2000 / codex/chat-ledger-programme-ledger-programme | PR #2000 post-fix base refresh review | Required base refresh to 27f6b60429ab56a0e4a779b5b16c35e9cce630db revi… | [65bf63ff](branch-review-records/65bf63ffd245181d054f30ee9fc24f16ca83af0e52d784bb3860e470876e1e75.record.md) | +| 2026-08-16 | codex/chat-trust-boundaries-212-trust-boundaries-212 | PR #2003 unblocking review and base synchronization | No confirmed P0-P2 PR-introduced defects; fail-closed list parsing, ge… | [6897c483](branch-review-records/6897c4836aee66827e7eec71bfa16917161e501d15805774b5446fb4c393d383.record.md) | +| 2026-08-16 | PR #2007 / codex/guide-search-chrome-20260815 | end-to-end PR review and base sync | Merged main without loss; fixed hidden Sheet safe-area retention; pres… | [69f8c9af](branch-review-records/69f8c9afc87b9d9cc96b53a279a21343d9958028c10817d02e7c975f91014522.record.md) | +| 2026-08-16 | PR #2007 / codex/guide-search-chrome-20260815 | design-system CI repair | Replaced the retired elevated shadow alias and removed two layout-tran… | [6cdaa052](branch-review-records/6cdaa052c37673355af42b196c2bb613fd5ed4615778a6e59fa3c4e010706922.record.md) | +| 2026-08-16 | codex/therapy-global-convergence-20260814 | PR #1992 exact-head CI follow-up and base sync | Fixed stale Answer cross-mode suggestions on unsubmitted shared home;… | [717f0912](branch-review-records/717f0912d48a9b7713ba93f8837614b5689529953f9db376b31bd3cde17b3a95.record.md) | +| 2026-08-16 | codex/tools-show-all-20260816 | PR #2008 compact Show all tools launcher review and latest-main merge | No P0/P1/P2 defects confirmed; preserved the focused launcher-to-direc… | [771a9eb2](branch-review-records/771a9eb221c68c8d73f05d8831089a7b6744d11d10a1fee600ca1eac1d0354fe.record.md) | +| 2026-08-16 | PR-2000 / codex/chat-ledger-programme-ledger-programme | PR #2000 merged-base outstanding-issue request review | Confirmed premature closure of #098 and corrected it in the successor… | [81458326](branch-review-records/8145832620703718dd3e73fb75753072cb7b441b62d2ddf6230bbc962e48a76c.record.md) | +| 2026-08-16 | PR-2008 / codex/tools-show-all-20260816 | PR #2008 latest-base refresh after green exact-head CI | Merged main 4b601e34f2a3398121a23e7db64a04690075ddd3; its default-off… | [903f043f](branch-review-records/903f043f143538cff9e2ce0043a9d2fa6822d3be129f8d506cb93ac4bc3960a3.record.md) | +| 2026-08-16 | PR-2008 / codex/tools-show-all-20260816 | PR #2008 latest-base shared UI test merge after green exact-head CI | Merged main 54585e98df133c0b49cf32cc878473ea0beba46d; kept its low-con… | [a23d66df](branch-review-records/a23d66df28dc33bad16d7d3883fb4129a9971399fe8906bfc771c3543c63b820.record.md) | +| 2026-08-16 | PR-2008 / codex/tools-show-all-20260816 | PR #2008 post-review base refresh | Required base refresh to 4c52fe1dbbc921be769c31b36efbcdba798ba11b revi… | [b50552bc](branch-review-records/b50552bc27edf96d286fcb2c582831863c1893c66a80b3dc38988a8ef6ef5dc0.record.md) | +| 2026-08-16 | PR-2008 / codex/tools-show-all-20260816 | PR #2008 content-address repair and latest-base refresh | Corrected the malformed review-record filename to the repository-deriv… | [bef6e7b3](branch-review-records/bef6e7b39ba0aa36284eab8596c7dc491e54c41d2868644d05d96de656d0fe06.record.md) | +| 2026-08-16 | codex/chat-browser-evidence-235-238-browser-evidence-235-238 | PR #2006 AccessibleTable low-confidence 320px mockup journey | No high-confidence PR-introduced defects found; branch required a non-… | [d5453331](branch-review-records/d545333169b6e7645c813d4f760bcc8d901cef851b57bccb7874d8d6ff114f54.record.md) | +| 2026-08-16 | codex/tools-universal-footer-search | PR #1993 Tools phone footer ownership against main 0b95d063b44712ce409d9fbfe5bf8e706b10cca… | Confirmed and fixed dashboard Tools phone composer ownership, aligned… | [f0bc08ea](branch-review-records/f0bc08ea7f5c5c924273de2608597dddb1e7c8c43197488836bb70a79c6d366b.record.md) | +| 2026-08-16 | codex/chat-trust-boundaries-212-trust-boundaries-212 | PR #2003 post-review nullish list payload fix | Confirmed CodeRabbit finding: parseListRows coerced null and undefined… | [f51d7e36](branch-review-records/f51d7e3693e266ab35c224b3c487b3173a90a7780810546df0674fb7b35b7d50.record.md) | +| 2026-08-15 | claude/ledger-review-triage-yi63ao | required base sync through main 17402395 | Approved — required main update merged; previous ledger issue-closure… | [00d268a6](branch-review-records/00d268a6cf6a1beeb904826b9f82a104ab62d03663c70e87ffdf0209fa2e5790.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | Differentials results evidence-state, clinical-cue, and ranking presentation | Fixed three validated P2 findings: evidence-gated best-match success s… | [01671f1a](branch-review-records/01671f1a4ca2796caf84922f73bc373f30c8fad36ffc94a1bafd0d5ca55693a7.record.md) | +| 2026-08-15 | PR #1966 / claude/ledger-review-triage-yi63ao | unblocking PR review-and-fix | No confirmed PR-introduced P0-P2 defect. Merged current main cleanly;… | [0bd6e781](branch-review-records/0bd6e78104f1efb528b8a02e6ce07cb58545f45e9ac5efe70e8e97e97233dfa6.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | rag-candidate-sources.ts signal-row Zod contracts (ledger #212 tranche 2) + 2 ledger captu… | Approved — 3 unchecked RPC-result casts replaced with validated assert… | [0cf1eff0](branch-review-records/0cf1eff09758f402a2e5b6d928c83a1455ccff9c97fc5f4a99286d566142b192.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | Differentials formatter blocker remediation (supersedes 2026-08-15) | Supersedes immutable record 74e47bb0fd4e2b3ff3ec524606a00b573db356d6b1… | [115a1304](branch-review-records/115a1304ff998fd0eeaee128b93a1b624eceaa07712147fdfb1fd71dcf2603d5.record.md) | +| 2026-08-15 | codex/fix-cover-repair | cover repair script formatter follow-up | Formatted the stale-candidate guard reported by the changed-file forma… | [123580c2](branch-review-records/123580c2767d327b59ab4f6cc62bb75263a92e5d288897225e5e48dfe6822ca8.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | PR #1971 base sync | Merged main 6f7b7deefaf7e0cd062b748f18fc6ca8988093f6 into the reviewed… | [149dbe37](branch-review-records/149dbe376e6d9fa6eac0edcdb578b65c526366619d6e858107ca0fe108f95382.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | PR #1981 base sync | Merged main 6f7b7deefaf7e0cd062b748f18fc6ca8988093f6 into the reviewed… | [150c9556](branch-review-records/150c95562bf34c0fc9a79c97c63bbacb3bac3f9a436acc5b0336b62533ab1c54.record.md) | +| 2026-08-15 | PR #1991 | docs/medication-lexicon-review-worklist.md + one #318 inbox request (46750cbf); no lexicon… | Authored handoff. Worklist prepared for the #318 clinician pass; row s… | [17505788](branch-review-records/1750578822f17106f9029aa52fbe2ba972c2610971d057b366f68f12bc87baba.record.md) | +| 2026-08-15 | codex/calculators-mode | Calculators first-class mode | Resolved the current-base documentation conflict; prior P2 local-searc… | [18503906](branch-review-records/18503906b6f41b6151d7298f2a14ba993d7b2f39f39414b70103aab3a0a8fcc0.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | review-and-fix | P1 CI blocker fixed: formatted retrieval row contract test; no additio… | [192997fb](branch-review-records/192997fbab4a8e3383dccff432e693a8c22f231e8ebb30f3023eb4a5956ceef8.record.md) | +| 2026-08-15 | claude/ds-ratchet-tighten | Tighten seven design-system ratchets to measured values after the #1982-#1986 merges | 17 units of stale headroom removed; no metric relaxed | [19d9b5cc](branch-review-records/19d9b5ccfa4a8c3a52744d24cfc3bb7906a309c9f0d6beb92203bdd5717f47b3.record.md) | +| 2026-08-15 | codex/calculators-mode | Calculators first-class mode | Merged the latest required base after the final freshness check; calcu… | [1bcd7481](branch-review-records/1bcd7481c03879170cc5f4dc265e6b1e647dac6fb84d348f6b12fea7f87e7968.record.md) | +| 2026-08-15 | codex/calculators-mode | required base sync through main 3824095 | Approved — required main update merged after calculator command follow… | [1f2f64dc](branch-review-records/1f2f64dc3b528b7149b664c65dc98e4b7e10477e73f22ca8c1ccfe02d4b84f50.record.md) | +| 2026-08-15 | 1975 | review-and-fix | Fixed fail-open cover probes, concurrent metadata clobber, ambiguous r… | [1f3d777e](branch-review-records/1f3d777e83828ea67eb00c77229eafceb41a6841e644b036b1b0f9f54b118f37.record.md) | +| 2026-08-15 | claude/services-search-redesign-163 | Fix service bookmark readiness and mutation race; merge current main | fixed | [216a72e4](branch-review-records/216a72e41232d90b9641c9a9cf0446c884067c3339f7a2f50cd5c5e642b9988e.record.md) | +| 2026-08-15 | codex/calculators-mode | Fix calculator regression tests from exact-head CI and merge main d301d8f4 | fixed | [24336297](branch-review-records/24336297cd7a192b04d348313e763ff4a51012c6de6ec22028f0f2b600adeaa7.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | Required base sync through main d301d8f4 | approved | [2ac50f7d](branch-review-records/2ac50f7ddcdaa1190c9965f50d2bd503aa45acffe5c1fd6c10a285564b8465e6.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | PWA mobile root CLS budget remediation | Narrowed install-sheet root-content repositioning from all phone width… | [2fed40a2](branch-review-records/2fed40a238cbd6e5803e25f6c4778648494337db0a6927d4b2f55c077e60c173.record.md) | +| 2026-08-15 | PR #1977 | review-and-fix | Verified issue-inbox requests; #293 closure is supported by merged PR… | [3553393e](branch-review-records/3553393e685f32b5925dc037af832d38d293f56e299993ebe74b56b4ea329756.record.md) | +| 2026-08-15 | codex/calculators-mode | calculator suggestion regression test accessibility and formatting follow-up | Fixed the focused calculator suggestion test to match the full accessi… | [35ae4a75](branch-review-records/35ae4a75db629a7a9ee8b0daf3b933bb51b159fedb9b0e5fce759cb470f06252.record.md) | +| 2026-08-15 | codex/fix-ecg-animation-on-mobile-devices | ECG SVG repaint on Mobile WebKit | Confirmed the focused WebKit paint-containment correction; no addition… | [3dc49fdd](branch-review-records/3dc49fdd6e24d09e3e6830eb12934c340fc3a9008650b6c058d34bd4d87a2afe.record.md) | +| 2026-08-15 | claude/services-search-redesign-163 | Services search results: progressive referral rail, compact rows, favourites bookmark (#16… | Shipped; row re-measured as half-stale before building — no P0-P2 find… | [3fbcef2b](branch-review-records/3fbcef2b507598e6baa40944420519cc84a4cee33bf9c809091f21ed28f76192.record.md) | +| 2026-08-15 | codex/fix-ecg-animation-on-mobile-devices | review-and-fix | Merged latest main, resolved the CSS-test conflict, and fixed the WebK… | [417c3d2b](branch-review-records/417c3d2bbb8346fc650dc4bed9db149912fc13abb7aaf5fc9d7e6f75a3db0fa1.record.md) | +| 2026-08-15 | claude/db-remediation-phase-0-wfaiyl | Ledger reconciliation and push guard: final current-base merge | Verified parallel-cancellation and rewritten-history handling with iso… | [44c2668e](branch-review-records/44c2668e0a184a3856e8f614a4358bb33d033ffc179a15ef4b69248c4df83669.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | required base sync through main 17402395 | Approved — required main update merged; prior PWA lifecycle review and… | [497a7b26](branch-review-records/497a7b26ad6568692b3dbc9e939c1e7d35a1a50108e2c0268cbf41ee612eaa76.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | PWA style-contract formatter follow-up | Formatted the PWA style-contract exemption entries reported by changed… | [4a51a80a](branch-review-records/4a51a80a457f85c939048278f01e3a3059d5509bfd975096af94b63ef16e825a.record.md) | +| 2026-08-15 | codex/calculators-mode | required base sync through main 17402395 | Approved — required main update merged; prior calculator-mode review r… | [4dbb7f7d](branch-review-records/4dbb7f7d041801dbdbfb1360d45e46027a5b3debdb029af744345900ca5acdc1.record.md) | +| 2026-08-15 | PR #1968 / claude/ledger-reconcile-batch-4 | unblocking PR review-and-fix | Merged the latest base and reconciled its complete ledger batch; retai… | [4e9b4d92](branch-review-records/4e9b4d92a67f8938115ff0ea2b99458078ba349cd9e9f625efb537215cbf1227.record.md) | +| 2026-08-15 | codex/fix-documents-without-live-images | Required base sync through main d301d8f4 | approved | [51a91c30](branch-review-records/51a91c30aac9b44f7a14db23c3b96cf23b0b76a4bfd1cd9b2c9052dca555bc08.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | PWA install lifecycle: final current-base merge | Merged latest required base after validated PWA registry fix; no merge… | [534a1703](branch-review-records/534a1703b8963c66fe43de4889cf3f33e6bc83a7ebc8734fba8c6c71148e0d6f.record.md) | +| 2026-08-15 | PR #1968 / claude/ledger-reconcile-batch-4 | unblocking PR review-and-fix | Synced current main and reconciled the base inbox; queued the verified… | [5bffd23d](branch-review-records/5bffd23d66a7e2f1ef7b6b9a3b4188835f16432fe3243bb89a199885f6a09730.record.md) | +| 2026-08-15 | codex/calculators-mode | calculator search-chrome documentation formatter follow-up | Aligned the search-chrome ownership table to the new longest mode labe… | [5c0ac2f4](branch-review-records/5c0ac2f4e15f46fb39e8fd09c38c3cc169be8ad8f8459b70b86140a155a88967.record.md) | +| 2026-08-15 | claude/capture-ongoing-drop-question | Withdraw unsupported index-loss P1 after exact Action-log set comparison; merge main | fixed | [5fb194b6](branch-review-records/5fb194b68baa840377fcf801664fdbe23fe39d02317237fbe8fe7ab43f8a459d.record.md) | +| 2026-08-15 | claude/services-search-redesign-163 | Services bookmark readiness — correcting the 216a72e4 record | PRIOR RECORD WAS FALSE. Record 216a72e4 claimed 'Fix service bookmark… | [60422ff1](branch-review-records/60422ff1c15e4237b0b0d3028b47dde0cd7d2e44c4b79c2badd5c8be19153682.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | Carry validated optional RAG signal degradation fix through main d301d8f4 | fixed | [60f458bc](branch-review-records/60f458bc7e118a4c0f36e12b0294e651372309f02b547300fa7ca6426587d82c.record.md) | +| 2026-08-15 | 1976 | review-and-fix | P2 fixed: native install prompt now avoids hero reflow, composer overl… | [615deb91](branch-review-records/615deb9148ec106e31cf72902d4a1b2710987b3597aeef62b9a2fb964975dd5b.record.md) | +| 2026-08-15 | claude/capture-ongoing-drop-question | docs/outstanding-issues-inbox — capture the unreconciled drift count | Queued one P1 add request: check:drift reported missing_live 21 (2026-… | [61a53ca4](branch-review-records/61a53ca459551a7a2ca43dee60a4d50a4f04840076dfbb4f79fa55ab14605d71.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | PR #1976 PWA exemption formatter follow-up | Corrected two exemption descriptions that were under the 120-column fo… | [63bb22a3](branch-review-records/63bb22a3ea42c41966caaa63a61b73a2bba0026f0898a8f6e3afae6123075fce.record.md) | +| 2026-08-15 | claude/test-source-contract-hardening | Guarded source-slice test windows: shared helper plus three migrations (#1985) | Shipped; closes a silent-pass class in the contract tests, remainder q… | [642a0ca6](branch-review-records/642a0ca61b346fbb0b4dd8bda07b9e763f3acdf9d7d26bff9e0017e1cdd58c60.record.md) | +| 2026-08-15 | PR #1968 / claude/ledger-reconcile-batch-4 | unblocking PR review-and-fix | Fixed #316 forensic-bound and inventory correction through the seriali… | [652d642c](branch-review-records/652d642c8900c600dd0d8e9f229c6c9f3d2e2d2709bee0f3d2e35384751e8358.record.md) | +| 2026-08-15 | PR #1969 / codex/medication-list-spacing-20260814 | unblocking PR review-and-fix | Fixed the 1024px desktop prescribing-grid clipping with a focused righ… | [667079dd](branch-review-records/667079dd07cd03821a2d3b2ec65a1d04508df0c95fc85014b6cc6546b765bf32.record.md) | +| 2026-08-15 | claude/ledger-review-triage-yi63ao | PR #1977 base sync | Merged main 6f7b7deefaf7e0cd062b748f18fc6ca8988093f6 into the reviewed… | [68deea2b](branch-review-records/68deea2b69f60f4b52bdea24ceb748ddac6c21d3d7912bc77caa5deda23aefea.record.md) | +| 2026-08-15 | codex/fix-documents-without-live-images | Document cover audit and repair: final current-base merge | Merged latest required base after prior focused repair review; no conf… | [6edbc14c](branch-review-records/6edbc14cf38b74d61a02ebdd3bb7c5114b56cfb2c711ec548b6aeea715b05c9f.record.md) | +| 2026-08-15 | claude/ledger-review-triage-yi63ao | Outstanding-issues reconciliation for #293 and #312: final current-base merge | Verified cited landings, retained #312 browser-family acceptance gap,… | [6f2e5ab4](branch-review-records/6f2e5ab42932b76f6bc1f9e99c44558ad9edbfec91f1f75fd8ba007bdd90d979.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | RAG row-contract tranche 2 P2: unconstrained JSON provenance acceptance | Fixed P2 — index-unit source_span and metadata accept all JSON allowed… | [6fdbf4d3](branch-review-records/6fdbf4d3fb732b73a4c56c0bb3c09278fb142e1e4e1d4b8e8d787d6abf9ea62f.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | required base sync through main 17402395 | Approved — required main update merged; prior focused UI review remain… | [70ed1792](branch-review-records/70ed179206c9c4c492ee7a969f0a2c5bb8119ba24d916c6cd8b8f521347ffd23.record.md) | +| 2026-08-15 | codex/calculators-mode | Calculators mode: final current-base merge | Merged latest required base after prior focused review; no conflicts o… | [711ddbc0](branch-review-records/711ddbc0e2119fb166c1c4267644135f54ba5f04f0c8c06a38fc88ddc42c85e6.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | RAG row-contract CI follow-up: optional-signal assertion narrowing | Fixed P1 — explicit local mismatch catches preserve both logged option… | [719b4f9a](branch-review-records/719b4f9ab3ccc24a497b1f84a5262acd6e929cbbe76b46ab8d3a953de2b0883f.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | Differentials changed-file formatter blocker | Restored the single 115-column mobile rank expression after exact-head… | [74e47bb0](branch-review-records/74e47bb0fd4e2b3ff3ec524606a00b573db356d6b17cf68b4829a19643b9b71a.record.md) | +| 2026-08-15 | 1976 | review-and-fix | fixed phone install-sheet overlap on current-base head | [76205431](branch-review-records/7620543101feadcebdc49427ad0395f1f4c8a0d304ec3a5251f1920d023b06c0.record.md) | +| 2026-08-15 | codex/therapy-global-convergence-20260814 | Therapy global convergence release handoff | Accepted with production content gate; human clinical sign-off and liv… | [7879b60b](branch-review-records/7879b60be6973aafdc9ee3f5b52b54a5f528e653b6decf4b65799d25e4ed6414.record.md) | +| 2026-08-15 | PR #1978 | review-and-fix | Fixed applied cancel-of-cancel acceptance and restored guard-push exec… | [7bd50bd9](branch-review-records/7bd50bd9c4093cf764692231945db6e88a27e21ebb7545745fa66facf618d208.record.md) | +| 2026-08-15 | claude/db-remediation-phase-0-wfaiyl | PR #1978 base sync | Merged main 6f7b7deefaf7e0cd062b748f18fc6ca8988093f6 into the reviewed… | [7ce860ee](branch-review-records/7ce860ee652bd3f4e91c56cab26f002c8fd5e5b18eee189d01baaaa18ffd432c.record.md) | +| 2026-08-15 | claude/ledger-review-triage-yi63ao | Required base sync through main d301d8f4 | approved | [80165652](branch-review-records/801656524b713b73ce558ee09425ea5e24d3c5d61ebd572a963c9495b3745731.record.md) | +| 2026-08-15 | codex/search-phone-animation-20260815 | Fresh phone browser and standalone-PWA loading animation defect hunt after physical-device… | Fixed: moved the ECG opacity pulse from an SVG path to a normal HTML c… | [887618b9](branch-review-records/887618b97bf3256125def037cd1b5e87659aaa9b1439015c6354eb96e19d0c46.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | differential clinical-cue regression and formatter follow-up | Aligned the focused result-row assertion with the displayed compact-cu… | [898e1bc7](branch-review-records/898e1bc7855d44ca3df03b0c0f9747960713a6a06b532505caa5548de80b814c.record.md) | +| 2026-08-15 | 1971 | review-and-fix | Fixed validated P2 evidence-semantics, sparse-panel, cue-deduplication… | [8a26a994](branch-review-records/8a26a9949fd0c9384acd0f0868d96374080dd7191777c1be29037b6edc8c3069.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | PR #1981 retrieval row contract formatter follow-up | Collapsed a formatter-stable candidate-source import after the exact-h… | [8f593be4](branch-review-records/8f593be414cd088768dc59074dcd77476f562cfdaabd4d2b23cd3a67336a02ff.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | Required base sync through main 3824095d8bf2 | approved | [99bf7255](branch-review-records/99bf725572728b2e2a1e7b1ddcc5f08b3d10e50e1fa7091856c41a9fe03cde52.record.md) | +| 2026-08-15 | codex/fix-documents-without-live-images | required base sync through main 17402395 | Approved — required main update merged; prior document-cover repair re… | [9b89f909](branch-review-records/9b89f9091c287b15d98bcce1bbf9c687061e0b75ff2d71b8610f6b5cfd49ae43.record.md) | +| 2026-08-15 | PR #1970 / claude/capture-drift-phase1-evidence | unblocking PR review-and-fix | Corrected four P2 forensic claims and cancelled the two unsafe queued… | [a5309edd](branch-review-records/a5309edd41a122ccf51a2dacea385abdd2b404d07061df6833f1ef1289d053f3.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | PWA install lifecycle: style-contract registry and current-base merge | Fixed PR-introduced unregistered PWA visual classes; stale install-she… | [a9f750bb](branch-review-records/a9f750bbfb5bbb2857e2cdbb97a2dc446b1851cec993f8a91dd526fcbc750d25.record.md) | +| 2026-08-15 | codex/medication-info-header-20260814 | required base sync through main 17402395 | Approved — required main update merged; prior focused medication-heade… | [aa23b8cd](branch-review-records/aa23b8cd5be8c299c1878de6b92a7b1a3256129ab978d51a792d14ad7c785d73.record.md) | +| 2026-08-15 | codex/fix-documents-without-live-images | PR #1975 base sync | Merged main 6f7b7deefaf7e0cd062b748f18fc6ca8988093f6 into the reviewed… | [ac537aea](branch-review-records/ac537aead3881d4cf73e22512e83e1803a1c9ca11fa10969155f42bcdda2e75b.record.md) | +| 2026-08-15 | codex/calculators-mode | calculator command-surface P1/P2 follow-up: suggestion submit and footer ownership docs | Fixed P1/P2 — selected calculator suggestions pass their exact text in… | [b22a65ec](branch-review-records/b22a65eca447a754f2a971dae18a24a12fc5f3b7bb18a89e813bc2d9a11d1e12.record.md) | +| 2026-08-15 | claude/db-remediation-phase-0-wfaiyl | required base sync through main 17402395 | Approved — required main update merged; prior ledger guard remediation… | [b2482dce](branch-review-records/b2482dceb2ee840589af0dfbe5f66b5f406c49c01ccd942a2c3f16bca8ae8ade.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | PR #1976 base sync | Merged main 6f7b7deefaf7e0cd062b748f18fc6ca8988093f6 into the reviewed… | [b3523668](branch-review-records/b3523668f8839bde68f1fae4de2e7e8275b5cabc1802d1b6511b30323adad6ad.record.md) | +| 2026-08-15 | claude/services-search-redesign-163 | review-and-fix | P2 fixes published: serialize result-row favourite mutations and keep… | [badab2e5](branch-review-records/badab2e50d140f081e049c934ff5e1c37b7415e4213102534a21b99bb97e87fe.record.md) | +| 2026-08-15 | claude/issues-reconcile-2026-08-15 | Canonical ledger reconcile of 17 queued requests after the #1982/#1983/#1984/#1985 merges | Applied cleanly; inbox 0 pending / 189 applied | [bc83ff5f](branch-review-records/bc83ff5f4c4f9421ec32cf4351708e95ce45c035738a63aaa40ea6ca6afcfa3d.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | PWA stylesheet design-token contract remediation | Replaced PR-introduced raw PWA motion, padding, radius, gap, and line-… | [bde56718](branch-review-records/bde56718d14d5138e7a29a72d16402b4445bd109c6f2bfcffd686c6e436d8c74.record.md) | +| 2026-08-15 | codex/fix-documents-without-live-images | Document cover thumbnail audit and repair | Preserved generation fences and storage cleanup P2 fixes while merging… | [beb5fe80](branch-review-records/beb5fe80c053cc8851671deef0ce7cd98c6faddaa53896ff35345ca396b74fc6.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | Differentials mobile rank formatter correction | Restored Prettier canonical call-chain wrapping for the mobile rank ca… | [c0745ca0](branch-review-records/c0745ca069118cbdc5b5a01db696a7e7b68f83afb90f34c467a97b28ecf12fc0.record.md) | +| 2026-08-15 | 1976 | review-and-fix | CI blocker fixed: register compact native-install CSS selectors in the… | [c56fc20e](branch-review-records/c56fc20eb8b758bec749726901ef79ce50012974b924d01bcc5b55b6dc00d1ad.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | RAG row-contract tranche 2: optional signal shape-mismatch degradation; merged main | Approved with P1 fix — malformed optional embedding-field/index-unit r… | [c87cf33f](branch-review-records/c87cf33f8557b35b1edb08b1fc38f1a5a415ce87df2c2daba46045b0b84391ab.record.md) | +| 2026-08-15 | codex/medication-list-spacing-20260814 | Medication prescribing desktop grid width and row overflow | Confirmed the prior P2 grid-width fix remains present and merged curre… | [c9a0488b](branch-review-records/c9a0488b91b894d94e2d4e04dcafc9695eafe28d82fda3e3c9386541fb3aaec0.record.md) | +| 2026-08-15 | claude/favourites-hybrid-164 | Favourites search-led workspace: retire marketing H1 and library nav, live in-place filter… | Shipped; no P0-P2 findings | [ccf620aa](branch-review-records/ccf620aa5c3871b3787e29f50511d79a9a9ba43bc3591b8d0e1bd117ed930ea5.record.md) | +| 2026-08-15 | claude/test-source-contract-hardening | review-and-fix | Fixed two P2 fail-open cases in the new source-window helper: overlapp… | [cd495aff](branch-review-records/cd495affb93b35a4c9c27292318bff9bf09cbe3e2cf670a084930b870cd6fed6.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | PWA phone install/composer overlap regression | Restored the shared phone composer reserve for mode-home install sheet… | [cebd0371](branch-review-records/cebd03715e584420f2fb63b757718fd8f04e9dfb00089261c37800f7d8edf694.record.md) | +| 2026-08-15 | claude/ledger-guard-ci-followups | Lexicon-report CI freshness and database remediation sequencing | Fixed P1 prerequisite order and P2 generated-report scope gap; merged… | [d50a8772](branch-review-records/d50a877214261c376d150342864090de1d5f90e53c3187b03f4165df702e9b5d.record.md) | +| 2026-08-15 | claude/services-search-redesign-163 | PR #1982 base sync | Merged main 6f7b7deefaf7e0cd062b748f18fc6ca8988093f6 into the reviewed… | [d566ba01](branch-review-records/d566ba015a558b6a48c81f5c8d59fd2b19edd41a2f38f86c05ae354673816ce5.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | Differentials pinned formatter exception (supersedes 2026-08-15 remediation) | Supersedes the prior formatter-remediation record: documented a one-st… | [df5b1005](branch-review-records/df5b100555e4f07ef667054d2a80ba9f10ada2f3ebe7fab5da0edc041142a1c1.record.md) | +| 2026-08-15 | claude/rag-zod-hardening-tranche2 | RAG signal-row formatter follow-up | Formatted the signal-row regression assertion reported by changed-file… | [e28c5671](branch-review-records/e28c56717b466a1206d6eea9b313f4a39e88a0195f76078511821ab44cc09456.record.md) | +| 2026-08-15 | claude/ds-gates-265 | review-and-fix | Fixed two P2 gate bypasses: comparable arbitrary min-heights and reach… | [f1160476](branch-review-records/f11604766bd32807910a04f2bc52664b0d8615e08db6094e54733085c7427d0c.record.md) | +| 2026-08-15 | claude/ds-gates-265 | DS gate 2: interactiveTapFloorDeclarations ratchet closing the h-10 case, plus GATES.md fi… | Gate 2 closed for new use; gate 8 stopped deliberately with the reason… | [f1fda63b](branch-review-records/f1fda63bd3854860481ab01a098aff859e2c8d4ea54160fe52e351afd389f9de.record.md) | +| 2026-08-15 | codex/medication-info-header-20260814 | Medication information navigation: final current-base merge | Merged latest required base after prior focused alias correction; no c… | [f238bb27](branch-review-records/f238bb27fa4754ee4948d68b3019e4fb8d9da4ee00a7b78131ef1396fca2dfc8.record.md) | +| 2026-08-15 | codex/differential-results-ui-20260814 | PR #1971 differential result formatter follow-up | Reverted a manual binary-expression wrap: the exact line is 115 column… | [f4aa3dfa](branch-review-records/f4aa3dfaabe1e3f82d0b8e20729b1c40648e1632d2645016ce189113e6f4a1b3.record.md) | +| 2026-08-15 | codex/medication-info-header-20260814 | Medication information navigation header | Fixed the PR-introduced retired shadow alias that failed the exact-hea… | [f502c5ed](branch-review-records/f502c5ed1c220bc23384ffbdff722ab7753e5c619599c803531d4bc36c6914ce.record.md) | +| 2026-08-15 | claude/capture-ongoing-drop-question | required base sync through main 17402395 | Approved — required main update merged; prior drift-inference review r… | [f8f65ade](branch-review-records/f8f65adef944919407355aee8f60e939e4cc4398091af68728179d8b5b63e2e0.record.md) | +| 2026-08-15 | claude/db-remediation-phase-0-wfaiyl | Required base sync through main d301d8f4 | approved | [fb53209f](branch-review-records/fb53209f910afc80ba5fb207e1a2f36d30bc14b98d5c069c3e7fa8b7f89edee4.record.md) | +| 2026-08-15 | codex/therapy-global-convergence-20260814 | Therapy versus other modes: remaining shared-site differences and issues | P1: production-visible Therapy exposes 205/205 records awaiting review… | [fc9303a4](branch-review-records/fc9303a43ee12deed2f6e7bc96f9b216041ad3983f040dbc0dc0f0cf4df50c84.record.md) | +| 2026-08-15 | codex/pwa-install-polish-20260815 | Required base sync through main d301d8f4 | approved | [fe8542d7](branch-review-records/fe8542d735a4d0a26e76906a700a861925da55131c0caacbaab18ac81507cd0d.record.md) | +| 2026-08-15 | claude/issues-reconcile-2026-08-15 | review-and-fix | Found P2 stale #265 measurements in the reconciliation; queued an immu… | [fec8d166](branch-review-records/fec8d16693dafc5f5c400815e091e8d8565e99f53e2979f061dd3cc68c012315.record.md) | +| 2026-08-14 | PR-1964 | vitest.config.mts, docs/maturity-backlog-workorders.md (ledger #192 / maturity X6 coverage… | APPROVED — coverage-threshold re-ratchet, no RAG/clinical behaviour ch… | [02356408](branch-review-records/023564085ea84fa8f81b78f3ec3e137053c64dbd30e5af948b0b041bd6ba537b.record.md) | +| 2026-08-14 | codex/improve-guide-layout-and-fix-bugs | PR #1948 review-and-fix | fixed confirmed mobile footer keyboard-accessibility and hidden paddin… | [05b6c633](branch-review-records/05b6c633adabd9647962f315da24d8e079183c4c8cd7d6d8303dba20a80489f4.record.md) | +| 2026-08-14 | PR-1955 | PR #1955 full review, design-system fix, and required base sync | fixed CI-blocking design-system contract regressions; merged latest ma… | [06df7114](branch-review-records/06df711430759e1dddd2be8983c0188aae2c97681ffc7179731785beb78b5a6a.record.md) | +| 2026-08-14 | PR-1951 | tests/live-drift-workflow.test.ts; docs/outstanding-issues-inbox; docs/branch-review-recor… | preserved prior test fixes; merged latest main; cancelled superseded #… | [0ab0fabc](branch-review-records/0ab0fabc55b3958783c42bcd3a18b865415668919f9bc7f081bedf9fe16aecdf.record.md) | +| 2026-08-14 | claude/capture-drift-phase1-evidence | docs/audit/live-drift-forensics-2026-08.md + inbox — Phase 1.2/1.3 evidence capture | Filled 1.2 (was Pending): 93 functions compared, 0 missing/0 extra/16… | [11809456](branch-review-records/11809456723dae8154679a80157654f47f67b4c39e333654499b933d49b6b0f4.record.md) | +| 2026-08-14 | codex/therapy-global-convergence-20260814 | Therapy global mode convergence: navigation, shared shell, search, favourites, sources, pr… | All three P2 findings resolved; no remaining Therapy-scoped review fin… | [15df886b](branch-review-records/15df886bae0a49c72881baed6a778a36a808d0e509b1e14d099c299ec5e1e334.record.md) | +| 2026-08-14 | claude/ledger-merge-loss-finding | ledger merge-loss finding | PR #1937 — one immutable inbox request (P2 issue) recording that a que… | [1703bcf7](branch-review-records/1703bcf7a46123f0e2eaf267dfa37b8b633ddae861b6ef0033aebb4e5867f4b4.record.md) | +| 2026-08-14 | PR-1961 | PR #1961 base-preserving reconciliation sync | Required base sync retained the current canonical ledger: all 35 recon… | [180f5d94](branch-review-records/180f5d9460a80283fbf5730d32a11b9a4d99c4075a36d42378e4fe7717a9b02f.record.md) | +| 2026-08-14 | PR #1965 (claude/playwright-browser-revision-check) | scripts/check-playwright-browser-revision.mjs, tests/check-playwright-browser-revision.tes… | authored — verified real Chromium binary presence check on disk; repro… | [1cd93992](branch-review-records/1cd9399241d3cbac65652b1b8008514d5c4f4b2c2e82254fec86eb5c50ee6784.record.md) | +| 2026-08-14 | claude/live-drift-routing-lnhvja | live-drift workflow failure routing + post-migration trigger (#316 phase 0) | PR #1939 open | [1eb17040](branch-review-records/1eb170403cacbc03de02adf5632f19f46b5c09228a76c7dcb950557c88123401.record.md) | +| 2026-08-14 | claude/ledger-reconcile-batch-2 | docs/outstanding-issues.md + inbox — second serial reconciliation of 35 queued requests | Applied 25 active mutations (13 done, 6 add, 6 update) plus 5 cancella… | [2151c86f](branch-review-records/2151c86f85ae9cbf8e2e8530ac02019ce737d1565612b12828818d2377162c38.record.md) | +| 2026-08-14 | claude/db-remediation-phase-0-wfaiyl | PR #1951 review-and-fix | reviewed live-drift routing workflow contract and Phase 0 records; fix… | [21c77c3c](branch-review-records/21c77c3c5582a1424f204ead318b9b780ef55dcb9d41bac400841a83eb4564f3.record.md) | +| 2026-08-14 | PR-1951 | PR #1951 full review and unblock | fixed | [248b36b9](branch-review-records/248b36b92b06adf7c5c774b595dbdd7338816418b90abb2584b88d3d49962c5d.record.md) | +| 2026-08-14 | PR-1956 | ledger reconciliation review, current-main merge, and duplicate-follow-up queueing | FIXED: merged current main cleanly; preserved canonical-ledger discipl… | [26cca9a8](branch-review-records/26cca9a8fb9d8d74d7f1ee7930cfbe94b1ad5125cb1551eb036da361229c79c6.record.md) | +| 2026-08-14 | PR-1951 | PR #1951 CI format repair | fixed the exact-head Changed-file format check failure in live-drift w… | [28051a48](branch-review-records/28051a48f8acb8c67da3f5d43e867ed46a9dbfa89fdd249cead35fa563bd9119.record.md) | +| 2026-08-14 | codex/windows-tooling-followups-pr | PR #1917 no-merge-base guard review (supersedes 2026-08-14) | pass | [28834412](branch-review-records/28834412b5dbf3b125a383cbbe6bb219897c9c553e4a1075a6b39f43960d2a0d.record.md) | +| 2026-08-14 | PR-1959 | PR #1959 base-preserving reconciliation review | Required base sync resolved the sole ledger conflict with main: all fo… | [2cdb1032](branch-review-records/2cdb103223cd78c8d29b3a26ffae52f385cd5e9fa87be7bbcb0fe5f75c369912.record.md) | +| 2026-08-14 | codex/therapy-global-convergence-20260814 | Therapy global mode convergence: navigation, shared shell, search, favourites, sources, pr… | P2 findings: four focused contract failures, missing Therapy tabpanel… | [2d205ab0](branch-review-records/2d205ab081f71c1df3d01466069b2308dbb1c7065b10703f617accee66359995.record.md) | +| 2026-08-14 | claude/ledger-reconcile-batch-3 | docs/outstanding-issues.md + inbox — reconcile the four rejected-closure corrections | Applied 4 update requests from PR #1957, no cancellations, zero live c… | [332ea839](branch-review-records/332ea83963cbf2857a64df609c9722ca734364de32bf354d9092762d7a6e4786.record.md) | +| 2026-08-14 | PR-1962 | PR #1962 registry-ready Gate 2 audit fix | Fixed the Gate 2 audit to wait for the Forms tasks region so carrier e… | [365fa9a7](branch-review-records/365fa9a7353142f52f78e4498f1a4046cd3d1bfd81cd70b816831c3d166119de.record.md) | +| 2026-08-14 | claude/ledger-process-tooling-50uqfc | ledger process tooling bundle (#313 dirty-tree gate, 829597d4 merge-loss detector, #211/#1… | PR #1944 — five separate commits, each independently revertible. Two c… | [39058fcc](branch-review-records/39058fcc89165e68d1e7359bb28e8b83ea9adacc348db610be6494d50d6bd842.record.md) | +| 2026-08-14 | PR-1953 | PR #1953 full review and required base sync | no PR-introduced P0-P2 defect; existing P2 verified-correct; merged la… | [39296f14](branch-review-records/39296f14956e2712c76344bea1eb1d312c64370049420fc3dd6939b28780721b.record.md) | +| 2026-08-14 | codex/calculators-mode | calculators first-class mode | Clean after resolving local-only typeahead and legacy URL normalizatio… | [3c872a41](branch-review-records/3c872a41535a5852133f97afa60a07d554e02ec2055fd40acb890720fbcdd8c3.record.md) | +| 2026-08-14 | codex/visual-layout-polish | PR #1949 review-and-fix | reviewed PWA decoding hint and desktop CLS attribution; no PR-introduc… | [3d1e2960](branch-review-records/3d1e296045909c10383c715b1abaa9ee7348002139c4d9b8ead0b7bfb6c1c548.record.md) | +| 2026-08-14 | claude/rag-zod-hardening-tranche1 | PR #1946 review-and-fix | fixed PR-introduced maintainability blocker; strengthened retrieval pr… | [3d45d96c](branch-review-records/3d45d96c0c8e97d835c1a3f6c12b320255c0164dc545dce172e67703b2be6fda.record.md) | +| 2026-08-14 | codex/medication-info-header-20260814 | medication information header expansion and desktop polish | No P0-P2 findings; ready for PR handoff | [3e317116](branch-review-records/3e31711658b047a477e82af444f00d88be075d7400770fbb25654628610cda51.record.md) | +| 2026-08-14 | PR-1953 | scripts/run-playwright.mjs; docs/branch-review-records | no PR-introduced P0-P2 defect; corrected prior local-only merge record… | [40b0c05d](branch-review-records/40b0c05db4e9b44c17bc78bb0246cd15d4f72e244027e5a389bee78924c450cf.record.md) | +| 2026-08-14 | claude/ledger-process-tooling-50uqfc | PR #1944 review-and-fix | Fixed five validated P2 findings | [4575cff3](branch-review-records/4575cff3b5b7591de309f5e375293bda952b5d8479ef56a45808b8fda27bba37.record.md) | +| 2026-08-14 | claude/correct-rejected-closures | docs/outstanding-issues-inbox — corrections for rejected closures and stale #231 | Queued 4 update requests. #235/#237/#238 record the rejected closure,… | [4859907c](branch-review-records/4859907cc6069250fcef7f0156490f1e04d0fd60e25fab0edbf33408b720efa9.record.md) | +| 2026-08-14 | PR #1966 | completed-PR ledger queue | fixed | [55297ab0](branch-review-records/55297ab0e355af3fbf69ae0321defbaa0a097a15f8fb74a52623abe427f21421.record.md) | +| 2026-08-14 | claude/fetch-stream-catch-cleanup | empty catch disposition (src/lib/theme.ts, src/app/layout.tsx) + new tests/empty-catch-dis… | Approved — 3 bare catches dispositioned with inline comments; no behav… | [5d5e3971](branch-review-records/5d5e39717399565bf0d92b900b2f10e0898d09140f6021c1ce2a514b7077d0c7.record.md) | +| 2026-08-14 | PR-1958 | PR #1958 final current-base sync | Merged the current main after the Tools-directory review; preserved th… | [5dfd91a1](branch-review-records/5dfd91a1c7b294fec5c2fca7834a9812e9c3055ed0b3a5f9f139a838dc8c1c2d.record.md) | +| 2026-08-14 | claude/ledger-reconcile-batch-1 | docs/outstanding-issues.md + inbox — serial reconciliation of 75 queued requests | Applied 63 active mutations (14 add, 23 done, 26 update) plus 6 cancel… | [5eb916e0](branch-review-records/5eb916e08284d9e70c23f302afa79bbc6efea6e39677c3a3a6e4006b3b749075.record.md) | +| 2026-08-14 | codex/visual-layout-polish | PR #1949 CLS ledger corrective review and base-current verification | fixed the confirmed issue-update overwrite of canonical CLS measuremen… | [6c6404a8](branch-review-records/6c6404a8a018cff566a2b0f00c17f87c45206350cff5c6bf2f3b86690f27c5d7.record.md) | +| 2026-08-14 | claude/disabled-button-accessibility-piclvr (PR #1928) | PR #1928 heavy review: outstanding-issues inbox count accuracy (docs only) | P2 fixed — durable summary corrected from four controls to four groups… | [7049e972](branch-review-records/7049e97211368e04c1fc07fd352673e255d3c4d4a0aa91c2b6db41db4d685d2b.record.md) | +| 2026-08-14 | PR #1965 | Playwright browser-revision preflight | fixed | [7060c1fc](branch-review-records/7060c1fcf1c15570212c29f7afe5379d101d7e3ada1bb102dcd1631e83d7bf55.record.md) | +| 2026-08-14 | claude/live-drift-forensics-lnhvja | incident forensics + live index restore evidence (#316/#231) | PR #1960 open | [71e02695](branch-review-records/71e026951e34c888a933c97c6f0f48f3825198aad8e34f32ecc8d6381b2ce5a2.record.md) | +| 2026-08-14 | claude/ledger-process-tooling-50uqfc | PR #1944 review-and-fix (supersedes 2026-08-14) | Corrected connector file encoding; retained five fixes | [7a1bb8ea](branch-review-records/7a1bb8ea354bbff006a1deb9148167b6bfe7cd5a364f7fd8d8da5287aa2a4e38.record.md) | +| 2026-08-14 | codex/calculators-mode | calculators first-class mode | P1: calculator composer invokes universal-search API despite local-onl… | [7b17944b](branch-review-records/7b17944b9be99b8dfecf5a608e68fcee0660337191337c4097bc1831ccd34960.record.md) | +| 2026-08-14 | claude/issues-reconcile-lnhvja | serialized outstanding-issues reconciliation (9 requests, 2 cancels) | PR #1967 open | [80cbe21a](branch-review-records/80cbe21a397bb239bbc43ceca3bf117412cf732bc2ad6e0bfc360a7a759102ed.record.md) | +| 2026-08-14 | PR-1955 | src/components/clinical-dashboard/account-setup-dialog.tsx; docs/branch-review-records | fixed design-system contract violations and merged latest main | [8243bee1](branch-review-records/8243bee1cb3db8072c44ead4c341496c2ac29c430dc0d2d9fc0930d314b14c9f.record.md) | +| 2026-08-14 | PR-1955 | PR #1955 CI repair and current-base sync (supersedes prior non-decisive review records) | fixed the CI-blocking legacy 44px brand-tile classes with the shared t… | [87f8cf80](branch-review-records/87f8cf80747ffeca51cee65f24c1a612dbaa08024e096bbcc0201a7434bbf1f3.record.md) | +| 2026-08-14 | claude/playwright-browser-revision-check | PR #1965: Playwright browser revision check | fixed | [91679c0f](branch-review-records/91679c0f8d364c93cfbe6f9c54463ec90d9dcbbfa158d1876e0ed8744f2c0162.record.md) | +| 2026-08-14 | PR #1931 / claude/issues-reconcile | fresh Tier 1 reconciliation review and required latest-base sync | no PR-introduced P0-P2 defect; three CodeRabbit clarity findings dispo… | [93a96538](branch-review-records/93a96538e6c18d69c9b727c6835a3284ca0041a62f6cc412d8aa9a6b94069582.record.md) | +| 2026-08-14 | PR-1951 | PR #1951 final base sync after formatting fix | Merged the current main including the #1959 ledger reconciliation afte… | [9cb91634](branch-review-records/9cb91634447e60affd610471e14ffdbacf8e042b608a2c3553c5ae303b34e92b.record.md) | +| 2026-08-14 | codex/account-setup-polish-20260814 | account setup responsive auth privacy UI | No reproducible P0-P3 findings; local dev-server stale chunk was clear… | [9ef3a3c0](branch-review-records/9ef3a3c00e3f782663cf239be31aa3a5eb4df2c4e9b49b249ce251af596c2038.record.md) | +| 2026-08-14 | PR-1958 | PR #1958 current-base sync | Merged the latest base, preserving the existing Tools-directory behavi… | [a55dc77c](branch-review-records/a55dc77c0266823fc485b9f5e8b164e6f47b1ae95aae4517cd969e5cd9246fa6.record.md) | +| 2026-08-14 | claude/design-token-relands | design tokens: --shadow-tight retirement reland, contract ratchet re-pin, search-band badg… | self-review; 4 commits, value-preserving, gates green except a pre-exi… | [a575dd1a](branch-review-records/a575dd1afa8eb2039c28d877548cd8f17499a67838484db45ce4d92c7593d198.record.md) | +| 2026-08-14 | claude/fetch-stream-catch-cleanup | empty catch disposition + contract guard + regenerated docs/medication-interaction-lexicon… | Approved — supersedes the 53ed541 record after adding the lexicon-repo… | [a6623880](branch-review-records/a66238807ed6618339b6350a066507a1f2d5bebef6c409adca8f782b191a962b.record.md) | +| 2026-08-14 | codex/windows-tooling-followups-pr | PR #1917 no-merge-base guard review | pass | [b797fbec](branch-review-records/b797fbec6db481d95397e4fb801f637cd2eb981cc38ea054f1e313debc18ec1f.record.md) | +| 2026-08-14 | claude/rag-zod-hardening-tranche1 | rag.ts retrieval RPC row Zod shape contract (ledger #212 tranche 1) | Approved — 4 unchecked as SearchResult[] casts on retrieval RPC rows r… | [bb4cf300](branch-review-records/bb4cf300c0917336cbfb205dc3631242f4e32aab35d3d3bfe1d0654c41f7bf34.record.md) | +| 2026-08-14 | claude/db-remediation-phase-0-wfaiyl | PR #1951 review-and-fix | fixed stale pending cancellation after base reconciliation; preserved… | [c0e02ee4](branch-review-records/c0e02ee4e90a6401ef8316af58b1bf530d74e359a217e4d91d21eae705b7ab81.record.md) | +| 2026-08-14 | PR-1958 | Tools mode navigation; shared-home route contract; docs/branch-review-records | fixed Tools preference persistence and stale CI source-contract assert… | [c7a8273f](branch-review-records/c7a8273f16ecbd3771d5a703a01cb219557f400ee0e274af7e1ce61963db465b.record.md) | +| 2026-08-14 | claude/playwright-tsconfig-isolation | scripts/run-playwright.mjs | FIXED - isolated child tsconfig given explicit include/exclude, empiri… | [c9661626](branch-review-records/c9661626e5c2a0e5f848b375b83006a00452994ad503349944c2fb345c8b42a1.record.md) | +| 2026-08-14 | claude/ledger-process-tooling-50uqfc | PR #1944 CI-blocker fix | Removed cancellation targeting an already applied inbox request | [cc0db6b3](branch-review-records/cc0db6b399e9168bfe40fd9cdce6209b623eaa682ce4b9524e6eed48ee04a235.record.md) | +| 2026-08-14 | claude/gate2-viewport-determinism | PR #1962: deterministic Gate 2 tap-carrier enumeration | fixed | [d05426d1](branch-review-records/d05426d18a2ed15eb393d7bc70c57358211520ff473b1e56d7fa4d4551f1c5b3.record.md) | +| 2026-08-14 | claude/archive-inflight-verified | docs/outstanding-issues-inbox — retire stale IN FLIGHT annotations | Verified 11 IN FLIGHT rows against code on main. Archived 8 as deliver… | [d47a7781](branch-review-records/d47a7781c6d6bba8d4e9a3e4a7897b643a913d3c8f5f9df528d794da41b40ec4.record.md) | +| 2026-08-14 | codex/search-round-trip-budget | tests/search-route-round-trip-budget.test.ts (PR #1950, ledger #098 residual + #189) | Author handoff: offline test-only diff adding a pinned Supabase round-… | [daeebafb](branch-review-records/daeebafbd027baeaf3c0cb7684f3d6e92386ed33e1fe2592147351ebb10efec8.record.md) | +| 2026-08-14 | codex/medication-info-header-20260814 | medication information header expansion and desktop polish | Supersedes the pre-rebase review record; no P0-P2 findings and ready f… | [ec64a223](branch-review-records/ec64a2232c6a292e1ca38a08fc425f5194177a6bbdef0d1c83cfdba62a110cd4.record.md) | +| 2026-08-14 | work | document search image availability and loading | Found and fixed cover audit skipping existing rows; live apply blocked… | [eee79235](branch-review-records/eee79235c4e2d7ed08fd81dccf399317a3b8c870210d155da52c563fca1d97d9.record.md) | +| 2026-08-14 | claude/ledger-process-tooling-50uqfc | outstanding-issues reconciliation of 35 queued requests (fresh base 0011a058) | PR #1956 — one serial reconciliation transaction from a fresh origin/m… | [f2f43e75](branch-review-records/f2f43e75cc44bf4d80d3e6bddb9f6844548e9f4d84b79b828a42a53505e3ff5c.record.md) | +| 2026-08-14 | claude/ledger-process-tooling-50uqfc | PR #1944 CI format fix | Formatted two merge-loss review files | [f726c2e6](branch-review-records/f726c2e6e71b61720a0609b9fdfd96aac4292d00fcdac8e3629b2e8e1f3f4845.record.md) | +| 2026-08-13 | claude/issues-writer-pri-flag | #313: update --pri across writer, inbox createRequest and validateRequest | handoff: PR #1905 opened for review | [030a97d7](branch-review-records/030a97d72473027a1c1c9c5225c2280b0d0be17d76059d345a74eccd10daa29d.record.md) | +| 2026-08-13 | codex/skill-system-hardening | PR #1904 current-head review and fix | FIXED P2 inventory and staging defects; no additional high-confidence… | [0b29ec1a](branch-review-records/0b29ec1af2386b95b96ea3ef0bc0a344171205d5fe3d7fcb4667d1c38daf87f1.record.md) | +| 2026-08-13 | PR #1894 / codex/fix-dsm5-search-bar-and-optimize-results-page | DSM search filters, result layout, and 1024px clipping review-and-fix | Fixed PR-introduced 1024px result-action clipping with 48px action tra… | [0cb7483e](branch-review-records/0cb7483e95fd64b239d5c9e5b12b1f4871e1727738909b5964f0061db2573602.record.md) | +| 2026-08-13 | claude/close-filter-rollout-rows | close ledger rows #170 and #309 after verifying the filter contract rollout shipped | PR #1925 opened; docs-only. Both rows verified DELIVERED by content on… | [20b22bab](branch-review-records/20b22bab9c03df1ef75e5fc68a4e23226d261c700a10fb4113feca85edc6de57.record.md) | +| 2026-08-13 | PR #1916 / codex/cloud-github-auth-hardening | Cloud detached-HEAD PR selection follow-up | fixed P2: fresh Cloud tasks now select the PR matching their exact det… | [2b93338a](branch-review-records/2b93338a2826d068c9dc31e7c6301c7e4723265bcf8b1942679b61ad046ef8b7.record.md) | +| 2026-08-13 | codex/performance-css-delivery | cold mobile CSS and font delivery | No unresolved findings; review added theme-aware responsive mockup uti… | [2c6a919b](branch-review-records/2c6a919bc949df279d074bdf810c92f2cb5a090b3bd4b521a833f0baa002e0e3.record.md) | +| 2026-08-13 | claude/patient-interactions-drug-alerts-3tztvw | parenthesised-name root cause, unreachable-counterparty verdict guard, outstanding-issue c… | 9 further rows across 4 drugs were silently unresolvable and now resol… | [391382c2](branch-review-records/391382c28f5fc43b1b7d8431141b1d93508d4082b9d44d6117ce2e92409a407b.record.md) | +| 2026-08-13 | codex/performance-fixes-20260813 | registry latency, Therapy home loading, Sentry release and request errors | No unresolved findings; fixed missing Accept-Encoding cache variance d… | [402da565](branch-review-records/402da565548d3320ca4658131e171ca3fd122ed2ee1208f0675ff691870f530e.record.md) | +| 2026-08-13 | claude/patient-interactions-drug-alerts-3tztvw | interaction note text polish (severity prefix, per-row severity chip, unclamped prose) | self-reviewed; shipped PR #1898 | [43d12e14](branch-review-records/43d12e14e914d36f453a41694d38cd76fa9d83f8ffe3a3b7768fb27108c8d377.record.md) | +| 2026-08-13 | codex/performance-fixes-20260813 | performance latency Sentry and deployment observability | No unresolved findings after registry cache variance and CI aggregate… | [4aa3c206](branch-review-records/4aa3c2064bb6f8dc41dc844578ab75b6f89ec582b62bf08fea40e9ab761158d8.record.md) | +| 2026-08-13 | codex/performance-fixes-20260813 | registry latency, Therapy home loading, Sentry release and request errors | No unresolved findings; fixed missing Accept-Encoding cache variance d… | [540c7cf7](branch-review-records/540c7cf7962d52849e293ba470febceef7ea5949b2e7b7bc2506023e945e4783.record.md) | +| 2026-08-13 | PR #1894 / codex/fix-dsm5-search-bar-and-optimize-results-page | Fresh exact-head PR review and DSM Playwright collection repair | Found and fixed PR-introduced P2: the 1024px DSM geometry regression s… | [5533c94e](branch-review-records/5533c94e9e7395c819d5f80b74bcb4c6ec4bea0f29c189ddf61ca13cf7545bc2.record.md) | +| 2026-08-13 | claude/ledger-tasks-fable-xhl7xb | ledger intake: merge-loss capture (4 inbox requests) | clean — additive JSON intake only, no canonical ledger edit | [57535343](branch-review-records/575353430fcae06c9f21bdf48964297e47a5eba6285a23fe534414d846c8d51d.record.md) | +| 2026-08-13 | codex/dynamic-mode-header | dynamic shared mode header density and overflow interactions | P2 Medication rail regression fixed; no remaining P0-P2 findings | [5ecd85e5](branch-review-records/5ecd85e56f65cbc57fe3a305c85d0ac61f02e53ad4a9286adb69221be9dc0296.record.md) | +| 2026-08-13 | PR #1933 / codex/performance-live-closeout | heavy PR review and focused fix | Confirmed one P2 ledger-identity defect: the proposed post-deployment… | [5fce9ebe](branch-review-records/5fce9ebe2003fc7a9fa9a853fe0edd4a9e06d2191271d4042ecb50429d0636ec.record.md) | +| 2026-08-13 | claude/rag-plan-review-guide-vhrls9 | docs: multi-session RAG programme handover pack (HANDOVER.md, catalogue, allowlist) | clean | [63ae3679](branch-review-records/63ae367983e2470bf1a1edf08d4eacfa00b9894fc26c6e12805adc7f39c2fa22.record.md) | +| 2026-08-13 | claude/fable-tasks-issues-49hnvp | PR #1906 failing CI conflict repair | Resolved the main-sync ledger conflict by preserving main #312 and con… | [65bc60c1](branch-review-records/65bc60c1d30f0daf9efba33fea5fa2d4be509699f05b5ea443fe5c5e2792daad.record.md) | +| 2026-08-13 | codex/specifier-map-compare-20260813 (PR #1912) | PR #1912 heavy review follow-up: post-scroll active-state repair | Exact-head Production UI trace showed the jump selection was reasserte… | [677a4c1b](branch-review-records/677a4c1b47f59748fc185f7ecae41a5fc108392499bb2bdd9cc0f67e0da2df10.record.md) | +| 2026-08-13 | codex/skill-system-hardening | Repository skill system hardening | PASSED | [68060939](branch-review-records/68060939263ed0a123ce0c79a27db162b44dbffe0eac004d8a8f7f19e0104965.record.md) | +| 2026-08-13 | claude/rag-incremental-delivery-lpw15e | #100 Phase 0 contract proof + flag-gated Phase 1 evidence preview (stream contract, answer… | PR #1909 opened; flag default off, no retrieval/generation behaviour c… | [6a5bd9d5](branch-review-records/6a5bd9d5cba90563645f1d0ccdbae85ce69990ed735f5494573242f14c7abdc9.record.md) | +| 2026-08-13 | work | guide dialog UX, scrolling, answer verification preview, and mobile bottom action | Implemented focused fixes; no unresolved high-confidence defects in ch… | [73e1ce27](branch-review-records/73e1ce27d354653c23fc961f40f9d63232cd9e2adbed6433ed8cb4e2e04eb3aa.record.md) | +| 2026-08-13 | PR #1924 / claude/refile-210-correction | PR #1924 babysit: #210 inbox correction | Confirmed and fixed the P2 false claim that Next mutates the isolated… | [768eb9c5](branch-review-records/768eb9c577b6057fbf79b8bfa70828b97833416d4dbfa1e821490d5d90b16df4.record.md) | +| 2026-08-13 | PR #1888 / claude/filter-contract-factsheets-pr-d | PR #1888 fresh heavy review-and-fix before required main sync | Dispositioned the PR delta as superseded by current main: retained mai… | [770c855f](branch-review-records/770c855f8ddb79707f4ddb49b266ea1f4d27795aa33fcc02f099586e423c15b2.record.md) | +| 2026-08-13 | codex/sitemap-dom-fixes (PR #1919) | PR #1919 heavy review and fix | Fixed crawler policy and added regression coverage; no other blocking… | [78ad337f](branch-review-records/78ad337f2fcd7b8a7fe6997dde55a64c29e794a34c2cb241ddbd3fa512a3b604.record.md) | +| 2026-08-13 | codex/specifier-map-compare-20260813 (PR #1912) | PR #1912 heavy review follow-up: explicit section intent ownership | Production UI trace proved the phone chrome transition could emit a la… | [7a2e5d13](branch-review-records/7a2e5d1342d05d71e719e3f8fd535f42faba0eb71278789ddd84ea018fb82e31.record.md) | +| 2026-08-13 | claude/ledger-sweep-inbox-requests | re-file the 2026-08-12 yield review as 43 inbox requests (22 done, 19 update, 2 add); prem… | handoff: PR #1920 opened for review | [7cdd3521](branch-review-records/7cdd3521cc3cf9c7a8ee212d24cb85ff3d58122c4f4f65df72503e756190f3cb.record.md) | +| 2026-08-13 | claude/patient-interactions-drug-alerts-3tztvw | bare absence-declaration rows resolve instead of parsing as unreadable | triamcinolone and riboflavin no longer held at grey by a NONE. row the… | [7e4c7356](branch-review-records/7e4c7356d18ff24114e7666fb83b869513525f74d9ccc2d5d3d5ae56a6bc925a.record.md) | +| 2026-08-13 | claude/rag-canary-test-review-seprbt | ranking snapshot refresh from green weekly canary artifact run 31329507691 | PR #1932 opened; closes /issues #304 via inbox request; zero provider… | [7ee35243](branch-review-records/7ee352435e107f32eaeb7f1944c52afcc66721ba8646d431e9f74a41c25a18a6.record.md) | +| 2026-08-13 | claude/viewer-ledger-truth-pass | document-viewer ledger truth pass: queue five inbox requests (crop-overlay row, #278 done,… | PR #1930 opened. Inventory of remaining document-viewer work found fou… | [80267ba6](branch-review-records/80267ba60c8b79449b5ec74d46133bfbd30b4eafff3aef196f42c11095b095f0.record.md) | +| 2026-08-13 | codex/ci-iteration-speed-current2-20260813 | CI iteration performance and reliability implementation | No P0-P2 findings at committed implementation head | [857d9cfb](branch-review-records/857d9cfbe5afb7e75192c798a5adcd1e69c834f317e17d29cc37fab457950759.record.md) | +| 2026-08-13 | claude/patient-interactions-drug-alerts-3tztvw | medication interaction lexicon review sheet + reverse-direction note wording | ARB/carbapenem misclassification fixed; divergent duplicate Warfarin r… | [89ef6892](branch-review-records/89ef6892ffb66555f7f243204381cf9669f9683b3056177942eafa88f5014e62.record.md) | +| 2026-08-13 | codex/cloud-github-auth-hardening | Cloud GitHub access hardening | No unresolved findings after fail-closed acceptance review; hardened i… | [8d1e4659](branch-review-records/8d1e4659cc4020ed5898217ab21a61d814189bfb1b396bc8d74aac725ad816ee.record.md) | +| 2026-08-13 | codex/specifier-map-compare-20260813 (PR #1912) | PR #1912 heavy review follow-up: regression test type correction | Exact-head Build on 5910cda failed only because the new regression cas… | [9487f808](branch-review-records/9487f80818e627bca5cf0e905a4a2eaadc09f22e0e2c221bfd96e51272503b38.record.md) | +| 2026-08-13 | claude/ledger-sweep-inbox-requests | PR #1920 full ledger-request review and fix | two confirmed P1 reconciliation defects repaired: preserve one open po… | [97da85c7](branch-review-records/97da85c7931e595b66e1cd8240b5f4f8ea9d058996bfaa12027e14d843d16e8d.record.md) | +| 2026-08-13 | codex/windows-tooling-followups-pr | Windows tooling follow-ups | pass | [b3bee2c4](branch-review-records/b3bee2c4edb2db5f4cb057cdb898faf94a6d8d73e517a0076ad16396d3800439.record.md) | +| 2026-08-13 | codex/ci-iteration-speed-current2-20260813 | CI iteration performance and reliability implementation | No P0-P2 findings after current-main reconciliation and review fixes;… | [bd2e6e9a](branch-review-records/bd2e6e9a0e4b0c9b6328b79993cdd9a599a376931c03962863cf3a1d2f74e4a4.record.md) | +| 2026-08-13 | PR #1903 / codex/dynamic-mode-header | dynamic mode header exact-head CI repair and adversarial follow-up | Fixed PR-introduced style-contract registry blocker by documenting mod… | [bf33f2b1](branch-review-records/bf33f2b166408c8d3a7c70d8d0ac34b61d00b04f232c3a3f892f2be5faf2fb50.record.md) | +| 2026-08-13 | claude/rag-plan-review-guide-vhrls9 | docs: RAG improvement programme review + updated guide (docs/rag-improvement/, docs checke… | clean | [c3131155](branch-review-records/c31311559848676575ed299d92b17501eef76d85f7b516d5d1ec95279fca7162.record.md) | +| 2026-08-13 | claude/rag-latency-behaviour-lpw15e | Answer-route latency: embedding warm-up + truncation-retry floor (rag.ts, rag-route-budget… | PR #1907 opened; retrieval results byte-identical, generation retry ad… | [c4180931](branch-review-records/c4180931bcee6e57b7708290ec92f20763b5986d4c56c055095a1cd995f9e3dc.record.md) | +| 2026-08-13 | codex/specifier-map-compare-20260813 (PR #1912) | PR #1912 heavy review: stale section selection repair | Validated and fixed one PR-introduced P2 history race: an obsolete ani… | [c5563b0f](branch-review-records/c5563b0f95d92b6825c837e780c9d5bc350bcdd56fb4ed4a3e13462c1a20cf30.record.md) | +| 2026-08-13 | codex/cloud-github-auth-hardening | Cloud GitHub access hardening second pass | Fixed three P2 reliability defects and exact-branch PR sampling; no un… | [d7adc774](branch-review-records/d7adc774bbfddb122e202e55cdde05a1061759273e83623c7042d08d195c6889.record.md) | +| 2026-08-13 | codex/differentials-compare-elevate-20260813 | PR #1911 end-to-end differentials navigation review | Fixed one reproducible duplicate-header defect in the ad-hoc compare w… | [e05104f2](branch-review-records/e05104f2b29da6f3292c55f8f3cdef088de75fc1723a3c86ce04c92c7887dcc8.record.md) | +| 2026-08-13 | claude/patient-interactions-drug-alerts-3tztvw | lexicon dead-term removal, evidence-bearing review flags, lithium name alias, coverage bou… | lithium reachable from 8 previously-silent HIGH rows (NSAIDs/thiazides… | [e1f0256a](branch-review-records/e1f0256afe336c5f770289f51ee5c1e6ebeab67c19506620ecf3317979301fbd.record.md) | +| 2026-08-13 | claude/disabled-button-accessibility-piclvr | outstanding-issues inbox request capturing the four placeholder controls #291 left native… | authored — PR #1928 opened | [e2d6c2eb](branch-review-records/e2d6c2ebdb0cc2cb0231773185242e7ab74d8cc487dd81ca3b47f1fce8bdb99f.record.md) | +| 2026-08-13 | PR #1930 / claude/viewer-ledger-truth-pass | heavy review-and-fix: ledger truth, SessionStart runtime remediation, and focused tests | Fixed three confirmed P2 review findings and one additional P2 test-is… | [e45950d8](branch-review-records/e45950d8553bb606f144e9ece801d1328b4573c2e7adb30125925ccccca1596c.record.md) | +| 2026-08-13 | codex/performance-css-delivery | cold mobile CSS and font delivery | No unresolved findings after clean current-main sync; shared header ch… | [e9ef965f](branch-review-records/e9ef965f3b9bffc0aef79a3be4d3c206f04207ac0e1b2d8696bb3f657b7df90a.record.md) | +| 2026-08-13 | claude/fix-231-queue-misdirection | derive recommended-queue prose from the cited row's detail; removes the #231 misdirection… | handoff: PR #1902 opened for review | [f3751376](branch-review-records/f37513763ecace3c1eeca5c8977abe2b890cbde5f09f3f5566f432fbd5f675e0.record.md) | +| 2026-08-13 | PR #1889 post-merge verification (supersedes inaccurate PR #1921 record) | therapy-compass filter contract and rollout chronology | Verified current main: #1889 introduced the live therapy convergence a… | [f4689734](branch-review-records/f468973451ef309665b582ddc5ccdb20e6efe16873ab26396ce2813f2dad8ab5.record.md) | +| 2026-08-13 | codex/diagnosis-map-viewer-20260813 | PR #1918 diagnosis map viewer heavy review | Fixed the PR-introduced Prettier gate failure in the new DOM regressio… | [f61ebd10](branch-review-records/f61ebd10b574f637430227c9e288d092da753d278f572e5de06fc2d37830d6f2.record.md) | +| 2026-08-13 | claude/design-issues-triage-wnr7k9 | docs/outstanding-issues-inbox — #210 correction | Corrected #210: typecheck half already fixed by tsconfig.typecheck.jso… | [f8f72a67](branch-review-records/f8f72a6790fd157daa749c3601ca7af0b3eb1f338a69e0994874dbba42906eb2.record.md) | +| 2026-08-13 | claude/issues-reconcile | reconcile 19 queued inbox requests into the canonical outstanding-issues ledger | PR #1931 opened; docs-only. Run from a fresh branch off merged main 63… | [fee2b56c](branch-review-records/fee2b56c3d67fb589c26f3832ada94de4ae6b47a2bda2f33ff0076b667e5dd1d.record.md) | +| 2026-08-12 | work | DSM search results filters and layout | Improved mobile category filtering and result spacing; no remaining sc… | [08f798af](branch-review-records/08f798aff890e3670a7172ccf83d2e2b1bc76693ac38e2a6d7433bfb1de9b4bc.record.md) | +| 2026-08-12 | PR #1888 (claude/filter-contract-factsheets-pr-d) | factsheets category counts, filter-contract correction, desktop-rail exception decision | Filter contract PR D — corrected the earlier false claim that factshee… | [33f8fcf0](branch-review-records/33f8fcf0543655449bf077fbb7595b849f39599f7d54238755ee9a649967f25a.record.md) | +| 2026-08-12 | work | privacy page header and structure | added direct tests and existing full UI smoke | [5a56595c](branch-review-records/5a56595cacecc68d6c29ed39e48d791f1421b338fa021f8f6ee591f667ee4e8a.record.md) | +| 2026-08-12 | codex/services-detail-system-20260813 | services detail redesign responsive UX and referral actions | Three P2 findings fixed; no remaining high-confidence defects | [faf28a3e](branch-review-records/faf28a3e4e89bb0b7ccaec3e1a3945c3b56a26d6222df1eb76becc72540afb46.record.md) | + +## Refs reviewed more than once + +Same ref, same reviewed head, more than one record — the shape a supersession chain +takes. Ref shown is the newest record's cell verbatim; dates and record links only, so +this section stays short. Grouping is best-effort: ref cells are free text. + +| Ref | Head | Records | +| --- | --- | --- | +| claude/phase-5-closeout | `c3ca68fa` | 2026-08-21 [da9eaddd](branch-review-records/da9eadddac4befebc995b1000caa73f1fa0ced0d25d52b5789223410bac06c08.record.md), 2026-08-21 [4dd785f6](branch-review-records/4dd785f6a227e847467c76e68e4c08df2fc9394343295e0985c70bd306ab2861.record.md) | +| claude/services-navigation-removal-7bnknn (PR #2040) | `e0c3f640` | 2026-08-17 [db385c81](branch-review-records/db385c8181a9620272ece6df071f3b5afabd6085d21755f30dddf9e6e0ffaf10.record.md), 2026-08-17 [02471c51](branch-review-records/02471c51928a64ed4d9010f91d3c62ef5391134683ddd67a7652b9e8d45621ac.record.md) | +| claude/rag-zod-hardening-tranche2 | `690204f6` | 2026-08-15 [e28c5671](branch-review-records/e28c56717b466a1206d6eea9b313f4a39e88a0195f76078511821ab44cc09456.record.md), 2026-08-15 [8f593be4](branch-review-records/8f593be414cd088768dc59074dcd77476f562cfdaabd4d2b23cd3a67336a02ff.record.md), 2026-08-15 [150c9556](branch-review-records/150c95562bf34c0fc9a79c97c63bbacb3bac3f9a436acc5b0336b62533ab1c54.record.md) | +| codex/differential-results-ui-20260814 | `d12e0217` | 2026-08-15 [f4aa3dfa](branch-review-records/f4aa3dfaabe1e3f82d0b8e20729b1c40648e1632d2645016ce189113e6f4a1b3.record.md), 2026-08-15 [df5b1005](branch-review-records/df5b100555e4f07ef667054d2a80ba9f10ada2f3ebe7fab5da0edc041142a1c1.record.md), 2026-08-15 [898e1bc7](branch-review-records/898e1bc7855d44ca3df03b0c0f9747960713a6a06b532505caa5548de80b814c.record.md), 2026-08-15 [74e47bb0](branch-review-records/74e47bb0fd4e2b3ff3ec524606a00b573db356d6b17cf68b4829a19643b9b71a.record.md), 2026-08-15 [149dbe37](branch-review-records/149dbe376e6d9fa6eac0edcdb578b65c526366619d6e858107ca0fe108f95382.record.md), 2026-08-15 [115a1304](branch-review-records/115a1304ff998fd0eeaee128b93a1b624eceaa07712147fdfb1fd71dcf2603d5.record.md) | +| codex/pwa-install-polish-20260815 | `80fd6c04` | 2026-08-15 [cebd0371](branch-review-records/cebd03715e584420f2fb63b757718fd8f04e9dfb00089261c37800f7d8edf694.record.md), 2026-08-15 [b3523668](branch-review-records/b3523668f8839bde68f1fae4de2e7e8275b5cabc1802d1b6511b30323adad6ad.record.md), 2026-08-15 [63bb22a3](branch-review-records/63bb22a3ea42c41966caaa63a61b73a2bba0026f0898a8f6e3afae6123075fce.record.md), 2026-08-15 [4a51a80a](branch-review-records/4a51a80a457f85c939048278f01e3a3059d5509bfd975096af94b63ef16e825a.record.md) | +| codex/therapy-global-convergence-20260814 | `0011a058` | 2026-08-14 [2d205ab0](branch-review-records/2d205ab081f71c1df3d01466069b2308dbb1c7065b10703f617accee66359995.record.md), 2026-08-14 [15df886b](branch-review-records/15df886bae0a49c72881baed6a778a36a808d0e509b1e14d099c299ec5e1e334.record.md), 2026-08-15 [fc9303a4](branch-review-records/fc9303a43ee12deed2f6e7bc96f9b216041ad3983f040dbc0dc0f0cf4df50c84.record.md) | +| codex/windows-tooling-followups-pr | `36ebe9fe` | 2026-08-14 [b797fbec](branch-review-records/b797fbec6db481d95397e4fb801f637cd2eb981cc38ea054f1e313debc18ec1f.record.md), 2026-08-14 [28834412](branch-review-records/28834412b5dbf3b125a383cbbe6bb219897c9c553e4a1075a6b39f43960d2a0d.record.md) | diff --git a/docs/branch-review-records/README.md b/docs/branch-review-records/README.md index 546b9f49da..c38235abc5 100644 --- a/docs/branch-review-records/README.md +++ b/docs/branch-review-records/README.md @@ -5,3 +5,8 @@ For an active branch with a legacy row that predates this system, `npm run ledger:migrate-legacy` creates the matching immutable record and removes only its branch-added row from the table. Do not hand-edit or rename record files. + +## Where to go next + +- **What you may and may not do to these files:** [../branch-review-archival-policy.md](../branch-review-archival-policy.md) — which operations are blocked by code, which are forbidden by policy but caught by nothing, and why moving records into subdirectories silently removes them from every reader. +- **Browse the corpus:** [../branch-review-index.md](../branch-review-index.md), generated by `npm run ledger:index`. It is a convenience view and may lag; `npm run ledger:lookup` remains the authoritative read. diff --git a/docs/scripts-index.md b/docs/scripts-index.md index 0b9377333f..6a46a2a84a 100644 --- a/docs/scripts-index.md +++ b/docs/scripts-index.md @@ -1,6 +1,6 @@ # Scripts index -Curated map of `scripts/` (285 files) and the `package.json` script surface (289 entries), +Curated map of `scripts/` (286 files) and the `package.json` script surface (291 entries), grouped by purpose. This is orientation, not an exhaustive per-file listing — the authoritative command list is `package.json`, and `npm run docs:check-scripts` verifies every `npm run ` referenced in docs resolves to a real script. `npm run docs:update` refreshes the exact counts above. diff --git a/package.json b/package.json index 505645a509..5da02019ee 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "test:coverage": "node scripts/run-vitest.mjs run --coverage", "test:coverage:node": "node scripts/run-vitest.mjs run --project=node --coverage", "test:coverage:ui": "node scripts/run-vitest.mjs run --project=jsdom --coverage", - "test:ci-workflows": "node scripts/run-vitest.mjs run tests/ci-cache-safety.test.ts tests/authenticated-live-workflow.test.ts tests/browser-test-plan.test.ts tests/codex-autofix-workflow.test.ts tests/codex-run-pr-operator-workflow.test.ts tests/eval-canary-workflow.test.ts tests/live-drift-workflow.test.ts tests/ops-digest.test.ts tests/container-ci-contract.test.ts tests/test-runner-safety.test.ts tests/installed-lock-parity.test.ts tests/railway-config.test.ts tests/ingestion-autopilot.test.ts tests/ingestion-autopilot-workflow.test.ts tests/check-lighthouse-budget.test.ts tests/live-web-vitals-inputs.test.ts tests/offline-release-profile.test.ts tests/bundle-budget-refresh-workflow.test.ts", + "test:ci-workflows": "node scripts/run-vitest.mjs run tests/ci-cache-safety.test.ts tests/branch-review-index.test.ts tests/authenticated-live-workflow.test.ts tests/browser-test-plan.test.ts tests/codex-autofix-workflow.test.ts tests/codex-run-pr-operator-workflow.test.ts tests/eval-canary-workflow.test.ts tests/live-drift-workflow.test.ts tests/ops-digest.test.ts tests/container-ci-contract.test.ts tests/test-runner-safety.test.ts tests/installed-lock-parity.test.ts tests/railway-config.test.ts tests/ingestion-autopilot.test.ts tests/ingestion-autopilot-workflow.test.ts tests/check-lighthouse-budget.test.ts tests/live-web-vitals-inputs.test.ts tests/offline-release-profile.test.ts tests/bundle-budget-refresh-workflow.test.ts", "test:cc-guards": "node scripts/run-vitest.mjs run --reporter=dot tests/caring-contacts-plan-draft.dom.test.tsx tests/caring-contacts-plan-patient-detail.test.ts tests/caring-contacts-plan-activation.test.ts tests/caring-contacts-plan-wizard.dom.test.tsx tests/caring-contacts-schedule.test.ts tests/caring-contacts-schedule-view.test.ts tests/caring-contacts-schedule-route.test.ts tests/caring-contacts-schedule-screen.dom.test.tsx tests/caring-contacts-schedule-page.dom.test.tsx tests/caring-contacts-clock.test.ts tests/caring-contacts-new-plan-page.dom.test.tsx tests/caring-contacts-explained-automation.dom.test.tsx tests/caring-contacts-workspace-shell.dom.test.tsx tests/caring-contacts-patients-directory.dom.test.tsx tests/caring-contacts-patient-overview.dom.test.tsx tests/caring-contacts-patients-page.dom.test.tsx tests/caring-contacts-domain-isolation.test.ts tests/caring-contacts-interface-vocabulary.test.ts tests/caring-contacts-retention.test.ts tests/caring-contacts-repository.test.ts tests/caring-contacts-overlay-definitions.test.ts tests/caring-contacts-overlay-trigger-inventory.test.ts tests/caring-contacts-workspace-screens.test.ts tests/route-reachability.test.ts tests/design-system-adoption.test.ts tests/caring-contacts-contact-time-adjustment.dom.test.tsx tests/caring-contacts-contact-route.test.ts tests/caring-contacts-overlay-trigger.dom.test.tsx tests/caring-contacts-overlay-host.dom.test.tsx tests/source-control-bytes.test.ts tests/caring-contacts-demo-seed.test.ts tests/caring-contacts-pathway-versions.test.ts tests/caring-contacts-templates-library.dom.test.tsx tests/caring-contacts-templates-page.dom.test.tsx tests/caring-contacts-template-detail.dom.test.tsx tests/caring-contacts-template-detail-page.dom.test.tsx tests/caring-contacts-reporting.test.ts tests/caring-contacts-guidance-reports-pages.dom.test.tsx tests/caring-contacts-team-workload.test.ts tests/caring-contacts-team-route.test.ts tests/caring-contacts-team-roster.dom.test.tsx tests/caring-contacts-team-page.dom.test.tsx", "test:e2e": "node scripts/run-playwright.mjs", "test:e2e:all": "node scripts/run-playwright.mjs", @@ -126,6 +126,8 @@ "ledger:migrate-legacy": "node scripts/branch-review-ledger.mjs migrate-legacy", "ledger:dedupe": "node scripts/branch-review-ledger.mjs dedupe", "ledger:rotate": "node scripts/branch-review-ledger.mjs rotate", + "ledger:index": "node scripts/generate-branch-review-index.mjs", + "ledger:index:check": "node scripts/generate-branch-review-index.mjs --check", "check:ledger-stamp-retention": "node scripts/check-ledger-stamp-retention.mjs --self-test && node scripts/check-ledger-stamp-retention.mjs", "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", @@ -133,7 +135,7 @@ "docs:check-links": "node scripts/check-docs-links.mjs", "docs:check-scripts": "node scripts/check-docs-script-refs.mjs", "docs:check-inventory": "node scripts/update-docs-inventory.mjs --check", - "docs:update": "npm run sitemap:update && node scripts/update-docs-inventory.mjs && npm run snapshot:issues && npm run snapshot:repo-awareness", + "docs:update": "npm run sitemap:update && node scripts/update-docs-inventory.mjs && npm run snapshot:issues && npm run snapshot:repo-awareness && npm run ledger:index", "deps:report": "node scripts/dependency-report.mjs", "docs:check-index": "node scripts/check-codebase-index-coverage.mjs", "sitemap:update": "node scripts/run-tsx.mjs scripts/generate-site-map.ts", diff --git a/scripts/check-stale-docs.mjs b/scripts/check-stale-docs.mjs index 6fbee6ca58..6b95ac236f 100644 --- a/scripts/check-stale-docs.mjs +++ b/scripts/check-stale-docs.mjs @@ -109,6 +109,7 @@ export function lastCommitDate(path) { // in one is proof a file exists, not proof anyone is reading or relying on it. const GENERATED_CATALOGS = new Set([ "docs/site-map.md", + "docs/branch-review-index.md", "data/repo-awareness-snapshot.json", "data/outstanding-issues-snapshot.json", ]); diff --git a/scripts/generate-branch-review-index.mjs b/scripts/generate-branch-review-index.mjs new file mode 100644 index 0000000000..f5a826b080 --- /dev/null +++ b/scripts/generate-branch-review-index.mjs @@ -0,0 +1,327 @@ +#!/usr/bin/env node +/** + * generate-branch-review-index — render docs/branch-review-index.md, a navigable + * table of contents for the 570+ content-addressed files in + * docs/branch-review-records/. + * + * node scripts/generate-branch-review-index.mjs # write the index + * node scripts/generate-branch-review-index.mjs --check # advisory staleness report + * + * Why this exists. Every review record is named for the sha256 of its own row, so + * the directory listing carries no information at all: you cannot tell which file + * holds which review without opening it. Worse, the hash-filename -> row mapping + * exists in NO static artifact today — scripts/generate-repo-awareness-snapshot.ts + * reads `{file, line}` per record and then drops `file` when it builds + * `review_state`, emitting only the six cells. This index supplies that missing + * join, and nothing else does. + * + * DELIBERATELY NOT GATED. Records are appended roughly 27 times a day (570 landed + * in August 2026 alone). A byte-equality check on a file derived from that corpus + * would go red on `main` after nearly every merge and would conflict between + * concurrent pull requests — which is exactly why + * scripts/check-repo-awareness-snapshot.ts excludes `review_state` from + * COMPARED_CONTENT_KEYS. So this generator is wired into no gate: not + * verify:cheap:internal, not .github/workflows/ci.yml, not verify-pr-local.mjs, + * not .githooks/pre-commit. `--check` is advisory and manual. The index may lag + * the corpus; `npm run ledger:lookup` reads the records themselves and stays + * authoritative for "was this reviewed?". + * + * One enforcement property IS worth knowing about, and it is a side effect of the + * links rather than a gate of its own: `npm run docs:check-links` scans + * docs/**\/*.md and fails when a relative link target does not resolve. Because + * this index links EVERY record by path, that checker becomes the first piece of + * code in the repository that notices a deleted review record. Deleting one is + * already forbidden by policy (docs/codex-review-protocol.md) but was, until this + * file existed, caught by nothing. Do not "fix" a docs:check-links failure here by + * regenerating the index — regenerating hides the deletion. Restore the record. + * + * Determinism: no wall clock, no hostname, no git SHA. Identical corpus content + * produces byte-identical output on any platform. Freshness is expressed only + * through content-derived facts (record count, date range). Ordering uses a total + * order — date descending, then record path ascending — so no reliance is placed + * on sort stability. + */ +import { readFileSync, writeFileSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; + +// Reuse the repo's own corpus reader rather than adding a third parser. In +// particular `parseLedgerRows` splits on CELL_SPLIT (`/(? readFileSync(path.join(repoRoot, p), "utf8"), +} = {}) { + const records = []; + for (const recordPath of paths) { + const rows = parseLedgerRows(read(recordPath)); + if (rows.length !== 1) { + throw new Error(`${recordPath}: expected exactly one review row, found ${rows.length}`); + } + const hash = path.posix.basename(recordPath, RECORD_SUFFIX); + records.push({ ...rows[0], path: recordPath, hash }); + } + return records; +} + +/** + * Total order: date descending, then record path ascending. The tiebreak is not + * decoration — `listLedgerRecordPaths()` returns hashes in sorted order, so this + * makes the output independent of both readdir order and sort stability. + */ +export function sortRecords(records) { + return [...records].sort((a, b) => { + if (a.date !== b.date) return a.date < b.date ? 1 : -1; + if (a.path !== b.path) return a.path < b.path ? -1 : 1; + return 0; + }); +} + +/** + * Best-effort supersession key. The `(supersedes YYYY-MM-DD)` scope suffix that + * `ledger:append --supersede` writes appears in only 8 of 576 records (3 of them + * hand-written prose), so it is a hint, not the signal. The real signal is a + * repeated (ref, head) pair: the same branch tip reviewed more than once. + * + * Ref cells are free text — bare branches, "PR #1966 / branch", bare PR numbers, + * the placeholder "work", a full GitHub URL, and one whole sentence — so 22 of + * 576 yield no branch token at all. `refTokens` is therefore best-effort and the + * normalised raw cell is the fallback; neither may throw on any shape. + */ +export function supersessionKey(record) { + const tokens = [...refTokens(record.ref)].sort(); + const refKey = tokens.length > 0 ? tokens.join(" ") : normalizeRef(record.ref); + return `${refKey}\u0000${record.head.toLowerCase()}`; +} + +function recordLink(record) { + return `[${record.hash.slice(0, 8)}](${RECORD_LINK_DIR}/${record.hash}${RECORD_SUFFIX})`; +} + +function renderHeader(records) { + const dates = records.map((record) => record.date); + const earliest = dates.length > 0 ? dates.reduce((a, b) => (a < b ? a : b)) : "-"; + const latest = dates.length > 0 ? dates.reduce((a, b) => (a > b ? a : b)) : "-"; + const refs = new Set(records.map((record) => record.ref)); + const heads = new Set(records.map((record) => record.head.toLowerCase())); + + const perDate = new Map(); + for (const record of records) perDate.set(record.date, (perDate.get(record.date) ?? 0) + 1); + const dateLines = [...perDate.keys()] + .sort() + .reverse() + .map((date) => `- \`${date}\` — ${perDate.get(date)} ${perDate.get(date) === 1 ? "record" : "records"}`); + + return [ + "# Branch review record index", + "", + "This file is generated by `npm run ledger:index` (and refreshed by `npm run docs:update`).", + "Run `npm run ledger:index:check` to see whether it is current.", + "", + "**This index is not a gate and it may lag the corpus.** Review records are appended by", + "every PR handoff, so a byte-equality check on a file derived from them would go red on", + "`main` after nearly every merge and would conflict between concurrent pull requests. It is", + "therefore wired into no verification gate, and `ledger:index:check` is advisory only. For", + 'the authoritative answer to "has this ref been reviewed for this scope?", ask the records', + 'themselves: `npm run ledger:lookup -- --scope ""`.', + "", + "Record format and write rules: [`branch-review-records/README.md`](branch-review-records/README.md).", + "Retention and rotation: [`branch-review-archival-policy.md`](branch-review-archival-policy.md).", + "", + "## Summary", + "", + `- Records: ${records.length}`, + `- Distinct ref cells: ${refs.size}`, + `- Distinct reviewed heads: ${heads.size}`, + `- Date range: \`${earliest}\` to \`${latest}\``, + "", + "Records per date, newest first:", + "", + ...dateLines, + ]; +} + +function renderAllRecords(sorted) { + const lines = [ + "## All records, newest first", + "", + "Scope and outcome are truncated; follow the record link for the full six-cell row.", + "", + "| Date | Ref | Scope | Outcome | Record |", + "| --- | --- | --- | --- | --- |", + ]; + for (const record of sorted) { + lines.push( + `| ${cell(record.date)} | ${cell(record.ref)} | ${cell(truncateCell(record.scope, SCOPE_LIMIT))} | ${cell( + truncateCell(record.outcome, OUTCOME_LIMIT), + )} | ${recordLink(record)} |`, + ); + } + return lines; +} + +function renderSupersessionChains(sorted) { + const groups = new Map(); + for (const record of sorted) { + const key = supersessionKey(record); + if (!groups.has(key)) groups.set(key, []); + groups.get(key).push(record); + } + + const chains = [...groups.entries()] + .filter(([, group]) => group.length > 1) + // `sorted` is newest-first, so the first entry of each group is its newest + // record and the group arrives in newest-first order already. Reverse to + // read the chain oldest -> newest, which is the order it was written in. + .map(([key, group]) => ({ key, newest: group[0], group: [...group].reverse() })) + .sort((a, b) => { + if (a.newest.date !== b.newest.date) return a.newest.date < b.newest.date ? 1 : -1; + if (a.key !== b.key) return a.key < b.key ? -1 : 1; + return 0; + }); + + const lines = [ + "## Refs reviewed more than once", + "", + "Same ref, same reviewed head, more than one record — the shape a supersession chain", + "takes. Ref shown is the newest record's cell verbatim; dates and record links only, so", + "this section stays short. Grouping is best-effort: ref cells are free text.", + "", + ]; + if (chains.length === 0) { + lines.push("_No ref/head pair carries more than one record._"); + return lines; + } + lines.push("| Ref | Head | Records |", "| --- | --- | --- |"); + for (const chain of chains) { + const entries = chain.group.map((record) => `${record.date} ${recordLink(record)}`).join(", "); + lines.push(`| ${cell(chain.newest.ref)} | \`${chain.newest.head.slice(0, 8)}\` | ${entries} |`); + } + return lines; +} + +/** + * Pure renderer: records in, markdown out. Cells are emitted with single-space + * padding (`| a | b |`) and the file is EXCLUDED from Prettier, because Prettier + * column-pads markdown tables — one long cell would repad all 576 rows and turn a + * one-record append into a whole-file diff, the same reason + * docs/branch-review-ledger.md is ignored. + */ +export function renderBranchReviewIndex(records) { + const sorted = sortRecords(records); + return [...renderHeader(sorted), "", ...renderAllRecords(sorted), "", ...renderSupersessionChains(sorted), ""].join( + "\n", + ); +} + +export function generate(options = {}) { + return renderBranchReviewIndex(collectRecords(options)); +} + +function main(argv) { + const outputPath = path.join(repoRoot, OUTPUT_PATH); + const expected = generate(); + if (argv.includes("--check")) { + let current = null; + try { + current = readFileSync(outputPath, "utf8"); + } catch { + current = null; + } + if (current === expected) { + console.log(`[ledger:index] ${OUTPUT_PATH} is current.`); + return 0; + } + console.error( + `[ledger:index] ${OUTPUT_PATH} is stale — run \`npm run ledger:index\`.\n` + + "This check is ADVISORY and intentionally gates nothing: review records are appended\n" + + "constantly, so the index lagging main is expected, not a failure of the change under review.", + ); + return 1; + } + writeFileSync(outputPath, expected, "utf8"); + console.log(`[ledger:index] wrote ${OUTPUT_PATH}`); + return 0; +} + +// Windows-safe main-module check (same convention as +// scripts/generate-outstanding-issues-snapshot.mjs): a hand-built `file://` string +// never matches import.meta.url on Windows, so the guard would silently never +// fire. Importing this module for tests must never write the file. +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { + process.exitCode = main(process.argv.slice(2)); +} diff --git a/tests/branch-review-index.test.ts b/tests/branch-review-index.test.ts new file mode 100644 index 0000000000..98814769cc --- /dev/null +++ b/tests/branch-review-index.test.ts @@ -0,0 +1,260 @@ +import { readFileSync } from "node:fs"; +import { describe, expect, it } from "vitest"; + +import { listLedgerRecordPaths } from "../scripts/branch-review-ledger.mjs"; +import { + OUTCOME_LIMIT, + SCOPE_LIMIT, + balanceBackticks, + collectRecords, + renderBranchReviewIndex, + sortRecords, + supersessionKey, + trimUnsafeTail, + truncateCell, +} from "../scripts/generate-branch-review-index.mjs"; + +/** + * These tests pin GENERATOR BEHAVIOUR, never committed bytes. A byte-equality + * assertion against docs/branch-review-index.md would be a drift gate on an + * append-mostly corpus (~27 records a day), which is precisely what + * scripts/check-repo-awareness-snapshot.ts already refuses to do for + * `review_state`. The index is allowed to lag `main`. + */ + +const hash = (seed: string) => seed.repeat(64).slice(0, 64); + +type RecordFixture = { + date: string; + ref: string; + head: string; + scope: string; + outcome: string; + checks: string; + hash: string; +}; + +function record(overrides: Partial = {}) { + const merged: RecordFixture = { + date: "2026-08-20", + ref: "codex/example-branch", + head: hash("a"), + scope: "example scope", + outcome: "approved", + checks: "tests passed", + hash: hash("f"), + ...overrides, + }; + return { ...merged, path: `docs/branch-review-records/${merged.hash}.record.md` }; +} + +const LINK_RE = /branch-review-records\/[0-9a-f]{64}\.record\.md/; + +describe("branch review index rendering", () => { + it("renders deterministically, so regenerating without a corpus change is a no-op diff", () => { + const records = [ + record({ hash: hash("1"), date: "2026-08-20" }), + record({ hash: hash("2"), date: "2026-08-22", ref: "claude/other" }), + ]; + expect(renderBranchReviewIndex(records)).toBe(renderBranchReviewIndex(records)); + }); + + it("emits no wall-clock, hostname or git-SHA freshness stamp", () => { + const markdown = renderBranchReviewIndex([record()]); + // A generation timestamp would make every regeneration a diff and every + // concurrent PR a conflict. + expect(markdown).not.toMatch(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/); + expect(markdown).not.toMatch(/[Gg]enerated (?:at|on)\b/); + expect(markdown).toContain("Date range: `2026-08-20` to `2026-08-20`"); + }); + + it("keeps an escaped pipe escaped, so a re-emitted cell cannot open a phantom column", () => { + const raw = "| 2026-08-20 | codex/x | " + hash("a") + " | Tests 7274 passed \\| 4 skipped (7278) | ok | fine |"; + const [parsed] = collectRecords({ + paths: ["docs/branch-review-records/" + hash("b") + ".record.md"], + read: () => raw, + }); + + // parseLedgerRows splits on CELL_SPLIT, not on a naive "|": six cells, and + // the escape survives into the cell rather than becoming a boundary. + expect(parsed.cells).toHaveLength(6); + expect(parsed.scope).toBe("Tests 7274 passed \\| 4 skipped (7278)"); + + const markdown = renderBranchReviewIndex([parsed]); + expect(markdown).toContain("Tests 7274 passed \\| 4 skipped (7278)"); + // No bare pipe was introduced inside the scope cell. + expect(markdown).not.toContain("Tests 7274 passed | 4 skipped"); + }); + + it("never truncates between a backslash and the pipe it escapes", () => { + // Cut lands exactly on the backslash of `\|`. + const text = "abcdefgh\\| tail"; + expect(truncateCell(text, 9)).toBe("abcdefgh…"); + expect(truncateCell(text, 10)).toBe("abcdefgh\\|…"); + }); + + it("never leaves a dangling lone backslash, including behind trailing whitespace", () => { + expect(truncateCell("abcdefgh\\ zzzz", 10)).toBe("abcdefgh…"); + expect(trimUnsafeTail("abc\\ ")).toBe("abc"); + // An escaped backslash is even and legitimately survives. + expect(trimUnsafeTail("abc\\\\")).toBe("abc\\\\"); + }); + + it("drops an unmatched backtick opened by truncation", () => { + expect(balanceBackticks("a `b` c")).toBe("a `b` c"); + expect(balanceBackticks("a `b` c `d")).toBe("a `b` c"); + expect(truncateCell("outcome `verify:pr-local ran clean and then some more", 14)).toBe("outcome…"); + }); + + it("leaves a cell shorter than the limit untouched", () => { + expect(truncateCell("short", 90)).toBe("short"); + expect(truncateCell(" padded ", 90)).toBe("padded"); + }); + + it("renders hostile ref shapes verbatim instead of throwing or inventing a key", () => { + // Measured shapes in the real corpus: a bare PR number, the placeholder + // "work", and one ref cell holding a whole 72-character sentence. + const sentence = "PR #1889 post-merge verification (supersedes inaccurate PR #1921 record)"; + const records = [ + record({ hash: hash("1"), ref: "2317" }), + record({ hash: hash("2"), ref: "work" }), + record({ hash: hash("3"), ref: sentence }), + record({ hash: hash("4"), ref: "https://github.com/BigSimmo/Database/pull/2023" }), + ]; + const markdown = renderBranchReviewIndex(records); + for (const value of ["2317", "work", sentence, "https://github.com/BigSimmo/Database/pull/2023"]) { + expect(markdown).toContain(`| ${value} |`); + } + // Every hostile ref still yields a usable grouping key rather than "undefined". + for (const entry of records) expect(supersessionKey(entry)).not.toContain("undefined"); + }); + + it("lists a repeated ref/head pair as a chain and leaves singletons out of that section", () => { + const repeated = [ + record({ hash: hash("1"), date: "2026-08-14", ref: "codex/repeat", head: hash("d") }), + record({ hash: hash("2"), date: "2026-08-15", ref: "codex/repeat", head: hash("d") }), + ]; + const singleton = record({ hash: hash("3"), ref: "codex/only-once", head: hash("e") }); + const chains = renderBranchReviewIndex([...repeated, singleton]).split("## Refs reviewed more than once")[1]; + + expect(chains).toContain("codex/repeat"); + expect(chains).not.toContain("codex/only-once"); + // The chain reads oldest -> newest, the order it was written in. + expect(chains.indexOf("2026-08-14")).toBeLessThan(chains.indexOf("2026-08-15")); + }); + + it("does not group a repeated ref reviewed at two different heads", () => { + const chains = renderBranchReviewIndex([ + record({ hash: hash("1"), ref: "codex/repeat", head: hash("d") }), + record({ hash: hash("2"), ref: "codex/repeat", head: hash("e") }), + ]).split("## Refs reviewed more than once")[1]; + expect(chains).toContain("_No ref/head pair carries more than one record._"); + }); + + it("orders by date descending with a record-path tiebreak, not by sort stability", () => { + const older = record({ hash: hash("1"), date: "2026-08-01" }); + const sameDayA = record({ hash: hash("2"), date: "2026-08-20" }); + const sameDayB = record({ hash: hash("3"), date: "2026-08-20" }); + + for (const input of [ + [older, sameDayB, sameDayA], + [sameDayA, older, sameDayB], + [sameDayB, sameDayA, older], + ]) { + expect(sortRecords(input).map((entry) => entry.hash)).toEqual([hash("2"), hash("3"), hash("1")]); + } + }); + + it("links every input record exactly once in the flat table", () => { + const records = ["1", "2", "3", "4"].map((seed, index) => + record({ hash: hash(seed), date: `2026-08-1${index}`, ref: `codex/branch-${index}` }), + ); + const table = renderBranchReviewIndex(records).split("## All records, newest first")[1].split("## Refs")[0]; + for (const entry of records) { + const link = `(branch-review-records/${entry.hash}.record.md)`; + expect(table.split(link)).toHaveLength(2); + expect(link).toMatch(LINK_RE); + } + }); + + it("fails closed on a record file that does not hold exactly one review row", () => { + expect(() => + collectRecords({ paths: ["docs/branch-review-records/x.record.md"], read: () => "# not a table\n" }), + ).toThrow(/expected exactly one review row/); + }); +}); + +describe("branch review index against the committed corpus", () => { + // Coverage guarantee: the index is the only static artifact holding the + // hash-filename -> review-row join, so every record must be reachable from it. + // Deliberately NOT an equality assertion against the committed file — records + // land continuously and that comparison would be a drift gate. + const recordPaths = listLedgerRecordPaths(); + const markdown = renderBranchReviewIndex(collectRecords()); + + it("links every record the ledger reader can see", () => { + expect(recordPaths.length).toBeGreaterThan(0); + const missing = recordPaths.filter((recordPath) => !markdown.includes(`(${recordPath.replace("docs/", "")})`)); + expect(missing).toEqual([]); + }); + + it("emits one flat-table row per record and keeps the table well-formed", () => { + const table = markdown.split("## All records, newest first")[1].split("## Refs reviewed more than once")[0]; + const rows = table.split("\n").filter((line) => line.startsWith("| ") && !/^\| -{3}/.test(line)); + // Header row plus one row per record. + expect(rows).toHaveLength(recordPaths.length + 1); + for (const row of rows) { + // Escape-aware column count: a literal `|` inside a cell is escaped. + expect(row.split(/(? { + expect(markdown).toContain("—"); + }); +}); + +describe("branch review index wiring", () => { + const packageJson = readFileSync("package.json", "utf8"); + + it("regenerates as part of docs:update and exposes an advisory check", () => { + const scripts = JSON.parse(packageJson).scripts as Record; + expect(scripts["docs:update"]).toContain("ledger:index"); + expect(scripts["ledger:index"]).toBe("node scripts/generate-branch-review-index.mjs"); + expect(scripts["ledger:index:check"]).toBe("node scripts/generate-branch-review-index.mjs --check"); + }); + + it("stays out of every verification gate, because the corpus grows daily", () => { + // A drift gate here would go red on main after nearly every merge and would + // conflict between concurrent PRs. + const gated = [ + readFileSync(".github/workflows/ci.yml", "utf8"), + readFileSync("scripts/verify-pr-local.mjs", "utf8"), + readFileSync(".githooks/pre-commit", "utf8"), + JSON.parse(packageJson).scripts["verify:cheap:internal"] as string, + ]; + for (const surface of gated) expect(surface).not.toContain("ledger:index"); + }); + + it("is excluded from Prettier so a one-record append stays a one-line diff", () => { + expect(readFileSync(".prettierignore", "utf8")).toContain("docs/branch-review-index.md"); + }); + + it("is registered as a generated catalog so it cannot mask a stale document", () => { + const staleDocs = readFileSync("scripts/check-stale-docs.mjs", "utf8"); + const catalogs = staleDocs.split("const GENERATED_CATALOGS")[1].split("]);")[0]; + expect(catalogs).toContain("docs/branch-review-index.md"); + }); + + it("emits table cells with single-space padding, not Prettier column padding", () => { + const committed = readFileSync("docs/branch-review-index.md", "utf8"); + const firstRow = committed.split("\n").find((line) => /^\| \d{4}-\d{2}-\d{2} \| /.test(line)); + expect(firstRow).toBeDefined(); + expect(firstRow).not.toMatch(/ {2,}\|/); + }); + + it("keeps the limits the truncation contract is written against", () => { + expect(SCOPE_LIMIT).toBe(90); + expect(OUTCOME_LIMIT).toBe(70); + }); +});