One paragraph and limits

mission

A person sets one mission. The loop makes normal tasks, runs them, and merges them to master. The loop stops when the mission is complete, or when a limit stops it.

ganda task mission

CompleteStoppedFailed

Select a node, or run the path that the host uses.

How you write it

You write the routine in C#. Each call adds one node. Build makes the intermediate representation.

public static RoutineDefinition Build()
{
  return Routine.Named(RoutineId)
    .Compute("load-mission", LoadMission)
    .Compute("walk-mission", WalkMissionAsync)
    .Compute("continue", DecideContinue)
    .Compute("mission-outcome", Decide)
    .Switch<MissionOutcome>(sw => sw
      .When(MissionOutcome.Complete, then => then
        .Compute("stop", Stop))
      .When(MissionOutcome.Stopped, "stop")
      .When(MissionOutcome.Failed, "stop"))
    .Build();
}

The file is source/timewarp-taratibu/routines/mission/mission.cs. Taratibu master 53de8c4.

Why this shape

Some work must not wait for a feature branch or for a ranked list. The person already set the paragraph and the limits. The merges inside the loop are the goal. This graph has no gate. Campaign and stacked-task-set do have that gate. The difference is part of the design.

What you get

  • This routine is not a campaign. There is no parent task, no child task, no ranked row, no feature branch, and no scope check.
  • Each step is a child routine, mission-step. A task step asks the next oracle. A red health check makes a repair. The model does not choose the repair.
  • The host stops for a named reason. The name can be complete, cap, until, or for. The name can be the usage floor. The name can be a burn-window reset when you pass --once. The name can be health that is still red after a repair. The name can be no burn window.
  • A task that crosses a usage reset moves into the next window. Burn-down can start work up to that reset.

Rules

  • The normal file is mission.md in origin-home. You can give text on the command, or pass --kitchen, or pass --mission-file. Use only one of these.
  • The host chooses providers from usage before each step. If you pass --profile, the host keeps that profile.
  • If next is Blocked, the host stops walk-mission and does not record it. Run the command again with --kitchen to continue.
  • The continue node reads the state after the run. Ganda can replace that function. Each stop has a reason.

This routine starts

The drawing follows the D2 file in the repo. Node ids do not change. Ganda connects the commands. Ganda does not change the graph.