The System health page lets a platform administrator verify that the event log is a complete and faithful record of the database state.
What verification checks
Belsimple is event-sourced: every write that changes the state of a tenant’s data (a task, a classification, a time entry, a user, …) also records an event describing the change. Verification replays every recorded event against an empty in-memory state, then compares that reconstructed state to what is actually stored in the database.
If the two disagree, you get a list of mismatches — for example:
Task <id> title: db="Renamed" replayed="Old name"TimeEntry <id> exists in DB but not in eventsClassification <id> exists in events but not in DB
A clean run means:
- Every live database row has a corresponding creation event.
- Every event translates to a consistent final state.
- Nothing has been mutated outside the event system.
Seed users and platform admins created outside the event system are intentionally excluded from the check.
When to run it
- After a production incident or a manual database edit.
- Before and after a migration that touches event-sourced tables.
- Periodically as a sanity check on data integrity.
What it costs
Verification fetches every event and every row from the event-sourced tables. On a small or medium database it completes in a few seconds; on a large database it can take tens of seconds. The request blocks a single request worker while it runs — don’t run it during a demand spike.
Interpreting failures
If verification reports mismatches:
- Do not dismiss them. Each mismatch is a sign that the database and the event log have drifted.
- Export the list and share it with engineering.
- Investigate the specific entity IDs. The audit log may help correlate the mismatch with a recent operation.
- If a recent code change is suspected, roll back and re-run verification.