Expand description
The task cluster on Workspace: the durable task store accessor
and its mutation helpers, a second impl block beside crons.rs so
every caller keeps its path.
The core polices the moves here, so no caller can talk a row into an impossible state: the verify gate lives in the transition into completed, closing is completing a root, a claim is one atomic write, a cancel of a row waiting on the user carries the reason it records, and every status change lands in the history.
Re-exportsΒ§
use std::time::SystemTime;πuse forge_primitives::tasks::Verify;πuse forge_primitives::tasks::Attestation;πuse forge_primitives::tasks::By;πuse forge_primitives::tasks::ReservedBy;πuse forge_primitives::tasks::Task;πuse forge_primitives::tasks::TaskId;πuse forge_primitives::tasks::TaskStatus;πuse forge_primitives::tasks::TaskTransition;πuse forge_primitives::tasks::Waiting;πuse forge_primitives::tasks::WaitingKind;πuse crate::SessionSlot;πuse crate::protocol::RankMove;πuse crate::protocol::SessionUpdate;πuse crate::workspace::Workspace;π
StructsΒ§
- IdCandidate π
- One row an ambiguous id could have named.
EnumsΒ§
- Claim
Error π - Why a claim was refused.
- IdError π
- Why a stated id did not land on exactly one row.
- Move
Error π - Why a move was refused.
FunctionsΒ§
- ambiguous_
words π - The rows an ambiguous id matched, as one line: each rowβs id and what it is, so a caller picks one without going back to the board.
- append_
words π - Append the userβs words to a rowβs detail, keeping what was there. A
blank append writes nothing - an empty detail is no detail, and a
Some("")left by a wordless send-back would read as an empty ask. - bound_
verify π - The verify a row is bound by: the gate it was MINTED with, or none.
An epicβs
verify: usergoverns the epicβs own completion, never its childrenβs (#2423) - a child that owes no look is not parked on one because its epic carries the gate. - effective_
verify π - The verify the row at
indexis bound by. - find_
task_ πindex - Resolve a caller-stated id against a projectβs live rows: an exact id, or a unique prefix of one, since a caller is often handed the short form a person writes.
- is_
terminal π - Whether a status is an end: nothing more happens on the row.
- parked_
on_ πlook - Whether a row is parked on the userβs own look - the verification wait the gate lands a user-bound completion on. The completion guard reads it: only the userβs approve completes such a row. A row merely BOUND by the gate, never parked on it, is work the caller may abandon.
- parked_
on_ πuser - Whether a row presents as waiting on the user: a decision wait or a verification park. The removal guards and the withdraw door read this set - an ask on the user leaves by the userβs own answer or approve, or by a reasoned withdraw. The fleet count and the chaseβs user nudge derive the same set from the stored fields.
- wait_
words π - The words a refusal names a wait by: its kind, and the row it waits on when the wait names one.