Design roadmap

The plan for this site itself: what Design is, the decisions behind it, and what's built versus still ahead. Kept here so Design documents its own direction.

What it is

One place to understand — and eventually to shape — how Tally works, unifying what was scattered across TIPs/, specs/, plan/ and GLOSSARY.md into a cross-linked, text-first HTML site. Those folders have since been folded in and removed; TIPs/ remains as the Markdown source the TIP pages are built from. Each page reads cleanly as raw source (for a human or an AI) and renders as a paged, navigable doc site — the GraphEditor readme.html pattern, generalised to a whole multi-document project.

Decisions made

Status

PieceState
Shell (topbar, sticky sidebar TOC, status system)implemented
Overview + Glossary pagesimplemented
Glossary terms linkable (stable anchors)implemented
TIPs migrated in (built from TIPs/*.md)implemented
Plan & specs imported, sources removedimplemented
Specs reconciled against the codeimplemented
Project-anatomy groups + collapsing navimplemented
GraphEditor opened from a page's data-filesimplemented
Served at /design alongside the landing siteimplemented
Cross-linking prose → glossary terms, sitewideproposal
In-browser editingproposal
Absorb GraphEditor under design/graph/proposal

Phasing

  1. Static site. Done. Shell built, docs migrated and reconciled, cross-linked, served at /design, and CLAUDE.md points here.
  2. In-browser editor. Edit a page's prose and save. The hard part is persistence: File System Access API for a local author, or an authenticated write endpoint when deployed. The editing UI (contenteditable on the semantic blocks) is the easy part. Deferred.
  3. Absorb GraphEditor under design/graph/, sharing the shell, so a spec page can deep-link to the live dependency graph and back.

Drift, and how it gets caught

Consolidation surfaces existing inconsistencies — that's a feature. The first sweep (2026-09-09) closed these:

What keeps recurring is transcription: a page that copies a field table, a constant, or a duration out of the code will drift, every time. The habit that works is to state the intent and the invariant here and name the file that holds the value. Reconciled pages carry a "reconciled against the code on <date>" line so the next reader knows how much to trust the detail.

Open questions