to Directory
Capture every decision element of model to a durable trajectory under directory — the common case, so a caller needs only a model and a destination.
One TabularSink per element per experiment, named <element>-<experiment>, because both vary: a model may hold several decision elements, and §4.9's k-rule comparison runs one model k times.
The file name is sanitised, not just the columns. KSL element names are colon-qualified by convention (Shop:Review), and a : in a file name is legal on Linux, illegal on Windows, and an alternate-data-stream separator on NTFS — so a trajectory written on the author's machine would fail to appear on a reader's. This is the same substitution ksl.observers.ResponseTrace makes for the same reason, reusing TabularSink.sanitize so a file name and its columns cannot diverge on what a legal character is.
Mirrors ksl.animation.AnimationCapture.toFile.