The following code, which works well with Zygote, produces the detailed unexpected behavior:
using Flux.Tracker
f(x) = [x^2+1, -x^3]
y, back = Tracker.forward(f, 1)
back([0,1]) # (-3.0 (tracked),)
back(1) # should fail, but gives (2.0 (tracked),)
back([0,1]) # (0.0 (tracked),) (!?)