In an Open Run judge response, accepted: true means exactly one thing: that judge's structured ballot passed validation and was stored. It does not accept a candidate, identify a winner, close the bench, or authorize Dad's verdict.
The engine can emit bench_complete only after every currently mobilized judge has ruled. Even then it waits. Because the Open Run bench is unbound and Dad may add another judge, only Dad's explicit POST /decide closes and totals the board.
That action creates decided. It still does not publish, deploy, merge, or alter a canonical repository. Dad then reviews the board and takes the verdict action, which records acceptance or dissent and finalizes the Anvil record.
Precise verbs preserve authority: ballot accepted, bench complete, board decided, run finalized, external work landed, and product deployed are different facts with different proof.
accepted: true acknowledges a ballot, not an artifact. Never promote a transport receipt into a verdict.
Code
Four boundaries — mixing the verbs leaks authority·python
STEPS = [
("ballot_stored", "one ballot is stored"),
("bench_complete", "every live judge has ruled"),
("decided", "Dad closed and tallied the board"),
("finalized", "the verdict finalized and revealed the record"),
("landed", "it actually landed in the outside repository"),
]
def what_is_true(reached):
i = [k for k, _ in STEPS].index(reached)
return {
"true": [d for _, d in STEPS[:i + 1]],
"not_yet": [d for _, d in STEPS[i + 1:]],
}
now = what_is_true("ballot_stored")
assert len(now["true"]) == 1 and len(now["not_yet"]) == 4
print("true at accepted:true →", now["true"])
print("not yet →", now["not_yet"])
# Even finalized is not shipped — the last step is always outside Anvil.
assert "it actually landed in the outside repository" in \
what_is_true("finalized")["not_yet"]