Skip to content

Latest commit

 

History

History
90 lines (66 loc) · 2.34 KB

File metadata and controls

90 lines (66 loc) · 2.34 KB

Formula (mathNode)

Category: Math & Compare

Intended behavior

Free-form formula over auto-growing lettered inputs (a, b, c…). Numbers compute, strings concatenate.

Inputs

ID Label Type Unwired default
a A any 1
b B any 1
enabled Enabled boolean true

Outputs

ID Label Type Default
out Result any undefined

Configuration defaults

{
  "expression": "a + b",
  "dynamicInputs": true
}

Observed frontend behavior

This calls the production passive computation with the declared input/config defaults. Cached state, trigger execution and project wiring are separate.

{
  "kind": "passive-default-probe",
  "outputs": {
    "out": 2
  }
}

Observed backend behavior

Offline production passive computation with the same declared defaults; no device or model service is invoked.

{
  "kind": "passive-default-probe",
  "outputs": {
    "out": 2
  }
}

Current frontend implementation

Extracted production branches; helper calls and project execution context are defined in the referenced modules.

src/lib/execution-helpers.ts:176

case "mathNode": {
      const expr = config.expression ?? "a + b";
      const ctx: Record<string, any> = {};
      // Ports are named a/b/c… but display as A/B/C on the node — accept
      // either case in the formula so typing what you see on the node works.
      for (const key of Object.keys(inputs)) {
        const val = coerceOperand(inputs[key]);
        ctx[key] = val;
        ctx[key.toUpperCase()] = val;
      }
      outputs.out = safeEvaluate(expr, ctx);
      break;
    }

Implementation references

Verification limits

  • Default passive probe is an observation, not proof of all configurations, trigger behavior, or correctness. See ../NODE_RUNTIME_AUDIT.md and ../AUDIT_VALIDATION.md for test evidence.
  • Enabled=false uses the runtime bypass mapping; bypass output can differ from the normal declared output type.

Source fingerprint: 7e9d192bd3a559a7c50253919867601ef02c311d61e859f7afb4cadcfa508430. Rebuild with npm run docs:index.