Skip to content

docs(#262): accept ADR-0002 — incremental strict TypeScript; reaffirm no-framework (ADR-0001 addendum)#263

Merged
BorisTyshkevich merged 1 commit into
mainfrom
docs/adr-0002-static-typing
Jul 16, 2026
Merged

docs(#262): accept ADR-0002 — incremental strict TypeScript; reaffirm no-framework (ADR-0001 addendum)#263
BorisTyshkevich merged 1 commit into
mainfrom
docs/adr-0002-static-typing

Conversation

@BorisTyshkevich

Copy link
Copy Markdown
Collaborator

What

Docs-only PR recording two architecture decisions taken at the dashboard milestone:

  • New docs/ADR-0002-static-typing.md (Accepted) — incremental strict TypeScript, dev-time only: tsc --noEmit joins the test gate (like check:schemas), files convert leaf-up one at a time (seams → state.jscore/net/editor/ui/), persisted-data types are generated from the canonical JSON-Schema graph. esbuild strips TS natively, so the build stays single-tool and the artifact/runtime deps are untouched (hard rule 4 intact). Implementation phase 0 is ADR-0002 phase 0: TypeScript gate — tsconfig, tsc --noEmit in the test gate, typed seam interfaces #262.
  • ADR-0001 addendum — the no-UI-framework decision was re-evaluated against the Superset/Grafana-scale dashboarding ambition and stands: the dashboard surface shipped entirely under signals + imperative islands. The vague re-evaluation trigger is replaced by three concrete conditions (third-party plugin ecosystem, virtualized large-list need, rising invalidation-bug rate in dashboard edit mode); if ever re-opened, the candidate is Preact (+6.8 KB, spike exists), never React (+45 KB).
  • CHANGELOG.md [Unreleased] entry; roadmap Roadmap to 1.0.0 #68 already reconciled (Architecture section + Cross-cutting item for ADR-0002 phase 0: TypeScript gate — tsconfig, tsc --noEmit in the test gate, typed seam interfaces #262).

Why

The codebase grew from a 50 KB query executor to a ~26 k-LOC workbench heading toward full dashboarding. The coverage gate catches behavioral regressions but is blind to cross-module contract drift; the JSON-Schema validator pipeline already answered that need at the persistence boundary — ADR-0002 extends the same static layer to in-memory contracts without touching the runtime.

Verification

Docs-only change — no code, no tests, no build surface affected. Live issue bodies (#262, #68) diffed against local sources after push.

🤖 Generated with Claude Code

…only)

Re-evaluated the no-framework decision at the dashboard milestone: ADR-0001
gains an addendum — the decision stands, and the vague re-evaluation trigger
is replaced by three concrete conditions (plugin ecosystem, virtualized large
lists, rising invalidation-bug rate). ADR-0002 sets the TypeScript path:
tsc --noEmit joins the gate, files convert leaf-up one at a time, persisted
types are generated from the canonical JSON Schemas; esbuild and the artifact
are untouched. Phase 0 is #262; roadmap #68 reconciled.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant