Release v0.4.14

- fix(#490): the Tiered 'cross-node L1 invalidation is OFF' advisory was decided
  at defaultBackend() build time, but enableInvalidation() needs a coroutine and
  is only legal from an App::onWorkerStart() hook — so the warning was
  structurally unsatisfiable, and its always-winning branch MASKED the security
  advisory (invalidation ON but UNAUTHENTICATED: any Redis writer can forge an
  L1-evict and DoS the cluster's caches). Decision now deferred past the
  worker-start hook chain, worker-0 gated, idempotent, evaluated against the
  current backend. 7 new tests pin the timing contract.
- docs(#489): error_log() is overridden to write into debug.log, not stderr —
  previously undocumented, and invisible in containers. Documented with a
  four-way probe table plus a container-friendly logging recipe
  (php://stdout / php://stderr).
- docs(#491): App::onWorkerStart() is called as $fn($server, $workerId); the
  one-arg example bound the Server to $workerId, silently breaking the
  'worker 0 only' idiom. Example fixed + explicit signature section added.

ext-zealphp pin unchanged (v0.3.60).