Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
21723ba
feat(mockups): three directions for consolidating the answer-home not…
claude Jul 30, 2026
74978b9
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
9fc75a5
fix(mockups): render the privacy destination as a real Link in every …
claude Jul 30, 2026
30b0050
Merge remote main sync into privacy-link fix
claude Jul 30, 2026
c585300
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
fddfe09
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
e1bf729
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
6ac28d9
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
bf4328f
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
4fca58b
issues: capture the answer-home notice follow-ups and the pr-local bu…
claude Jul 30, 2026
a85c429
Merge branch main syncs into ledger capture
claude Jul 30, 2026
6779eb3
issues: repair the union-merge collision and renumber the captured rows
claude Jul 30, 2026
3cb1ff7
Merge origin/main into the mockups branch
claude Jul 30, 2026
9b4bea1
Merge origin/main into the mockups branch
claude Jul 30, 2026
d84136d
Revert the bundled ledger capture out of this PR
claude Jul 30, 2026
6e760e2
Merge origin/main into the mockups branch
claude Jul 30, 2026
b8db6bf
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
6a999e4
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
0062f82
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
c23a2b6
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
6bb6e86
issues: capture the answer-home notice study's three follow-ups
claude Jul 30, 2026
ac8fce7
Merge origin/main into the mockups branch
claude Jul 30, 2026
20dd3fb
Merge branch 'main' into claude/warning-consolidation-mockups-09jyj7
BigSimmo Jul 30, 2026
3837b91
feat(mockups): six word-only single-line directions for the answer-ho…
claude Jul 30, 2026
97e5a14
Merge branch syncs into the word-only mockups
claude Jul 30, 2026
df879ca
Merge origin/main into the mockups branch
claude Jul 30, 2026
541a518
Merge remote-tracking branch 'origin/main' into codex/repair-pr1437-v5
BigSimmo Jul 30, 2026
6c8dd4b
Merge remote-tracking branch 'origin/main' into codex/repair-pr1437-v5
BigSimmo Jul 30, 2026
73746e9
issues: bring #151 up to date with the second study and the paused PR
claude Jul 30, 2026
4049981
Merge remote branch updates
claude Jul 30, 2026
bdb3448
feat(mockups): draw the proposed answer-home change as a before/after
claude Jul 30, 2026
5df212c
merge(main): sync PR #1437 branch and renumber follow-up issues
cursoragent Jul 31, 2026
d45cf17
fix(mockups): address bugbot P2s on warning studies
cursoragent Jul 31, 2026
5aa3d6c
fix(codex-cloud): judge origin safety from configured remote URL
cursoragent Jul 31, 2026
7b41fcf
fix(mockups): keep pinned APP-5 on recommended concept 01
cursoragent Jul 31, 2026
b02cfc9
docs(ledger): record PR #1437 reopen-prep review at current tip
cursoragent Jul 31, 2026
d3647e7
docs(ledger): supersede PR #1437 reopen-prep row to tip HEAD
cursoragent Jul 31, 2026
c78311d
merge(main): sync PR #1437 and renumber follow-ups to #156–#158
cursoragent Jul 31, 2026
5b2196c
Merge origin/main into the mockups branch
claude Jul 31, 2026
9418104
Merge origin/main into the mockups branch
claude Jul 31, 2026
ed3887a
issues: repair stale id cross-references in the answer-home follow-up…
claude Jul 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 15 additions & 13 deletions docs/branch-review-ledger.md

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion docs/outstanding-issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ removed after current-main verification; it is not missing recommended work.
| 34 | `#163` | A3 | High — frontend/UI | After or with `#162` | 0.5–1.5 days | Redesign `/services?q=` as Progressive Referral Workflow (direction B): H1 = query (not match count), progressive shortlist/compare (no always-on decision panel or giant step rail). Comps in `public/mockups/mode-page-redesign-2026-07/services-search/`. Verify referral shortlist still works; stop before changing Services home ModeHome. |
| 35 | `#164` | A3 | High — frontend/UI | Product confirmed Favourites is hybrid dashboard+search (no ModeHome) | 1–2 days | Redesign Favourites as one dashboard + search page: recommended Search-Led Workspace (direction B) — persistent search, sets as chips, Continue + recent + table on empty query, in-place filter on typed query. Comps in `public/mockups/mode-page-redesign-2026-07/favourites-hybrid/`. Do not reintroduce ModeHome for Favourites. Verify desktop+phone; stop before splitting into separate ModeHome routes. |

<!-- issues:next-id=165 -->
<!-- issues:next-id=168 -->

## Open items

Expand Down Expand Up @@ -145,6 +145,9 @@ removed after current-main verification; it is not missing recommended work.
| #162 | P2 | task | Redesign Tools search results state (Compact Results Instrument) | **Outcome:** `/tools?q=` is a committed results page: query-as-H1, one composer, dense tool rows; cross-mode demoted; no home hero / green filter banner / dual H1. **Product pick:** direction A from comps in `public/mockups/mode-page-redesign-2026-07/tools-search/`. **Next:** implement A on production Tools search; verify desktop+phone chrome ownership. **Stop:** do not redesign Tools home in the same PR unless asked. Renumbered after `main` took `#161` for mockup hover-token residue. | session 2026-07-31 mode-page design audit | 2026-07-31 |
| #163 | P2 | task | Redesign Services search results (Progressive Referral Workflow) | **Outcome:** `/services?q=` uses query-as-H1 (not match-count), progressive shortlist/compare, no always-on decision panel or giant step rail. **Product pick:** direction B from comps in `public/mockups/mode-page-redesign-2026-07/services-search/`. **Next:** implement B; keep referral shortlist behaviour. **Stop:** do not change Services ModeHome in the same PR. | session 2026-07-31 mode-page design audit | 2026-07-31 |
| #164 | P2 | task | Redesign Favourites as hybrid dashboard + search (no ModeHome) | **Outcome:** `/favourites` is one dashboard+search workspace; empty query shows Continue/recent/sets/table; typed query filters in place; no ModeHome hero. **Product pick:** Search-Led Workspace (direction B) from comps in `public/mockups/mode-page-redesign-2026-07/favourites-hybrid/`. User rejected ModeHome for Favourites. **Next:** implement B; retire command-library marketing H1 and redundant dual search. **Stop:** do not reintroduce ModeHome or a separate Favourites home route. | session 2026-07-31 mode-page design audit; user Favourites hybrid decision | 2026-07-31 |
| #165 | P2 | task | Adopt a consolidated answer-home notice block — the studies exist, nothing adopts them | **Outcome:** the answer hero states its safety obligation, its scope, and its verification requirement as one block in one voice. **Detail:** `/mockups/warning-consolidation` (PR #1437) diagnoses today's three stacked notices — the APP-5 privacy warning at 11px muted, a bare `/privacy` link, and an accent-blue `ShieldCheck` capability claim at 14px semibold — and shows the hierarchy is inverted: the least important line is the loudest, and two shields with opposite meanings sit ~40px apart. Three consolidations are drawn at 1440px and 390px. Recommended: **02 Safety card** on the hero (obligation on a warning-tinted top row, everything descriptive in one grey voice below) and **01 Assurance bar** on the docked composer — the same content model at two densities, so one component with a `density` prop covers both. **This is a governance change, not just a design one:** `PrivacyInputNotice` is the single site-wide APP-5 line and renders on the answer, documents and calculators composers, so all three move together; `tests/privacy-ui.test.ts`, `tests/ui-accessibility.spec.ts` and the phone-chrome reserve coverage all assert against the current markup and must change in the same commit; and the PR will need a full `## Clinical Governance Preflight` (the mockup PR correctly did not). **Third study (before/after):** `/mockups/answer-home-proposal` draws the concrete D-direction proposal as a full hero before/after rather than an isolated notice. **Second study (words only):** `/mockups/warning-line` answers a narrower brief — no icon, border, tint or background, one line where width allows. Six variants A-F; line counts measured from the rendered DOM, not asserted. Only B (middot clauses), D (obligation + verify) and F (compressed obligation) hold one line at desktop width, and **none fit one line on a 390px phone while the pinned APP-5 sentence stays verbatim** — 46 characters of obligation plus the 27-character link exceeds the ~60 available at 11px. Recommended there: **D**, the only compliant variant that is both one line and keeps weight-only hierarchy, reached by dropping the scope claim (a capability statement already visible on the answer itself). F fits best but rewrites the pinned obligation to \|No patient-identifiable information.\| and so needs the same privacy sign-off as `#166` plus a matching `tests/privacy-ui.test.ts` update. **Status:** PR #1437 was closed unmerged on 2026-07-30 as a deliberate pause during an owner-authorized ordered merge sweep, to be reopened at its queued place; branch `claude/warning-consolidation-mockups-09jyj7` is preserved and merged onto current `main`; these follow-up rows have been renumbered on each sync because `main` kept claiming the next ids while the PR was paused; the superseded numbers are deliberately not listed, since they now belong to unrelated rows. **Next:** decide block (02 + 01) versus line (D) direction, get wording sign-off for `#166`, then implement behind one component and run `verify:phone-chrome` before `verify:ui`. | session 2026-07-30; PR #1437; `/mockups/warning-consolidation`; `/mockups/warning-line` | 2026-07-30 |
| #166 | P2 | issue | Answer mode ships no verify-before-use caveat; every other clinical mode does | **Outcome:** the surface that actually generates prose from retrieved sources says so, and says it must be checked. **Detail:** differentials carry "Clinical decision support only. Review before use.", prescribing carries "Confirm against source", specifiers carry a confirm-the-manual line, and calculators carry "Scores support clinical judgement — they never replace a full assessment." The answer hero carries neither an equivalent nor anything about generation: only the APP-5 privacy line and "Searches indexed clinical sources", which reads as assurance rather than caution. `CLAUDE.md` calls this repo a clinical reference prototype and explicitly **not** validated clinical decision support, so the one mode that synthesises text is the one most needing the caveat. Proposed wording, matching the registers above rather than opening a new one: "Answers are AI-generated — verify against the cited source before clinical use." **Independent of `#165`:** even keeping today's three-notice layout, the missing sentence is the gap. **Next:** clinical-governance sign-off on the exact wording, then add it to the answer hero (bundled with `#165` if that lands first). | session 2026-07-30; PR #1437; `src/components/clinical-dashboard/answer-status.tsx` | 2026-07-30 |
| #167 | P2 | issue | `verify:pr-local` exits 0 when its own build step refuses to run | **Outcome:** the PR-local gate cannot report success for a step that never executed. **Detail:** on 2026-07-30 `npm run verify:pr-local` selected the conditional production build for a UI diff; `scripts/guard-next-build.mjs` printed `Refusing to run next build while Clinical KB dev server is running. Stop the dev server first, or set ALLOW_BUILD_WITH_DEV_SERVER=1` — and the aggregate still exited **0**, so the run reported green with the build never run. Caught only by reading the tail of the log; `npm run build` was then re-run separately with the server stopped and passed. Same family as `#120` (`verify:phone-chrome` exits 0 while reporting failed browser tests) and exactly the trap `AGENTS.md` names — "exit code 0 alone is not proof". The guard itself is correct and protects the dev cache; what is wrong is the aggregate treating a refusal as a pass. **Next:** make the refusal exit non-zero, or have `verify:pr-local` list skipped-but-selected steps in its closing summary so a green exit cannot be misread as a build. | session 2026-07-30; PR #1437; `scripts/guard-next-build.mjs` | 2026-07-30 |

## Resolved / archive

Expand Down
3 changes: 3 additions & 0 deletions docs/site-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -981,6 +981,7 @@ This file is generated by `npm run docs:update` (or `npm run sitemap:update` dir
## Mockup/prototype routes

- `/mockups/answer-evidence-popups` - Route discovered from app directory Source: `src/app/mockups/answer-evidence-popups/page.tsx`.
- `/mockups/answer-home-proposal` - Route discovered from app directory Source: `src/app/mockups/answer-home-proposal/page.tsx`.
- `/mockups/calculators-bedside-sheet` - Route discovered from app directory Source: `src/app/mockups/calculators-bedside-sheet/page.tsx`.
- `/mockups/calculators-clinical-console` - Route discovered from app directory Source: `src/app/mockups/calculators-clinical-console/page.tsx`.
- `/mockups/calculators-directory-grid` - Route discovered from app directory Source: `src/app/mockups/calculators-directory-grid/page.tsx`.
Expand Down Expand Up @@ -1036,6 +1037,8 @@ This file is generated by `npm run docs:update` (or `npm run sitemap:update` dir
- `/mockups/tools-workflow-board` - Route discovered from app directory Source: `src/app/mockups/tools-workflow-board/page.tsx`.
- `/mockups/universal-search-command` - Route discovered from app directory Source: `src/app/mockups/universal-search-command/page.tsx`.
- `/mockups/universal-search-redesign` - Route discovered from app directory Source: `src/app/mockups/universal-search-redesign/page.tsx`.
- `/mockups/warning-consolidation` - Route discovered from app directory Source: `src/app/mockups/warning-consolidation/page.tsx`.
- `/mockups/warning-line` - Route discovered from app directory Source: `src/app/mockups/warning-line/page.tsx`.

## Public utility route handlers

Expand Down
5 changes: 5 additions & 0 deletions src/app/mockups/answer-home-proposal/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { AnswerHomeProposalMockupsPage } from "@/components/answer-home-proposal-mockups";

export default function AnswerHomeProposalMockupRoute() {
return <AnswerHomeProposalMockupsPage />;
}
16 changes: 14 additions & 2 deletions src/app/mockups/mockups-layout-client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
// them would read as a third, real band competing with the two on offer.
const isSearchBandDirectionsMockup = pathname === "/mockups/search-band-directions";
const isPhoneInPageNavigationMockup = pathname === "/mockups/phone-inpage-navigation";
// Draws its own composer in every frame, and the notice under study is the one
// the shared composer renders — showing both would put two different privacy
// lines on screen at once.
const isWarningConsolidationMockup = pathname === "/mockups/warning-consolidation";
const isWarningLineMockup = pathname === "/mockups/warning-line";
const isAnswerHomeProposalMockup = pathname === "/mockups/answer-home-proposal";
// These studies render their own top bar and composer inside each device
// frame. Suppress shared chrome so it cannot be mistaken for the concept.
const isTherapyNavigationMockup = pathname.startsWith("/mockups/therapy-navigation-");
Expand Down Expand Up @@ -67,15 +73,21 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
!isCalculatorsSearchPageMockup &&
!isPhoneInPageNavigationMockup &&
!isSearchBandDirectionsMockup &&
!isTherapyNavigationMockup
!isTherapyNavigationMockup &&
!isWarningConsolidationMockup &&
!isWarningLineMockup &&
!isAnswerHomeProposalMockup
}
chromeVisible={
!isSourceOverlayRedesignMockup &&
!isSearchHeadingMockup &&
!isSearchRefineAdaptiveMockup &&
!isSearchBandDirectionsMockup &&
!isPhoneInPageNavigationMockup &&
!isTherapyNavigationMockup
!isTherapyNavigationMockup &&
!isWarningConsolidationMockup &&
!isWarningLineMockup &&
!isAnswerHomeProposalMockup
}
>
{children}
Expand Down
5 changes: 5 additions & 0 deletions src/app/mockups/warning-consolidation/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { WarningConsolidationMockupsPage } from "@/components/warning-consolidation-mockups";

export default function WarningConsolidationMockupRoute() {
return <WarningConsolidationMockupsPage />;
}
5 changes: 5 additions & 0 deletions src/app/mockups/warning-line/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { WarningLineMockupsPage } from "@/components/warning-line-mockups";

export default function WarningLineMockupRoute() {
return <WarningLineMockupsPage />;
}
Loading
Loading