                   (let [sink (make-array (alength var-ixes))]
                     (dotimes [i (alength var-ixes)]
                       (aset sink i (aget source (aget var-ixes i))))
-                    (Fact. nil sink)))))))))))
+                    (Fact. nil sink nil)))))))))))
 
 (comment
   (deffact eg "[a] has a [b] with a [c]")

            sink (aclone values)]
        (dotimes [i (alength source-ixes)]
          (aset sink (aget sink-ixes i) (aget source (aget source-ixes i))))
        (Fact. shape sink)))))

(defn pattern->deconstructor [pattern]
  (let [shape (.-shape pattern)

  (fixpoint! state-0)
  (for [state (take 5 (iterate #(tick&fixpoint plan %) state-0))]
    (count (get-facts state :known))))

  (let [rules [(Rule. [
                       (aurora.language.Recall. :known&pretended, (js/aurora.language.fact :http/response #js ['content "google" 'some]))
                       (aurora.language.Output. :remembered (js/aurora.language.fact "1df7454c_069e_40ab_b117_b8d43212b473" #js ['value74]))
                       (aurora.language.Output. :forgotten (js/aurora.language.fact "1df7454c_069e_40ab_b117_b8d43212b473" #js ['value]))
                       (aurora.language.Recall. :known&pretended, (js/aurora.language.fact "1df7454c_069e_40ab_b117_b8d43212b473" #js ['value]))
                       (aurora.language.Compute. (->Let 'value74  #{'value} "value + \"hey\""))])]
        plan (add-rules empty-flow-plan rules)
        state (flow-plan->flow-state plan)]
    (add-facts state :known [(fact. "1df7454c_069e_40ab_b117_b8d43212b473" #js ["Click me"])])
    (add-facts state :pretended [(fact. :http/response #js ["yo" "google" 1234])])
    (fixpoint! state)
    (-> state
        (get-facts :known)
        first
        (.-values))
  )
  )
