docs(qfd,quality-house): make quality-house.md own §3 matrix and §4 roof

Drop the duplicated 13x15 strength matrix and 15x15 roof tables from
qfd.md; the same data already lives in quality-house.md's TikZ source.
qfd.md §3/§4 keep the narrative reading (priority list, conflict list)
and point to quality-house.md for the cells and basement sums. Both
files' regenerate/maintenance notes flipped to reflect the new contract.
This commit is contained in:
Julien Calixte
2026-05-16 00:23:15 +02:00
parent 32c40cd7e6
commit c702ba83d8
2 changed files with 43 additions and 59 deletions

View File

@@ -14,9 +14,11 @@ with the v0.2v1.0 trajectory ([README](../README.md),
glossary at [`../CONTEXT.md`](../CONTEXT.md).
Format inspired by the classic House of Quality, kept compact. Strength
weights: **9** strong, **3** medium, **1** weak, blank none. A TikZ
rendering of §1§4 (plus a guessed competitor perception zone) lives in
[`quality-house.md`](quality-house.md).
weights: **9** strong, **3** medium, **1** weak, blank none. The §3
matrix and §4 roof — plus a guessed competitor perception zone live
in [`quality-house.md`](quality-house.md); this file owns the WHAT/HOW
catalogues (§1, §2), the narrative reading of the numbers (§3, §4), and
the downstream sections (§5§8).
---
@@ -70,26 +72,11 @@ shows what "better" looks like (↑ higher, ↓ lower, → fixed).
## 3. House of Quality — WHATs × HOWs
Reading: row × column cell is how strongly the function (H) advances the
requirement (W). Importance at the bottom is `Σ(weight × strength)` — the
weighted vote on which functions deserve the most engineering attention.
| | H1 lat | H2 area | H3 cad | H4 boot | H5 soak | H6 push% | H7 push s | H8 dura | H9 heap | H10 bin | H11 stk | H12 wifi | H13 mA | H14 mod | H15 build |
| ------- | :-----: | :-----: | :-----: | :-----: | :-----: | :------: | :-------: | :-----: | :-----: | :-----: | :-----: | :------: | :----: | :-----: | :-------: |
| W1 (10) | **9** | 9 | 3 | | 3 | | | | 1 | | 1 | | | | |
| W2 (9) | | | | | | **9** | 3 | | 9 | | | 9 | | | |
| W3 (10) | | | | | | | | **9** | | | | | | | |
| W4 (7) | | | | | | 3 | | | | | | 3 | | 1 | |
| W5 (6) | | | | **9** | | | | | | 3 | | | | | |
| W6 (9) | 3 | | 3 | | **9** | 3 | | 3 | 9 | | 3 | 3 | | | |
| W7 (8) | 3 | 3 | 3 | | | | | | | | | | 3 | 1 | |
| W8 (7) | 1 | 9 | **9** | | | | | | | | | | | | |
| W9 (8) | | | | | | | | | | 1 | 1 | | | **9** | 3 |
| W10 (5) | | | | | | | | | | 3 | | | 1 | 3 | 1 |
| W11 (4) | | | | | | | | | | | | | **9** | | |
| W12 (5) | | | | | | 1 | | 3 | | | | | | 3 | |
| W13 (7) | | | | | | | | | 3 | | | | | | |
| **Σ** | **148** | **177** | **144** | **54** | **111** | **134** | **27** | **132** | **193** | **41** | **45** | **129** | **65** | **117** | **29** |
The matrix (row × column = how strongly function H advances requirement
W) and its Σ row — the weighted vote `Σ(weight × strength)` on which
functions deserve the most engineering attention — live in
[`quality-house.md`](quality-house.md). The Σ totals quoted below are
from its basement row.
### Top engineering priorities (from importance)
@@ -129,25 +116,10 @@ before the runtime decision does.
The roof shows where pushing one function pushes another the wrong way.
Classical QFD single-character symbols: **`◎`** strong reinforcement,
**`○`** mild reinforcement, **`×`** mild conflict, **`⊗`** strong conflict.
| | H1 | H2 | H3 | H4 | H5 | H6 | H7 | H8 | H9 | H10 | H11 | H12 | H13 | H14 | H15 |
| ------- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| **H1** | — | ◎ | × | | ○ | | | | | | | | × | | |
| **H2** | | — | ◎ | | | | | | | | | | ○ | | |
| **H3** | | | — | | | | | | | | | | ○ | | |
| **H4** | | | | — | | | | | | × | | | | | |
| **H5** | | | | | — | ○ | | ○ | ⊗ | | | | | | |
| **H6** | | | | | | — | ○ | | ⊗ | | | ◎ | | | |
| **H7** | | | | | | | — | | × | | | ◎ | | | |
| **H8** | | | | | | | | — | | | | | | | |
| **H9** | | | | | | | | | — | ⊗ | | | | | |
| **H10** | | | | | | | | | | — | | | | | ⊗ |
| **H11** | | | | | | | | | | | — | | × | | |
| **H12** | | | | | | | | | | | | — | | | |
| **H13** | | | | | | | | | | | | | — | | |
| **H14** | | | | | | | | | | | | | | — | × |
| **H15** | | | | | | | | | | | | | | | — |
**`○`** mild reinforcement, **`×`** mild conflict, **`⊗`** strong
conflict. The 15×15 roof matrix lives in
[`quality-house.md`](quality-house.md); the cells that actually shape
the design are called out below.
### Conflicts that actually shape the design
@@ -396,8 +368,10 @@ tall edit region and is not load-bearing.
- When a spike returns numbers, update §6's "Target" or "Watched on"
columns — this is the doc that _should_ feel out of date if measured
reality drifts from estimates.
- The WHATs change rarely; the HOWs change with each release; the
matrices are recomputed when either side changes.
- The WHATs (§1) change rarely; the HOWs (§2) change with each release.
When either changes, re-score the matrix and recompute the basement Σ
in [`quality-house.md`](quality-house.md); then check the §3 priority
list and §4 conflict list here still match the new picture.
[ADR-001]: adr.md#adr-001-language-and-runtime--rust-on-esp-idf-rs-std
[ADR-002]: adr.md#adr-002-ui-strategy--custom-widgets-on-embedded-graphics-not-ratatui

View File

@@ -1,12 +1,15 @@
# Quality House
Visual rendering of [`qfd.md`](qfd.md) — the same 13 WHATs × 15 HOWs as a
classical House of Quality. The roof carries function-vs-function
correlations from §4; the basement carries v0.1 targets (§2) plus the
weighted-vote sums and relative weights from §3.
The 13 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
narrative reading of these numbers lives in `qfd.md` §3 (priority list)
and §4 (conflict list).
`qfd.md` is authoritative — this file lags it. Regenerate when the matrix
or roof changes; if numbers diverge, trust `qfd.md`.
This file is the authoritative source for the matrix cells, the roof
correlations, and the basement Σ + relative weights. WHATs (§1) and HOWs
(§2) are mirrored here from `qfd.md`; if those diverge, trust `qfd.md`.
Out of scope here: §5 component mapping (would need a second house),
§6 critical performance budget (already a curated rank), §7 tradeoffs
@@ -589,17 +592,24 @@ picture.
## Regenerating
When `qfd.md` §1§4 change, re-derive:
The matrix cells (`\node[qfdrel/{S,M,W}]`), roof symbols (`C-i-j` slots),
and basement Σ + Rel% are native to this file — re-score directly in the
TikZ source, then update the §3 priority list and §4 conflict list in
`qfd.md` to match the new picture.
When `qfd.md` §1 or §2 changes:
1. Importance column → §1 weight column.
2. HOW titles + targets → §2 (v0.1 target column).
3. Relation cells → §3 matrix strengths (9 → `S`, 3 → `M`, 1 → `W`).
4. Roof symbols → §4 (◎→`++`, ○→`+`, ×→``, ⊗→``).
5. Basement Σ + Rel% → §3 bottom row, divided by the new total.
6. Perception scores are **not** derived from `qfd.md` — they live only in
this file. Update them when (a) a competitor ships a relevant change,
(b) measurement replaces a guess, or (c) a WHAT is added/removed in
§1. Each score should keep its one-line rationale in the table above.
2. HOW titles + v0.1 targets → §2 target column.
3. Recompute basement Σ for any HOW whose column changed: per-cell
contribution = `(W weight) × (cell strength: 9 / 3 / 1 / 0)`.
4. Recompute relative weight: each Σ ÷ total Σ × 100, rounded to integer
percent.
Perception scores are **not** derived from `qfd.md` — they live only in
this file. Update them when (a) a competitor ships a relevant change,
(b) measurement replaces a guess, or (c) a WHAT is added/removed in §1.
Each score keeps its one-line rationale in the table above.
If a renderer rejects the `tikz` fence, the file is still readable as
source — the placement comments name each WHAT, HOW, and cell. The