/** * Validate Runtime Architecture Executor (workspace) * * Two workspace-level checks on the runtime microservice graph: * 1. No-cycles: every runtime cycle must be in the `allowedCycles` allowlist * with an unexpired `until`; any other cycle fails the build. * 2. Unchanged: the freshly-assembled graph must match the committed * architecture/runtime-dependencies.json (run `architecture:generate`). * * On/off + a whole-rule grace window come from webpieces.config.json * (rule: runtime-architecture). * * Usage: nx run architecture:validate-runtime-architecture */ import type { ExecutorContext } from '@nx/devkit'; import type { EnhancedGraph } from '../../lib/graph-sorter'; import type { RuntimeGraph } from '../../lib/runtime-graph'; export interface ValidateRuntimeArchitectureOptions { } export interface ExecutorResult { success: boolean; } /** * Every `role:server` project must have a NODE in the runtime graph. A pure set difference against * what the derivation produced, and it exists because the derivation once dropped relation-less * servers silently: the diagram claimed to be complete while a deployed service was missing from it. * Now the only sanctioned way for a server to be absent from the drawing is `drawOnGraph:false`, and * anything else that ever removes one fails the build by name instead of disappearing quietly. */ export declare function checkServersPresent(projects: EnhancedGraph, hiddenProjects: Set, graph: RuntimeGraph): string[]; export default function runExecutor(_options: ValidateRuntimeArchitectureOptions, context: ExecutorContext): Promise;