Expand description
Every move the pipeline makes on one ledger row, decided apart from the phases that apply it:
what an answer from the study registry does to its row, and the moves a phase makes without
asking. No outcome here may return a state that leads back to import: a row whose import may
have landed must never be sent again. The one exception is verify’s notRegistered, which is
the registry itself saying the submission did not land.
Structs§
- Outcome
- What the phase writes for this row.
- RowFacts
- The row’s scheduling history, which is all these decisions need from it.
- Unasked
Move - A move a phase makes on a claimed row without an answer to decide from: the outcome, and the timeline line that explains it.
Enums§
- Failure 🔒
- Whether a failure could go away on its own.
- Next
Attempt - When the pipeline may claim the row again.
Constants§
- NO_
VERIFIED_ STUDENT_ NUMBER_ MESSAGE - The timeline line for a row waiting on a student number, whichever phase found it missing.
Functions§
- duplicate_
of_ other_ registrar - Import found the completion already registered by another registrar.
- import_
success_ outcome - What an
importanswer that settled the row does to it, including the wait Sisu needs before the first verify poll can find anything. - incomplete_
payload - The frozen payload lacks a field, so the enrolment is resolved again.
- invalid_
payload_ field fieldof the frozen payload is one Sisu would refuse, and the whole batch with it.- isolated_
malformed_ request_ outcome - A row Suotar refused as a malformed request even in a batch of its own: resending the same request is refused the same way, so it needs a human.
- missing_
context - A row
resolve-enrolmentsclaimed but has no completion or module to ask about. Retryable like any other failure, and it accrues retry age, so a row whose context never comes back expires instead of being repolled forever. - module_
not_ configured - The module lacks what the enrolment lookup needs;
codesays what. - no_
verified_ student_ number - No verified student number to resolve the enrolment with.
- released_
unsent_ split_ half - An import row a split still held unsent when a shutdown or an error stopped the split.
- request_
level_ code - The ledger error code for a request the study registry rejected, or never answered, as a whole.
- request_
level_ outcome - The outcome for every row of a batch Suotar rejected as a whole. On
importall that matters is whether the request could have been acted on: a connection that never opened proves it was not. A waiting row’s lookup keeps waiting only through an outage; a refusal of the request itself would come back every retry, so it ages out like any other failure. - resolving_
enrolment - Holds a first resolve out of
import’s claim while its lookup is out. - retry_
or_ 🔒expire - Retryable until the row has been failing for a week, and then a support case rather than an
endless one. A transient failure of a waiting row’s lookup is not counted as one at all; see
waiting_lookup_failed. - submission_
uncertain - The one state whose only way out is
verify; every path that cannot prove nothing was created ends here. - submit_
error_ outcome - A per-item error on the calls leading towards a submission. Only
importcreates attainments, so anything uncertain there is verify-only, while the same code onresolve-enrolmentsretries. - submitting
- Committed before the import request leaves: a row found in
submittingafter a restart has an unknown outcome and is never sent again. - unanswered_
item_ outcome - An item we sent and Suotar did not answer. On
importthat leaves us where a timeout does; elsewhere the call simply did not happen for that row. - uncertain_
recheck_ outcome - A fruitless look through
existingAttainmentsfor an attainment we may have created. Once the attainment has had a day to show up a human checks Sisu by hand; the row still never resubmits. - unknown_
grade - The frozen grade is not one Sisu accepts.
- verify_
error_ outcome - A per-item error while polling
verify. Never a failure: the attainment may exist, and a row marked failed invites a second submission later.notRegisteredis not an error here; seeverify_not_registered_outcome. - verify_
inconclusive_ outcome - A
verifypoll with no usable answer: nothing came back, or nothing we act on. - verify_
not_ registered_ outcome - A
verifypoll answerednotRegistered: Suotar has no trace of the submission, so the row is new work again and goes back through resolve-enrolments and import.reimport_countcounts this resend too. - verify_
partial_ outcome - A
verifypoll that found only the assessment item attainment. The submission landed, so an uncertain row stops being uncertain, but the row is not registered until the course unit attainment appears.partially_registered_atis when a poll first saw this. - verify_
poll_ lease_ until - How long a verify poll pushes the row out of reach while its request is out, so a concurrent
iteration cannot poll it twice. The poll’s own outcome overwrites this.
callsis the longest the iteration’s registry calls may take together: the poll and the recovery lookup after it. - waiting_
lookup_ 🔒failed - A lookup for a row waiting for an enrolment that failed in transit: the row keeps waiting and
retries the same check shortly, with none of a failure’s retry window or count, which over a
schedule of months would expire it.
Nonefor any other row or operation.