Stopped cashing gl.program values are they are not guaranteed to remain constant throughout the lifetime of the application.  Instead, cached the Shader References, and call Programs.Serve(shader references).  That way, even though slower, is more robust.