Added in 0.3. The matching producer capability is
signals.Signals
One timestamped observation about the run’s result: a verdict, a score or a late event. Value types follow the kind (E195).enum
required
One of:
verdict, score, event.string
required
Recommended: verdicts tests, referee, pair_referee, merge, ci; scores bench_score, runtime_s, quality; events issue, incident, revert, hotfix.At most 200 characters.
string | number | null
required
verdict: one of accept, reject, pass, fail, error. score: a number, or null for a declared score not measured yet. event: a reference string. Only a score may be null (E195).At most 500 characters.
string
Unit of a score.At most 100 characters.
enum
Which direction of a score is better.One of:
higher, lower.number
Optional threshold that turns a score into pass or fail.
enum
How the model treats a score. linear (default); log for positive ratio-like quantities (runtime, memory, latency); fraction for values in [0, 1] (pass rates; E195).One of:
linear, log, fraction.string
The attempt after which the verdict applies; it locates the attempt at which the run was accepted.At most 200 characters.
object
required
kind fixes what its value may be (E195):
- Only a score MAY be
null. A score withscale: "fraction"MUST lie in [0, 1]. So MUSTacceptance_rule.score.targetwhen that rule’s scale isfraction(E195). scaletells a model how to treat a score:linear(the default),logfor positive ratio-like quantities such as runtime, memory or latency, andfractionfor rates.at_attemptnames the attempt after which a verdict applies, so a reader can tell how many attempts it took to reach acceptance.tiersays how the signal is known, fromverified(a check ran) toasserted(nothing backs it). See evidence tiers.- A late event, such as a revert, is appended to the run’s
signalswith its ownobserved_at. An event about a commit is matched to its run through the run’scommitormergeartifact.
Acceptance rule
run.acceptance_rule is the rule in effect when the run was recorded. It travels with the run, so a document can be read the same way after the user’s rule changes.
The user’s acceptance rule in effect when the run was recorded. The outcome function reads success through it. A rule with only score expresses runtime targets, benchmark scores and quality bars; a binary rule is the special case with score null.
string
required
For example
tests+referee or perf>=2400.At most 200 characters.string[]
Verdict names that must pass.
ScoreTarget | null
A score target. With
requires empty, success is score reaches target; with both, success needs both.string[]
Events that turn success into failure inside the window. [“revert”, “incident”] when absent.
integer
14 when absent.
string
required
A score signal name (E195: never a verdict or event name).At most 200 characters.
number
required
enum
required
One of:
higher, lower.enum
One of:
linear, log, fraction.- Verdicts. Every name in
requireshas a passing verdict (acceptorpass). - Score. When
scoreis set, the named score reaches itstarget: at least the target whenbetterishigher, at most whenlower. Withrequiresempty the score alone decides; with both, success needs both. A rule whosescoreis null is a plain pass-or-fail rule. - Late events. No event named in
excludes_eventswas observed withinwindow_daysof the run’s end. Such an event turns a success into a failure.excludes_eventsis["revert", "incident"]when absent, andwindow_daysis 14.
acceptance_rule.score.name MUST NOT name a verdict or event signal, and requires MUST NOT name a score or event signal (E195).
How loopmath reads it. For each name, the latest verdict by
observed_at counts. An error verdict is neither a pass nor a fail, so that part of the rule is unknown, as is a missing verdict or a score still null. The result is only as trustworthy as the weakest tier among the signals it used.