Template the questions belong to. Stamped onto each per-question LangSmith span so a question is filterable on its own (template -> run -> question).
Optionalcontext?: QuestionRunContextRun-scoped context hoisted once by the orchestrator and forwarded to every question, so runners reuse a single chart/admission/level-of-care fetch instead of re-fetching per question. Undefined for the session-note path (whose runner uses only the injected note).
OptionalsessionId?: SessionIdWhen set, each persisted audit_response row is stamped with this
sessionId so the session-note chart-review badge can surface the run
via auditRunsRepo.listIdsBySessionId.
OptionalsummaryInstructions?: string | null
Runs each question through the
AgentQuestionRunnerand persists each response toaudit_responseimmediately, so partial progress survives even if a later question fails or times out.Per-question failures are logged but do not throw —
Promise.allSettledcollects them, and any successful results are returned inresults.Runner-agnostic: accepts any
QuestionRunner(the v2AgentQuestionRunneror the v1-faithfulSessionNoteAuditRunner); only.run()is used.