id property

String id
final

An action id on the same plugin — this is what makes a step executable while staying pure data.

The design this came from held a closure (teardown('…', () => sh(…))), which a serialisable contract cannot. Naming an action instead costs nothing and buys the property every other surface already has: the checklist runs a step by the same call fw run <plugin> <action> makes, so a step can never do something the CLI and an agent cannot also do — and there is no second code path to keep in step with the first.

A plugin may emit several steps naming one action, told apart by arguments: the run plugin emits one per running app, all of them stop.

Implementation

final String id;