anchor.diff:  
   == Classpath caching
   
  -*The naming strategy here is temporary and will change.*
  -
   Classpath files are cached in the current directory under `.cpcache/`. File are of two forms:
   
  -* `.cpcache/<resolve-aliases>.libs` - a `::lib-map` in the https://github.com/clojure/tools.deps.alpha/blob/master/src/main/clojure/clojure/tools/deps/alpha/specs.clj[specs], the output of running `resolve-deps`
  -* `.cpcache/<resolve-aliases>/<classpath-aliases>.cp` - a classpath string, the output of `make-classpath`
  -
  -where the `<resolve-aliases>` are either the `-R` aliases or `default`. The `<classpath-aliases>` are either the `-C` aliases or `default`.
  +* `.cpcache/<hash>.libs` - a `::lib-map` in the https://github.com/clojure/tools.deps.alpha/blob/master/src/main/clojure/clojure/tools/deps/alpha/specs.clj[specs], the output of running `resolve-deps`
  +* `.cpcache/<hash>.cp` - a classpath string, the output of `make-classpath`
  +
  +where the `<hash>` is based on the config file paths, the resolve-aliases, and the classpath aliases.
   
   The cached classpath file is used when:
   
   * It exists
   * It is newer than `deps.edn`
  -* It is newer than the libs file
  -* `-P` is NOT in use
  -
  -The cached libs file is used when:
  -
  -* It exists
  -* It is newer than `deps.edn`
  -* `-P` is NOT in use
  +* It is newer than all of the existing config files
   
   == Links
   
  
positive.code: 
  * Compute the deps map
  ** Read the deps.edn file in the following locations:
  *** Install directory
  *** Config directory (if it exists)
  *** Current directory (if it exists)
  ** Combine these deps.edn maps in that order with `merge-with merge`
  * Compute the resolve-deps args
  ** If `-R` specifies one or more aliases, find each alias in the deps map `:aliases`
  ** `merge-with` `merge` the alias maps - the result is the resolve-args map
  * Invoke `resolve-deps` with deps map and resolve-args map
  * Write the libs map to the classpath cache
  * Compute the classpath-overrides map
  ** If `-C` specifies one or more aliases, find each alias in the deps map `:aliases`
  ** If `-P` specifies a map of lib to path, add this as a trailing overrides map
  ** `merge` the classpath-override alias maps
  * Invoke `make-classpath` with the libs map returned by `resolve-deps` and the classpath-overrides map
  * Write the classpath to the classpath cache
  
  == deps.edn
  
negative.code: [source,clojure]
  ----
  ;; deps.edn
  {:deps {org.clojure/clojure {:mvn/version "1.8.0"}}
   :aliases {:1.9 {:override-deps {org.clojure/clojure {:mvn/version "1.9.0-alpha20"}}}
             :bench {:extra-deps {criterium {:mvn/version "0.4.4"}}}}}
  ----
  
  === Override a classpath source
  