Owner-facing technical notes explaining how ZelSafe records local cybersecurity training activity, computes readiness metrics, synchronizes Apple Watch learning evidence, and produces auditable compliance reports without collecting user data on external servers.
ZelSafe is a self-directed cybersecurity awareness application. Its audit record documents user interaction with training cards, audio completion, quiz results, module readiness, and generated compliance reports. The audit mechanism is intentionally local-first: the app does not require a backend service to create or maintain the learner record.
A local evidence trail generated from app events on the user device. A card is marked completed only when the local record contains both audio completion and quiz-completion evidence for that same card. Card viewing and study time remain supporting engagement evidence and do not complete a card by themselves.
The audit record is not a claim that a human identity was independently verified by ZelSafe. It is a device-local training evidence record, not a proctored exam transcript or an independently identity-verified credential.
Compliance posture: card completion requires both audio-completion evidence and card quiz-completion evidence. Module completion requires every current card in the module to satisfy that rule together with module/category quiz pass evidence. Viewing or study time alone never marks a card completed or a module passed.
| Data Source | Meaning | How It Is Created | Audit Use |
|---|---|---|---|
viewedCardIds | Set of card identifiers opened or credited as viewed. | Recorded when a card opens on iPhone or when iPhone receives watch study activity for that card. | Engagement and card-coverage evidence only. A viewed card is not automatically a completed card. |
cardAuditLogs | Per-card local audit log containing category name, total seconds, completion/pass date, and completion/pass flag. | Created or updated when study time is recorded or when the audio-plus-quiz completion rule updates card evidence. | Audited study time, per-module time aggregation, card status evidence, and export evidence. |
audioCompletedCardIds | Set of cards whose audio lesson reached completion on iPhone or Apple Watch. | Recorded when iPhone audio finishes, or when watch audio finishes and syncs to iPhone. | One required half of card-completion evidence. Audio completion alone never completes a card. |
quizResults | Immutable quiz-attempt records with card association and answer-level correctness. | Saved after a card quiz or module/category quiz is completed. | Card quiz-completion evidence, mastery calculations, module/category pass evidence, and question-level proof. A quiz alone never completes a card. |
| Derived card status | A current card is completed only when its identifier has both audio-completion evidence and a completed card-quiz record. | Recalculated whenever audio-completion or quiz-completion evidence changes. | Completed-card totals, module readiness, report calculations, and certificate calculations. |
passedCategoryDates | Category/module pass timestamp. | Written when a category quiz reaches the passing score. | Module assessment evidence and pass timestamp. A module is reported as passed only when all current cards are also completed. |
cardAuditLogs entry.The 300-second cap is a data-quality control. It prevents long idle sessions from creating unrealistic study-time evidence while still allowing legitimate repeated sessions to accumulate over time.
The Apple Watch app has a reduced interaction model. It records card listening and viewing, but it does not independently satisfy the card quiz requirement. Watch activity is synchronized to iPhone, where the app combines watch audio evidence with the matching card quiz record.
A watch audio badge means the audio lesson was completed. It is not a completed-card badge by itself. Final card completion still requires the corresponding quiz to be completed.
WatchConnectivity provides multiple delivery paths. ZelSafe uses them for reliability: immediate messaging when reachable, application context for latest state, and user info transfer for queued delivery. Because the same payload can arrive through more than one callback, audio-state updates are safe by nature because they write to sets, and derived card-completion status is recalculated from audio and quiz evidence — but study-time updates require additional protection because seconds are additive.
eventId.eventId arrives again, iPhone ignores the study-time portion.This prevents duplicate study seconds when WatchConnectivity delivers the same watch event through multiple callbacks.
Module readiness is computed from current content categories and current card identifiers. This prevents old or removed cards from inflating current catalog reports. For readiness calculations, a card counts as completed only when both its audio lesson and card quiz are completed.
| Status | Rule | Compliance Meaning |
|---|---|---|
| Not Started | No viewed cards, study time, audio completion, quiz completion, or module pass evidence. | No local training evidence exists for the module. |
| In Progress | Any viewing, study time, audio, quiz, or pass-related evidence exists, but at least one current card is missing audio completion or quiz completion, or the module/category quiz has not passed. | The learner has activity but has not satisfied the complete card-and-assessment rule. |
| Passed | Every current card in the module has both audio-completion and card quiz-completion evidence, and module/category quiz pass evidence exists. | The module has complete learning-object coverage plus assessment evidence. |
totalSecondsSpent from cardAuditLogs for current module card ids.The PDF and JSON export use the same module summaries. The completed-card value is calculated from the audio-plus-quiz rule, not from card views alone. The export includes module id, module name, completed cards, total cards, time spent seconds, status, and pass timestamp when applicable.
Local signature: the audit export includes a local HMAC-based signature over selected report fields — a tamper-evidence mechanism for the generated export payload. It is not a server-backed notarization and should not be represented as independent third-party verification.
ZelSafe's audit record is stored locally on the device using local app storage. Watch audit events are sent only between the user's watch app and iPhone app using Apple's WatchConnectivity framework.
The audit system does not require a backend account, remote tracking endpoint, analytics service, or external database. A user may choose to export or share a generated PDF/JSON report; that user-initiated export is separate from automatic data collection.
"ZelSafe records training evidence locally on the user's device and generates user-controlled reports. ZelSafe does not collect this audit record on a server."
Auditors should treat the report as a device-local training evidence record, not as a proctored exam transcript or independently identity-verified credential.
ZelSafe creates a local audit trail from card openings, timed study sessions, audio completions, and quiz results. A card is counted as completed only when local records show both audio completion and quiz completion for that same current card. Card viewing and study time show engagement but do not complete the card. Module readiness and exported reports apply this completed-card rule together with module/category pass evidence. Apple Watch activity is synchronized to the paired iPhone with duplicate-event protection; watch audio contributes the audio requirement but cannot complete a card without its quiz.
Internal owner reference. This document describes app behavior and audit logic so the implementation can be explained consistently; it is not legal advice and does not independently certify regulatory compliance.
Audio plus quiz — recorded on the device, explained consistently, exported only when the user chooses.