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 namePATCH .../services/:id/archiveand.../unarchivearchive all environments that share that service name.- Ingest rejects telemetry for archived names with HTTP
403anderror: "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.
- New
ExpectIngest/ClearExpectIngestendpoints reserve a service name + environment while you finish OTLP setup. - Migration
137_workspace_ingest_expectationsbacks the reservation table. - Per-environment ingest keys reject exports whose
service.namedoes not match the bound service (service_name_mismatch).
- Site verify accepts an optional
?since=timestamp so onboarding only passes on new frontend events, not historical traffic.
- Ingest/API CORS allowlist includes the
X-Environmentrequest 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.