A Cached Snapshot Read Diverges From the Live Shared Log

Claim

In the eOS-Harness MVA running against DGD 1.7.9 plus the eOSContinuum/eOS-kernellib feature/cohesive-lift branch, when a reader caches its own copy of a chat room's message log and a further message then posts, the cached snapshot disagrees with the live shared log. A reader captures the log (three entries) into a local variable, a fourth message posts through the append observer, and a fresh read of the live property returns four entries while the cached copy still holds three. The divergence is the failure mode the runtime's coherent shared state removes by construction: it appears only because the reader held a private snapshot instead of reading the shared property at use time. This is the read-side analogue of the lost update -- both are costs an application incurs by acting on state captured before a concurrent change rather than reading current state when it is needed.

Grounds

This is an Empirical Observation. The grounds are a captured three-boot smoke run 2026-05-31 against the live MVA demonstration instance with examples/chat-app/ overlaid at the isolated runtime staging tree's src/usr/Chat/.

Setup (verifiable from repo state):

Load-bearing source (phase 9c of examples/chat-app/sys/test.c, the cached-diverge half):

/* after three messages have posted to room_r */
cached = room_r->query_messages();              /* private snapshot: 3 entries */
CHAT_DAEMON->post_message(judy, room_r, "four"); /* a fourth message lands */
live = room_r->query_messages();                /* live shared log: 4 entries */
/* asserts: sizeof(cached) == 3; sizeof(live) == 4 -- the cache has drifted */

The append observer's Set($this, "chat-room.message-log", Get(...) + ({ $new })) builds a NEW array on each append, so the property points at the four-element array while cached still references the three-element array captured before the post.

Smoke transcript (the load-bearing portion of the result log after boot 1):

ChatApp:test: COHERENCE OK
ChatApp:test: CACHED-DIVERGE OK

CACHED-DIVERGE OK writes only when the cached snapshot stayed at three entries AND the live read advanced to four. The assertion is inside catch{}; a mutated cache or a non-advancing live log each logs a distinct FAIL.

What the evidence establishes:

What the evidence does not establish:

What Would Revise It

Sources

Relations