Support Boundaries

This page defines the current public support boundaries for Epsilon. It is not a release certification page. Epsilon is still on the 0.1.0-dev line, so the supported surface is intentionally narrower than the full public export list.

Supported

AreaCurrent Support
FittingTuring/NUTS MCMC for supported TimeSeriesMMM and bounded PanelMMM models
DataConfig-driven CSV workflows with explicit date, target, media, holiday, control, and panel columns
PipelineStage-based local runs through run_pipeline, pipeline_main, and runme.jl
Time-series validationBlocked holdout validation through Stage 35
Panel modellingOne or more declared panel dimensions on a deterministic flattened panel-cell axis
Post-model analysisContributions, decomposition, response curves, saturation curves, adstock curves, and marketing metrics from grouped MCMC results
OptimisationFixed-budget total-response optimisation; panel optimisation uses historical within-channel panel shares
PlottingStatic CairoMakie-backed plots and stage-local PNG artifacts
Scenario planningNon-UI comparison tables over current, manual time-series, and solved optimisation scenarios
CalibrationTime-series MCMC lift-test and cost-per-target calibration on the bounded centered-logistic path

Explicitly Unsupported Or Deferred

  • Variational inference. Epsilon supports MCMC/Turing fitting only.
  • Dashboard, hosted UI, AI advisor, or background scenario-store workflows.
  • Panel holdout validation.
  • Panel calibration.
  • Free channel-by-panel optimisation.
  • Panel seasonality, trend, events, and richer controls beyond the currently supported panel surface.
  • Automatic refitting of every prior-sensitivity scenario.
  • Arbitrary future spend-path simulation.
  • Portable binary interchange for Julia .jls artifacts.
  • Loading serialized artifacts from untrusted sources.

Unsupported paths should fail explicitly rather than silently approximating a different model.

Pipeline Stages

Pipeline runs use fixed stage directories:

StageDirectoryNotes
0000_run_metadata/Source config, resolved config, data and model metadata
0505_prior_sensitivity/Optional scenario planning, not automatic refitting
1010_pre_diagnostics/Prior predictive artifacts where supported
2020_model_fit/Fitted model and grouped inference artifacts
3030_model_assessment/Observed/fitted, posterior predictive, residual summaries, plots
3535_holdout_validation/Time-series holdout validation only
4040_decomposition/Contributions and decomposition artifacts
5050_diagnostics/Sampler, convergence, predictive, residual, and design diagnostics
6060_response_curves/Response, saturation, adstock, and metric artifacts
7070_optimisation/Optional budget optimisation

When a stage is skipped, Epsilon writes SKIPPED.json in that stage directory and records the marker in run_manifest.json.

Config Guidelines

  • Use fit.backend: mcmc or omit the backend for the maintained MCMC path.
  • Keep media spend nonnegative.
  • Use explicit panel dimensions under dimensions.panel for panel configs.
  • Keep demo optimisation disabled unless a deliberate budget block is supplied.
  • Prefer runme.jl ... --quick for local demo checks and increase sampler settings only when inspecting modelling behaviour.

Local Checks

Use focused checks for routine development:

make format-check
make smoke
make smoke-demo-configs

Use the full suite only when a broad local gate is needed:

make test
make docs