Static Data Node
Overview
Section titled “Overview”Static Data lets you keep a small tabular dataset inside the workflow config. You edit cells in the node editor, paste from a spreadsheet, or import CSV/TSV/Excel once. Downstream nodes read the output port like any other tabular source.
Unlike File Input, Static Data does not keep an uploaded file, engine file attachment, or past-file history after the grid is in the node. The grid in config is the source of truth.
When to use Static Data
Section titled “When to use Static Data”- Reference, replace and map tables that belong with the workflow template
- Collapsing stacks of per-field replace operations into one table-driven transform
- Small to medium tables you want versioned with the workflow
Use File Input when the dataset is a large operational file that belongs on disk or the engine file store.
Editing
Section titled “Editing”- Open the node editor Static Data tab for VirtualDataGrid editing
- Paste from Excel, Google Sheets, or LibreOffice at the selection (TSV, CSV,
;-separated locales, and HTML table clips) - Import CSV, TSV, or XLSX (pick one sheet for multi-sheet workbooks). Import replaces the entire grid; you confirm when the grid is non-empty
- Clear grid keeps column definitions and empties all rows
- Shift-click selects a row range; Delete or Backspace removes selected rows (row menu Delete also covers the selection)
- Column types sit on each header (string by default, or number, boolean, date). Paste and import coerce into the declared type and fail closed on bad values
Wiring a static table into another node
Section titled “Wiring a static table into another node”Wire Static Data output into another node. That wire is a named table on the receiving node, and the wire’s handle is the table’s name: the first wire into a node takes the handle input, and each further wire takes a handle from the source node’s title, which you can rename on the Overview panel. See Wires and named tables.
A Formula operation on the receiving node reads the table with inputs().prop(handle):
setProp("venue_name", inputs().prop("venues").find("code", prop("venue")).prop("name"))Or add the Lookup transformation, which names the same handle in params.lookupKey and copies selected columns (take: [{ column, as? }]) onto the row.
Static Data has no input port, so nothing wires into it. When you save or import Workflow JSON that has an edge into Static Data, or into any port its target node does not have, Fontana rejects the JSON and the error names each edge to remove or re-target.
Explore templates Static Data Replacements and Multi-table Lookup Enrichment show stacked Lookup operations against one or more Static Data tables. Exception Ticket Persistence uses Static Data as the primary blotter, appended into Schema by a merge formula, so you can edit failing trades and re-run Exception Management in your clone of the Workspace.
In-app agents
Section titled “In-app agents”An agent works on a Static Data node through two skills. Edit workflow files adds the node by copying the contract Fontana Files serves at .fontana/nodes/<type>.default.json (here staticData.default.json), gives it a new id and a title, fills in the grid, and wires it into the receiving node. Edit formula writes the merge formula on that receiving node, checks it with formula_check, and saves it through the same session.
A formula that reads inputs().prop(handle) is the recommended path, because it keeps the lineage and styles of every cell it copies. Re-seed agents and skills after platform updates so those instructions stay current.
Canvas face
Section titled “Canvas face”The card shows a small aspect-ratio grid preview (same layout language as Subgrid) plus row×column counts. Edit in the node editor, not on the card.