You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`@objectstack/spec` exported `RateLimitConfig` / `RateLimitConfigSchema` from
two entry points for two DIFFERENT declarations — `./shared` limits INBOUND API
traffic (`enabled` / `windowMs` / `maxRequests`, all defaulted), `./integration`
throttles OUTBOUND connector calls (`strategy` / `maxRequests` / `windowSeconds`
required, plus the upstream `X-RateLimit-*` header names). Neither schema is
`.strict()`, so a snippet copied between the two parsed clean with its foreign
keys silently stripped (#4411 trap / ADR-0104 silent-strip class).
They are two concepts, not two spellings, so ADR-0112 D9(a) applies — the same
ruling that produced `ConnectorErrorCategory` and `ConnectorRetryStrategy` ten
lines below. The connector side is renamed to `ConnectorRateLimitConfig`;
`./shared` keeps its name, keys and defaults. No back-compat alias: it would be
a third declaration of the name this change is removing.
Zero authorable-key change — all six keys under `connectors[].rateLimitConfig`
parse exactly as before — hence no ADR-0087 conversion and no tombstone.
Riding along: `scripts/build-schemas.ts` learns a declarative `RENAMED_DEFS`
table (`scripts/lib/renamed-defs.ts`). Its two ratchets measure in `$def` units,
so a def rename previously read as six authorable keys vanishing at once, with
all three suggested remedies wrong for a rename (hand-editing the surface is
banned by #4650; a tombstone + conversion would register a migration nobody must
run). The table enforces the rule a rename must obey — every key under the old
def must exist under the new one, the target must be emitted, and the source
must not (a def still published is a copy, not a rename) — which is strictly
stronger than the hand-edited baseline it replaces.
dual-source-exports baseline: 18 -> 16.
Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments