Citation expectation copy and warning component added across guided shells

foolish-bandit tightened the citation framing across the three guided workflow shells and the main assistant. A new `CitationExpectationNote` component in `AssistantMessage.tsx` renders an amber "No source citation shown. Treat this answer as unverified." warning when citations are absent, and a citation card list when they're present.

chat-uidrafting

The CitationExpectationNote component (87 lines added to AssistantMessage.tsx) is the core addition. It takes a citations array and an optional click handler. Zero citations renders an amber-bordered warning; any citations render a gray card with the source list and a "Check cited sources before relying on an answer." label. This makes citation presence or absence explicitly visible in the answer UI rather than something the user infers.

On the guided shell side, the copy changes are small and consistent. /draft adds a note that documents attached to drafts should have their cited sources checked before the draft is relied on. /explain surfaces the constraint that pasted text may not produce citations unless a document is attached, and adds a pre-submit hint to upload first if citations matter. /review adds two notes: one on the document selection step saying citations are only possible with a source document selected, and one below the review-topics list reminding that each finding should point back to the contract.

TRChatPanel.tsx gains a similar treatment for the tabular-review chat side (56 lines). TRTable.tsx and ChatInput.tsx get smaller accompanying edits.

The underlying retrieval and model calls are unchanged. This is purely a UI layer making the gap between "answer with citations" and "answer without citations" explicit.

So what Worth a look if your fork makes cited answers a user-visible promise. The `CitationExpectationNote` component is the piece to examine most closely - it handles both the positive (citations present) and negative (no citations) states at the answer level. The guided-shell copy changes carry the "Gary" name and need substitution, but the underlying instinct of setting document-attachment expectations before the user submits is generally applicable.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

2 commits from foolish-bandit/gary, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
b178b7ed polish cited answer expectations SONOMOS 2026-05-07 ↗ GitHub
ad430fc2 Merge pull request #18 from foolish-bandit/codex/pr-18-cited-answer-ui-expectations Zack Brenner 2026-05-07 ↗ GitHub
Cited-answer UI expectations

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-171.md from inside the repo you want the changes in.

⬇ Download capture-thread-171.md