tr
TryGhost
GitHub
Ghost
Workspace
GitHub
CI Pipeline Executions
Filtered
Runs
Demo
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Overview
⌘K
Ghost
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
GitHub
Ghost
Workspace
Succeeded
30683
276dca03 Changed member increment gating to validate its preparation reads ref https://linear.app/ghost/issue/BER-3934 The email and batch rows that decide whether member increments may run were consumed as untyped rows, so a renamed or missing column would have silently changed the gate. They now pass through Zod codecs like the other database reads in this service.
by Jonatan Sv...
J
Succeeded
30683
4d4883a3 Changed member increment gating to validate its preparation reads ref https://linear.app/ghost/issue/BER-3934 The email and batch rows that decide whether member increments may run were consumed as untyped rows, so a renamed or missing column would have silently changed the gate. They now pass through Zod codecs like the other database reads in this service.
by Jonatan Sv...
J
Succeeded
30683
32025714 Changed member counter comparison to retry lock waits ref https://linear.app/ghost/issue/BER-3934 Batch preparation holds member locks while comparison reads them, so a lock wait timeout or deadlock failed the comparison outright. The comparison is observe-only, so the whole rolled-back transaction can be retried the way the email counter comparison already is.
by Jonatan Sv...
J
Succeeded
30683
3d589e1c Changed member counter mode to degrade instead of stalling on anomalies ref https://linear.app/ghost/issue/BER-3934/add-incremental-email-and-member-analytics-counters Review found that suppressing member IDs by spreading the batch result also dropped its email IDs, because those are getters: with member counters on, email counter comparison and final repair silently never ran. The email IDs are now carried explicitly and a unit test pins it. Two fail-closed guards sat on the live ingestion path. An event that arrived before its batch's member denominator was applied failed the whole flush, and a misconfigured mode threw during boot. The flush now stores such events without member increments and logs it, so comparison reports the drift and the shared sweep repairs it instead of one email stalling every newsletter's ingestion; the mode is validated with the same Zod-and-warn pattern as the email counter mode. The storage always takes the email lock first and the email baseline after every other lock, member rows are validated through DbCount, both counter classes share one metrics helper, and the member metrics carry the phase label so a later repair phase does not change existing series.
by Jonatan Sv...
J
Succeeded
30683
fbca5a11 Added member counter comparison and guarded rollout mode ref https://linear.app/ghost/issue/BER-3934/add-incremental-email-and-member-analytics-counters Compare initialized member counters against opens-inclusive truth without repairing drift. Gate activation on preparation and email counters, and use committed transitions to skip duplicate member work only when its writes are atomic.
by Jonatan Sv...
J
Failed
30683
39d31a80 Added member counter comparison and guarded rollout mode ref https://linear.app/ghost/issue/BER-3934/add-incremental-email-and-member-analytics-counters Compare initialized member counters against opens-inclusive truth without repairing drift. Gate activation on preparation and email counters, and use committed transitions to skip duplicate member work only when its writes are atomic.
by Jonatan Sv...
J
Previous
Next