VGL Guide — Evaporating Cloud (EC)
Estimated reading time: 2 minutes.
Evaporating Cloud (EC)
A conflict-resolution tool using necessary-condition logic, 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 (default: green)Need— a perceived need that must be met (default: blue)Want— a perceived want derived from a need (default: orange)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 (default: purple)Solution— the solution that breaks the conflict (default: teal)
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;
}
Note: EC graphs flow left-to-right, with the Common Objective on the far left and the Conflict on the far right. The two branches represent competing Needs and Wants that create the conflict. Assumptions are surfaced on each edge to identify which assumption can be challenged. The Solution breaks the conflict by invalidating one or more assumptions. EC uses necessary condition logic — "In order to [Objective] we must provide [Need]". The Conflict node has no text label; it is rendered as a lightning bolt icon.
Home