{"path":"research/corpus-graph/readers/2026-10-11-pages-open-question-ux-principles-and-design-guide-as-a-reader-returned-it.md","content":"# What a reader would tell the founder about the UX principles and the design guide (the open question) (2026-10-11)\n\nA read-only reader (Sonnet), a helper of the app with a shell and the search by meaning. It is part of the\nreading of the pages written for visitors, for the open question, described in\n[../reading-for-every-kind-of-insight.md](../reading-for-every-kind-of-insight.md) § 7b. It was given the brief in\n[../open-reading-brief.md](../open-reading-brief.md), everything the founder has settled in one file (135 items), and these 2 notes:\n\n- `docs/ux-principles.md`\n- `docs/design-guide.md`\n\nIt made 54 tool calls in about 9 minutes and used 207,000 tokens. Its report is below, unchanged. Nothing in it is kept or acted on until the\nquoted words have been checked by code and the passages opened; what was done with it is in § 7b of the note above.\n\n---\n\n2 of the 2 notes read in full.\n\n### O1\nrests_on: docs/ux-principles.md:5 \"is measured, and replicated five times, is **faster triage**: average time on one screen fell from\"\nrests_on: docs/ux-principles.md:9 \"own value. And the answer to rendering a dense graph is **slicing, not zooming**: one argument on\"\nrests_on: docs/ux-principles.md:52 \"a computed map with a box budget of about ten, supporters to the left of the claim and challengers to the right, three zoom steps, and a click that travels.\"\nremark: What was replicated five times is how long people stay on one screen. \"Faster triage\" is a reading of that number, and the research note credits the phrase to reviewers. Dwell time alone cannot tell \"decide sooner what deserves focus\" from \"cannot hold focus\", and the banner's design consequence (brevity paid once, depth after) depends on which is true. The banner also promises \"slicing, not zooming\", yet P1 keeps \"semantic zoom\" (line 48) and the 09-20 map has \"three zoom steps\". Neither of those mentions the banner.\nso: Label \"faster triage\" the working reading, and name what readers do past the first screen that would show it wrong; the banner itself promises that measurement discipline.\nsure: fairly. I read game-feel-and-the-first-screen.md lines 28-50 (44/47/50 s dwell figures, triage wording attributed to reviewers). I did not check Mark's own interpretation of her data.\n\n### O2\nrests_on: docs/ux-principles.md:28 \"Every structured argumentation platform that died (20+ since 2007) had adequate technology and inadequate UX. The graveyard proves that logical rigor without experiential delight is a dead end.\"\nrests_on: docs/ux-principles.md:18 \"The convictions predate the research. The research validates, deepens, and concretizes them.\"\nremark: Conviction 1 says the cemetery \"proves\" thin UX killed every predecessor. The note it cites lists Kialo with a \"Clean UI\" and over a million registered users, stalled on revenue, format and visibility. That note's section 2 opens with an August 2026 reframe: the friction diagnosis \"was right\", LLM extraction has removed it, and exposure and social cost, which \"neither yields to better tooling\", are now the binding constraints. So the research did not simply validate the conviction; it narrowed it. Conviction 4 rests on the same ground. The page cites incentives-analysis only under P21.\nso: Put a one-line pointer to the reframe under conviction 1 and replace \"proves\" with what the cemetery does show: good UX is necessary, and it is no longer what binds.\nsure: fairly. I read adoption-problem.md lines 7-30 and 72-74.\n\n### O3\nrests_on: docs/ux-principles.md:62 \"**Implementation decision (Mar 31, 2026 — Option B)**: Single-axis human voting (agree/disagree only).\"\nrests_on: docs/ux-principles.md:293 \"6. Ask the user to rate the counter-argument's QUALITY (not agreement) — teaches the two-axis distinction\"\nrests_on: docs/ux-principles.md:441 \"7. **Never treat mobile as degraded desktop.** Mobile users are the primary data source. Their evaluations produce the quality scores that desktop analysts rely on.\"\nrests_on: docs/design-guide.md:306 \"- [docs/research/epistemic-gamification.md](research/epistemic-gamification.md) — calibration rewards, two-axis voting, reputation architecture\"\nremark: P2's Option B, and the 2026-09-09 correction of anti-pattern 2, say quality is computed from answered critical questions and never voted. Three other places still describe people rating quality. P16 step 6 teaches \"the two-axis distinction\" by having a newcomer rate quality, and line 295 calls that the first meaningful contribution. Anti-pattern 7 says mobile users' \"evaluations produce the quality scores\". The design guide advertises \"two-axis voting\". The correction reached P2 and anti-pattern 2 and not their neighbours. P16 is the planned first-impression hook, so the stale step matters most there.\nso: Rewrite P16 step 6 and the anti-pattern 7 clause to the computed-quality model, and decide what the newcomer does instead (answer one critical question?).\nsure: yes. I searched \"two-axis\" across docs/*.md, and web/src and deliberus/ have no onboarding-hook code.\n\n### O4\nrests_on: docs/ux-principles.md:452 \"## Why the inversion principle outranks everything else here (2026-08-27)\"\nrests_on: docs/ux-principles.md:455 \"inversion principle — *the machine holds the user's hand through the descent* — as **the single most\"\nrests_on: docs/ux-principles.md:101 \"**The inversion principle** (Jul 6, 2026, from the first dogfood run): the correction UX as shipped still has the user holding the machine's hand\"\nrests_on: docs/ux-principles.md:20 \"They are invisible to anyone scanning the `### P` headings, which is a findability problem rather than an absence\"\nremark: By its own account the inversion principle is the most success-critical commitment in the whole system, and the always-loaded CLAUDE.md line points readers here for it. It has no heading, no number and no row in the Research Foundation table. It is a bold run-in inside P4's sixth paragraph (line 101), and the section arguing it outranks everything sits after the anti-patterns. That is the exact burial the 2026-08-17 audit repaired for P7a. Meanwhile unbuilt P19 (thinking hats) has a full heading.\nso: Give it a heading (a P4a, as P7a was done) and a table row, so the pointer from CLAUDE.md lands on it.\nsure: yes. I read the heading list (rg \"^#{1,4} \") and searched \"inversion\" in the page; it appears only at lines 101 and 452.\n\n### O5\nrests_on: docs/ux-principles.md:169 \"Notify when someone challenged your reasoning, not when someone agreed with it. Never notify for raw engagement metrics.\"\nrests_on: docs/ux-principles.md:103 \"This yields a testable rule for every gap-displaying surface, including the completeness oracle's `unsupported_value_premises`: **no gap displayed without a move offered.**\"\nremark: P4 states the PACE rule as a test for \"every gap-displaying surface\". P9 then designs a notification stream whose only triggers are \"your argument has a counter-argument\", \"a premise you support has been flagged\" and \"the community has downgraded a key premise\". All of them tell the reader a gap exists. P9 says nothing about the move each carries, and it bans the one kind of notification, agreement, that is never a gap. By P4's own mechanism that stream trends toward anxiety-related inhibition rather than approach. The rule was not carried over to the page's own notification section.\nso: Add to P9 that every notification names its move, and decide whether any non-adversarial notification (your question was answered) is allowed.\nsure: a guess. This is an inference from P4's rule. deliberus/notifications.py is only operator push alerts, so there is no reader-facing notification code to check.\n\n### O6\nrests_on: docs/ux-principles.md:262 \"### P14: The Interpassivity Warning — LLMs Scaffold, Never Replace\"\nrests_on: docs/ux-principles.md:264 \"systems that do cognitive work FOR users rob them of the epistemic engagement that IS the point\"\nrests_on: docs/ux-principles.md:443 \"9. **Scaffold, never replace.** ⚠ **This headline is under revision and there is currently no\"\nremark: The \"under revision\" flag sits on anti-pattern 9, 180 lines from P14. P14 itself carries no flag. Its heading still reads \"LLMs Scaffold, Never Replace\", which is the superseded wording (ledger J9). Its first sentence is the delegation-hostile frame. conviction-and-critique.md lines 141-149 records that this frame already caused one measured regression and says \"P14's own body still leads with the rejected frame, which is where the next regression will come from\". The rewrite is open as ledger R14. The reader or session who reads P14 gets no warning.\nso: Put a two-line banner on P14 now, pointing to the naming note and R14, rather than waiting for the rewrite ruling.\nsure: yes. I read conviction-and-critique.md 141-152 and session26-open-rulings.md R9/R14; the page's only other mention of the problem is the unruled \"founder input\" in the naming note.\n\n### O7\nrests_on: docs/ux-principles.md:299 \"### P17: Feed as Dashboard, Not Timeline — The Organic Redraw\"\nrests_on: docs/ux-principles.md:304 \"- **60% quality threshold** — only arguments meeting minimum quality appear in primary feed\"\nremark: P1, P3, P4, P6, P15, P18, P20 and P22 carry dated implementation notes, but P8, P16, P17 and P19 read as how the product works. They are not built. deliberus/feed.py lists Bayesian surprise under \"Future\", has no 60% gate and no coverage guarantee, and defaults to needs-help. needs-help ranks claims with the most unanswered questions, which is close to the opposite of a quality gate. Under P22 a claim with nothing answered is \"unexamined\", not 0.5 quality, so a 60% gate would also exclude every new claim. I found no code for the thinking hats or the onboarding hook.\nso: Give every principle a one-line status (built, partly, design only), starting with P8, P16, P17 and P19, and drop or restate the 60% figure.\nsure: yes on the code (read feed.py 1-58, rg for hats and onboarding in web/src and deliberus). The P22 interaction is my inference.\n\n### O8\nrests_on: docs/ux-principles.md:350 \"searching it for *side-by-side*, *synchronous* or *co-present* returns nothing; everything documented is either solo or asynchronous\"\nremark: This is an absence claim made by search, written in the present tense, on a page that now contains the searched words (co-present appears 7 times here, and 43 files in docs/ contain one of the three terms). It was true on 2026-08-17 and became false when P21 was written; line 360 gets the tense right (\"returned nothing\"), line 350 does not. A reader who repeats the search finds this page first. The page's own audit paragraph shows how an \"it's missing\" claim turns into a \"it was findability\" claim, which is the same hazard.\nso: Date the claim in line 350 (\"on 2026-08-17 returned nothing\") or delete the parenthesis.\nsure: yes. I ran rg -l -i \"co-present|side-by-side|synchronous\" docs (43 files) and counted co-present in this page (7).\n\n### O9\nrests_on: docs/ux-principles.md:427 \"### P24 (CANDIDATE, unratified — proposed 2026-09-10): Invite the Reframe\"\nrests_on: docs/ux-principles.md:429 \"Founder ruling 2026-09-10, verbatim: *\"Sure. Yes. This is one of the central ways for humans to contribute after all (read up on that), so I agree,\"\nrests_on: docs/ux-principles.md:577 \"| P23: Addressability | [structure-versus-scale.md](research/structure-versus-scale.md), [interaction-modalities-and-the-pointing-test.md](research/interaction-modalities-and-the-pointing-test.md) |\"\nremark: P24 is labelled CANDIDATE, unratified, yet its first line is a founder ruling, and ledger K5/K6 are RULED 2026-09-10 \"in full\" with a build item. So the reader cannot tell what is unratified: the wording, the number, or the placement. P25 (ruled 09-22) sits above P24 in the file. Neither appears in the Research Foundation table, which stops at P23. design-guide.md:300 still says \"23 UX principles\".\nso: Say in P24's heading exactly what is still unratified (or promote it), put P24 before P25, and extend the table.\nsure: fairly. I read the K5/K6 rows in the settled file; I did not check whether the numbered-principle wording was itself ruled.\n\n### O10\nrests_on: docs/ux-principles.md:438 \"4. **Never present AI-generated structure as authoritative.** The confirmation step is sacred. The user always has the last word on what they meant.\"\nrests_on: docs/ux-principles.md:72 \"The confirmation step is non-optional — it is the trust layer.\"\nremark: The confirmation step does three jobs on this page: an author checking a rendering of their own words, a person checking a machine's split of someone else's claim, and a click that stands in for thought. The later rulings kept only the first as sacred. On 2026-08-31 he blessed \"no ratify act\", and on 2026-09-21 the design became \"the machine writes what it found, and a person corrects\". split-review-and-the-founders-intentions.md lines 336-340 already reads anti-pattern 4 as covering only the author's own words. The page never says that, so \"sacred\" and \"non-optional\" read as universal.\nso: Add the scope clause to anti-pattern 4 and P3 (the author confirming their own words), which is what the headline-test rule asks of a bolded refusal.\nsure: fairly. I read the cited section of the split-review note and CLAUDE.md line 857. Neither note and neither ux-principles passage mentions the write-then-review sittings.\n\n### O11\nrests_on: docs/ux-principles.md:477 \"## Naming note on principle 9, and the layer collision it exposed (2026-08-27)\"\nrests_on: docs/ux-principles.md:167 \"### P9: Notifications Are Epistemic, Not Engagement-Maximizing\"\nrests_on: docs/ux-principles.md:507 \"| **Principle 9** | whether a person's confirmation carries any judgment | the **person's** act of attending |\"\nremark: On this page \"P9\" is the notifications principle and \"principle 9\" is anti-pattern 9. The naming note's heading, its prose and its comparison table all say \"principle 9\", while everything above is numbered P1 to P25. Ledger row J9 had to be corrected because this exact ordinal confusion made a row name the wrong list. The bare ordinal the correction warned about is still in the page that caused it. A reader scanning the heading list for \"9\" lands on notifications.\nso: Rename the heading and table cell \"anti-pattern 9\" (and \"anti-pattern 9 (P14)\" where it is cross-referenced).\nsure: yes. I searched for \"principle 9\" and P9 on the page: lines 167, 477, 502 and 507.\n\n### O12\nrests_on: docs/ux-principles.md:480 \"The reasoning is recorded here rather than in the session's ruling\"\nrests_on: docs/ux-principles.md:512 \"**Proposal on the table, unruled**: headline **\"Confirming is not checking.\"** — self-decoding,\"\nrests_on: docs/ux-principles.md:444 \"proposal on the table** — *\"Confirming is not checking\"* was withdrawn 2026-08-29 for failing the\"\nrests_on: docs/ux-principles.md:485 \"stranger test** — which is how the two-test discipline for rule headlines was discovered\"\nremark: Read top to bottom, the naming note presents \"Confirming is not checking\" as a live proposal. Line 444 says it was withdrawn on 08-29, and nothing in the note's body says so. The note also says the arc found a \"two-test discipline\". The arc ended with three tests (J13): the collision test was earned against this very headline. The reason \"scaffold\" failed (two ratified senses that disagree about whether it comes down) is in ledger J9, not here. The note says it exists so the argument \"should outlive\" the ledger, but the ledger rows now hold the argument's ending.\nso: Add a dated status line at the head of the note pointing at J9 to J13, and move the collision finding into it.\nsure: yes. I compared the note with settled rows J9, J10, J13 and with session26-open-rulings.md; I searched the page for \"collision\" (only the unrelated \"layer collision\").\n\n### O13\nrests_on: docs/ux-principles.md:541 \"**One historical question, checked and unresolved**: whether Deutsch and Feynman ever publicly\"\nremark: Ledger J16, closed 2026-09-09, says \"the anecdote stays out of every doc\". This page is the one doc in docs/ that still carries it, as a full paragraph on the public site. The paragraph makes unsourced biographical claims about two real people (Deutsch's motive for the quantum computer, Feynman's, \"far apart on interpretation\") in answer to a question no visitor has asked. Either J16 meant only the fight, in which case a null-result paragraph can stay, or it meant the whole matter, in which case this paragraph should go. The ledger does not say which.\nso: Decide which J16 meant, then cut the paragraph or source its two claims.\nsure: fairly. rg for Deutsch-and-Feynman across docs finds it only here, the J16 row in session26-open-rulings.md, and a reader file.\n\n### O14\nrests_on: docs/design-guide.md:212 \"4. Concept keywords: `Attunement · Lenses · Bridging · Depth · Convergence · Vision` (lavender, 1.25rem, linked)\"\nrests_on: docs/design-guide.md:17 \"**Page transitions**: View Transitions API — blur-out (200ms) on old, fade-in (300ms) on new. Smooth cross-page navigation.\"\nremark: The guide's \"Landing page (top → bottom)\" describes an earlier page: header, input, Full Picture banner, keywords, four paragraphs. The shipped landing (PublicHome.svelte) runs hero, conviction ladder, example map, constellation, about beats and three doors. Only then come the reading links, now with Frontier, and the input, now titled \"Analyze your own thinking\". A code comment there records the founder's 2026-09-19 instruction that reading come before the input box. The guide still shows the input second and calls transitions blur-out 200ms and fade-in 300ms. app.css has fade-out 120ms and fade-in 180ms with no blur. The guide was last committed 2026-09-21, for the map rows. The reordering also sits uneasily with Conviction 3 and P7, where the input box is the ground level.\nso: Replace the landing list with the real order and the 09-19 ruling, or drop page-by-page layouts from the guide.\nsure: yes on the facts. I read PublicHome.svelte 640-760 and app.css 97-108, and used git log dates.\n\n### O15\nrests_on: docs/design-guide.md:282 \"Green = supports/agree. Red = attacks/disagree. Amber = qualifies/evidence. Purple = reframes/decompose. Blue = empirical/decomposes.\"\nrests_on: docs/ux-principles.md:60 \"Collapsing quality and stance into a single upvote/downvote destroys this signal.\"\nremark: The product's central distinction is that stance (voted), relation (supports or attacks) and quality (computed) must not be collapsed. The palette collapses them into the same four hues. In code the \"agree\" button uses --dl-success and the \"well supported\" QBAF badge uses the same #34d399, while the \"disagree\" button and the red badge share --dl-danger's hue. On the maps, blue is both the \"fact\" box and the \"splits\" line, and amber is the \"should\" box and the \"assumed\" and \"narrows\" lines. The guide has four claim types and mapLanguage.ts has three kinds. Key principle 4 says each colour has \"a dedicated\" meaning. Disagreement is also coded as danger, in a product that calls it \"the richest territory\".\nso: Decide which dimension owns green and red, and give votes a distinct pair (or none), then rewrite key principle 4 to match.\nsure: yes on the facts (app.css 336-360, claim page .qbaf-* classes, mapLanguage.ts). The harm to readers is my inference.\n\n### O16\nrests_on: docs/design-guide.md:25 \"All colors live in `:root` in `app.css`. Change one value → changes everywhere.\"\nrests_on: docs/ux-principles.md:382 \"So the principle binds the surface, not the arithmetic: **every display must have vocabulary for \"I have no reading here.\"**\"\nremark: The promise does not hold for the colours that carry the epistemic states. In web/src the four semantic hexes appear hard-coded 58 times (#fbbf24 18, #f87171 21, #34d399 12, #60a5fa 7), against about five uses of the four semantic tokens. The badge's six states (green, blue, amber, red, gray, neutral, including the UNEXAMINED and UNSETTLED vocabulary P22 required) live as scoped classes in claim/[id]/+page.svelte. The P25 compartment marker is hard-coded warm rgba in ScopeSwitcher.svelte. None of these has an entry in the guide, so the palette where \"I have no reading\" should be defined does not mention it.\nso: Move the badge-state and compartment-marker colours into tokens and into the guide, since they are what P22 and P25 make load-bearing.\nsure: yes. I counted hex literals with rg in web/src, and read the badge CSS and ScopeSwitcher styles.\n\n### O17\nrests_on: docs/design-guide.md:284 \"5. **The graph is a map, not the product.** The D3 graph on claim pages is supplementary — the primary experience is card-based text. The graph is for orientation.\"\nrests_on: docs/design-guide.md:263 \"| `ClaimGraph.svelte` | D3 force-directed ego-graph. No longer mounted on any page (replaced 2026-09-20) |\"\nrests_on: docs/ux-principles.md:54 \"**The founder's brief of 2026-09-20 goes further than this principle, and the principle has not been re-ruled.**\"\nremark: Key principle 5 repeats P1 in its pre-09-20 form, 20 lines below the table row saying that D3 graph is unmounted. Its \"card-based text is the primary experience\" is the thing the founder's brief reversed (\"instead of the endless walls of text… more like a video game\"). ux-principles says P1 \"has not been re-ruled\", so the guide states as settled what its sibling says is unsettled. The two rules he gave for any map (as few boxes and as little text as possible; the wheel must not zoom without ⌘ or Ctrl) exist only inside one long P1 paragraph. The guide has no mention of them.\nso: Re-rule P1 either way, then restate it in the guide and add the two map rules where a styling session will look.\nsure: yes. I searched design-guide.md for ⌘, Ctrl and \"box\" and found nothing relevant, and rg confirmed ClaimGraph is mounted nowhere.\n\n### O18\nrests_on: docs/design-guide.md:165 \"Every interactive element gets a **same-colored outer glow** on hover (100ms transition):\"\nrests_on: docs/ux-principles.md:441 \"7. **Never treat mobile as degraded desktop.** Mobile users are the primary data source. Their evaluations produce the quality scores that desktop analysts rely on.\"\nremark: Anti-pattern 7 and P1 make the phone the main case (\"the 90% experience\"). The design guide never mentions phones, touch, tap targets, breakpoints or responsive layout, apart from one link to a research note at line 303. Its whole interaction language is hover: glow on hover, .breathe, .shimmer, .undercurrent's underline, and `cursor: help`. Hover does not exist on touch. The code has @media rules in 15 files, so responsive behaviour is being decided file by file, outside the guide.\nso: Add a short touch section saying what each hover effect becomes on a phone, plus a minimum target size.\nsure: fairly. I searched the guide for mobile, touch, tap, responsive, breakpoint and @media and counted @media files with rg. I did not test the pages on a phone.\n\nLooked for and did not find: a 60% quality gate, coverage guarantee or Bayesian surprise ranking in deliberus/feed.py; code for the thinking-hats funnel or the onboarding hook; any status marker on P14's body; a heading or table row for the inversion principle; the collision test or the J13 outcome inside the naming note; any mention of write-then-review sittings or \"no ratify act\" in either note; app.css tokens for UNEXAMINED, UNSETTLED or the compartment marker; any mention of phones, touch or the map-wheel rules in design-guide.md; a second doc that still carries the Deutsch-Feynman paragraph.\n"}