Skip to content

Commit f2f5b69

Browse files
[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>
1 parent ebd8f45 commit f2f5b69

2 files changed

Lines changed: 10 additions & 7 deletions

File tree

docs/02-requirement-analysis/software-requirements-specification.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
| Field | Detail |
66
|---|---|
77
| **Document type** | Software Requirements Specification (SRS) |
8-
| **Version** | 0.8 |
8+
| **Version** | 0.9 |
99
| **Date** | 2026-06-13 |
1010
| **Status** | Draft — review-ready |
1111
| **Author / Owner** | Faqih Pratama Muhti, B.Sc. Computer Science |
@@ -25,6 +25,7 @@
2525
| 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) |
2626
| 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)) |
2727
| 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 |
2829

2930
---
3031

@@ -296,7 +297,7 @@ production. They are the most common source of "we never specified that" defects
296297
|---|---|---|---|---|
297298
| 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 |
298299
| 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 |
300301
| 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 |
301302
| NFR-USE-2 | Be usable **without mandatory setup** (presets and sample data available immediately). | Must | UI/UX Playbook Task 9 | D |
302303
| 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.
486487
| 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 |
487488
| 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) |
488489
| 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) |
490491
| OI-6 | Empirical-validation study design (deferred per Charter Section 5) | Owner | v3.0 | Out of MVP scope; tracked for v3.0 |
491492

492493
---

docs/03-blueprint/design-specification.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
| Field | Detail |
66
|---|---|
77
| **Document type** | Design Specification / Software Design Document (SDD) |
8-
| **Version** | 0.6 |
8+
| **Version** | 0.7 |
99
| **Date** | 2026-06-12 |
1010
| **Status** | Draft |
1111
| **Author / Owner** | Faqih Pratama Muhti, B.Sc. Computer Science |
1212
| **Audience** | Engineers, architects, designers |
13-
| **Derived from** | [SRS](../02-requirement-analysis/software-requirements-specification.md) v0.8 · [Build Spec v3](../specs/build-spec-v3.md) · [Charter](../01-discovery-and-planning/discovery-and-planning.md) v1.7 · [UI prototype](prototype/index.html) |
13+
| **Derived from** | [SRS](../02-requirement-analysis/software-requirements-specification.md) v0.9 · [Build Spec v3](../specs/build-spec-v3.md) · [Charter](../01-discovery-and-planning/discovery-and-planning.md) v1.7 · [UI prototype](prototype/index.html) |
1414
| **License** | [CC BY 4.0](../../LICENSE-docs.md) |
1515

1616
**Document history**
@@ -23,6 +23,7 @@
2323
| 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 |
2424
| 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 |
2525
| 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 |
2627

2728
---
2829

@@ -286,6 +287,7 @@ These app-level decisions are recorded here; model-value changes follow the ADR
286287
| ADR-005 | **recharts** (radar/bar) + **mermaid** (C4 stub) | Mature, declarative; must ship in `dependencies` |
287288
| ADR-006 | **CSS custom properties + Tailwind** `class` dark mode for tokens | One token contract, two themes; matches the prototype |
288289
| 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 |
289291

290292
---
291293

@@ -312,7 +314,7 @@ These app-level decisions are recorded here; model-value changes follow the ADR
312314
| DI-1 | ~~Ratify D4/D5 `qaFit` values~~**Done (interim)** | [ADR-0001](../adr/0001-ratify-d4-d5-qafit.md) accepts the [Model Data Sheet](model-data-sheet.md) Section 4 baseline; closes SRS OI-4 |
313315
| DI-2 | Whether URL-hash state needs a compression library | Decide against a size budget (DI-4) |
314316
| 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) |
316318
| 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 |
317319

318320
---
@@ -332,7 +334,7 @@ free of guesswork — each line is either fixed or has a usable baseline.
332334
- [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).
333335
- [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).
334336
- [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).*
336338

337339
Checked items are done. The unchecked items all have **baseline values recorded in the Model Data
338340
Sheet**, so development is unblocked today — closing them refines numbers, never the structure.

0 commit comments

Comments
 (0)