@mongrov/analytics 0.24.0 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,6 +17,8 @@ export { dismissInsight } from './insight';
17
17
  export type { DismissInsightArgs, DismissInsightDeps } from './insight';
18
18
  export { BASELINE_MIN_DAYS, BASELINE_WINDOW_DAYS, baselineAggregateFor, getBaselineMetricIds, } from './metric_metadata';
19
19
  export type { BaselineDailyAggregate, BaselineWindowDays, } from './metric_metadata';
20
+ export { cleanViewFor, isQualityTable, PLAUSIBLE_RANGES, QUALITY_FLAG_COLUMNS, QUALITY_TABLES, qualityViewDdls, qualityViewFor, READING_QUALITY_COUNTS_SQL, readViewFor, } from './reading-quality';
21
+ export type { QualityTable, QualityView } from './reading-quality';
20
22
  export { createSamplingResolver, fallbackSampling, minimumWindowMinutes, SAMPLING_CACHE_TTL_MS, } from './sampling';
21
23
  export type { EffectiveSampling, SamplingResolver, SamplingResolverConfig, } from './sampling';
22
24
  export { dropViewDdl, generateViewDdl, LOCAL_SCHEMAS, quoteQualifier, TABLE_NAMES, VIEWED_TABLES, watermarkColumnFor, } from './schemas';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAIvD,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,GACZ,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGvE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAK1B,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,YAAY,CAAA;AAUnB,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAK5C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC5E,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGzD,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAIvD,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,GACZ,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGvE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAI1B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAKlE,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,YAAY,CAAA;AAUnB,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAK5C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC5E,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGzD,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA"}
@@ -20,6 +20,9 @@ export { useAnalytics, useInsight, useTimeseries } from './hooks';
20
20
  export { dismissInsight } from './insight';
21
21
  // Baseline metadata (Sprint 5 §7).
22
22
  export { BASELINE_MIN_DAYS, BASELINE_WINDOW_DAYS, baselineAggregateFor, getBaselineMetricIds, } from './metric_metadata';
23
+ // Signal-quality views (T-25, sprint6 §13). Claims read `v_{vital}_clean`;
24
+ // `v_{vital}_q` carries the per-reading flags for diagnostics and muted charts.
25
+ export { cleanViewFor, isQualityTable, PLAUSIBLE_RANGES, QUALITY_FLAG_COLUMNS, QUALITY_TABLES, qualityViewDdls, qualityViewFor, READING_QUALITY_COUNTS_SQL, readViewFor, } from './reading-quality';
23
26
  // Effective sampling cadence (Sprint 5 T-41, principle 22). Chart data
24
27
  // providers and gap detection should resolve cadence through this rather
25
28
  // than reading metric_metadata directly.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,sEAAsE;AACtE,oEAAoE;AACpE,8CAA8C;AAC9C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,GACZ,MAAM,iBAAiB,CAAA;AAOxB,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAG9D,kCAAkC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAOjE,4CAA4C;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG1C,mCAAmC;AACnC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAM1B,uEAAuE;AACvE,yEAAyE;AACzE,yCAAyC;AACzC,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AAOnB,yEAAyE;AACzE,gEAAgE;AAChE,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,4DAA4D;AAC5D,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,WAAW,CAAA;AAGlB,sEAAsE;AACtE,wEAAwE;AACxE,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAuB5E,2EAA2E;AAC3E,6DAA6D;AAC7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,sEAAsE;AACtE,oEAAoE;AACpE,8CAA8C;AAC9C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,GACZ,MAAM,iBAAiB,CAAA;AAOxB,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAG9D,kCAAkC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAOjE,4CAA4C;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG1C,mCAAmC;AACnC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAM1B,2EAA2E;AAC3E,gFAAgF;AAChF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAG1B,uEAAuE;AACvE,yEAAyE;AACzE,yCAAyC;AACzC,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AAOnB,yEAAyE;AACzE,gEAAgE;AAChE,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,4DAA4D;AAC5D,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,WAAW,CAAA;AAGlB,sEAAsE;AACtE,wEAAwE;AACxE,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAuB5E,2EAA2E;AAC3E,6DAA6D;AAC7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Signal-quality flags and clean-read views (sprint6 spec §13, T-25).
3
+ *
4
+ * Alpha ships processed metrics, not raw firmware values: a user must never
5
+ * see a claim computed from a reading the ring could not honestly have taken
6
+ * — a temperature from a ring on the nightstand, a 10x Android decode, an
7
+ * SpO2 taken mid-gesture, one 190 bpm spike between two 60s.
8
+ *
9
+ * Two view layers per vital, on top of the `v_{table}` union views:
10
+ *
11
+ * v_{table}_q every reading + its flags (`worn`, `warm_up`, `still`,
12
+ * `plausible`, and `spike` / `scale_suspect` where they
13
+ * apply). Diagnostics read this.
14
+ * v_{table}_clean same columns as `v_{table}`, dirty readings removed.
15
+ * Baselines, rules, verdicts and narratives read this —
16
+ * the §13 consume rule.
17
+ *
18
+ * Why views and not flag columns written at ingest (§13a says "computed once
19
+ * at sync"):
20
+ * - Most flags need neighbours. A spike is judged against the readings
21
+ * either side; warm-up against the previous temperature. Sync is delta and
22
+ * rows are insert-only, so the neighbour that decides a flag often arrives
23
+ * in a LATER sync than the reading it decides.
24
+ * - Columns need a migration locally AND an ALTER on the remote Iceberg
25
+ * tables, which the device cannot issue; a local-only column breaks the
26
+ * `SELECT *` union in `v_{table}`.
27
+ * - Plausibility is a pure function of the value, so computing it at read
28
+ * time gives the same answer ingest would.
29
+ *
30
+ * Excluded readings are flagged, never deleted: the raw row stays in
31
+ * `v_{table}` for charts (which may mute or omit them) and diagnostics.
32
+ *
33
+ * The ring reports no wear signal, so `worn` comes from temperature: a
34
+ * reading below 30 C is ambient, not skin. A vital is judged by the latest
35
+ * temperature at or before it, and only if that temperature is recent — with
36
+ * no recent evidence the reading is assumed worn, because absence of a
37
+ * temperature is not evidence the ring was off.
38
+ */
39
+ export declare const QUALITY_TABLES: readonly ["heart_rate", "hrv", "spo2", "temperature"];
40
+ export type QualityTable = (typeof QUALITY_TABLES)[number];
41
+ /** §13b clamps, inclusive. Outside ⇒ `plausible = false`. */
42
+ export declare const PLAUSIBLE_RANGES: {
43
+ readonly temp_c: readonly [30, 43];
44
+ readonly spo2: readonly [70, 100];
45
+ readonly bpm: readonly [30, 220];
46
+ readonly hrv_ms: readonly [5, 200];
47
+ };
48
+ /** Below this the ring is reading ambient air, not skin. */
49
+ export declare const WEAR_TEMP_MIN_C = 30;
50
+ /** How long a temperature reading counts as wear evidence for later vitals. */
51
+ export declare const WEAR_EVIDENCE_MINUTES = 60;
52
+ /** §13c: discard the first 10 minutes after the ring goes back on. */
53
+ export declare const WARM_UP_MINUTES = 10;
54
+ /** Same "still" test as rule context `resting` and the D-G resting metrics. */
55
+ export declare const STILL_WINDOW_MINUTES = 15;
56
+ /** §13c: a reading this far from BOTH neighbours is a single-slot spike. */
57
+ export declare const SPIKE_DELTA_BPM = 40;
58
+ /** Neighbours further apart than this are a gap, not neighbours. */
59
+ export declare const SPIKE_NEIGHBOUR_MINUTES = 60;
60
+ /** Flag columns each `_q` view adds, in order. The `_clean` view drops them. */
61
+ export declare const QUALITY_FLAG_COLUMNS: Readonly<Record<QualityTable, readonly string[]>>;
62
+ export declare function isQualityTable(table: string): table is QualityTable;
63
+ export declare function qualityViewFor(table: QualityTable): string;
64
+ export declare function cleanViewFor(table: QualityTable): string;
65
+ /**
66
+ * The view a claim-producing query reads for `table`: the clean view for a
67
+ * vital, the plain union view for everything else.
68
+ */
69
+ export declare function readViewFor(table: string): string;
70
+ export interface QualityView {
71
+ name: string;
72
+ sql: string;
73
+ }
74
+ /**
75
+ * Every quality view, in creation order (each reads only earlier ones and
76
+ * the `v_{table}` union views). They carry no tenant literal — the union
77
+ * views underneath already bake it in — so they are recreated alongside them
78
+ * on every attach and need no context.
79
+ */
80
+ export declare function qualityViewDdls(): QualityView[];
81
+ /** Reverse creation order, so no view is dropped while another reads it. */
82
+ export declare function qualityViewNames(): string[];
83
+ /**
84
+ * Diagnostic count of excluded readings per vital and reason (§13d: a
85
+ * `scale_suspect` temperature surfaces here, never on a user-facing
86
+ * surface). Binds `$userId`, `$brand`, `$familyId`, `$days`. Counts are
87
+ * BIGINT. `moving` is reported for every vital but gates only SpO2 and HRV.
88
+ */
89
+ export declare const READING_QUALITY_COUNTS_SQL: string;
90
+ //# sourceMappingURL=reading-quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reading-quality.d.ts","sourceRoot":"","sources":["../../src/core/reading-quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,eAAO,MAAM,cAAc,uDAAyF,CAAA;AACpH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAA;AAEV,4DAA4D;AAC5D,eAAO,MAAM,eAAe,KAAK,CAAA;AACjC,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,sEAAsE;AACtE,eAAO,MAAM,eAAe,KAAK,CAAA;AACjC,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,KAAK,CAAA;AACtC,4EAA4E;AAC5E,eAAO,MAAM,eAAe,KAAK,CAAA;AACjC,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAEzC,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC,CAKlF,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AA2ID,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,WAAW,EAAE,CAM/C;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAiBD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAKhB,CAAA"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Signal-quality flags and clean-read views (sprint6 spec §13, T-25).
3
+ *
4
+ * Alpha ships processed metrics, not raw firmware values: a user must never
5
+ * see a claim computed from a reading the ring could not honestly have taken
6
+ * — a temperature from a ring on the nightstand, a 10x Android decode, an
7
+ * SpO2 taken mid-gesture, one 190 bpm spike between two 60s.
8
+ *
9
+ * Two view layers per vital, on top of the `v_{table}` union views:
10
+ *
11
+ * v_{table}_q every reading + its flags (`worn`, `warm_up`, `still`,
12
+ * `plausible`, and `spike` / `scale_suspect` where they
13
+ * apply). Diagnostics read this.
14
+ * v_{table}_clean same columns as `v_{table}`, dirty readings removed.
15
+ * Baselines, rules, verdicts and narratives read this —
16
+ * the §13 consume rule.
17
+ *
18
+ * Why views and not flag columns written at ingest (§13a says "computed once
19
+ * at sync"):
20
+ * - Most flags need neighbours. A spike is judged against the readings
21
+ * either side; warm-up against the previous temperature. Sync is delta and
22
+ * rows are insert-only, so the neighbour that decides a flag often arrives
23
+ * in a LATER sync than the reading it decides.
24
+ * - Columns need a migration locally AND an ALTER on the remote Iceberg
25
+ * tables, which the device cannot issue; a local-only column breaks the
26
+ * `SELECT *` union in `v_{table}`.
27
+ * - Plausibility is a pure function of the value, so computing it at read
28
+ * time gives the same answer ingest would.
29
+ *
30
+ * Excluded readings are flagged, never deleted: the raw row stays in
31
+ * `v_{table}` for charts (which may mute or omit them) and diagnostics.
32
+ *
33
+ * The ring reports no wear signal, so `worn` comes from temperature: a
34
+ * reading below 30 C is ambient, not skin. A vital is judged by the latest
35
+ * temperature at or before it, and only if that temperature is recent — with
36
+ * no recent evidence the reading is assumed worn, because absence of a
37
+ * temperature is not evidence the ring was off.
38
+ */
39
+ export const QUALITY_TABLES = ['heart_rate', 'hrv', 'spo2', 'temperature'];
40
+ /** §13b clamps, inclusive. Outside ⇒ `plausible = false`. */
41
+ export const PLAUSIBLE_RANGES = {
42
+ temp_c: [30, 43],
43
+ spo2: [70, 100],
44
+ bpm: [30, 220],
45
+ hrv_ms: [5, 200],
46
+ };
47
+ /** Below this the ring is reading ambient air, not skin. */
48
+ export const WEAR_TEMP_MIN_C = 30;
49
+ /** How long a temperature reading counts as wear evidence for later vitals. */
50
+ export const WEAR_EVIDENCE_MINUTES = 60;
51
+ /** §13c: discard the first 10 minutes after the ring goes back on. */
52
+ export const WARM_UP_MINUTES = 10;
53
+ /** Same "still" test as rule context `resting` and the D-G resting metrics. */
54
+ export const STILL_WINDOW_MINUTES = 15;
55
+ /** §13c: a reading this far from BOTH neighbours is a single-slot spike. */
56
+ export const SPIKE_DELTA_BPM = 40;
57
+ /** Neighbours further apart than this are a gap, not neighbours. */
58
+ export const SPIKE_NEIGHBOUR_MINUTES = 60;
59
+ /** Flag columns each `_q` view adds, in order. The `_clean` view drops them. */
60
+ export const QUALITY_FLAG_COLUMNS = {
61
+ heart_rate: ['spike', 'worn', 'warm_up', 'still', 'plausible', 'clean'],
62
+ hrv: ['worn', 'warm_up', 'still', 'plausible', 'hrv_clean', 'stress_clean'],
63
+ spo2: ['worn', 'warm_up', 'still', 'plausible', 'clean'],
64
+ temperature: ['worn', 'warm_up', 'still', 'plausible', 'scale_suspect', 'clean'],
65
+ };
66
+ export function isQualityTable(table) {
67
+ return QUALITY_TABLES.includes(table);
68
+ }
69
+ export function qualityViewFor(table) {
70
+ return `v_${table}_q`;
71
+ }
72
+ export function cleanViewFor(table) {
73
+ return `v_${table}_clean`;
74
+ }
75
+ /**
76
+ * The view a claim-producing query reads for `table`: the clean view for a
77
+ * vital, the plain union view for everything else.
78
+ */
79
+ export function readViewFor(table) {
80
+ return isQualityTable(table) ? cleanViewFor(table) : `v_${table}`;
81
+ }
82
+ const WEAR_VIEW = 'v_wear';
83
+ const [TEMP_MIN, TEMP_MAX] = PLAUSIBLE_RANGES.temp_c;
84
+ const [SPO2_MIN, SPO2_MAX] = PLAUSIBLE_RANGES.spo2;
85
+ const [BPM_MIN, BPM_MAX] = PLAUSIBLE_RANGES.bpm;
86
+ const [HRV_MIN, HRV_MAX] = PLAUSIBLE_RANGES.hrv_ms;
87
+ const DEVICE_WINDOW = 'PARTITION BY user_id, brand, family_id, device_id ORDER BY ts';
88
+ /**
89
+ * Per temperature reading: is the ring on, and is this the first on-wrist
90
+ * reading after an off-wrist one (the warm-up onset)? The very first reading
91
+ * of a device is not an onset — nothing says it was just put on.
92
+ */
93
+ function wearViewDdl() {
94
+ return `CREATE OR REPLACE VIEW ${WEAR_VIEW} AS
95
+ SELECT user_id, brand, family_id, device_id, ts,
96
+ temp_c >= ${WEAR_TEMP_MIN_C} AS on_wrist,
97
+ COALESCE(temp_c >= ${WEAR_TEMP_MIN_C}
98
+ AND LAG(temp_c) OVER (${DEVICE_WINDOW}) < ${WEAR_TEMP_MIN_C}, FALSE) AS onset
99
+ FROM v_temperature;`;
100
+ }
101
+ /** Latest wear evidence at or before each reading, same device. */
102
+ const WEAR_JOIN = `ASOF LEFT JOIN ${WEAR_VIEW} w
103
+ ON w.user_id = m.user_id AND w.brand = m.brand
104
+ AND w.family_id = m.family_id AND w.device_id = m.device_id
105
+ AND m.ts >= w.ts`;
106
+ const WORN = `CASE WHEN w.ts IS NULL OR w.ts < m.ts - INTERVAL ${WEAR_EVIDENCE_MINUTES} MINUTE
107
+ THEN TRUE ELSE w.on_wrist END`;
108
+ const WARM_UP = `COALESCE(w.onset AND m.ts < w.ts + INTERVAL ${WARM_UP_MINUTES} MINUTE, FALSE)`;
109
+ /** Tenant-scoped like the rules' `resting` join, not device-scoped. */
110
+ const STILL = `NOT EXISTS (
111
+ SELECT 1 FROM v_activity a
112
+ WHERE a.user_id = m.user_id AND a.brand = m.brand AND a.family_id = m.family_id
113
+ AND a.steps > 0
114
+ AND a.ts >= m.ts - INTERVAL ${STILL_WINDOW_MINUTES} MINUTE
115
+ AND a.ts < m.ts + INTERVAL ${STILL_WINDOW_MINUTES} MINUTE)`;
116
+ function sharedFlags() {
117
+ return `${WORN} AS worn,
118
+ ${WARM_UP} AS warm_up,
119
+ ${STILL} AS still`;
120
+ }
121
+ function heartRateQDdl() {
122
+ // Spike needs both neighbours present and close; an edge reading or one
123
+ // next to a gap cannot be judged and is kept. A step change (60 → 110 →
124
+ // 120) is not a spike: the second reading agrees with the first.
125
+ return `CREATE OR REPLACE VIEW ${qualityViewFor('heart_rate')} AS
126
+ SELECT *, COALESCE(worn AND NOT warm_up AND plausible AND NOT spike, FALSE) AS clean
127
+ FROM (
128
+ SELECT m.*, ${sharedFlags()},
129
+ COALESCE(m.bpm BETWEEN ${BPM_MIN} AND ${BPM_MAX}, FALSE) AS plausible
130
+ FROM (
131
+ SELECT *, COALESCE(
132
+ LAG(ts) OVER n >= ts - INTERVAL ${SPIKE_NEIGHBOUR_MINUTES} MINUTE
133
+ AND LEAD(ts) OVER n <= ts + INTERVAL ${SPIKE_NEIGHBOUR_MINUTES} MINUTE
134
+ AND abs(bpm - LAG(bpm) OVER n) >= ${SPIKE_DELTA_BPM}
135
+ AND abs(bpm - LEAD(bpm) OVER n) >= ${SPIKE_DELTA_BPM}, FALSE) AS spike
136
+ FROM v_heart_rate
137
+ WINDOW n AS (${DEVICE_WINDOW})
138
+ ) m
139
+ ${WEAR_JOIN}
140
+ ) f;`;
141
+ }
142
+ function spo2QDdl() {
143
+ // Motion corrupts the optical read, so a moving SpO2 is excluded outright.
144
+ return `CREATE OR REPLACE VIEW ${qualityViewFor('spo2')} AS
145
+ SELECT *, COALESCE(worn AND NOT warm_up AND plausible AND still, FALSE) AS clean
146
+ FROM (
147
+ SELECT m.*, ${sharedFlags()},
148
+ COALESCE(m.spo2 BETWEEN ${SPO2_MIN} AND ${SPO2_MAX}, FALSE) AS plausible
149
+ FROM v_spo2 m
150
+ ${WEAR_JOIN}
151
+ ) f;`;
152
+ }
153
+ function temperatureQDdl() {
154
+ // Android 10x guard: a value that only lands in range when divided by ten
155
+ // is flagged, never divided. Corrected data is fabricated data.
156
+ return `CREATE OR REPLACE VIEW ${qualityViewFor('temperature')} AS
157
+ SELECT *, COALESCE(worn AND NOT warm_up AND plausible, FALSE) AS clean
158
+ FROM (
159
+ SELECT m.*, ${sharedFlags()},
160
+ COALESCE(m.temp_c BETWEEN ${TEMP_MIN} AND ${TEMP_MAX}, FALSE) AS plausible,
161
+ COALESCE(m.temp_c > ${TEMP_MAX}
162
+ AND m.temp_c / 10 BETWEEN ${TEMP_MIN} AND ${TEMP_MAX}, FALSE) AS scale_suspect
163
+ FROM v_temperature m
164
+ ${WEAR_JOIN}
165
+ ) f;`;
166
+ }
167
+ function hrvQDdl() {
168
+ // One row carries two vitals with different gates, so cleanliness is per
169
+ // column. HRV: clamp + still (§13c). Stress: no clamp, but an `active`
170
+ // reading is masked from alerting and tense-day counts (§13c) — the raw
171
+ // raster still shows it, reading `v_hrv`. HRV 0 is below the 5 ms clamp:
172
+ // the firmware reports it when RR variance is under its floor, which is a
173
+ // real observation of "unmeasurable", not a measurement.
174
+ return `CREATE OR REPLACE VIEW ${qualityViewFor('hrv')} AS
175
+ SELECT *,
176
+ COALESCE(hrv_ms IS NOT NULL AND worn AND NOT warm_up AND plausible AND still, FALSE) AS hrv_clean,
177
+ COALESCE(stress IS NOT NULL AND worn AND NOT warm_up AND still, FALSE) AS stress_clean
178
+ FROM (
179
+ SELECT m.*, ${sharedFlags()},
180
+ COALESCE(m.hrv_ms BETWEEN ${HRV_MIN} AND ${HRV_MAX}, FALSE) AS plausible
181
+ FROM v_hrv m
182
+ ${WEAR_JOIN}
183
+ ) f;`;
184
+ }
185
+ function cleanViewDdl(table) {
186
+ const exclude = `EXCLUDE (${QUALITY_FLAG_COLUMNS[table].join(', ')})`;
187
+ if (table === 'hrv') {
188
+ return `CREATE OR REPLACE VIEW ${cleanViewFor('hrv')} AS
189
+ SELECT * ${exclude}
190
+ REPLACE (CASE WHEN hrv_clean THEN hrv_ms END AS hrv_ms,
191
+ CASE WHEN stress_clean THEN stress END AS stress)
192
+ FROM ${qualityViewFor('hrv')}
193
+ WHERE hrv_clean OR stress_clean;`;
194
+ }
195
+ return `CREATE OR REPLACE VIEW ${cleanViewFor(table)} AS
196
+ SELECT * ${exclude} FROM ${qualityViewFor(table)} WHERE clean;`;
197
+ }
198
+ const Q_DDL = {
199
+ heart_rate: heartRateQDdl,
200
+ hrv: hrvQDdl,
201
+ spo2: spo2QDdl,
202
+ temperature: temperatureQDdl,
203
+ };
204
+ /**
205
+ * Every quality view, in creation order (each reads only earlier ones and
206
+ * the `v_{table}` union views). They carry no tenant literal — the union
207
+ * views underneath already bake it in — so they are recreated alongside them
208
+ * on every attach and need no context.
209
+ */
210
+ export function qualityViewDdls() {
211
+ return [
212
+ { name: WEAR_VIEW, sql: wearViewDdl() },
213
+ ...QUALITY_TABLES.map(t => ({ name: qualityViewFor(t), sql: Q_DDL[t]() })),
214
+ ...QUALITY_TABLES.map(t => ({ name: cleanViewFor(t), sql: cleanViewDdl(t) })),
215
+ ];
216
+ }
217
+ /** Reverse creation order, so no view is dropped while another reads it. */
218
+ export function qualityViewNames() {
219
+ return qualityViewDdls().map(v => v.name).reverse();
220
+ }
221
+ function countsFor(table, excluded, extra = {}) {
222
+ return `SELECT '${table}' AS metric,
223
+ COUNT(*) AS total,
224
+ COUNT(*) FILTER (WHERE ${excluded}) AS excluded,
225
+ COUNT(*) FILTER (WHERE NOT worn) AS off_wrist,
226
+ COUNT(*) FILTER (WHERE warm_up) AS warm_up,
227
+ COUNT(*) FILTER (WHERE NOT plausible) AS implausible,
228
+ COUNT(*) FILTER (WHERE NOT still) AS moving,
229
+ ${extra.spike ? 'COUNT(*) FILTER (WHERE spike)' : 'CAST(0 AS BIGINT)'} AS spike,
230
+ ${extra.scale ? 'COUNT(*) FILTER (WHERE scale_suspect)' : 'CAST(0 AS BIGINT)'} AS scale_suspect
231
+ FROM ${qualityViewFor(table)}
232
+ WHERE user_id = $userId AND brand = $brand AND family_id = $familyId
233
+ AND ts > now() - (INTERVAL 1 DAY) * CAST($days AS BIGINT)`;
234
+ }
235
+ /**
236
+ * Diagnostic count of excluded readings per vital and reason (§13d: a
237
+ * `scale_suspect` temperature surfaces here, never on a user-facing
238
+ * surface). Binds `$userId`, `$brand`, `$familyId`, `$days`. Counts are
239
+ * BIGINT. `moving` is reported for every vital but gates only SpO2 and HRV.
240
+ */
241
+ export const READING_QUALITY_COUNTS_SQL = [
242
+ countsFor('heart_rate', 'NOT clean', { spike: true }),
243
+ countsFor('hrv', 'NOT hrv_clean'),
244
+ countsFor('spo2', 'NOT clean'),
245
+ countsFor('temperature', 'NOT clean', { scale: true }),
246
+ ].join('\nUNION ALL\n');
247
+ //# sourceMappingURL=reading-quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reading-quality.js","sourceRoot":"","sources":["../../src/core/reading-quality.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"warehouse.d.ts","sourceRoot":"","sources":["../../src/core/warehouse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,WAAW,EAEX,WAAW,EACZ,MAAM,SAAS,CAAA;AAgBhB,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,CACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,KACb,MAAM,CAAA;IACX,WAAW,EAAE,WAAW,CAAA;IACxB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAA;IACvB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAA;IACpB,sEAAsE;IACtE,cAAc,EAAE,IAAI,CAAA;IACpB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AASD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,YAAY,CAAC,CA0FvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,YAAY,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAaf;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAwDD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAWzE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE;IACH,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GACA,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/D"}
1
+ {"version":3,"file":"warehouse.d.ts","sourceRoot":"","sources":["../../src/core/warehouse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,WAAW,EAEX,WAAW,EACZ,MAAM,SAAS,CAAA;AAiBhB,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,CACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,KACb,MAAM,CAAA;IACX,WAAW,EAAE,WAAW,CAAA;IACxB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAA;IACvB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAA;IACpB,sEAAsE;IACtE,cAAc,EAAE,IAAI,CAAA;IACpB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AASD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,YAAY,CAAC,CA0FvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,YAAY,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAaf;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAwDD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAWzE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE;IACH,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GACA,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB/D"}
@@ -33,6 +33,7 @@
33
33
  * <phase>, cause)`.
34
34
  */
35
35
  import { AnalyticsError } from './errors';
36
+ import { qualityViewDdls, qualityViewNames } from './reading-quality';
36
37
  import { dropViewDdl, generateViewDdl, VIEWED_TABLES } from './schemas';
37
38
  /**
38
39
  * Peel one layer of `AnalyticsError('query_failed')` off engine-wrapped
@@ -266,6 +267,17 @@ export async function createViews(db, ctx) {
266
267
  throw new AnalyticsError('attach_failed', `CREATE VIEW v_${table} failed`, rootCause(cause));
267
268
  }
268
269
  }
270
+ // Signal-quality views (T-25) read the union views above, so they come
271
+ // after them. A missing clean view would fail every rule and baseline, so
272
+ // it fails the attach just as loudly.
273
+ for (const view of qualityViewDdls()) {
274
+ try {
275
+ await db.execute(view.sql);
276
+ }
277
+ catch (cause) {
278
+ throw new AnalyticsError('attach_failed', `CREATE VIEW ${view.name} failed`, rootCause(cause));
279
+ }
280
+ }
269
281
  }
270
282
  /**
271
283
  * Drop every union view. Idempotent (`DROP VIEW IF EXISTS`), and tolerant
@@ -274,6 +286,15 @@ export async function createViews(db, ctx) {
274
286
  * in `detaching`.
275
287
  */
276
288
  export async function dropViews(db) {
289
+ // Dependents first: the quality views read the union views.
290
+ for (const name of qualityViewNames()) {
291
+ try {
292
+ await db.execute(`DROP VIEW IF EXISTS ${name};`);
293
+ }
294
+ catch {
295
+ // Best-effort, as below.
296
+ }
297
+ }
277
298
  for (const table of VIEWED_TABLES) {
278
299
  try {
279
300
  await db.execute(dropViewDdl(table));
@@ -1 +1 @@
1
- {"version":3,"file":"warehouse.js","sourceRoot":"","sources":["../../src/core/warehouse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAUH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEvE;;;;GAIG;AACH,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,GAAG,YAAY,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACjE,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,CAAA;IACzB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AA0BD;;;;GAIG;AACH,MAAM,WAAW,GAAG,KAAK,CAAA;AAEzB,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,OAAO,QAAQ,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAA;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAgB,EAChB,GAAkB,EAClB,IAAgB;IAEhB,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEpD,wBAAwB;IACxB,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,kCAAkC,GAAG,CAAC,QAAQ,EAAE,EAChD,KAAK,CACN,CAAA;IACH,CAAC;IAED,uBAAuB;IACvB,IAAI,KAAoB,CAAA;IACxB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACnC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,qBAAqB,EACrB,gCAAgC,GAAG,CAAC,QAAQ,EAAE,EAC9C,KAAK,CACN,CAAA;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,CACd,4BAA4B,UAAU,oDAAoD,EAC1F,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CACvD,CAAA;IACH,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,4BAA4B,UAAU,EAAE,EACxC,SAAS,CAAC,KAAK,CAAC,CACjB,CAAA;IACH,CAAC;IAED,yDAAyD;IACzD,yEAAyE;IACzE,4EAA4E;IAC5E,0EAA0E;IAC1E,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,CACd,WAAW,GAAG,QAAQ,UAAU,kBAAkB,CACnD,CAAA;IACH,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,qBAAqB,UAAU,EAAE,EACjC,SAAS,CAAC,KAAK,CAAC,CACjB,CAAA;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,eAAqC,CAAA;IACzC,IAAI,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,eAAe,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC;gBACjD,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,oCAAoC,GAAG,CAAC,QAAQ,EAAE,EAClD,KAAK,CACN,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,eAAe,EAAE,UAAU;QAC3B,YAAY,EAAE,GAAG;QACjB,cAAc,EAAE,KAAK,CAAC,SAAS;QAC/B,eAAe;KAChB,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAgB,EAChB,QAAgB;IAEhB,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAChD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,UAAU,GAAG,CAAC,CAAA;QACzC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,UAAU,GAAG,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,qBAAqB,UAAU,EAAE,EACjC,SAAS,CAAC,KAAK,CAAC,CACjB,CAAA;IACH,CAAC;AACH,CAAC;AAED,uDAAuD;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAgB,EAChB,IAAmB;IAEnB,oEAAoE;IACpE,qEAAqE;IACrE,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,sDAAsD,EACtD,SAAS,CAAC,KAAK,CAAC,CACjB,CAAA;IACH,CAAC;IAED,wEAAwE;IACxE,kEAAkE;IAClE,gDAAgD;IAChD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IAExE,OAAO;QACL,eAAe,EAAE,OAAO;QACxB,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,SAAS;QACzB,2EAA2E;QAC3E,eAAe,EAAE,SAAS;KAC3B,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,gBAAgB,CAAC,EAAgB;IAC9C,MAAM,QAAQ,GAA0C;QACtD,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC3B,gDAAgD,CACjD,CAAA;YACD,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAA;QAClC,CAAC;QACD,KAAK,IAAI,EAAE;YACT,+DAA+D;YAC/D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC3B,uBAAuB,CACxB,CAAA;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC,CAAA;YAClE,OAAO,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,aAAa,CAAA;QACxC,CAAC;KACF,CAAA;IAED,IAAI,SAAkB,CAAA;IACtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;YAC5B,IAAI,IAAI;gBACN,OAAO,IAAI,CAAA;QACf,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACb,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,KAAK,SAAS;QACzB,MAAM,SAAS,CAAA;IACjB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAgB;IACtD,IAAI,CAAC;QACH,OAAO,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,cAAc,EACd,4DAA4D,EAC5D,SAAS,CAAC,KAAK,CAAC,CACjB,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAiB,EACjB,SAAiB;IAEjB,oBAAoB;AACtB,CAAC;AAED,wEAAwE;AAExE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAgB,EAChB,GAKC;IAED,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QAC/C,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,iBAAiB,KAAK,SAAS,EAC/B,SAAS,CAAC,KAAK,CAAC,CACjB,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAAgB;IAC9C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;QACtC,CAAC;QACD,MAAM,CAAC;YACL,iEAAiE;YACjE,8DAA8D;QAChE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"warehouse.js","sourceRoot":"","sources":["../../src/core/warehouse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/rules/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,KAAK,EAAwB,IAAI,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAA;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAc3C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAiDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA2C5D;AAgBD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,qBAAqB,CAAA;AAEpD,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AAErD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAsDpD;AAuLD;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAA;AAE7C,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAE9D"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/rules/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,KAAK,EAAwB,IAAI,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAA;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAe3C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAiDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA2C5D;AAgBD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,qBAAqB,CAAA;AAEpD,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AAErD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAwDpD;AAuLD;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAA;AAE7C,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAE9D"}
@@ -34,6 +34,7 @@
34
34
  * `local.{table}` or `r2.default.{table}` (principle 19).
35
35
  */
36
36
  import { METRIC_METADATA } from '../core/metric_metadata';
37
+ import { readViewFor } from '../core/reading-quality';
37
38
  import { RuleValidationError, } from './schema';
38
39
  /** Sanitize an identifier for direct interpolation. */
39
40
  // PLACEHOLDER_RE carries `g` and is driven with `.exec`; the loop in
@@ -183,7 +184,9 @@ export function compileRule(rule) {
183
184
  const meta = METRIC_METADATA[rule.metric];
184
185
  const rawTable = meta.table;
185
186
  const column = sanitizeIdent(meta.column);
186
- const view = viewFor(rawTable);
187
+ // A rule is a claim, so it reads the vital's clean view (T-25 consume
188
+ // rule): a clamped, spiked or off-wrist reading can never fire an alert.
189
+ const view = readViewFor(sanitizeIdent(rawTable));
187
190
  if (rule.rawSql) {
188
191
  return compileRawSql(rule, rule.rawSql);
189
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/rules/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/rules/compiler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"baseline-compute.d.ts","sourceRoot":"","sources":["../../src/sync/baseline-compute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAwBlD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,eAAe,CAAA;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC7B,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,kBAAkB,GAC9B,MAAM,CA+KR;AA4CD,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,UAAU,EAAE,CACV,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,kBAAkB,EAC9B,GAAG,EAAE,sBAAsB,KACxB,OAAO,CAAC,OAAO,CAAC,CAAA;IACrB,6DAA6D;IAC7D,UAAU,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAC5E;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,qBAAqB,GAC5B,gBAAgB,CAoGlB"}
1
+ {"version":3,"file":"baseline-compute.d.ts","sourceRoot":"","sources":["../../src/sync/baseline-compute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAyBlD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,eAAe,CAAA;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC7B,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,kBAAkB,GAC9B,MAAM,CAiLR;AA4CD,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,UAAU,EAAE,CACV,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,kBAAkB,EAC9B,GAAG,EAAE,sBAAsB,KACxB,OAAO,CAAC,OAAO,CAAC,CAAA;IACrB,6DAA6D;IAC7D,UAAU,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAC5E;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,qBAAqB,GAC5B,gBAAgB,CAoGlB"}
@@ -23,6 +23,7 @@
23
23
  */
24
24
  import { AnalyticsError } from '../core/errors';
25
25
  import { BASELINE_MIN_DAYS, BASELINE_WINDOW_DAYS, baselineAggregateFor, getBaselineMetricIds, METRIC_METADATA, } from '../core/metric_metadata';
26
+ import { readViewFor } from '../core/reading-quality';
26
27
  /**
27
28
  * Build the day-first aggregate SQL for one (metric, window).
28
29
  *
@@ -34,7 +35,9 @@ export function buildBaselineSql(metric, _windowDays) {
34
35
  const meta = METRIC_METADATA[metric];
35
36
  const aggregate = baselineAggregateFor(metric);
36
37
  const column = meta.column;
37
- const view = `v_${meta.table}`;
38
+ // Baselines read clean readings only (T-25): a spike or an off-wrist
39
+ // temperature must not move "your usual".
40
+ const view = readViewFor(meta.table);
38
41
  // DuckDB cannot bind a parameter inside an INTERVAL literal, but it can
39
42
  // multiply a static unit interval by a bound integer. Same trick the
40
43
  // rules compiler uses — including, until now, the same defect.
@@ -1 +1 @@
1
- {"version":3,"file":"baseline-compute.js","sourceRoot":"","sources":["../../src/sync/baseline-compute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseline-compute.js","sourceRoot":"","sources":["../../src/sync/baseline-compute.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"flusher.d.ts","sourceRoot":"","sources":["../../src/sync/flusher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,SAAS,CAAA;AAKvD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,MAAM,MAAM,WAAW,GACjB,WAAW,GACX,KAAK,GACL,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,WAAW,CAAA;AAajB,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAQhD,CAAA;AAED,eAAO,MAAM,wBAAwB,IAAI,CAAA;AACzC,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAA;AAExD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,WAAW,CAAA;IACnB;;;;OAIG;IACH,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAC5B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,KACtD,IAAI,CAAA;AAYT,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,YAAY,CAAA;IACpB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IAC9C,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB;AAQD,qBAAa,YAAY;;gBAWX,MAAM,EAAE,kBAAkB;IAYtC;;;;;;;;;OASG;IACH,UAAU,CAAC,MAAM,GAAE,WAAsB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAWpE;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAmBpD,8DAA8D;IAC9D,YAAY,IAAI,MAAM,EAAE;IA0BxB,mEAAmE;IACnE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAIpC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIjD,mDAAmD;IACnD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC;;;OAGG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,WAAsB,EAC9B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC;IAsCvB;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQzF,yDAAyD;IACnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,2EAA2E;IAC3E,UAAU,IAAI,IAAI;IAIlB,6BAA6B;IAC7B,WAAW,IAAI,IAAI;CAoKpB"}
1
+ {"version":3,"file":"flusher.d.ts","sourceRoot":"","sources":["../../src/sync/flusher.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
36
36
  var _BatchFlusher_instances, _BatchFlusher_engine, _BatchFlusher_buffer, _BatchFlusher_columnOrder, _BatchFlusher_queue, _BatchFlusher_sleep, _BatchFlusher_now, _BatchFlusher_emit, _BatchFlusher_tables, _BatchFlusher_batches, _BatchFlusher_recordInBatch, _BatchFlusher_runWithRetry, _BatchFlusher_flushWithTimeout, _BatchFlusher_write, _BatchFlusher_appendInto, _BatchFlusher_restore, _BatchFlusher_ensureState;
37
37
  import { nanoid } from 'nanoid';
38
38
  import PQueue from 'p-queue';
39
- import { IDENTITY_COLUMNS } from '../core/schemas';
39
+ import { LOCAL_SCHEMAS } from '../core/schemas';
40
40
  import { SyncError } from './errors';
41
41
  // p-queue: HIGHER priority values run first. Foreground / manual sit at the
42
42
  // top; background sits at the floor.
@@ -60,6 +60,14 @@ export const BACKOFF_SEQUENCE_MS = [
60
60
  ];
61
61
  export const MAX_CONSECUTIVE_FAILURES = 5;
62
62
  export const FLUSH_TIMEOUT_MS = 30000;
63
+ /**
64
+ * Whether the local table carries a PRIMARY KEY — its own (`sleep_session`,
65
+ * `device_config`) or one injected from IDENTITY_COLUMNS. Keyed tables must
66
+ * go through the staging + ON CONFLICT path; see `#write`.
67
+ */
68
+ function isKeyed(table) {
69
+ return LOCAL_SCHEMAS[table]?.includes('PRIMARY KEY') ?? false;
70
+ }
63
71
  export class BatchFlusher {
64
72
  constructor(config) {
65
73
  _BatchFlusher_instances.add(this);
@@ -275,8 +283,14 @@ _BatchFlusher_engine = new WeakMap(), _BatchFlusher_buffer = new WeakMap(), _Bat
275
283
  * whole batch is duplicates. The cost is one extra pass, not the ~19x that
276
284
  * row-wise `INSERT ... VALUES` would have cost.
277
285
  *
278
- * Tables without a declared identity tuple (`tool_call_audit` is
279
- * append-only by design) keep the direct path.
286
+ * The test is "does the table declare ANY primary key", not "is it in
287
+ * IDENTITY_COLUMNS". `sleep_session` and `device_config` spell their own
288
+ * key in the base DDL and are deliberately absent from IDENTITY_COLUMNS,
289
+ * so an IDENTITY_COLUMNS test sent both down the Appender path: a re-synced
290
+ * night threw `Duplicate key` and jammed every later row behind it (found
291
+ * by the UX team's app-side patch; `flusher-self-keyed.test.ts`). Only
292
+ * keyless tables (`tool_call_audit` is append-only by design) take the
293
+ * direct path.
280
294
  *
281
295
  * Returns rows APPENDED, not rows inserted. The count feeds buffer
282
296
  * accounting and the batch record, both of which are about what was
@@ -287,7 +301,7 @@ async function _BatchFlusher_write(table, entries) {
287
301
  if (!cols) {
288
302
  throw new SyncError('flush_failed', `no columnOrder registered for table "${table}"`);
289
303
  }
290
- if (!(table in IDENTITY_COLUMNS))
304
+ if (!isKeyed(table))
291
305
  return __classPrivateFieldGet(this, _BatchFlusher_instances, "m", _BatchFlusher_appendInto).call(this, table, table, entries);
292
306
  const staging = `${table}__stg`;
293
307
  // Unconstrained mirror of the target: `WHERE false` copies the column
@@ -1 +1 @@
1
- {"version":3,"file":"flusher.js","sourceRoot":"","sources":["../../src/sync/flusher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flusher.js","sourceRoot":"","sources":["../../src/sync/flusher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;;;;;;;;AAOH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAUpC,4EAA4E;AAC5E,qCAAqC;AACrC,MAAM,kBAAkB,GAAgC;IACtD,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;IACf,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,CAAC;CAChB,CAAA;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,IAAK;IACL,IAAK;IACL,IAAK;IACL,IAAK;IACL,KAAM;IACN,KAAM;IACN,KAAM;CACP,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAA;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAM,CAAA;AAmFtC;;;;GAIG;AACH,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,aAAa,CAAC,KAAkB,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAA;AAC5E,CAAC;AAED,MAAM,OAAO,YAAY;IAWvB,YAAY,MAA0B;;QAV7B,uCAAqB;QACrB,uCAAqB;QACrB,4CAA+C;QAC/C,sCAAc;QACd,sCAAqC;QACrC,oCAAkB;QAClB,qCAA8B;QAC9B,+BAAU,IAAI,GAAG,EAA6B,EAAA;QAC9C,gCAAW,IAAI,GAAG,EAAuB,EAAA;QAGhD,uBAAA,IAAI,wBAAW,MAAM,CAAC,MAAM,MAAA,CAAA;QAC5B,uBAAA,IAAI,wBAAW,MAAM,CAAC,MAAM,MAAA,CAAA;QAC5B,uBAAA,IAAI,6BAAgB,MAAM,CAAC,WAAW,MAAA,CAAA;QACtC,uBAAA,IAAI,uBAAU,MAAM,CAAC,KAAK,IAAI,YAAY,MAAA,CAAA;QAC1C,uBAAA,IAAI,qBAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAA,CAAA;QAC5C,uBAAA,IAAI,sBAAS,MAAM,CAAC,IAAI,MAAA,CAAA;QACxB,uBAAA,IAAI,uBAAU,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,MAAA,CAAA;IACpE,CAAC;IAED,4EAA4E;IAE5E;;;;;;;;;OASG;IACH,UAAU,CAAC,SAAsB,QAAQ,EAAE,OAAgB;QACzD,MAAM,EAAE,GAAG,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;QAChC,uBAAA,IAAI,6BAAS,CAAC,GAAG,CAAC,EAAE,EAAE;YACpB,MAAM;YACN,MAAM,EAAE,IAAI,GAAG,EAAE;YACjB,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,SAAS,EAAE,EAAE;SACd,CAAC,CAAA;QACF,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAe;QACtB,MAAM,MAAM,GAAG,uBAAA,IAAI,6BAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACzC,uBAAA,IAAI,6BAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;YACrC,OAAO,IAAI,CAAA;QAEb,MAAM,OAAO,GAAuB;YAClC,OAAO;YACP,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,eAAe,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAA;QACD,uBAAA,IAAI,0BAAM,EAAE,KAAZ,IAAI,EAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAA;QACjD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,8DAA8D;IAC9D,YAAY;QACV,OAAO,CAAC,GAAG,uBAAA,IAAI,6BAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IAClC,CAAC;IAwBD,mEAAmE;IACnE,OAAO,CAAC,KAAa;QACnB,OAAO,uBAAA,IAAI,4BAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,MAAM,CAAA;IACjD,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,OAAO,uBAAA,IAAI,4BAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC3C,CAAC;IAED,mDAAmD;IACnD,cAAc,CAAC,KAAa;QAC1B,OAAO,uBAAA,IAAI,4BAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,IAAI,CAAC,CAAA;IACnD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CACT,KAAa,EACb,SAAsB,QAAQ,EAC9B,OAAgB;QAEhB,MAAM,KAAK,GAAG,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc,KAAK,CAAC,CAAA;QACtC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAA;QACxB,MAAM,OAAO,GAAG,MAAM,uBAAA,IAAI,4BAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;YACvD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QAC5C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,uBAAA,IAAI,oDAAO,MAAX,IAAI,EAAQ,KAAK,EAAE,OAAO,CAAC,CAAA;YACrD,KAAK,CAAC,YAAY,GAAG,CAAC,CAAA;YACtB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;YAC3B,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;YACpB,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAA;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAA;YACrC,uBAAA,IAAI,4DAAe,MAAnB,IAAI,EAAgB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;YAClF,uBAAA,IAAI,0BAAM,EAAE,KAAZ,IAAI,EAAS;gBACX,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;aAC1E,CAAC,CAAA;YACF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QACzC,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACb,oEAAoE;YACpE,MAAM,uBAAA,IAAI,sDAAS,MAAb,IAAI,EAAU,KAAK,EAAE,OAAO,CAAC,CAAA;YACnC,MAAM,GAAG,GAAG,KAAK,YAAY,SAAS;gBACpC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,SAAS,CAAC,cAAc,EAAE,oBAAoB,KAAK,EAAE,EAAE,KAAK,CAAC,CAAA;YACrE,KAAK,CAAC,YAAY,IAAI,CAAC,CAAA;YACvB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAA;YACrB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;YACrB,uBAAA,IAAI,0BAAM,EAAE,KAAZ,IAAI,EAAS,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;YACtE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;QACzD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,KAAa,EAAE,MAAmB,EAAE,OAAgB;QAChE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAC3C,OAAO,uBAAA,IAAI,2BAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,uBAAA,IAAI,2DAAc,MAAlB,IAAI,EAAe,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC;YACpF,qEAAqE;YACrE,mDAAmD;aAClD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAgB,CAAC,CAAA;IAChC,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,UAAU;QACd,MAAM,uBAAA,IAAI,2BAAO,CAAC,MAAM,EAAE,CAAA;IAC5B,CAAC;IAED,2EAA2E;IAC3E,UAAU;QACR,uBAAA,IAAI,2BAAO,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,6BAA6B;IAC7B,WAAW;QACT,uBAAA,IAAI,2BAAO,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;CAwKF;icAlRG,OAA2B,EAC3B,KAAa,EACb,WAAmB,EACnB,OAAiB,EACjB,KAAyB,EACzB,QAA4B;IAE5B,IAAI,OAAO,KAAK,SAAS;QACvB,OAAM;IACR,MAAM,MAAM,GAAG,uBAAA,IAAI,6BAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACzC,wEAAwE;IACxE,yEAAyE;IACzE,IAAI,CAAC,MAAM;QACT,OAAM;IACR,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACxB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAA;IACtE,KAAK,MAAM,EAAE,IAAI,OAAO;QAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAChD,MAAM,CAAC,KAAK,KAAZ,MAAM,CAAC,KAAK,GAAK,KAAK,EAAA;IACtB,MAAM,CAAC,QAAQ,KAAf,MAAM,CAAC,QAAQ,GAAK,QAAQ,EAAA;AAC9B,CAAC,+BAyFD,KAAK,qCACH,KAAa,EACb,MAAmB,EACnB,OAAgB;IAEhB,IAAI,UAAU,GAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IAClE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,uBAAA,IAAI,+DAAkB,MAAtB,IAAI,EAAmB,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACnE,UAAU,GAAG,MAAM,CAAA;QACnB,IAAI,MAAM,CAAC,EAAE;YACX,OAAO,MAAM,CAAA;QAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,QAAQ,IAAI,wBAAwB,EAAE,CAAC;YACzC,qEAAqE;YACrE,8CAA8C;YAC9C,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,uBAAA,IAAI,2BAAO,MAAX,IAAI,EAAQ,mBAAmB,CAAC,OAAO,CAAE,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,mCAED,KAAK,yCACH,KAAa,EACb,MAAmB,EACnB,OAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAClD,IAAI,SAAoD,CAAA;IACxD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE;QACnD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,SAAS,CACvB,cAAc,EACd,yBAAyB,gBAAgB,UAAU,KAAK,EAAE,CAC3D,CAAA;YACD,MAAM,KAAK,GAAG,uBAAA,IAAI,0DAAa,MAAjB,IAAI,EAAc,KAAK,CAAC,CAAA;YACtC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAA;YACvB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAA;YACrB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;YACrB,uBAAA,IAAI,0BAAM,EAAE,KAAZ,IAAI,EAAS,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;YACtE,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3D,CAAC,EAAE,gBAAgB,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IACF,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/C,CAAC;YACO,CAAC;QACP,IAAI,SAAS,KAAK,SAAS;YACzB,YAAY,CAAC,SAAS,CAAC,CAAA;IAC3B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,KAAK,8BAAQ,KAAa,EAAE,OAAsB;IAChD,MAAM,IAAI,GAAG,uBAAA,IAAI,iCAAa,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,SAAS,CACjB,cAAc,EACd,wCAAwC,KAAK,GAAG,CACjD,CAAA;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjB,OAAO,uBAAA,IAAI,yDAAY,MAAhB,IAAI,EAAa,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAEhD,MAAM,OAAO,GAAG,GAAG,KAAK,OAAO,CAAA;IAC/B,sEAAsE;IACtE,kEAAkE;IAClE,wBAAwB;IACxB,MAAM,uBAAA,IAAI,4BAAQ,CAAC,OAAO,CACxB,8BAA8B,OAAO,qBAAqB,KAAK,eAAe,CAC/E,CAAA;IACD,sEAAsE;IACtE,kEAAkE;IAClE,mEAAmE;IACnE,MAAM,uBAAA,IAAI,4BAAQ,CAAC,OAAO,CAAC,eAAe,OAAO,GAAG,CAAC,CAAA;IAErD,MAAM,YAAY,GAAG,uBAAA,IAAI,yDAAY,MAAhB,IAAI,EAAa,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,uBAAA,IAAI,4BAAQ,CAAC,OAAO,CACxB,eAAe,KAAK,KAAK,UAAU,IAAI;UACrC,UAAU,UAAU,SAAS,OAAO,0BAA0B,CACjE,CAAA;IACD,MAAM,uBAAA,IAAI,4BAAQ,CAAC,OAAO,CAAC,eAAe,OAAO,GAAG,CAAC,CAAA;IACrD,OAAO,YAAY,CAAA;AACrB,CAAC,+DAGW,MAAc,EAAE,WAAmB,EAAE,OAAsB;IACrE,MAAM,IAAI,GAAG,uBAAA,IAAI,iCAAa,CAAC,WAAW,CAAE,CAAA;IAC5C,MAAM,QAAQ,GAAG,uBAAA,IAAI,4BAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;gBACjD,WAAW,IAAI,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,KAAK,EAAE,CAAA;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;YACO,CAAC;QACP,IAAI,CAAC;YACH,QAAQ,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;QACD,MAAM,CAAC;YACL,iEAAiE;QACnE,CAAC;IACH,CAAC;AACH,CAAC,0BAED,KAAK,gCAAU,KAAa,EAAE,OAAsB;IAClD,yEAAyE;IACzE,6DAA6D;IAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,uBAAA,IAAI,4BAAQ,CAAC,IAAI,CAAC;YACtB,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,iEAEY,KAAa;IACxB,IAAI,KAAK,GAAG,uBAAA,IAAI,4BAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;QAC1C,uBAAA,IAAI,4BAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAGH,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,OAAsB;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM;YACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
@@ -33,9 +33,9 @@ export declare function parseTimestamp(fwStr: string): Date;
33
33
  * `[D 18:00, D+1 18:00)`
34
34
  * are attributed to `night_of = D`.
35
35
  *
36
- * Returned as a UTC `Date` at midnight of `D` in the user's timezone. This
37
- * matches the `DATE` column shape in `sleep_session.night_of` and lets
38
- * `date_trunc`/`GROUP BY` queries stay timezone-honest.
36
+ * Returned as a `Date` at UTC midnight of `D` a calendar date, not an
37
+ * instant. That is what the `DATE` column in `sleep_session.night_of` stores,
38
+ * in every zone.
39
39
  *
40
40
  * DST handling:
41
41
  * - Spring-forward gap (02:00 becomes 03:00): a reading in the vanished hour
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAaH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAqBlD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAmCzD"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAaH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAqBlD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAqCzD"}
@@ -17,7 +17,7 @@
17
17
  * timestamp contract and `design.md` §sync/mapper/firmware.ts for the module
18
18
  * shape.
19
19
  */
20
- import { formatInTimeZone, fromZonedTime } from 'date-fns-tz';
20
+ import { formatInTimeZone } from 'date-fns-tz';
21
21
  /**
22
22
  * Match `"YYYY.MM.DD HH:MM:SS"` exactly. Firmware writes UTC into this shape.
23
23
  *
@@ -56,9 +56,9 @@ export function parseTimestamp(fwStr) {
56
56
  * `[D 18:00, D+1 18:00)`
57
57
  * are attributed to `night_of = D`.
58
58
  *
59
- * Returned as a UTC `Date` at midnight of `D` in the user's timezone. This
60
- * matches the `DATE` column shape in `sleep_session.night_of` and lets
61
- * `date_trunc`/`GROUP BY` queries stay timezone-honest.
59
+ * Returned as a `Date` at UTC midnight of `D` a calendar date, not an
60
+ * instant. That is what the `DATE` column in `sleep_session.night_of` stores,
61
+ * in every zone.
62
62
  *
63
63
  * DST handling:
64
64
  * - Spring-forward gap (02:00 becomes 03:00): a reading in the vanished hour
@@ -94,12 +94,15 @@ export function computeNightOf(ts, tz) {
94
94
  nightM = rolled.getUTCMonth() + 1;
95
95
  nightD = rolled.getUTCDate();
96
96
  }
97
- // Build the local-midnight ISO string for the night's day, then convert to
98
- // the equivalent UTC instant via `fromZonedTime`.
99
- const isoLocalMidnight = `${nightY.toString().padStart(4, '0')}-${nightM
100
- .toString()
101
- .padStart(2, '0')}-${nightD.toString().padStart(2, '0')}T00:00:00.000`;
102
- return fromZonedTime(isoLocalMidnight, tz);
97
+ // UTC midnight of the night's calendar date. A DATE has no zone, and every
98
+ // writer (the Appender, `toISOString().slice(0, 10)`) reads a JS Date's UTC
99
+ // fields so UTC midnight is the only instant whose date IS the night.
100
+ //
101
+ // This used to return LOCAL midnight as an instant (`fromZonedTime`). West
102
+ // of UTC that instant still falls on the same UTC date, so PDT looked fine;
103
+ // east of UTC it falls on the previous one, and every IST night was stored
104
+ // a day early (`flusher-self-keyed.test.ts`, "night_of survives the write").
105
+ return new Date(Date.UTC(nightY, nightM - 1, nightD));
103
106
  }
104
107
  function pad(n) {
105
108
  return n.length === 1 ? `0${n}` : n;
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/sync/mapper/time.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/sync/mapper/time.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sleep-derive.d.ts","sourceRoot":"","sources":["../../src/sync/sleep-derive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAiBlD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB,8DAA8D;IAC9D,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,OAAO,EAAE,CAAC,KAAK,EAAE;QACf,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAC7C,KAAK,IAAI,CAAA;IACV,uDAAuD;IACvD,YAAY,EAAE,MAAM,MAAM,CAAA;IAC1B,qFAAqF;IACrF,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE;AA8CD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAuHvE"}
1
+ {"version":3,"file":"sleep-derive.d.ts","sourceRoot":"","sources":["../../src/sync/sleep-derive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAiBlD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB,8DAA8D;IAC9D,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,OAAO,EAAE,CAAC,KAAK,EAAE;QACf,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAC7C,KAAK,IAAI,CAAA;IACV,uDAAuD;IACvD,YAAY,EAAE,MAAM,MAAM,CAAA;IAC1B,qFAAqF;IACrF,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE;AA+CD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAiKvE"}
@@ -26,6 +26,7 @@ import { computeNightOf } from './mapper/time';
26
26
  import { correctSleepNights, nightsForEpochs } from './sleep-correction/orchestrate';
27
27
  import { stagingViewsSql } from './sleep-correction/staging';
28
28
  const SIX_HOURS = 6 * 3600;
29
+ const QUOTE_RE = /'/g;
29
30
  function epochOf(ts) {
30
31
  if (ts instanceof Date)
31
32
  return Math.floor(ts.getTime() / 1000);
@@ -80,6 +81,38 @@ export function createSleepDeriver(deps) {
80
81
  await deps.engine.execute(DELETE_STAGES_SQL(catalog), params);
81
82
  await deps.engine.execute(DELETE_SESSIONS_SQL(catalog), params);
82
83
  }
84
+ /**
85
+ * Re-key stored `night_of` to what `computeNightOf` says today.
86
+ *
87
+ * Rows written before 0.25.1 carry the old value — a day early east of UTC
88
+ * — and nights outside this sync's range are never re-derived, so without
89
+ * this they would stay wrong, and a replace keyed on the corrected night
90
+ * would miss them. Idempotent: once keys agree it only reads. Computed in
91
+ * JS through the one `computeNightOf`, not in SQL, so it needs no ICU.
92
+ */
93
+ async function rekeyNights(ctx) {
94
+ const rows = await deps.engine.execute(`SELECT session_id, CAST(epoch(ts_start) AS BIGINT) AS e, CAST(night_of AS VARCHAR) AS night
95
+ FROM ${catalog}.main.sleep_session
96
+ WHERE brand = $brand AND family_id = $family_id AND user_id = $user_id AND device_id = $device_id`, { brand: ctx.brand, family_id: ctx.familyId, user_id: ctx.userId, device_id: ctx.deviceId });
97
+ for (const r of rows) {
98
+ const want = computeNightOf(new Date(Number(r.e) * 1000), ctx.userTimezone).toISOString().slice(0, 10);
99
+ if (want === r.night)
100
+ continue;
101
+ await deps.engine.execute(`UPDATE ${catalog}.main.sleep_session SET night_of = CAST($night AS DATE) WHERE session_id = $id`, { night: want, id: r.session_id });
102
+ }
103
+ }
104
+ /**
105
+ * Drop any stored session sharing an id with a row about to be written.
106
+ * Keyed flushes are ON CONFLICT DO NOTHING, so a stale row with the same id
107
+ * would otherwise silently win over the corrected one.
108
+ */
109
+ async function deleteByIds(ids) {
110
+ if (ids.length === 0)
111
+ return;
112
+ const list = ids.map(id => `'${id.replace(QUOTE_RE, '\'\'')}'`).join(', ');
113
+ await deps.engine.execute(`DELETE FROM ${catalog}.main.sleep_stage WHERE session_id IN (${list})`);
114
+ await deps.engine.execute(`DELETE FROM ${catalog}.main.sleep_session WHERE session_id IN (${list})`);
115
+ }
83
116
  async function deriveRange(p) {
84
117
  const timeZone = await deps.resolveTimezone(p.userId);
85
118
  const ctx = {
@@ -89,6 +122,7 @@ export function createSleepDeriver(deps) {
89
122
  deviceId: p.deviceId,
90
123
  userTimezone: timeZone,
91
124
  };
125
+ await rekeyNights(ctx);
92
126
  for (const sql of stagingViewsSql({ ...ctx, localCatalog: catalog }))
93
127
  await deps.engine.execute(sql);
94
128
  const result = await correctSleepNights(deps.engine, {
@@ -117,6 +151,7 @@ export function createSleepDeriver(deps) {
117
151
  ]);
118
152
  for (const night of nights)
119
153
  await replaceNight(ctx, night);
154
+ await deleteByIds(out.sleep_session.map(s => s.session_id));
120
155
  sessions.push(...out.sleep_session);
121
156
  stages.push(...out.sleep_stage);
122
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sleep-derive.js","sourceRoot":"","sources":["../../src/sync/sleep-derive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sleep-derive.js","sourceRoot":"","sources":["../../src/sync/sleep-derive.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export const detectAnomalyInputSchema = z.object({
9
9
  const METRIC_SPECS = {
10
10
  hrv_ms: {
11
11
  sql: lookbackDays => `SELECT date_trunc('day', ts)::VARCHAR AS day, AVG(hrv_ms)::DOUBLE AS value
12
- FROM v_hrv
12
+ FROM v_hrv_clean
13
13
  WHERE user_id = $userId AND brand = $brand AND family_id = $familyId
14
14
  AND hrv_ms IS NOT NULL
15
15
  AND ts >= now() - INTERVAL (${lookbackDays}) DAY
@@ -9,7 +9,7 @@ export const compareTrendInputSchema = z.object({
9
9
  const METRIC_SPECS = {
10
10
  hrv_ms: {
11
11
  sql: (windowDays, offsetDays) => `SELECT AVG(hrv_ms)::DOUBLE AS value
12
- FROM v_hrv
12
+ FROM v_hrv_clean
13
13
  WHERE user_id = $userId AND brand = $brand AND family_id = $familyId
14
14
  AND hrv_ms IS NOT NULL
15
15
  AND ts >= now() - INTERVAL (${windowDays + offsetDays}) DAY
@@ -6,7 +6,7 @@ export const getHRVInputSchema = z.object({
6
6
  });
7
7
  export const getHRV = async (input, ctx) => {
8
8
  const rows = await ctx.analytics.execute(`SELECT date_trunc('day', ts)::VARCHAR AS day, AVG(hrv_ms)::DOUBLE AS avg_hrv
9
- FROM v_hrv
9
+ FROM v_hrv_clean
10
10
  WHERE user_id = $userId AND brand = $brand AND family_id = $familyId
11
11
  AND ts >= now() - INTERVAL (CAST($days AS BIGINT)) DAY
12
12
  AND hrv_ms IS NOT NULL
@@ -39,7 +39,7 @@ export const getSpO2 = async (input, ctx) => {
39
39
  AVG(m.spo2)::DOUBLE AS avg_spo2,
40
40
  MIN(m.spo2)::DOUBLE AS min_spo2,
41
41
  COUNT(*) FILTER (WHERE m.spo2 < ${LOW_MOMENT_THRESHOLD})::INTEGER AS low_moment_count
42
- FROM v_spo2 m
42
+ FROM v_spo2_clean m
43
43
  INNER JOIN v_sleep_session s
44
44
  ON s.user_id = m.user_id
45
45
  AND s.brand = m.brand
@@ -25,7 +25,7 @@ export const getTemperature = async (input, ctx) => {
25
25
  AVG(temp_c)::DOUBLE AS avg_temp,
26
26
  MAX(temp_c)::DOUBLE AS hi_temp,
27
27
  MIN(temp_c)::DOUBLE AS lo_temp
28
- FROM v_temperature
28
+ FROM v_temperature_clean
29
29
  WHERE user_id = $userId AND brand = $brand AND family_id = $familyId
30
30
  AND ts >= now() - INTERVAL (CAST($days AS BIGINT)) DAY
31
31
  AND temp_c IS NOT NULL
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mongrov/analytics",
3
- "version": "0.24.0",
3
+ "version": "0.25.1",
4
4
  "sideEffects": false,
5
5
  "description": "DuckDB + R2 Iceberg local analytics for @mongrov apps",
6
6
  "license": "MIT",
@@ -108,7 +108,7 @@
108
108
  "vitest": "^2.1.9",
109
109
  "zod": "^3.23.8",
110
110
  "@mongrov/db": "0.3.0",
111
- "@mongrov/types": "0.10.0"
111
+ "@mongrov/types": "0.11.0"
112
112
  },
113
113
  "scripts": {
114
114
  "build": "tsc -p tsconfig.build.json",