diff --git a/docs/qfd.md b/docs/qfd.md index 3d142c2..0a2407c 100644 --- a/docs/qfd.md +++ b/docs/qfd.md @@ -42,6 +42,7 @@ What a user (= me) values about the device, with importance weights on a | W11 | Multi-day battery life (v0.8 onward) | 4 | [roadmap → v0.8](roadmap.md#v08--power-battery--sleep--) | | W12 | Local-only file scope coexists with git scope (v0.5+) | 5 | [README → scopes](../README.md#vision), [roadmap → v0.5](roadmap.md#v05--file-palette--multi-file--) | | W13 | Typography sets a writing-tool tone — typewriter or developer editor, never gadget | 7 | [roadmap → v1.0](roadmap.md), [README → UX](../README.md#ux-boundaries-set-by-the-medium) | +| W14 | I can carry the device and write away from a desk | 8 | [roadmap → v0.8](roadmap.md#v08--power-battery--sleep--), [README → hardware](../README.md#hardware) | --- @@ -86,22 +87,40 @@ from its basement row. keeps a fixed-size glyph-cache load on top of that arena pressure. 2. **H2 — partial-refresh region area** (177). Bound how many pixels the panel has to flip per keypress; [ADR-003] is the hardware-side answer. -3. **H1 — keypress latency** (148). The single most user-visible number; +3. **H8 — save durability** (156). Atomic-rename + fsync; FAT's weakness + is acknowledged in [ADR-007] and mitigated, not designed around. H8's + voter base spans W3 (power-loss correctness), W6 (long sessions), + W12 (file scopes), and W14 (carrying = unclean shutdowns) — the + fourth voter is what lifts H8 into the top three by arithmetic alone. +4. **H12 — Wi-Fi reconnect** (153). Mobile use is the chief driver + (W14 + W2 + W4 + W6); [ADR-005] PAT auth and reconnect backoff own + this. Previously below the top six on a stationary v0.1 reading; + W14 promotes it. +5. **H1 — keypress latency** (148). The single most user-visible number; [ADR-002] and [ADR-003] are co-conspirators. -4. **H3 — full-refresh cadence** (144). The ghosting/flash tradeoff; lives +6. **H3 — full-refresh cadence** (144). The ghosting/flash tradeoff; lives in the render layer. -5. **H6 — push success rate** (134). [ADR-004] (gitoxide) and [ADR-005] (PAT - over HTTPS) own this jointly; spike 7 is the kill-switch. -6. **H8 — save durability** (132). Atomic-rename + fsync; FAT's weakness is - acknowledged in [ADR-007] and mitigated, not designed around. -**Why H8 ranks where it does.** HoQ totals reward functions that touch many -WHATs over functions that absolutely matter for one WHAT. W3 ("Pulling -power never corrupts the file", weight 10) is the strongest single -requirement but its only strong link is H8. H9, by contrast, collects from -W1+W2+W6 to reach 193. The fix isn't to re-weight cells to chase intuition -— it's to use §6 as a curated rank that lifts narrow-but-critical -functions explicitly. +H13 (current draw, 137) sits at #7 — close to the top-six cutoff because +W14 promotes the "wall-power for v0.1, measure first" stance from +acknowledged tradeoff to watched metric. The v0.1 "measured only" target +(§2) is still right; what changes is that bench multimeter readings (§6) +gain a second audience — sizing the v0.8 cell against a real portability +target, not just informing ADR-008's deferral. + +H6 (push success, 134) drops out of the top six. Its ADR ownership +([ADR-004] gitoxide + [ADR-005] PAT) and spike 7 kill-switch are unchanged +— the matrix simply reads W14's mobile-use voter as a louder signal for +reconnect (H12) than for the push transport itself. + +**Why H8 ranks where it does.** Pre-W14, HoQ totals rewarded functions +that touch many WHATs over functions that absolutely matter for one WHAT. +W3 ("Pulling power never corrupts the file", weight 10) was H8's +strongest single voter, but H8 still sat at #6 because its base was +narrow. W14's "carrying = bumps = unclean shutdowns" widens H8's voter +base and pushes it to #3 by arithmetic. §6's "table-stakes correctness" +override is no longer the load-bearing argument for H8's prominence — +its acceptance-criteria override for H4/H5 still is. See §6. The bottom three (H7 push time, H15 build time, H10 binary size) are real costs but ones we knowingly took on ([ADR-001]) and are not in the critical @@ -147,7 +166,9 @@ the design are called out below. Affordable at our size class but worth watching as features land. - **H11 stacks ↔ H13 current draw** (mild, future). Idle threads draw little but never zero; a future light-sleep policy (v0.8) wants them - parked. + parked. W14's portability outcome raises the value of that policy + from "battery hygiene" to "the thing that lets the device leave the + desk." - **H14 modularity ↔ H15 build time** (mild). More small crates = more link work. Boring vs valuable; we lean toward modularity. - **W13 typography ↔ H9 heap + H10 binary** (mild, future). Achieving a @@ -233,11 +254,12 @@ Function-to-component matrix (9 strong / 3 medium / 1 weak): ## 6. Critical performance budget -A curated rank, drawing from §3 importance and §4 conflicts but with two -deliberate overrides: (a) acceptance-criteria critical paths (H4 boot, -H5 soak) move up regardless of weighted-vote spread, and (b) table-stakes -correctness (H8 durability) moves up despite a narrow voter base. These -are the numbers spikes 2–7 must validate before integration starts. +A curated rank, drawing from §3 importance and §4 conflicts, with one +deliberate override: acceptance-criteria critical paths (H4 boot, +H5 soak) move up regardless of weighted-vote spread. (Pre-W14 this list +also lifted H8 durability over its narrow voter base; W14 has widened +that base, so H8's #3 spot is now arithmetic — see §3.) These are the +numbers spikes 2–7 must validate before integration starts. | Rank | Function | Target | Watched on | If we miss it | | ---- | -------------- | ------------------------------------- | ----------------- | ----------------------------------------------------------------------- | @@ -293,6 +315,14 @@ These are the live tensions we are watching, not deciding harder: serif = typewriter feel). Not yet decided whether to ship both or one; decision deferred to the v1.0 design pass. Cost preview per added font: +H9 glyph-cache footprint, +H10 binary for embedded assets. +- **[ADR-008] vs W11+W14.** Wall power in v0.1 is now an explicit + disappointment of two WHATs, not one (battery W11 + portability W14). + The disappointment is bounded by [ADR-008]'s commitment to measure + current draw on real hardware before sizing v0.8's cell — spec the + cell against measured numbers, not against the spec sheet. The §3 + promotion of H13 (current draw) from #11 to #7 is the matrix + registering this: bench multimeter readings now serve portability + sizing as well as power profiling. --- @@ -354,6 +384,15 @@ These are the live tensions we are watching, not deciding harder: (H8) get manual lifts. §3 now names the HoQ structural bias that makes the curation necessary — reward for spread, penalty for narrow-but- critical functions — using H8/W3 as the canonical example. +- **W14 added — portability outcome.** Captures "I can carry the device + and write away from a desk" as a distinct WHAT from W11 (multi-day + battery), weight 8. Recomputed basement Σ; H8 lifted from #6 to #3 in + the §3 priority list as its voter base widened from W3+W6+W12 to also + include W14, and H12 entered the top six at #4; H6 dropped out. The + ID "W14" was previously held by a deprecated typography row (see the + "W13 reframed, W14 removed" bullet above); the slot is now repurposed. + §6's "(b) narrow voter base" override for H8 no longer applies and + has been retired in the §6 preamble. The minor variance between README's "~12 lines" and product/[ADR-003]'s "~11 lines" of edit area is within rounding for a 14 px glyph in a 240 px diff --git a/docs/quality-house.md b/docs/quality-house.md index e24d2b7..c138905 100644 --- a/docs/quality-house.md +++ b/docs/quality-house.md @@ -1,6 +1,6 @@ # Quality House -The 13 WHATs × 15 HOWs House of Quality. The roof carries function-vs- +The 14 WHATs × 15 HOWs House of Quality. The roof carries function-vs- function correlations; the basement carries v0.1 targets (mirrored from [`qfd.md`](qfd.md) §2) plus the weighted-vote sums (`Σ = Σ(W weight × cell strength)`) and rounded relative weights. The @@ -241,8 +241,8 @@ market"), not as a fair head-to-head buyer's guide. \end{tikzpicture}% } -% --- Dimensions tuned for the typewriter QFD (13 W x 15 H) --- -\def\qfdNW{13} +% --- Dimensions tuned for the typewriter QFD (14 W x 15 H) --- +\def\qfdNW{14} \def\qfdNH{15} \def\qfdWhatW{4.6} \def\qfdImpW{0.7} @@ -307,7 +307,8 @@ market"), not as a fair head-to-head buyer's guide. 10/{W10 I can repair or fork it with hobbyist tools}, 11/{W11 Multi-day battery life (v0.8 onward)}, 12/{W12 Local-only files coexist with git scope (v0.5+)}, - 13/{W13 Typography sets a writing-tool tone}% + 13/{W13 Typography sets a writing-tool tone}, + 14/{W14 I can carry the device and write away from a desk}% } \node[anchor=west, font=\scriptsize, text width=\qfdWhatTextW cm, align=left] @@ -315,7 +316,7 @@ market"), not as a fair head-to-head buyer's guide. % ---------- Importance (raw 1-10 weight) ---------- \foreach \r/\w in {1/10, 2/9, 3/10, 4/7, 5/6, 6/9, 7/8, 8/7, - 9/8, 10/5, 11/4, 12/5, 13/7} + 9/8, 10/5, 11/4, 12/5, 13/7, 14/8} \node[font=\scriptsize] at ({-\qfdImpW/2}, {-\r + 0.5}) {\w}; % ---------- HOWs (rotated column titles) ---------- @@ -411,6 +412,12 @@ market"), not as a fair head-to-head buyer's guide. % W13 row 13: H9M \node[qfdrel/M] at ({9 - 0.5}, {-13 + 0.5}) {}; + % W14 row 14: H4W H8M H12M H13S + \node[qfdrel/W] at ({4 - 0.5}, {-14 + 0.5}) {}; + \node[qfdrel/M] at ({8 - 0.5}, {-14 + 0.5}) {}; + \node[qfdrel/M] at ({12 - 0.5}, {-14 + 0.5}) {}; + \node[qfdrel/S] at ({13 - 0.5}, {-14 + 0.5}) {}; + % ---------- Roof correlations ---------- \node[font=\scriptsize] at (C-1-2) {$+\!+$}; % H1-H2 strong reinforce \node[font=\scriptsize] at (C-1-3) {$-$}; % H1-H3 mild conflict @@ -435,20 +442,20 @@ market"), not as a fair head-to-head buyer's guide. % ---------- Basement: target / abs weight / rel weight % ---------- \foreach \c/\tgt/\abs/\rel in {% - 1/{$\leq$200\,ms}/148/10, + 1/{$\leq$200\,ms}/148/9, 2/{$\leq$1 line}/177/11, 3/{1 : 20}/144/9, - 4/{$\leq$5\,s}/54/3, + 4/{$\leq$5\,s}/62/4, 5/{$\geq$1\,h}/111/7, - 6/{$\geq$95\,\%}/134/9, + 6/{$\geq$95\,\%}/134/8, 7/{$\leq$30\,s}/27/2, - 8/{100\,\%}/132/9, + 8/{100\,\%}/156/9, 9/{$\geq$1\,MB}/193/12, - 10/{$\leq$2\,MB}/41/3, + 10/{$\leq$2\,MB}/41/2, 11/{$\leq$80\,KB}/45/3, - 12/{$\leq$30\,s}/129/8, - 13/{obs.}/65/4, - 14/{$\leq$8}/117/8, + 12/{$\leq$30\,s}/153/9, + 13/{obs.}/137/8, + 14/{$\leq$8}/117/7, 15/{$\leq$7\,min}/29/2% } { \node[font=\scriptsize] at ({\c - 0.5}, {-\qfdNW - 0.5}) {\tgt}; @@ -462,7 +469,7 @@ market"), not as a fair head-to-head buyer's guide. \node[anchor=east, font=\scriptsize\itshape] at ({-0.1}, {-\qfdNW - \k + 0.5}) {\lbl}; - % ---------- Perception zone: 5 products x 13 WHATs (0-5 scores) ---------- + % ---------- Perception zone: 5 products x 14 WHATs (0-5 scores) ---------- % Columns: \so=Typoena target, \st=reMarkable 2 + Type Folio, % \sf=Freewrite Traveler, \sg=Pomera DM250, % \sh=Freewrite Smart Typewriter. @@ -481,7 +488,8 @@ market"), not as a fair head-to-head buyer's guide. 10/5/4/2/1/2, 11/1/5/5/4/5, 12/3/1/2/3/2, - 13/3/5/2/2/2% + 13/3/5/2/2/2, + 14/2/4/5/2/5% } { \pgfmathsetmacro{\xo}{\qfdNH + (\so + 0.5)*\qfdCmpW/6} \pgfmathsetmacro{\xt}{\qfdNH + (\st + 0.5)*\qfdCmpW/6} @@ -597,14 +605,16 @@ hackable-Linux 3). | W11 | Multi-day battery life (v0.8 onward) | 1 | 5 | 5 | 5 | 4 | Typoena v0.1 = wall-powered (battery deferred). reMarkable + both Freewrites legendary (~4 weeks; Sailfish trimmed −30 % typing / −50 % idle). Pomera ~24 h. | | W12 | Local-only files coexist with git scope | 3 | 1 | 2 | 2 | 3 | Typoena v0.5+ design. reMarkable cloud-only. Freewrites have local + Postbox but no VCS. Pomera = pure local. | | W13 | Typography sets a writing-tool tone | 3 | 5 | 2 | 2 | 2 | Typoena v0.1: single mono (serif option in v1.0). reMarkable: rich type rendering. Freewrite + Pomera: utilitarian. | +| W14 | I can carry the device and write away from a desk | 2 | 4 | 5 | 1 | 5 | Typoena v0.1 wall-powered (ADR-008), no enclosure spec yet — desk-bound by design. reMarkable + Type Folio bag-friendly with bulk. Freewrite Traveler is the form-factor reference (~1.6 lb, folds). Smart Typewriter ~5 lb, desk-bound. Pomera DM250 pocketable foldable. | -**Totals** (sum across 13 WHATs, no weighting): Typoena 50, Pomera 45, -Freewrite Traveler 42, reMarkable 41, Freewrite Smart Typewriter 41 -(Traveler pre-Sailfish 39; Smart pre-Sailfish 38; reMarkable W1 dropped -3→2 after author's firsthand test). Pomera still ranking second is the -useful signal — we're effectively building "Pomera + Wi-Fi + git + -hackable BOM", which re-confirms the differentiation thesis from -`README.md`. +**Totals** (sum across 14 WHATs, no weighting): Typoena 52, Pomera 50, +Freewrite Traveler 47, reMarkable 45, Freewrite Smart Typewriter 42 +(Traveler pre-Sailfish 44; Smart pre-Sailfish 39; reMarkable W1 dropped +3→2 after author's firsthand test). Pomera closing to within 2 of +Typoena is W14 doing what W14 should — surfacing the dimension on +which v0.1's tethered MVP loses ground that v0.8 is expected to +recover. The "Pomera + Wi-Fi + git + hackable BOM" framing from +`README.md` still holds and reads stronger. Weighted totals (Σ score × W weight) tell the same story with more contrast — left as exercise; the unweighted view is enough to read the @@ -629,12 +639,12 @@ picture. - **Importance (left column)** is the raw 1–10 weight from `qfd.md` §1, not a normalised %, so adding stays cheap when a WHAT shifts. Sum of weights - is 95; treat each unit as ~1.05 % if you want a percentage view. + is 103; treat each unit as ~0.97 % if you want a percentage view. - **Roof** carries the §4 symbols translated into classical QFD glyphs: `++` strong reinforcement (`◎`), `+` mild reinforcement (`○`), `−` mild conflict (`×`), `−−` strong conflict (`⊗`). - **Basement rows** are: v0.1 target → §3 column sum (`Σ` of - `weight × strength`) → relative weight as integer % of total (1546). + `weight × strength`) → relative weight as integer % of total (1674). Relative weights round to 100. - **H7, H10, H15** (push time, binary size, build time) sit at the bottom of the basement — knowingly-paid costs per `qfd.md` §7, not signals to