   (state-set/constrain (state/transfer-effects input-set (osp-output-set sub-output-set-pointer))
                        output-constraint))
 
-(defn compute-plan-node-output-summary [input-summary sub-output-set-pointer summary-bound]
+
+(defn make-live-for-split [sub-osp ecs summary]
+  (if (and (blocked? summary) (can-split-osp? sub-osp ecs))
+    (make-live-summary (max-reward summary))
+    summary))
+
+
+(defn compute-plan-node-output-summary [input-summary sub-output-set-pointer ecs summary-bound]
   (->> (full-osp-summary sub-output-set-pointer)
-       (min-summary summary-bound )
+       (min-summary summary-bound)
+       (make-live-for-split sub-output-set-pointer ecs)
        (add-summaries input-summary)))
 
 (defn make-plan-node [input-set input-summary sub-output-set-pointer
                       excluded-child-set output-constraint summary-bound]
   (PlanNode. sub-output-set-pointer excluded-child-set output-constraint summary-bound
              (compute-plan-node-output-set input-set sub-output-set-pointer output-constraint)
-             (compute-plan-node-output-summary input-summary sub-output-set-pointer summary-bound)))
+             (compute-plan-node-output-summary input-summary sub-output-set-pointer excluded-child-set summary-bound)))
 
 (defn make-initial-plan-node [action [input-set input-summary]]
   (let [sub (get-subproblem-root-pointer input-set action (constantly is/pos-inf))]
     (make-plan-node input-set input-summary sub #{} {} +best-summary+)))
 
-
 (defn plan-node-output-set-and-summary [pn]
   [(:output-set pn) (:output-summary pn)])
 


(defn osp-plan-summary [osp] (osn-plan-summary @(:node-atom osp)))

(defn active-osp-summary [osp excluded-child-set]
  (min-summary (:alt-summary osp)
              (apply max-summary
                     (osn-summary @(:node-atom osp) excluded-child-set)
                     (map osn-plan-summary (osp-ancestors osp)))))

(defn refine-osp!
  "Repeatedly refine an ancestor or descendent of this node."

          (patch-pn-summary-tuple- pn new-input-summary)
          (let [new-pn (make-plan-node new-input-set new-input-summary new-osp nil
                                (osp-output-set sub-output-set-pointer)
                                (make-blocked-summary (max-reward (full-osp-summary sub-output-set-pointer)))) ;; This is just the bound, equal to the initial thing.                
                new-output-pair (plan-node-output-set-and-summary new-pn)]
            (when (viable-output-set-and-summary? new-output-pair)
              [(cons (not (= (:output-set new-pn) output-set)) new-output-pair) new-pn]))))      
