Skip to content

v0.9.0

Choose a tag to compare

@schalermthai schalermthai released this 07 Sep 18:06
· 74 commits to main since this release
7831a76

Proof outcomes are states, not flags

A proof outcome now has one of three statuses. completed means the Check returned and the proof was judged. aborted means infrastructure failed before the Check returned, so there is no result. unrestored means the Check returned but the workspace did not return to its baseline, so there is a result and only a restoration error code.

The ok field is gone. proofEstablished(outcome) replaces it and is exported. A completed outcome is a union keyed by expected, and each proof kind has its own evaluation type. A proved RED always names its target. A GREEN proof cannot carry a RED-only reason. A verdict mismatch cannot report the verdict it expected.

Terminal and JSON prove output is unchanged.

Report Rules keep their breaches inside the breached state

RuleReportState puts the breaches inside the breached case as a NonEmptyList<Breach>. A held, unknown, or undecided Rule carries no list. The stored counts are gone; countBreachedRules(model) and countBreaches(model) replace them. RunSummary.breaches is a BreachTotal: exact with a count, or not-countable.

The JSON check report is unchanged.

Breaking API changes

  • InfrastructureProofOutcome is now AbortedProofOutcome | UnrestoredProofOutcome. status: 'error' is 'aborted' or 'unrestored'.
  • ok is removed from every outcome. Use proofEstablished(outcome).
  • ProofEvaluation is the union of RedProofEvaluation, GreenProofEvaluation, and RefuseProofEvaluation. proved.target is required on a RED.
  • RuleReport.breaches is removed. Read state.breaches when state.kind === 'breached'.
  • GateReportModel.breachedRules and breachCount are removed. Use countBreachedRules and countBreaches.
  • RunSummary.exactBreachCount is removed. Read breaches.kind.
  • baselineBlocksProof and baselineOutcome take a RedProof.

Skill

The redproof skill links the README and the docs by GitHub URL, so the links work after the skill is installed elsewhere.