The Integrator is the suite’s integration centre — not a receptor. Afferent node exports converge here and become one coherent percept: the longitudinal, cross-signal picture no single receptor can produce. It senses nothing itself; it fuses.
Read the suite as a reflex arc: receptors → relay → integration → insight. The Integrator is the integration stage — afferent signals converge and become a single percept. It depends only on the CORE export contract, never on any node’s internals, so nodes stay independent and standalone.
The Integrator is built from external *.js files referenced by Integrator.src.html and bundled to a standalone Integrator.html. It has no registry of its own — it preserves each node’s evidence badge and provenance, reading the shared CORE export schema rather than redefining metrics. Dependencies point downhill: UI → fusion DSP → CORE contract.
fascia alias. No DOM — pure data.buildHash provenance stamp). 100% local.crossNight() stats stay per-node).parseTimestamp / fmtClock locally and aligns every node on floating wall-clock tMs read back with getUTC* — the one thing that makes cross-node simultaneity hold without any node sharing a timezone.Fusion runs in two orthogonal planes: same-night (align and reconcile events recorded the same night) and longitudinal (date-join daily summaries across weeks). Both obey the same honesty rules — authority is per-signal and quality-gated, and confidence is never conflated with signal quality.
Drag one or more ganglior.node-export JSON files (from OxyDex, ECGDex, PulseDex, …) onto the picker. Two or more from the same night is where fusion earns its keep.
Each export is parsed to a common NodeRec on floating wall-clock tMs, read back with getUTC* — so two devices that recorded the same minute align without sharing a timezone.
Events from different nodes are matched within a tolerance window (~120 s, configurable) so a desaturation and an autonomic surge that belong together are paired, not double-counted.
Authority is assigned per signal and quality-gated: the gold source yields to a clean backup when its own SQI trips. Confidence is attenuated by quality — effConf = conf × sqi — never collapsed into one number.
Same-night fusion, cross-signal couplings and the durable longitudinal trends are drawn; producer-side correlations are written back to a peer node’s reserved slot.
The Integrator does not invent a grade — it carries each node’s evidence badge through so a validated dot looks identical post-fusion. Its own contributions (couplings, fused readiness, projections) sit lower on the ladder, honestly marked as composed rather than measured.
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 fusion-specific caveats:
When sources disagree the Integrator does not count devices — it filters to the sensors that can observe the signal, checks plausibility, and looks for the obligate physiological consequence.
Authority is per-signal. Chest ECG owns HRV magnitude but yields to wrist PPG for HR when its battery dies; a node declares what it is authoritative for, not that it is best.
An event’s severity (conf) and its signal quality (sqi) are separate axes. Fusion attenuates via effConf = conf × sqi — never merged, so a strong reading from a noisy sensor is discounted, not trusted.
The Integrator has no signal of its own — it is the integration centre, not a receptor. With one node it summarizes; the cross-signal value appears only when nights overlap.
The Integrator is one self-contained file. Open Integrator.html in any browser — online, offline, or from file://. Nothing installs, nothing phones home.
Export a ganglior.node-export JSON from each -Dex node, then drop them all here. Overlapping nights unlock the cross-signal view; a single export still summarizes.
The same-night view reconciles events across sensors by per-signal authority; the longitudinal view date-joins daily summaries to surface couplings — e.g. declining autonomic recovery tracking rising ODI-4 over weeks.
Longitudinal history persists to IndexedDB on your device, so trends accumulate across sessions. It survives reload; it never leaves the browser. Clear it any time.
Edit integrator-*.js or Integrator.src.html — never the bundled Integrator.html — then re-bundle. Run Dex-Test-Suite.html until all-green, and verify-provenance.html after re-bundling.