Recovery guarantees

What QFlowLearn does when the connection fails.

Work is written to IndexedDB before send

Ready

Response events and submit requests enter an IndexedDB-backed recovery store before QFlowLearn depends on a network request.

Submit intent is queued with the final response

Ready

Finish Assessment writes the final response and submit request as one ordered local batch before sending either event.

Queued work survives reload and tab reopen

Ready

Attempt events and item snapshots are restored from the recovery store when the page reloads or a tab is reopened.

Reconnect replays queued events

Ready

When the connection returns, QFlowLearn replays queued events in sequence and prunes only after durable receipt coverage.

Duplicate and stale tabs reconcile safely

Ready

Per-attempt authority and idempotency prevent old tabs or repeated submit attempts from overwriting the authoritative attempt state.

Proof scenarios

The recovery story is covered by browser tests.

These are the scenarios an institution cares about: work saved while offline, submit failure, the final-response gap, reload recovery, tab reopen recovery, transient worker errors, and stale duplicate tabs. Each one maps to a testable artifact for the technical packet.

Scenario What the proof shows Artifact Status
Answer saved while offline Browser goes offline, learner saves work, local pending count increases, network returns, receipt coverage advances. Offline replay E2E trace Ready
Submit request fails in transit Submit request is replayed after a failed send and the attempt reaches durable submitted state after reconnect. Degraded submit recovery E2E Ready
Network fails before final response reaches server Final response and submit request remain queued locally, replay in order, and submit without requiring a second learner click. Response-save gap E2E Ready
Duplicate tab tries to write old state The stale tab is marked read-only after QFlowLearn projects the authoritative state back to the browser. Duplicate-tab authority E2E Ready
Queued submit survives reload The learner clicks Finish Assessment while the attempt endpoint is unavailable, reloads, and the queued response plus submit request remain pending until replay. Reload recovery E2E Ready
Queued submit survives tab close and reopen The learner clicks Finish Assessment while offline, closes the tab, reopens the attempt, and QFlowLearn replays the queued submit after reconnect. Tab reopen recovery E2E Ready
Transient worker errors retry cleanly Queued response and submit events remain local through retryable server errors and replay after the service recovers. Worker retry E2E Ready
Recovery timeline

From browser queue to durable receipt.

The important detail for RFP reviewers is not that QFlowLearn retries. It is that the learner action is preserved first, replayed in order, and reconciled against the authoritative attempt state.

  1. Learner starts an assessment and receives the current attempt state.
  2. Learner answers, saves, navigates, or finishes the assessment.
  3. QFlowLearn writes the event and item state into IndexedDB before depending on the network.
  4. If the connection is down, the learner sees queued work instead of lost work.
  5. If the page reloads or the tab reopens, QFlowLearn restores the queued work from local recovery storage.
  6. When the connection returns, queued events replay in order.
  7. Durable receipts confirm which sequence the platform accepted.
  8. The instructor and support view can explain what happened from the attempt evidence.
Recovery evidence

Include network recovery in the delivery packet.

The technical packet can include the offline replay test, degraded submit recovery test, reload and tab reopen recovery tests, stale-tab reconciliation test, and receipt coverage summary.