Skip to content

Commit bab11c3

Browse files
[docs](reconcile): align all docs with the hand-built-SVG implementation; drop dead i18n keys
Final no-mismatch sweep after the recent UI/feature changes: - Reconciled every present-tense recharts/mermaid claim to the implemented reality (hand-built SVG, no chart/diagram library): design-spec ADR-005 (superseded note) + ADR-008 + design-system + Definition-of-Ready (→ v0.8 + history row); build-spec Section 2 tech stack + Section 8/13 references; adr/README scope example. Dated history rows and GitHub-rendered ```mermaid doc diagrams are intentionally left as-is. All point to DECISIONS.md. - Removed the now-unused c4.show / c4.hide i18n keys (the C4 toggle became a collapsible). Verification: 3 model guards PASS; 39/39 tests; eslint 0; build clean; 391 links/anchors resolve; § clean. No present-tense doc claims the app uses recharts or mermaid. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 5787a83 commit bab11c3

4 files changed

Lines changed: 13 additions & 15 deletions

File tree

docs/03-blueprint/design-specification.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
| Field | Detail |
66
|---|---|
77
| **Document type** | Design Specification / Software Design Document (SDD) |
8-
| **Version** | 0.7 |
9-
| **Date** | 2026-06-12 |
8+
| **Version** | 0.8 |
9+
| **Date** | 2026-06-16 |
1010
| **Status** | Draft |
1111
| **Author / Owner** | Faqih Pratama Muhti, B.Sc. Computer Science |
1212
| **Audience** | Engineers, architects, designers |
@@ -24,6 +24,7 @@
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 |
2626
| 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 |
27+
| 0.8 | 2026-06-16 | Implementation reconciliation: ADR-005 superseded — all charts **and** the C4 stub are hand-built SVG; `recharts` and `mermaid` removed (ADR-008 note, design-system + Definition-of-Ready updated). See [DECISIONS.md](../../DECISIONS.md). No design intent changed otherwise |
2728

2829
---
2930

@@ -249,7 +250,7 @@ mode); the prototype's `:root` / `html.light` blocks are the source of truth.
249250

250251
**Component inventory:** Button · Chip · Segmented control · Badge · Card · Data grid (sortable,
251252
sticky header, tabular numbers) · Modal / Command palette · Toast · Skeleton · Progress bar ·
252-
Radar (recharts) · Bar chart. Every component **shall** define all states
253+
Radar · bar chart (hand-built SVG). Every component **shall** define all states
253254
(default/hover/active/disabled/loading/error) and meet WCAG AA contrast in both themes
254255
(NFR-A11Y-1).
255256

@@ -284,10 +285,10 @@ These app-level decisions are recorded here; model-value changes follow the ADR
284285
| ADR-002 | **Config-driven model** — no hard-coded weights/fit/rules/strings | Auditable & extensible; enables custom-config import/export |
285286
| ADR-003 | **Client-side only**; state in `localStorage` + URL hash | Free hosting, no PII, shareable; cost: state-size limits in URL |
286287
| ADR-004 | **React hooks only** (`useState`/`useReducer`/`useMemo`/`useContext`), no Redux | Right-sized for one app state; lower ceremony |
287-
| ADR-005 | **recharts** (radar/bar) + **mermaid** (C4 stub) | Mature, declarative; must ship in `dependencies` |
288+
| ADR-005 | **Hand-built SVG** for charts (radar/bar) and the C4 stub | No chart/diagram library — deterministic, theme-aware, tiny. *(Superseded the original recharts + mermaid choice during implementation; see [DECISIONS.md](../../DECISIONS.md).)* |
288289
| ADR-006 | **CSS custom properties + Tailwind** `class` dark mode for tokens | One token contract, two themes; matches the prototype |
289290
| 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 |
291+
| 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. **Implementation:** all visuals are hand-built SVG (no chart/diagram library), so no heavy chunk needs lazy-loading (see [DECISIONS.md](../../DECISIONS.md)). Verified by a CI bundle-size gate + Lighthouse in Phase 4/5 |
291292

292293
---
293294

@@ -333,8 +334,8 @@ free of guesswork — each line is either fixed or has a usable baseline.
333334
- [x] **D4/D5 `qaFit` interim-ratified** by the Owner ([ADR-0001](../adr/0001-ratify-d4-d5-qafit.md), closes SRS OI-4); an independent Domain Advisor / the v3.0 study may still revise the values.
334335
- [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).
335336
- [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).
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).
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).*
337+
- [x] **C4 stub** scoped: in v1.0 as a basic diagram stub (hand-built SVG; FR-OUT-5, Could); richer auto-generated C4 deferred to v2.x (SRS OI-3 closed).
338+
- [x] **Performance budget targets ratified** ([ADR-008](#8-key-design-decisions-adrs); SRS OI-5 closed) — committed as v1.0 budgets; in implementation all visuals are hand-built SVG (no chart/diagram libraries). *Measuring the real production bundle against them is the one remaining item, inherently a Phase 4/5 verification step (CI bundle gate + Lighthouse).*
338339

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

docs/adr/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ quality attributes, factor→QA matrix, fit vectors, anti-pattern rules, and pre
77
[MADR](https://adr.github.io/madr/) format, each with rationale and references, as the charter
88
requires.
99

10-
> **Scope.** *App-level design* decisions (pure functional core, client-side only, recharts, etc.)
10+
> **Scope.** *App-level design* decisions (pure functional core, client-side only, hand-built SVG, etc.)
1111
> are recorded inline in the [Design Specification Section 8](../03-blueprint/design-specification.md#8-key-design-decisions-adrs)
1212
> as ADR-001…008 (3-digit). **This log** records *model* decisions, numbered **ADR-0001…** (4-digit).
1313

docs/specs/build-spec-v3.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ Design principles, in priority order:
5353

5454
- Vite + React + TypeScript (strict mode)
5555
- Tailwind CSS with dark mode (`class` strategy + toggle)
56-
- Charts: `recharts` (radar + bar charts) — install via npm
57-
- Diagram preview: `mermaid` (render C4-style stub) — install via npm
56+
- Charts & diagram: **hand-built SVG** (radar, bar charts, C4-style stub) — no chart/diagram library *(implementation superseded the original `recharts` + `mermaid` plan; see [DECISIONS.md](../../DECISIONS.md))*
5857
- State: React hooks only (`useState`/`useReducer`/`useMemo`/`useContext`); no Redux
5958
- State persistence: `localStorage` + full state encoded in the URL hash (shareable links)
6059
- i18n: lightweight dictionary (`{ en, id }`) + `t(key)` helper; runtime toggle; default = `id`
@@ -231,7 +230,7 @@ Compute and display all of the following:
231230
1. **QA priority chart** — bar/horizontal chart of the normalized QA weights (the utility tree).
232231
2. **Per-dimension ranking** with composite scores normalized to 0–100 within the dimension.
233232
3. **Radar chart** — for the top 2–3 options of D1 (and on demand any dimension), overlay their
234-
`qaFit` across all 12 QAs so trade-offs are visible at a glance (recharts RadarChart).
233+
`qaFit` across all 12 QAs so trade-offs are visible at a glance (hand-built SVG radar).
235234
4. **QA contribution breakdown** — for a selected option, a table: QA, weight%, fit(1–5),
236235
weighted points, sorted by contribution. Must reconcile to the composite score.
237236
5. **Trade-off / comparison mode** — pick 2–3 options (across or within dimensions) and compare
@@ -327,7 +326,7 @@ For each of the top ~4 weighted QAs, suggest one or two concrete, measurable fit
327326
Statement, Decision Drivers, Considered Options, Decision Outcome, Consequences good/bad,
328327
Links); full report export (Markdown + print stylesheet) including factor inputs, QA priorities,
329328
per-dimension recommendations, QA scorecard, trade-offs, risks, anti-pattern warnings, fitness
330-
functions, migration path, alternatives, references; C4-style Mermaid diagram stub reflecting
329+
functions, migration path, alternatives, references; C4-style diagram stub reflecting
331330
the chosen D1 style; share-via-URL; import/export a custom config JSON (extensibility).
332331
- **Phase 6 — Polish & trust.** Migration paths; optional multi-stakeholder QA weighting (each
333332
stakeholder profile weights QAs; aggregate by average) ; accessibility pass; unit tests
@@ -356,7 +355,7 @@ src/
356355
lib/antiPatternEngine.ts
357356
lib/adr.ts // MADR markdown
358357
lib/report.ts // full report markdown
359-
lib/c4.ts // mermaid C4 stub
358+
lib/c4.ts // C4 stub (hand-built SVG)
360359
lib/urlState.ts // encode/decode (sec 2)
361360
lib/customConfig.ts // import/export config JSON
362361
hooks/ (usePersistedState, useUrlSyncedState)

src/i18n/dict.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,8 +325,6 @@ export const DICT = {
325325
'action.importSetup': { en: 'Import setup (JSON)', id: 'Impor setup (JSON)' },
326326
'action.importError': { en: 'Invalid setup file.', id: 'Berkas setup tidak valid.' },
327327
'c4.heading': { en: 'Architecture diagram (C4 stub)', id: 'Diagram arsitektur (stub C4)' },
328-
'c4.show': { en: 'Show diagram', id: 'Tampilkan diagram' },
329-
'c4.hide': { en: 'Hide diagram', id: 'Sembunyikan diagram' },
330328
'c4.error': { en: 'Could not render the diagram.', id: 'Tidak dapat merender diagram.' },
331329
'action.reset': { en: 'Reset to defaults', id: 'Atur ulang ke default' },
332330
'action.followRec': { en: 'Follow recommendations', id: 'Ikuti rekomendasi' },

0 commit comments

Comments
 (0)