Privacy
Practicing in Open Sim Lab is unobservable. There is no login, account, analytics, learner telemetry, or remote practice history. The one deliberate exception is an anonymous problem report: nothing is sent unless you open its dialog, review the bounded fields, and choose to send it.
What is stored, and where
- Your preferences, in this browser's local storage on this device.
- Your acknowledgement of the not-for-clinical-use statement, in the same place.
- The expiry of any goal-path suggestion you hide for 7 days.
- Your newest 50 bounded practice-attempt summaries, in the same place.
- Session transcripts, if you save them, in the same place.
- Offline application files in this browser's cache, plus local browser-client IDs mapped to release hashes so an update in one tab does not break another. These are not learner identifiers, contain no practice content, and are never transmitted. Closed-client records are removed after the browser confirms those clients have closed; a later update removes unused releases. Keeping older tabs open can retain more than one release on this device. Clearing this site's browser data removes the offline files and these records.
To prepare for offline practice, let the offline download finish, then reload once while online. Browser storage eviction or clearing site data requires another download.
A problem report you deliberately send is kept in a private correction queue for at most 30 days. Abuse-prevention counters are kept for at most 14 days. The client does not attach your account, email, cookies, browser identity, or device time. The optional note is text you supply, so please do not put sensitive information in it. Raw network addresses are not stored.
What leaves the device
Your simulation, tutor, debrief writing, and practice history do not leave. If you open Help us improve this, Cloudflare Turnstile loads for abuse prevention. If you then send, the previewed scenario/version, public practice context, category, and optional 160-character note go to the isolated correction service. Recent simulated actions and a bounded patient/equipment snapshot are included only if you turn that option on and review the exact fields. Canceling sends no report.
Your private practice history
0 bounded attempt summaries are stored on this device. Each contains only the scenario and content version, selected public goal, simulated duration, completion time, and objective outcome words.
No reflection, action list, physiology trace, patient data, identity, or overall score is included. The newest 50 summaries are kept; older ones fall away locally.
What the host necessarily sees
The static host serving these files sees requests for those files and the network address they came from, as any web server does. It retains no per-request identity and stores no state about you. After the first load, ordinary practice makes no application API request; only the problem-report flow makes the declared requests above.
Each claim, and the test that enforces it
| Claim | Enforced by |
|---|---|
| The production bundle contains no analytics, error-reporting, advertising or tracking code. | tests/arch/boundaries.test.ts → no third-party or telemetry dependency exists |
| Turnstile is the sole foreign runtime script and it loads only after the report dialog opens. | tests/ui/problem-reporting.test.tsx → loads nothing until opened |
| There is no sign-in, sign-up, password or federated identity control anywhere. | tests/arch/boundaries.test.ts → Scenario: No credential surface exists |
| An exported transcript contains no identifiers and no real-world clock time. | tests/unit/transcript.test.ts → Scenario: An exported transcript contains no identifiers |
| No code path accepts identifiable information about a real person. | tests/arch/boundaries.test.ts → Scenario: Patient setup is scenario-authored only |
| The simulation kernel is forward only and exposes no dose-solving entry point. | tests/arch/boundaries.test.ts → Scenario: The kernel module exposes no inverse entry point |
| No outbound link carries a campaign, referral or identifier parameter. | tests/arch/boundaries.test.ts → Scenario: No tracking parameter is ever added to an outbound link |
| The application depends on no external pharmacology dataset. | tests/arch/dependencies.test.ts → Scenario: The dependency graph is clean |
| Reporting cannot inspect browser storage, debrief writing, or private learner records. | tests/arch/private-tutor-reporting.test.ts → keeps reporting unable to discover browser storage |
| The report API fails closed and accepts only exact routes and bounded exact-version payloads. | tests/unit/problem-reporting.test.ts → has only the two exact API routes |
| Recent simulation context is collected only after explicit consent and is structurally bounded. | tests/ui/problem-reporting.test.tsx → collects bounded simulation context only after explicit consent |
| Likely real-patient or contact information is stopped in the dialog and at the Worker boundary. | tests/unit/problem-reporting.test.ts → stops likely real-patient and contact information |
Open Sim Lab is an educational simulator, not for clinical use. It is not a clinical decision-support tool, not a dosing calculator, and is not validated for any decision affecting a real patient.