We currently store each test/lint as Message, and then calculate the sum of this when loading a revision; This change moves the calculations into the Engine, running it in a daemon when there's a change, instead of in the web tier when a user is waiting.
This isn't making it all the way to "don't load all unit results when displaying revision," but does go a long way towards making that easy (And marks most places that will need to change for that).
In terms of user-facing-changes, this change shows the correct stars for lint/unit in the Revision History tab, and shows more correct/less confusing information in the Diff Details Section. It also shows 2 items under "Unit" and "Lint" in the Details pane - one only shown if the user skipped, and the other shows HM status. Also showing unit excuse + count.
Next steps / revisions:
- Add "Summary" or "Meta" Harbormaster Lint/Unit messages - important for Lints to show "Lint OK", and useful for saying "100K unit tests passed" without actually storing the details. Maybe also get the Excuse in there.
- Migration: This basically boils down to running ./bin/harbormaster update --force lots of times, which is slow, but safe to run while the system is up. Also possibly not very interesting for old diffs, so some installs might want to skip it.
Alternatively, restarting a remote build from the revision page will also update the Build to be displayed correctly.