FeatureNode
A single authored operator node in a concept's feature DAG.
This is the authored representation — it mirrors the YAML format used
in concept definitions. The inputs dict maps each operator input slot
name to either a primitive name (e.g. 'user.activity_count') or another
feature name in this concept (e.g. 'activity_drop').
The compiler resolves symbolic names to upstream node_ids when producing GraphNode. output_type is NOT set by the author — it is inferred by the type checker during compilation.
params carries operator-specific parameters (e.g. {'window': '30d'} for pct_change or moving_average). Duration values must follow the format: positive integer + suffix (h/d/w/m/y). E.g. '30d', '4w'.
opOp (string)required
inputsobjectrequired
paramsobject
FeatureNode
{
"op": "string",
"inputs": {},
"params": {}
}