anchor.diff:                              project-names
                               (alexandria:curry #'project-systems (project-lister agent)))))
   
  -(defun complete-test-run2 (description run-dir quicklisp-dir lisp-exe &key project-names helper-lisp-exe)
  +(defun complete-test-run2 (description run-dir quicklisp-dir quicklisp-dist-name lisp-exe
  +                           &key project-names helper-lisp-exe)
     (unless (getf description :lib-world) (error "please specify :lib-world in the description"))
     (unless (getf description :contact-email) (error "lease specify :contact-email in the description"))
     (let* ((lisp-exe:*temp-dir* (or lisp-exe:*temp-dir* (ensure-directories-exist run-dir)))
  
positive.code:                                                      (test-grid-data::run-descr saved-test-run))
                               (test-grid-data::run-results saved-test-run)))
           (helper-lisp (or helper-lisp-exe lisp-exe))
           (project-lister (init-project-lister helper-lisp quicklisp-dir))
           (project-names (or project-names (project-names project-lister)))
           (project-systems-fn (alexandria:curry #'project-systems project-lister)))
      (save-run-info test-run run-dir)
  
negative.code: 
  The third parameter is the directory where Quicklisp to be tested is located.
  
  The fourth parameter is the name of the active Quicklisp dist - we will be
  collecting project names and system names from that dist, and expect
  ql:quickload will use that dist (i.e. you have already switched to that
  dist if necessary).
  
  The fifth parameter is the lisp-exe instance to be tested.
  
  The function also has keyword parameter :project-names allowing
  to specify explicitly list of projects, instead of testing all the
  