Found wiring the post-enrollment user-system sync (#49 close-out, PR #77; recorded in PAIRING.md §6's 2026-08-22 note). Between two engine instances in one browser page over a local relay:
- Reader dials, writer accepts (the direction
engine/host/src/pairing_acts.rs wire_us and demo/host/pairing-bringup.ts use): the joiner's user-system replica converges in ~1s.
- Writer dials, reader accepts:
iroh-start handshakes report connected on BOTH sides, both sync-start(subscribe) handles report ready — and nothing ever arrives. The reader's replica sits at revision 0 while the writer's advances (measured us-revision 0 vs 4, browser, local relay, 2026-08-22).
Both existing harnesses happen to use the working direction, so nothing gates the reversed one — the demo now also uses the working direction (wireUsSubduction, demo/host/demo.ts). But "connected + subscribed + silently empty" is the worst failure shape an embedder can hit: every status surface says healthy while no data flows.
Worth establishing: is this a real directionality constraint in the engine guest's sync-start/subscription plumbing (e.g. the subscription only pushes across a connection the subscriber initiated), a subduction-level contract that direction encodes roles, or a bug? If it is a contract, the driver WIT docs should say so and sync-status should be able to report "subscribed but unserved"; if it is a bug, the differential harness wants a reversed-direction act.
Found wiring the post-enrollment user-system sync (#49 close-out, PR #77; recorded in PAIRING.md §6's 2026-08-22 note). Between two engine instances in one browser page over a local relay:
engine/host/src/pairing_acts.rswire_usanddemo/host/pairing-bringup.tsuse): the joiner's user-system replica converges in ~1s.iroh-starthandshakes report connected on BOTH sides, bothsync-start(subscribe)handles report ready — and nothing ever arrives. The reader's replica sits at revision 0 while the writer's advances (measured us-revision 0 vs 4, browser, local relay, 2026-08-22).Both existing harnesses happen to use the working direction, so nothing gates the reversed one — the demo now also uses the working direction (
wireUsSubduction, demo/host/demo.ts). But "connected + subscribed + silently empty" is the worst failure shape an embedder can hit: every status surface says healthy while no data flows.Worth establishing: is this a real directionality constraint in the engine guest's sync-start/subscription plumbing (e.g. the subscription only pushes across a connection the subscriber initiated), a subduction-level contract that direction encodes roles, or a bug? If it is a contract, the driver WIT docs should say so and
sync-statusshould be able to report "subscribed but unserved"; if it is a bug, the differential harness wants a reversed-direction act.