Check the SQL generated in the log. I'm noticing that the memory
version of the has_may record is not having its cache value being
updated, even when a "parent.child.create" is executed in a 1.2.2
rails. I'll wager your code is triggering the SQL update of the
cache counter increment, but that the update without a reload is
overwriting the counter cache with the pre-creation value.
I'll wager that the increment SQL was fired off, but that the old
value of the cache got rewritten during the update. A work-around
might be to reload the Proposal record before the update (yick!)