// Run reporting: the phase log a human reads, and the machine-readable completion metric. #pragma once #include #include #include "app/turn.h" namespace sots::app { // The phase table with this run's numbers, in execution order. Every phase appears -- // including the ones that did nothing -- because the point of the listing is the gap. void PrintPhaseLog(std::FILE* out, const TurnResult& r, bool verbose); // A one-screen summary: how many phases of each driver we hold, and how much this run moved. void PrintSummary(std::FILE* out, const TurnResult& r); // The recorded command stream, command by command, in the order the original applies them, // with each one's disposition and -- for the ones we decline -- the named subsystem it needs. // That list of reasons IS the remaining work, so it is printed in full rather than summarised. void PrintCommandReplay(std::FILE* out, const TurnResult& r); // The completion metric, as JSON, for the campaign dashboard. Written to `path`; the // divergence numbers are filled in by the comparison tool that runs the checksum diff, so // this file carries only what the standalone itself knows. bool WriteMetricJson(const std::string& path, const TurnResult& r, const std::string& inputName, const std::string& outputName); } // namespace sots::app