kValueScrubExemptKeys top-level constant

Set<String> const kValueScrubExemptKeys

Map keys whose String value is an identifier/locator that must reach the wire VERBATIM — value-pattern scrubbing is skipped for these. They are NOT secret (key-name redaction still applies to anything on the denylist), but running PII regexes over them would corrupt legitimate data:

  • stack-frame fields (filename/absPath/function) often embed paths that can look like emails/IPs;
  • release/version/sdk/platform/dist fields are build identifiers;
  • URLs/paths/hosts have their own redaction story and frequently contain IP-shaped segments;
  • trace/span/request ids and timestamps are hex/opaque tokens.

Exact, case-sensitive match on AllStak's own camelCase wire field names.

Implementation

const Set<String> kValueScrubExemptKeys = <String>{
  // Stack frames (see _parseDartFrames): never corrupt symbolication input.
  'filename',
  'absPath',
  'function',
  'lineno',
  'colno',
  // Release / build / SDK identity.
  'release',
  'version',
  'dist',
  'sdkName',
  'sdkVersion',
  'sdk.name',
  'sdk.version',
  'commitSha',
  'commit.sha',
  'commit.branch',
  'branch',
  'platform',
  'device.platform',
  'environment',
  // URLs / locators (own redactor / IP-shaped segments are legitimate here).
  'url',
  'path',
  'host',
  'href',
  // Trace / span / request correlation ids + timestamps (opaque tokens).
  'traceId',
  'requestId',
  'spanId',
  'parentSpanId',
  'errorFingerprint',
  'timestamp',
  // SDK's own release-health session id (also in kCorrelationAllowlist).
  'sessionId',
};