@vessel-dsp/core 0.6.19 → 0.6.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,11 +3,11 @@
3
3
  *
4
4
  * Cheap, static heuristics that flag *suspicious* traces for a human/agent to
5
5
  * double-check against the source. Every issue is severity `"warning"`. This is
6
- * NOT a verifier and NOT a rating input, and it is deliberately incomplete: a
7
- * transcription slip that lands on a plausible value (e.g. `1n`->`1u`) passes
8
- * every static check here — catching that class requires a dynamic audio-
9
- * admission pass (simulation), which lives on the runtime side, not in this
10
- * static linter.
6
+ * NOT a verifier and NOT a rating input, and it is deliberately incomplete.
7
+ * Simple value/corner checks cannot catch a plausible `1n`->`1u` slip, but the
8
+ * opt-in audio-topology pass can warn when surrounding graph context makes the
9
+ * resulting shunt destructive. Dynamic admission is still required for
10
+ * behavioral validation.
11
11
  *
12
12
  * Structure vs value are split on purpose:
13
13
  * - `validateTraceStructure` — connectivity-dependent (floating/shorted/divider).
@@ -19,12 +19,15 @@
19
19
  * - `validateRcCornerHeuristic` — a rough RC-corner heuristic, OPT-IN only; it
20
20
  * has a high intrinsic false-positive rate (intentional sub-/supersonic poles)
21
21
  * and does NOT catch in-band value slips, so it is not a default check.
22
+ * - `validateAudioTopologyWarnings` — OPT-IN, role- and connectivity-gated
23
+ * warnings for destructive audio shunts, extreme direct input loading, and
24
+ * explicitly declared op-amp buffers without a passive feedback path.
22
25
  *
23
26
  * `validateTracePlausibility` runs the safe default (structure only) plus any
24
27
  * opt-in checks requested via options.
25
28
  */
26
29
  import { getPinNode, resolveConnectivity, } from "./connectivity.js";
27
- import { propertyQuantityValue } from "./properties.js";
30
+ import { propertyQuantityValue, propertyStringValue } from "./properties.js";
28
31
  const E24 = [
29
32
  1, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2, 2.2, 2.4, 2.7, 3, 3.3, 3.6, 3.9, 4.3, 4.7,
30
33
  5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1,
@@ -48,6 +51,31 @@ const FLOAT_FLAG_KINDS = new Set([
48
51
  "led",
49
52
  "variable-resistor",
50
53
  ]);
54
+ const AUDIO_INPUT_ROLES = new Set(["input", "audio-input", "in"]);
55
+ const AUDIO_OUTPUT_ROLES = new Set(["output", "audio-output", "out"]);
56
+ const AUDIO_REFERENCE_ROLES = new Set(["bias", "bias-reference", "reference"]);
57
+ const SUPPLY_NODE_ROLES = new Set([
58
+ "main-supply",
59
+ "negative-supply",
60
+ "regulated-output",
61
+ "charge-pump-output",
62
+ "power",
63
+ "power-input",
64
+ "rail",
65
+ "supply",
66
+ ]);
67
+ const PASSIVE_PATH_KINDS = new Set([
68
+ "resistor",
69
+ "capacitor",
70
+ "inductor",
71
+ "diode",
72
+ "switch",
73
+ "variable-resistor",
74
+ "potentiometer",
75
+ ]);
76
+ const AUDIO_SHUNT_REFERENCE_HZ = 1000;
77
+ const AUDIO_SHUNT_WARNING_DB = -12;
78
+ const INPUT_LOADING_WARNING_OHMS = 2000;
51
79
  function readSiValue(prop) {
52
80
  const q = propertyQuantityValue(prop);
53
81
  if (q && Number.isFinite(q.value))
@@ -108,6 +136,244 @@ function nodesOf(conn, c) {
108
136
  }
109
137
  return out;
110
138
  }
139
+ function uniqueNodesOf(conn, component) {
140
+ return [...new Set(nodesOf(conn, component))];
141
+ }
142
+ function normalizedRole(value) {
143
+ return value
144
+ .trim()
145
+ .toLowerCase()
146
+ .replace(/[_\s]+/g, "-");
147
+ }
148
+ function propertyText(component, ...names) {
149
+ const wanted = new Set(names.map((name) => name.toLowerCase()));
150
+ for (const [name, value] of Object.entries(component.properties ?? {})) {
151
+ if (!wanted.has(name.toLowerCase()))
152
+ continue;
153
+ const text = propertyStringValue(value);
154
+ if (text?.trim())
155
+ return text.trim();
156
+ }
157
+ return null;
158
+ }
159
+ function componentRole(doc, component) {
160
+ const direct = propertyText(component, "Role", "AudioRole", "BoundaryRole");
161
+ if (direct)
162
+ return normalizedRole(direct);
163
+ const control = doc.deviceInterface?.controls.find((item) => item.id === component.id || item.binding?.componentId === component.id);
164
+ return control ? normalizedRole(control.role) : "";
165
+ }
166
+ function terminalNode(conn, component, aliases) {
167
+ const wanted = new Set(aliases.map((name) => name.toLowerCase().replace(/[^a-z0-9]/g, "")));
168
+ for (const terminal of component.terminals) {
169
+ const name = terminal.name.toLowerCase().replace(/[^a-z0-9]/g, "");
170
+ if (!wanted.has(name))
171
+ continue;
172
+ const node = getPinNode(conn, {
173
+ componentId: component.id,
174
+ terminalName: terminal.name,
175
+ });
176
+ if (node !== undefined)
177
+ return node;
178
+ }
179
+ return undefined;
180
+ }
181
+ function jackSignalNode(conn, component) {
182
+ return terminalNode(conn, component, [
183
+ "tip",
184
+ "signal",
185
+ "anode",
186
+ "positive",
187
+ "t",
188
+ ]);
189
+ }
190
+ function audioPorts(doc) {
191
+ const inputs = [];
192
+ const outputs = [];
193
+ for (const component of doc.components) {
194
+ if (component.kind !== "jack")
195
+ continue;
196
+ const role = componentRole(doc, component);
197
+ if (AUDIO_INPUT_ROLES.has(role))
198
+ inputs.push(component);
199
+ if (AUDIO_OUTPUT_ROLES.has(role))
200
+ outputs.push(component);
201
+ }
202
+ return { inputs, outputs };
203
+ }
204
+ function addRoleNode(roleValue, nodeId, ground, audioReferences, supplies) {
205
+ const role = normalizedRole(roleValue);
206
+ if (role === "ground")
207
+ ground.add(nodeId);
208
+ if (AUDIO_REFERENCE_ROLES.has(role))
209
+ audioReferences.add(nodeId);
210
+ if (SUPPLY_NODE_ROLES.has(role))
211
+ supplies.add(nodeId);
212
+ }
213
+ function componentBetweenNodes(doc, conn, kind, node, targets) {
214
+ return doc.components.find((component) => {
215
+ if (component.kind !== kind)
216
+ return false;
217
+ const nodes = uniqueNodesOf(conn, component);
218
+ return (nodes.length === 2 &&
219
+ nodes.includes(node) &&
220
+ nodes.some((candidate) => candidate !== node && targets.has(candidate)));
221
+ });
222
+ }
223
+ function audioNodeSets(doc, conn, nodeRoles, ports) {
224
+ const ground = new Set();
225
+ const audioReferences = new Set();
226
+ const supplies = new Set();
227
+ if (conn.groundNodeId !== null)
228
+ ground.add(conn.groundNodeId);
229
+ for (const [nodeId, role] of nodeRoles ?? []) {
230
+ addRoleNode(role, nodeId, ground, audioReferences, supplies);
231
+ }
232
+ const powerRailRoles = new Map();
233
+ for (const domain of doc.power?.domains ?? []) {
234
+ for (const rail of domain.rails) {
235
+ powerRailRoles.set(rail.railComponentId, rail.role);
236
+ }
237
+ }
238
+ for (const component of doc.components) {
239
+ const nodes = uniqueNodesOf(conn, component);
240
+ if (component.kind === "ground") {
241
+ for (const node of nodes)
242
+ ground.add(node);
243
+ }
244
+ if (component.kind === "rail") {
245
+ const role = powerRailRoles.get(component.id);
246
+ for (const node of nodes) {
247
+ if (role === "bias-reference")
248
+ audioReferences.add(node);
249
+ else
250
+ supplies.add(node);
251
+ }
252
+ }
253
+ }
254
+ if (ports.inputs.length === 1 && ports.outputs.length === 1) {
255
+ const input = ports.inputs[0];
256
+ const output = ports.outputs[0];
257
+ if (input && output) {
258
+ const inputSleeve = terminalNode(conn, input, [
259
+ "sleeve",
260
+ "ground",
261
+ "cathode",
262
+ "negative",
263
+ "return",
264
+ ]);
265
+ const outputSleeve = terminalNode(conn, output, [
266
+ "sleeve",
267
+ "ground",
268
+ "cathode",
269
+ "negative",
270
+ "return",
271
+ ]);
272
+ if (inputSleeve !== undefined && inputSleeve === outputSleeve) {
273
+ ground.add(inputSleeve);
274
+ }
275
+ }
276
+ }
277
+ for (const nodeId of conn.nodeMembers.keys()) {
278
+ if (ground.has(nodeId) || supplies.has(nodeId))
279
+ continue;
280
+ const hasGroundResistor = componentBetweenNodes(doc, conn, "resistor", nodeId, ground);
281
+ const hasSupplyResistor = componentBetweenNodes(doc, conn, "resistor", nodeId, supplies);
282
+ const hasGroundCapacitor = componentBetweenNodes(doc, conn, "capacitor", nodeId, ground);
283
+ if (hasGroundResistor && hasSupplyResistor && hasGroundCapacitor) {
284
+ audioReferences.add(nodeId);
285
+ }
286
+ }
287
+ const blocked = new Set([...ground, ...audioReferences, ...supplies]);
288
+ return { ground, audioReferences, supplies, blocked };
289
+ }
290
+ function passivePathEdges(doc, conn, blocked, excludedComponentId) {
291
+ const edges = [];
292
+ for (const component of doc.components) {
293
+ if (component.id === excludedComponentId ||
294
+ !PASSIVE_PATH_KINDS.has(component.kind)) {
295
+ continue;
296
+ }
297
+ const nodes = uniqueNodesOf(conn, component).filter((node) => !blocked.has(node));
298
+ for (let index = 0; index < nodes.length; index += 1) {
299
+ const nodeA = nodes[index];
300
+ if (nodeA === undefined)
301
+ continue;
302
+ for (const nodeB of nodes.slice(index + 1)) {
303
+ edges.push([nodeA, nodeB, component]);
304
+ }
305
+ }
306
+ }
307
+ return edges;
308
+ }
309
+ function audioSignalEdges(doc, conn, blocked, excludedComponentId) {
310
+ const edges = passivePathEdges(doc, conn, blocked, excludedComponentId);
311
+ for (const component of doc.components) {
312
+ if (component.kind !== "opamp")
313
+ continue;
314
+ const signalNodes = [
315
+ terminalNode(conn, component, ["positive", "plus", "nonInverting"]),
316
+ terminalNode(conn, component, ["negative", "minus", "inverting"]),
317
+ terminalNode(conn, component, ["out", "output"]),
318
+ ].filter((node) => node !== undefined && !blocked.has(node));
319
+ for (let index = 0; index < signalNodes.length; index += 1) {
320
+ const nodeA = signalNodes[index];
321
+ if (nodeA === undefined)
322
+ continue;
323
+ for (const nodeB of signalNodes.slice(index + 1)) {
324
+ edges.push([nodeA, nodeB, component]);
325
+ }
326
+ }
327
+ }
328
+ return edges;
329
+ }
330
+ function shortestPathNodes(start, target, edges) {
331
+ if (start === undefined || target === undefined)
332
+ return null;
333
+ if (start === target)
334
+ return [start];
335
+ const adjacency = new Map();
336
+ for (const [nodeA, nodeB] of edges) {
337
+ if (!adjacency.has(nodeA))
338
+ adjacency.set(nodeA, new Set());
339
+ if (!adjacency.has(nodeB))
340
+ adjacency.set(nodeB, new Set());
341
+ adjacency.get(nodeA)?.add(nodeB);
342
+ adjacency.get(nodeB)?.add(nodeA);
343
+ }
344
+ const queue = [start];
345
+ const seen = new Set([start]);
346
+ const previous = new Map();
347
+ for (let index = 0; index < queue.length; index += 1) {
348
+ const node = queue[index];
349
+ if (node === undefined)
350
+ continue;
351
+ for (const neighbor of adjacency.get(node) ?? []) {
352
+ if (seen.has(neighbor))
353
+ continue;
354
+ seen.add(neighbor);
355
+ previous.set(neighbor, node);
356
+ if (neighbor === target) {
357
+ const path = [target];
358
+ while (path[0] !== start) {
359
+ const child = path[0];
360
+ if (child === undefined)
361
+ return null;
362
+ const parent = previous.get(child);
363
+ if (parent === undefined)
364
+ return null;
365
+ path.unshift(parent);
366
+ }
367
+ return path;
368
+ }
369
+ queue.push(neighbor);
370
+ }
371
+ }
372
+ return null;
373
+ }
374
+ function reachable(start, target, edges) {
375
+ return shortestPathNodes(start, target, edges) !== null;
376
+ }
111
377
  /** Fraction of component terminals that sit on a ≥2-member net (connectivity completeness). */
112
378
  export function traceConnectivityCompleteness(doc, conn) {
113
379
  let total = 0;
@@ -122,6 +388,13 @@ export function traceConnectivityCompleteness(doc, conn) {
122
388
  }
123
389
  return { fraction: total === 0 ? 1 : connected / total, connected, total };
124
390
  }
391
+ function connectivityIncompleteIssue(coverage) {
392
+ return {
393
+ code: "trace-connectivity-incomplete",
394
+ severity: "warning",
395
+ message: `resolved net graph is only ${(coverage.fraction * 100).toFixed(0)}% complete (${coverage.connected}/${coverage.total} terminals on a >=2-member net); connectivity-dependent trace checks skipped (fail-closed). Provide complete connectivity to enable them.`,
396
+ };
397
+ }
125
398
  /** Connectivity-dependent structural checks. Coverage-gated; fails closed. */
126
399
  export function validateTraceStructure(doc, options = {}) {
127
400
  const conn = options.connectivity ?? resolveConnectivity(doc);
@@ -131,13 +404,7 @@ export function validateTraceStructure(doc, options = {}) {
131
404
  const byId = new Map(doc.components.map((c) => [c.id, c]));
132
405
  const cov = traceConnectivityCompleteness(doc, conn);
133
406
  if (cov.fraction < required) {
134
- return [
135
- {
136
- code: "trace-connectivity-incomplete",
137
- severity: "warning",
138
- message: `resolved net graph is only ${(cov.fraction * 100).toFixed(0)}% complete (${cov.connected}/${cov.total} terminals on a ≥2-member net); structural trace checks skipped (fail-closed). Provide complete connectivity to enable floating/shorted/divider checks.`,
139
- },
140
- ];
407
+ return [connectivityIncompleteIssue(cov)];
141
408
  }
142
409
  const railNodes = new Set();
143
410
  if (conn.groundNodeId != null)
@@ -219,6 +486,160 @@ export function validateTraceStructure(doc, options = {}) {
219
486
  }
220
487
  return issues;
221
488
  }
489
+ function findInputLoadingWarnings(doc, conn, input, nodes) {
490
+ const inputNode = jackSignalNode(conn, input);
491
+ if (inputNode === undefined)
492
+ return [];
493
+ const references = new Set([...nodes.ground, ...nodes.audioReferences]);
494
+ const issues = [];
495
+ for (const component of doc.components) {
496
+ if (component.kind !== "resistor")
497
+ continue;
498
+ const value = componentValue(component);
499
+ const componentNodes = uniqueNodesOf(conn, component);
500
+ if (value === null ||
501
+ value > INPUT_LOADING_WARNING_OHMS ||
502
+ componentNodes.length !== 2 ||
503
+ !componentNodes.includes(inputNode)) {
504
+ continue;
505
+ }
506
+ const otherNode = componentNodes.find((node) => node !== inputNode);
507
+ if (otherNode === undefined || !references.has(otherNode))
508
+ continue;
509
+ issues.push({
510
+ code: "trace-input-loading-extreme",
511
+ severity: "warning",
512
+ message: `${component.id} loads audio input ${input.id} with ${fmt(value)} ohm to an AC reference; double-check the value and input trace.`,
513
+ componentId: component.id,
514
+ });
515
+ }
516
+ return issues;
517
+ }
518
+ function findAudioShuntWarnings(doc, conn, input, output, nodes) {
519
+ const inputNode = jackSignalNode(conn, input);
520
+ const outputNode = jackSignalNode(conn, output);
521
+ const issues = [];
522
+ for (const capacitor of doc.components) {
523
+ if (capacitor.kind !== "capacitor")
524
+ continue;
525
+ const capacitance = componentValue(capacitor);
526
+ const capacitorNodes = uniqueNodesOf(conn, capacitor);
527
+ if (capacitance === null || capacitorNodes.length !== 2)
528
+ continue;
529
+ const [nodeA, nodeB] = capacitorNodes;
530
+ if (nodeA === undefined || nodeB === undefined)
531
+ continue;
532
+ const aIsReference = nodes.ground.has(nodeA) || nodes.audioReferences.has(nodeA);
533
+ const bIsReference = nodes.ground.has(nodeB) || nodes.audioReferences.has(nodeB);
534
+ if (aIsReference === bIsReference)
535
+ continue;
536
+ const signalNode = aIsReference ? nodeB : nodeA;
537
+ if (nodes.supplies.has(signalNode))
538
+ continue;
539
+ const path = shortestPathNodes(inputNode, outputNode, audioSignalEdges(doc, conn, nodes.blocked, capacitor.id));
540
+ if (!path?.includes(signalNode))
541
+ continue;
542
+ const adjacent = doc.components.filter((component) => {
543
+ if (component.kind !== "resistor" || componentValue(component) === null) {
544
+ return false;
545
+ }
546
+ const resistorNodes = uniqueNodesOf(conn, component);
547
+ return (resistorNodes.length === 2 &&
548
+ resistorNodes.includes(signalNode) &&
549
+ resistorNodes.every((node) => node === signalNode || !nodes.blocked.has(node)));
550
+ });
551
+ const resistor = adjacent.sort((a, b) => (componentValue(a) ?? Infinity) - (componentValue(b) ?? Infinity))[0];
552
+ if (!resistor)
553
+ continue;
554
+ const resistance = componentValue(resistor);
555
+ if (resistance === null)
556
+ continue;
557
+ const cornerHz = 1 / (2 * Math.PI * resistance * capacitance);
558
+ const attenuation = 1 / Math.sqrt(1 + (AUDIO_SHUNT_REFERENCE_HZ / cornerHz) ** 2);
559
+ const attenuationDb = 20 * Math.log10(attenuation);
560
+ if (attenuationDb > AUDIO_SHUNT_WARNING_DB)
561
+ continue;
562
+ issues.push({
563
+ code: "trace-audio-shunt-extreme",
564
+ severity: "warning",
565
+ message: `if declared connectivity is correct, ${resistor.id} and ${capacitor.id} form an audio-path shunt with ~${cornerHz.toFixed(1)} Hz low-pass corner and ${attenuationDb.toFixed(1)} dB at 1 kHz; double-check the node assignment and both values.`,
566
+ componentId: capacitor.id,
567
+ });
568
+ }
569
+ return issues;
570
+ }
571
+ function findOpampFeedbackWarnings(doc, conn, input, output, nodes) {
572
+ const inputNode = jackSignalNode(conn, input);
573
+ const outputNode = jackSignalNode(conn, output);
574
+ const edges = passivePathEdges(doc, conn, nodes.blocked);
575
+ const issues = [];
576
+ for (const component of doc.components) {
577
+ if (component.kind !== "opamp" ||
578
+ !componentRole(doc, component).includes("buffer")) {
579
+ continue;
580
+ }
581
+ const plus = terminalNode(conn, component, [
582
+ "positive",
583
+ "plus",
584
+ "nonInverting",
585
+ ]);
586
+ const minus = terminalNode(conn, component, [
587
+ "negative",
588
+ "minus",
589
+ "inverting",
590
+ ]);
591
+ const out = terminalNode(conn, component, ["out", "output"]);
592
+ if (!reachable(inputNode, plus, edges) ||
593
+ !reachable(out, outputNode, edges) ||
594
+ out === undefined ||
595
+ minus === undefined ||
596
+ out === minus ||
597
+ reachable(out, minus, edges)) {
598
+ continue;
599
+ }
600
+ issues.push({
601
+ code: "trace-opamp-feedback-open",
602
+ severity: "warning",
603
+ message: `${component.id} is declared as an audio buffer on the input/output path but has no passive negative-feedback path from output to inverting input; double-check its pins and feedback trace.`,
604
+ componentId: component.id,
605
+ });
606
+ }
607
+ return issues;
608
+ }
609
+ /** Role-aware audio warnings. Locally coverage-gated and opt-in from the aggregate API. */
610
+ export function validateAudioTopologyWarnings(doc, options = {}) {
611
+ const conn = options.connectivity ?? resolveConnectivity(doc);
612
+ const ports = audioPorts(doc);
613
+ if (ports.inputs.length !== 1 || ports.outputs.length !== 1) {
614
+ return [
615
+ {
616
+ code: "trace-audio-role-ambiguous",
617
+ severity: "warning",
618
+ message: `audio topology checks skipped: expected exactly one audio input and one audio output, found ${ports.inputs.length} input(s) and ${ports.outputs.length} output(s).`,
619
+ },
620
+ ];
621
+ }
622
+ const input = ports.inputs[0];
623
+ const output = ports.outputs[0];
624
+ if (!input || !output)
625
+ return [];
626
+ const inputNode = jackSignalNode(conn, input);
627
+ const outputNode = jackSignalNode(conn, output);
628
+ if (inputNode === undefined ||
629
+ outputNode === undefined ||
630
+ (conn.nodeMembers.get(inputNode)?.length ?? 0) < 2 ||
631
+ (conn.nodeMembers.get(outputNode)?.length ?? 0) < 2) {
632
+ return [
633
+ connectivityIncompleteIssue(traceConnectivityCompleteness(doc, conn)),
634
+ ];
635
+ }
636
+ const nodeSets = audioNodeSets(doc, conn, options.nodeRoles, ports);
637
+ return [
638
+ ...findInputLoadingWarnings(doc, conn, input, nodeSets),
639
+ ...findAudioShuntWarnings(doc, conn, input, output, nodeSets),
640
+ ...findOpampFeedbackWarnings(doc, conn, input, output, nodeSets),
641
+ ];
642
+ }
222
643
  /** Connectivity-independent: flags R/C values off the E24 grid. Noisy — OPT-IN. */
223
644
  export function validatePreferredValues(doc) {
224
645
  const issues = [];
@@ -269,7 +690,7 @@ export function validateRcCornerHeuristic(doc, options = {}) {
269
690
  break;
270
691
  for (const m of conn.nodeMembers.get(nid) ?? []) {
271
692
  const r = byId.get(m.componentId);
272
- if (!r || r.kind !== "resistor")
693
+ if (r?.kind !== "resistor")
273
694
  continue;
274
695
  const rv = componentValue(r);
275
696
  if (rv == null || rv <= 0)
@@ -293,6 +714,15 @@ export function validateRcCornerHeuristic(doc, options = {}) {
293
714
  /** Default advisory run: structure only (coverage-gated). Opt-in extras via options. */
294
715
  export function validateTracePlausibility(doc, options = {}) {
295
716
  const issues = [...validateTraceStructure(doc, options)];
717
+ if (options.includeAudioTopology) {
718
+ for (const issue of validateAudioTopologyWarnings(doc, options)) {
719
+ if (issue.code === "trace-connectivity-incomplete" &&
720
+ issues.some((existing) => existing.code === issue.code)) {
721
+ continue;
722
+ }
723
+ issues.push(issue);
724
+ }
725
+ }
296
726
  if (options.includePreferredValue)
297
727
  issues.push(...validatePreferredValues(doc));
298
728
  if (options.includeRcCorner)
@@ -1 +1 @@
1
- {"version":3,"file":"trace-plausibility.js","sourceRoot":"","sources":["../../src/model/trace-plausibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-plausibility.js","sourceRoot":"","sources":["../../src/model/trace-plausibility.ts"],"names":[],"mappings":"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"}
@@ -304,6 +304,7 @@ export type MechanicalBuildMetadata = VdspBuildDataObject & Readonly<{
304
304
  export type CircuitPowerCoverage = "explicit-topology" | "declared-rails" | "external-unspecified" | "not-applicable";
305
305
  export type CircuitPowerGroundPolarity = "negative-ground" | "positive-ground" | "bipolar";
306
306
  export type CircuitPowerRailRole = "main-supply" | "bias-reference" | "regulated-output" | "charge-pump-output" | "negative-supply";
307
+ export type CircuitPowerSourceKind = "mains-ac" | "external-dc";
307
308
  export type CircuitPowerRailDerivation = "direct" | "divider" | "regulator" | "inverter" | "doubler" | "isolated" | "unspecified";
308
309
  export type CircuitPowerRailBinding = VdspBuildDataObject & Readonly<{
309
310
  railComponentId: string;
@@ -318,6 +319,7 @@ export type CircuitPowerDomain = VdspBuildDataObject & Readonly<{
318
319
  sourceComponentIds: readonly string[];
319
320
  ratedVoltage?: ParsedQuantity;
320
321
  groundPolarity: CircuitPowerGroundPolarity;
322
+ sourceKind?: CircuitPowerSourceKind;
321
323
  rails: readonly CircuitPowerRailBinding[];
322
324
  }>;
323
325
  export type CircuitPower = VdspBuildDataObject & Readonly<{