You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[docs](perf): ratify the performance-budget targets (ADR-008); pin real-bundle check to Phase 4/5
Honest split of OI-5: the budget *targets* can be ratified now as v1.0
engineering commitments, but *measuring a real bundle* against them needs the
Phase-4 build, so that stays a verification step (not claimed done).
- New design ADR-008: ratifies initial JS ≤ 300 KB gzip, FCP ≤ 2 s (fast-3G),
re-score p95 ≤ 100 ms — grounded in the 100 ms response-time limit
(Miller/Nielsen) and Core-Web-Vitals FCP guidance. Captures the key
consequence: mermaid and recharts MUST be lazy-loaded (dynamic import), or the
initial bundle blows the 300 KB budget. Verification = a CI bundle-size gate +
Lighthouse in Phase 4/5.
- SRS NFR-PERF-3 reworded ("ratified" + the lazy-load requirement + verification
path); OI-5 target-setting closed (real-bundle measurement remains Phase 4/5).
- Design DI-4 resolved; Definition-of-Ready perf item checked. SRS v0.9, design
v0.7; both guards pass; all links resolve.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| 0.6 | 2026-06-13 | Calibration-stability review: widened the e-commerce and IoT D4 targets to Hexagonal / Clean (the pair differs only on interoperability and ties exactly whenever that weight is 0); margins for every preset target are now machine-measured (Scoring Algorithm Section 9.4) |
26
26
| 0.7 | 2026-06-13 | Closed OI-2 and OI-4: the preset calibration and the D4/D5 `qaFit` vectors are interim-ratified ([ADR-0002](../adr/0002-ratify-preset-calibration.md), [ADR-0001](../adr/0001-ratify-d4-d5-qafit.md)) |
27
27
| 0.8 | 2026-06-13 | Closed OI-3: a basic C4-style stub is in v1.0 (FR-OUT-5, Could); richer auto-generated C4 deferred to v2.x. Charter pointer → v1.7 |
28
+
| 0.9 | 2026-06-13 | Performance-budget targets ratified (NFR-PERF-3, design ADR-008): numbers committed with mandatory lazy-loading of mermaid/recharts; OI-5 target-setting closed, real-bundle measurement remains a Phase 4/5 verification step |
28
29
29
30
---
30
31
@@ -296,7 +297,7 @@ production. They are the most common source of "we never specified that" defects
296
297
|---|---|---|---|---|
297
298
| NFR-PERF-1 | Reflect any factor change in priorities, charts, and rankings within **~100 ms perceived** latency on a mid-range device. | Must | UI/UX Playbook Task 1 | T |
298
299
| NFR-PERF-2 | Enable a **median time-to-first-recommendation ≤ 5 minutes** (KPI K3). | Must | Charter Section 22 (K3) | T |
299
-
| NFR-PERF-3 | Meet **interim performance budgets** on a mid-range device: initial JS bundle **≤ 300 KB gzipped**, First Contentful Paint **≤ 2 s** on a fast-3G profile, and a re-score interaction p95 **≤ 100 ms**. (Interim targets; confirmed at Phase 3 design — OI-5.)| Should | UI/UX Playbook Task 1 | T |
300
+
| NFR-PERF-3 | Meet the **ratified performance budgets** on a mid-range device: initial JS bundle **≤ 300 KB gzipped** (requires lazy-loading mermaid & recharts), First Contentful Paint **≤ 2 s** on a fast-3G profile, and a re-score interaction p95 **≤ 100 ms**. Verified by a CI bundle-size gate + Lighthouse in Phase 4/5 (design [ADR-008](../03-blueprint/design-specification.md#8-key-design-decisions-adrs)).| Should | UI/UX Playbook Task 1 | T |
300
301
| NFR-USE-1 | Achieve a **System Usability Scale [9] ≥ 70** at beta — the empirically derived "acceptable" threshold [10] (operative solo-stage KPI K5; aspirational target 75). | Should | Charter Section 22 (K5) | T |
301
302
| NFR-USE-2 | Be usable **without mandatory setup** (presets and sample data available immediately). | Must | UI/UX Playbook Task 9 | D |
302
303
| NFR-USE-3 | Be **consistent and predictable**: honor standard shortcuts; one term per concept; consistent color meaning. | Must | UI/UX Playbook Task 6 | I |
@@ -486,7 +487,7 @@ all UX-quality criteria met; KPIs K3 and K5 met at beta; no critical defects.
486
487
| OI-2 |~~Preset factor-level values~~ — **Resolved: interim-ratified** ([ADR-0002](../adr/0002-ratify-preset-calibration.md)) | Owner | Closed (2026-06-13) | Levels in [Model Data Sheet](../03-blueprint/model-data-sheet.md) Section 6; all 25 targets machine-verified; independent Domain Advisor may revise |
487
488
| OI-3 |~~C4 stub in v1.0 or deferred~~ — **Resolved: in v1.0 as a basic stub** (FR-OUT-5, Could) | Owner | Closed (2026-06-13) | Richer auto-generated C4 deferred to v2.x (Charter Section 5, Section 15.6) |
488
489
| OI-4 |~~D4/D5 `qaFit` values~~ — **Resolved: interim-ratified** ([ADR-0001](../adr/0001-ratify-d4-d5-qafit.md)) | Owner | Closed (2026-06-13) | Values in [Model Data Sheet](../03-blueprint/model-data-sheet.md) Section 4; independent Domain Advisor / empirical study (v3.0) may revise |
489
-
| OI-5 | Confirm/ratify the quantitative performance budgets in NFR-PERF-3 (bundle size, FCP, p95 interaction) |Engineer | M2 (Phase 3 design) | Interim targets already set in NFR-PERF-3; ratify against the real bundle|
490
+
| OI-5 |~~Confirm/ratify the performance budgets~~ — **Targets ratified** ([ADR-008](../03-blueprint/design-specification.md#8-key-design-decisions-adrs)) | Engineer | Targets closed (2026-06-13) |Numbers committed; **measuring the real bundle** against them is a Phase 4/5 verification step (CI bundle gate + Lighthouse)|
490
491
| OI-6 | Empirical-validation study design (deferred per Charter Section 5) | Owner | v3.0 | Out of MVP scope; tracked for v3.0 |
| 0.4 | 2026-06-12 | Computation precision: linked the [Scoring Algorithm Specification](scoring-algorithm.md) as the exact contract for `lib/scoring.ts`/`lib/sensitivity.ts`; Definition of Ready updated — scoring computation pinned and preset calibration machine-verified |
24
24
| 0.5 | 2026-06-13 | Definition of Ready: D4/D5 `qaFit` and preset calibration interim-ratified ([ADR-0001](../adr/0001-ratify-d4-d5-qafit.md), [ADR-0002](../adr/0002-ratify-preset-calibration.md)); DI-1 closed |
25
25
| 0.6 | 2026-06-13 | Resolved DI-5 / SRS OI-3: a basic C4 Mermaid stub is in v1.0 (richer auto-generated C4 deferred to v2.x); Definition-of-Ready C4 item checked |
26
+
| 0.7 | 2026-06-13 | Ratified the performance budgets as v1.0 targets (ADR-008, closes DI-4 / SRS OI-5), with mandatory lazy-loading of mermaid/recharts; real-bundle measurement remains a Phase 4/5 verification step |
26
27
27
28
---
28
29
@@ -286,6 +287,7 @@ These app-level decisions are recorded here; model-value changes follow the ADR
286
287
| ADR-005 |**recharts** (radar/bar) + **mermaid** (C4 stub) | Mature, declarative; must ship in `dependencies`|
287
288
| ADR-006 |**CSS custom properties + Tailwind**`class` dark mode for tokens | One token contract, two themes; matches the prototype |
288
289
| ADR-007 |**Model version separate from app SemVer**| Reproducible results across model changes (R8) |
290
+
| ADR-008 |**Performance budgets** as v1.0 targets — initial JS ≤ 300 KB gzip, FCP ≤ 2 s (fast-3G), re-score p95 ≤ 100 ms | Grounded in the 100 ms response limit [Miller/Nielsen] and Core-Web-Vitals FCP guidance. **Requires lazy-loading `mermaid` and `recharts`** (dynamic import, off the first-paint path) — they are too large for the initial bundle. Verified by a CI bundle-size gate + Lighthouse in Phase 4/5 |
289
291
290
292
---
291
293
@@ -312,7 +314,7 @@ These app-level decisions are recorded here; model-value changes follow the ADR
| DI-2 | Whether URL-hash state needs a compression library | Decide against a size budget (DI-4) |
314
316
| DI-3 | Final design-token values vs the prototype | Promote the prototype `:root` blocks to the token source of truth |
315
-
| DI-4 | Ratify the performance budgets against the real bundle|Interim targets already set in SRS NFR-PERF-3 (≤ 300 KB gzip, FCP ≤ 2 s, p95 ≤ 100 ms); inherits SRS OI-5|
317
+
| DI-4 |~~Ratify the performance budgets~~ — **Targets ratified** ([ADR-008](#8-key-design-decisions-adrs))|Numbers committed as v1.0 budgets (SRS OI-5 closed); the real-bundle measurement is a Phase 4/5 verification step (CI bundle gate + Lighthouse)|
316
318
| DI-5 |~~C4 Mermaid stub — in v1.0 or deferred~~ — **Resolved**| In v1.0 as a basic stub (FR-OUT-5, Could; SRS OI-3 closed); richer auto-generated C4 deferred to v2.x |
317
319
318
320
---
@@ -332,7 +334,7 @@ free of guesswork — each line is either fixed or has a usable baseline.
332
334
-[x]**Factor content authored (EN/ID)**: labels, level labels, and help for all 14 factors — [Model Data Sheet Section 2.1](model-data-sheet.md) (Translator review pending).
333
335
-[x]**Option & message content authored (EN/ID)**: educational metadata for all 21 options, the 7 anti-pattern messages, and the 12 fitness-function templates — [Option Content Sheet](option-content-sheet.md) (Translator & Domain-Advisor review pending).
334
336
-[x]**C4 stub** scoped: in v1.0 as a basic Mermaid stub (FR-OUT-5, Could); richer auto-generated C4 deferred to v2.x (SRS OI-3 closed).
335
-
-[]**Performance budgets ratified**against the real bundle (SRS OI-5 / DI-4).
337
+
-[x]**Performance budget targets ratified**([ADR-008](#8-key-design-decisions-adrs); SRS OI-5 closed) — committed as v1.0 budgets, with mandatory lazy-loading of mermaid/recharts. *Measuring the real production bundle against them is the one remaining item, inherently a Phase 4/5 verification step (CI bundle gate + Lighthouse).*
336
338
337
339
Checked items are done. The unchecked items all have **baseline values recorded in the Model Data
338
340
Sheet**, so development is unblocked today — closing them refines numbers, never the structure.
0 commit comments