> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tracelit.io/llms.txt
> Use this file to discover all available pages before exploring further.

# August 7, 2026

> Service-name slots, archive-by-name & ingest expectations

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

<Badge>Latest</Badge>

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.
