repository_job_events currently behaves like latest status storage because each write deletes the prior event for the same repository, job, and status before inserting a replacement. that costs extra writes and makes the data model less clear.
- decide whether this should be latest-status state or an append-only event log
- if it is latest-status state, add a uniqueness constraint or replacement table and use upsert semantics
- if it is append-only, remove the delete step and update report queries accordingly
- include a migration path for existing rows
repository_job_events currently behaves like latest status storage because each write deletes the prior event for the same repository, job, and status before inserting a replacement. that costs extra writes and makes the data model less clear.