docs: private Result getSummaryStatus(){
          StatsStorage ss = knownSessionIDs.get(currentSessionID);
          if(ss == null){
              log.debug("getOptimizationConfig(): Session ID is unknown: {}", currentSessionID);
              return ok();
          }
  
          Persistable p = ss.getStaticInfo(currentSessionID, ARBITER_UI_TYPE_ID, GlobalConfigPersistable.GLOBAL_WORKER_ID);
  
          if(p == null){
              log.info("No static info");
              return ok();
          }
  
          GlobalConfigPersistable gcp = (GlobalConfigPersistable)p;
          OptimizationConfiguration oc = gcp.getOptimizationConfiguration();
          long execStartTime = oc.getExecutionStartTime();
  
  
  
          //Charts:
          //Best model score vs. time
          //All candidate scores (scatter plot vs. time)
  
          //How to get this? query all model infos...
  
          List<Persistable> allModelInfoTemp = new ArrayList<>(ss.getLatestUpdateAllWorkers(currentSessionID, ARBITER_UI_TYPE_ID));
          List<ModelInfoPersistable> allModelInfo = new ArrayList<>();
          for(Persistable per : allModelInfoTemp){
              ModelInfoPersistable mip = (ModelInfoPersistable)per;
              if(mip.getStatus() == CandidateStatus.Complete && mip.getScore() != null && Double.isFinite(mip.getScore())){
                  allModelInfo.add(mip);
              }
          }
  
          allModelInfo.sort(Comparator.comparingLong(Persistable::getTimeStamp));
  
          Pair<List<Component>, ModelInfoPersistable> chartsAndBest = getSummaryChartsAndBest(allModelInfo, oc.getScoreFunction().minimize(), execStartTime );
  
          //First: table - number completed, queued, running, failed, total
          //Best model index, score, and time
          //Total runtime
          //Termination conditions
          List<Component> components = new ArrayList<>();
  
  
  
          List<TerminationCondition> tcs = oc.getTerminationConditions();
  
          //TODO: I18N
  
          //TODO don't use currentTimeMillis due to stored data??
          long bestTime;
          Double bestScore = null;
          String bestModelString = null;
          if(chartsAndBest.getSecond() != null){
              bestTime = chartsAndBest.getSecond().getTimeStamp();
              bestScore = chartsAndBest.getSecond().getScore();
              String sinceBest = UIUtils.formatDuration(System.currentTimeMillis() - bestTime);
  
              bestModelString = "Model " + chartsAndBest.getSecond().getModelIdx() + ", Found at " +
              TIME_FORMATTER.print(bestTime) + " (" + sinceBest + " ago)";
          }
  
          String execStartTimeStr = "";
          String execTotalRuntimeStr = "";
          if(execStartTime > 0){
              execStartTimeStr = TIME_FORMATTER.print(execStartTime);
              execTotalRuntimeStr = UIUtils.formatDuration(System.currentTimeMillis() - execStartTime);
          }
  
  
          String[][] table = new String[][]{
                  {"Models Completed", String.valueOf(gcp.getCandidatesCompleted())},
                  {"Models Queued/Running", String.valueOf(gcp.getCandidatesQueued())},
                  {"Models Failed", String.valueOf(gcp.getCandidatesFailed())},
                  {"Models Total", String.valueOf(gcp.getCandidatesTotal())},
                  {"Best Score", (bestScore != null ? String.valueOf(bestScore) : "")},
                  {"Best Scoring Model", bestModelString != null ? bestModelString : ""},
                  {"Optimization Runner", gcp.getOptimizationRunner()},
                  {"Execution Start Time", execStartTimeStr},
                  {"Total Runtime", execTotalRuntimeStr}
          };
  
  
  
          ComponentTable ct = new ComponentTable.Builder(STYLE_TABLE)
                  .content(table)
                  .header("Status", "")
                  .build();
  
          components.add(ct);
  
          String[][] tcTable = new String[tcs.size()][2];
          for( int i=0; i<tcs.size(); i++ ){
              tcTable[i][0] = "Termination Condition " + i;
              tcTable[i][1] = tcs.get(i).toString();
          }
  
          components.add(DIV_SPACER_20PX);
  
          ComponentTable ct2 = new ComponentTable.Builder(STYLE_TABLE)
                  .content(tcTable)
                  .header("Termination Condition", "")
                  .build();
  
          components.add(ct2);
  
          components.addAll(chartsAndBest.getFirst());
  
  
          ComponentDiv cd = new ComponentDiv(STYLE_DIV_WIDTH_100_PC, components);
  
          return ok(asJson(cd)).as(JSON);
      }