TimeWarp · Taratibu

The host does the steps. The model thinks only on an oracle.

Taratibu is a Swahili word. It means carefully, and in order. It is the name of this language for routines. You write each routine as a graph of nodes. The host runs that graph. The model can think only on an oracle node. The host waits for a person only at a gate. Each other node is a function.

A skill is a file that a worker can load. A skill is not a step that runs.
task-work puts the review on the graph. The review runs even when the brief does not name the skill.

Use these words

Each word has one meaning. Do not use a second word for that meaning.

Taratibu
A Swahili word. It means carefully, and in order. It is the name of this language.
Routine
A graph of nodes. The host runs the nodes in order.
Compute
A function. The model does not think on this node.
Oracle
The only node where a model thinks.
Gate
The host stops on this node and waits for a person.
Host
The program that runs a routine. Ganda is the host.
Journal
The record of the result for each node. The chat is not the journal.
Kitchen
The folder for one task.
Closed list
A fixed set of names. The host cannot add a name while it runs.
Skill
Text that a worker can load. A skill is not a node.
IR
Intermediate representation. IR is the short form. The IR is the file that the host runs. The file has a hash. This site reads that file.

Three node kinds

A routine uses these three kinds only.

  1. 01 · Compute

    A function, a command, or a child routine. This kind is the normal kind. A count of letters is a compute node.

  2. 02 · Oracle

    The model thinks only on this node. The node has a schema, a pack, and a budget. The skill is the text for the node. The skill is not the graph.

  3. 03 · Gate

    The host stops and waits for a person, or for a signal from outside. The journal is the record. The chat is not the record.

How you write a routine

You write it in C#. Each call adds one node. A switch names each result. Build makes the intermediate representation. This sample has one compute node, one oracle, and one gate.

public static RoutineDefinition Build()
{
  return Routine.Named(RoutineId)
    .Compute("count-r", CountLetterR)
    .Oracle<Classify>("classify", schema: "Classify.ClosedEnum", pack: Pack.None, budget: Budget.Small)
    .Gate("operator-ack")
    .Build();
}

The file is source/timewarp-taratibu/mvp-spike.cs. Taratibu master 53de8c4.

Open mvp-spike

What the agent gets

The agent does not get a prompt that says “do the task.” The agent gets a routine id, the arguments, and the place of the journal. The journal is next to the kitchen. The journal is not the memory of the chat. The model does not read the drawing again to continue.

Ganda is the first host. The command ganda task runs the work routines. The commands ganda repo new and ganda repo new-app run the origin routines. The library has no host code. A compute node in the library is empty until Ganda connects the command.

The command ganda workflow is a different tool. It moves Nuru routes. It does not run these graphs. The name of this product is routine. Do not use the name workflow. That name moves the design toward BPMN.

Each part has one job

  • Routine

    The graph, the node kinds, the schemas, and the packs. You write them in C#.

    It is not a prompt.

  • IR

    Intermediate representation. IR is the short form. The file has a version and a hash. A host can run the file. A host can share the file.

    It is not text that a model reads as a script.

  • Host

    The host runs the graph. The host writes the journal. The host can continue a run. The host applies limits. The host calls plugins. Ganda is the host.

    It is not the model.

  • Oracle body

    The text for one node. The text is a skill. The skill is small.

    It is not the full process.

  • Projection

    A D2 file and an SVG file for a person. This site draws that view.

    It is not the source of the rules.

The routines in the library

The library has fifteen graphs. A parent graph has no cycle. The loop for many tasks stays inside one compute node. Those nodes are walk-set, walk-mission, and walk-campaign. A repeated switch label is a cycle. The checker rejects a cycle.

One kitchen

  1. planning

    Make a plan. Then choose one class: Rfc, Debate, Advisor, Implement, or Trivial. Each class makes a kitchen. A later run starts the routine that you chose.

  2. task-work

    Claim the task. Write the change. A compute node can skip the review. Then check the repo, open a pull request, and wait for a person.

  3. rfc · debate · advisor

    Run a ballot, a consensus, or a consult. Then write the result on the same task. The advisor routine chooses a class again before it stops.

Many tasks

  1. stacked-task-set

    Child tasks use one feature branch. A dependency in the set is complete on that branch. It is not complete on origin-home. The merge to master is a gate.

  2. mission

    You give one paragraph and some limits. Tasks merge to master inside the loop. There is no gate, because that merge is the goal. A red health check makes a repair. The model does not choose the repair.

  3. campaign

    An approved ranked list is the only source of slices. Scope is a compute node. The merge to master is a gate. The host does not merge it.

Many tasks

The loop is inside a compute node. The graph has no cycle.

Origins

A new repo or a new project is a function. The model does not make it.

Sample

A sample graph. The host does not run this graph for real work.

Do not use these

  • Do not use a YAML state machine as the product.
  • Do not use BPMN, Elsa, or a studio as the definition.
  • Do not let the model run the routine.
  • Do not use skills as the graph.
  • Do not use a markdown list of phases as the controller.

When a step repeats

If an oracle gives the same answer each time, make that answer a compute node.

cite-row is a compute node. The batch-review verdict is a compute node. The model writes the text. A function accepts the text or rejects the text. You can wait to make this change automatic. The rule is already in version 1.

Open the sample routine