Files
sausage/extensions/messages/README.md
T

64 lines
3.1 KiB
Markdown

# Messages and lineage
The extensions preserve the durable `board.*` and `lineage.*` identifiers from Ultimate.
They use world files and world git. They do not use native filesystem or process APIs.
## Branches and delivery
`branch` requires an absolute `repo` path and a prompt.
It forks a listed tree root and writes `board.started.by` in the same transaction.
The coordinator definition supplies the branch configuration.
Worktree isolation requires the later workspaces port. The default is a shared checkout.
The tool admits the prompt as a reply-enabled message.
A call receipt prevents a second fork or message after a restart.
The service also supports `lineage.prompt`, which commits with a direct branch request.
`board.delivery` admits an input with a stable request ID.
It waits for the answer, records the reply, and delivers that reply with another stable request ID.
A restart can repeat these phases without a second input or reply.
A branch reports to its starter when its work ends.
While a child, landing, or reply remains pending, its final answer becomes a passive note.
One-way updates to the starter also become passive notes.
The starter can answer a report without an endless exchange of routed answers.
The grant chain contains fork ancestry before starter ancestry.
Each conversation occurs once. A root fork that @ultimate starts includes `[branch, root, ultimate]`.
## Tally and catch-up
The listed roots live in `lineage.roots` on conversation 1.
An empty root becomes a tally when its first branch starts.
A tally does not run model turns.
It records branch intents, liquid abstracts, passive notes, and landed submissions.
A landing freezes its branch's abstract and removes the liquid anchor from the model context.
Its request ID prevents a second note for the same submission.
Before an input, catch-up reads loose or packed Git refs through the VFS.
It calls world git only when the target tip differs from the saved baseline.
Commit rows use the `Sausage-Conversation` trailer for attribution.
The tally section includes other branches' changes within a token budget.
## Project memory
Memory lives in `/src/sausage/.sausage-memory/<root>.json`.
Each file contains `memories` and `requests` objects.
These world files are authoritative. The harness database does not duplicate their contents.
Memory writes validate the entire batch before a temporary file replaces the destination.
A shared queue serializes writes across extension reloads.
A tool or landing receipt commits in that same file.
Thus, a restart after the rename does not apply the operations twice.
Only @ultimate can use the `remember` tool.
Other extensions can use the lineage service.
Branches from a root with memory start with its index and recent landings.
`lineage.memorize` asks the conversations service for its summary model.
Without that model, it leaves memory unchanged.
It memoizes the model, input, and answer. It retries a refused batch once.
It normalizes automated text limits and records landing provenance.
Remote messaging, side chats, editor launch, and rewind are outside this port.