Skip to content

Asking what the workers did last night, and getting a transcript

A conversation log records what was said, not what happened, so the operational question has to be answered by a person reading prose.

→ asked what the workers did last night and had only transcripts to grep

cost when it happens
high
how often
common

The moment

Three sessions ran overnight. One finished, one was handed over, one stopped somewhere. The question is simple — what was started, what was accepted, at which commit — and the only material is a directory of chat logs and a git log that says "wip".

Why it happens

A transcript is a record of what was said, not of what happened. It is long, it is narrative, it is in whatever words the worker chose, and the facts that matter — the task, the head, the outcome — are diluted in it or absent from it. When the notes directory in the source environment reached ten gigabytes and fifteen hundred files, recovering working state meant a written runbook and up to half an hour of a person's time. A store that only grows, in a format only a person can read, is not evidence; it is an archive nobody opens.

Why a better model does not fix it

Asking a model to summarise the transcripts produces a fluent paragraph with no provenance, which is the same problem one level up. The missing thing is a structured event at the moment the event happened; nothing recovered afterwards from prose has the same standing.

What it costs

Half an hour of a senior person, every morning, to produce an answer that is a reconstruction rather than a reading. And the answer cannot be trusted enough to act on without checking, so it is often produced twice.

What Majordomus does

Every event the tool records — a task started, a checkpoint, a decision, a question opened or resolved, a handover, a finish with its outcome and the verification exit code — is one line in an append-only ledger, and the vocabulary of events is closed on the way in and on the way out. majordomus history reads it back as operational history: filtered by task, event and time, oldest first so that one task's lines read as a narrative, with --json for the raw lines. A line the tool cannot parse is a failure in history --validate, doctor, check and watch, because a ledger that cannot be parsed cannot be evidence.

majordomus search is the other half: a literal, case-insensitive scan across handovers, checkpoints, decisions, questions, prompts and the ledger, in that order, because that is the order in which to trust them. It is not an index and not an embedding, on purpose.

Before and after

before   $ ls .sessions/ | wc -l ; grep -ri "auth" .sessions/ | less
         1500

after    $ majordomus history --since 12h
         task_started    t-…a4f1  profile=implementation  head=8c31f0e
         decision        t-…a4f1  "normalise the callback URI before comparing"
         handover        t-…a4f1  advanced
         task_finished   t-…b207  outcome=partial  verify=make test  exit=0  1m12s

How to verify it

Run a task through start, checkpoint and finish, then read history --task <id>. Every line is an event from the closed vocabulary with facts computed from git; corrupt a line and history --validate, doctor, check and watch all fail.

What it does not do

It records nothing about what anyone said; there is no transcript in the ledger and no way to put one there. It does not summarise, rank or interpret. Ranked or semantic retrieval over the records was considered and rejected, and the claims matrix carries that as a rejected row rather than leaving it to a roadmap.

What this looks like

Concrete situations, one per audience. Each is declared in the moment's front matter, so the before and the after are data rather than prose a page could drift from.

  1. Three sessions, one morning ai-native-team

    before
    One finished, one was handed over, one stopped; the material is a directory of chat logs and a git log that says "wip".
    after
    Every event is one line in an append-only ledger with a closed vocabulary; `history --since 12h` answers the question directly.
  2. The Monday question engineering-lead

    before
    What shipped, what was decided and what is blocked are reconstructed by asking three people.
    after
    `history` filtered by event and time reads as operational history, oldest first, per task.
  3. Show what happened, not what was said enterprise

    before
    The available artefact is a transcript: voluminous, unstructured and not evidence of anything.
    after
    The ledger carries the task, the head, the outcome and the verification exit code, and refuses to hold a conversation.

How you would know

The observable symptoms this moment declares. They are the questionnaire on the index and the input of majordomus why diagnose; nothing else defines them.

  • Answering "what happened overnight" meant reading or grepping conversation logs. grep-the-logs
  • There is no structured record of what was started, decided or accepted — only prose. no-structured-events
  • The git history is the only machine-readable trace, and it says "wip". git-log-says-wip

Where this lives in the tool

Everything below is read out of this moment's own front matter and resolved against the repository. A name here that did not exist would fail validation.

the commands that answer it

the capabilities of the executable that answer it

what it supervises — derived from the claims below

the claims that back this page, and the evidence behind each

the rules that govern it

  • majordomus.ledger-integrity
  • project.never-store-transcripts
  • majordomus.retention-caps
  • majordomus.sessions-are-workers

the use cases that show the way out

If this one is familiar, so is the next

What this moment names, what names it, and what shares its area, audience or tags. The second and third are derived; only the first is written down.

All 38, and how they connect to the tool →