Skip to content

feat(mockups): two studies for consolidating the answer-home notices - #1437

Merged
BigSimmo merged 41 commits into
mainfrom
claude/warning-consolidation-mockups-09jyj7
Jul 31, 2026
Merged

feat(mockups): two studies for consolidating the answer-home notices#1437
BigSimmo merged 41 commits into
mainfrom
claude/warning-consolidation-mockups-09jyj7

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Summary

Two design-scratch studies of the same problem: the answer-mode hero stacks three notices below the composer — the APP-5 privacy warning (11px muted), a bare /privacy link, and the accent-blue scope footer (14px semibold) — in three type sizes with two opposing shield icons (ShieldAlert amber vs ShieldCheck blue, ~40px apart). The least important of the three, the capability claim, is visually the loudest. Nothing on the screen says the answer is generated and must be checked.

  • /mockups/warning-consolidation — first pass, "one block instead of three." Three consolidations at desktop 1440 and phone 390, beside the current stack for comparison: 01 Assurance bar (one row, descriptive half behind a Details disclosure, wraps rather than clipping so a safety line is never truncated), 02 Safety card (two tiers — obligation on a warning-tinted top row, everything descriptive in one grey voice below; single shield metaphor), and 03 Quiet footnote (one centred grey sentence with an inline expander). Recommendation: 02 on the hero, 01 on the docked composer — the same content model at two densities, so one component with a density prop covers both.
  • /mockups/warning-line — second pass, "words only, one line." No icon, no border, no tint, no background. Six variants A–F, each a single paragraph under the composer. Line counts are 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 do on a 390px phone while the pinned APP-5 sentence stays verbatim. Recommendation: D — the only compliant variant that is both one line and keeps hierarchy, achieved by dropping the scope claim, which is a capability statement already visible on the answer itself.
  • Adds the statement both studies found missing: "Answers are AI-generated — verify against the cited source before clinical use." Other modes carry an equivalent ("Clinical decision support only. Review before use.", "Confirm against source"); answer mode carries none.
  • Suppresses the shared mockup chrome and composer on both routes (mockups-layout-client.tsx), since each study draws its own composer and the notice under study is the one the shared composer renders.
  • Regenerates docs/site-map.md for the two new routes.
  • Bundled, separately revertible: records the follow-ups in docs/outstanding-issues.md#151 (adopt a consolidated notice block), #152 (answer mode ships no verify-before-use caveat, which stands independently of any redesign) and #153 (verify:pr-local exits 0 when its own build step refuses to run).

The two pinned governance strings — Do not enter patient-identifiable information. and the Privacy and data processing link to /privacy — are reproduced verbatim in every concept except F, which shortens the obligation to show what a single phone line would actually cost and is labelled on the page as requiring governance sign-off rather than presented as freely available. Both studies state the constraint on their face so a later reader cannot mistake it for a design preference.

No production surface changes. Mockups 404 in production (mockupsEnabled()), and classifyPullRequestFiles returns clinicalRisk: false, operationalRisk: false, ragRanking: false, ui: true for this diff.

Verification

  • npm run verify:pr-local — 434 test files / 4563 passed, 4 skipped. Its conditional build step self-skipped on the first run (Refusing to run next build while Clinical KB dev server is running), so npm run build was re-run separately with the dev server stopped: build completed and Client bundle secret surface check passed. That silent self-skip is now tracked as #153.
  • npm run lint (--max-warnings 0) and npm run typecheck — clean, exit 0
  • npm run sitemap:check — clean after sitemap:update
  • tests/route-reachability.test.ts — 5 passed
  • npm run check:outstanding-issues151 rows (58 open, 93 archived), unique ids, next-id=154 above the highest, no ids deleted from base
  • npx prettier --check .All matched files use Prettier code style!
  • Both routes rendered in Chromium at 1440px and 390px: HTTP 200, zero console or page errors. Three defects were found and fixed this way — concept 01 was clipping its own safety text, the privacy link was breaking mid-phrase in concept 02, and the second study's own header claimed all six variants fit one line when measurement showed only three do.
  • The one Codex review finding (P2 — the privacy label was an inert <span>) is fixed and the thread resolved: every instance now renders <Link href="/privacy">, verified in Chromium as focusable a[href="/privacy"] anchors, up from zero.

UI verification not run: npm run verify:ui covers production journeys, and this diff adds only design-scratch routes that 404 in production and touches no shipped component. Direct browser rendering at both breakpoints is the proof above.

Red checks seen on this PR, none caused by the diff:

  • Static PR checks hit its timeout-minutes: 20 mid-typecheck on bf4328f. A timed-out job reports as cancelled, so the aggregate emitted its stock "superseded" message even though no newer push existed. Identical content cleared static-pr in 2m 27s earlier the same day.
  • One ui-phone-scroll phone-chrome test failed once on 9b4bea1 with 120 others passing; it passed locally against a production build in 7.4s and passed again on the next CI run with no code change. Not quarantined — repo policy needs three reproductions on one SHA.
  • Repeated PR required cancellations from branch syncs cancelling near-complete runs (main's own #145), and four docs/outstanding-issues.md id collisions as main claimed #141#150 across one day (#133). Each collision was resolved by renumbering the incoming rows per the ledger's own rule, never by taking one side wholesale; main's row ids were verified present after every resolution.

Risk and rollout

  • Risk: None to production behaviour — the only non-mockup files changed are a generated doc (docs/site-map.md), append-only ledger rows, and two route-specific branches in the mockup layout client.
  • Rollback: revert the commits; no data, schema, or config migration involved.
  • Provider or production effects: None.

Clinical Governance Preflight

Not applicable to this diff, and deliberately not half-filled: nothing here reaches ingestion, answer generation, search/ranking, source rendering, document access, privacy behaviour, production env, or clinical output. Both studies reproduce governance copy as static text in routes that 404 in production.

That preflight does become required for the follow-up that adopts any concept (#151), and that follow-up is a governance change as much as a design one:

  • PrivacyInputNotice is the single site-wide APP-5 line and renders on the answer, documents, and calculators composers — consolidating it changes all three.
  • The added verification sentence is new clinical-safety copy and needs governance sign-off on the wording, not just design review (#152).
  • Variant F additionally rewrites the pinned APP-5 obligation, which would require updating tests/privacy-ui.test.ts alongside a privacy decision.
  • tests/privacy-ui.test.ts, tests/ui-accessibility.spec.ts, and the phone-chrome reserve coverage all assert against the current markup and would need updating together.

Notes

  • The two studies answer different briefs and are both kept rather than one superseding the other: the first asks what a consolidated block should look like, the second what a consolidated line should look like. If the line direction wins, the first study's diagnosis section still stands as the rationale.

Summary by CodeRabbit

  • New Features

    • Added mockup pages for answer-home proposals, warning consolidation, and warning-line concepts.
    • Added responsive phone and desktop previews with interactive notice examples, annotations, trade-offs, and recommendations.
    • Added dedicated routes for the new mockups and included them in the site map.
    • New mockups present consolidated privacy, verification, and clinical-safety messaging options.
  • Documentation

    • Updated review records and outstanding-issue tracking.
    • Added three newly identified open items and updated the next available issue ID.

…ices

The answer-mode hero stacks three separate notices under the composer — the
APP-5 privacy warning, a bare /privacy link, and the accent-blue scope footer —
in three type sizes, two colours and two opposing shield icons, and never says
the generated answer needs checking.

Adds /mockups/warning-consolidation: a design-scratch study that diagnoses the
current stack, adds the missing fourth statement ("Answers are AI-generated —
verify against the cited source before clinical use.") at the bottom of each
concept, and presents three consolidations at desktop and phone widths:

  01 Assurance bar   one row, descriptive half behind a Details disclosure
  02 Safety card     two tiers, obligation on a warning-tinted top row
  03 Quiet footnote  one grey sentence with an inline expander

The pinned governance strings ("Do not enter patient-identifiable
information." and the "Privacy and data processing" link to /privacy) are
reproduced verbatim in every concept; only their styling and grouping change.

No production surface is touched — mockups 404 in production.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 40 minutes

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f58accac-853d-4c19-9374-e0b824bfcd29

📥 Commits

Reviewing files that changed from the base of the PR and between 9418104 and ed3887a.

📒 Files selected for processing (1)
  • docs/outstanding-issues.md
📝 Walkthrough

Walkthrough

Added three mockup routes for answer-home and warning-notice proposals. Added route-specific chrome suppression, responsive mockup pages, governance notes, sitemap entries, and related issue and review ledger records.

Changes

Mockup route and tracking integration

Layer / File(s) Summary
Tracking and route inventory
docs/branch-review-ledger.md, docs/outstanding-issues.md, docs/site-map.md
Recorded review activity, added outstanding issues, advanced the issue ID marker, and listed the three new mockup routes.
Mockup route wiring
src/app/mockups/..., src/app/mockups/mockups-layout-client.tsx
Added route components and hid shared search and chrome for the new mockup pages.

Answer-home proposal

Layer / File(s) Summary
Answer-home proposal mockup
src/components/answer-home-proposal-mockups.tsx
Added responsive before-and-after panels, consolidated footer notices, subtitle changes, six proposal notes, and governance sign-off markers.

Warning concepts

Layer / File(s) Summary
Warning-consolidation concepts
src/components/warning-consolidation-mockups.tsx
Added three notice concepts with responsive previews, expandable details, governance notes, recommendations, and rollout constraints.
Warning-line concepts
src/components/warning-line-mockups.tsx
Added six warning compositions with line counts, trade-offs, governance status, responsive previews, and a toggleable stack example.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Browser
  participant MockupsLayoutClient
  participant MockupRoute
  participant MockupPage
  Browser->>MockupsLayoutClient: Open mockup route
  MockupsLayoutClient->>MockupsLayoutClient: Detect route and suppress shared UI
  MockupsLayoutClient->>MockupRoute: Render route component
  MockupRoute->>MockupPage: Render responsive mockup
Loading

Possibly related PRs

Suggested reviewers: claude

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the two mockup studies and their purpose of consolidating answer-home notices.
Description check ✅ Passed The description covers the required summary, verification, risk, rollback, production effects, governance status, and implementation notes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands.

@BigSimmo
BigSimmo marked this pull request as ready for review July 30, 2026 10:59

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 74978b94db

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/components/warning-consolidation-mockups.tsx Outdated
@BigSimmo

Copy link
Copy Markdown
Owner Author

@codex resolve actionable Codex review findings for this pull request and current head using the repository instructions. This is the pull request's single automatic repair pass: do not perform a fresh review, create new standalone findings, or request another review. Work only the existing unresolved Codex threads on the current head. Always fix P0 and P1 findings. For P2 and lower findings, fix only clear, scoped, low-risk issues; otherwise disposition them with a concise reason. After fixing or dispositioning a thread, reply in that thread with as the first line, followed by a concise summary; that marker authorizes the workflow to close that exact thread. If human input or new authorization is required, do not use the marker and leave the thread open with the blocker. Finish only after every actionable thread is fixed or dispositioned and closed, or explicitly left open for a human decision. Do not update the branch from main, address unrelated reviews, broaden scope, or create more than one scoped fix commit. Do not use external APIs, paid services, credentials, dependency changes, or broad refactors unless explicitly authorized. Add targeted tests where behavior changes and run the narrowest relevant validation.

claude added 2 commits July 30, 2026 11:06
…concept

Codex review (P2) on #1437: the "Privacy and data processing" label was a
styled <span> in all three concepts and in the today's-stack baseline, so a
static render of the page produced the label five times and zero /privacy
hrefs. The page claims on its face that the pinned APP-5 link is preserved,
which made that claim unevidenced — and the focus-ring classes on an inert
span did nothing, so the link was not keyboard-reachable either.

Renders each one with Next's <Link href="/privacy">, per the internal-
navigation convention in AGENTS.md. Verified in Chromium: six a[href="/privacy"]
anchors with the disclosures open (was zero), each carrying the verbatim label,
and .focus() lands on the recommended concept's link.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 👍

Reviewed commit: 74978b94db

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@BigSimmo
BigSimmo enabled auto-merge (squash) July 30, 2026 13:06
BigSimmo and others added 3 commits July 30, 2026 21:15
…ild-skip gate gap

Records three items that surfaced during the /mockups/warning-consolidation
study (PR #1437) and were not tracked anywhere:

  #141 P2 task  — adopt a consolidated answer-home notice block; the study
                  landed but nothing adopts it, and adoption moves the single
                  site-wide APP-5 line across three composers
  #142 P2 issue — answer mode ships no verify-before-use caveat while every
                  other clinical mode does
  #143 P2 issue — verify:pr-local exits 0 when guard-next-build refuses to run,
                  reporting green with the build never executed

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
@BigSimmo
BigSimmo disabled auto-merge July 30, 2026 14:12
claude added 6 commits July 30, 2026 14:13
The merge of origin into this branch hit exactly the damage #133/#140
describe: merge=union concatenated both sides of the ledger rather than
merging it.

Two collisions, both repaired without dropping either side's rows:

  - Another agent had already allocated #141-#144 on main for different
    items while this branch used #141-#143. The incoming rows renumber, per
    the ledger rule, so the capture becomes #145 (adopt a consolidated
    answer-home notice block), #146 (answer mode ships no verify-before-use
    caveat) and #147 (verify:pr-local exits 0 when its build step refuses to
    run). Their cross-references were updated to match, and the two
    duplicated next-id markers collapse to one at 148.
  - #140 appeared in both tables: it was closed on main as a duplicate of
    #133 (PR #1444) while this branch still carried it open. The resolution
    is honoured — the stale open row goes, the archive row stays.

check:outstanding-issues: 145 rows (72 open, 73 archived), unique ids,
next-id=148 above the highest, no merge driver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
Resolves the one conflicted file, docs/outstanding-issues.md. With
merge=union removed by #1444 the ledger now conflicts honestly instead of
silently doubling, so this is a real resolution rather than a repair.

main had allocated #145 for "a branch sync during in-flight CI cancels a
near-complete run" while this branch used #145-#147 for the answer-home
notice capture. Per the ledger's own rule the incoming rows renumber: main's
#141-#145 are kept verbatim and the capture becomes #146 (adopt a
consolidated answer-home notice block), #147 (answer mode ships no
verify-before-use caveat) and #148 (verify:pr-local exits 0 when its build
step refuses to run), with their cross-references updated to match and the
marker lifted to 149. No row was dropped from either side — main's #141-#145
each appear exactly once, verified against origin/main.

check:outstanding-issues: 146 rows (73 open, 73 archived), unique ids,
next-id=149 above the highest, no merge driver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
Third ledger collision in a row, same shape as the last two: main allocated
#146 for the `ui-phone-scroll` Services anchor issue while this branch used
#146-#148 for the answer-home notice capture. Main's row is kept and the
incoming rows renumber to #147 (adopt a consolidated answer-home notice
block), #148 (answer mode ships no verify-before-use caveat) and #149
(verify:pr-local exits 0 when its build step refuses to run), with their
cross-references and the marker (150) following.

Verified against origin/main that #141-#146 each still appear exactly once;
nothing was taken wholesale from either side.

check:outstanding-issues: 147 rows (74 open, 73 archived), unique ids,
next-id=150 above the highest, no merge driver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
The three captured rows are dropped from docs/outstanding-issues.md, leaving
it byte-identical to origin/main. They will be re-landed as their own
single-file change once this PR merges.

AGENTS.md recommends bundling append-only ledger rows because they are
normally zero-risk, but that assumes a quiet file. Right now it is the
hottest file in the repo: bundling them here cost three ID collisions and
three full CI restarts in about thirty minutes (main took #141-#144, then
#145, then #146, while this branch needed #145-#149 in turn). #133 already
records that this file conflicts on nearly every main advance.

The mockups diff itself touches four uncontended files and has not conflicted
once today, so removing the ledger rows takes this PR out of a race it has no
reason to be in. No content is lost: the row text is preserved verbatim and
re-applied against a fresh main with clean ids.

check:outstanding-issues: 144 rows (70 open, 74 archived), unique ids,
next-id=147 above the highest, no merge driver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
@BigSimmo
BigSimmo enabled auto-merge (squash) July 30, 2026 15:06
@BigSimmo
BigSimmo disabled auto-merge July 30, 2026 15:21
@BigSimmo
BigSimmo enabled auto-merge (squash) July 30, 2026 19:04
@BigSimmo BigSimmo added the skip-branch-sync Opt out of hosted pr-branch-sync / update-branch on this PR label Jul 30, 2026
@BigSimmo BigSimmo changed the title feat(mockups): three directions for consolidating the answer-home notices feat(mockups): two studies for consolidating the answer-home notices Jul 30, 2026
@BigSimmo

Copy link
Copy Markdown
Owner Author

Temporarily paused during the owner-authorized ordered merge sweep so main cannot move between exact-head review and merge. The branch and all commits are preserved; this PR will be reopened at its verified place in the queue.

@BigSimmo BigSimmo closed this Jul 30, 2026
BigSimmo and others added 4 commits July 31, 2026 06:18
#151 was written before the word-only pass existed, so it referenced only
/mockups/warning-consolidation and recommended 02 + 01. A memory row that
lags the work is the failure mode this ledger exists to prevent, so it now
also records:

  - /mockups/warning-line, the words-only study (six variants A-F), with the
    line counts measured from the rendered DOM rather than asserted
  - the constraint that matters: nothing fits one line on a 390px phone while
    the pinned APP-5 sentence stays verbatim, because 45 characters of
    obligation plus the 27-character link exceeds the ~60 available at 11px
  - D as that study's recommendation, and why F fits better but needs the
    same privacy sign-off as #152 plus a tests/privacy-ui.test.ts update
  - that PR #1437 was closed unmerged as a deliberate pause during an
    owner-authorized ordered merge sweep, with the branch preserved

Evidence and the original diagnosis are left intact; this extends the Detail
and Next rather than rewriting the row.

check:outstanding-issues: 151 rows (53 open, 98 archived), unique ids,
next-id=154 above the highest, no ids deleted from base db50738.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
Adds /mockups/answer-home-proposal, the concrete proposal that came out of
the two exploratory studies. Drawn as before/after of the whole hero at phone
390 and desktop 1440, not of the notice alone, because the change moves
information between two places rather than only deleting a line.

Six changes, each with its rationale on the page:

  1. Remove the "Searches indexed clinical sources · Clinical Guide library"
     badge — accent-blue semibold 14px, the loudest element on the screen,
     and a capability claim rather than a safety statement.
  2. Remove the ShieldCheck. A shield-and-tick reads as "verified", which is
     exactly what the PT-06 comment above ModeHomeVerificationFooter in
     answer-status.tsx forbids the pre-query copy from asserting. The wording
     obeys that comment; the icon undoes it. It also sat ~40px from a
     ShieldAlert carrying the opposite meaning.
  3. Move "Clinical Guide library" into the existing subtitle, keeping the one
     genuinely useful fact without a second voice. Ordinary product copy
     (ui-copy.ts answerEmptyState.subheading), not pinned by any test.
  4. Remove the ShieldAlert; hierarchy comes from weight instead.
  5. Join the privacy link to the same line — it previously wrapped alone with
     no lead-in and read as navigation.
  6. Add "Verify answers against the cited source." — labelled on the page as
     needing governance sign-off, per #152.

Measured on the rendered page rather than asserted: the proposed notice is one
line at desktop width and two at 390px, because the pinned 45-character
obligation plus the 27-character link exceeds the ~60 characters available at
11px. The phone subtitle also gains a line where the footer loses two.

Both pinned strings appear verbatim on both sides. No production surface
changes; mockups 404 in production.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
@BigSimmo

Copy link
Copy Markdown
Owner Author

@cursoragent this PR will be re-opened soon. Please resolve any failing CI, run bugbot and resolve any bugbot comments against current repo and fix any merge conflicts and also fix any errors and address and fix all comments or suggestions that are likely to improve the PR and Codebase. Please implement smallest required fix according to best code practices. Check your work. Leave this PR closed for now but still make all these changes and run the review. I want it ready to go for when I re-open it.

@cursor

cursor Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

PR #1437 is ready to reopen and left CLOSED.

Done

  • Merged origin/main; only conflict was docs/outstanding-issues.md
  • Renumbered this PR’s follow-ups to #155 / #156 / #157 (next-id=158); kept main’s #151#154
  • git merge-tree vs main: clean; branch tip d3647e71 is 0 behind / 37 ahead
  • Bugbot/review P2s fixed: warning-line “today” /privacy Link; F line-count claim; study-1 governance honesty; recommended concept 01 keeps pinned APP-5 on-bar
  • Codex Cloud origin false-positive fixed (git config --get remote.origin.url vs rewritten get-url)
  • npm run verify:pr-local: 444 files / 4646 passed, build + client-bundle check + offline RAG green

Left as-is

  • PR stays CLOSED (as requested)
  • Closed PR metadata still shows frozen head 541a5185 — remote branch tip is d3647e71. On reopen, confirm GitHub attaches the current branch tip
  • Could not edit the PR body or post Bugbot comments (403 for this integration). On reopen, update the body: follow-ups are #155#157, and include /mockups/answer-home-proposal
  • Prior Codex privacy-Link thread remains resolved; no open review threads

On reopen

  1. Reopen PR feat(mockups): two studies for consolidating the answer-home notices #1437
  2. Confirm head = claude/warning-consolidation-mockups-09jyj7 tip
  3. Refresh PR body issue IDs if GitHub still shows the old text
  4. Let CI / Bugbot run against the new tip
Open in Web Open in Cursor 

cursoragent and others added 7 commits July 31, 2026 00:17
Merge origin/main into claude/warning-consolidation-mockups-09jyj7.
Resolve docs/outstanding-issues.md by keeping main's #151#154 and
renumbering this PR's follow-ups to #155#157 (next-id=158), matching
the ledger's collision rule rather than taking one side wholesale.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Make the warning-line "today" privacy label a real /privacy Link, align
concept F's pitch with its measured two-line phone result, and correct
study-1 governance copy so 01/03 paraphrases are labelled as sign-off
gated rather than claimed verbatim.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
`git remote get-url` applies global url.*.insteadOf rewrites, so Cursor
Cloud sandboxes that inject a tokenized fetch URL made a clean
remote.origin.url look credential-bearing and failed origin repair.
Inspect `git config --get remote.origin.url` instead, and cover the
insteadOf false-positive in the unit suite.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Stop paraphrasing the obligation in AssuranceBar compact density so the
recommended dock path stays governance-safe, and tighten study-1 copy /
#155 to match (char count, third study, title tense).

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Merge origin/main (1 commit: concurrency-hazards #155). Keep main's
shared #155 row and move this PR's intentional follow-ups to #156#158
with next-id=159 so the outstanding-issues collision resolves without
dropping either side's notes.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
@BigSimmo BigSimmo reopened this Jul 31, 2026
@supabase

supabase Bot commented Jul 31, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project sjrfecxgysukkwxsowpy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@BigSimmo
BigSimmo enabled auto-merge July 31, 2026 06:11
@BigSimmo
BigSimmo disabled auto-merge July 31, 2026 06:11
claude added 2 commits July 31, 2026 06:13
Three conflicts, resolved by evidence rather than by side-preference.

scripts/ensure-codex-cloud-git-remote.mjs and tests/codex-cloud-setup.test.ts:
took main's version. The branch carried its own fix for the same defect
(5aa3d6c, judging origin safety from the configured remote URL) on top of
main's #1497, so neither side was obviously newer. main's version introduces a
configuredOriginUrl() helper, already covers the url.*.insteadOf case the
branch's extra test was written for, and passes 12/12 locally — verified
before choosing, since taking a side wholesale is only safe when the other
side's content is genuinely subsumed. This also clears the two
codex-cloud-setup failures this branch has carried all session.

docs/outstanding-issues.md: fifth id collision on this branch. main has since
claimed #151-#153 — the exact ids these rows previously held — and now runs to
#164. main's rows are kept and the follow-ups renumber to #165 (adopt a
consolidated answer-home notice block), #166 (answer mode ships no
verify-before-use caveat) and #167 (verify:pr-local exits 0 when its build
step refuses to run), with their three cross-references and the marker (168)
following.

check:outstanding-issues: 165 rows (50 open, 115 archived), unique ids,
next-id=168 above the highest, no ids deleted from base 23465d5.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
Sixth conflict on this branch, and the first that is not the issues ledger:
main added a search-band-directions mockup to the same chrome-suppression
predicates in mockups-layout-client.tsx that this branch extends.

Resolved as a union — main's isSearchBandDirectionsMockup alongside this
branch's isWarningConsolidationMockup, isWarningLineMockup and
isAnswerHomeProposalMockup. Dropping either side would silently restore the
shared composer over a study that draws its own, which is the failure these
flags exist to prevent. Verified all four are declared once and referenced in
both the searchComposerVisible and chromeVisible predicates.

The ledger merged cleanly this time: main's marker is still 165, so the
#165-#167 renumber from the previous merge still sits above it.

check:outstanding-issues: 165 rows (50 open, 115 archived), unique ids,
next-id=168 above the highest, no ids deleted from base f6f4833.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/components/warning-line-mockups.tsx (1)

19-20: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider a single shared source for the pinned governance strings.

OBLIGATION and PRIVACY_LINK are declared independently in this file, in warning-consolidation-mockups.tsx, and in answer-home-proposal-mockups.tsx. All three copies must stay byte-identical to the text pinned by tests/privacy-ui.test.ts. Extracting them to one shared module (for example next to src/lib/ui-copy.ts, already referenced in these files' comments) would remove the risk of one copy drifting from the pinned wording while the others do not.

♻️ Proposed shared-constants extraction
// src/lib/warning-notice-copy.ts
export const PINNED_OBLIGATION = "Do not enter patient-identifiable information.";
export const PINNED_PRIVACY_LINK = "Privacy and data processing";
-const OBLIGATION = "Do not enter patient-identifiable information.";
-const PRIVACY_LINK = "Privacy and data processing";
+import { PINNED_OBLIGATION as OBLIGATION, PINNED_PRIVACY_LINK as PRIVACY_LINK } from "`@/lib/warning-notice-copy`";
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/warning-line-mockups.tsx` around lines 19 - 20, Extract the
shared governance strings into one module, such as warning-notice-copy.ts,
exporting symbols for the pinned obligation and privacy link text. Update the
declarations and usages in warning-line-mockups.tsx,
warning-consolidation-mockups.tsx, and answer-home-proposal-mockups.tsx to
import those shared symbols, preserving the exact byte-identical wording
required by tests/privacy-ui.test.ts.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/outstanding-issues.md`:
- Line 148: Update the stale renumbering reference within row `#165` so it no
longer points to unrelated rows: replace the inline `#156/`#157/#158 sequence with
the current `#165/`#166/#167 identifiers, or remove that historical renumbering
clause while preserving the rest of the row.

---

Nitpick comments:
In `@src/components/warning-line-mockups.tsx`:
- Around line 19-20: Extract the shared governance strings into one module, such
as warning-notice-copy.ts, exporting symbols for the pinned obligation and
privacy link text. Update the declarations and usages in
warning-line-mockups.tsx, warning-consolidation-mockups.tsx, and
answer-home-proposal-mockups.tsx to import those shared symbols, preserving the
exact byte-identical wording required by tests/privacy-ui.test.ts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 24af28ba-14ee-4753-b36e-b8eae069e02e

📥 Commits

Reviewing files that changed from the base of the PR and between 3b4872f and 9418104.

📒 Files selected for processing (10)
  • docs/branch-review-ledger.md
  • docs/outstanding-issues.md
  • docs/site-map.md
  • src/app/mockups/answer-home-proposal/page.tsx
  • src/app/mockups/mockups-layout-client.tsx
  • src/app/mockups/warning-consolidation/page.tsx
  • src/app/mockups/warning-line/page.tsx
  • src/components/answer-home-proposal-mockups.tsx
  • src/components/warning-consolidation-mockups.tsx
  • src/components/warning-line-mockups.tsx

Comment thread docs/outstanding-issues.md Outdated
… rows

CodeRabbit found row #165 claiming its follow-ups "were renumbered again to
#156/#157/#158" — ids that now belong to unrelated rows on main. A reference
that resolves to the wrong row is worse than none in a ledger whose whole
job is to be followable later.

Two fixes:

  - Dropped the renumbering trail entirely rather than updating it. It listed
    superseded ids that main has since reissued, and it went stale again on
    the very next sync; the row now states that renumbering happened and why,
    without naming numbers that no longer mean anything.
  - Corrected a second stale reference the earlier renumber missed: row #165
    pointed at #157 for the privacy sign-off that variant F would need. That
    is the answer-mode caveat row, now #166. The earlier pass only rewrote
    three known cross-reference phrasings and did not catch this one.

Verified by extracting every backtick id reference from the three rows: #165
and #166 now point at each other and #167 at #120, all live.

check:outstanding-issues: 165 rows (50 open, 115 archived), unique ids,
next-id=168 above the highest, no ids deleted from base 3b4872f.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPyFcMfn1jMmphr6AqiWBg
@BigSimmo
BigSimmo enabled auto-merge (squash) July 31, 2026 06:53
@BigSimmo
BigSimmo merged commit d766d53 into main Jul 31, 2026
25 checks passed
@BigSimmo
BigSimmo deleted the claude/warning-consolidation-mockups-09jyj7 branch July 31, 2026 06:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-branch-sync Opt out of hosted pr-branch-sync / update-branch on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants