Expand description
refine_polymorphic_value_info — narrows the placeholder
TYPE_TENSOR denotation stamped by the DSL recorder on every
Contract-method NodeProto to each bound concrete’s actual
Storage::TYPE.
Runs BEFORE run_pipeline (and therefore BEFORE type_solver)
so the solver walks the narrowed denotations, not the placeholder
ones. Because this pass needs access to BindingSpec it lives in
Compiler::compile() alongside validate_all_slots_bound, not
inside the canonical runner pipeline (which has no binding
context). validate_all_slots_bound runs AFTER the pipeline to
confirm every bound slot was used.
Pass order: refine_polymorphic_value_info → run_pipeline
(containing type_solver) → validate_all_slots_bound.