@mongrov/analytics 0.15.0 → 0.18.0

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.
@@ -27,7 +27,27 @@ export type MetricSamplingMinutes = number | 'per_session';
27
27
  * readings lets a single intra-day dip set p10 for the whole window, which
28
28
  * is exactly the bug day-first compute exists to prevent.
29
29
  */
30
- export type BaselineDailyAggregate = 'avg' | 'sum' | 'session';
30
+ export type BaselineDailyAggregate = 'avg' | 'sum' | 'session'
31
+ /**
32
+ * D-G: minimum reading inside the night's sleep session(s), attributed to
33
+ * the local day the sleep ENDED in. The daily value is a minimum; the
34
+ * baseline's p10/p50/p90 are then the standard quantiles ACROSS those
35
+ * nightly minima.
36
+ *
37
+ * "Usual resting" is p50 of per-night minima — never a minimum across
38
+ * nights, which would be the best night in 30 rather than a typical one.
39
+ */
40
+ | 'nightly_min'
41
+ /**
42
+ * Mean of readings taken while still — no activity within ±15 min. This is
43
+ * the input for the cross-vital factor "a higher resting heart rate" on the
44
+ * Temperature and HRV screens, which asks a DAYTIME question ("was your
45
+ * rate higher than usual while you were still today"), not a nightly one.
46
+ *
47
+ * Distinct from `nightly_min` and deliberately named apart: `resting_hr`
48
+ * and `resting_gated_avg` are two metrics that must never be confused.
49
+ */
50
+ | 'resting_avg';
31
51
  export interface MetricMetadataEntry {
32
52
  table: TableName;
33
53
  column: string;
@@ -112,6 +132,32 @@ export declare const METRIC_METADATA: Readonly<{
112
132
  readonly baselineDailyAggregate: "avg";
113
133
  readonly precision: 1;
114
134
  };
135
+ /**
136
+ * D-G. Two HR-derived metrics, not one, and the names carry the difference:
137
+ *
138
+ * resting_hr nightly LOW — what a doctor, a previous wearable and
139
+ * the creative all mean by "resting heart rate"
140
+ * resting_gated_avg still-time MEAN — the daytime input for the
141
+ * cross-vital factor "a higher resting heart rate"
142
+ *
143
+ * `hr_bpm` (all readings) is untouched; Vitality consumes it.
144
+ */
145
+ readonly resting_hr: {
146
+ readonly table: "heart_rate";
147
+ readonly column: "bpm";
148
+ readonly sampling_minutes: 10;
149
+ readonly exposure: "full";
150
+ readonly baselineDailyAggregate: "nightly_min";
151
+ readonly precision: 1;
152
+ };
153
+ readonly resting_gated_avg: {
154
+ readonly table: "heart_rate";
155
+ readonly column: "bpm";
156
+ readonly sampling_minutes: 10;
157
+ readonly exposure: "full";
158
+ readonly baselineDailyAggregate: "resting_avg";
159
+ readonly precision: 1;
160
+ };
115
161
  readonly spo2: {
116
162
  readonly table: "spo2";
117
163
  readonly column: "spo2";
@@ -1 +1 @@
1
- {"version":3,"file":"metric_metadata.d.ts","sourceRoot":"","sources":["../../src/core/metric_metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,aAAa,CAAA;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;AAE9D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,gBAAgB,EAAE,qBAAqB,CAAA;IACvC,QAAQ,EAAE,cAAc,CAAA;IACxB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeuC,CAAA;AAEnE,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,eAAe,CAAA;AAEnD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,EAAE,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,QAAQ,EAAE,CAIjD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,GACX,sBAAsB,GAAG,SAAS,CAGpC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAG7D;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAG7D;AAED,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,sBAAuB,CAAA;AACxD,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAA"}
1
+ {"version":3,"file":"metric_metadata.d.ts","sourceRoot":"","sources":["../../src/core/metric_metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,aAAa,CAAA;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAC5B,KAAK,GACL,KAAK,GACL,SAAS;AACb;;;;;;;;GAQG;GACC,aAAa;AACjB;;;;;;;;GAQG;GACC,aAAa,CAAA;AAEnB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,gBAAgB,EAAE,qBAAqB,CAAA;IACvC,QAAQ,EAAE,cAAc,CAAA;IACxB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAO1B;;;;;;;;;OASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW8D,CAAA;AAEnE,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,eAAe,CAAA;AAEnD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,EAAE,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,QAAQ,EAAE,CAIjD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,GACX,sBAAsB,GAAG,SAAS,CAGpC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAG7D;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAG7D;AAED,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,sBAAuB,CAAA;AACxD,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAA"}
@@ -20,6 +20,18 @@ export const METRIC_METADATA = Object.freeze({
20
20
  diastolic_bp: { table: 'hrv', column: 'diastolic_bp', sampling_minutes: 60, exposure: 'collected_only' },
21
21
  vascular_aging: { table: 'hrv', column: 'vascular_aging', sampling_minutes: 60, exposure: 'collected_only' },
22
22
  hr_bpm: { table: 'heart_rate', column: 'bpm', sampling_minutes: 10, exposure: 'full', baselineDailyAggregate: 'avg', precision: 1 },
23
+ /**
24
+ * D-G. Two HR-derived metrics, not one, and the names carry the difference:
25
+ *
26
+ * resting_hr nightly LOW — what a doctor, a previous wearable and
27
+ * the creative all mean by "resting heart rate"
28
+ * resting_gated_avg still-time MEAN — the daytime input for the
29
+ * cross-vital factor "a higher resting heart rate"
30
+ *
31
+ * `hr_bpm` (all readings) is untouched; Vitality consumes it.
32
+ */
33
+ resting_hr: { table: 'heart_rate', column: 'bpm', sampling_minutes: 10, exposure: 'full', baselineDailyAggregate: 'nightly_min', precision: 1 },
34
+ resting_gated_avg: { table: 'heart_rate', column: 'bpm', sampling_minutes: 10, exposure: 'full', baselineDailyAggregate: 'resting_avg', precision: 1 },
23
35
  spo2: { table: 'spo2', column: 'spo2', sampling_minutes: 30, exposure: 'full', baselineDailyAggregate: 'avg', precision: 1 },
24
36
  temp_c: { table: 'temperature', column: 'temp_c', sampling_minutes: 30, exposure: 'full', baselineDailyAggregate: 'avg', precision: 1 },
25
37
  activity_steps: { table: 'activity', column: 'steps', sampling_minutes: 1, exposure: 'full', baselineDailyAggregate: 'sum' },
@@ -1 +1 @@
1
- {"version":3,"file":"metric_metadata.js","sourceRoot":"","sources":["../../src/core/metric_metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metric_metadata.js","sourceRoot":"","sources":["../../src/core/metric_metadata.ts"],"names":[],"mappings":"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"}
@@ -71,4 +71,57 @@ export declare const BASELINE_OFFSET_PARAM = "baselineOffset";
71
71
  export declare function localDayExpr(tsColumn: string): string;
72
72
  /** Compile a validated rule to a `CompiledRule`. */
73
73
  export declare function compileRule(rule: Rule): CompiledRule;
74
+ /**
75
+ * T-18 — `consecutive: n` via gaps-and-islands.
76
+ *
77
+ * A run of adjacent breaching samples is identified by the classic
78
+ * difference of two row numbers: one over all samples in time order, one
79
+ * partitioned by the breach flag. Within a maximal run of same-flag rows
80
+ * that difference is constant, so it serves as a group key.
81
+ *
82
+ * The rule fires when ANY breaching run reaches length `n`. `observed_value`
83
+ * is the run's extreme in the direction of the comparison — the worst
84
+ * reading in the run, which is what a user-facing card should quote.
85
+ *
86
+ * Only supported for the threshold-style targets. Baseline targets would
87
+ * need the baseline resolved per-sample rather than per-window, which is a
88
+ * different query shape and has no consumer in v0.2.0 — the validator
89
+ * rejects the combination rather than silently emitting something subtly
90
+ * wrong.
91
+ */
92
+ /**
93
+ * `cadence: 'day'` — collapse to one value per LOCAL day, then count runs of
94
+ * days (sprint6 T-04).
95
+ *
96
+ * Not a variant of `buildConsecutive`. That builder rejects baseline targets
97
+ * because a per-sample comparison has no stable threshold; here the threshold
98
+ * IS stable for the whole window (a stored `user_baseline` row), and the
99
+ * things being compared are daily aggregates. Different shape, different
100
+ * builder.
101
+ *
102
+ * Three things the SQL has to get right, each of which has already been a bug
103
+ * somewhere in this codebase:
104
+ *
105
+ * 1. **Direction of the zone conversion.** `ts` is naive UTC, and DuckDB
106
+ * picks the `timezone()` overload from its SECOND argument — so
107
+ * `timezone($tz, ts)` LABELS the value rather than converting it, which
108
+ * attributed evening readings to the next local day (zivaone_app#73).
109
+ * The inner `timezone('UTC', ts)` is what makes it a conversion.
110
+ * 2. **The partial current day is excluded.** Today is still accumulating;
111
+ * including it lets a quiet morning break a run that the full day would
112
+ * have continued, so a 3-day rule would fire or not depending on the
113
+ * hour it happened to run.
114
+ * 3. **Every parameter is CAST**, for the react-native-duckdb prepare path
115
+ * (zivaone_app#70/#72).
116
+ */
117
+ /**
118
+ * Min readings before a day counts, as a fraction of the day's slots.
119
+ *
120
+ * 25% of `1440 / sampling_minutes`: SpO2 and temp 12 (48 slots), HRV and
121
+ * stress 6 (24), HR 36 (144). Derived rather than tabulated, so a next-gen
122
+ * cadence moves every floor at once instead of leaving five constants to
123
+ * chase.
124
+ */
125
+ export declare const MIN_DAY_READINGS_FRACTION = 0.25;
126
+ export declare function minDayReadings(samplingMinutes: number): number;
74
127
  //# sourceMappingURL=compiler.d.ts.map
@@ -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;AA6CD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAsB5D;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"}
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;AA6CD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAsB5D;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;AAiKD;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAA;AAE7C,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAE9D"}
@@ -366,6 +366,18 @@ HAVING ${compareClause(compare, 'observed_value', 'threshold_value')};`;
366
366
  * 3. **Every parameter is CAST**, for the react-native-duckdb prepare path
367
367
  * (zivaone_app#70/#72).
368
368
  */
369
+ /**
370
+ * Min readings before a day counts, as a fraction of the day's slots.
371
+ *
372
+ * 25% of `1440 / sampling_minutes`: SpO2 and temp 12 (48 slots), HRV and
373
+ * stress 6 (24), HR 36 (144). Derived rather than tabulated, so a next-gen
374
+ * cadence moves every floor at once instead of leaving five constants to
375
+ * chase.
376
+ */
377
+ export const MIN_DAY_READINGS_FRACTION = 0.25;
378
+ export function minDayReadings(samplingMinutes) {
379
+ return Math.round((1440 / samplingMinutes) * MIN_DAY_READINGS_FRACTION);
380
+ }
369
381
  function buildDayCadence(args) {
370
382
  const { view, join, ts, interval, target, consecutive, metricId, agg } = args;
371
383
  if (target.type !== 'baseline_offset' && target.type !== 'absolute'
@@ -378,6 +390,14 @@ function buildDayCadence(args) {
378
390
  // agree about what a day's value is, not merely about where it starts.
379
391
  const dailyAgg = agg;
380
392
  const localDay = localDayExpr(`m.${ts}`);
393
+ // Same floor the screen uses, from the same derivation — see minDayReadings.
394
+ const dayMeta = METRIC_METADATA[metricId];
395
+ const daySampling = dayMeta?.sampling_minutes;
396
+ if (typeof daySampling !== 'number') {
397
+ throw new RuleValidationError(`Rule on ${metricId}: cadence 'day' needs a numeric sampling_minutes to `
398
+ + `derive its min-data floor; got '${String(daySampling)}'.`);
399
+ }
400
+ const dayFloor = minDayReadings(daySampling);
381
401
  let thresholdExpr;
382
402
  let baselineCte = '';
383
403
  if (target.type === 'absolute') {
@@ -418,7 +438,14 @@ function buildDayCadence(args) {
418
438
  GROUP BY day
419
439
  -- Exclude today: it is still accumulating, and a half-finished day would
420
440
  -- make the same rule fire or not depending on the hour it ran.
441
+ --
442
+ -- And exclude a day below the min-data floor. A rule firing on a day the
443
+ -- SCREEN renders as missing is a contradiction the user can see — a
444
+ -- notification about a day the app says it has no data for. A thin day is
445
+ -- neither above nor below: it is ABSENT, which the calendar-keyed islands
446
+ -- below then treat as breaking the run, exactly like an unworn day.
421
447
  HAVING day < date_trunc('day', timezone(CAST($tz AS VARCHAR), NOW()))
448
+ AND COUNT(*) >= ${dayFloor}
422
449
  ),
423
450
  marked AS (
424
451
  SELECT day, value,
@@ -457,7 +484,17 @@ LIMIT 1;`;
457
484
  return { sql, params: { ...params, consecutive: consecutive ?? 2 } };
458
485
  }
459
486
  function buildConsecutive(args) {
460
- const { view, join, ts, interval, column, target, compare, consecutive } = args;
487
+ const { view, join, ts, interval, column, target, compare, consecutive, metricId } = args;
488
+ // Cadence in minutes, for slot adjacency below. `sampling_minutes` is the
489
+ // metric's nominal grid; `per_session` metrics have no reading cadence and
490
+ // never reach a reading-cadence rule.
491
+ const meta = METRIC_METADATA[metricId];
492
+ const sampling = meta?.sampling_minutes;
493
+ if (typeof sampling !== 'number') {
494
+ throw new RuleValidationError(`Rule on ${metricId}: reading-cadence 'consecutive' needs a numeric `
495
+ + `sampling_minutes to define slot adjacency; got '${String(sampling)}'.`);
496
+ }
497
+ const cadenceMinutes = sampling;
461
498
  const where = whereClause(ts, interval);
462
499
  const from = `FROM ${view} m${join}`;
463
500
  let thresholdExpr;
@@ -493,8 +530,25 @@ function buildConsecutive(args) {
493
530
  ),
494
531
  runs AS (
495
532
  SELECT ts, value, breached, threshold_value,
496
- ROW_NUMBER() OVER (ORDER BY ts)
497
- - ROW_NUMBER() OVER (PARTITION BY breached ORDER BY ts) AS run_key
533
+ -- Islands keyed on the CADENCE SLOT, not on row position.
534
+ --
535
+ -- This was a difference of ROW_NUMBERs over the rows present, so a
536
+ -- missed reading produced no row and its neighbours became adjacent.
537
+ -- Measured: breaching readings at 01:00, 02:00 and 05:00 fired a
538
+ -- consecutive:3 rule exactly as three adjacent readings did. SpO2's
539
+ -- Rule B has run on that since Sprint 5.
540
+ --
541
+ -- Consecutive means adjacent on the metric's cadence grid with no
542
+ -- missing slot between — stated in cadence, not clock time. The slot
543
+ -- index comes from the reading's own timestamp, so insertion order
544
+ -- and batch arrival are irrelevant: readings landing together in one
545
+ -- sync batch still key on when they were TAKEN.
546
+ --
547
+ -- epoch() is absolute, so a DST boundary inside a run does not shift
548
+ -- slot adjacency — that case holds by construction, not by a special
549
+ -- case.
550
+ CAST(epoch(ts) / 60 / ${cadenceMinutes} AS BIGINT)
551
+ - ROW_NUMBER() OVER (ORDER BY ts) AS run_key
498
552
  FROM samples
499
553
  )
500
554
  SELECT ${extreme}(value) AS observed_value,
@@ -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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"}
@@ -147,7 +147,7 @@ export declare const RuleSchema: z.ZodObject<{
147
147
  brand: z.ZodOptional<z.ZodString>;
148
148
  name: z.ZodString;
149
149
  description: z.ZodOptional<z.ZodString>;
150
- metric: z.ZodEnum<["spo2" | "device_battery" | "hrv_ms" | "stress" | "systolic_bp" | "diastolic_bp" | "vascular_aging" | "hr_bpm" | "temp_c" | "activity_steps" | "calories" | "distance_km" | "sleep_total_minutes" | "sleep_score", ...("spo2" | "device_battery" | "hrv_ms" | "stress" | "systolic_bp" | "diastolic_bp" | "vascular_aging" | "hr_bpm" | "temp_c" | "activity_steps" | "calories" | "distance_km" | "sleep_total_minutes" | "sleep_score")[]]>;
150
+ metric: z.ZodEnum<["spo2" | "device_battery" | "hrv_ms" | "stress" | "systolic_bp" | "diastolic_bp" | "vascular_aging" | "hr_bpm" | "resting_hr" | "resting_gated_avg" | "temp_c" | "activity_steps" | "calories" | "distance_km" | "sleep_total_minutes" | "sleep_score", ...("spo2" | "device_battery" | "hrv_ms" | "stress" | "systolic_bp" | "diastolic_bp" | "vascular_aging" | "hr_bpm" | "resting_hr" | "resting_gated_avg" | "temp_c" | "activity_steps" | "calories" | "distance_km" | "sleep_total_minutes" | "sleep_score")[]]>;
151
151
  window: z.ZodEnum<["1h", "6h", "24h", "3d", "7d", "30d"]>;
152
152
  aggregation: z.ZodDefault<z.ZodEnum<["avg", "min", "max", "sum", "last", "count"]>>;
153
153
  compare: z.ZodEnum<["less_than", "greater_than", "equals", "not_equals", "between"]>;
@@ -306,7 +306,7 @@ export declare const RuleSchema: z.ZodObject<{
306
306
  };
307
307
  context: "any" | "asleep" | "resting";
308
308
  name: string;
309
- metric: "spo2" | "device_battery" | "hrv_ms" | "stress" | "systolic_bp" | "diastolic_bp" | "vascular_aging" | "hr_bpm" | "temp_c" | "activity_steps" | "calories" | "distance_km" | "sleep_total_minutes" | "sleep_score";
309
+ metric: "spo2" | "device_battery" | "hrv_ms" | "stress" | "systolic_bp" | "diastolic_bp" | "vascular_aging" | "hr_bpm" | "resting_hr" | "resting_gated_avg" | "temp_c" | "activity_steps" | "calories" | "distance_km" | "sleep_total_minutes" | "sleep_score";
310
310
  compare: "less_than" | "greater_than" | "equals" | "not_equals" | "between";
311
311
  window: "1h" | "6h" | "24h" | "3d" | "7d" | "30d";
312
312
  aggregation: "avg" | "sum" | "min" | "max" | "last" | "count";
@@ -354,7 +354,7 @@ export declare const RuleSchema: z.ZodObject<{
354
354
  offsetKey?: string | undefined;
355
355
  };
356
356
  name: string;
357
- metric: "spo2" | "device_battery" | "hrv_ms" | "stress" | "systolic_bp" | "diastolic_bp" | "vascular_aging" | "hr_bpm" | "temp_c" | "activity_steps" | "calories" | "distance_km" | "sleep_total_minutes" | "sleep_score";
357
+ metric: "spo2" | "device_battery" | "hrv_ms" | "stress" | "systolic_bp" | "diastolic_bp" | "vascular_aging" | "hr_bpm" | "resting_hr" | "resting_gated_avg" | "temp_c" | "activity_steps" | "calories" | "distance_km" | "sleep_total_minutes" | "sleep_score";
358
358
  compare: "less_than" | "greater_than" | "equals" | "not_equals" | "between";
359
359
  window: "1h" | "6h" | "24h" | "3d" | "7d" | "30d";
360
360
  severity: "info" | "warn" | "critical";
@@ -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;AAuBlD,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,CAkFR;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;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"}
@@ -21,6 +21,7 @@
21
21
  * sampling is 720 readings but still only 15 days of evidence, and must not
22
22
  * populate a baseline.
23
23
  */
24
+ import { AnalyticsError } from '../core/errors';
24
25
  import { BASELINE_MIN_DAYS, BASELINE_WINDOW_DAYS, baselineAggregateFor, getBaselineMetricIds, METRIC_METADATA, } from '../core/metric_metadata';
25
26
  /**
26
27
  * Build the day-first aggregate SQL for one (metric, window).
@@ -52,6 +53,79 @@ export function buildBaselineSql(metric, _windowDays) {
52
53
  const windowBind = `(INTERVAL 1 DAY) * CAST($windowDays AS BIGINT)`;
53
54
  let dailySelect;
54
55
  let tsColumn;
56
+ if (aggregate === 'nightly_min') {
57
+ // D-G: "resting heart rate" is the NIGHTLY LOW — the minimum reading
58
+ // inside the night's sleep session(s), attributed to the local day the
59
+ // sleep ENDED in.
60
+ //
61
+ // Two operations that compose, and both matter:
62
+ // MIN within a night — each night contributes its own low
63
+ // p50 across nights — "usual resting" is the median of those lows
64
+ //
65
+ // The quantile half is the standard compute below, NOT special-cased
66
+ // here: resting_hr is an ordinary day-first metric whose daily value
67
+ // happens to be a minimum. That is the reason to trust it.
68
+ //
69
+ // "Usual resting" is therefore p50 of per-night minima, NEVER a minimum
70
+ // across nights. A min-across-nights would be the best night in 30 — a
71
+ // floor, not a usual. Every ordinary night would sit above it, the drift
72
+ // card would show a permanent elevation, and the 4-bpm creep it exists to
73
+ // catch would be invisible against a reference already below typical.
74
+ //
75
+ // Day key is `ts_end`'s local day, not the mapper's `night_of`. The two
76
+ // differ for a nap or a pre-midnight sleep, and the ruling is explicit
77
+ // that the day the sleep ended in is the one that owns the value.
78
+ return `
79
+ WITH daily_values AS (
80
+ SELECT date_trunc('day', timezone(CAST($tz AS VARCHAR), timezone('UTC', s.ts_end))) AS day,
81
+ MIN(m.${column}) AS daily_value
82
+ FROM ${view} m
83
+ JOIN v_sleep_session s
84
+ ON s.user_id = m.user_id AND s.brand = m.brand AND s.family_id = m.family_id
85
+ AND m.ts >= s.ts_start AND m.ts < s.ts_end
86
+ WHERE m.user_id = $userId AND m.brand = $brand AND m.family_id = $familyId
87
+ AND m.ts > now() - ${windowBind}
88
+ AND m.${column} IS NOT NULL
89
+ GROUP BY 1
90
+ )
91
+ ${quantileSelect()}
92
+ `.trim();
93
+ }
94
+ if (aggregate === 'resting_avg') {
95
+ // D-G: the DAYTIME still-time mean — the mean of readings taken while the
96
+ // user was not moving. This is NOT resting heart rate.
97
+ //
98
+ // `resting_hr` (nightly_min) answers "how low does your heart settle
99
+ // overnight". This answers "was your rate higher than usual while you were
100
+ // still today", which is the question the cross-vital factor on the
101
+ // Temperature and HRV screens asks. Two metrics, deliberately named apart
102
+ // so they can never be confused again.
103
+ //
104
+ // "Still" is the same test `hr.restingVsUsual` uses and the same one
105
+ // `active` uses on every vital screen: no activity with steps > 0 within
106
+ // +/-15 minutes. Keeping one definition is what makes "active" and
107
+ // "resting" complementary rather than two independent guesses.
108
+ return `
109
+ WITH daily_values AS (
110
+ SELECT date_trunc('day', timezone(CAST($tz AS VARCHAR), timezone('UTC', m.ts))) AS day,
111
+ avg(m.${column}) AS daily_value
112
+ FROM ${view} m
113
+ WHERE m.user_id = $userId AND m.brand = $brand AND m.family_id = $familyId
114
+ AND m.ts > now() - ${windowBind}
115
+ AND m.${column} IS NOT NULL
116
+ AND NOT EXISTS (
117
+ SELECT 1 FROM v_activity a
118
+ WHERE a.user_id = m.user_id AND a.brand = m.brand
119
+ AND a.family_id = m.family_id
120
+ AND a.steps > 0
121
+ AND a.ts >= m.ts - INTERVAL 15 MINUTE
122
+ AND a.ts < m.ts + INTERVAL 15 MINUTE
123
+ )
124
+ GROUP BY 1
125
+ )
126
+ ${quantileSelect()}
127
+ `.trim();
128
+ }
55
129
  if (aggregate === 'session') {
56
130
  // Sleep is already attributed to a local night by the mapper's 6pm-6pm
57
131
  // rule, so `night_of` is a better day key than re-deriving one from a
@@ -75,6 +149,20 @@ export function buildBaselineSql(metric, _windowDays) {
75
149
  ${quantileSelect()}
76
150
  `.trim();
77
151
  }
152
+ // Fail loudly on an aggregate this dispatch does not implement.
153
+ //
154
+ // This was `aggregate === 'sum' ? 'sum' : 'avg'`, so ANY unrecognised value
155
+ // silently became `avg`. Declaring a metric with a new aggregate — say
156
+ // `nightly_min` — and forgetting the dispatch case would compute a mean of
157
+ // every reading and store it as the nightly low: wrong, silent, and
158
+ // indistinguishable from a correct baseline downstream.
159
+ //
160
+ // `session` never reaches here; it returns from the branch above.
161
+ if (aggregate !== 'sum' && aggregate !== 'avg') {
162
+ // `session` and `nightly_min` returned above.
163
+ throw new AnalyticsError('not_implemented', `baselineDailyAggregate '${aggregate}' has no dispatch case. Add one `
164
+ + `rather than letting it fall through to avg.`);
165
+ }
78
166
  const fn = aggregate === 'sum' ? 'sum' : 'avg';
79
167
  tsColumn = 'ts';
80
168
  // Two separate defects fixed here (zivaone_app#73); either alone is wrong.
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mongrov/analytics",
3
- "version": "0.15.0",
3
+ "version": "0.18.0",
4
4
  "sideEffects": false,
5
5
  "description": "DuckDB + R2 Iceberg local analytics for @mongrov apps",
6
6
  "license": "MIT",
@@ -107,8 +107,8 @@
107
107
  "typescript": "^5.9.3",
108
108
  "vitest": "^2.1.9",
109
109
  "zod": "^3.23.8",
110
- "@mongrov/db": "0.3.0",
111
- "@mongrov/types": "0.5.3"
110
+ "@mongrov/types": "0.5.3",
111
+ "@mongrov/db": "0.3.0"
112
112
  },
113
113
  "scripts": {
114
114
  "build": "tsc -p tsconfig.build.json",