One Observer on a Room Ancestor Fires for Every Room in the Cohort

Claim

In the eOS-Harness MVA running against DGD 1.7.9 plus the eOS-kernellib chat-app multi-agent-coherence branch, when an append observer is registered once on a room ancestor and three child rooms set that ancestor as their ur-object, a message posting in each child resolves the ancestor's observer through the UrHierarchy walk and records on the child's own log. A base room carries the chat-room.message:main append observer; three child rooms call set_ur_object(base) but register nothing themselves; a post_message in each child writes chat-room.message, and the dispatcher's ancestry walk resolves the base's observer with $this bound to the posting child, so the append lands on the child's own message log. All three children record their message from the single ancestor registration. The coherent reactive behavior is provided once, at the ancestor, to every member of the cohort -- there is no per-room registration and no coordination among the rooms. This re-exercises the dispatcher's ancestry walk (the same mechanism the merry-app walkthrough's dispatch-ancestry phase demonstrates) at the application tier.

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 into the isolated runtime staging tree.

Setup (verifiable from repo state):

Load-bearing source (a phase of examples/chat-app/sys/test.c):

/* register the append observer ONCE, on the ancestor */
MERRY_DAEMON->register_observer(base, "chat-room.message", "main", SRC_APPEND);

/* three child rooms inherit the ancestor; none register their own observer */
child_x->set_ur_object(base);
child_y->set_ur_object(base);
child_z->set_ur_object(base);

/* a post in each child resolves the ancestor's observer via the ancestry walk */
CHAT_DAEMON->post_message(niaj, child_x, "x");
CHAT_DAEMON->post_message(niaj, child_y, "y");
CHAT_DAEMON->post_message(niaj, child_z, "z");
/* asserts each child's log holds exactly 1 message -- ANCESTRY OK */

SRC_APPEND does Set($this, "chat-room.message-log", Get($this, ...) + ({ $new })); the dispatcher binds $this to the dispatch host (the posting child), so each append lands on the child that posted, not on the ancestor.

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

ChatApp:test: ANCESTRY OK
ChatApp:test: NO-INHERIT OK

ANCESTRY OK writes only when all three children hold exactly one message each after their posts, proving the ancestor's single observer fired for every child. The assertion is inside catch{}; any child missing its append logs a distinct FAIL.

What the evidence establishes:

What the evidence does not establish:

What Would Revise It

Sources

Relations