Skip to content

Decision records ​

Each record states one decision that shapes CanViewer: the context it was made in, what was decided, what follows from it, and the alternatives that were weighed. Records are not rewritten when things change; a later record supersedes an earlier one and says so.

RecordDecision
0001The repository layout: the web app in app/, the desktop shell in desktop/, checks in e2e/, scripts in scripts/, config at the root
0002canmatrix reads every format but DBC, as an import adapter into CanViewer's model; CanViewer's own parser keeps DBC
0003canmatrix runs under Pyodide in a Web Worker, with the runtime and every wheel self-hosted and pinned, and no micropip
0004A Material 3 interface, with fonts and icons bundled
0005GPL-2.0-or-later, and what it rules out: .xls import, the AppImage
0006This site: VitePress on GitHub Pages, with the web app under /app/ and tables generated from the baselines
0007Real-world corpora with pinned baselines, and corpus suites that may not skip
0008The DBC writer keeps the model, not the file's layout: every corpus file reads back as the same database
0009The desktop shell: Tauri 2 on Windows, macOS and Linux, its packages, the import worker under the page's policy, and release builds with LTO

Writing a record ​

Copy the shape of an existing record: a title with the next number, the status and date, then Context, Decision, Consequences and Alternatives considered. Name the evidence, or link it. Add the record to the table above; the sidebar picks it up by itself.

The working notes the earlier records were condensed from are listed in the archive.