 
 ; --------------------------------------------------------
 
-(defn ago-chan-buf [ago-world buf]
-  (channels/ManyToManyChannel.
-   (fifo-buffer ago-world (str (.-buf-id buf) "-takes") -1) 0
-   (fifo-buffer ago-world (str (.-buf-id buf) "-puts") -1) 0
-   buf false))
+(defn ago-chan-buf [ago-world buf & default-buf-id]
+  (let [buf-id (if buf
+                 (.-buf-id buf)
+                 (or (first default-buf-id) "unknown"))]
+    (channels/ManyToManyChannel.
+     (fifo-buffer ago-world (str buf-id "-takes") -1) 0
+     (fifo-buffer ago-world (str buf-id "-puts") -1) 0
+     buf false)))
 
 (defn ago-chan
   "Creates a channel with an optional buffer. If buf-or-n is a

                  (assoc :seqv (conj (:seqv ss) branch-id 0))
                  (assoc :bufs (:bufs ss))
                  (assoc :smas recycled-smas)
                  (assoc :smas-new recycled-smasN)))
      (doseq [[sma-old ss-buf] reborn-smas]
        (ago-revive-state-machine ago-world sma-old ss-buf))
      (doseq [[sma-old ss-buf] reborn-smasN]
        (ago-revive-state-machine ago-world sma-old ss-buf))
      ago-world))

           :smas-new {} ; Same as :smas, but for new, not yet run goroutines.
           :logical-ms 0      ; Logical time/msecs, which is always updated
           :physical-ms (now) ; at the same time as physical-ms time snapshot.
           :timeouts (sorted-map) ; Keyed by logical-ms => '(timeout-ch ...).
           })))

(defn seqv+ [ago-world-now]
