/* transition-block — evaluate whether a certification state transition is blocked. Do not transition — this module only reports block status. RFC-1097: sweep — werkstatt-engine clean Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics. */ import type { Diagnostic } from "@warpgogol/werkstatt-shared/kernel"; export interface CertificationTransitionBlockResult { command: string; status: "incomplete"; diagnostics: Diagnostic[]; requiredNode: "CERT-007"; exitCode: 1; } const TRANSITION_MESSAGE = "Site deployment is unavailable until the authority-backed certification transition is implemented."; const TRANSITION_FIX_HINT = "Complete the accepted certification roadmap through CERT-007; no bypass is permitted."; export function buildCertificationTransitionBlock( command: string, ): CertificationTransitionBlockResult { return { command, status: "incomplete", diagnostics: [ { ruleId: "CERT-TRANSITION-01", severity: "error", message: TRANSITION_MESSAGE, fixHint: TRANSITION_FIX_HINT, evidence: [], }, ], requiredNode: "CERT-007", exitCode: 1, }; } export function isCertificationTransitionBlock( value: unknown, ): value is CertificationTransitionBlockResult { return ( typeof value === "object" && value !== null && "status" in value && (value as { status: string }).status === "incomplete" && "requiredNode" in value && (value as { requiredNode: string }).requiredNode === "CERT-007" && "diagnostics" in value && Array.isArray((value as { diagnostics: unknown[] }).diagnostics) && (value as { diagnostics: { ruleId: string }[] }).diagnostics.some( (d) => d?.ruleId === "CERT-TRANSITION-01", ) ); }