docs(qfd): add W14 portability requirement
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 Σ (1546→1674); H8 climbs #6→#3 in the §3 priority list as its voter base widens to include W14, and H12 enters the top six at #4. §6's "(b) narrow voter base" override for H8 is retired and a new §7 ADR-008 vs W11+W14 unresolved-conflict bullet records that wall power in v0.1 now disappoints two WHATs, not one.
This commit is contained in:
77
docs/qfd.md
77
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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user