Skip to main content

0.38 — set effects, caller values, existence-selected outcomes and paged views

· 2 min read
0.38 — set effects, caller values, existence-selected outcomes and paged views | ESS0.38.0 lets an outcome change every record a filter selects, read the caller's attributes, be selected by whether its record exists, bound a binding's retry and page a view.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-09-28-1800-set-effects.md · revision b89faaa411bd

0.38.0 adds the source format ess/16, described in the version history.

Outcomes over many records​

instances: {where: …} on a moves: or updates: changes every stored record the predicate selects, and {count: changed} is how many it changed. affects: lets an outcome with one subject change other records a filter selects, reading subject.<field>.

Which outcome, and for whom​

unknown_instance: beside an update makes a create-or-update, and existing_instance: with an error: makes a create-or-refuse. An actor may declare attributes:, read as {caller: …} in values and as caller.<attribute> in guards. input_absent: answers a request that carries no input at all.

Retries, paging and values​

A binding can bound its retry with attempts and final refusals. A view with order_by: can declare paging:. A value may fall back to a literal after else:, or read a field of a related record with {related: …}. ess-composition/2 checks a consumer's types against the service it imports.