# 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/.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.