Native task workflows

Your automation graph belongs in the language.

Tasks are declarations with dependencies, results, failure states, and execution context. They are not shell strings hidden in another configuration format.

pipeline.orvi
1task build -> Result<string, string> {2    let output = path.join([context.project_dir, "dist/app"])3    fs.write_text(output, "artifact")?4    return Ok(output)5}67task verify -> Result<void, string> {8    needs: [build]9    let artifact = task.result("build")?10    if !fs.exists(artifact) { return Err("missing artifact") }11    return Ok()12}
01

Declare intent

A task has a name, a return type, and normal OrviScript code inside it.

02

Connect work

needs forms a validated DAG. Dependencies complete successfully before dependent work starts.

03

Use the result

task.result() exposes a declared dependency result through the same Result-based error model.

Project-wide automation

Run a known task from anywhere.

The per-user task registry links an alias to its original file. Use orviscript task link, then run that task from another directory without copying the script.

See the CLI and project model