diff --git a/packages/core/test/public-api-surface.spec.ts b/packages/core/test/public-api-surface.spec.ts index fc86f0d4..3ffc6665 100644 --- a/packages/core/test/public-api-surface.spec.ts +++ b/packages/core/test/public-api-surface.spec.ts @@ -23,11 +23,26 @@ const FUNCTIONS = [ 'otlpSink', 'otlpHttpExporter', 'toOtlpJson', + // The trace-redaction escape hatch (ADR 0018; ADR 0021's export table deliberately keeps all + // three on the ROOT rather than moving them to `stitchapi/auth` with the strategies that + // register into them). Public for the one credential the built-in denylist/stems don't catch: + // `registerSecretKey` widens the denylist so that param name is scrubbed in every trace sink, + // `isSecretKey` is the matching predicate — public for the same reason as the token grammars below, + // `@stitchapi/query-core` imports it from this barrel to extend the denylist with header names + // instead of forking a parallel list that would drift — and `redactSecretsDeep` scrubs a plain + // value with it, which is what `.inspect({ redact })` hands the caller. + 'registerSecretKey', + 'isSecretKey', + 'redactSecretsDeep', 'memoryStore', 'validate', 'compile', 'isStitch', 'isSeam', + // The `exactOptionalPropertyTypes` companion: public because config authoring under that flag + // otherwise needs the `...(key !== undefined ? { key } : {})` spread dance at every call site, + // and a peer package building a `StitchConfig` hits it as often as core does. + 'compact', // The verdict (ADR 0022 Decision 2), public because a surface author must compose it: an // `interpret` hook REPLACES the default rather than layering on it, so a surface with its own // body rules needs this to keep the caller's `verdict` config working. The one composition