64 lines
3.1 KiB
Markdown
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.
|