Platform
ScaiWave ScaiGrid ScaiCore ScaiBot ScaiDrive ScaiKey Models Tools & Services
Solutions
Organisations Developers Internet Service Providers Managed Service Providers AI-in-a-Box
Resources
Support Documentation Blog Downloads
Company
About Research Careers Investment Opportunities Contact
Log in

Reserved identifiers

Some names and prefixes are reserved by ScaiLog and rejected if you try to use them as your own field names, call-site ids, subjects, or tenants. They come from constants.py and the spec's Annex B. This page lists all of them plus the call_site_id format, so you can name your own fields and sites without colliding.

Reserved top-level entry field names#

These names are the wire keys ScaiLog uses for the entry envelope, so you cannot use them as your own structured field names — an entry that does is rejected with RESERVED_FIELD:

event_id, tenant, service, env, site, level, ts, msg, fields, pi, subject, trace_id, request_id.

Put your own structured data inside fields (or mark PI with pi()); the reserved names above are the envelope around it.

Reserved call-site prefixes#

Two prefixes are reserved on call_site_id values and cannot be used by application code:

  • SCAILOG-* — ScaiLog's own components use these for their internal call sites.
  • AUTO-* — the SDK derives these as a fallback when code emits a log without a developer-assigned call_site_id (an AUTO-<hash> id from the module, function, and line). Treat an AUTO-* site as a to-do: graduate it to a named, declared site. scailog sites --diff flags them.

Both prefixes are accepted from the components/SDK that own them but are not valid for you to author, and the CI validator (scailog-ci) rejects them in your source.

The call_site_id format#

A developer-assigned call_site_id must match this regular expression:

maxima
1
^[A-Z0-9]+(-[A-Z0-9]+){2,}$

That is: uppercase letters and digits only, in at least three hyphen-joined segments — conceptually <PRODUCT>-<MODULE>-<EVENT>-.... For example BILLING-CHARGE-CAPTURED is valid; billing-charge (lowercase, only two segments) is not. The same pattern is enforced by the SDK at emit time, by the server at ingest, and by scailog-ci at build time.

Reserved subject#

  • _service — the reserved data subject for PI-like fields that belong to no natural person (for example a service account's own identifiers). It is not a real data subject and is handled distinctly from person subjects.

Reserved tenant#

  • default — the reserved default tenant. It is the fallback tenant for the SDK, agent, CLI, and audit job when none is configured.
Updated 2026-07-13 09:41:43 View source (.md) rev 2