Work is written to IndexedDB before send
ReadyResponse events and submit requests enter an IndexedDB-backed recovery store before QFlowLearn depends on a network request.
QFlowLearn treats network interruptions as a normal assessment-day condition. Learner work is written to IndexedDB before send, restored after reloads or tab reopen flows, replayed when the connection returns, and confirmed with durable receipts from the attempt authority.
Response events and submit requests enter an IndexedDB-backed recovery store before QFlowLearn depends on a network request.
Finish Assessment writes the final response and submit request as one ordered local batch before sending either event.
Attempt events and item snapshots are restored from the recovery store when the page reloads or a tab is reopened.
When the connection returns, QFlowLearn replays queued events in sequence and prunes only after durable receipt coverage.
Per-attempt authority and idempotency prevent old tabs or repeated submit attempts from overwriting the authoritative attempt state.
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 |
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.
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.