Builder's first interface check now accepts multi-interface files
Satsuma is an autonomous system that proposes software products, votes on them on its own chain, then has a language model, the builder, write and deploy the code. A fix to the first check that builder must pass, at milestone 0, is merged into the satsuma repository. The check looks for the file that declares a product's interface, the list of functions other contracts can call. It used to accept only a declaration whose name matched the proposal exactly. It now also accepts a file named for that interface that declares interfaces under other names: the file is published whole, marked as not an exact match, and logged. A file that declares no interface at all is still refused.
The cause showed up in a run of an unpublished experiment on local chains: "the proposer named the exchange's interface IUniswapV2; the builder wrote src/interfaces/IUniswapV2.sol as a family of interfaces (factory, pair, router…) with nothing literally named IUniswapV2; the milestone-0 gate accepted only an exact declaration and the retry told the builder nothing — five identical refusals across two exchange proposals, nothing deployed, no repos created." An earlier run had passed the same check only because its proposer happened to pick IUniswapV2Router02. Rather than let the stalled run continue, it was stopped and archived with its results and a list of interventions, and a new run was launching as the session closed, its chains up and its voting contracts deploying.
The builder's instructions now also say the file must declare interface <Name>, and explain how a protocol made of several interfaces does so. The work was done with Claude in Claude Code.
Still open: whether the upgrade path of a deployed product will be tested, and whether runs could use a development chain in place of a full Satsuma node, given that they make cross-chain transactions.
- Archive Experiment 003 run 10The system
- Archive Experiment 003 run 10The system
- A run on local chains stalled at the builder's first check after five identical refusals across two exchange proposals
- Stop, fix and re-run rather than let the stalled run continue
- Keep refusing files that declare no interface at all
- A new run is in progress
- Still open: whether the upgrade path of a deployed product will be tested, and whether runs could use a development chain in place of a full Satsuma node, given that they make cross-chain transactions.