Skip to main content

August 7, 2026 — Service-name slots, archive-by-name & ingest expectations

Latest Commercial service limits and archiving now follow distinct service names, not every environment row. Local, development, and production under the same name share one slot.

API

Archive / unarchive by service name
  • PATCH .../services/:id/archive and .../unarchive archive all environments that share that service name.
  • Ingest rejects telemetry for archived names with HTTP 403 and error: "service_archived" (instead of silently dropping or counting as a new slot).
  • Creating a new environment under an archived name is blocked the same way.
Ingest expectations (onboarding)
  • New ExpectIngest / ClearExpectIngest endpoints reserve a service name + environment while you finish OTLP setup.
  • Migration 137_workspace_ingest_expectations backs the reservation table.
  • Per-environment ingest keys reject exports whose service.name does not match the bound service (service_name_mismatch).
Site script verification
  • Site verify accepts an optional ?since= timestamp so onboarding only passes on new frontend events, not historical traffic.
CORS
  • Ingest/API CORS allowlist includes the X-Environment request header used by the frontend tracker.

Dashboard

  • Utilities → Archive for sites and services, with confirmation before archive and redirect home after success.
  • Environment utilities surface workspace / per-env keys and stack icons for local / development / production.