Konjugate 0.7.1: Correctly running causal inference
Causal inference now produces equations that actually run correctly
Every equation causal inference proposes — cross-relationships and each node's own self-lag — is now a genuine continuous-time rate, compatible with Konjugate's dx/dt solver by construction, not a raw discrete-step coefficient placed directly into the derivative. Previously, a fitted relationship's coefficient was a per-CSV-row multiplier; treating it as a rate was a real unit mismatch that, run forward, tended to diverge — sometimes explosively, since nothing was damping a node's own state.
What changed under the hood:
- Every fitted coefficient is transformed via
rate = coefficient / Δt(andrate = (selfLagCoefficient − 1) / Δtfor a target's own persistence), whereΔtis the CSV's own sampling interval — the exact solution to "what rate makes one Euler step reproduce this fitted discrete transition." No approximation, no matrix decomposition, and it applies cleanly to curved (polynomial) relationships too. - A node's own self-lag — previously fit only as an internal control term and then discarded — is now kept and committed as a local equation on that node's own state, giving recovered models real persistence/decay dynamics instead of none at all.
- This is the only path now — there's no separate "continuous-time" toggle to remember. Multi-step-lag search was dropped from the default candidate search, since a relationship more than one CSV row old was never representable as a correct equation anyway (Konjugate has no delay-buffer mechanism), so nothing usable was actually lost.
- One honest, documented limitation: a recovered rate is calibrated to one Euler step at the CSV's own sampling interval. Running Konjugate with a much finer time step than that drifts — measured at roughly 6–7× the calibrated-resolution error on our own validation system — though the drift stays bounded rather than diverging. This is now guarded by a permanent regression test.
See Causal inference for the full method, and Discrete fit vs. continuous rate for the math (including the matrix-logarithm approach we tried first, and why it was rejected).
Fixed: About/Examples windows appearing under the title bar
The About Konjugate and Example Guide windows could open positioned with their own title bar under the real menu bar — a saved position left over from a moved or disconnected display, or simply centering on a parent window that itself sat flush against the screen top. These windows are now clamped to the current display's visible work area.
Installation notes: Konjugate isn't code-signed yet (an active choice while the project is in alpha), so your OS may show a security warning on first launch. This doesn't mean the download is corrupted.
- macOS — if you see "is damaged and can't be opened": move Konjugate.app to Applications, then in Terminal run
xattr -cr /Applications/Konjugate.app. Or: System Settings → Privacy & Security → Open Anyway.- Windows — if you see a blue "Windows protected your PC" warning from SmartScreen, click More info, then click the Run anyway button that appears.
Full Changelog: v0.7.0...v0.7.1