Files
HealthLog/src/lib/ai/coach/experiment-flag.ts
T
Marc-André Bombeck 7ad32f7ab1 feat(coach): adherence storyline, changepoint engine, signal-trust, n-of-1 substrate
Add the medication-class to target-vital map and the adherence-to-vital
storyline so the Coach can surface, association-only, when an adherence dip
lines up with a drift in the vital that medication targets. Never causal,
never a dose-change suggestion; dose questions defer to the prescriber.

Add an in-repo CUSUM / binary-segmentation changepoint detector over DAY
rollups with a high firing bar (persistence plus within-segment-spread
magnitude) so the Coach can name a dated, sustained level shift instead of a
vague "lately", and stays silent when no break clears the bar.

Surface which source recovery is read from when two sources materially
diverge, with the honest reason, instead of silently averaging.

Lay the n-of-1 experiment substrate: a nullable encrypted outcome column on
coach_plans (migration 0197), the review_due / reviewed lifecycle statuses
wired into the encrypted-column registry and rotation script, and a daily
worker that reads the experiment result back in the user's own before/after
numbers — association-only, honest-null, no cheerlead on an adverse trend,
and routing a worsened vital to the clinician. The user-visible read-back
stays behind COACH_EXPERIMENT_VERDICT until its review cases clear.

Extend the outbound dose screen to catch experiment-shaped dose changes
(halve / skip / stop a medication to test it). Add evaluation cases and unit
tests for each new surface.
2026-06-27 15:21:04 +02:00

20 lines
1015 B
TypeScript

/**
* v1.22 (W9, C2) — gate for the user-visible n-of-1 experiment read-back.
*
* The substrate (the `outcomeEncrypted` column, the review worker that writes
* the grounded read-back, the snapshot read block) all ship in v1.22, but the
* user-visible verdict stays OFF by default: the read-back is the most
* overclaim-prone Coach surface in the catalogue, and the live B0 judge that
* grades a REAL generation on the over-validation axis runs only when
* `COACH_EVAL_API_KEY` is set (not per-PR). Until those live cases are green an
* operator must opt in explicitly.
*
* Plain env flag (no DB round-trip, no `features.ts` / `ai-budgets.ts` touch):
* set `COACH_EXPERIMENT_VERDICT=1` to surface reviewed experiment outcomes in
* the Coach snapshot/prompt. Anything else (unset / "0" / "false") keeps the
* read-back dormant while the worker keeps writing outcomes behind the scenes.
*/
export function experimentVerdictEnabled(): boolean {
return process.env.COACH_EXPERIMENT_VERDICT === "1";
}