conclude.rb line 249 calls prev[follow.to_s].each. In Factbase, if a property doesn't exist on a fact, fact[property] returns nil. Calling .each on nil raises NoMethodError. If a query matches facts where some lack the follow properties, the entire conclude operation crashes mid-transaction.
REPRODUCTION: Use follow('nonexistent_property') with a query that matches facts lacking that property.
IMPACT: RuntimeError/NoMethodError during conclude; partial processing (some facts processed, some not); factbase may be left in inconsistent state.
conclude.rb line 249 calls prev[follow.to_s].each. In Factbase, if a property doesn't exist on a fact, fact[property] returns nil. Calling .each on nil raises NoMethodError. If a query matches facts where some lack the follow properties, the entire conclude operation crashes mid-transaction.
REPRODUCTION: Use follow('nonexistent_property') with a query that matches facts lacking that property.
IMPACT: RuntimeError/NoMethodError during conclude; partial processing (some facts processed, some not); factbase may be left in inconsistent state.