Skip to content

Subduction sync delivers nothing when the writer dials: connected + ready, reader stuck at revision 0 #78

Description

@lannbot

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions