Scans the spec and the code, reads the relation log, and reports the state of every
relation (Surfex.Status).
mix surfex.status # text; fails if anything needs attention
mix surfex.status --format json # the work list for tools and agents
mix surfex.status --verify # also verify the log (edits, removals, truncation)
mix surfex.status --no-planned # also fail on planned relations: everything built
mix surfex.status --evidence # also check confirmations by evidence against the last run
mix surfex.status --merge A --merge B # check them against several CI jobs' evidence together
mix surfex.status --validated # also fail on relations nothing has validated (§18)It fails on any dangling, orphaned or conflicted relation, on any id the require:
policy in .surfex.exs says must be related and isn't, and, with --verify, on any
problem with the log. With --no-planned it fails on any planned relation as well, for
a check that everything planned has been built (a release, say). With --evidence it
fails when a relation confirmed by evidence isn't borne out by the evidence the last
mix test recorded: its test didn't run, failed, or ran against other code. With
--merge PATH (once per file, implying --evidence) it checks the claims against several
CI jobs' evidence files together: a disproof in any fails, and so does a claim no job
ran. It only
reads: nothing is recorded, so CI can run it after mix test. A project scanner is
project code, so the task compiles first when .surfex.exs names one.