Chess Board (platform)

Chess Board is a store of facts about one life, and the infrastructure under it. The pieces change; the board stays.

It rests on one idea: keep an append-only record of what happened, let exactly one service write to it, and compute everything anyone looks at from that record. A mistake in a view then costs an afternoon, never the data.

How a fact gets in

  1. A sensor or an outside service
  2. A message on the broker
  3. hermes (collector) checks it
  4. Cleo (record) keeps it
  5. Projections, read through Iris (read-api)

The broker is the queue, and the acknowledgement is the commit: hermes (collector) does not acknowledge a message until its write has committed. If the database is down, the broker holds the message and delivers it again, so nothing buffers on disk and nothing is retried by hand.

Each fact’s id is hashed from its own content, so a message delivered twice is recorded once.

Cleo (record): append-only

Cleo (record) only ever grows. The database itself refuses an update or a delete: a correction is a new row, and hiding a row is a fact of its own, written the same way.

It is the one irreplaceable thing in the stack. Everything else can be rebuilt from configuration or from the record. Cleo is copied off the server every night by mnemosyne (backup), and restored back onto it to prove the copy works.

One writer

Only hermes (collector) writes to Cleo. Anything else with something to record publishes a message and lets hermes write it. So the database grants write access to exactly one role, and append-only is a permission rather than a convention.

Projections

Everything anyone reads is derived: daily summaries, the work board, the dashboards. A derived table can be dropped and rebuilt from Cleo alone, and Proteus (projection-rebuilder) does that on a timer. Iris (read-api) serves them, read-only.

One contract, two languages

The collectors are written in Go, and the API and the tooling in TypeScript, and both can make a fact’s id. If they ever disagreed by one byte, the record would quietly fill with duplicates. So a file of test vectors is the specification, not either language’s code, and both must reproduce every value exactly.

The work is in the record too

Every task is a fact in Cleo. Metis (work-writer) writes the work, Athena (work-board) draws the board it is worked from, and GitHub’s issues are a mirror of the record, never the other way round.

How it runs

The source

The repositories behind all of this are private for now. Each will go public on its own, once its whole history has been swept, and get a link here. See Open source.

Want a site? contact@chesser.uk