# PR #27909 capture matrix (lead-trimmed from proof-audit pass 1)

Head `ab17d3b8b1295170213b7537dddcf00dadee7708` (after), merge-base `be5a887b939dadf74e62a477bbe2c805d561fe9e` (before).
Pass-1 matrix: https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2774779dfdfcd4b8/matrix.md

The diff is one CSS rule on the editor root `.composer-tiptap.ProseMirror`. Every caller, mode and descendant
inherits the same two computed properties, so rows are kept only where the rendered glyphs, the surface, or an
interaction differ in a way a reader could not infer from another row.

`W` = Linux Chromium web 1440×1000, `N` = Linux Chromium 390×844 with touch emulation, `E` = Linux Electron
desktop app under headless-desktop. DPR 1, 100% zoom. Sent text and unsent draft are both `a -> b => c` unless stated.

| Row | Fixture | Capture | Seed |
|---|---|---|---|
| A1 | Interface + Prompt font `Inter Variable` (reporter's settings), chat composer vs sent message | W light, still | S1 + Appearance settings |
| A2 | same | W dark, still | same |
| A3 | same | N light, still (composer expanded) | same |
| A4 | same | N dark, still (composer expanded) | same |
| A-rec | same, editing through shaped arrows: click end, ArrowLeft through both arrows (caret stops at every source char), Shift+ArrowLeft selects one hyphen, type x, Backspace, retype -, Enter sends; sent row is raw ASCII | W light, **recording** before and after with step timestamps | same |
| B | Untouched default font settings (Linux stack resolves to bundled Inter) | W dark, still; record actual rendered font | S1, fresh preferences |
| E | Linux desktop app (reported surface), default fonts (resolve to bundled Inter) | E light or dark, still of the whole window; Inter via Settings additionally if reachable | S1 through the desktop app's own server |
| D | Rich content: D sample from the pass-1 matrix (marks, heading, quote, lists, file link, inline code, TS fence) in default monospace; same source as the sent message | W light, still with readable crops of prose and code | S1 + real Markdown paste |
| P | Settings → Appearance simple Prompt font preview with ` a -> b => c` appended | W light, still | /settings/appearance |
| Q | Separate fonts: Interface `Liberation Sans`, Prompt `Inter Variable`; preview + chat draft | W dark, still | Appearance → Separate fonts |

Dropped from pass 1, with reasons (list these as not separately captured in the PR body):
- C (prompt 20px, multiline overflow at 390): the only extra effect is narrower arrow advances moving wrap points, already visible as the advance shift in A; the rule adds no size or overflow branch.
- D2 (ligating monospace code font): needs a font this host lacks; expected effect is that a ligating code font ligates in the composer as it already does in sent messages. Stated in "what else changed", not captured.
- F (plain mode), G (literal pending answer, readonly): same editor root and same inherited properties as A; no separate glyph path.
- A's mobile collapse/expand recording: the collapsed label is a separate button outside the selector; A3/A4 show the expanded editor.
- X1, X2: excluded in pass 1.
