Error message
In the message, %s marks a value that the engine fills in when it raises the error.
The story
Something that does work just tried to move into the house reserved for plain values, and the door stayed shut. In rush, the DataHeap is the home of nouns, inert values. Verbs and flows, which do work, belong in the ExecHeap. The DataHeap has one placement door, and it admits exactly one kind: the kind that the inert answer derives. When something else arrives, an execution looking for an address in the wrong neighborhood, the door refuses. The engine cannot catch this at compile time, because a kind is read from trinity.feml when the engine is born, so no compiler knows what kind a pointer carries. The check runs at runtime, and notably before the payload is stored. Why before? If it ran afterward, a wrong-kind caller could receive the address of an existing legitimate tenant, no new cell would be created, and every scan would look perfectly clean while an execution quietly held a DataHeap address. The message names the kind that was offered. The fix is on the caller side: place executions in the ExecHeap, and only inert values in the DataHeap.
Text from the Rush engine's error catalogue.
