Skip to main content

Module sidecar

Module sidecar 

Source
Expand description

A sidecar log beside a project tree: every change to a path is an entry, the bytes it wrote are a content-addressed blob in the same store, and a snapshot is a signed checkpoint.

The way .git sits beside a working tree and etckeeper keeps /etc in one, a Sidecar keeps a project’s history, but the history is an authenticated log: a third party proves any change from the checkpoint alone, nothing needs a working tree or a git binary, and retention is compaction with proofs kept rather than a history rewrite. Over a rfc9162_tiles::PackStore the whole sidecar is one file and its lock.

An entry is one JSON line, Change, and its lookup keys are path=<path> and blob=<hex>, so a path’s history is a point lookup and everything under a directory is a range over the sorted runs. A blob is stored once per content hash at blob/<hex> before the entry that names it is appended, so an entry never names a blob the store lacks. Entries are at most the tile log’s entry length; file content goes in the blob, not the entry.

Structs§

Change
One change to one path, as the log records it.
Found
A change with its log index and the proof the lookup returned.
Sidecar
The sidecar over a store.
Synced
What Sidecar::sync_dir recorded.

Enums§

Op
What a change did to its path.

Functions§

sidecar_keys
The lookup keys of a sidecar entry: path= and blob=. An entry that is not a sidecar change has no keys.