Vithanco

VGL Guide — Evaporating Cloud (EC)

Estimated reading time: 2 minutes.

Evaporating Cloud (EC)

A conflict-resolution tool using necessary-condition logic — "in order to [Common Objective], we must [Need]" — flowing left-to-right from Common Objective to Conflict. Multiple necessary inputs are implicitly AND; OR is explicit.

Node types

  • CommonObjective — the shared objective valid for both sides
  • Need — a perceived need that must be met
  • Want — a perceived want derived from a need
  • Conflict — the conflict as mutually exclusive wants (lightning-bolt icon, no text)
  • OrJunctor — alternative necessary inputs, any one of which suffices (icon: OR circle)
  • Assumption — an underlying assumption behind the conflict
  • Solution — the solution that breaks the conflict

Edge types — necessary-condition relationships flowing left-to-right from the shared objective through needs and wants to the conflict.

  • From the objective: objective_to_need, objective_to_or
  • From a need: need_to_want, need_to_or, need_to_assumption, need_to_solution
  • From a want: want_to_conflict, want_to_or, want_to_assumption
  • From the conflict: conflict_to_or, conflict_to_assumption
  • From an OrJunctor: or_to_want, or_to_conflict, or_to_or

A conflict resolution graph showing how assumptions behind a conflict can be surfaced and resolved:

vgraph projectConflict: EC "Project Delivery vs Quality" {
    // The shared objective both sides agree on
    node obj: CommonObjective "Deliver a successful software product";

    // The two competing needs
    node needA: Need "Meet the market window deadline";
    node needB: Need "Ensure product quality and reliability";

    // The specific wants derived from each need
    node wantA: Want "Release with current feature set now";
    node wantB: Want "Extend timeline for thorough testing";

    // The conflict between the two wants
    node conf: Conflict;

    // Assumptions underlying the conflict
    node assA: Assumption "Testing always requires calendar time";
    node assB: Assumption "Features cannot be descoped";
    node assC: Assumption "Quality requires full manual testing";

    // Solution that breaks the conflict
    node sol: Solution "Implement automated testing pipeline";

    // Objective requires both needs (necessary condition)
    edge obj -> needA: objective_to_need;
    edge obj -> needB: objective_to_need;

    // Needs lead to wants
    edge needA -> wantA: need_to_want;
    edge needB -> wantB: need_to_want;

    // Wants create the conflict
    edge wantA -> conf: want_to_conflict;
    edge wantB -> conf: want_to_conflict;

    // Assumptions exposed
    edge needA -> assA: need_to_assumption;
    edge needB -> assC: need_to_assumption;
    edge conf -> assB: conflict_to_assumption;

    // Solution resolves by breaking assumption
    edge needB -> sol: need_to_solution;
}