/** * ci-watch/report.ts * * Derives the overall CI verdict from the PER-JOB conclusions, the whole point * of the doctrine. It never trusts a single rollup status. continue-on-error * jobs are recorded as violations and, because they are banned, force the verdict * off "passed" even if every visible conclusion is success (a continue-on-error * job can be green while having masked a real failure). */ import { type CiJob, type CiOverall, type CiReport } from './types.js'; export interface DeriveCiReportInput { readonly repo: string; readonly ref?: string | undefined; readonly prNumber?: number | undefined; readonly jobs: readonly CiJob[]; readonly now?: number | undefined; } /** Build the per-job report + derived verdict. */ export declare function deriveCiReport(input: DeriveCiReportInput): CiReport; /** * The verdict, per-job: * - no jobs at all -> unknown (never silently "passed"). * - any job not yet completed -> pending. * - any completed job whose conclusion is not an explicit pass -> failed. * - a continue-on-error/unknown-conclusion violation -> never "passed". * - otherwise (every job completed and explicitly passing) -> passed. */ export declare function deriveOverall(jobs: readonly CiJob[], hasBlockingViolation: boolean): CiOverall; /** The names of the jobs that did not pass (for notifications and fix-session briefs). */ export declare function failingJobNames(report: CiReport): string[]; /** A compact one-line-per-job rendering for a channel notification. */ export declare function renderCiReportLines(report: CiReport): string; //# sourceMappingURL=report.d.ts.map