Events, listeners, jobs, mail and schedules hide the path from cause to effect. Loom reads your code and writes one deterministic index that follows every thread. No boot, no runtime, no guessing.
Everything comes from the AST. Your app does not run, so scans are safe in CI and on a laptop.
Two scans of the same source are byte-identical, so the index diffs cleanly and gates a pull request.
A local UI, an MCP server for agents, and a CI check all read the same index.