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-assignedcall_site_id(anAUTO-<hash>id from the module, function, and line). Treat anAUTO-*site as a to-do: graduate it to a named, declared site.scailog sites --diffflags 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:
1 | |
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.