Regression Fit Record
One record in the experiment-app regression-fit history. Records are appended on every successful fit and survive until the host's bound (typically MAX_RECENT_FITS on its controller) evicts them, the user removes them, or an R1 lifecycle event (Simulate / structural mutation / reset) clears the whole list.
Substrate-level DTO so any experiment-app host (Swing today; web / CLI tomorrow) reuses the same record shape. Carries the fit itself (a self-contained numeric object), enough metadata to re-render its HTML report at any time, and a (possibly-empty) list of paths previously written to disk by the user's Save action. savedPaths is the only mutable surface: it grows when the user re-saves. Hosts use savedPaths.isEmpty() as the "unsaved" badge predicate.
Parameters
wall clock time of the fit (for the Recent Fits list's time column)
response variable name the fit was against
the LinearModel as a parsable string (output of LinearModel.asString)
true if factor levels were coded (-1, +1 style), false if natural units
CI level used to render the report (passed through to toReport(confidenceLevel=...))
the substrate regression results object
paths under <workspace>/output/<analysisName>/reports/ that this fit has been materialised to; empty until the user clicks Save