# Provenance What flowrs-core takes from other projects, beyond the crates it depends on. Each module that ports more than an idea says so here. ## Graph functions (`src/graph/function.rs`) **Ideas only, no code copied.** The model is LabVIEW's subVI (a subgraph with a typed connector pane, called from many diagrams), with three choices taken from elsewhere: - boundary nodes for a function's inputs and outputs, each with a name, a type, a default and a place in the signature: Unreal Engine's material functions (`FunctionInput`, `FunctionOutput`, their `SortPriority` and preview value), from Epic's documentation; - a call pins the exact version it was made against and a newer version sits beside it: Houdini's digital assets (`name::version`) and APEX's graph functions, from SideFX's documentation; - recursion refused and the call depth bounded, at both tiers: LabCraft's `--max-call-depth` (`docs/cli.md`), whose default of 1,024 is lower here (64) because flowRS's interpreter recurses on the thread's stack. ## The station call tree (`src/graph/corpus/station_call_tree.fdsl`) **Translated, no code copied:** LabCraft, , read at commit `22b8dff`, MIT OR Apache-2.0 (`Cargo.toml`, `NOTICE`), its contributors' copyright. The call tree and what each function does are LabCraft's example programs: | here | there | |---|---| | `station@1`: steps run in turn, the run passes when each does | `examples/station.lcf` | | `run_step@1`: set the supply, settle, compare the reading with the step's low and high limits | `examples/run_step.lcf` | | `settle@1`: read, compare with the target within a tolerance (0.2 V at its call, as there) | `examples/settle.lcf` | | `dmm_driver.read_dc_volts@1`: `MEAS:VOLT:DC?`, the answer in volts | `examples/dmm_driver/read_dc_volts.lcf` | | `scpi.query_f64@1`: a query whose answer is a number | `libs/scpi/query_f64.lcf` | Where this differs, on purpose: there is no VISA session, error wire, state machine or loop (flowRS has none of the first three yet, and phase 1 refuses a held wire in a body), so settle reads once, the station runs its two steps side by side, and the instrument is simulated as a supply behind 0.05 ohm under a 0.5 A load, in place of LabCraft's simulation file.