Well, I think this is right, not sure if it was like that for a reason, but this does cause rules to run for no reason after a certain precide series of events I won't bore you with. Look for one new line below:
(defmethod md-slot-value-assume (c raw-value propagation-code) (assert c) #+shhh (trc c "md-slot-value-assume entry" (c-state c)) (without-c-dependency (let ((prior-state (c-value-state c)) (prior-value (c-value c)) (absorbed-value (c-absorb-value c raw-value)))
(c-pulse-update c :slotv-assume)
; --- head off unchanged; this got moved earlier on 2006-06-10 --- (when (and (not (eq propagation-code :propagate)) (find prior-state '(:valid :uncurrent)) (c-no-news c absorbed-value prior-value)) (trc nil "(setf md-slot-value) > early no news" propagation-code prior-state prior-value absorbed-value) (count-it :nonews) ===new==> (setf (c-value-state c) :valid) ; in case it was :uncurrent (return-from md-slot-value-assume absorbed-value))
...etc unchanged...
Not committing to CVS cuz I don't want to break things, kinda too bust with Algebra to handle any fallout. kt