Reviewing knowledge
Everything a machine writes into Project Knowledge arrives as
a candidate and waits. This page is the human side of that queue: the project's
Knowledge tab, and what an owner can do there.
The Knowledge tab
Every entry with its state, kind, title, body, provenance, and timestamps, filterable by state and paginated.
Each row also shows how many independent issuers support it. A state label on its own says "trust this" without saying why; the count says what the trust rests on. A candidate at zero reads as "nothing has confirmed this yet" rather than as an unexplained label. That number is computed the same way the promotion transaction computes it, so what you see is what promotion acts on.
Confirming a candidate
The confirm control appears only on candidate rows, and only for an owner. The
other states are not waiting on a decision.
Confirming records your support, promotes the entry, and writes the ledger row in one transaction. The dialog says plainly that the action cannot be undone and is recorded - the audit row marks it as an owner override, so the ledger later shows the entry was promoted because a person decided, not because signals accumulated.
An owner's confirmation promotes on its own; see How knowledge earns trust for why that is an exception to K rather than a hole in it.
If confirming appears to do nothing, check whether the entry has a contradiction on it. An unexpired contradiction blocks promotion on every path, including an owner's, and there is no UI to clear one. It expires with the window - 30 days by default.
Where candidates come from
Three sources, and none of them can produce anything but a candidate.
- A lesson carried on
close(0.6.0+). The agent that closes a thread writes what it taught, at the moment it closes it. Seeclose. learn, called by an agent directly, for something it learned outside any one thread.- Approving a proposal, which a human does in the dashboard.
Nothing is collected automatically. An empty knowledge list means nobody has written a lesson yet - it is not a sign that something is broken.
The automatic extractor was removed in 0.7.0
Until 0.7.0 a periodic sweep turned every closed thread into an entry: the thread's subject became the title, and its last agent message, cut to 2000 characters, became the body. There was no distillation step in it, so what accumulated was a copy of the conversation.
It was removed rather than improved because of what it produced. Measured across two hubs before the change: 1128 entries carried the thread's subject verbatim, and 3 had been written by an agent.
If you are upgrading, this deletes rows - see Updating for exactly which ones.
The proposal queue
/knowledge/proposals holds what the reflection proposer drafted. When an
error signature recurs - across 2 or more distinct agents, or 3 or more
times, inside a 7-day window - it is turned into a proposal.
A proposal is an argument, not an edit to rubber-stamp, and it is shown as one:
- the evidence it was drawn from,
- a hypothesis,
- the disconfirming condition that would show it is wrong,
- and the concrete change it suggests.
Errors with no usable signature are dropped rather than pooled, so "no detail" never accumulates into a false pattern.
Nothing here is ever applied automatically. The dashboard queue is the only surface a proposal has; none of it is sent to an agent.
Approving registers a candidate, not a trusted entry
The button reads Adopt as candidate, the confirmation spells out that it is not trusted, and the resulting status badge says Adopted (candidate).
This is deliberate, and it is the difference between two clicks that look identical:
- Confirming on the Knowledge tab is an owner reading one specific entry and judging it. That promotes.
- Approving in the proposal queue is a click on one of a pile of machine-generated drafts. If that minted trusted entries, "I reviewed the queue" would in practice become automatic approval, and a single pass through it would be a K=1 bypass of the whole trust model.
Same person, same button shape, different density of judgement - so different results. An adopted proposal still has to earn promotion the normal way.
Playbook versions and rollback
Changes to a project's playbook are kept as an append-only version history.
Rolling back does not overwrite anything: it writes a new version whose content equals an older one. The control shows which version you are going back to, a diff of current against target, and whether the target actually differs at all, then asks you to confirm. The served body is always the newest version's content, falling back to the project's stored RELAYROOM.md before anything has been versioned.
Purging knowledge from a thread
Deleting a thread does not remove the knowledge distilled from it. That
knowledge is a separate copy. /knowledge/settings has an owner-only action to
remove it explicitly.
Entries whose only source was this thread are deleted. The preview runs the same function in dry-run mode, so the number in the confirmation is exactly what the purge will do, and the thread is not distilled again afterwards.
An entry derived from this thread and others is refused: named as something the purge could not clear, rather than silently kept. Everything removable is still removed in the same pass - an operator purging a leaked secret is not helped by "one entry was complicated, so none of the six were touched".
Until 0.5.3 that case was detached instead: the thread reference was stripped and the row kept. In a tool whose purpose is removing a secret, that reported success over surviving content. No writer currently produces an entry citing two threads, so refusal is a guarantee about the case rather than something you will see today.
The thread picker lists only threads that actually produced knowledge, chosen by subject rather than a pasted id.
Expiry
An entry can carry an expiry. recall stops returning it the moment it passes,
and a sweep then moves it to retired and writes an audit row, so the state on
disk matches what agents are being told.
Garbage-collecting old candidates is a separate question that needs a retention policy, and there is no default for one yet, so nothing sweeps them today.