Can a human brain learn to "see" heat? Horus generalizes that question: can complex machine information become a persistent sensory representation that a person learns to interpret intuitively?
Horus Pulse is Milestone 0: a local experiment that translates synthetic software-system telemetry into continuous audio. It is deliberately not a production observability platform.
Coding agents and contributors should read AGENTS.md for the
architecture invariants, experiment-integrity requirements, stored-data
contract, extension workflow, and public repository boundary.
After training, a participant can classify one of five hidden system states from the Horus sensory representation substantially better than the 20% chance baseline.
The five states are Normal, Traffic surge, Latency degradation, Error storm, and Dependency degradation.
The implementation keeps three concerns separate:
ServiceSimulator -> TelemetryFrame -> Codec V0 -> SensoryFrame -> WebAudioRenderer
|
+-> future non-audio renderer
src/domain/simulator.tsgenerates evolving, noisy telemetry. Every simulator instance creates a new sequence; blind tests do not replay Learn mode data.src/domain/codec.tsis a pure, deterministic, versioned transformation. It has no browser or audio dependency.src/audio/WebAudioRenderer.tsinterprets normalized sensory dimensions using Web Audio and smoothly ramps between frames.src/domain/experiments.tsstores raw trials in browser local storage and supports JSON export. Trials use unique records so another open tab cannot replace existing history.src/domain/analytics.tsderives aggregate results without altering raw data.
Codec V0 is frozen as codec-v0 for comparable sessions. Each output is
normalized to 0–1 except spatial position, which spans -1 (left) to +1 (right).
| Telemetry input | Sensory dimension | Audio interpretation |
|---|---|---|
| Request rate, 80–420 req/s | Tempo | Pulse rate, 0.7–6 Hz |
| P99 latency, 100–1100 ms | Intensity | Carrier pitch and level |
| Error rate, 0.2%–20% | Texture | Amount of band-limited noise |
| Dependency latency, 60–1000 ms | Spatial position | Stereo movement from left to right |
| Dependency latency, 80–1000 ms | Modulation | Pulse depth |
Values outside a mapping range are clamped. The renderer's sound design can evolve in later codec versions, but an experiment must use one version throughout.
- Use Learn mode with audio enabled. Spend equal time with all five scenarios and observe the visible telemetry while listening.
- Enable audio, then open Blind test and start a trial. A new simulator and randomized sequence are created; telemetry and identity stay hidden. Audio activation happens before timing so browser startup latency is excluded.
- Listen until you can classify the state. Reaction time starts when the trial starts and stops when an answer is selected.
- Repeat across multiple sessions. Do not change Codec V0 during the experiment.
- Review overall accuracy, per-scenario accuracy, reaction time, session performance, and the confusion matrix. Export raw JSON before clearing browser storage or changing browsers, and verify that the JSON file was downloaded.
Blind mode uses a newly generated Normal baseline before and between trials. This standardizes the sound preceding each hidden sequence without replaying a Learn-mode sample.
This prototype does not control exposure duration, participant identity, headphones, ambient noise, or training time. Those controls are candidates for a later experimental protocol, not Milestone 0.
Requires Node.js 22 or newer.
npm install
npm run devOpen the local URL printed by Vite. Browser autoplay rules require pressing Start audio before sound begins. Headphones are recommended because dependency degradation uses stereo position.
npm test
npm run lint
npm run build- Synthetic telemetry changes continuously with realistic random drift and five scenarios emerge over time rather than jumping to static values.
- Telemetry generation, Codec V0, and Web Audio rendering are separate.
- Learn mode displays scenario and telemetry while rendering sound.
- Blind mode hides both, generates a fresh sequence, records classification and reaction time, and identifies the codec version.
- Raw trials persist locally and remain exportable.
- Results include overall and per-scenario accuracy, average reaction time, session performance, and a confusion matrix.
- Pure simulator, codec, and analytics behavior is covered by automated tests.
No Azure integration, authentication, cloud storage, AI/LLM integration, OpenTelemetry ingestion, mobile application, custom hardware, or production alerting behavior is included in Milestone 0.