Every sync had failed since a container that ran as root left the checkout root's: git refused it as dubious ownership, and records answered from a stale copy. The Go bundle clones into repository/ under its directory, clears the old layout where it can and names what it cannot. Drops the container- runtime capability the move into the runtime left behind. hq issue 251.
records
The record, read where it is written (novox/hq ADR 0025, ADR 0153).
A module that keeps a checkout of a repository of decisions, designs and issues — the mesh's own
hq, or any repository of markdown on the forge — and answers questions about it over the bus, so
whoever holds the console sees records_search beside every other tool and a symptom can be looked up
in the design record without knowing it is there.
A checkout, not a copy. The same bytes the repository holds, at a commit every answer names,
brought up to date on every merge the forge announces (gitea.pull.merged) and every ten minutes
besides. Nothing is indexed, transformed or summarised, so nothing can drift from the source except by
lagging behind it, and the lag is in records_status.
Tools
| tool | answers |
|---|---|
records_search {query, limit?} |
where a phrase appears, as written: document, line, nearest heading, and the commit read |
records_read {path} |
one document, whole |
records_list {folder?} |
what a folder holds |
records_status |
repository, forge, commit and its date, last sync, document count, last error |
records_sync |
bring the checkout up to date now |
Configuring it
The module names no mesh (ADR 0112). It requires the git provision — the forge — and reads the
repository its settings name:
settings set records repository.json # {"repository": "<owner>/<name>"}
Public repositories only: it asks for no credential. Until a repository is set, it serves no tools and says so in its log.
The check ADR 0025 names
Search the mesh, through the console, for a phrase that appears only in one design document here, and
get it back. records_search {"query": "…"} is that search; its test does the same against a
repository it makes.
Where the checkout lives
A Go bundle the node's runtime launches as the operator account (cmd/records). It clones into
repository/ inside the directory the mesh gives it — a directory it makes, and so owns. An earlier
layout cloned into the given directory itself, from a container running as root, and left files the
operator account cannot change; git then refused every sync as "dubious ownership" (hq issue 251). What
that layout left is removed where it is the module's, and named in records_status (leftBehind, with
the one command that deletes it) where it is not.