gw-10 — Verification

One command

cd gw-10-gateway-api-operators && bash scripts/verify.sh

What the tests prove

TestInvariant
TestLevelTriggeredSelfHealingstatus flips on its own when the underlying Service appears — no CR change needed (level-triggered)
TestIdempotentReconcilereconciling identical state 5× pushes the data plane once (content-hash idempotency)
TestStatusProgrammedOnlyAfterSuccessProgrammed=true only after the push succeeds; a failed push → Programmed=false/PushFailed (the CR's xDS-NACK analog)
TestFinalizerCleanupdelete → Terminating (object kept) → reconcile deprograms + drops finalizer → object removed
TestDeleteReprogramsRemainingdeleting one route leaves the data plane with exactly the others
TestControllerProcessesQueuethe work-queue controller reconciles enqueued keys

All under -race.

Demo (operatordemo, in verify.sh)

Shows the full lifecycle: apply (service missing → Accepted=false), self-heal (service created → Programmed=true), idempotent reconciles (pushes stays 1), delete (Terminating), finalizer cleanup (removed + data plane reprogrammed to 0 routes).

What "green" does NOT guarantee

  • In-memory apiserver, not real Kubernetes. Production uses controller-runtime + a real apiserver (informers, rate-limited requeue, leader election) — the level-triggered core is identical (steps/01).
  • EdgeRoute is a stand-in for HTTPRoute. Full Gateway API conformance is out of scope (CONCEPTS §3).
  • DataPlane is MemDataPlane. Wiring it to gw-08 xDS → real Envoy is an exercise (GUIDE §7.1).