Skip to content
andrew.dunn.dev

synthesist

Source

Synthesist is a work graph shared between people and agents: a Rust CLI that records what was planned, what was agreed and what phase the work is in, as specs and tasks kept apart from the code. An agent reads it to orient and writes to it as it works, so the process governing the code is queryable rather than inferred from a diff. Get Lamp has the idea the claim substrate grew from.

appendindexedread backapprovesHOW A SESSION RECORDS STATEphase set rejects invalid transitions, and AGREE forbids every write, so a plan is pinned before the human sees itagentthe only callerhumanapproves, never callssynthesistworkflow vocabulary + CLIspecs, tasks, phasesclaimvocabulary-agnosticsubstrateclaims/one JSON-LD log per asserteruser:local:andrewagent:model:sessionappend-only; merge is the uniongammaredb index, disposableORIENTPLANAGREEEXECUTE / REFLECTREPLANREPORT
Per-asserter claim logs merged by union
  • Every piece of workflow state is a claim: a typed, timestamped assertion appended to a JSON-LD log under claims/, one per asserter.
  • An asserter is class:scope:id, class user, agent or ingest, optionally with a session: a person, a model session and a forge import each write their own log.
  • Nothing is overwritten; an update is a new claim superseding the old, so history survives per field.
  • Merging is the union of the logs; concurrent sessions converge with no merge step.
  • gamma, a redb index, serves reads and rebuilds from the logs.

Two Cargo crates. claim is the vocabulary-agnostic substrate: asserters, logs, provenance, the gamma index. synthesist defines the vocabulary (spec, task, phase, session, campaign, discovery, outcome) and the CLI; synthesist skill prints the contract an agent follows.

replanREADorientexisting claimsPROPOSEplanspecs and tasksHUMAN GATEagreewrites forbiddenWRITEexecuteclaims appendCLOSEreflectthen report
Phase machine with a human approval gate
  • orient, plan, agree, execute, reflect; reflect returns to execute, goes to replan and back through agree, or closes with report. phase set rejects any other transition.
  • A per-session gate checks every command against the phase: no writes in orient or agree; no claiming or completing tasks in plan; no adding or cancelling tasks in execute.
  • The plan snapshot is pinned in plan, since agree forbids writes; the human approves that pinned plan.
  • --force bypasses the gate.

Synthesist carries the workflow graph only; stakeholders, dispositions and topics are outside its scope. The claim substrate stores any well-formed claim, so another vocabulary can sit on it without touching synthesist.