/** * createGraphSignal — the graph rule signal factory (north-star §5.9, release * launch). * * Graph rules used to hand-assemble fingerprint-relevant identity in every body: * `createSignal({ source: 'graph', ruleId: 'graph:', severity: * applySeverityOverride(base, 'graph:', config), … })`. This factory STAMPS * that identity from the rule's slug + config — `source` is always `'graph'`, * `ruleId` IS the slug, and the override clamp is applied internally — so a rule * names its slug once and never retypes `source`/`ruleId` or re-calls the override. * Output is byte-identical to the former hand-assembly. * * The `body.severity` is the rule's per-signal CHOICE (its data, not identity); * the override (`GraphConfig.severityOverrides[slug]`) is applied on top here. */ import { type Signal, type SignalCategory, type SignalRepair, type SignalSeverity } from '@opensip-cli/core'; import type { GraphConfig } from '../types.js'; /** The per-signal data a graph rule supplies — everything EXCEPT the stamped identity. */ export interface GraphSignalBody { /** The rule's chosen base severity for this signal (clamped by any override). */ readonly severity: SignalSeverity; readonly category: SignalCategory | string; readonly message: string; /** * Location on the primary site. **`column` is 0-based** (catalog / tree-sitter * / TS character space). {@link createGraphSignal} lifts it to the Signal * 1-based contract (ADR-0179) before `createSignal`. */ readonly code?: { file?: string; line?: number; column?: number; }; readonly suggestion?: string; readonly metadata?: Record; readonly repair?: SignalRepair; } /** * Build a graph {@link Signal}, stamping `source: 'graph'` + `ruleId: slug` and * applying the per-slug severity override — the rule supplies only its slug, the * active config, and the per-signal body. */ export declare function createGraphSignal(slug: string, config: GraphConfig, body: GraphSignalBody): Signal; //# sourceMappingURL=create-graph-signal.d.ts.map