Skip to content

CONCEPT Cited by 1 source

Interdependent systems

Interdependent systems are architectures in which a change in one subsystem can surface as a bug in an entirely different subsystem, because the two share data, state, or control flow via edges that aren't explicit in either subsystem's interface.

The architectural benefit — composability, emergent behavior, richer feature surface — is the same edge that makes debugging hard. "Any changes in one system will affect another."

The gaming analogy

Breath of the Wild is the positive-case archetype: a fire in the world provides light, warmth, hot meals, and damage, and a weapon against monsters. The game "is so satisfying to play because the number of interdependent systems allow it to react to an infinite combination of scenarios."

(Source: sources/2026-04-21-figma-how-figma-draws-inspiration-from-the-gaming-world)

The negative case: Figma's connector / autosave cascade

The same post discloses the production failure mode:

  1. Observed symptom: autosave was failing on a FigJam file.
  2. Actual dynamics: FigJam connectors (arrows that smartly attach to objects) would oscillate — every collaborator in the file was modifying the connectors and sending slightly differing data back and forth indefinitely, producing "a huge number of multiplayer messages, which overloaded the multiplayer and autosave systems."
  3. Localization attempt #1 — code audit of the connector subsystem: "revealed nothing."
  4. Localization attempt #2 — debug-message instrumentation eventually led engineers to "a six-month-old PR change in an area of the code that has nothing to do with connectors."
  5. Causal chain: layout-subsystem bug → connector state corruption (because connectors' state "can be influenced by the code driving those other objects" — editing a sticky note's position/size with a connector attached recomputes where the connector attaches) → connector oscillation across collaborators → multiplayer message storm → autosave overload.

The bug's authored subsystem (layout) is three hops removed in the visible failure chain from where it was reported (autosave).

Figma's own framing: "It was the perfect encapsulation of an interdependent complex system, where one part of the code causes a bug in an entirely different part of the codebase."

Why interdependency hides the root cause

  • Implicit coupling via shared data — connectors' attachment state is a function of object layout state, but the layout subsystem doesn't know that. Changing layout silently changes connector state.
  • Multi-hop amplification — a small state corruption compounds through downstream systems (multiplayer → autosave), and the symptom appears at the end of the chain, not the start.
  • Temporal separation — the layout-subsystem PR landed six months before the autosave symptom surfaced. Pattern-matching the symptom against recent changes fails.

Mitigations (not all called out in the Figma post, but consistent)

  • Make implicit dependencies explicit — write-dependency graphs, foreign-key declarations, explicit subscription boundaries. Figma's systems/figma-multiplayer-querygraph encodes write-dep edges exactly to avoid this class of silent cascade in the materialization path.
  • Cross-boundary invariants — checker processes that validate derived state against source-of-truth (e.g. Figma's patterns/consistency-checkers) catch corruptions before they cascade.
  • Bisect-driven regression hunt — when a symptom is six months removed from the cause, instrument across commits rather than just within the failing subsystem's history.
  • concepts/blast-radius analysis — know which subsystems a change could plausibly reach and test there, not only in the subsystem where the code lives.

Relationship to concepts/game-engine-architecture

Interdependent systems are the direct consequence of composing via game-engine-style named systems: the more systems layer over each other, the richer the emergent behavior and the more hop-length cross-system bug propagation paths exist. The two concepts come as a pair — benefit and cost.

Seen in

Last updated · 200 distilled / 1,178 read