Repository navigation
EventStudy 0.64.0 — Automated AI Reporting
Automated AI Reporting
One-call reporting. New es_report() orchestrator converts a fitted
EventStudyTask into a complete, publication-ready report in a single call:
deep-clones the task (non-mutation guarantee), harvests diagnostics via
es_diagnostics(), assembles a grounded narrative, and renders output —
returning the output path(s) visibly.
Multi-format output. format = c("html", "pdf", "word", "md") renders one
file per format from a shared basename. Fully offline by default (no API
key, no network); an optional provider enables LLM-grounded narrative when
available. Missing PDF/Word/Markdown toolchains degrade gracefully with one
message each; only inability to render the HTML baseline errors.
Additive pipeline convenience. run_event_study(report = FALSE, report_args = list()). With report = FALSE (default) behaviour is byte-identical to the
previous release; with report = TRUE the rendered path(s) attach as
attr(task, "report_path").
Grounded, never fabricated. Narrative is assembled section-by-section, each
an independent grounded request; references come from knowledge-base citations
(never the LLM); significance language is set by a static calibration from
p-values; the joint-hypothesis caveat is fixed static text in every report.
Grounding guard now covers report prose (GROUND-01/02/03). The free-text
grounding scanner is wired into the narrative assembler: an LLM-authored section
carrying a numeric literal absent from es_diagnostics() (within tolerance) is
dropped to its offline fallback with one warning and never rendered. A
report-path regression test locks the invariant.
CRAN & testing hygiene
- New optional toolchain (
tinytex) stays inSuggests,requireNamespace()-guarded. - No new
R CMD check --as-cranNOTEs/WARNINGs vs baseline; suite green (2287 pass). - All
render()calls are\dontrun{}in examples andskip_on_cran()/
skip_if_not_installed()in tests — no network or LaTeX toolchain at check time.
Full diff: v0.60.0...v0.64.0