You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
spec(queen): waits.t27 -- a key resolves its row once, and a WAIT step parks only on a run that runs #8280
Two decisions the waits runtime (gHashTag/trios, branch actors-next, part of trios#1712 item 4) makes are not yet in specs/queen/waits.t27 (merged in #8272). Rule 1 says a decision reaches the runtime only through the card, so they go into the card first.
The two rules
resolution_lands(state, already_resolved): a key resolves its row once. A resolution lands only on a WAITING row nothing has resolved yet; a webhook and a check that both see a run finish leave the first answer, and a resolution after the row ended changes nothing.
step_parks(run_found, run_completed): a job's WAIT step parks on a row only when a run exists and has not completed. No run yet: the round asks again. A completed run: the step answers at once and makes no row.
Also documented: a check that could not read, and a key no resolver knows, are "not completed" (the row ends at its expiry); a cancelled job cancels its rows (EV_CANCEL).
Boundary
specs/queen/waits.t27, its seal, one docs/now/ note.
Acceptance
t27c test-report specs/queen/waits.t27: no FAIL, no vacuous pass.
Each new rule broken makes test-report fail.
The wasm card rebuilds reproducibly with every fn exported.
User Scenarios
Given a key that has not yet resolved its row, when a webhook and a check both observe the run finish, then the first resolution lands and the second changes nothing.
Given a job's WAIT step encounters a key with no run yet, when the round repeats, then the step parks and asks again; when a run exists but has not completed, the step parks on that row; when a run exists and has completed, the step answers immediately and creates no row.
Requirements
FR-001: The spec MUST define resolution_lands(state, already_resolved) so that a resolution lands only on a WAITING row with already_resolved == false, and a resolution after the row ended changes nothing.
FR-002: The spec MUST define step_parks(run_found, run_completed) so that the step parks only when run_found == true and run_completed == false; otherwise it re-asks (no run) or answers at once (completed run) without creating a row.
FR-003: The spec MUST treat a check that could not read and a key no resolver knows as "not completed" (row ends at expiry) and a cancelled job as cancelling its rows via EV_CANCEL.
FR-004: The wasm card rebuilt from the updated spec MUST export every fn reproducibly.
Success Criteria
t27c test-report specs/queen/waits.t27 exits with exit 0 and zero FAIL lines.
Mutating resolution_lands to allow a second resolution on the same row causes t27c test-report specs/queen/waits.t27 to fail.
Mutating step_parks to park when run_completed == true causes t27c test-report specs/queen/waits.t27 to fail.
The seal for specs/queen/waits.t27 updates and wasm-card rebuilds with all fns exported.
Activity
spec(queen): waits.t27 -- a key resolves its row once, and a WAIT ste…