chore(release): fold in the coach discriminant, the dependency bumps, and the notes the audit found wrong

This commit is contained in:
Marc-André Bombeck committed 2026-07-26 18:57:21 +02:00
1 parent 5a71f376d4
commit 4be01a67f0
22 files changed
+252 -489

No files matched your search

@@ -363,7 +363,7 @@ const REGISTRY: DestructiveEntry[] = [
{
file: "components/records/allergy-manager.tsx",
destroys: "one allergy record",
recovery: "tombstoned-no-restore",
recovery: "permanent",
confirm: ["DeleteButton"],
},
{
@@ -16,7 +16,7 @@ vi.mock("@/lib/ai/coach/snapshot", () => ({
buildCoachSnapshot(userId, scope),
}));
// v1.32.40 (#648) — an empty window read is no longer reported as absence until
// v1.33.0 (#648) — an empty window read is no longer reported as absence until
// the availability probe has confirmed the record is empty. Stub the probe's
// reads to "nothing stored", which is what these dispatch assertions mean by an
// absent section; `coach-availability-window-honesty.test.ts` owns the other
+1 -1
View File
@@ -31,7 +31,7 @@ export function getAuditLogRetentionDays(): number {
/**
* Delete audit rows past the retention horizon, in bounded batches.
*
* Until v1.32.40 this was one unbounded `deleteMany` on `created_at < cutoff`.
* Until v1.33.0 this was one unbounded `deleteMany` on `created_at < cutoff`.
* Every index on the table leads with `user_id` or `action`, so the predicate
* had none and the statement planned a sequential scan plus index maintenance
* on every removed row. Past the 60-second `statement_timeout` that aborts and
@@ -32,7 +32,7 @@ function tombstoneCutoff(now: Date): Date {
* Hard-delete soft-deleted measurement rows whose `deletedAt` is older than
* the retention horizon.
*
* Batched. Until v1.32.40 this was one unbounded `deleteMany` over a predicate
* Batched. Until v1.33.0 this was one unbounded `deleteMany` over a predicate
* that no index supported, which meant a backlog large enough to exceed the
* 60-second `statement_timeout` could never be drained: the statement aborted,
* the transaction rolled back, and the next night ran the identical statement
+1 -1
View File
@@ -13,7 +13,7 @@
* it, and the job that was supposed to make deletion real never completes.
*
* The fix has three parts and this file is one of them:
* - the predicates get indexes that match them (migration 0277);
* - the predicates get indexes that match them (migration 0276);
* - the delete runs in bounded batches, so no single statement is on the
* hook for the whole backlog;
* - a run that stops at the cap says so, so "still draining" and "nothing
@@ -1,5 +1,5 @@
/**
* v1.32.40 — the retention purges have to be able to fail out loud.
* v1.33.0 — the retention purges have to be able to fail out loud.
*
* Both handlers used to catch every error into a wide-event warning and return
* normally. pg-boss then recorded a successful job, so a purge that aborted on
+1 -1
View File
@@ -185,7 +185,7 @@ export async function handleMeasurementTombstoneCleanup(
// v1.7.0 sync — prune tombstones across all three sync domains on
// the same retention horizon.
//
// v1.32.40 — sequential rather than parallel. Each leg now walks its
// v1.33.0 — sequential rather than parallel. Each leg now walks its
// backlog in batches, and three concurrent walks against the three
// densest tables competed for the worker pool for no gain: the job has
// the whole night.