mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-14 14:40:52 +00:00
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.
20 lines
1015 B
TypeScript
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";
|
|
}
|