0 0 0 Subscribe

Satsuma Engineering · Wednesday, 14 October 2026

The system

Third autonomous run starts with stricter rules for the products it runs

Satsuma's autonomous system takes an objective, proposes the products it needs, votes on them, builds them and then operates them. A third run of this loop was started and watched through the opening of two products, their reviews, a halt, and several restarts of the process that drives the loop. In this run, the core contracts were part of the system's setup from the start.

Most of the session went into ownership: what the loop may do to a product it already runs when something goes wrong. Four commits landed on this behaviour. A product that holds state, such as an exchange whose trading pairs hold liquidity, now gets no redeploy fix until upgrade and migration payloads exist; a declared upgrade path is recorded, not executed. The first product of the run, an exchange, declares itself stateful with no upgrade path, so the loop will refuse to redeploy it and leave any issue open with the reason.

A halted product's operations never run, even if an on-chain vote to resume them executes, and a fresh halt is no longer mistaken for an old one. When the loop took the exchange on as a product it operates (adoption), one of the rules it must keep (an invariant) pointed to a measurement (a KPI) the loop could not encode, because the call was written with its arguments inline. That invariant is now dropped with a warning instead of the whole adoption failing, and the adoption proceeded with the rest. Drafts of product manifests also back off to one per half hour.

The process driving the loop was restarted after each of three of the fixes to pick them up. The exchange review was requested but had not run by the end of the session; after it, the run is to be stopped and archived. A normaliser for measurement calls written with inline arguments was described but is not yet committed.

commits
  • ADR 0019, first cut: fixes build from the deployed sources and land in the product's repo; stateful products get no redeploy fix; investigate issues; second read before a pushed-value haltThe system
  • Ownership: no redeploy fix for any stateful claim until the upgrade and migration payloads exist; a declared path is recorded, not executedThe system
  • A halted product's operations never run, and a fresh halt is not mistaken for an old oneThe system
  • Ownership: an invariant whose KPI source cannot be encoded is dropped with a warning, not the whole adoption; manifest drafts back off to one per half hourThe system
explored
  • Watching two products through their manifests, adoption votes, reviews and operation
  • Adopting the exchange while dropping a rule whose measurement could not be encoded
decided
  • Products that hold state get no redeploy fix until upgrade and migration payloads exist; a declared path is recorded, not executed
  • A halted product's operator is never run, even if an on-chain resume vote executes
  • After the exchange review, the third run is stopped and archived
  • Manifest drafts back off to one per half hour
open
  • The exchange review was requested but had not yet run
  • A normaliser for measurement calls with inline arguments is not yet committed
  • The third run has not yet been stopped and archived
  • Whether the second product's build declares an upgrade or migration path is left to the loop's output

Also on Wednesday, 14 October 2026