Back to Delivery 4 — Collaborative and Tested Quality Utilities

delivery-04-collaborative-tested-utilities/src/models.ts

/** An explicit dependency seam makes time-controlled behaviour testable. */
export interface Clock {
  now(): number;
  sleep(milliseconds: number): Promise<void>;
}

export type CheckState = "passed" | "failed" | "pending";

export interface QualityObservation {
  readonly endpoint: string;
  readonly state: CheckState;
  readonly durationMs: number;
}

export interface QualitySummary {
  readonly executionCount: number;
  readonly passedCount: number;
  readonly failedCount: number;
  readonly pendingCount: number;
  readonly slowEndpointCount: number;
}

export type FailureKind = "invalid-input" | "dependency-failure" | "timeout" | "unexpected-result";

export interface DiagnosticContext {
  readonly operation: string;
  readonly attempt?: number;
  readonly elapsedMs?: number;
  readonly observedState?: string;
  readonly retryExhausted?: boolean;
}

export interface PollingResult<T> {
  readonly value: T;
  readonly attempts: number;
  readonly elapsedMs: number;
}

export interface RetryResult<T> {
  readonly value: T;
  readonly attempts: number;
}