types/canon.types.ts
types/canon.types.ts is a file in GovLab Quality. 99 lines of code and 14 definitions.
export type Fidelity = "advisory" | "approximate" | "exact";
export interface CanonicalSettingRecord {
id: string;
kind: "rule-intent" | "value";
surface: string;
dimension: string;
valueType: string;
default: unknown;
}
export interface MappingRow {
canonicalId: string;
tool: string;
langs: string[];
knob: string | null;
default: unknown;
fidelity: Fidelity;
fixed: boolean;
ruleCount?: number;
verified?: string;
provenance?: { toolVersion: string; source: string };
}
export interface OwnershipSurface {
id: string;
ownerByLanguage: Record<string, string>;
fixedOwners: string[];
advisoryOwners?: string[];
alternatives?: Record<string, string[]>;
}
export interface ConflictInstance {
kind: "known-bad-pair" | "ownership-overlap" | "unsatisfiable-on-fixed" | "value-out-of-range";
surface?: string;
canonicalId?: string;
tools?: string[];
lang?: string;
value?: unknown;
resolution: string;
}
export interface CanonicalData {
settings: CanonicalSettingRecord[];
rows: MappingRow[];
ownership: OwnershipSurface[];
conflicts: ConflictInstance[];
}
export interface CanonicalConfig {
languages: string[];
values?: Record<string, unknown>;
enabled?: Record<string, boolean>;
}
export interface ConceptKnob {
knob: string | null;
default?: unknown;
fidelity: string | null;
provenance?: string;
fixed?: boolean;
variant?: string;
}
export interface KnobConcept {
valueType: string;
tools: Record<string, ConceptKnob>;
enum?: unknown;
}
export interface MappingEntry {
default?: unknown;
fidelity: string | null;
knob: string | null;
knobStatus?: string;
lang: string[] | string;
provenance?: string | undefined;
ruleCount: number;
ruleIds: string[];
tool: string;
verified: string;
fixed?: boolean;
variant?: string;
}
export interface MappingConcept {
dimension: string;
ruleCount: number;
toolCount: number;
valueType: string;
enum?: unknown;
entries: MappingEntry[];
}
export interface CanonDefects {
algoForce: string[];
algoId: string[];
archEdge: string[];
archId: string[];
archRename: string[];
archType: string[];
unknownType: Set<string>;
}
export type OwnerOverride = Record<string, Record<string, string>>;
export interface OwnershipOverrideConflict {
kind: "fixed-owner" | "tool-not-competitor" | "unknown-surface";
surface: string;
lang: string;
detail: string;
}