Skip to main content

Action bindings

The commands an operator binds to the actions of one installed protocol, so that b10x-loom run drives a protocol whose actions no built-in binding performs. The operator declares them in a run configuration file (run --action-bindings <FILE>): the protocol, by its registration name, and for each action one argv, run without a shell. A run of that protocol performs an admitted action by starting its command with the action's arguments as JSON on standard input; the command's exit status decides the outcome, 0 performed and any other refused, and its standard output, one JSON object, is the action's performed report. The command is the verifier of its own action: its report may state evidence of the kinds the action declares it may produce, and only those are submitted, about the intent. A binding confers no authority: an action that needs a capability still needs its grant, and the governor still decides admission. Commands start with a cleared environment that keeps only PATH, never Loom's own credentials, and are killed past the configuration's timeout. Substrate does not confine them, so a run given a run configuration is refused, before any model call, with the confinement refusal CommandUnconfined unless the operator opts in to running the commands unconfined: with the run's --unconfined-bindings flag, or with the file's own unconfined_bindings: true; the flag wins, and the run reports which one opted in. A routed protocol that declares an action the file binds no command to ends with no local executor, naming the action. Configuration is trusted host context, never model output, and a protocol document never names a command.

intake.bindings is one of intake's bounded contexts. All domains.

Types​

ActionBinding​

intake.bindings.ActionBinding is a record of two fields:

  • action — String
  • argv — List<String>

ActionBindings​

intake.bindings.ActionBindings is a record of four fields:

  • protocol — String
  • timeout_seconds — Optional<Integer>, which may be absent
  • unconfined_bindings — Optional<Boolean>, which may be absent
  • bindings — List<intake.bindings.ActionBinding>

CommandEvidence​

intake.bindings.CommandEvidence is a record of two fields:

  • kind — String
  • result — String

Two of the types above are reached by nothing else in this system: intake.bindings.ActionBindings and intake.bindings.CommandEvidence. No entity, view, command, event, error or crossing names them, so it is either vocabulary something outside this specification uses or a leftover — and only a person can tell which.


Generated from intake v1 · model digest 91e7b24c1442a41a622f4feaa84db250d7769d7784122bae93f2e0cda0c64c8e · contract digest slice-sha256/2:8d1fee2eed0f196c1fa284d8313277e6f21a4618da2960148c3abb8b0493f58f. Do not edit this file; change the specification and regenerate it with task docs-generate.