The void columns on hr_timecard_punch

FeatureInitializerService
Shipped
August 13, 2026 at 2:32 AM UTC
Author
Kamo
Commit
cdc1146

Mirrors four new nullable columns on the TimecardPunch entity. A void is neither a delete nor a correction: it says the punch should never have existed — a double tap on the clock, an abandoned break, or the seam between two spans the editor has merged into one. SUPERSEDED_BY_PUNCH_ID cannot express it, because that column means "read this other row instead" and there is no other row. All four are NULLABLE, which is what makes this safe on a populated table: CockroachDB rejects ADD COLUMN ... NOT NULL on a non-empty table and rolls the whole statement back, so a NOT NULL void marker would be logged as a WARN, skipped, and quietly absent. They go FIRST in this runner, ahead of the indexes and REVOKEs it already carries, for the reason @Order(0) exists: the moment shared-lib maps a column, every runner that loads the punch entity emits it in its SELECT, and a column-add ordered late never runs at all — an earlier reader dies on "column does not exist" and takes the initializer down with it. Run against 192.168.4.22:5433, all four applied.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing