MakeCombinedReport
Синхронный конструктор единого отчёта детекции: два анализа (trends + ensemble) + записанный трек →ReportRef (schema combined-detection/v1). Публикация — отдельным
узлом PublishReport.
Pins
В отличие от MakeDetectionFusion
(2–4 входа, настраивается), здесь ровно два фиксированных входа анализов —
по одному на каждый детектор цепочки (trends + ensemble).
Runtime
Узел конструирует отчёт синхронно; тяжёлую упаковку/выгрузку host-runtime запускает как async job (report-build, существующий канал start-async-job) — рантайм не блокируется.
Идемпотентность: повторный exec с теми же входами возвращает тот же отчёт
(хэш входов на хосте) — alarm-loop не плодит дубли.
Preconditions
ReporterRefscoped к тому же journal, что и последующийPublishReport.TrackRefот MakeTrack — завершённая запись.
Anti-patterns
- Ставить узел на каждый тик alarm-loop «для надёжности» — идемпотентность спасёт от дублей, но упаковка всё равно нагружает host; конструируйте отчёт на осмысленной границе (например, по выходу из alarm-ветки).
- Ждать от узла публикации: без
PublishReportотчёт остаётся in-memory.
Minimal graph
Code
make-combined-report-node.ts · runtime/combined-report-executor.test.ts