Confirms one relation, named by its ends and type, with a note saying what was
judged (Surfex.Record.confirm/7):
mix surfex.confirm "test:MyApp.CartTest: rejects a closed cart" spec.md#closed \
--type verifies --note "spec reworded; the test still checks a closed cart is refused"It is the judgement path (§18): a verifies relation after a spec rewording that
changes no behaviour, an excuses relation, a structural relation after a change, and
an implements relation to a shape (a type, which no run exercises). It never confirms
any other implements relation: code is validated by evidence or a review, never
asserted. There is no form that confirms every relation touching an id.
With --file PATH it confirms many in one run (Surfex.Record.batch/3): one relation
per line, tab-separated FROM, TO, TYPE, NOTE, each judged as the single form
judges it. The notes must be distinct, and a refused line fails the whole batch.
--merge PATH (once per file) also reads other runs' evidence, such as CI artifacts,
with the local run as one history (Surfex.Evidence.combined/1), so a test excluded
locally counts from the run that had its environment. A missing file fails.
With --evidence it confirms instead what the test evidence justifies
(Surfex.Record.confirm_by_evidence/4): each test relation on its test's failing run,
each tests and implements relation on a red run and then a green one:
mix test && mix surfex.confirm --evidenceWith require_red: true in .surfex.exs, a tests relation isn't confirmed by hand
until its test's current version has failed first.