HRVDex senses one signal at the summary level — a daily HRV reading — and tracks it longitudinally. It ingests pre-computed morning measurements and layers trend, readiness and cardiovascular-research views on top.
Read the suite as a reflex arc: receptors → relay → integration → insight. HRVDex is an afferent receptor — it does exactly one transduction well and reports inward. It never reaches into another node; cross-signal work happens only through the Ganglior export, consumed by the Integrator.
HRVDex is built from external *.js files referenced by HRVDex.src.html and bundled to a standalone HRVDex.html. Dependencies point downhill only — UI → DSP → Core — and each file owns exactly one job. Edit the .js + .src.html, never the bundle; re-bundle after changes.
buildHash provenance stamp). 100% local.tMs (local civil time encoded as if UTC) and reads it back with getUTC* — so the recording reads identically in any viewer’s timezone, and two devices recording the same minute land on the same tMs. parseTimestamp is duplicated locally by design.The pipeline is the same shape across the suite: ingest → parse on the canonical clock → compute in DSP → grade & render in UI → emit onto the bus. No number is computed in the render layer; it asks DSP for the value and the registry for how to show it.
Drag, drop or paste the export. Each row is one day’s pre-computed HRV reading.
Rows are stamped to floating tMs and filtered to the chosen window (e.g. 7 days). Display uses getUTC* so the same data reads identically anywhere.
computeDerived() builds the readiness composite, age-norm framing and cardiovascular research views (HTN pattern, CAMQ, MAP) from the daily series.
Charts, KPIs and the readiness hero are drawn; chartbadges overlays the evidence grade on each series.
CSV/JSON export of the windowed series for downstream analysis or archival.
Every metric HRVDex surfaces carries an evidence grade — a non-hue badge whose fill is the confidence ladder: solid bullseye for a raw reading, down to a dashed ring for a friendly estimate. A measurement and a projection must never look alike. Grades live in hrvdex-registry.js, the one source of truth.
Honesty is architectural: a guess is never dressed as a measurement, a missing value stays null rather than fabricated, and confidence is kept separate from signal quality. The node-specific caveats:
HRVDex ingests numbers Welltory already computed — it cannot re-derive HRV from raw beats. Its honesty depends on the source’s measurement quality. For raw RR, use PulseDex.
A 1-minute morning reading is a daily snapshot, not a continuous night. Trends are the value here, not any single day.
HTN-pattern, CAMQ and MAP are experimental — exploratory, not screening or diagnostic tools.
HRVDex is the one node without a -cross.js: its input is already a daily series, so longitudinal logic lives inline rather than in the shared multi-night helper.
HRVDex is one self-contained file. Open HRVDex.html in any browser — online, offline, or from file://. Nothing installs, nothing phones home.
Drag a Welltory export (welltory csv) onto the upload zone. It’s read in-browser and turned into metrics on your device alone.
Start in Core for the headline readiness and a plain-language line. Step up to Advanced for full tables and charts, or Research for composites and the full dump. Each metric’s evidence dot tells you how far to trust it.
Export a ganglior.node-export JSON to feed the Integrator, or to upgrade a peer node’s read. Events carry a wall-clock t; consumers reconstruct absolute time from the recording start.
Edit the hrvdex-*.js files or HRVDex.src.html — never the bundled HRVDex.html — then re-bundle. Run Dex-Test-Suite.html until all-green, and verify-provenance.html after re-bundling.