clusterflux-public/docs/task-abi.md
Disasmer release dry run 2bef715211 Public dry run dryrun-20b59dc46b72
Source commit: 20b59dc46b72103c2f8a516c692b5cc3d54fab19

Public tree identity: sha256:aaa5ac7b58b2a0d23c6b11e5f76324bf3839ca1f62653a83deb736932adcfbd9
2026-07-14 10:08:15 +02:00

2.2 KiB

Task ABI

The MVP task ABI is a small, versioned contract between a compiled workflow module and the coordinator-main or node Wasmtime host. It is intentionally narrower than WASI and should grow only when the flagship workflow needs another host operation.

Assignment

Each assignment carries a TaskSpec containing the virtual process and task identity, bundle module, declared Wasm export and ABI version, serialized arguments, required capabilities and artifacts, selected environment, and VFS epoch. The node rejects a missing or incompatible spec rather than guessing an entrypoint.

SDK task macros generate exports that decode versioned boundary values, invoke the Rust function, and encode the result. Values crossing a task boundary are limited to serializable data and Disasmer handles; host-only objects fail at compile time.

Host imports

The current guest imports cover task spawn/join, command execution, cancellation observation, source snapshots, VFS file operations, artifact publication, and debug probes. Every import validates memory ranges and payload sizes. The coordinator main receives only spawn/join, waiting, bounded state, and debug controls; node hosts check the assignment's declared capabilities before performing source, command, network, or artifact operations.

disasmer.command_run_v1 runs a command through the selected environment backend. On Linux, a task assigned to an environment requiring rootless Podman uses the normal Podman assignment path. The hosted community policy does not grant this on managed infrastructure; a user node may grant it for its own machine.

Lifecycle

Cooperative cancellation is visible to guest code at a host boundary. Forced abort arms Wasmtime epoch interruption and also terminates active environment work. Debug freeze and resume synchronize at acknowledged host or Wasmtime epoch boundaries. These controls do not claim instruction-accurate source stepping. Each task assignment captures a restart-compatibility hash and clean VFS entry boundary. DAP task restart rebuilds the bundle and accepts edited code only when the task ABI, declared capabilities, environment, arguments, handles, and VFS boundary remain compatible.