Skip to content

design-coverage

koder-toml specs/koder-toml/design-coverage.kmd

Specification body

[design_coverage] — per-product design-system adoption

The KDS coverage scorecard (kds.koder.dev/<locale>/coverage/, generated by tools/design-gen) auto-discovers every product under products/{horizontal,vertical,dev}/* and reports, per design-system dimension, how far each has adopted the canonical specs. A product declares its state in an optional [design_coverage] table in its koder.toml.

Schema

[design_coverage]
ui-style   = "done"     # specs/themes/ui-style.kmd
theme      = "done"     # specs/themes/light-dark.kmd (light/dark)
components = "partial"  # engines/sdk/koder_kit adoption
i18n       = "done"     # specs/i18n/contract.kmd
errors     = "done"     # specs/errors/user-facing-messages.kmd
voice      = "na"       # specs/voice/wake-word.kmd
a11y       = "done"     # WCAG / a11y-modes
auth       = "done"     # specs/koder-app/behaviors.kmd §1 (Koder ID)
back       = "done"     # specs/navigation/back-behavior.kmd
  • Keys are the scorecard column slugs (kept in sync with coverageColumns in tools/design-gen/internal/kinds/coverage.go).
  • Values — one of:
    • done — implemented and audited.
    • partial — work in progress.
    • todo — scheduled, not started.
    • na — the spec does not apply to this product.

Defaults

  • A product with no [design_coverage] block (or no koder.toml) shows every dimension as todo — an honest "not audited yet", never a false done/na. [product] name/url, when present, label the row; otherwise the row uses a Title-cased slug.
  • canonicalCoverage (hardcoded in coverage.go) is a transitional override: while products have not yet filled in their blocks, its curated cells win over the auto-discovered defaults for the listed slugs. As products adopt [design_coverage], entries can be removed from canonicalCoverage.

Adoption

Populating [design_coverage] in each product's koder.toml is incremental, separate work (out of scope for the discovery mechanism itself). Until then the scorecard honestly shows the long tail as todo.