roba 0.10.0

A sharp, focused sugaring of claude -p -- pipeable, composable, safe-by-default, session-re-enterable.
Documentation
# roba-multi-task-worker.toml -- a config for working a LIST of tasks in a
# single roba run (the "one turn, many tasks" pattern, #322/#323).
#
# A single roba invocation is one claude turn, and a turn holds many tasks:
# the agent loops over its tools until done, so a task-list prompt is worked
# sequentially within that one turn -- no chaining flag, no orchestration.
# What a single run CANNOT do is span a turn boundary (fire, end, get woken
# again); that is a persistent harness, a different tool. Size the run with
# the rails below, not with cross-turn control flow.
#
# Copy to your repo as `roba.toml`; roba discovers it via the config pool
# walk-up, so any invocation in the repo (yours or an agent's) inherits it.
#
# Invocation -- point it at a task list and let one turn work the batch:
#
#   roba --profile worker -C <repo> -f tasks.md --trace /tmp/t.jsonl
#
# where tasks.md is a numbered checklist, e.g.:
#
#   Work these in order, committing after each:
#   1. Add a `--timeout` flag to the fetch command.
#   2. Document it in the README flag table.
#   3. Add a unit test asserting the default.
#
# The discipline this models: SAFE BY DEFAULT (with no `--profile`, roba's
# built-in read-only posture applies -- Read/Glob/Grep only), and the
# POWERFUL posture is the NAMED `worker` profile -- an explicit opt-in
# (`--profile worker`), never the auto-applied default. A committed config
# makes the safe thing automatic and the unsafe setting deliberate.

[profile.worker]
# A multi-task batch needs runway: each task can cascade across call sites,
# and they run one after another in the same turn, so the turn cap must cover
# the WHOLE list, not a single fix. max_turns is high on purpose (a 14-file
# signature change alone exhausted 40 turns before it could gate + commit);
# the dollar cap is the real seatbelt that bounds a runaway batch.
full_auto      = true
model          = "sonnet"
fallback_model = "opus"
max_turns      = 80
max_budget_usd = 10.0

[profile.quick]
# Cheap one-shots (a single trivial task, a survey). Read-only by default;
# just a cheaper model than `worker`.
model = "haiku"