LABELLED PROVIDER UNIT HARNESS — after HEAD 2102cdbc8d5fd3f66c3b9d524c4456b80ba59ccf CWD /home/ubuntu/wt/pr-26186-after/infra/relay No Cloudflare resources were created; provider, allocation and limit clients in these unit tests are fake. This harness does not prove real PgClient commit-before-CF ordering. ROW P01: provisions a Cloudflare tunnel endpoint and connector token | reuses checkpointed resources when provisioning is retried Unit harness captures reserve then provisioning calls; no real DB commit observation, no EnvironmentLinker invocation. ROW P02: recovers a ready tunnel for the same origin with only reads | fully provisions a recovery when the ready tunnel cannot be reused Unit harness captures ready reuse, wrong-origin fallback and missing-tunnel fallback. Released-ready allocation, over-quota recovery and HTTP caller mapping are unverified. ROW P03: refuses to provision past the managed tunnel limit without side effects Unit harness preserves the exact Exceeded object and skips allocation/tunnel/DNS calls. EnvironmentLinker and recovery HTTP error mapping are unverified. ROW P04: NO EXISTING TEST Unverified: no existing ManagedEndpointProvider.test.ts test injects ManagedTunnelLimitPersistenceError or checks check-tunnel-limit mapping. No new tests written. ROW P05: NO EXISTING TEST Unverified: no existing ManagedEndpointProvider.test.ts test injects reserve persistence failure or checks reserve-allocation mapping. E01 is dropped. No new tests written. ROW P06: rejects non-loopback managed endpoint origins before calling Cloudflare Partial unit harness only. Missing CF config, digest failure and managed=false publish-only bypass have no existing tests in this provider file and remain unverified. ROW P07: does not hide non-not-found checkpoint update failures | reports mismatched tunnel responses without manufacturing a cause | keeps a newly created tunnel available for retry after losing its allocation claim Partial unit harness captures existing failure stages and retry preservation. No existing test covers the paired pre/post-recordTunnel failures with persisted real rows and T then T+15m clock transition; quota aftermath remains unverified. COMMAND: vp test run src/environments/ManagedEndpointProvider.test.ts EXIT: 0 note: You are running `vp test` as a Vite+ built-in command. If you meant to run the test npm script, use `vpr test` instead. RUN v5.0.5 /home/ubuntu/wt/pr-26186-after/infra/relay Test Files 1 passed (1) Tests 31 passed (31) Start at 03:52:49 Duration 4.69s (import 84%, transform 12%, tests 4%) SUPPLEMENTARY COMMAND: vp test run src/environments/ManagedEndpointProvider.test.ts --reporter=verbose EXIT: 0 note: You are running `vp test` as a Vite+ built-in command. If you meant to run the test npm script, use `vpr test` instead. RUN v5.0.5 /home/ubuntu/wt/pr-26186-after/infra/relay ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > provisions a Cloudflare tunnel endpoint and connector token 24ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > refuses to provision past the managed tunnel limit without side effects 4ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > uses stage-scoped stable names without leaking unusual environment ids 4ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > formats IPv6 loopback origins as valid Cloudflare ingress service URLs 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > rejects non-loopback managed endpoint origins before calling Cloudflare 4ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > reuses checkpointed resources when provisioning is retried 5ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > recovers a ready tunnel for the same origin with only reads 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > fully provisions a recovery when the ready tunnel cannot be reused 5ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > keeps a pause recorded while a shared pause read was in flight 6ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > does not hide non-not-found checkpoint update failures 4ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > deprovisions checkpointed DNS and tunnel resources before removing the allocation 5ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > does not deprovision an allocation superseded by a concurrent relink 4ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > releases the tunnel while keeping the allocation, DNS record, and hostname 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > keeps the tunnel alive when a concurrent provision outdates the release claim 2ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > does not release a tunnel when the requested tunnel id is outdated 2ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > keeps a tunnel when a provision replaces an ordinary release generation 4ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > asks for recovery when the recorded tunnel was deleted 4ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > updates Cloudflare ingress once when the registered port changes 2ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > rejects an active endpoint that does not match the allocation hostname 2ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > keeps a newly created tunnel available for retry after losing its allocation claim 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > does not change tunnel ingress after another provision takes ownership 2ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > does not change DNS after another provision takes ownership 2ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > keeps a tunnel that reconnects before scheduled deletion 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > resolves a delete whose response was lost by checking whether the tunnel is gone 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > resolves a delete whose response was lost by checking whether the tunnel still exists 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > reports a tunnel with an attached connector as not released 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > keeps the allocation when tunnel cleanup fails so unlink can retry 4ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > treats already deleted remote resources as successfully deprovisioned 2ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > scopes managed endpoint resources by user 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > recovers when DNS creation reports failure after the record became visible 3ms ✓ src/environments/ManagedEndpointProvider.test.ts > ManagedEndpointProvider > reports mismatched tunnel responses without manufacturing a cause 3ms Test Files 1 passed (1) Tests 31 passed (31) Start at 03:57:05 Duration 4.89s (import 94%, tests 3%, transform 3%)