Fully autonomous is the headline, but it is not how most of my sessions actually go. More often I want the rigor of the loop with my own hand on the wheel: see the contract before it generates, look at the diff, decide whether the evaluator's verdict convinces me, then accept or pivot. So I exposed the same machinery as a role-runner you can call from an interactive Claude Code session, through a run_role MCP tool and a /sparra-loop skill that steers between every step.
The seam under both modes turned out to be the same single idea: run one Sparra role once, on a backend you pick, with the holdout passed by path so only the evaluator ever sees it. From the interactive side I added human-in-the-loop gates (sparra build --step with approval points at item and commit), agent-authored commits via a configurable committer role, and delegation of each role-run to an isolated subagent so the raw diffs and full verdicts never flood the main session. The autonomous loop and the hand-driven loop are now the same engine. One runs the whole column; the other hands me the wheel between steps, with the runner still enforcing the wall.