You defined the "ball of twine" to have associated noun "twine". You made ball an alias for twine, therefore when you ask about ball, adventuron sees "ask about twine".
If you want things to be different, then define your "ball of twine" to have noun "ball".
If you were using s1() and disambiguate_s1() then explicitly checking for one particular noun alias wouldn't be necessary. Adventuron is doing exactly what it should be doing. You created a mapping between ball and twine (from ball to twine). That's why Adventuron sees it as twine. If you don't want the associated, then don't make twine the primary noun for your ball.
e.g.
// Now the primary noun is "ball". ball : object "a ball of twine" ...... ;