Published June 22, 2026 | Version 0.1-draft

Reactions and the partition: opt-in eventual consistency in actor-native systems

  • 1. Ncubo Ideas, Costa Rica

Description

This paper is an analytic theory contribution in the sense of Gregor's (2006) theory for analyzing (Type I): it identifies a design construct, derives the principles under which it is exercised, and presents an instantiation in production as an existence proof of realizability — not the design-science evaluation of an artifact (Hevner, March, Park, & Ram, 2004), which a companion case-study paper is the venue for. The construct is the developer's pragmatic partition of an event's implied work into a now branch (what the verb's contract promises before responding) and a deferred branch with a placement. The CQRS literature treats eventual consistency as the architecture's defining commitment; this paper argues that for actor-native systems the contract is upside-down — eventual consistency is the shadow of the partition, not the design choice. The partition is exercised through Reactions: not async events under another name, but rules that match a trajectory through the actor's journal, statically compiled against the domain libraries, with typed identifiers propagated across stages. Reactions serve a double purpose — pragmatic deferral and categorical segregation of operational concerns from domain methods, the segregation structurally enforced — and both purposes share one guardian, friction. Three consequences follow when friction is low: a domain library that closes (the primary one), fast verbs, and opt-in eventual consistency. Code references throughout point to the public Puppeteer codebase, whose Reaction primitive instantiates the construct concretely.

Series information (English)

Part of the Puppeteer Papers — a seven-paper series of Gregor (2006) Type I "theory for analyzing" design papers on journaled-program substrates. This is Paper 3. It builds on Paper 1 (anti-porosity) and Paper 2 (program–value separability), and is a self-deposited preprint that has not undergone peer review.

Technical info (English)

Source-code references resolve against commit 6a529c4 of https://github.com/alvaroNCubo/puppeteer (2026-06-21), archived in Software Heritage at:

  swh:1:dir:463f291ec5e4fa8abef24dc1fe3e46e5a5975739
  ;origin=https://github.com/alvaroNCubo/puppeteer
  ;anchor=swh:1:rev:6a529c45367ca2c32a891a067efb5be3fed589ec

Empirical data: the paper03-data.zip file in this deposit contains the raw outputs of the measurements reported in §5.2, §6.1, §6.9 and §3.6 — the BenchmarkDotNet verb-latency report (bdn-6a529c4/: -report.csv/.md/.html plus the run log), the Cue end-to-end latency and exactly-once probe (cue-6a529c4.txt), and the catch-up / no-re-fire probe (catchup-6a529c4.txt) — together with the harness source (lab03-reactions-src/) and a headline.md summary. The harness code (BenchmarkDotNet- and Stopwatch-based) that produced these outputs lives in the labs/lab03-reactions/ directory of the Puppeteer Papers repository (https://github.com/alvaroNCubo/puppeteer-papers) and builds against the Puppeteer runtime at the same commit (6a529c4). Running the harnesses against 6a529c4 reproduces the figures (modulo run-to-run variance on the timing measurements — verb overhead ~0.3–0.4 µs and Cue latency ~1.3 ms, both near BenchmarkDotNet's resolution floor; the exactly-once-per-match and no-re-fire counts are deterministic).

Files

03-reactions-and-partition.md

Files (533.5 kB)

Name Size Download all
md5:0363d85133cfdcd087ed8dedd7b2ae99
117.2 kB Preview Download
md5:85909dbe6a206481738fdf8017b3a071
261.7 kB Preview Download
md5:f1ac463d19bfae584070d483fc821fd4
140.0 kB Download
md5:bc62083de1341b72054bee8a867ccf22
14.7 kB Preview Download

Additional details

Related works

Software

Programming language
C#
Development Status
Active