Practices: triggers and modes
A practice acts on the board when something happens to a task (board #2474). What it does is declared, the project has to opt in, every change is attributed to the practice, and an automatic change undoes in one step.
- Trigger: tags on the practice say which events fire it:
trigger:created,trigger:enters-inbox,trigger:status:<value>,trigger:tagged:<key>,trigger:closed,trigger:reopenedandtrigger:commented. - Procedure:
virta procedure #n --when "<filter>" --set kind:bug. The task must match the filter, and it gets the tags. - Mode:
mode:manualnever runs itself.mode:suggestproposes the tags on the task, for a person to accept or overrule.mode:automaticsets them itself, recorded so oneresolve … undoreverses exactly that. - Opt-in:
virta project set <name> --practices "#12 #40". A practice never touches a project that hasn't opted in, and only acts on what happened after it did. - Running:
virta project practices [name](and the MCP tool) evaluates the opted-in projects. Every event it writes has an id made from the practice and the event that fired it, so running it twice, or on two machines, writes nothing twice. - Cascades: a practice's own writes don't fire practices, unless one
declares
chains-from:#n.
Every outcome (suggested, accepted, overruled, applied, undone) is on the
task and counted on the practice, under the measure in force when it
happened: the evidence its measure reads (board #2475). The practice's
evidence grade moves with that record: decree until it has been
applied, observed once it has (or while it has no measure), measured
once it has a measure and ten outcomes under it.