docs-site claims ledger
Every falsifiable product claim on everydocs-site/ page, checked against the
product that ships. This is an internal engineering artifact: it is .md, not
.mdx, and it is deliberately absent from docs.json, so the nav parity check
still sees 45 pages and 45 entries.
Pass date: 2026-08-14. Base commit: 0c3b7b47. Unit: DON-93.
What counts as a claim
A falsifiable statement about product behavior: “Donna does X”, “you can Y”, a number, a limit, a named UI control, a named integration. Marketing register, opinions, and the ADHD-research citations (external claims about the world, not about Donna) are out of scope.The four verdicts
| Verdict | Meaning |
|---|---|
holds | The product does this. Evidence is the code or the canonical line that makes it true. |
broken-docs-fixed | The docs were wrong. The wording is corrected in the same diff as this ledger, and the row names the page edited. |
broken-product-gap | The docs describe intended behavior the product does not have. Filed below as a finding with the code location proving the absence. No src/ file is touched by this unit. |
unverifiable-from-repo | Only a live signed-in walk, a device, or a human eye can settle it. Collected below for the founder. |
Verification order
docs/DONNA-CANONICAL.md first, then the implementing code. Where the two
disagree, code wins (canonical’s own rule, docs/DONNA-CANONICAL.md:9), and the
row names both pointers so the disagreement is visible rather than silently
resolved. No row in this pass hit that case.
Findings: product-side gaps
Behavior the product lacks, filed rather than fixed. Each row names the code location that proves the absence.| # | Where it shows | The claim | What the product actually does | Code proving it |
|---|---|---|---|---|
| F1 | In-product capability panel, not a docs page: src/shell/canvas/HelpControl.tsx:567 says “Select text and Donna can write the next line, pull in details, or tell you it’s fine to stop.” | Three inline Donna moves over a selection. | The selection toolbar ships exactly one Donna move, why? (reanchor). unstick / pull_details / call_it were cut from the menu by founder ruling 2026-07-22 and survive only as /api/inline-ai actions with no caller. | src/shell/canvas/editor/EditorBubbleMenu.tsx:11-19 (the ruling, in the module header), :97 (WHY_LABEL), :581-592 (the single button, hard-coded to 'reanchor'). The rendered bar has no second Donna control: grep -n "runAction(" src/shell/canvas/editor/EditorBubbleMenu.tsx returns one call site. |
src/ is read-only
here) and the docs pages that repeated it are fixed instead. It needs its own
issue: the capability panel is telling users about a menu that was deliberately
reduced to one item.
Founder review: unverifiable from repo
Rows a repo session cannot settle. Each needs a live signed-in walk, a device, or a human eye.| Page | The claim | Why the repo cannot settle it |
|---|---|---|
docs-site/the-tour.mdx, concepts/capture.mdx, concepts/outcomes.mdx, daily/morning-check-in.mdx, daily/working-an-action.mdx, daily/starting-an-action.mdx | The seven docs-shots screenshots show the current UI. | The images are checked-in PNGs regenerated by docs-site/scripts/docs-shots.mjs. Whether each still matches the surface it labels is a visual comparison. |
daily/check-ins-and-nudges.mdx | ”It lands as a notification on a device where you have turned the push toggle on.” | Delivery is armed by cohort and has never been observed landing on a device (docs/DONNA-CANONICAL.md:142: “no push has been photographed landing on a device”). The dispatch code exists; the delivery does not have evidence. |
daily/check-ins-and-nudges.mdx | ”Today the offer appears in the browser and in the iPhone build, on newer accounts." | "Newer accounts” is a live-cohort property, not a code constant. |
daily/settling-down.mdx | The breathing visual expands and settles in time with the words; it respects reduced motion. | A motion-timing claim. Needs a real-GPU frame probe, not a build. |
reference/faq.mdx, quickstart.mdx | Billing statuses render as "renews {date}", "free trial · {N} days left, first charge {date}", "canceled · active until {date}", "payment issue · update your card", with a “manage billing” button. | Rendered by Clerk Billing against a live subscription. |
reference/your-data.mdx | ”The full Privacy Policy and Terms of Service are in the app under /legal, and on the Donna website.” | The /legal route exists in this tree; that the published site serves the current text is a live check. |
channels/voice.mdx | ”Dictation has a daily limit. Past it, a note asks you to pick it back up later.” | The rate-limit branch exists (src/app/api/transcribe/route.ts:142), but the ceiling itself is enforced outside this repo’s constants and the user-facing note is a live observation. |
guides/* (12 pages) | The ADHD-research citations and their DOIs. | External claims about published research, not about Donna. Out of scope by the brief; listed so the exclusion is visible rather than silent. |
docs-site/channels/apps.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| The full app runs in the browser at meetdonna.xyz; one window holds canvas, command bar, work view, Outcomes, settings. | holds | docs/DONNA-CANONICAL.md:137 (Web app: live). |
| A Mac desktop app is being built; there is nothing to download today. | holds | docs/DONNA-CANONICAL.md:136 (Mac app: not live). |
| ”A native iOS build that wraps the same app is in early progress.” | holds | docs/DONNA-CANONICAL.md:137 (a native iOS build wraps the same app; nothing submitted to the App Store). |
| In the iOS build, taps answer with a short vibration; a haptics switch in settings, on by default, turns them off. | holds | src/shell/canvas/SettingsView.tsx general section; haptics row is iPhone-build-gated. |
| Settings opens from the sliders menu bottom-left; on a phone “the + menu in the command bar, under Go to”. | broken-docs-fixed | The phone trigger is a menu glyph, not a +, and the sheet’s root level is five flat rows with no “Go to” section: src/shell/canvas/MobileCommandBar.tsx:611,644, src/shell/canvas/CommandSheet.tsx:118-152. Fixed on this page. |
| Voice: choose the register; it changes wording, not a sound. | holds | src/shell/canvas/VoicePresetGrid.tsx:23-47. |
| Actions per day, from 1 to 10. | holds | src/shell/canvas/ActionShapingSection.tsx:24-33 (min={1} max={10}). |
| Areas: rename, recolor, or merge. | holds | src/shell/canvas/SettingsView.tsx:187-193 (areas row, general). |
docs-site/channels/voice.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Dictation is input only; Donna answers in text. | holds | docs/DONNA-CANONICAL.md:138 (push-to-talk dictation only; live voice mode removed). |
| Desktop keyboard equivalent is Ctrl + `; hold to record, release to stop. | holds | docs-site/reference/shortcuts.mdx row and src/shell/useVoiceInput.ts. |
| Recording stops on its own after about three seconds of silence. | holds | src/shell/dictationConfig.ts:154 (DICTATION_SILENCE_MS = 3000). |
| Each recorded piece is added to what is in the composer, never written over it. | holds | src/shell/useVoiceInput.ts append path. |
| Transcription is primed with the names of active Outcomes and Actions. | holds | src/app/api/transcribe/route.ts prompt priming. |
| Nothing is stored as audio. | holds | docs/DONNA-CANONICAL.md memory model; src/app/api/transcribe/route.ts keeps only the text. |
| No spoken reply, no live call, no pre-signup voice demo. | holds | docs/DONNA-CANONICAL.md:138. |
The start list (⌘K) has the same mic next to its field. | holds | src/shell/canvas/StartModal.tsx mic control. |
| Dictation has a daily limit. | unverifiable-from-repo | src/app/api/transcribe/route.ts:142 proves a rate_limited branch; the ceiling and its user-facing note are a live check. |
docs-site/concepts/actions.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| An Action is the single next step, built fresh each time; one at a time, never a list. | holds | docs/DONNA-CANONICAL.md:33 (the atom, disposable, built fresh from the moment). |
| Donna assembles each from the Outcome’s state, the calendar window, and the kind of day. | holds | docs/DONNA-CANONICAL.md:50 (state-adaptive), src/prompt/calendar-context.ts. |
| Every Action names a concrete first physical move. | holds | docs/DONNA-CANONICAL.md:33 (“Anchored in a concrete first physical action”). |
| Any Action can be shrunk with the first-step handle on the Action card. | holds | docs/DONNA-CANONICAL.md:33 (“shrinkable to its smallest first move”). |
| A deadline is named only when it is real. | holds | docs/DONNA-CANONICAL.md:110 (“Real deadlines are always named”); Never table forbids invented urgency. |
| Skipping is free, never shown as a count. | holds | docs/DONNA-CANONICAL.md:33, :96 (no fraction of a target), :95 (no tally of skips). |
| Actions per day, 1 to 10, a soft target eased on hard days. | holds | src/shell/canvas/ActionShapingSection.tsx:24-33. |
| The offer to call it a day carries “that’s the day” and “one more, quick”. | holds | Reply-button copy in the day-close path, src/app/chat/dayCloseAction.ts. |
docs-site/concepts/capture.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Capture is pull-only; you never open it to work through a list. | holds | docs/DONNA-CANONICAL.md:70 (pull-only; never a pile, an age, or an undone count). |
| ”Tasks from your tools”: things you keep in a connected app like Todoist are read and proposed back. | broken-docs-fixed | The only path from a task source into the capture well is the Composio webhook, and every registration no-ops without COMPOSIO_WEBHOOK_SECRET: src/integrations/composio-triggers.ts:366 (return 'no_webhook_secret'), src/app/api/webhooks/composio/route.ts:78-84. docs/DONNA-CANONICAL.md:39 states the path is inert in production today. What is live is Donna reaching a connected tool during a turn when the work needs it. Fixed on this page. |
| Mark done by tapping the bullet; done items clear overnight; tap again to undo. | holds | src/shell/canvas/CapturesPanel.tsx bullet toggle; overnight clear in the inbox status lifecycle. |
| Dismissing moves an item to the backlog, where you can still find it. | holds | src/persistence/inbox.ts:605 (“a retired (‘backlog’) note”), :632 (put a retired note back in the panel). |
| A capture about to go quiet appears as a keep-checklist in a weekly review; ticking a row keeps it; if the checklist never appears, nothing goes quiet. | holds | src/app/api/inbox/retirement-checklist/route.ts:1-25, src/persistence/inbox.ts:858-870. |
| Nudges do not count toward retirement; only offers you could see move a capture closer. | holds | src/persistence/inbox.ts:822-830 (“gated on clarify_offer_count ALONE … a reach-out push writes neither”). |
| Documents: plain text, Markdown, HTML today; PDF and Word not read yet. | holds | src/extractors/ supported types. |
| Desktop: the inbox glyph on the command bar; while open, typing lands in Capture. | holds | src/shell/canvas/BottomInput.tsx capture-mode routing. |
| Phone: open the menu in the bottom bar and tap Captures. | holds | src/shell/canvas/CommandSheet.tsx:134-152 ('captures' in MOBILE_MENU_IDS). |
docs-site/concepts/cycles.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| A Cycle is a short multi-day commitment of N Actions to one Outcome, reviewed at the end, then renewed, landed, or parked. | holds | docs/DONNA-CANONICAL.md:26. |
| A proposal is not saved until you accept it. | holds | docs/DONNA-CANONICAL.md:41 (lifecycle writes fire when the user taps a button). |
| Finishing the committed Actions brings the look-back forward. | holds | src/cycles/ review trigger on completion. |
| A Cycle that ends under its number is closed by name with a smaller next number proposed, and the shortfall is never counted. | holds | docs/DONNA-CANONICAL.md:26, :141. |
| ”In a few places the app labels one sitting a ‘session.‘“ | holds | docs/DONNA-CANONICAL.md:67 (“Session” banned as a user-facing noun; the docs’ own note is the honest disclosure of the residue). |
| Progress appears on the outcomes view; no quota bar, no late flag. | holds | docs/DONNA-CANONICAL.md:96 (no fraction of a target), src/shell/canvas/OutcomesShelf.tsx. |
| Skipping an Action inside a Cycle marks nothing late. | holds | docs/DONNA-CANONICAL.md:94. |
docs-site/concepts/how-donna-adapts.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Action size, tone, ask, and whether Donna reaches out change with your current state. | holds | docs/DONNA-CANONICAL.md:50 (state-adaptive, verbatim). |
| State is inferred from what you say, what you skip, and how the day compares to the plan; never from your screen. | holds | docs/DONNA-CANONICAL.md:53 (infer, do not surveil), :39 (never watches the screen or logs keystrokes). |
| No streaks, nothing marked late, skipped work never shown as a count. | holds | docs/DONNA-CANONICAL.md:94-97. |
| Stop for a day, a week, or a month and Donna starts from the current day: no gap summary, no backlog. | holds | docs/DONNA-CANONICAL.md:52 (ghosting is free), :102. |
| The weekly review names what happened and never compares it to a plan or a streak. | holds | docs/DONNA-CANONICAL.md:95-98. |
| ”These behaviors are fixed: there is no setting that turns them on or off.” | holds | src/shell/canvas/SettingsView.tsx:185-210 (the search registry is the full control set; no shame-free toggle exists). |
docs-site/concepts/how-donna-thinks.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna holds the plan, prioritizes, tracks time, decides what comes next, and reframes stalled work; you approve or skip and do the work. | holds | docs/DONNA-CANONICAL.md:19 (the core flip, verbatim in substance). |
| It reads your calendar and sizes work to the window before your next commitment. | holds | src/prompt/calendar-context.ts:21-22, src/integrations/calendar.ts:45-49. |
| It waits for your go before acting. | holds | docs/DONNA-CANONICAL.md:41 (no send without an explicit confirm tap; lifecycle writes on tap). |
| Donna does not explain its own methodology mid-conversation or narrate what it is doing. | holds | docs/DONNA-CANONICAL.md:103 (never explain the methodology or use an internal name). |
docs-site/concepts/outcomes-over-time.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| The outcomes view groups every Outcome into three rooms: going on, resting, landed. | holds | src/shell/canvas/OutcomesShelf.tsx grouping; docs/DONNA-CANONICAL.md:73. |
| Each row shows the Area, how many Actions once there is one, and when it started. | holds | src/shell/canvas/OutcomesShelf.tsx row composition. |
| ”Going on” and “landed” carry a count; “resting” does not. | holds | src/shell/canvas/OutcomesShelf.tsx per-room count rendering. |
| Open the outcomes verb top-right on desktop, “Go to → Outcomes on the phone”. | broken-docs-fixed | There is no “Go to” section on the phone; the sheet’s root level is five flat rows and Outcomes is one of them (src/shell/canvas/CommandSheet.tsx:118-152). Fixed on this page. |
| A born Outcome appears as a card in the chat feed; tapping it opens the showcase. | holds | docs/DONNA-CANONICAL.md:137 (Outcome showcase, live), src/shell/canvas/OutcomeSurface.tsx. |
| The showcase shows the success picture and a spine of Cycles. | holds | src/shell/canvas/OutcomeSurface.tsx. |
| The showcase marks nothing late or missed. | holds | docs/DONNA-CANONICAL.md:94. |
| Landing an Outcome shows the starting point next to where you ended up. | holds | docs/DONNA-CANONICAL.md:170 (the landed view shows server-computed honest effort). |
| Starting a new Outcome in a desktop-sized window splits the screen; on phone width it appears as a card. | holds | src/shell/canvas/OutcomeSurface.tsx responsive split. |
| No narrative chapters or model-fabricated hours in the showcase. | holds | docs/DONNA-CANONICAL.md:170 (Outcome narrative chapters: not live). |
docs-site/concepts/outcomes.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| An Outcome is the top-level tracked unit, anchored by a success picture in your own words. | holds | docs/DONNA-CANONICAL.md:25. |
| The “why” and the “before” are optional and are never form fields. | holds | docs/DONNA-CANONICAL.md:25 (born through a construction conversation, never auto-created). |
| Every Outcome lives in an Area; Areas have a name and one of six colors; create, rename, recolor, or merge in settings. | holds | docs/DONNA-CANONICAL.md:27, src/shell/canvas/SettingsView.tsx:187-193. |
| Desktop: the outcomes verb top-right; the top line of the palette starts one. | holds | src/shell/canvas/OutcomesShelf.tsx:263,279 (the top line, placeholder “Start something new”, calls onCreate). |
| ”Phone: the New outcome row in the + sheet.” | broken-docs-fixed | There is no “New outcome” row and no + sheet. The phone route is the menu glyph → Outcomes, whose top line starts one, the same control as desktop: src/shell/canvas/CommandSheet.tsx:134-152,166 (“the mobile level calls onCreate with the composer text”), src/shell/canvas/OutcomesShelf.tsx:279. Fixed on this page. |
| ”Go to → Outcomes on the phone” for the three rooms. | broken-docs-fixed | Same defect as above. Fixed on this page. |
| Parking sets no countdown and marks nothing late. | holds | docs/DONNA-CANONICAL.md:94. |
| Landed Outcomes stay visible rather than disappearing. | holds | src/shell/canvas/OutcomesShelf.tsx landed room. |
docs-site/concepts/routines.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| A Habit is a saved one-tap start holding a title, a default length (25 minutes unless set otherwise), and an optional rhythm in words. | holds | src/routines/extract.ts:92 (default_minutes ... .default(25)), src/routines/save-routine-body.ts:27. |
| A Habit has no due date, no streak, no missed-day count. | holds | docs/DONNA-CANONICAL.md:29 (“Habits keep no streak”), :97. |
| Habits were called Routines, and the start list called them Recurring tasks. | holds | docs/DONNA-CANONICAL.md:76 (“Routine” is internal naming now). |
| Every count goes one direction, up: “2 today · 14 total”; a weekly rhythm counts by the week. | holds | docs/DONNA-CANONICAL.md:147 (per-habit progress counts up honestly), :96 (accrual framing only). |
| A Habit you have not started yet shows no zero at all. | holds | src/shell/canvas/StartModal.tsx count rendering skips zero. |
| The day runs to 3am. | holds | docs/DONNA-CANONICAL.md:29 (“one coaching day that runs 3am to 3am local everywhere”). |
| Once done as often as its rhythm asks, a Habit moves into Done today, folded at the bottom. | holds | src/shell/canvas/StartModal.tsx:186 (“AC25(a): today’s finished habits fold away by default”). |
| Creating one is a conversation: a card offers save as a habit, and nothing is saved until you tap. | holds | src/routines/feed-detection.ts, docs/DONNA-CANONICAL.md:41 (lifecycle writes fire on tap). |
| Edit rhythm offers how often / which days / time of day / in your words, with a live preview. | holds | src/shell/canvas/RoutineRowMenu.tsx. |
| Archive confirms once, then the Habit leaves the start list; past Actions keep their history. | holds | src/shell/canvas/RoutineRowMenu.tsx archive confirm. |
docs-site/concepts/work-and-memory.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Work in the work view is saved with its Outcome and distilled when you finish. | holds | docs/DONNA-CANONICAL.md:39 (“the user’s own drafts, distilled at session close so only the understanding is kept and never the raw text”), :145. |
| The seven-row inventory (work, conversations, structure, inferred profile, individual observations, behavioral signals, settings). | holds | docs/DONNA-CANONICAL.md:37 (the four-layer store), src/memory/. |
| Observations start as low-confidence candidates and only shape behavior once confirmed. | holds | docs/DONNA-CANONICAL.md:37 (“Entities mature (candidate to active to stable)”). |
| The profile is recompiled nightly. | holds | docs/DONNA-CANONICAL.md:37 (“a compiled user model reread every turn”), the nightly compile job in src/jobs/. |
| Behavioral signals change the approach and are never shown as a score. | holds | docs/DONNA-CANONICAL.md:108 (server-computed numbers only; no model-computed number about the user’s record). |
| A wrong belief is retired, not deleted; the event history is append-only. | holds | docs/DONNA-CANONICAL.md:37, src/memory/retire.ts. |
| The “share your work surface” toggle controls reading, not storage. | holds | src/shell/canvas/SettingsView.tsx personalization row; docs-site/reference/your-data.mdx:77 quotes the setting’s own words. |
| Correcting in conversation is the only live control; there is no memory viewer. | holds | docs/DONNA-CANONICAL.md:167 (a memory viewer or transparency UI is not built). |
| You can delete your account and everything Donna learned, anytime from settings. | holds | src/shell/canvas/SettingsView.tsx general → delete account. |
docs-site/connections/calendar.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Google Calendar, connected once through Google’s consent screen, granting read/write on events and read-only on the calendar list. | holds | docs/DONNA-CANONICAL.md:148 (Clerk-native OAuth with least-privilege scopes). |
| Donna cannot change calendar sharing and cannot create or delete calendars. | holds | Scope set covers events plus calendarlist.readonly; src/integrations/google-calendar.ts exposes no calendar-create path. |
| Reads event titles, start/end, attendees, and which calendar each event is on. Event descriptions are never requested from Google. | holds | src/integrations/google-calendar.ts:351 (the fields mask: items(id,status,summary,start,end,attendees(...)), no description). |
| When you ask, or when you drag on the day calendar, Donna can create, move, resize, or delete events. | holds | docs/DONNA-CANONICAL.md:148 (drag-to-move and click-to-create in the day view). |
| New events go on the Google account’s default calendar; there is no picker in settings. | holds | docs/DONNA-CANONICAL.md:168 (a multi-calendar picker is not live), src/integrations/google-calendar.ts resolveWriteCalendarId. |
| ”a rolling window (about two weeks ahead …)“ | holds | src/integrations/calendar.ts:45-49 (lookForwardDays: 14). |
| ”… refreshed every 15 minutes” | broken-docs-fixed | The freshness threshold is ten minutes, not fifteen: src/integrations/integration-sync.ts:34 (SYNC_FRESH_THRESHOLD_MIN = 10), read by src/prompt/calendar-context.ts:21. Fixed on this page. |
| ”Donna reads at most three attendee names per event, plus a count of anyone beyond those three.” | holds | src/prompt/calendar-context.ts:29 (PROMPT_ATTENDEE_NAME_CAP = 3), :55-70 (names plus overflow count). |
| ”It does not read attendee email addresses or who has accepted or declined.” | broken-docs-fixed | The sync requests and stores both: src/integrations/google-calendar.ts:351 asks Google for attendees(email,displayName,responseStatus,self,organizer), and src/integrations/calendar.ts:539-551 persists email and responseStatus. What is true is narrower: the prompt block renders display names only, falling back to the email’s local part (src/prompt/calendar-context.ts:48-51). Fixed on this page. |
| Tracked time on the calendar is off until you turn it on, in the calendar section of settings. | holds | src/time-truth/calendar-writeback.ts:10-15, src/app/api/user-settings/route.ts:209 (calendar_writeback: false). |
| Only a finished or self-stopped Action writes; skipped, parked, or walked-away work writes nothing. | holds | src/time-truth/calendar-writeback.ts:17-21 (“ONLY A CLEAN EXIT WRITES”). |
| The event’s title is Tracked time and its description Recorded in Donna. | holds | src/time-truth/calendar-writeback.ts:48,54. |
| The write is best-effort; a failure changes nothing else. | holds | src/time-truth/calendar-writeback.ts:27-29 (“NEVER THROWS … Failures log and return ‘failed’”). |
| Disconnect revokes access with Google and clears the synced events. | holds | docs/DONNA-CANONICAL.md:148 (real disconnect). |
docs-site/connections/integrations.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Gmail, Notion, Google Drive, Google Docs, Todoist, and Slack are the surfaced set; others connect on request. | holds | src/integrations/composio.ts:282 and the surfaced-toolkit list; docs/DONNA-CANONICAL.md:149 (discovery-mode tool search). |
| Two ways to connect: the integrations section in settings, or an in-chat offer when a task needs the tool. | holds | docs/DONNA-CANONICAL.md:149 (“Connect from settings or an in-feed pill”). |
| Connecting Gmail does not put Donna in your inbox in the background. | holds | docs/DONNA-CANONICAL.md:39 (connected tools are read on demand when a task needs them). |
| ”Connect Todoist and the tasks you keep there surface through [Capture].“ | broken-docs-fixed | The between-sessions push into the capture well no-ops without COMPOSIO_WEBHOOK_SECRET (src/integrations/composio-triggers.ts:366, src/app/api/webhooks/composio/route.ts:78-84), and docs/DONNA-CANONICAL.md:39 states the path is inert in production today. Fixed on this page to what is live: Donna reaches Todoist during a turn when the work needs it. |
| Todoist is read-only: completing work in Donna checks nothing off there. | holds | src/tools/resolve-tools-for-context.ts:458 (todoist: SOURCE_SHAPES.self_authored, a read shape); no Todoist write action is registered. |
| A send always opens a confirm step showing recipient and full text; a send cannot be undone. | holds | docs/DONNA-CANONICAL.md:41 (“No send ever happens without an explicit confirm tap out of band”). |
| Settings on a phone is reached via “the + menu in the command bar, under Go to”. | broken-docs-fixed | Menu glyph, five flat rows, no “Go to”: src/shell/canvas/MobileCommandBar.tsx:611,644, src/shell/canvas/CommandSheet.tsx:118-152. Fixed on this page. |
| Disconnecting revokes Donna’s access at that tool. | holds | src/integrations/composio.ts revokeAllComposioConnections. |
docs-site/daily/bad-days.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| On a bad day the next step shrinks to its smallest version, the tone softens, and doing nothing is a complete answer. | holds | docs/DONNA-CANONICAL.md:122 (the shape of the floor: smallest step, gentlest register, “nothing” stays valid). |
| The floor is a wired invariant, not a per-surface habit. | holds | docs/DONNA-CANONICAL.md:118. |
| In acute stress Donna drops the productivity frame entirely and hands you no task. | holds | docs/DONNA-CANONICAL.md:124 (acute disclosure overrides everything: no Actions, no exercises, no next step). |
| The slower surface offers one physical step at a time with “I did it.”, then “That was the start.” and three ways forward. | holds | The grounding/stepwise surface in src/components/blocks/; docs/DONNA-CANONICAL.md:122. |
| Three moves when something will not budge: a different angle, a curious question, retire and replace. | holds | docs/DONNA-CANONICAL.md:107 (one curious question about the specific blocker, never interrogating avoidance). |
| Re-entry after parking is neutral: no callback to the moment, no mention of how long it sat. | holds | docs/DONNA-CANONICAL.md:52,99,102. |
| Donna never mentions the days you take off. | holds | docs/DONNA-CANONICAL.md:95,102. |
docs-site/daily/check-ins-and-nudges.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| In-conversation check-ins offer two or three tappable answers; tapping answers as if typed. | holds | docs/DONNA-CANONICAL.md:51 (structured tap-answerable choices batch freely). |
| A reach-out is always about something you actually wrote down, in your own words. | holds | docs/DONNA-CANONICAL.md:142 (“Touches are grounded in the note’s own words”). |
| A goal-shaped note gets an offer to scope it out; a fragment too thin is never pushed. | holds | docs/DONNA-CANONICAL.md:142. |
| Across a day Donna moves through your notes, longest-unraised first. | holds | docs/DONNA-CANONICAL.md:142 (“least recently surfaced first”). |
| Opening the app is presence, not an answer: it closes that note’s subject for the day, and only a reply or a tap re-opens it. | holds | docs/DONNA-CANONICAL.md:142; src/reachout/cadence.ts:17-20. |
| Active hours are respected in your timezone; with no timezone, nothing is pushed. | holds | src/reachout/guard.ts local-time window leg; docs/DONNA-CANONICAL.md:142 (the dispatch choke point includes a local-time window). |
| “a hard ceiling of five reach-outs in a day” | holds | src/reachout/types.ts:475 (MAX_TOUCHES_PER_LOCAL_DAY = 5), src/reachout/cadence.ts:12. |
| ”after a run of unanswered ones the next day quiets to at most one” | holds | src/reachout/cadence.ts:21 (AC21: three consecutive unanswered quiet the next day to one touch), UNANSWERED_STREAK_LIMIT / QUIETED_DAY_MAX_TOUCHES in src/reachout/types.ts. |
| Starting work on an Action ends reach-outs for the rest of that day. | holds | src/reachout/cadence.ts:21,56-60 (the pursuit_anchor marker; pursuit ends for the rest of that local day). |
| ”At least two hours sit between any two reach-outs.” | holds | src/reachout/types.ts:539 (MIN_TOUCH_GAP_MINUTES = 120). |
| Go quiet for a couple of days and the regular rhythm stops; then only day three, seven, and fourteen. | holds | src/reachout/cadence.ts:22-24 (regular cadence stops at 48h; day-3 / 7 / 14 windows, one touch each), :179. |
| A raised, unanswered subject is done for the day in any wording. | holds | src/reachout/cadence.ts:16-19. |
| A reach-out never references how long it has been or counts what you missed. | holds | docs/DONNA-CANONICAL.md:99,102. |
| The notification offer reads exactly “Donna can reach out when something needs you. Want that on?“ | holds | src/canvas/feed/push-ask-copy.ts:22, verbatim. |
| The offer is made at most twice ever, never twice in one day; declining twice ends it. | holds | src/app/api/push-ask/route.ts:1-20 (“must not spend one of the account’s two”), src/reachout/ask/should-offer.ts. |
| Three controls: let Donna reach out, active hours, notifications on this device. | holds | src/shell/canvas/SettingsView.tsx personalization → reaching out. |
| ”There is no frequency dial to manage.” | holds | docs/DONNA-CANONICAL.md:175 (the nudge engine’s frequency dial was a quota nothing honored; the engine is deleted). |
| It lands as a notification on a device where push is on. | unverifiable-from-repo | See the founder table: delivery has never been observed reaching a device (docs/DONNA-CANONICAL.md:142). |
| ”Today the offer appears in the browser and in the iPhone build, on newer accounts.” | unverifiable-from-repo | A live-cohort property. |
docs-site/daily/end-of-day-review.mdx
| Claim | Verdict | Evidence |
|---|---|---|
Two doors: /review (or /daily_review) typed, and the evening arrival on first open past the threshold. | holds | docs/DONNA-CANONICAL.md:141; src/shell/canvas/slashCommands.ts. |
| A settings switch, automatic reviews, turns arrivals off while leaving the typed door alone. | holds | docs/DONNA-CANONICAL.md:141, src/shell/canvas/SettingsView.tsx personalization row. |
| Not tonight stops both the day’s and the week’s for that night and lapses by the next evening. | holds | src/app/api/review-moments/status/route.ts:28,124-131,243. |
| ”The review is never pushed to your phone.” | holds | docs/DONNA-CANONICAL.md:140 (the brief is a pull, never pushed); the review arrives on open. |
| The first review a user ever receives is a welcome, spent once per account, and a first review on a floor day stays quiet and keeps the welcome owed. | holds | docs/DONNA-CANONICAL.md:141, verbatim. |
| It ends with one tap-answerable question; the answer is kept, never remarked on, steers the next mornings, and softens after the first week-read. | holds | docs/DONNA-CANONICAL.md:141. |
| The first two reviews after that each mention one thing this is not; after the third it stops. | holds | src/state/review-ask-budget.ts and the review composition path. |
| It runs once per day; asking again the same evening adds to it. | holds | src/app/chat/dayCloseAction.ts same-day append. |
| The review lists no unfinished items. | holds | docs/DONNA-CANONICAL.md:94-96. |
| A set-down carries into the next morning on its own; only the most recent evening’s carries. | holds | docs/DONNA-CANONICAL.md:141, verbatim. |
| On a hard day, or a declared write-off, the set-down offer is not made. | holds | docs/DONNA-CANONICAL.md:120-122. |
/weekly_review for the week; when both are due, the day’s arrives first and the week’s waits. | holds | docs/DONNA-CANONICAL.md:141, src/app/api/review-moments/status/route.ts. |
docs-site/daily/morning-check-in.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| The brief is prepared overnight and appears once a day. | holds | docs/DONNA-CANONICAL.md:140 (“Renders on the first app-open of the day … the overnight job only writes the blob”). |
| On the very first morning no brief appears. | holds | docs/DONNA-CANONICAL.md:150 (day one is EMPTY: nothing in the feed) plus the brief’s dependency on an active Outcome. |
| Three parts: a quiet open, up to three Outcomes worth attention, one opening move. | holds | The morning-brief blob shape in src/jobs/ and src/canvas/feed/. |
| Three answers: “i’m in”, “pull a different thread”, or just start talking. | holds | The brief’s reply buttons in the morning-ritual surface. |
| ”The brief is never pushed to a phone.” | holds | docs/DONNA-CANONICAL.md:140 (“It is a pull … never pushed to a phone”), :166 (the scheduled morning knock is built and switched OFF). |
| Donna never hands you a full schedule. | holds | docs/DONNA-CANONICAL.md:51 (one thing at a time; almost never a list). |
| The opening line says nothing about the gap. | holds | docs/DONNA-CANONICAL.md:102. |
| On a hard morning the brief collapses to one line with “just this one” and “not now”. | holds | docs/DONNA-CANONICAL.md:118 (on the lowest register the brief drops its list for a one-thing-or-nothing line). |
| Between conversations Donna can reach out under quiet hours, a minimum gap, and a backoff when you are low. | holds | src/reachout/types.ts:475,539; src/reachout/cadence.ts:11-27. |
docs-site/daily/settling-down.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Start an exercise from the wind glyph in the top-right corner. | holds | src/canvas/DonnaWindow.tsx:361 (“The Wind ‘breathing’ verb: opens the page-level BreathingPanel overlay”). |
| “or from the + menu in the command bar on a phone” | broken-docs-fixed | The phone trigger is a menu glyph, not a +: src/shell/canvas/MobileCommandBar.tsx:611,644. Fixed on this page. |
| Patterns: a longer exhale, box breathing, 4-7-8, a physiological sigh (two quick inhales, one long exhale), slow coherent breathing. | holds | src/components/blocks/regulation-exercises.ts:91,104,116,127,141 (box, four_seven_eight, extended_exhale, physiological_sigh, coherent), and :135-137 for the sigh’s two inhales and long exhale. |
| Sensory grounding: 5-4-3-2-1. | holds | src/components/blocks/regulation-exercises.ts grounding token; docs/DONNA-CANONICAL.md:72 (grounding exercise). |
| Donna picks by how activated you are: sharp spike, rough but not acute, hard day, running low and flat. | holds | docs/DONNA-CANONICAL.md:122 (a grounding exercise drops to the simplest one, or to just a line, on the floor). |
| You start it and you stop it; it does not loop; it respects reduced motion. | holds | The breathing panel’s controls; reduced-motion guard in the panel component. |
| Donna does not count your breathing or turn it into a streak. | holds | docs/DONNA-CANONICAL.md:97. |
| The desktop wind glyph opens a panel that asks where you are at, and one tap on a felt state starts the matching cadence. | holds | src/shell/canvas/CommandSheet.tsx:557-566 (naming the desktop BreathingPanel’s CHOOSE set of four felt states). |
| ”On a phone, the + menu in the command bar lists the exercises by name instead” | broken-docs-fixed | The phone’s Breathing level renders the same four felt states as the desktop panel, not exercise names: src/shell/canvas/CommandSheet.tsx:557-575 (“The four felt states (the desktop BreathingPanel’s CHOOSE set) … label is the state”). Fixed on this page. |
| The exercise you pick renders in the feed. | holds | src/shell/canvas/CommandSheet.tsx:561-562 (“renders the visual in the feed”). |
| The breathing visual keeps the pace so you do not count. | unverifiable-from-repo | A motion-timing claim; see the founder table. |
docs-site/daily/sharing-your-work.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| A share link is a public URL for one note; anyone with it can read that note, no account needed. | holds | docs/DONNA-CANONICAL.md:145 (“A note can be shared as a revocable public link”), :78. |
| It covers only that note, not the Outcome or your history. | holds | The share route scopes to one note id. |
| First use on a note states “anyone with this link can read this note”, confirmed with “share & copy” or “not now”. | holds | The share menu’s first-use confirm copy. |
| The recipient sees a read-only page: title, content, a “shared from Donna” footer, no comments or editing. | holds | The public share page component. |
| The link is a window onto the live note, not a snapshot. | holds | The share page reads the note row at request time. |
| Shared notes are marked not to be indexed. | holds | noindex on the share route. |
| ”stop sharing” kills the link immediately; afterwards it reads “This link isn’t active.” | holds | The share revoke path and the inactive-link page. |
| The share menu also offers “ask donna to send”; with no tool connected it reads “connect a tool in settings to send this.” | holds | The share menu’s send affordance and its unconnected state. |
| There is no export affordance anywhere. | holds | docs/DONNA-CANONICAL.md:78 (“there is no export affordance anywhere”). |
docs-site/daily/starting-an-action.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| ⌘K / Ctrl+K opens the start list from anywhere; the shortcut stays quiet while an Action runs. | holds | docs-site/reference/shortcuts.mdx row; src/shell/canvas/StartModal.tsx mount guard. |
| ”on the phone, open the + sheet and tap Start” | broken-docs-fixed | The phone trigger is a menu glyph, not a +; Start is the last of five rows: src/shell/canvas/MobileCommandBar.tsx:611,644, src/shell/canvas/CommandSheet.tsx:125-152. Fixed on this page. |
| Typing and pressing Enter starts a 25-minute Action titled with what you typed. | holds | src/shell/canvas/StartModal.tsx:69 (AD_HOC_PREVIEW_MINUTES = 25), src/routines/save-routine-body.ts:27. |
| With nothing typed: saved Habits, then Recent Actions. As you type both filter and a Start ”…” row pins on top. | holds | src/shell/canvas/StartModal.tsx buildStartEntries. |
| Arrows move, Enter fires, Escape closes, Delete/Backspace removes a highlighted Recent row without touching the Action. | holds | src/shell/canvas/StartModal.tsx key handling. |
| A Habit row counts up only: “2 today · 14 total”, folding into Done today once its rhythm is met. | holds | src/shell/canvas/StartModal.tsx:186; docs/DONNA-CANONICAL.md:147. |
| With no Habits, the list offers “Tell Donna what you do regularly”, which opens a conversation. | holds | src/shell/canvas/StartModal.tsx empty state. |
| Both paths land in the work view with the title already carried. | holds | src/shell/canvas/FocusView.tsx. |
docs-site/daily/working-an-action.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| The left rail holds what you’re working on, the elapsed timer, notes and share rows, and complete / pause / stop. | holds | src/shell/canvas/FocusView.tsx rail composition. |
| The timer counts up by default; on the phone you can flip it to remaining; on desktop it stays elapsed. | holds | docs/DONNA-CANONICAL.md:74 (the work view is the count-up timer plus rich editor), src/shell/canvas/FocusView.tsx. |
| Paused time is left out of the minutes logged, and pausing itself is not recorded. | holds | src/time-truth/ close accounting. |
| The editor autosaves; a failed save keeps your words and retries. | holds | docs/DONNA-CANONICAL.md:145 (autosave), src/shell/canvas/FocusView.tsx save status. |
| The selection menu holds exactly one Donna move, “why?”, answered at the selection and not touching the draft. | holds | src/shell/canvas/editor/EditorBubbleMenu.tsx:11-19,97,581-592. |
| ”There is no generic ‘make it longer,’ ‘summarize,’ or ‘fix my grammar’ here.” | holds | src/shell/canvas/editor/EditorBubbleMenu.tsx:11-19 (one move, the others cut). |
| The rail’s “notes” row opens earlier notes on the same Outcome plus “new note”; empty it reads “no saved notes yet.” | holds | docs/DONNA-CANONICAL.md:145 (per-Outcome drafts with a past-notes browser), src/shell/canvas/FocusView.tsx. |
| Donna’s dock at the right edge sees the live draft; its composer reads “ask about the work”. | holds | docs/DONNA-CANONICAL.md:145 (a chat sidebar that sees the live draft). |
| On completing, Donna leads with a sized break, alongside “straight to the next thing”, “stop here”, and “save as a habit” for ad-hoc work. | holds | The completion reply-button set in the focus close path. |
| Desktop “stop” ends it with no confirm; the phone’s “leave it here” asks “wrap it here? your time’s logged.” | holds | src/shell/canvas/FocusView.tsx desktop and mobile stop paths. |
| Only a period you finished or stopped yourself counts toward totals; a forgotten timer, skip, park, or switch-away is recorded and left out. | holds | src/time-truth/calendar-writeback.ts:17-21 states the same rule for the write half; the totals rule lives in the close accounting in src/time-truth/. |
| A stalled Action goes on no record. | holds | docs/DONNA-CANONICAL.md:95 (no tally of skips or quiet days). |
| A message can be sent through a connected tool, always behind a confirm step where you see recipient and full text. | holds | docs/DONNA-CANONICAL.md:41 (“No send ever happens without an explicit confirm tap out of band”). |
| The rail’s share row turns the note into a public, revocable link. | holds | docs/DONNA-CANONICAL.md:145. |
docs-site/guides/adhd-accountability-partner.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna puts one Action in front of you, built fresh, and keeps no ledger of your commitments. | holds | docs/DONNA-CANONICAL.md:33, :52 (“never carrying a ledger”). |
| A lapse is free: step away for a day or a month and Donna starts from the current day. | holds | docs/DONNA-CANONICAL.md:52. |
| Accountability arrives as a note in your feed, or a push notification if you turn that on, never on a fixed schedule. | holds | src/reachout/cadence.ts:11-27 (the cadence is bounded, not scheduled); push delivery itself is a founder-lane row above. |
| Over a stretch Donna commits with you to a Cycle of a few Actions and names what landed at the end. | holds | docs/DONNA-CANONICAL.md:26. |
docs-site/guides/adhd-and-deadlines.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna holds the plan and the runway, and notices drift from what you share without watching what you do instead. | holds | docs/DONNA-CANONICAL.md:53 (infer, do not surveil). |
| When a deadline is real Donna names it plainly; it does not invent urgency. | holds | docs/DONNA-CANONICAL.md:110, :106. |
| Connect Google Calendar and Donna factors real commitments in; when you ask or drag, it can create, move, resize, or delete events. | holds | docs/DONNA-CANONICAL.md:148. |
| Starting a step opens the work view: a count-up timer and an editor, with Donna there. | holds | docs/DONNA-CANONICAL.md:74,145. |
| ”Donna’s one proactive moment is a calm morning check-in … Beyond that, an occasional gentle nudge that respects your quiet hours, with controls in settings.” | holds | docs/DONNA-CANONICAL.md:140,142; src/reachout/cadence.ts:11-27. |
docs-site/guides/adhd-brain-dump.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Capture is pull-only, with no counts, no age labels, and no column of undone items. | holds | docs/DONNA-CANONICAL.md:70. |
| Donna catches a half-formed thought as a standing intent, with nothing to shape or assign. | holds | docs/DONNA-CANONICAL.md:28 (“A standing intent, not a task”). |
| Donna pulls from Capture and offers an item back when it fits; most of the time you never open Capture. | holds | docs/DONNA-CANONICAL.md:70 (pull-only). |
| ”An item you never touch keeps for about three weeks, then moves to the backlog.” (body, and again in the FAQ) | broken-docs-fixed | Retirement is offer-gated, never time-gated: src/persistence/inbox.ts:822-830 (“Offer-gated, never time-gated, and gated on clarify_offer_count ALONE”), :806-812 (CLARIFY_RETIRE_AFTER_OFFERS = 3), src/app/api/inbox/retirement-checklist/route.ts:1-25 (the weekly keep-checklist is the departure record). A note nobody was ever asked about never retires, however long it sits. Fixed on this page in both places. |
| ”no flag appears” when an item goes quiet. | broken-docs-fixed | The weekly keep-checklist names the notes about to go quiet before anything leaves: src/app/api/inbox/retirement-checklist/route.ts:6-10, src/persistence/inbox.ts:858-870. Corrected in the same edit as the row above. |
| On a phone, hold the mic and say the thought; it lands in the same place. | holds | docs/DONNA-CANONICAL.md:138; src/shell/canvas/MobileCommandBar.tsx:725. |
| A capture becomes an Action, or an Outcome if it turns out to be bigger, only when you want it to. | holds | docs/DONNA-CANONICAL.md:28, :25 (an Outcome is born through a construction conversation, never auto-created). |
docs-site/guides/adhd-morning-routine.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| The check-in is waiting as an opening card the first time you open Donna each day. | holds | docs/DONNA-CANONICAL.md:140. |
| ”Donna doesn’t push it to your phone.” | holds | docs/DONNA-CANONICAL.md:140,166 (the morning knock is built and switched off). |
| Up to three Outcomes worth attention and one proposed opening Action. | holds | The morning-brief blob shape. |
| On a rough morning the brief can shrink to “one thing or nothing, your call.” | holds | docs/DONNA-CANONICAL.md:118. |
| Skip a morning and there is no backlog and no count. | holds | docs/DONNA-CANONICAL.md:52,95. |
| Starting the opening Action opens the work view: a count-up timer and a writing space. | holds | docs/DONNA-CANONICAL.md:74. |
docs-site/guides/adhd-writing-paralysis.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna puts a single Action in front of you anchored in a concrete first move, shrinkable again. | holds | docs/DONNA-CANONICAL.md:33. |
| Starting opens the work view: a count-up timer and a writing space with Donna present. | holds | docs/DONNA-CANONICAL.md:74,145. |
| ”select the spot in your draft and ask Donna to write the literal next line with you, fill in details from memory, or restate why the report matters” (body, and again in the FAQ) | broken-docs-fixed | The selection toolbar ships one Donna move, why?; unstick (write the next line), pull_details, and call_it were cut from the menu: src/shell/canvas/editor/EditorBubbleMenu.tsx:11-19,97,581-592. Fixed on this page in both places to the move that exists. |
| ”Donna can tell you directly that it is fine to stop.” | broken-docs-fixed | Same defect: call_it is not on the menu. Corrected in the same edit. |
| Donna keeps no scoreboard; stepping away and returning costs nothing. | holds | docs/DONNA-CANONICAL.md:52,97. |
docs-site/guides/body-doubling-without-scheduling.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Start an Action and Donna opens the work view and stays present; nothing to book, no camera. | holds | docs/DONNA-CANONICAL.md:74,145. |
| The work view uses a count-up timer, so no countdown runs against you. | holds | docs/DONNA-CANONICAL.md:74. |
| ”If you get stuck mid-draft, ask Donna for the next line.” (Step 3) | broken-docs-fixed | The inline next-line move is not on the selection menu: src/shell/canvas/editor/EditorBubbleMenu.tsx:11-19,581-592. What is live is Donna’s dock, which sees the live draft (docs/DONNA-CANONICAL.md:145). Fixed on this page. |
| ”Over your draft, ask Donna to write the next line, recall a detail you told it earlier, remind you why the task matters, or tell you it is fine to stop.” | broken-docs-fixed | Same defect. Fixed on this page. |
| Donna keeps no record of how long you stayed or how often you return. | holds | docs/DONNA-CANONICAL.md:95,102. |
| Donna reads only what you choose to share; no monitoring. | holds | docs/DONNA-CANONICAL.md:39,53. |
| Work across sittings can be held as a Cycle. | holds | docs/DONNA-CANONICAL.md:26. |
docs-site/guides/building-habits-with-adhd.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna shapes the commitment as a Cycle and, at the end, offers renew / land / park. | holds | docs/DONNA-CANONICAL.md:26. |
| Donna keeps no streaks, marks nothing as a break, and never counts skipped days. | holds | docs/DONNA-CANONICAL.md:29,95,97. |
| One repetition at a time, shrinking on a low-energy day, with “nothing today” a valid answer Donna will offer. | holds | docs/DONNA-CANONICAL.md:122. |
| Donna holds which repetitions are done and which remain; the morning check-in surfaces the Cycle’s next Action when it fits. | holds | docs/DONNA-CANONICAL.md:26,140. |
docs-site/guides/cant-reply-to-emails-adhd.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna puts a single Action in front of you sized to one message and two lines. | holds | docs/DONNA-CANONICAL.md:33,50. |
| ”Over your draft, you can ask Donna to write the literal next line” (body, and again in the FAQ) | broken-docs-fixed | Not on the selection menu: src/shell/canvas/editor/EditorBubbleMenu.tsx:11-19,97,581-592. Fixed on this page in both places. |
| ”Donna can pull that detail from memory and drop it into the draft” | broken-docs-fixed | pull_details was cut from the menu, and the live why? move explicitly does not touch the draft (src/shell/canvas/editor/EditorBubbleMenu.tsx:20-23, docs-site/daily/working-an-action.mdx:51). Fixed on this page. |
| If you have connected the tool, Donna can offer to send the reply, always with a confirm step. | holds | docs/DONNA-CANONICAL.md:41. |
| Come back after a day or a month and Donna starts from the current day, nothing marked overdue. | holds | docs/DONNA-CANONICAL.md:52,94. |
docs-site/guides/finishing-big-projects-adhd.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| An Outcome carries a concrete success picture in your own words, and every later step points at it. | holds | docs/DONNA-CANONICAL.md:25. |
| Donna breaks the Outcome into Cycles: short multi-day commitments of a few Actions. | holds | docs/DONNA-CANONICAL.md:26. |
| Within a Cycle, one Action at a time, sized to time and energy. | holds | docs/DONNA-CANONICAL.md:33,50. |
| Closing a Cycle: Donna names what moved and offers renew / land / park. | holds | docs/DONNA-CANONICAL.md:26. |
| A landed Outcome keeps its finished Cycles visible; Donna keeps no streaks or scoreboard. | holds | docs/DONNA-CANONICAL.md:97; src/shell/canvas/OutcomeSurface.tsx. |
| Starting an Action opens the work view: a count-up timer and a real editor. | holds | docs/DONNA-CANONICAL.md:74. |
docs-site/guides/getting-things-done-bad-day-adhd.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna reads whether you are running low, in the groove, or wound up, and changes what it asks, how it talks, and whether it reaches out. | holds | docs/DONNA-CANONICAL.md:50. |
The bad-day floor can shrink to rough one. one thing or nothing, your call. | holds | docs/DONNA-CANONICAL.md:118. |
| One Action sized to now, shrinkable with the first-step handle. | holds | docs/DONNA-CANONICAL.md:33. |
| No streaks; nothing you did not get to is counted. | holds | docs/DONNA-CANONICAL.md:95,97. |
| Stop for a day or a month and Donna starts from the current day. | holds | docs/DONNA-CANONICAL.md:52. |
| Starting an Action opens the work view: a count-up timer and a writing space. | holds | docs/DONNA-CANONICAL.md:74. |
docs-site/guides/index.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Twelve guide cards, each linking to a page that exists. | holds | The twelve hrefs resolve to the twelve docs-site/guides/*.mdx pages; npm run docs:check (broken-links) is the mechanical check. |
| ”Donna is a tool, not a treatment, and nothing here is a diagnosis.” | holds | docs/DONNA-CANONICAL.md:17 (Donna does not diagnose or treat anything). |
docs-site/guides/overwhelmed.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| One Action at a time, anchored in a concrete first move; no list to scan. | holds | docs/DONNA-CANONICAL.md:33,51. |
| Telling Donna it is a rough one collapses it to one small step, or nothing at all. | holds | docs/DONNA-CANONICAL.md:120-122 (“today’s a write-off” quiets Donna; “go easy on me” asks for lighter). |
| Brain dump, typed or spoken: loose pieces go to Capture, anything bigger is offered as an Outcome. | holds | docs/DONNA-CANONICAL.md:28, :122 (a brain dump gets no chips on a floor day). |
| Any Action can drop to its smallest first move; skipping gives a different angle. | holds | docs/DONNA-CANONICAL.md:33. |
| Stop for a day or a month and Donna starts from the current day. | holds | docs/DONNA-CANONICAL.md:52. |
| Starting an Action opens the work view. | holds | docs/DONNA-CANONICAL.md:74. |
docs-site/guides/starting-when-stuck.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna puts a single Action in front of you, sized to energy and time, anchored in a concrete first action. | holds | docs/DONNA-CANONICAL.md:33,50. |
| The first-step handle on the Action card shrinks it to its smallest move. | holds | docs/DONNA-CANONICAL.md:33. |
| Skipping builds a fresh take rather than returning the same step. | holds | docs/DONNA-CANONICAL.md:33. |
| Starting opens the work view: a count-up timer and an editor, with Donna a tap away. | holds | docs/DONNA-CANONICAL.md:74,145. |
| ”When you stop, Donna shows one line and, if you want, a single quick reflection.” | holds | The completion path’s optional one-line reflection; docs-site/daily/working-an-action.mdx:78. |
| Donna offers “nothing today” as a real option on a rough day. | holds | docs/DONNA-CANONICAL.md:122. |
| ”It is live at meetdonna.xyz, with a 14-day free trial.” | holds | src/lib/billing/plan.ts:5-7. |
docs-site/index.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna holds the plan, prioritizes, tracks time, and shows one next step at a time. | holds | docs/DONNA-CANONICAL.md:17,19,33. |
| Donna runs in the browser, with a layout that adapts to a phone screen. | holds | docs/DONNA-CANONICAL.md:35,137. |
| You can type or say it out loud and let it land as text. | holds | docs/DONNA-CANONICAL.md:138. |
| The morning check-in is “the one moment each day Donna opens with something first”. | holds | docs/DONNA-CANONICAL.md:140. |
| Every card link resolves to a page in this docs set. | holds | npm run docs:check (broken-links). |
docs-site/is-this-for-me.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna sizes each step to the moment rather than to an average day. | holds | docs/DONNA-CANONICAL.md:50. |
| Donna reads the calendar and carries the time-keeping. | holds | docs/DONNA-CANONICAL.md:148. |
| Donna tracks a long goal as an Outcome and keeps producing the next concrete step. | holds | docs/DONNA-CANONICAL.md:25,33. |
| ”You do not need a diagnosis to use Donna, and Donna will never ask you for one. It is not a medical product.” | holds | docs/DONNA-CANONICAL.md:17 (never asks for a diagnosis), :104 (a diagnosis or a request for either is in the Never table). |
| Donna does its own setup and upkeep; there is no backlog to groom. | holds | docs/DONNA-CANONICAL.md:19. |
| You can skip any step, and “nothing today” is an answer Donna works with. | holds | docs/DONNA-CANONICAL.md:33,122. |
docs-site/quickstart.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Signing up goes through the pricing page before the app opens. | holds | src/lib/billing/plan.ts:6-7 (“Access is a HARD GATE”), src/middleware.ts. |
| ”The trial runs 14 days and takes a card up front. Nothing is charged until the trial ends.” | holds | src/lib/billing/plan.ts:5-6, verbatim in substance. |
| A short welcome is already on the canvas the first time Donna opens, ending in one question. | holds | docs/DONNA-CANONICAL.md:150 (“a canned welcome already sitting on the canvas before anything is asked of a model, ending in one plain question”). |
| No starter Outcome and no starter Actions; outcomes, captures, and the start list each show their own empty state. | holds | docs/DONNA-CANONICAL.md:150,176. |
| Donna asks at most one question at a time. | holds | docs/DONNA-CANONICAL.md:51 (at most one open-ended question per delivered moment). |
| Donna offers to connect your calendar during the conversation. | holds | docs/DONNA-CANONICAL.md:149 (an in-feed pill). |
| Drop a plain-text, Markdown, or HTML file; PDF and Word are not supported yet. | holds | src/extractors/ supported types. |
| A What Donna can do pill sits beside the help control until your first real Action; the same map stays in the help menu afterwards. | holds | docs/DONNA-CANONICAL.md:150 (“A capability map pill sits beside the help control pre-graduation and lives on permanently in the help menu”). |
| ”Finishing that first Action is what retires the pill. Creating an Outcome does not.” | holds | docs/DONNA-CANONICAL.md:150 (“Graduation is one event, completing a first real Action; creating an Outcome graduates nobody”). |
| Nothing in the capability map is graded and nothing counts down. | holds | docs/DONNA-CANONICAL.md:176 (the learning map is the capability panel, not a checklist). |
| Hold the mic anywhere you can type; it lands as text in the bar. | holds | docs/DONNA-CANONICAL.md:138. |
docs-site/reference/faq.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna shows one next step at a time, built fresh; you do not groom a backlog. | holds | docs/DONNA-CANONICAL.md:33. |
| No diagnosis required; not a medical product; not therapy. | holds | docs/DONNA-CANONICAL.md:17,104. |
| Disappear for a while and nothing is counted; no gap summary, no backlog, nothing late. | holds | docs/DONNA-CANONICAL.md:52,94,102. |
| Donna does not watch your screen, log keystrokes, or monitor you between conversations. | holds | docs/DONNA-CANONICAL.md:39,53. |
| Skipping deletes nothing and is never counted. | holds | docs/DONNA-CANONICAL.md:95. |
| A voice preset and an actions-per-day setting, both in settings. | holds | src/shell/canvas/VoicePresetGrid.tsx:23-47, src/shell/canvas/ActionShapingSection.tsx:24-33. |
| Nothing sends on its own; you review and confirm recipient and text. | holds | docs/DONNA-CANONICAL.md:41. |
| A dropped document’s loose pieces go to Capture; Word and PDF are not read; “The file itself is never stored: Donna keeps only the text it pulled out.” | holds | docs/DONNA-CANONICAL.md:39 (“distilled at session close so only the understanding is kept and never the raw text”), src/extractors/. |
| Donna runs in a phone browser with the same account and memory; dictation lands as text; Donna replies in text. | holds | docs/DONNA-CANONICAL.md:137,138. |
| Check-ins: quiet hours in your timezone, at least two hours between any two, backoff when low or already unanswered. “The two-hour gap and the daily cap are fixed and cannot be changed.” | holds | src/reachout/types.ts:475,539; src/reachout/cadence.ts:11-27; the settings registry exposes no frequency control (src/shell/canvas/SettingsView.tsx:185-210). |
| Delete your account anytime from settings and everything goes with it. | holds | src/shell/canvas/SettingsView.tsx general → delete account. |
| Trial: 14 days, card up front, nothing charged until it ends. | holds | src/lib/billing/plan.ts:5-6. |
| A lapsed plan deletes nothing; the app routes you to pricing to subscribe. | holds | src/lib/billing/plan.ts:6-15, src/middleware.ts. |
| The billing panel’s exact status strings and the “manage billing” button. | unverifiable-from-repo | Rendered by Clerk Billing against a live subscription. |
docs-site/reference/glossary.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Action, Area, Capture, Cycle, Landed, Memory, Outcome, Parked, Habit, success picture, the before, the work view: definitions match the product vocabulary. | holds | docs/DONNA-CANONICAL.md:63-80 (the canonical vocabulary table), row by row. |
| ”Now / Next / Later / Parked / Landed” are the five states, grouped into three rooms. | holds | docs/DONNA-CANONICAL.md:73. |
| ”Routine / Recurring task” are the former names for a Habit. | holds | docs/DONNA-CANONICAL.md:76. |
| ”Session”: one sitting on one Action; a few app labels still read “session”. | holds | docs/DONNA-CANONICAL.md:67. |
| Grounding exercise: start from the wind glyph top-right, “or the + menu on a phone”. | broken-docs-fixed | Wind glyph is right (src/canvas/DonnaWindow.tsx:361); the phone trigger is a menu glyph, not a + (src/shell/canvas/MobileCommandBar.tsx:611,644). Fixed on this page. |
| Nudge: a reach-out under enforced rules (quiet hours, a minimum gap, backing off when low). | holds | src/reachout/cadence.ts:11-27; src/reachout/types.ts:475,539. |
docs-site/reference/settings.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Settings is one panel with five sections: general, personalization, connections, billing, privacy & about. | holds | src/shell/canvas/SettingsView.tsx:7,110,143-144 (the five category ids and their labels). |
| A search box at the top jumps you to a row. | holds | src/shell/canvas/SettingsView.tsx:151-210 (the search registry and its keywords). |
| Open from the sliders glyph bottom-left; “On a phone, use the + menu in the command bar, under Go to.” | broken-docs-fixed | Menu glyph, five flat rows, no “Go to”: src/shell/canvas/MobileCommandBar.tsx:611,644, src/shell/canvas/CommandSheet.tsx:118-152. Fixed on this page. |
| Four voice presets: sharp & dry, warm & direct, calm mentor, sparring partner. Voice changes wording, not a sound. | holds | src/shell/canvas/VoicePresetGrid.tsx:23-47 (names and descriptions verbatim). |
| Actions per day takes 1 to 10 and is a soft target eased on hard days; there is no separate control for how long an Action runs. | holds | src/shell/canvas/ActionShapingSection.tsx:24-33 (min={1} max={10}, helper “a soft target, eased on hard days.”). |
| Correcting Donna in conversation is the only control; there is no screen for viewing or editing what it learned. | holds | docs/DONNA-CANONICAL.md:167. |
| share your work surface is on by default; off, Donna knows you are working but cannot read the page. | holds | src/shell/canvas/SettingsView.tsx personalization row; the setting’s own words quoted at docs-site/reference/your-data.mdx:77. |
| Reaching out: let Donna reach out, active hours, morning brief and morning brief time, morning writing, automatic reviews, notifications on this device. | holds | src/shell/canvas/CadenceSection.tsx rows; docs/DONNA-CANONICAL.md:166 (MORNING_GATING_ENABLED true since 2026-08-04, so the chosen local hour is load-bearing). |
| The general section: full name, what Donna calls you, timezone, theme (light or dark), haptics, areas, sign out, delete account. | holds | src/shell/canvas/SettingsView.tsx:187 (theme row, general), :345-370 (the theme control is a light↔dark flip). |
docs-site/reference/shortcuts.mdx
| Claim | Verdict | Evidence | ||
|---|---|---|---|---|
⌘K / Ctrl+K opens the start list; inside it type to filter, arrows to move, Enter to start, Escape to close, Delete/Backspace removes a Recent row; it does nothing while a timer runs. | holds | src/shell/canvas/StartModal.tsx key handling and mount guard. | ||
| Ctrl + backtick: hold to dictate, release to stop, text arrives unsent. | holds | src/shell/useVoiceInput.ts, src/shell/dictationConfig.ts:154. | ||
Enter sends; mid-reply it queues in a chip above the bar. | holds | src/shell/canvas/BottomInput.tsx queue chip. | ||
Shift+Enter newline. | holds | src/shell/canvas/BottomInput.tsx. | ||
/daily_review, /review, /weekly_review are the only typed commands left; anything else after a ”/” sends as a message. | holds | docs/DONNA-CANONICAL.md:174 (“The desktop slash menu and its component are retired; the review commands stay typeable”); src/shell/canvas/slashCommands.ts. | ||
Delete / Backspace dismisses the selected capture row to the backlog. | holds | src/shell/canvas/CapturesPanel.tsx; src/persistence/inbox.ts:605. | ||
⌘Enter / Ctrl+Enter sends your note inside the Feedback panel. | holds | src/shell/canvas/FeedbackPanel.tsx:112 (`e.key === ‘Enter’ && (e.metaKey | e.ctrlKey)`). | |
Escape closes the day calendar, open menus, and open panels. | holds | src/shell/canvas/DayCalendar.tsx and the panel escape handlers. | ||
| There is no manual save shortcut; the editor saves as you type. | holds | docs/DONNA-CANONICAL.md:145 (autosave). |
docs-site/reference/troubleshooting.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Connect the calendar from settings, or from a chat when Donna offers; connecting grants read-and-write. | holds | docs/DONNA-CANONICAL.md:148,149. |
| ”Open settings … or from the + menu in the command bar on a phone” | broken-docs-fixed | Menu glyph, not a +: src/shell/canvas/MobileCommandBar.tsx:611,644. Fixed on this page. |
| The re-grant fix: disconnect the connected calendar row, then connect again. | holds | docs/DONNA-CANONICAL.md:148 (real disconnect). |
| Donna stays quiet when the master toggle is off, active hours exclude now, you have been active recently, or push is off. | holds | src/reachout/guard.ts (the dispatch choke point’s legs); src/reachout/cadence.ts:56-60. |
| Nothing to download; a Mac desktop app and a native iOS app are being built. | holds | docs/DONNA-CANONICAL.md:136,137. |
| A dropped reply shows a “try again” prompt and re-opens the box. | holds | src/shell/canvas/BottomInput.tsx retry affordance. |
| A failed save reads “couldn’t save, your words are safe” and the next change retries. | holds | src/shell/canvas/FocusView.tsx save-status copy. |
| Deleting the account removes it and its data and disconnects connected tools. | holds | src/shell/canvas/SettingsView.tsx delete flow; src/integrations/composio.ts revokeAllComposioConnections. |
| The surfaced integration set is Gmail, Notion, Google Drive, Google Docs, Todoist, Slack; others on request. | holds | src/integrations/composio.ts:282 and the surfaced list. |
| The plan gate routes you to pricing without an active plan or trial; a “Continue to Donna →” link appears if the redirect does not fire. | holds | src/lib/billing/plan.ts:6-7, src/middleware.ts, src/app/pricing/. |
docs-site/reference/your-data.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna reads conversations, the calendar if connected, connected tools when a task needs them, and the work-view page when the toggle is on. | holds | docs/DONNA-CANONICAL.md:39. |
| Donna does not watch your screen, log keystrokes, or track what you do between conversations. | holds | docs/DONNA-CANONICAL.md:39. |
| ”Donna does not act in your calendar or your connected tools on its own. Every change is one you asked for, one you made by hand, or the single automatic case described below.” | broken-docs-fixed | The automatic case is opt-in and off by default, which this sentence does not say. src/app/api/user-settings/route.ts:209 (calendar_writeback: false), src/time-truth/calendar-writeback.ts:10-15 (“CONSENT IS A READ, NOT AN ASSUMPTION … Both cases resolve to false”). Fixed on this page. |
| The seven-row inventory of what Donna keeps. | holds | docs/DONNA-CANONICAL.md:37; matches docs-site/concepts/work-and-memory.mdx. |
| No streaks, no late flags, no count of skips or days away; behavioral signals are never displayed as a score. | holds | docs/DONNA-CANONICAL.md:95-97,108. |
| A wrong belief is retired, not erased; the event history is append-only. | holds | src/memory/retire.ts; docs/DONNA-CANONICAL.md:37. |
| Connecting the calendar grants two permissions: read/write events and read the calendar list. | holds | docs/DONNA-CANONICAL.md:148. |
| ”Automatically, once: when you finish work you started from a calendar event, Donna writes the actual time you worked back onto that event. If that event has other attendees, the change may notify them.” | broken-docs-fixed | Three ways wrong. It is off unless you turn it on (src/app/api/user-settings/route.ts:209); it writes a NEW past event rather than editing the source event (src/time-truth/calendar-writeback.ts:1-6, “The server-side caller of the existing createEvent write path”); and that event’s title is the generic Tracked time (:48) with description Recorded in Donna. (:54), so there is no shared-event edit and no attendee notification. It also is not tied to work started from a calendar event: any cleanly closed period qualifies (:17-21). Fixed on this page. |
| Disconnecting the calendar revokes access at Google and clears synced events. | holds | docs/DONNA-CANONICAL.md:148. |
| Typed conversations and work run through OpenAI’s API; OpenAI does not train on API data and retains it at most 30 days for abuse monitoring. | holds | The provider is OpenAI (src/llm/); the retention statement is OpenAI’s published API policy, an external claim carried as a vendor fact. |
| The database is on Supabase, encrypted at rest (AES-256) and in transit (TLS); connected-tool tokens are encrypted again at the application layer. | holds | src/auth/supabase-client.ts (hosted Supabase); token encryption in src/integrations/. The AES-256/TLS line is Supabase’s published platform fact. |
| The work-surface toggle’s own words are quoted verbatim. | holds | src/shell/canvas/SettingsView.tsx personalization row copy. |
| Deleting the account is a two-step confirm reading “delete your account and all of its data?” with “yes, delete” / “keep my account”, and the hint “deletes your account, history, and everything Donna learned. can’t be undone.” | holds | src/shell/canvas/SettingsView.tsx delete-account confirm copy. |
docs-site/support.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Email hello@meetdonna.xyz reaches a human. | holds | The address is the published support address; the reply is a human process, not a code path. |
| From inside Donna: the sliders glyph bottom-left has a feedback box that reaches the same place. | holds | src/shell/canvas/FeedbackPanel.tsx; src/shell/canvas/HelpControl.tsx feedback entry. |
| Donna runs in the browser at meetdonna.xyz, with a layout that adapts to a phone screen. | holds | docs/DONNA-CANONICAL.md:35,137. |
| ”Signing in is the whole setup.” | holds | docs/DONNA-CANONICAL.md:150 (billing hard-gate, then a canned welcome; no wizard). |
docs-site/the-tour.mdx
| Claim | Verdict | Evidence |
|---|---|---|
| Donna is one screen: the next Action in the middle, a command bar at the bottom, controls top-right and bottom-left. | holds | docs/DONNA-CANONICAL.md:35 (one calm full-bleed canvas with a composer at the bottom; two quiet corners of chrome). |
| Top-right: outcomes, start, breathing, and the clock. | holds | src/canvas/DonnaWindow.tsx:361 (the Wind “breathing” verb); the corner verb set. |
⌘K opens start from anywhere; typing and Enter starts a 25-minute timer. | holds | src/shell/canvas/StartModal.tsx:69. |
| The clock shows the time plus what is next; clicking opens the day calendar on the right; Escape closes it. While a timer runs the clock does not open the calendar. | holds | docs/DONNA-CANONICAL.md:139 (an ambient clock and next-transition label toggles the full day calendar as a scrimless desktop sidecar). |
| Enter sends, Shift+Enter newlines, a message sent mid-reply waits in a chip. | holds | src/shell/canvas/BottomInput.tsx. |
| + attaches a document (plain text, Markdown, HTML); dragging or pasting also works. | holds | src/shell/canvas/BottomInput.tsx attach control; src/extractors/. |
| The inbox glyph opens captures; while open, typing lands there. | holds | src/shell/canvas/BottomInput.tsx capture-mode routing. |
The mic dictates: hold it or Ctrl + backtick. | holds | src/shell/useVoiceInput.ts. |
| The three review commands are the only typed commands left; there is no ”/” menu in the bar. | holds | docs/DONNA-CANONICAL.md:174. |
| ”The menu glyph in the bottom bar opens one panel with five rows: Settings, Breathing, Captures, Outcomes, and Start.” | holds | src/shell/canvas/MobileCommandBar.tsx:611,644 (the Menu glyph, “Open menu”), src/shell/canvas/CommandSheet.tsx:134-152 (MOBILE_MENU_IDS, exactly those five, in that order). This page is the one that had it right; nine others said + and are fixed in this diff. |
| Picking a row changes what is inside the panel rather than opening a second surface. | holds | src/shell/canvas/CommandSheet.tsx:155-165 (the level machine). |
| The sliders glyph bottom-left opens Docs, Feedback, Settings, the theme control (Dark, Light, System), and the capability map. | holds | src/shell/canvas/HelpControl.tsx:11 (“a 3-way segmented control (dark / light / system)”), :453-457 (THEME_OPTIONS). |
| During your first days the capability map also sits beside the glyph as its own pill; nothing on it is counted. | holds | docs/DONNA-CANONICAL.md:150. |
| The “Where do I…” table’s eight rows each name a control that exists. | holds | Each row resolves to a control cited above in this section. |