Expand description
How a board is worked (docs/architecture/orchestrator.md §2.9): the whole dispatch behaviour as data, a
statechart in the manner of Amazon States Language and XState. A card is always in one of the workflow’s
statuses; a status may run an actor for as long as the card is in it (XState’s invoke, ASL’s Task); events
move cards between statuses through transitions that say who may send them, what must hold, and what happens
(Jira’s conditions, validators and post functions); the dispatcher’s scheduling is data too.
Nothing here is a mode or a switch: a behaviour exists because a transition, an action or an expression says
so. Names (statuses, events, roles, slots, actions) are open strings; conditions, targets, limits and
durations are expressions over the card and the workflow’s params, evaluated by the board engine. Hermes’s
dispatcher is one instance of this model, hermes_instance, used by a home that declares none.
Structs§
- Action
- One step a transition, an entry or an exit takes: a primitive the engine provides, named, with its arguments
(
notify: {roles: [creator], template: …}). Written as a one-key map. - Delayed
- A transition taken once a duration has passed in the status (XState’s
after, ASL’sWait). - Dispatch
- The dispatcher: when it runs, what it may start, in what order, under which caps.
- Expr
- An expression over the card, its relations, the event and
params(a small CEL-like language: literals,card.*,event.*,params.*, comparisons,&&/||/!,in, and the engine’s functions such asparents.all(p, …)). Written as a string; a bare number, boolean or null is the literal it spells. - Limit
- A cap on what the dispatcher starts: cards counted per group, at most
maxin each. - Reserve
- Slots of a limit held for some cards.
- Run
- What runs while a card is in a status: an actor of a role’s lane in a named session slot of the card.
- Status
- One status a card can be in.
- Transition
- A move from the card’s status on an event (or on none:
always,after). - Validation
- A validator: the expression must hold, else the event is refused with the message.
- Workflow
- A board’s workflow.
Constants§
- HERMES_
WORKFLOW - The built-in Hermes workflow’s source.
Functions§
- hermes_
instance - Hermes’s dispatcher, transcribed as data (
hermes_cli/kanban_db.py): the workflow a home runs when it declares none.