Dependency¶
Core Idea¶
Dependency is the directed relation in which one element relies on another being present, prior, compatible, or supplied — a structural asymmetry where A cannot proceed, function, be interpreted, or retain its value unless some condition on B is met, a relation Parnas (1972) made foundational to modular decomposition by treating "module A depends on module B" as the operational criterion governing which design changes propagate. [1] The relation has been formalized independently in five distinct intellectual traditions: graph-theoretic dependency analysis in compiler design (Aho, Lam, Sethi, and Ullman 2006), task-precedence modeling in operations research (Kelley and Walker 1959, who introduced the Critical Path Method), logical entailment in formal logic (Tarski 1936), semantic presupposition in philosophy of language (Strawson 1950), and obligate dependency in ecology (Janzen 1980). [2][3][4][5][6] The fact that these traditions converged on essentially the same structural notion — a directed reliance relation with a specifiable failure mode — without borrowing from each other is the strongest evidence that dependency is a substrate-independent prime rather than a domain-specific construct.
Dependencies can be material (downstream production needs upstream parts, the configuration Lee, Padmanabhan, and Whang (1997) showed amplifies demand variation through the bullwhip effect), informational (a downstream calculation needs an upstream input), temporal (a later event needs an earlier one to have occurred), logical (a theorem needs a lemma), semantic (a referring expression needs a referent, the relation Karttunen (1973) formalized in his account of presupposition projection), or institutional (a contractual obligation needs a triggering condition). [7][8] What unifies these is not the content of the relation but its shape: A depends on B, where some specifiable condition on B must hold, and where the violation of that condition impairs A in a documented failure mode. Without the failure-mode commitment, the relation degenerates into mere correlation or co-occurrence — both of which are symmetric and carry no asymmetric reliance.
Dependencies compose. A chain of dependencies — A depends on B depends on C — produces transitive reliance: A also depends on C, even though no direct relation was named. A graph of dependencies produces architecture: layered, modular, hierarchical, or cyclic, with topological sort — formalized in Cormen, Leiserson, Rivest, and Stein's (2009) treatment of directed acyclic graphs — providing the canonical algorithm for linearizing the compositional structure. [9] The compositional behavior is what lets analysts walk a dependency structure to compute critical paths, identify bottlenecks, detect cycles, and locate single points of failure — operations that recur in software build systems, project schedules, supply chains, biological pathways, legal-treaty ratification, and proof trees, all instances of the layered-dependency discipline Dijkstra (1968) introduced in his account of the THE-multiprogramming system. [10] The directed reliance is the atom; everything downstream is topology.
How would you explain it like I'm…
Needs Something Else
Relies On
Directed Reliance
Structural Signature¶
Dependency encodes the structural pattern: dependent element → dependency condition → relied-on element → direction → failure mode, the five-role schema that maps directly onto the directed-edge formalism Cormen, Leiserson, Rivest, and Stein (2009) use for dependency-graph algorithms. [9] Five named roles must be present for a relation to be a dependency rather than something looser. The dependent element is the thing that needs something. The relied-on element is the thing being needed. The dependency condition specifies what the relied-on element must satisfy (be present, be prior, be compatible, be true, be supplied). The direction is asymmetric: removing the relied-on impairs the dependent, but removing the dependent does not impair the relied-on. The failure mode names how the dependent breaks, stalls, or becomes ambiguous when the condition fails — and this is the commitment that separates a real dependency from a correlation, an association, or a co-occurrence.
Recurring features:
- Directed reliance of one element on another
- Asymmetric prerequisite or precondition relation
- Specifiable failure mode when the condition is unmet
- Transitive composition into chains and graphs
- Five-role structure: dependent, relied-on, condition, direction, failure mode
- Substrate-neutral relation populating dependency networks
The structural insight is robust across substrates: a software import statement, a task waiting on its predecessor, a proof citing a lemma, a referring expression presupposing a referent, an obligate symbiont and its host, a contract clause and its triggering signature — all instantiate the same five-role shape, an isomorphism Dijkstra (1968) anticipated when he argued that the same hierarchical dependency reasoning that organizes an operating system organizes any system whose layers can be reasoned about in isolation. [10] Naming the relation gives the analyst something concrete to walk: from any A, ask what does A depend on? and traverse to the prerequisites, then their prerequisites, recursively. This converts an opaque tangle into a navigable directed structure. The topology then yields the familiar derived phenomena: chains become transitive reliance, many-to-one becomes a bottleneck, mutual reliance becomes a cycle (usually a modeling error), and layered DAGs become architecture.
What It Is Not¶
Dependency is not a graph. A graph is the data structure — the set of nodes and edges — within which dependency relations can be represented. A network can contain many kinds of edges (correlations, similarities, symmetric ties, undirected affiliations), only some of which are dependencies. The graph is the container; the dependency is one kind of contents. Conflating the two leads analysts to assume that any node-and-edge representation captures the asymmetric reliance they care about, which it does not.
Dependency is also not a constraint. A constraint restricts the space of permissible states or actions; a dependency requires that a specific other element be supplied. A budget cap is a constraint; needing parts from a supplier is a dependency. The two can interact — a dependency can create a constraint downstream (B must hold, narrowing the option space) — but they foreground different things. Constraints answer "what is forbidden?"; dependencies answer "what is required?", a grammatical separation Holmes (1881) traced through contract doctrine, where consideration is a required precondition for enforceability rather than a constraint on the bargain's content. [11] A system can be heavily constrained yet have few dependencies (a regulated industry with autonomous firms), and heavily dependent yet face few constraints (a long supply chain operating in open markets).
Dependency is not causality, though the boundary is the one most worth careful attention. Causality is the productive, mechanism-mediated, time-asymmetric subtype of directed reliance — B's occurrence produces A's occurrence through a transmission of force, energy, information, or influence across time. Dependency is broader: it includes causality but also covers logical, contractual, and semantic reliance where no productive mechanism is in play. A proof depending on Lemma 2 involves no causal process — the lemma does not make the proof valid in any time-extended productive sense; the dependency is atemporal and constitutive. This is the substrate-furthest test case for the prime, and it is the case that establishes dependency as the umbrella and causality as one specific instance.
Dependency is not a mere correlation or co-occurrence. Two variables can co-occur reliably without one depending on the other (both may depend on a common cause). The directed-reliance commitment requires a specifiable failure mode: there must be a documented way A breaks when B fails. Without that, you have at most a statistical association.
Dependency does not imply tight coupling or fragility. A dependency can be loose (the dependent element degrades gracefully when the condition is unmet), redundant (multiple relied-on elements satisfy the same condition), or substitutable (the dependency condition can be satisfied by any of a class of suppliers). Tight coupling is a property a dependency can have; it is not the dependency itself.
Broad Use¶
- Software engineering: import graphs, build systems, transitive dependency resolution, package managers, dependency injection, version-conflict resolution, semantic versioning, and "dependency hell" — vocabulary whose modular-decomposition grounding traces to Parnas (1972). [1] The dependency vocabulary is so pervasive in software that practitioners sometimes assume it originated there; in fact, the operations-research formalism (PERT, CPM) predates the software usage by roughly a decade (Malcolm, Roseboom, Clark, and Fazar 1959).[12]
- Project management and operations: task interdependence, critical-path analysis, PERT networks, the theory of constraints (Goldratt 1984), bottleneck identification, Gantt-chart predecessor relations.[13]
- Supply chains and manufacturing: upstream component availability gates downstream production; just-in-time inventory amplifies dependency exposure; the bullwhip effect propagates demand variation through dependency chains.
- Logic and formal language: logical entailment (A ⊨ B means B depends on A for its truth in any model where A holds), sequent calculus, natural-deduction proofs as dependency trees from premises to conclusion.
- Linguistics and philosophy of language: semantic presupposition (a referring expression depends on the existence of its referent), implicature, anaphora resolution, scope dependency.
- Biology and ecology: obligate mutualism (one species cannot survive without another), biochemical pathway precursors, host-parasite reliance, trophic cascades when an upstream species in a food web is removed.
- Law and institutions: legal consideration (a contractual obligation depends on consideration having been exchanged), regulatory preconditions, treaty ratification chains, the doctrine of severability.
- Economics: factor-input dependency in production functions, complementary goods, network goods whose value depends on the installed base.
Clarity¶
A core function of "dependency" is to name the asymmetric reliance relation itself, separated cleanly from the things it is regularly confused with — a separation Parnas (1972) sharpened when he argued that a module's dependencies, not its size or its function, are what determine how design changes propagate. [1] It is not the graph of relations (that is network); it is not the productive mechanism that links cause to effect (that is causality); it is not a limit on what is permissible (that is constraint); it is not the historical accumulation shaping which relations exist now (that is path_dependence); it is not a prior assumption that a proposition takes for granted (that is presupposition, which is itself one kind of dependency). What dependency adds is the directed arrow A→B together with the failure-mode commitment — there is a specifiable way A breaks, stalls, or becomes ambiguous when B is unmet. That commitment is what separates a real dependency from a mere correlation, association, or co-occurrence.
The clarity move is to refuse the operator the temptation to use "depends on" loosely. When a stakeholder says "the rollout depends on stakeholder buy-in," the dependency-aware analyst presses: what specifically does the rollout require buy-in to supply, and what is the documented failure mode if buy-in is absent? If no failure mode can be named, the relation is not a dependency but an association — and treating it as a dependency leads to over-engineering (building escape valves for a relation that does not actually fail in a specifiable way) or to false reassurance (assuming the relation is captured when it is not).
Manages Complexity¶
Dependency gives a system a structure to walk. From any element A, the analyst asks what does A depend on? and traverses to its prerequisites, then their prerequisites, recursively — the same downward-walking discipline Dijkstra (1968) used to argue that each layer of the THE system could be understood by reference only to the layer immediately below. [10] This converts an opaque tangle of elements into a navigable directed graph with five named roles, and once those roles are present, downstream phenomena fall out by topology: chains become transitive reliance, cycles become circular dependencies (almost always a modeling error worth fixing), many-to-one fan-in becomes a bottleneck whose failure cascades widely, and layered DAGs become architecture. Naming the relation lets the analyst see the topology rather than only the elements.
The complexity-management payoff is concrete. A software team confronted with a build that takes two hours can ask "which targets depend on which?" and identify parallelizable subgraphs. A project manager confronted with a slipping deadline can compute the critical path and locate the one task whose delay propagates to the end date. A supply-chain analyst can identify the single supplier whose failure would halt the most downstream production. A logician can compute the minimal set of lemmas needed to prove a theorem. The same operation — walk the dependency structure, compute the closure, find the bottleneck — recurs across all of these, and it is the asymmetric directed reliance that makes the walk meaningful.
Abstract Reasoning¶
Dependency supports the counterfactual "if B were removed or violated, A would fail in this specific way." That is the move that lets engineers compute critical paths, lawyers identify contract preconditions, biologists predict cascading extinctions, and logicians track entailment. Across substrates, the same abstract operations apply: take the transitive closure (everything A indirectly depends on), find roots (elements with no upward dependencies, often the foundational primitives or the supplied inputs), find bottlenecks (single nodes many things depend on, whose failure has wide blast radius), and detect cycles (mutual reliance, which usually indicates either a modeling error or a genuine fixed-point structure that needs special handling). These operations are substrate-independent precisely because the relation itself is.
The counterfactual lift is what makes dependency reasoning powerful even when the actual failure has not yet occurred, an analytical leverage that Cormen, Leiserson, Rivest, and Stein (2009) make algorithmic in their treatment of graph-traversal techniques for closure and reachability. [9] A reliability engineer running fault-tree analysis is not waiting for the system to fail; she is enumerating the dependencies and computing which subsets of failures would propagate to system-level failure. A legal scholar reviewing a contract is not waiting for a breach; she is identifying which preconditions, if unmet, would unwind the obligations. A biologist modeling an ecosystem is not waiting for extinction; she is identifying which species, if removed, would cascade through the trophic dependency graph. The dependency vocabulary makes these otherwise-disparate exercises recognizable as instances of a single structural operation.
Knowledge Transfer¶
The vocabulary travels intact across domains, and this is the empirical case for treating dependency as a prime rather than a domain-specialist term. A software engineer reading about supply-chain disruption recognizes a build-graph problem. A biologist reading about technology lock-in recognizes the structural shape of obligate mutualism. A lawyer reading about logical entailment recognizes contractual consideration. The transfer is structural rather than metaphorical — these are all instances of directed reliance with a specifiable failure mode, and the operations that work in one substrate (walk the closure, find the bottleneck, detect the cycle) work in the others because the relation is the same.
The cleanest cross-substrate case is the logical/semantic dependency, because it contains no productive causal mechanism at all. A proof depends on its premises; a referring expression depends on the existence of its referent; a theorem depends on the lemmas it cites. There is no time-extended energetic process; the reliance is constitutive and atemporal, as Karttunen (1973) made precise for the linguistic case in showing that the presuppositions of a compound sentence are computed from its parts by a context-update procedure that has nothing to do with physical causation. [8] If the prime survives this case — if the same five-role structure applies and the same operations remain meaningful — then dependency genuinely extends beyond physics into the formal sciences, which is the test that distinguishes structural primes from domain-bound vocabulary. It does survive. A logician asked "what does this proof depend on?" produces a dependency graph whose nodes are propositions and whose edges represent the reliance of one proposition on another for its derivability; the graph supports the same operations (transitive closure, root-finding, cycle detection) as a software build graph. The substrate-furthest case strengthens rather than weakens the prime.
Examples¶
Formal/abstract¶
Logical entailment (Tarski 1936; Gentzen 1935). Consider a research paper whose main theorem depends on Lemma 2. [4] Lemma 2 is the relied-on element; the main theorem is the dependent element; the dependency condition is that Lemma 2 be true (i.e., have a valid proof from accepted axioms); the direction is asymmetric (the theorem needs the lemma, not vice versa, and overturning the theorem leaves the lemma untouched); the failure mode is specifiable — if Lemma 2 is shown to have a counterexample, the main theorem's proof is invalidated in a documented way (Tarski's model-theoretic account of entailment makes the failure mode precise: any model that falsifies the lemma also falsifies any derivation that uses the lemma as a premise).[4][14] This is a dependency without any causal mechanism: nothing physical causes anything; the reliance is logical and constitutive. Mapped back: the five-role pattern is intact even when stripped of any productive causal substrate. This is the substrate-furthest test case for the prime, and it passes — the operations that work on software dependency graphs (transitive closure, bottleneck identification, cycle detection as modeling error) also work on proof trees. The graph-theoretic abstraction that compiler designers use to schedule instructions (Aho, Lam, Sethi, and Ullman 2006) is the same abstraction logicians use to track which lemmas a theorem rests on. The substrate is different; the structural relation is identical.
Critical-path analysis (Kelley and Walker 1959; Malcolm, Roseboom, Clark, and Fazar 1959). A construction project consists of 200 tasks; each task has predecessor tasks it cannot start until they finish. [3] The dependent element is the downstream task; the relied-on elements are its predecessors; the dependency condition is that predecessors be completed; the direction is asymmetric (a delayed predecessor delays the downstream task, but a delayed downstream task does not delay its predecessor); the failure mode is specifiable — a one-day slip on the critical-path task propagates one-for-one to the project end date.[3][12] The critical path is the longest chain of dependencies through the project graph, and its length determines the minimum project duration. The Critical Path Method (CPM) and Program Evaluation and Review Technique (PERT), developed independently in 1957–1959 for the DuPont Nemours plant maintenance program and the U.S. Navy's Polaris missile program respectively, both formalized this dependency-graph reasoning roughly a decade before the software-engineering "dependency" usage became common. Mapped back: the operations-research formalism makes the five-role structure rigorous (tasks as nodes, finish-to-start precedence as edges, slack as the buffer between condition-satisfaction time and dependent-element-start time) and demonstrates that the dependency-walking algorithms (transitive closure, longest path, slack computation) are substrate-independent. The same algorithms applied to software build graphs, scientific workflow DAGs, and proof trees yield the analogous quantities.
Applied/industry¶
Software build systems (Aho, Lam, Sethi, and Ullman 2006; Lattner and Adve 2004). A modern build system like Bazel, Make, or Ninja represents a project as a directed acyclic graph of build targets, where each target depends on input files and other targets.[15][16] The dependent element is the build target; the relied-on elements are its inputs and prerequisite targets; the dependency condition is that the inputs exist and the prerequisite targets be up-to-date; the direction is asymmetric (changing an input invalidates the target, but rebuilding the target does not change the input); the failure mode is specifiable — if an input is missing or a prerequisite is stale, the build either fails or produces an incorrect artifact. The build system computes the transitive closure of dependencies, identifies which targets need rebuilding (incremental builds), parallelizes independent subgraphs (multi-core builds), and rejects cycles as malformed specifications. Package managers (npm, pip, cargo, maven) extend the same structure to versioned dependencies with constraint-satisfaction on version ranges. Mapped back: the build-system case is the contemporary canonical instance — it makes the five-role structure operationally visible and demonstrates that the same algorithms (transitive closure, bottleneck identification, cycle detection) recur in industrial practice. "Dependency hell" — the cascade of conflicting version constraints when transitive dependencies disagree — is itself a dependency-graph phenomenon that only makes sense within the prime's vocabulary.
Obligate ecological mutualism (Janzen 1980; Bronstein 1994). The yucca moth (genus Tegeticula) and the yucca plant exhibit obligate mutualism: the moth's larvae feed only on yucca seeds, and the yucca is pollinated only by the moth.[6][2] The dependent element is each species' reproductive success; the relied-on element is the partner species; the dependency condition is the partner's presence and viable population; the failure modes propagate (extinction of the moth causes the yucca to fail to reproduce, and vice versa); the dependency is so tight that local extinction of one partner reliably precedes local extinction of the other. The case is structurally clean because it contains no human institutions, ruling out the suspicion that "dependency" is a software-engineering specialty smuggled into ecology — biologists who never read a compiler textbook arrived at the same five-role relation through field observation. Mapped back: the biological case validates the prime as substrate-independent in the direction opposite to the logical case. The logical case shows the prime extends upward from physics into formal sciences (no productive mechanism needed); the biological case shows it extends across substrates without requiring human institutions. Both preserve the five-role structure and both support the same dependency-walking operations (transitive closure across a food web, bottleneck identification of keystone species, cycle detection of mutually obligate pairs).
Structural Tensions¶
T1: Dependency-tracking can become expensive enough to swamp the system it serves. The transitive closure of dependencies in a large software project, a global supply chain, or a long proof can grow combinatorially. Tooling that promises to make every dependency visible (full dependency graphs in package managers, full predecessor relations in project-management software, full citation graphs in academic publishing) can produce so much information that practitioners ignore the output and revert to local heuristics. The prime's analytical power scales with the willingness to traverse the structure, and that willingness is bounded by attention.
T2: Naming a dependency formalizes it and can ossify what was previously informal. A team that has worked together for years has tacit dependencies — knowledge about who consults whom on which questions — that are flexible and renegotiated continuously. When the same dependencies are formalized into a RACI matrix or an org-chart reporting line, the relations become inspectable and accountable, but also more rigid. The act of making dependencies explicit can convert a fluid working arrangement into a brittle contractual one. The same tension appears in software: explicit dependency declarations in a manifest file enable reliable resolution but also commit the project to specific versions and break the implicit flexibility of "use whatever is on the system."
T3: A dependency can be a bug or a feature depending on whose perspective is taken. From an architect's perspective, a tight dependency between two modules is technical debt: it constrains future change, propagates failure, and makes the system harder to reason about. From a domain expert's perspective, the same dependency may be a faithful encoding of a real constraint (these things genuinely cannot be separated without losing meaning). The "should we decouple this?" question often has no general answer — it depends on whether the dependency is a leakage from poor decomposition or a faithful representation of an actual reliance in the domain.
T4: Cycles in a dependency graph are usually treated as errors, but some real systems contain genuine fixed-point reliance. Tooling almost universally treats dependency cycles as malformed: build systems refuse to compile, package managers refuse to install, proof checkers refuse to verify, project schedulers refuse to compute critical paths. This rule works because most cycles are modeling errors. But some domains contain real mutual reliance that resists acyclic representation: monetary systems where trust depends on use which depends on trust; ecosystems where two species are mutually obligate; recursive definitions in mathematics; co-evolving software components. Forcing these into a DAG either loses information or creates artificial asymmetries. The tension is between the algorithmic convenience of acyclicity and the structural honesty of cyclic reliance.
T5: The dependency relation invites the failure-mode question, which can entrench worst-case thinking. Once an analyst is trained to identify dependencies and ask "what is the failure mode if this relied-on element fails?", the natural extension is to add buffers, redundancies, and contingencies for each failure mode. This is the structural source of much defensive engineering. The cost is real: redundant supply lines, duplicate code paths, belt-and-braces legal clauses, exception handlers for cases that never occur in practice. Without dependency reasoning, the system is fragile; with relentless dependency reasoning, the system is over-engineered. The right level of preparation requires judgment that the prime itself does not supply.
T6: Dependency analysis is most reliable in stable substrates, but the value of the analysis is highest in volatile ones. In a stable substrate (a mature software library, an established legal code, a well-characterized biochemical pathway), the dependency structure is known and the analysis is reliable but the payoff is marginal — nothing surprising is likely to be found. In a volatile substrate (a novel system being rapidly built, a startup pivoting, a contested legal frontier, an emerging ecosystem), the dependency structure is partially unknown and may be changing under the analyst's feet; the payoff would be high but the analysis is unreliable. The prime's analytical leverage is concentrated where its inputs are weakest. Practitioners often respond by demanding more documentation upstream, which raises friction and may be resisted; the alternative is iterative dependency discovery, which is slower but tracks the moving substrate.
Structural–Framed Character¶
Dependency sits at the structural end of the structural–framed spectrum: the directed relation of one element relying on another being present, prior, compatible, or supplied is as bare a structural commitment as the catalog contains. The same notion was formalized independently in compiler design, operations research, formal logic, philosophy of language, and ecology without any of those traditions borrowing from each other — the strongest evidence of substrate-independence the corpus offers.
No domain vocabulary needs to come along; "A depends on B in such a way that violating a condition on B impairs A in a specifiable failure mode" is statable in any field's terms. The prime carries no evaluative weight — dependencies can be load-bearing or fragile, exploited or designed around, but the relation itself is not normatively loaded. Institutional origin reads zero: a theorem depends on a lemma, a downstream chemical reaction depends on an upstream concentration, and an ecological obligate depends on its host with no institution required. Human-practice-bound also reads zero: biological pathways and proof trees are dependencies in exactly the same structural sense as project schedules. Import-vs-recognize is recognition: a software engineer mapping module dependencies, an ecologist mapping obligate-mutualist dependencies, and a logician mapping entailment dependencies are each reading directed-reliance structure already present, not importing a framing. On the spectrum, the verdict is canonical-structural.
Substrate Independence¶
Dependency is about as substrate-independent as a prime can be — composite 5 / 5 on the substrate-independence scale. The pattern is one substrate-neutral relation: a directed reliance in which the state, action, availability, meaning, or success of one element relies on another being present, prior, compatible, or supplied. Every diagnostic lands at the ceiling. Domain breadth is maximal because directed reliance recurs unchanged across software dependency graphs, project task networks, supply chains, biological obligate relationships, contract law (consideration, precondition), logical entailment, and semantic presupposition. Structural abstraction is at the top because directed reliance is a pure relational property of an ordered pair, expressible without any substantive vocabulary. Transfer evidence is unusually strong: the same relation has been independently formalized in at least five intellectual traditions (graph-theoretic dependency analysis in compilers, task-precedence in operations research, logical entailment, semantic presupposition, and obligate dependency in ecology), and the convergence across those independent formalizations is itself the most direct evidence of substrate independence. The verdict is that dependency is one of the catalog's paradigm structural primes, a clean 5 recognized wherever one element's standing requires that of another.
- Composite substrate independence — 5 / 5
- Domain breadth — 5 / 5
- Structural abstraction — 5 / 5
- Transfer evidence — 5 / 5
Relationships to Other Abstractions¶
Current abstraction Dependency Prime
Foundational — no parent edges in the catalog.
Children (26) — more specific cases that build on this
-
Causality Prime is a kind of Dependency
Causality is a specialization of dependency in which one event productively brings about another with counterfactual modal robustness.Causality is a specialization of dependency. The general dependency pattern is the directed asymmetric relation in which one element cannot proceed, function, or be interpreted unless a condition on another is met. Causality specializes by adding two commitments: a productive mechanism linking cause to effect (not merely correlation or precedence) and counterfactual modal robustness (had the cause not occurred, the effect would have differed). The same directed-asymmetric-reliance logic of dependency applies, with productive connection and counterfactual support as the specific gates distinguishing causation from looser dependence.
-
Cross-Boundary Subsidy Prime is a kind of, typical Dependency
Cross-boundary subsidy is a directional resource flow creating donor-coupling reliance, matching dependency's asymmetric-reliance definition.Dependency supplies the genus: Directed relation in which one element relies on another being present, prior, compatible, or supplied, with a specifiable failure mode if the condition is unmet. Cross-Boundary Subsidy preserves that general structure while adding its differentia: An asymmetric, sustained flow of a sustaining resource across a boundary holds a recipient above its endogenous capacity, creating donor-coupling vulnerability mistaken for autonomy. The parent can occur without those added commitments, whereas removing the parent structure leaves no basis for classifying the child as this subtype. That asymmetry establishes subsumption rather than mere association. The typical qualifier limits the claim to the characteristic route, not a constitutive requirement of every instance; exceptions must retain the child's identity through another mechanism.
-
Entanglement Prime is a kind of Dependency
Entanglement is a kind of dependency: subsystems acquire a directed reliance such that one's state cannot be specified without the other's.Entanglement is the quantum-mechanical condition in which subsystems are described by a single joint state that cannot be factored into independent subsystem states, so the value of measurements on one is correlated with measurements on another in ways no local description supports. That irreducible reliance of one subsystem's specification on another is the structure of Dependency — one element cannot be characterized or acted on independently of another. Entanglement specializes dependency to joint quantum states.
- Infinite Regress Prime is a kind of Dependency
An infinite regress is a kind of dependency chain in which each element depends on a further element of the same kind without termination.An infinite regress is a specialization of dependency where the directed relation "A relies on B being prior, present, or supplied" iterates without natural stopping point: each justifier, explainer, or ground itself requires another of the same kind. It inherits dependency's core asymmetry but adds the structural feature that the chain is non-terminating unless exited via foundationalism, circularity, or explicit endorsement of the unbounded series. The pathology is precisely a dependency relation that fails to reach a base case.
- Inheritance Prime is a kind of, typical Dependency
Inheritance is the specific dependency of a derivative on a parent ALONG A LINEAGE, with default carry-over and substitutability — a specialization of bare dependency ('not dependency in general').Dependency supplies the genus: Directed relation in which one element relies on another being present, prior, compatible, or supplied, with a specifiable failure mode if the condition is unmet. Inheritance preserves that general structure while adding its differentia: Transmitting structure along a lineage by default, with selective override. The parent can occur without those added commitments, whereas removing the parent structure leaves no basis for classifying the child as this subtype. That asymmetry establishes subsumption rather than mere association. The typical qualifier limits the claim to the characteristic route, not a constitutive requirement of every instance; exceptions must retain the child's identity through another mechanism.
- Task Interdependence Prime is a kind of Dependency
Task interdependence is a specialization of dependency in which the directed reliance is between coupled tasks in a work system.Task interdependence is a kind of dependency specialized to work-system tasks: the directed reliance is between activities whose completion, quality, or timing requires inputs, outputs, resources, or decisions from other tasks. It inherits dependency's general commitment that one element relies on another being present, prior, compatible, or supplied, and supplies the specific case where the elements are tasks and the typology of reliance — pooled, sequential, reciprocal — sets coordination requirements proportional to the coupling intensity that the underlying dependency relation creates.
- Teleconnection Prime is a kind of Dependency
A teleconnection is a kind of dependency in which distant regions are not independent because a shared mechanism couples them.A teleconnection is a specialization of dependency: distant regions, populations, or systems are not autonomous because the state at one location is conditional on a shared mechanism that couples it to another. It inherits dependency's directed-asymmetric relation — A's condition affects B's behavior — particularized to the non-local case where the dependency travels via a global process rather than direct contact. The El Niño–monsoon link is precisely a dependency edge in the climate network.
- Begging the Question Domain-specific is part of Dependency
Directed premise-to-conclusion and conclusion-back-to-premise reliance edges are internal constituents of the fallacy's justification graph.The conclusion relies on the offered premise for warrant, while that premise's acceptability relies on the conclusion already being granted. Dependency supplies the directed reliance relation and its failure mode; Cycle supplies closure; the child adds the epistemic and dialectical interpretation.
- Dependency Hell Domain-specific presupposes Dependency
Dependency hell presupposes a directed reliance graph whose transitive closure gathers the conflicting requirements.Without package-to-package dependency edges there is no closure over which version requirements can collide, although dependency itself is the substrate rather than the pathology. Dependency supplies the prerequisite condition: Directed relation in which one element relies on another being present, prior, compatible, or supplied, with a specifiable failure mode if the condition is unmet. Dependency Hell operates against that background: The pathological state where a project's transitive dependency closure holds mutually incompatible version constraints, turning installation into an NP-complete constraint-satisfaction problem that no edge-level patch can resolve. If the parent condition is removed, the child relation becomes undefined or loses the mechanism asserted by this edge; the parent can obtain independently, so the relation is presupposition rather than subsumption.
- DLL Hell Domain-specific presupposes Dependency
DLL Hell requires multiple clients to depend on a shared mutable library slot whose winning version can violate one client's assumed interface.Dependency supplies the prerequisite condition: Directed relation in which one element relies on another being present, prior, compatible, or supplied, with a specifiable failure mode if the condition is unmet. DLL Hell operates against that background: The failure mode where programs share dynamic libraries through one global single-version-wins namespace, so an unrelated install overwrites a version another program depends on and silently breaks it — cured by breaking the single-version-wins invariant. If the parent condition is removed, the child relation becomes undefined or loses the mechanism asserted by this edge; the parent can obtain independently, so the relation is presupposition rather than subsumption.
- Ecosystem Mismatch Domain-specific is part of Dependency
A directed reliance of the innovation's deployed function on the absent contextual asset is an internal constituent of Ecosystem Mismatch.The artifact can be technically complete in isolation while remaining unable to function in use because operation depends on charging, distribution, skills, standards, approval, or another external asset. Dependency supplies that directed reliance inside the larger mismatch.
- Immaterial Spatial Entity Domain-specific presupposes Dependency
An immaterial spatial entity presupposes material bearers whose arrangement or absence supplies the conditions on which its existence depends.Remove the host, enclosing walls, landmarks, treaty-fixed reference points, or other material configuration and the corresponding hole, room, or border ceases to be individuable. Dependency supplies this directed existential reliance; the child adds first-class spatial location, shape, history, and the eliminativist translation-loss test.
- Bottleneck Prime presupposes Dependency
A bottleneck presupposes dependency because the slowest-element-governs-the-whole pattern only obtains in a chain of dependent operations.A bottleneck presupposes dependency because the binding-local-constraint-governs-global-rate signature only obtains where operations are linked by directed reliance into chains or networks. Without dependency's structure — one stage cannot proceed unless its upstream input is supplied — there is no chain whose throughput could be capped by its slowest link, and improving non-bottleneck elements would not be wasted. Dependency supplies the coupling that makes throughput a system property rather than a sum of independent rates; the bottleneck is then the specific node where that coupling becomes the binding constraint.
- Caldera Collapse Prime presupposes Dependency
Caldera collapse presupposes a load-bearing structure that depends on a support medium whose withdrawal supplies the failure mode.The overburden remains intact and its load unchanged; failure occurs because a reliance condition is progressively removed until the unsupported structure drops into the void.
- Coordination Prime presupposes Dependency
Coordination presupposes dependency because alignment of independently controlled actors is only required when their actions are mutually contingent.Coordination presupposes dependency because the active alignment of independently controlled actors only becomes a problem when one actor's progress, output, or interpretation depends on another's. Without dependency's directed reliance — A cannot proceed unless a condition on B is met — there is nothing to synchronize: independent actors with no coupling can act in parallel without any coordination machinery. Dependency supplies the structural couplings that make coordination necessary; coordination then supplies the protocols, signals, and shared frames that resolve those couplings into coherent collective outcomes.
- Dependency Distribution Concentration Prime presupposes Dependency
How a system's dependency WEIGHT is distributed across providers; it presupposes a dependency structure and characterizes the shape of that reliance (a graph-weight property).Dependency supplies the prerequisite condition: Directed relation in which one element relies on another being present, prior, compatible, or supplied, with a specifiable failure mode if the condition is unmet. Dependency Distribution Concentration operates against that background: How a system's dependency weight is distributed across providers — concentrated or spread — is a structural property that bounds its fragility independent of its own defenses. If the parent condition is removed, the child relation becomes undefined or loses the mechanism asserted by this edge; the parent can obtain independently, so the relation is presupposition rather than subsumption.
- Inherited-Substrate Risk Prime presupposes Dependency
Inherited-substrate risk operates on a borrowed substrate the system relies on without re-deriving it; it presupposes a dependency relation and adds the audit-boundary asymmetry and latent origin condition.'every inherited substrate is a dependency' but adds a direction-of-attention claim. Dependency supplies the prerequisite condition: Directed relation in which one element relies on another being present, prior, compatible, or supplied, with a specifiable failure mode if the condition is unmet. Inherited-Substrate Risk operates against that background: A system built on a borrowed or inherited substrate carries forward latent conditions of the substrate's origin through an inheritance channel that the new system's audit boundary does not cross, so the risk concentrates exactly where attention does not. If the parent condition is removed, the child relation becomes undefined or loses the mechanism asserted by this edge; the parent can obtain independently, so the relation is presupposition rather than subsumption.
- Legacy Integration Prime presupposes Dependency
Legacy integration presupposes dependency because preserving institutional knowledge across rupture requires explicit linkage between new and prior systems.Legacy integration presupposes dependency because maintaining practice continuity, institutional knowledge, or cultural identity across discontinuous shifts requires that the new structure be linked to and rely on elements of the prior one. Without dependency's directed reliance relation, the post-rupture system could simply discard the legacy without consequence; legacy integration arises precisely because functions, data, or commitments in the new structure remain bound to artifacts from the old. Dependency supplies the structural couplings that make integration — rather than clean replacement — the operative engineering or organizational choice.
- Operational Reach Prime presupposes, typical Dependency
Effective reach is set by a tip's DEPENDENCY on a support tail whose capacity decays with distance/duration (the tip can act only as far as the tail reaches).Dependency supplies the prerequisite condition: Directed relation in which one element relies on another being present, prior, compatible, or supplied, with a specifiable failure mode if the condition is unmet. Operational Reach operates against that background: Effective action extends only as far as the support tail can sustain it. If the parent condition is removed, the child relation becomes undefined or loses the mechanism asserted by this edge; the parent can obtain independently, so the relation is presupposition rather than subsumption. The typical qualifier limits the claim to the characteristic route, not a constitutive requirement of every instance; exceptions must retain the child's identity through another mechanism.
- Path Dependence Prime presupposes Dependency
Path dependence presupposes dependency because outcomes constrained by historical trajectory require the present to rely on prior decisions and states.Path dependence presupposes dependency because the claim that present options depend constitutively on the historical trajectory of choices requires the directed reliance relation between later and earlier states. Without dependency's structure — A cannot proceed, function, or retain value unless conditions on prior B are met — the present state would be fully determined by current conditions plus exogenous shock, and history would drop out. Dependency supplies the temporal reliance that makes the sequence of past decisions load-bearing for present and future possibilities.
- Sequencing Prime presupposes Dependency
Sequencing presupposes dependency because the order in which steps are arranged is dictated by which steps require which others as prerequisites.Sequencing presupposes dependency because the deliberate arrangement of steps over time is constrained by directed relations: step B cannot proceed until step A is supplied. It inherits dependency's structural asymmetry — A relies on B being prior — and uses it as the binding constraint that determines admissible orderings. The active design choice of sequencing operates on a dependency graph, and without that graph there would be no precedence to satisfy and no value in the order itself.
- Single Point of Failure Prime presupposes Dependency
An Single Point of Failure is a serial articulation node on the operational DEPENDENCY graph whose removal disconnects it; it presupposes a dependency topology and names the node every critical path runs through with no parallel route.An SPOF is a serial articulation node on the operational DEPENDENCY graph whose removal disconnects it; it presupposes a dependency topology and names the node every critical path runs through with no parallel route. (bottleneck is the nearest competing genus but governs throughput, not reliability — see rationale.)
- Systemic Risk Prime presupposes Dependency
Systemic risk presupposes dependency because component-failure cascades require a directed relation in which one element relies on another.Systemic risk emerges from dense interdependence in which one component's failure propagates through interconnections to threaten the whole. This presupposes dependency: the directed relation in which one element cannot proceed, function, or retain value unless a condition on another is met. The cascade structure of systemic risk is precisely the dependency graph being traversed by failure: when A depends on B and B fails, A's continued functioning is no longer supported. Without dependency's directed asymmetric relation, failures would not propagate along predictable paths and the systemic topology would have no failure dimension.
- Quality inherence Domain-specific is a decomposition of Dependency
Quality inherence is the upper-ontology form of existential dependency in which a property-token cannot exist without its bearer.Remove the BFO/DOLCE vocabulary, continuant typing, trope-versus-universal dispute, and formal-ontology enforcement layer. What remains is a directed reliance relation: the quality-token cannot exist unless its bearer exists. Dependency supplies that substrate-neutral structure; Quality Inherence adds the upper-ontology claim that attributes are specifically dependent particulars and treats an unbound quality as a category error.
- Supporting Effort Domain-specific is a decomposition of Dependency
Supporting effort is defined over a directed enabling relation: the main effort relies on a condition or capability the supporting activity supplies, with a specifiable failure if that support is absent or cut below its functional floor.The doctrinal label adds priority direction and a yield rule, but without the underlying reliance relation there is no mediated value and the activity is a parallel objective rather than support.
- Preparatory Field Conditioning Prime is a decomposition of Dependency
The focal action relies on the intermediate condition supplied upstream, with a specifiable failure or cost increase when it is absent.The framing can be removed while the parent roles remain, so the edge records portable structural cargo rather than taxonomic identity.
Neighborhood in Abstraction Space¶
Dependency sits among the more crowded primes in the catalog (30th percentile for distinctiveness): several abstractions describe nearly the same structure, so a description that fits it will tend to fit its neighbors too — transporting it usually means disambiguating within this family rather than landing on it exactly.
Family — Structure, Decomposition & Relational Mapping (39 primes)
Nearest neighbors
- Single Point of Failure — 0.75
- Correlation — 0.73
- Substitutability — 0.72
- Dependency Distribution Concentration — 0.72
- Decomposition — 0.72
Computed from structural-signature embeddings · 2026-07-26
Not to Be Confused With¶
Dependency must be distinguished from Causality, and this is the boundary where the prime has to hold up to scrutiny. Project-06's R21 round closed unanimously on causality → dependency as subsumption, treating causality as the time-asymmetric, mechanism-mediated subtype of directed reliance and dependency as the umbrella. The decisive case is logical entailment, where a proof depends on a lemma with no productive causal mechanism whatsoever — the reliance is atemporal, constitutive, and substrate-formal. Nothing causes the proof to depend on the lemma; the dependency is a feature of the logical relation itself. The same applies to semantic presupposition (a referring expression's reliance on the existence of its referent), contractual consideration (an obligation's reliance on a triggering exchange), and definitional reliance (a term's reliance on the meanings of its constituents). All of these are dependencies; none are causal in the productive-mechanism sense. Causality additionally requires time-asymmetry and the transmission of force, energy, or information across a temporal interval — features that dependency does not require. Every causal relation is a dependency, but not every dependency is causal: the dependency between premise and conclusion is timeless; the causal relation between rain and wet ground is not. Collapsing them would force the catalog either to deny the logical case (damaging formal-sciences coverage) or to stretch causality to cover atemporal constitutive reliance (eroding its commitment to productive mechanism).
Dependency must be distinguished from Network. A network is the graph data structure — nodes and edges. Dependency is a kind of edge that can appear in a graph. The network is the container; the dependency is one possible relation populating it. Networks can carry many edge types: symmetric ties (friendship, similarity, co-occurrence), asymmetric ties (citation, dominance, dependency), weighted ties (correlation strength, flow volume). Collapsing the two would force the false choice between treating every network edge as a dependency (which fails for correlation networks) or requiring every dependency to come with a full graph context (which fails for the two-node case). The clean separation: dependencies populate networks, and operations on dependency-typed networks (topological sort, critical-path computation, transitive closure) work only when the edges carry the asymmetric reliance commitment.
Dependency must be distinguished from Constraint. A constraint restricts what is permissible; a dependency requires that a specific other element be supplied. The grammatical mood differs: constraints forbid ("you cannot exceed this budget," "no two queens may share a row"); dependencies require ("you need this input," "this lemma must be true"). A dependency can create a constraint downstream — if A depends on B, any solution must supply B — but the two foreground different things. Constraints describe the boundary of the feasible region; dependencies describe the directed reliance edges among elements. Some dependency-resolution algorithms encode dependencies as constraints over a version space, but the encoding is a translation between two different structural notions, not an identity.
Dependency must be distinguished from Presupposition. Presupposition is a specific kind of dependency in language or logic — one proposition takes another for granted (the king of France is bald presupposes that France has a king; the dependent assertion fails or becomes ambiguous if the presupposition fails). Dependency is the broader umbrella. Collapsing them would either lift presupposition out of its linguistic-semantic home (where projection behavior, accommodation, and presupposition failure are precisely characterized) or shrink dependency to a linguistic notion that no longer covers software builds, supply chains, or proof trees.
Dependency must be distinguished from Path Dependence. Path dependence is the historical-accumulation mechanism explaining how the current set of dependencies came to exist as it does — early choices, increasing returns, lock-in, and irreversibility produce a present configuration that reflects history rather than current optimality. Dependency is the current relation itself, and it need not be path-dependent: a fresh logical entailment depends on its premises with no history of accumulation, and a newly designed system can have engineered dependencies that were chosen rather than accreted. Path dependence usually presupposes some dependency structure, but the explanatory directions are opposite: path dependence asks "why are the current dependencies these and not others?"; dependency asks "what are the current dependencies and what do they imply?" Path dependence is a mechanism for the origin of certain dependency configurations; dependency is the relation whose origin path dependence sometimes explains.
Solution Archetypes¶
Solution archetypes in the catalog that build on this prime — directly (this prime is a source ingredient) or as a related prime.
Built directly on this prime (14)
- Controlled Inheritance Propagation: Let descendants receive shared structure by default from a lineage ancestor while requiring every exception to have a scoped, visible, and testable override.▸ Mechanisms (14)
- Configuration Inheritance Tree — Arranges configuration into a parent-to-child tree so each scope inherits its ancestors' values by default and declares only what it needs to differ.
- CSS Cascade and Specificity Rule — Resolves which declaration wins when several target the same property, ranking them by origin, importance, specificity, and source order so conflicts settle deterministically.
- Effective Configuration Diff — Computes the fully-resolved effective settings for a node and labels each value with where it came from, so you can see what was inherited versus overridden locally.
- Inheritance Lint or Static Analysis — Scans an inheritance graph statically for structural smells — chains too deep, overrides that shadow nothing, exceptions past their budget — and flags them before they reach runtime.
- Lineage Impact Analysis Report — Traces a proposed ancestor change forward to every descendant it would touch, so the blast radius — and the inherited risks it disturbs — is known before the change ships.
- Object-Oriented Class Inheritance — Lets a subclass receive its superclass's fields and methods by default, override chosen methods, and still stand in wherever the superclass is expected.
- Override Expiry Workflow — Gives every override an expiry date so it must be re-justified, renewed, or removed and backfilled to the inherited default — stopping temporary exceptions from silently becoming permanent.
- Permission Inheritance with Explicit Denial — Lets access rights flow down a resource tree by default, while an explicit local denial overrides any inherited grant — because deny wins.
- Platform Variant Option Model — Defines a common platform as a catalog of options that variants inherit, override at declared points, and eventually fork from when divergence outgrows the shared base.
- Policy Inheritance Matrix — A grid of policies against organizational scopes that shows, per cell, what is inherited, what is locally overridden, what is mandatory-locked — and who owns each row.
- Prototype Delegation Chain — An object inherits from another live object by delegation: a property miss falls through the chain of prototypes until it resolves, and a local property simply shadows the inherited one.
- Schema Extension and Override Check — Gates a schema that extends or overrides a base, verifying the descendant stays substitutable for the base — and, when a base change would break that, requiring a migration and backfill plan.
- Template Clause Override Register — A ledger of every place a document departs from its standard template — each override recorded with scope, text, reason, and approver, and counted against a deviation budget.
- Trait or Mixin Composition Rule — Builds a type by composing small reusable behavior units from a registry, with a conflict rule — linearization or explicit override — deciding what happens when two units define the same member.
- Definition-Time Context Binding: Bind a behavior unit to the minimum context that defined it so later execution resolves against that context rather than silently inheriting an unrelated ambient environment.▸ Mechanisms (15)
- Bound Method or Callback — Packages a function together with the specific receiver it was taken from, so a later call runs against that object instead of whatever code happens to invoke it.
- Capability Object — An unforgeable reference that both names a resource and carries the authority to use it, so holding it is the permission and no ambient privilege is consulted.
- Closure Serialization — Turns a live closure — code plus its captured definition environment — into a portable, storable form that can be shipped elsewhere and rebuilt with its bindings intact.
- Context Migration Record — A durable record of how a captured context was translated from one version or environment to another, so a moved unit's origin bindings can be rebuilt and audited.
- Continuation Token — An opaque, tamper-evident token carrying the minimum state needed to resume a computation exactly where it paused, whoever later presents it.
- Dependency Handle Registry — Binds each dependency a unit needs to a stable handle, so its references resolve to the same identity across contexts instead of re-resolving against whatever is ambient.
- Dual-Run Equivalence Test — Runs one behavior unit under both its original and a new context and compares the outputs, so context-coupling bugs surface as divergences instead of silent drift.
- Explicit Environment Object — Reifies the context a unit depends on into a single value passed explicitly at the call, so the unit resolves its dependencies from that parameter rather than ambient globals.
- Lexical Closure — Captures the free variables of its enclosing lexical scope at definition time, so the function's nonlocal references resolve to where it was written rather than wherever it is later called.
- Partial Application — Fixes some of a function's arguments at creation time to produce a specialized function of the remaining arguments — binding chosen inputs early while leaving the rest to be supplied at the call.
- Revocable Authority Token — A scoped, expiring credential bound to a delegated action so it runs with exactly the authority its issuer intended — withdrawable at any time, never inheriting the host's ambient privileges.
- Serialized Job Envelope — Wraps a unit of deferred work together with the minimum context it needs into one self-contained, serializable message, so any worker that picks it up later reconstitutes the intended execution context instead of its own.
- Signed Context Manifest — A manifest of a behavior's bound context sealed with a cryptographic signature, so any receiver can verify the context is authentic and unaltered before trusting the behavior to run.
- Versioned Configuration Snapshot — Freezes the full set of configuration values in force at a chosen moment under one version identifier, so a later or repeated run resolves its settings from the snapshot rather than from drifting live config.
- Versioned Context Manifest — An itemized manifest of every context reference a behavior was bound to — schemas, identities, definitions — each tagged with its version and provenance, so a later execution resolves them to the same versions it was defined against.
- Demand-Triggered Deferred Evaluation: Represent optional or path-dependent work as a suspended unit, realize only the dependency closure demanded now, and make result sharing, side effects, failure timing, cancellation, lifetime, and first-use latency explicit.▸ Mechanisms (16)
- Call-by-Need Evaluator — Evaluates an expression only when its value is demanded, propagates that demand through everything the value depends on, and evaluates each suspended piece at most once.
- Conditional Workflow Gate — Guards an expensive stage of a workflow behind a cheap predicate, so the stage runs only when its output will actually be used.
- Copy-on-Write — Lets many holders share one physical copy of some data and defers the actual copy until a holder first writes, so unmodified sharing costs nothing.
- Deferred Database Query Object — Represents a database query as a composable object that builds up lazily and only touches the database when its results are actually iterated.
- Demand Paging — Loads a page of memory from backing store only when a program actually touches it, turning the page fault into the signal that the data is finally needed.
- Demand-Driven Build Graph — Models work as a dependency graph and, given a requested output, realizes only the subgraph that output depends on and whose inputs have changed.
- Just-in-Time Compilation — Defers translating code into fast native form until running demand — and repeated use — proves a path hot enough to repay the compilation.
- Late-Materialization Query Plan — Carries lightweight column positions through a query and reconstructs full rows only at the end, for only the rows and columns that survive.
- Lazy Sequence Generator — Produces a sequence one element at a time, computing each only when the consumer pulls for it — and never computing elements no one asks for.
- Lazy-Initialization Proxy — A transparent stand-in that looks like the real object but constructs it only on first genuine use, then forwards every call to the one real instance.
- Memoization — Stores the result of a computation keyed by its inputs, so a repeat call with the same inputs returns the saved value instead of recomputing it.
- On-Demand Report Generation — Builds a report only when a user actually requests it, and re-checks — at generation time — who is asking and whether they still want to wait.
- Predicate Pushdown — Moves a query's filters down to the data source so rows that cannot match are never read, decoded, or transmitted in the first place.
- Short-Circuit Evaluation — Evaluates a boolean expression left to right and stops the instant the result is settled, so later operands — and their side effects — never run.
- Single-Flight Request Coalescing — When several callers demand the same not-yet-ready value at once, runs the computation a single time and hands that one result to every waiter.
- Thunk or Lazy Promise — Packages an unevaluated computation as a first-class value that runs at most once when forced — relocating its side effects and failures to force-time.
- Distributed Coordination Architecture: Design the outcome, authority, dependencies, interfaces, shared state, timing, commitments, exceptions, and feedback that let independently controlled actors produce a coherent collective result.▸ Mechanisms (13)
- After-Action Coordination Review — Closes a coordination episode by extracting transferable lessons and transferring residual obligations, so the architecture improves and no commitment vanishes when the coalition disbands.
- Commitment and Dependency Register — Turns promises and the dependencies they create into stateful, addressable objects with owners, dependents, status, and closure evidence — durable coordination memory rather than scattered recollection.
- Coordination Decision Rights and Autonomy Matrix — Maps, for each class of coordinated decision, who may commit, decide, execute, veto, stop, and review — drawing the line between legitimate local autonomy and choices that require joint control.
- Coordination Health Review — A standing review that watches interface- and outcome-level health signals and re-tunes the coordination architecture before degradation hardens into failure.
- Dependency and Interaction Map — Charts the actual interdependencies and handoffs between actors — where one party's state changes another's feasible action — so coordination targets real coupling, not org-chart lines.
- Distributed Planning and Reconciliation Session — A working session where independently-planning actors reconcile competing claims on scarce shared resources into a jointly feasible set of commitments.
- Event-Driven Coordination Channel — Routes meaningful changes and exceptions to exactly the actors whose decisions depend on them, so coordination rides targeted signals instead of broadcast noise or constant shared-state polling.
- Exception and Escalation Protocol — The pre-agreed path for when normal coordination fails — declare the exception, contain harm, hand time-limited interim authority to a named role, route the decision, then review and close.
- Interface Control Document or Service Contract — Freezes one recurring exchange between two parties into an explicit contract — objects, semantics, guarantees, acknowledgment, and versioned change rules — so neither side has to renegotiate it.
- Joint Operating Agreement — Ratifies the shared outcome, the chosen coordination mode, and the incentive and cost-sharing terms into one versioned, authority-bearing agreement every party signs.
- Liaison and Integrator Role — A standing human role that spans a boundary — translating between parties, brokering competing claims on shared resources, and keeping the working relationship intact enough to keep coordinating.
- Shared Coordination Board — A single shared surface where every actor reads the same live picture — outcome, state, commitments, dependencies, capacity, exceptions — each field owned, dated, and confidence-tagged.
- Synchronization Checkpoint — A dependency-triggered readiness gate: before a coupled, hard-to-reverse transition, every required party confirms it is ready, and the gate can release, hold, or send everyone back to replan.
- Donor-Coupled Capacity Governance: When a recipient appears viable because a donor/source continuously sustains it across a boundary, make the subsidy explicit, test real capacity, and choose continuation, formalization, transition, or withdrawal safeguards.▸ Mechanisms (9)
- Capacity Milestone Agreement
- Cross-Boundary Support Agreement
- Donor Stress Test
- Source-Sink Monitoring Dashboard
- Subsidy Dependency Assessment
- Subsidy Ledger
- Support Load Quota
- Taper and Handoff Plan
- Withdrawal Rebound Drill
- Holonic Autonomy Nesting: Design nested units as autonomous local wholes and dependent parts at the same time, with explicit boundaries, interfaces, escalation paths, and cross-level invariants.▸ Mechanisms (8)
- autonomy_dependency_review
- cell_team_federation_model
- cross_level_exception_protocol
- holon_interface_registry
- holonic_operating_model_canvas
- nested_governance_cadence
- recursive_decision_rights_matrix
- system_of_systems_holon_map
- Layered Defense Gap Decorrelation: Treat every defense layer as imperfect, then prevent catastrophe by finding and breaking the cross-layer alignment of its holes.▸ Mechanisms (8)
- Aligned Gap Heatmap
- Barrier Gap Walkthrough
- Bowtie Analysis with Layer Gaps
- Common-Cause Layer Audit
- Independent Barrier Test Drill
- Latent Condition Rounds
- Near-Miss Trajectory Review
- Swiss-Cheese Barrier Review
- Pivotal Participation Leverage Mapping: Map who or what becomes decisive because the collective outcome fails without it, then manage that pivotal leverage without confusing nominal size with real marginal contribution.▸ Mechanisms (12)
- Banzhaf Power Index
- Consent Package Negotiation
- Dependency Removal Counterfactual
- Minimal Winning Coalition Enumeration
- Pivotality Counterfactual Matrix
- Quorum Sensitivity Table
- Redundancy or Substitute Build Plan
- Shapley–Shubik Power Index
- Stakeholder Power–Interest Matrix
- Swing-Vote Scenario Review
- Veto-Point Review
- Weighted Voting Simulation
- Selective Legacy Integration: Carry forward what gives a predecessor system knowledge, trust, and identity while redesigning it for the successor context.▸ Mechanisms (10)
- Continuity Charter
- Heritage-to-Principles Translation Workshop
- Institutional Memory Repository
- Knowledge Transfer Playbook
- Legacy Element Keep / Translate / Sunset Matrix
- Legacy Health Review Cadence
- Legacy-to-Successor Crosswalk
- Parallel Practice Shadowing
- Provenance and Decision-Rationale Index
- Transition Oral History Interviews
- Self-Hosted Bootstrap Construction: Begin with a trusted minimal seed, let each verified stage produce the capability that builds the next, and finish only when the target system can reproduce and operate itself without hidden external support.▸ Mechanisms (15)
- Bootstrap Dependency Manifest — Declares the full build-dependency graph, names the trusted seed at its root, and marks the single edge where the bootstrap cycle is deliberately cut.
- Bootstrap Toolchain Pin-and-Replace — Freezes each external tool at an exact, recorded version, then swaps it out one at a time for the system's own freshly built output until nothing external is load-bearing.
- Capability-Ladder Runbook — Lays out the ordered ladder of stages — what capability each rung must deliver, in what order, and at what budgeted cost — from the seed up to the self-hosted target.
- Checkpointed Stage Promotion — Advances the build one stage at a time — snapshotting each stage, promoting only when readiness and invariants both check out, and rolling back to the last good snapshot when they don't.
- Clean-Environment Rebuild — Rebuilds the whole system from its declared seed inside a sealed, pristine environment to prove nothing on the host silently crept into the result.
- Cross-Compiler-to-Self-Host Handoff — Uses a foreign compiler to produce the first native build on a new platform, then hands construction to that build so the system compiles itself — and retires the foreign compiler.
- Diverse Double-Compilation Check — Rebuilds the compiler along a second, independent toolchain and checks the two results converge, catching a self-perpetuating compromise that a single lineage cannot see.
- Emergency External-Seed Recovery — When the bootstrap chain is lost or found compromised, deliberately reaches outside the self-hosted world — under explicit human authorization — to re-import a trusted seed and rebuild from it.
- Fixed-Point Build Comparison — Iterates the self-build until its output stops changing, then checks that successive self-produced versions are identical — the signal that construction has converged.
- Minimal Rescue-Image Bootstrap — A tiny, self-contained, auditable image that can start the whole bootstrap from bare metal when no trusted toolchain is already present.
- Post-Bootstrap Artifact-Retirement Audit — After self-hosting is reached, checks off every bootstrap-only seed, cross-tool, and scaffold and confirms the running system depends on none of them.
- Reproducible Bootstrap Build — Makes the whole seed-to-target chain rebuild bit-for-bit identically from declared source, so every stage's binary can be traced and reproduced by anyone.
- Seed-Artifact Signature Verification — Checks the starting seed's cryptographic signature and hash against a trusted reference before any stage is built on top of it.
- Stage-Output Diff and Semantic-Equivalence Test — Diffs a stage's output against a reference and, when the bytes differ for benign reasons, decides whether the two are still the same program.
- Staged Self-Host Build — Builds the target as a ladder of stages, each one compiled by the product of the stage below, until the system can build itself and the seed drops away.
- Specialization Boundary and Reintegration Design: Improve efficiency by narrowing roles or niches only where the gains exceed the coordination, brittleness, learning, and reintegration costs.▸ Mechanisms (11)
- bus_factor_review
- coordination_cost_accounting
- dependency_heatmap
- handoff_contract_template
- integrator_role_assignment
- over_specialization_audit
- role_niche_charter
- role_recomposition_trigger_review
- rotation_and_cross_training_schedule
- specialist_generalist_portfolio_review
- specialization_boundary_workshop
- Substrate Lineage Risk Audit: Audit the lineage of a borrowed or inherited substrate so hidden origin conditions do not become unowned local risk.▸ Mechanisms (14)
- Base Image Provenance Attestation — Verifies and records where a base image actually came from — who built it, from what sources, by what process — so the layer everyone builds on is a checked origin rather than assumed-clean background.
- Clean-Room Rebuild or Replatforming Pilot — Rebuilds the system from accountable sources onto a fresh, known-clean substrate — piloted at small scale first — so inherited contamination is escaped by reconstruction rather than patched in place.
- Configuration Baseline Diff — Compares an inherited system's live configuration against a known-good baseline and flags every setting that differs — surfacing inherited defaults and drift that no one on the current team consciously chose.
- Dependency Tree Static Analysis — Resolves the full transitive dependency graph of an inherited codebase from its manifests — without running it — to expose the layers of borrowed code the project rests on but never wrote.
- End-of-Life and Maintainer Activity Check — Assesses whether an inherited substrate is still alive — within its support window and actively maintained upstream — so a component everyone assumes is cared-for isn't quietly abandoned.
- Inherited Permission Review — Examines the privileges, roles, and access an inherited substrate silently grants the new system — surfacing over-broad rights that came bundled with the platform rather than being deliberately granted.
- Legacy Substrate Architecture Review — A structured human review of an inherited system's architecture — its real boundaries, coupling, and failure spread — to understand a legacy substrate as a whole before trusting anything built on it.
- Provenance Chain-of-Custody Record — Reconstructs and records the origin-to-here custody chain of an inherited substrate, so every handoff — and every gap in the trail — is on the record before the substrate is trusted.
- Sandbox or Adapter Wrapper — Wraps an inherited substrate in an isolation-and-mediation boundary so its behavior and risk can only reach the rest of the system through a controlled channel.
- Software Bill of Materials with Lineage — A component inventory that annotates every part with where it came from and what it was inherited through, turning invisible substrate into audited line-items.
- Substrate Risk Release Gate — A pass/block control at the release point that refuses to ship substrate whose inherited risk is unaccounted-for or exceeds a blast-radius-scaled bar.
- Template or Policy Origin Audit — Traces an inherited template, policy, or config back to its origin and tests whether the assumptions its author baked in still hold in the context now using it.
- Transitive Vulnerability Scan — Checks a substrate's full transitive dependency set against known-vulnerability data, surfacing inherited flaws that live several hops below anything the local team wrote.
- Upstream Advisory Monitor — Subscribes to the upstream sources for every inherited substrate and alerts when a new advisory lands — while flagging any substrate nobody is watching at all.
- Use-Time Referent Validation: Verify that the thing an action depends on still exists and is valid at the moment of use, then bind, use, or fail safely.▸ Mechanisms (10)
- atomic_check_and_use_operation
- capability_or_authorization_revalidation
- compare_and_swap_or_version_guard
- just_in_time_existence_check
- lease_lock_or_reservation_token
- preflight_resource_probe
- revocation_or_tombstone_check
- safe_missing_referent_fallback
- stale_reference_monitor
- transactional_precondition_guard
- Windfall Discipline and Capacity Preservation: When easy value arrives without being earned by current performance, partition the windfall, preserve accountability and practice signals, reinvest in endogenous capacity, and test viability without the windfall.▸ Mechanisms (10)
- accountability_link_audit
- capability_reinvestment_covenant
- performance_linked_drawdown_protocol
- post_windfall_stress_test
- revenue_diversification_roadmap
- shadow_scarcity_budget
- sovereign_or_stabilization_fund_rule
- taper_and_replacement_trigger
- windfall_dependency_audit
- windfall_use_public_dashboard
Also a related prime in 21 archetypes
- Access-Conditioned Bundle Decoupling: Prevent access leverage from forcing unwanted bundled acceptance by testing necessity, unbundling separable conditions, and preserving meaningful refusal, alternatives, or remedies.
- Cascade Pathway Management: Manage chain reactions by tracing how a local change can trigger successive changes and placing observation, damping, breakpoints, buffers, or channeling capacity along the path.
- Commitment Lifecycle Governance: Turn an intention or assertion into a safe basis for reliance by defining what is bound, who owns it, why it is credible, how performance is verified, how change is communicated, and how the commitment ends.
- Conjunctive Path Assurance: Map the condition on every edge of a hazardous path, test the joint states that make the whole route conduct, and preserve an independent break before the target becomes reachable.
- Constraint-Guided Backtracking: Solve a constrained, path-dependent problem by extending a partial solution, testing it early, and undoing the latest failed commitment while preserving still-valid prior work.
- Deferred Fulfillment Placeholder: Create a first-class placeholder for a committed future value so dependent work can proceed, compose, wait, cancel, or fail explicitly before the value exists.
- Dependency Concentration Control: Prevent dependency fragility by measuring where reliance is concentrated and capping, diversifying, or isolating overweight dependency providers before their failure can dominate the system.
- Dependency-Capture Exit Design: Break role-capture incentives by independently verifying the underlying need, measuring durable resolution, transferring capability, and making exit possible without recreating dependency.
- Directed Asymmetry Mapping and Calibration: When two sides of a relation are not interchangeable, make the direction and dimensions of imbalance explicit before choosing symmetric treatment, side-specific treatment, compensation, or containment.
- Duration-Matched Commitment Design: Do not fund short-clock promises with only long-clock resources unless rollover loss, liquid coverage, and rebalancing paths are already designed.
Notes¶
Surfaced by ChatGPT Pro's R16 one-shot pass — a genuinely novel contribution to Claude's gap list. task_interdependence, bottleneck, interface, coordination, path_dependence, and many software-architecture nodes use "dependency" as their structural vocabulary, but no umbrella prime existed in the catalog. The decisive case for the prime's distinct work is the logical/semantic/institutional dependency where no productive causal mechanism is in play — those are dependencies but not causation. Load-bearing piece (anti-drift anchor for v2): "directed reliance with a specifiable failure mode" is the framing that must survive — losing it lets v2 narrow toward causality (productive mechanism) or constraint (option-space limit), both less general than dependency itself. R21 closed causality → dependency as subsumption (unanimous), confirming the root-altitude positioning.
The five-role structure (dependent / relied-on / condition / direction / failure mode) is the operational test for whether a candidate relation is actually a dependency. The failure-mode role is the one most often skipped in casual usage, and skipping it is the source of the loose "depends on" talk that the prime is designed to discipline. When no failure mode can be named, the relation is at most an association.
Dependency reasoning has scale limits. The transitive closure of a real-world dependency graph quickly exceeds human capacity for direct inspection; the compensating moves are summarization (identify the few bottlenecks), tooling (let the machine compute the closure), and modularization (treat sealed-off subgraphs as single nodes).
The prime is intentionally agnostic about whether dependencies are good or bad. A dependency can be load-bearing structural reliance (the lemma the proof needs) or harmful coupling (the legacy module that propagates failure). The structural diagnosis is the same; the normative evaluation depends on whether the dependency is faithful to the underlying domain or an artifact of poor decomposition.
References¶
[1] Parnas, D. L. "On the criteria to be used in decomposing systems into modules". Communications of the ACM, 15(12), 1053–1058, 1972. Founds modular decomposition on information hiding; treats which modules depend on which as the operational criterion governing how design changes propagate — supports markers 211, 219, 220. ↩
[2] Bronstein, J. L. "Our current understanding of mutualism". The Quarterly Review of Biology, 69(1), 31–51, 1994. Review of mutualism that characterizes obligate mutualism as a tightly coupled bidirectional dependency with cascading failure modes — the obligate-dependency-in-ecology tradition cited in marker 212 (replaces janzen-1980, which defines coevolution, not dependency). ↩
[3] Kelley, J. E., Jr., & Walker, M. R. "Critical-path planning and scheduling". In Proceedings of the Eastern Joint Computer Conference (IRE-AIEE-ACM), Boston, MA, Dec. 1–3, 1959, pp. 160–173. Original formulation of the Critical Path Method: models finish-to-start precedence among dependent activities as a directed graph whose longest path fixes project duration — supports markers 212 and 225. ↩
[4] Tarski, A. "On the concept of logical consequence". In Logic, Semantics, Metamathematics (J. H. Woodger, Trans., 1956, pp. 409–420). Oxford: Clarendon Press. Model-theoretic account of entailment: a conclusion depends on its premises by truth-preservation across all models, so any model falsifying a premise (lemma) falsifies every derivation using it — makes the failure mode precise for markers 212 and 224. ↩
[5] Strawson, P. F. "On referring". Mind, 59(235), 320–344, 1950. Argues referring expressions presuppose (but do not assert) the existence of their referent; presupposition failure yields a truth-value gap rather than falsity — the semantic-presupposition tradition cited in marker 212. ↩
[6] Janzen, D. H. "When is it coevolution?". Evolution, 34(3), 611–612, 1980. Restricts "coevolution" to reciprocal evolutionary change between paired populations. Retained only in the obligate-mutualism Example (alongside bronstein-1994); REMOVED from marker 212 because it characterizes coevolution, not the obligate-dependency relation. (Bibliography/inline-example only.) ↩
[7] Lee, H. L., Padmanabhan, V., & Whang, S. "Information distortion in a supply chain: The bullwhip effect". Management Science, 43(4), 546–558, 1997. Shows how upstream–downstream supply-chain dependency amplifies demand variability through four mechanisms (demand-signal processing, rationing game, order batching, price variation) — supports the material-dependency claim in marker 213. ↩
[8] Karttunen, L. "Presuppositions of compound sentences". Linguistic Inquiry, 4(2), 169–193, 1973. Foundational presupposition-projection paper: a compound sentence's presuppositions are computed from its parts by a context-update procedure, establishing the atemporal, non-causal character of semantic dependency — supports markers 213 and 223. ↩
[9] Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. Introduction to Algorithms (3rd ed.). MIT Press, 2009. Chapter 22 develops topological sort, depth-first search, and reachability over directed acyclic graphs as the algorithmic vocabulary for dependency-graph analysis (transitive closure, cycle detection, critical-path computation) — supports markers 214, 216, 222. ↩
[10] Dijkstra, E. W. "The structure of the THE-multiprogramming system". Communications of the ACM, 11(5), 341–346, 1968. Founds layered architecture: constraining each layer to depend only on the layer below makes hierarchical reasoning tractable, establishing the layered-dependency discipline cited in markers 215, 217, 221. ↩
[11] Holmes, O. W., Jr. The Common Law. Boston: Little, Brown, 1881. Lecture VII–VIII set out the bargain theory of consideration: an obligation is enforceable only if consideration was exchanged, i.e., consideration is a required precondition for enforceability rather than a constraint on the bargain's content — supports the constraint-vs-dependency contrast in marker 218. ↩
[12] Malcolm, D. G., Roseboom, J. H., Clark, C. E., & Fazar, W. "Application of a technique for research and development program evaluation". Operations Research, 7(5), 646–669, 1959. Original PERT paper from the U.S. Navy's Polaris program; developed independently of CPM and formalizes probabilistic dependency-graph scheduling — supports the PERT/CPM precedence claims in the Examples section (markers 224–225 region) and Broad Use. ↩
[13] Goldratt, E. M., & Cox, J. The Goal: A Process of Ongoing Improvement. Great Barrington, MA: North River Press, 1984. Introduces the Theory of Constraints: in a chain of dependent operations the bottleneck (single highest-fan-in node) governs throughput — supports the theory-of-constraints/bottleneck reference in Broad Use. ↩
[14] Gentzen, G. "Untersuchungen über das logische Schließen" [Investigations into Logical Deduction]. Mathematische Zeitschrift, 39, 176–210, 405–431, 1935. Founds natural deduction and the sequent calculus; represents proofs as trees whose nodes depend on parent nodes for derivability — cited inline alongside tarski-1936 on the proof/lemma dependency in the Examples section (marker 224). ↩
[15] Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. Compilers: Principles, Techniques, and Tools (2nd ed.). Pearson/Addison-Wesley, 2006. The "Dragon Book": develops graph-theoretic dependency analysis (data/control dependence, DAGs) used for instruction scheduling and optimization — the compiler-design tradition cited in marker 212 and the software-build examples. ↩
[16] Lattner, C., & Adve, V. "LLVM: A compilation framework for lifelong program analysis & transformation". Proceedings of the International Symposium on Code Generation and Optimization (CGO), 75–86, 2004. Develops dependency-graph data structures (SSA-based use-def chains) reused across compilation stages — cited inline in the software-build-systems example. ↩
[17] Baldwin, C. Y., & Clark, K. B. Design Rules: The Power of Modularity (Vol. 1). MIT Press, 2000. Theory of modular design built on design rules that decouple module-internal decisions from interdependencies across modules. (Bibliography-only.)
[18] Simon, H. A. "The architecture of complexity". Proceedings of the American Philosophical Society, 106(6), 467–482, 1962. Classic account of near-decomposability: complex systems are organized into nearly independent subsystems with sparse cross-dependencies. (Bibliography-only.)
[19] Ulrich, K. T. "The role of product architecture in the manufacturing firm". Research Policy, 24(3), 419–440, 1995. Defines product architecture via the mapping from function to components and the interfaces (dependencies) between them. (Bibliography-only.)
[20] Sánchez, R., & Mahoney, J. T. "Modularity, flexibility, and knowledge management in product and organization design". Strategic Management Journal, 17(S2), 63–76, 1996. Argues standardized interfaces embed coordination, so module dependencies need not be actively managed once interfaces are fixed. (Bibliography-only.)
[21] MacCormack, A., Baldwin, C., & Rusnak, J. "Exploring the duality between product and organizational architecture: A test of the 'mirroring' hypothesis". Research Policy, 41(8), 1309–1324, 2012. Empirically tests whether product dependency structure mirrors the organization's communication structure. (Bibliography-only.)
[22] Meyer, B. Agile!: The Good, the Hype and the Ugly. Springer, 2014. Critical assessment of agile methods, including their handling of architectural dependencies and coupling. (Bibliography-only.)
[23] Gamma, E., Helm, R., Johnson, R., & Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994. Catalog of 23 patterns; several (e.g., Dependency Inversion via abstractions, Observer) manage object dependencies. (Bibliography-only.)
[24] McIlroy, M. D. "Mass produced software components". In Software Engineering: Report of a Conference Sponsored by the NATO Science Committee, Garmisch, Germany, Oct. 1968, pp. 138–155. Proposes reusable component families whose users depend on stable interface specifications. (Bibliography-only.)
[25] Sommerville, I. Software Engineering (9th ed.). Addison-Wesley/Pearson, 2010. General software-engineering text covering dependency management, coupling/cohesion, and architectural layering. (Bibliography-only.)