mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 04:50:59 +00:00
chore(release): fold in the coach discriminant, the dependency bumps, and the notes the audit found wrong
This commit is contained in:
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in new issue
Block a user