v0.18.0-alpha.1
Pre-releaseThis is an alpha of v0.18.0, published so the engine-only flow gets real use before the stable release.
Prereleases stay out ofreleases/latestand the Homebrew cask, so installing it takes the explicit tag:curl -sL https://github.com/networkteam/sdd/releases/latest/download/install.sh | sh -s -- v0.18.0-alpha.1
Breaking
-
The legacy
/sddskill family is gone, and/sddnow runs the engine. The bundled renders forsdd,sdd-bootstrap,sdd-catchup,sdd-exploreandsdd-groomare removed. Runsdd initafter upgrading: it deletes the installed copies it wrote, keeps any file you edited and names it in a warning, and leaves alone any skill it never wrote. Then work in/sddas before. This release has no skill-driven flow to fall back to. -
Every MCP tool now carries the session handle.
start_sessiontakes an optionalproject, and when several projects are reachable and none is passed it returns a listing instead of opening a session.resume_sessiontakes the handle as its only argument.list_sessionsis removed, replaced by thesdd sessionscommand. A connection close no longer ends a dialogue. -
Search requires an explicit synchronization mode. Pass
none,localorall. Local covers the selected branch snapshot, all also covers searched dependencies. -
Go API for external compositions.
NewApplicationtakesApplicationOptions{Access, Sessions, StagedBlobs, Clock}.ProjectRuntimeOptionslostSessions,StagedBlobsandNow, and itsEmbedderfield replacesEmbeddings.AccessResolvergains two required methods,AuthorizeSession(withOwnerOnlyshipped) andResolveParticipant.LoadWorkflow,ResumeWorkflow,AbandonWorkflowSession,ReconcileMutationandRecoverMutationno longer take a project parameter.NewBatcheris gone; composeembed.Batchedinstead. -
Embedding stats operation names changed from
embed-documentsandembed-queriestoembed-documentandembed-query. Existing rows keep their old names andsdd statsshows both.
Highlights
-
One endpoint serves every project. The MCP server no longer pins a single project. The project is chosen at
start_sessionand carried by the session from then on, and a move can also work in a project the home project declares as a dependency. -
sdd index gccollects old index versions. Indexing no longer deletes anything, sosdd indexand MCP reconciliation only add. The new command reports the store's version groups with their entry counts, age range and size, and deletes only through--drop <group>or--drop stale, refusing the group in current use.--repoand--all-reposcover connected stores. The report renders as a table on a terminal and as JSON on a pipe. -
Indexing survives interruption. An entry becomes searchable only once its whole version is published, so a cancelled or failed run leaves no half-indexed entries behind, and a retry skips what already landed instead of starting over.
-
Sessions are visible from the CLI.
sdd sessionslists this project's sessions with open work, andsdd sessions abandon <handle>tears one down. Sessions survive a server restart and are reachable from any client holding the handle. -
The public LLM surface is complete. For hosts embedding SDD,
pkg/llmand the newpkg/llm/embedcarry the bounding, rate limiting, observation and batching decorators. Provider adapters no longer split batches or record their own stats, so one embed call is one request and the host composes the rest.
Other changes
- Consumers can schedule or await indexing before a search runs, through
ApplicationOptions.PrepareSearch, and scope it to the entries a write touched. - Graph reads acquire their source per operation, with branch-aware attachments.
sdd indexreports the store size, and stale progress labels on empty entries are fixed.- Dependency-closure membership is decided on the resolved project, so a composition whose project IDs differ from its repo IDs can reach foreign targets.
- New exports for external hosts:
PageAttachmentoverfs.FS, andReadProjectConfigFS. - Pre-flight tolerates a model response carrying surrounding braces.
- A duplicate publication debug event is no longer logged.
Full Changelog: v0.17.0...v0.18.0-alpha.1