Fully-populated CliOptions (typically from
parseCliArgs) — must have a non-null runDir
OptionalrunSuffix: stringOptional collision-suffix appended to the slug when multiple runs share the same (date, articleType) pair in batch mode
OptionalarticleCountOverride: numberOptional total article count to surface in
the footer's <p class="footer-stats">…</p>. When omitted the
count is derived from <outDir>/*-en.html — accurate for single
runs but misleading mid-batch, so generateAllArticles
passes the final total here.
Summary of the generated artefacts (GenerateResult)
Run the full aggregate → render → write pipeline for one run.