0 0 0 Subscribe

Satsuma Engineering · day

Thursday, 8 October 2026

The system

Work ledger now moves only by governance vote; third run trades unaided

Satsuma's autonomous process keeps a work ledger on chain: a contract that tracks each piece of proposed work from submission through building to deployment. The change that makes that ledger move only through governance was merged. Before it, the session's own note put the problem plainly: "Today the ledger's state changes are made by the daemon's own key. The ledger mirrors governance; governance doesn't produce it." Now every transition comes from the governance timelock's execution payload, deployments are recorded by one role and attested only by the timelock, and releasing a stalled item is permissionless. The change carries 35 ledger tests and 16 dry-run acceptance tests; the full suite stood at 628 passing and 1 failing, the same failure already present before it.

Two design records were written down. One covers moving ledger transitions into governance payloads. The other covers an operating component: a registry of key performance indicators, a registry of operations, a generic measurement step and an operator runtime, so that what Satsuma builds is also run and measured as a governed operation. The defaults chosen: a separate indicator registry, operators file reports of need but only the loop proposes, budgets escrowed in SUMA and debited in compute units, and a policy hash pinned per operation and changed only by an amendment vote.

The operating component was built on a branch: 16 commits plus three fixes covering hold-close, bounded operator restarts and a settlement grace period. 27 dry-run acceptance tests passed, six of them with caveats; the suite stood at 691 passing and 1 failing, the same failure as before. A further pull request was merged after that.

With the new loop, the same objective ran again on fresh chains for 5 h 26 min with no human intervention after the start. Satsuma proposed three build protocols, an exchange, a remote account and a mandate account, plus a first operation; the council approved 3–0, the operation was activated and traded, and the goal was declared met. Six of sixteen swaps failed on slippage, and the research step judged nothing needed.

Review of the design pushed back on one point. Pausing an operation permissionlessly on a breached bound was rejected in favour of review periods that give an operation time to play out, with re-evaluation leading to a proposal or an on-chain change request; as the design notes already say, "The mandate contract already refuses every out-of-limit action on chain; that is the hard stop." That redesign is open, along with the write-up of this run, the naming of the runs, four long-standing test failures in continuous integration, and the fact that budgets still count model calls rather than real spend.

commits
  • WorkLedger: transitions only from the Timelock; register for SUBMITTED proposals; markDeployed and permissionless releaseForThe system
  • DeploymentRegistry: RECORDER_ROLE records deployments without the right to attest themThe system
  • Deploy: LEDGER_ROLE and the ledger's admin roles to the Timelock, REGISTRAR_ROLE to the daemon; the Timelock attests deploymentsThe system
  • Work ledger client: encode transitions for Governor payloads; releaseFor; derive building and pendingDeployThe system
explored
  • Main's continuous-integration failures were investigated: four confirmed as pre-existing, not fixed
  • A running list of gaps on the way to full autonomy was started with eight entries
decided
  • Work-ledger transitions come only from governance execution payloads
  • Operating component defaults: separate indicator registry; operators report need, only the loop proposes; budget escrowed in SUMA, debited in compute units; policy hash pinned per operation, changed only by amendment vote
  • Operations get review periods instead of permissionless pausing on a bound breach; key results are fixed when the objective is set
open
  • Redesign operation pause as review periods with change requests
  • Write-up of the run
  • Naming of the runs
  • Four long-standing continuous-integration failures
  • Budgets count model calls, not real spend
  • Six of sixteen swaps failed on slippage and research judged nothing needed
The system

Three Satsuma websites load faster and the explorer stops jumping

Satsuma runs three public websites: a main site, a block explorer that shows the chain's blocks and transactions, and this engineering blog. A round of speed work landed on all three. Font downloads fell from 352 KB to 89 KB, the next page starts loading as soon as its link is hovered, including links that cross from one site to another, and an explorer page that was loaded ahead of time now starts polling for live data only once it is actually opened. Images and other media are kept out of that hover preloading.

The explorer's overview page no longer jumps around while it loads. Block rows are stacked and the fees lines have a fixed size, and the measured layout shift dropped from 0.028 to 0.0004 on desktop and from 0.074 to 0.0006 on a phone.

The main site's homepage now carries sourced numbers, a single header pattern shared across its sections, and a section on the first experiment, in which Satsuma was given a goal and built what it needed to reach it.

A cross-browser pass covered WebKit and Firefox on the live domains. WebKit logged access-control errors in its console; their cause is not yet confirmed.

commits
  • Faster loads: subset font, leaner live data, prerender on hoversatsuma.one
  • Prerender across the Satsuma sites; start polling on activationThe explorer
  • Zero layout shift on the overview: stacked block rows, fixed Fees linesThe explorer
  • Keep media out of hover prerendering; header comment outside its blockThis site
  • Move the header comment outside its blocksatsuma.one
  • Homepage: sourced numbers, Experiment 01, one header patternsatsuma.one
explored
  • An outside-in look at another fast website's headers, HTML and bundles, compared with the three Satsuma sites
open
  • WebKit logs access-control console errors on the live sites; cause unconfirmed
The system

Section navigation shipped; the like button ended as a thumb-shaped swipe strip

Section navigation landed on engineering.satsuma.one: merged through a pull request and deployed, it appears on articles with 3+ sections. The design is a side rail on desktop and a bottom bar with a sheet on mobile, softened from the first mockup to a lighter look. The preview server, worktree and merged branch were cleaned up afterwards.

The like study was revived as a weighted like button and went live as a three-way experiment across hold, tap-again and swipe, with a likes database and a stats endpoint behind it. Hold was the initial recommendation; the decision was to test all three in production instead.

Further pull requests, all merged and deployed, reworked the button. The glow word, the popup, the hint text and every other word were dropped. A prism effect while holding and a lasting page imprint were built and then abandoned in favour of a plain strip. Tap-to-like followed and was replaced by swipe-to-like with intensity.

The button now is a centred swipe-to-like strip. Swipe distance sets the intensity, a partial fill stays visible after a half swipe, and a tap on a like removes it. The first swipe sets handedness, which is remembered; after that the strip tilts 18° and bows 7px toward the thumb. "Handedness is a guess from one swipe."

Still open: the touch gestures and a select-all fix were tested only with simulated touch, not on a real phone. Handedness cannot be flipped without clearing site data. The per-gesture breakdown in the stats now shows only taps and likely needs adjusting after the move to swipe. One of the like button pull requests was merged before its build check reported, though the local build passed. In light mode, the navigation's thread and hollow markers are faint.

explored
  • A mockup and redesign of the article section navigation: side rail on desktop, bottom bar and sheet on mobile
  • A multi-dimensional like (like, love, adore) from the revived like study
  • A three-way gesture experiment: hold, tap-again and swipe
  • A prism effect while holding and a lasting page imprint with handedness detection, abandoned for a plain strip
  • Tap-to-like, replaced by swipe-to-like with intensity
  • Right-side strip placement on phones, superseded by a centred strip with handedness handling
decided
  • Hold was recommended at first; all three gestures were tested in production instead
  • The glow word, popup, hint text and all words were dropped from the like button
  • The prism and imprint design was abandoned for a plain strip
  • The strip stays centred and ambidextrous; a partial fill stays visible after a half swipe; a tap on a like removes it
  • Handedness is inferred from the direction of the first swipe and remembered
open
  • Touch gestures and the select-all fix were tested only with simulated touch, not on a real phone
  • The light-mode navigation thread and hollow markers are faint
  • Handedness cannot be flipped without clearing site data and may need re-learning from later swipes
  • The per-gesture breakdown in the like stats now shows only taps and likely needs adjusting after the swipe change
  • One like button pull request was merged before its build check reported; the local build passed
  • Scrolling over the tilted strip is a noted caveat