What one configuration check concluded. None on either boolean means the check could not
reach an answer, which the dashboard renders as “unknown” rather than as a failure.
Everything the per-module configuration check reads, gathered in one query so validating every
enabled module costs one pass rather than a fan-out per module.
Who paused a module’s credit registration, and why. One value rather than three arguments
because course_module_suotar_configurations_pause_pair rejects a timestamp without an actor.
Whether the module already has a live configuration row. Lets a caller tell “nothing to store”
apart from “the teacher cleared what was stored”, which look the same in an edit payload.
Every Suotar-enabled module’s configuration facts, optionally narrowed to one course. Paused
modules are included: a paused module’s configuration is exactly what an operator is about to
fix.
The products whose access tokens are worth refreshing: those configured on an enabled, unpaused
module, least recently attempted first. One product can back several modules, so each appears
once.
Stamps the check result on the module, creating the configuration row for a module that has
none: an enabled module with no configuration is itself one of the problems being reported.
Pauses or resumes the module. Every phase’s claim query skips a paused module, so pausing freezes
its ledger rows where they stand instead of cancelling them. None resumes.
Writes the module’s Suotar configuration, creating the row if the module has none. The pause and
config-check columns are left alone; their writers are separate.