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