Export deepMergeFallback and apply it in getRequestConfig so all 39
non-EN locales receive EN text for any key absent in their JSON file.
Locale-specific translations always win; EN fills gaps only.
scheduleRecordConsumption() wraps recordConsumption() in setImmediate so it
never adds latency to the client response path. Errors are caught and logged
via pino warn but NEVER propagated to the caller (B29 fail-open contract).
Implements the quota share enforcement gate and consumption recorder:
- enforceQuotaShare(): PRE-request check that returns allow/block/deprioritize
based on fair-share algorithm, saturation signals, and pool allocations.
- recordConsumption(): POST-response tracker that increments per-key counters
for each active plan dimension.
Both functions fail-open per B16/B29: any infra error → allow + warn log.
- compliance.actor / compliance.actorPlaceholder added to pt-BR + en
- logs.compressionLogTitle, logs.compressionLogEmpty, logs.tokens copied
from settings to logs namespace in both locales (original keys kept in
settings to avoid breaking other components)
The component was calling useTranslations("settings") which would cause
key misses once the settings namespace is reorganized. Keys used
(loading, compressionLogTitle, compressionLogEmpty, tokens) are now
sourced from the canonical "logs" namespace.
Adds state, fetch param, reset and input+datalist for filtering audit
entries by actor. The actor field is inserted between eventType and
severity in the filter grid. Filter value is sent as ?actor= to the
compliance audit-log API on every change.
- MONITORING_ITEMS reduced to single `activity` item at `/dashboard/activity`
- New LOGS_GROUP (logs/logs-proxy/logs-console) extracted from flat monitoring items
- New SYSTEM_GROUP (health/runtime) extracted from flat monitoring items
- AUDIT_GROUP preserved unchanged
- Monitoring section children: [...MONITORING_ITEMS, LOGS_GROUP, AUDIT_GROUP, SYSTEM_GROUP]
- COSTS_PARAMS_GROUP removed from monitoring section (items migrate to COSTS_ITEMS)
- `activity` added to HIDEABLE_SIDEBAR_ITEM_IDS; `logs-activity` preserved for back-compat (B11)
- Updated existing sidebar-visibility.test.ts to match new monitoring item structure
Adds re-export blocks for quotaPools (7 functions), quotaConsumption
(4 functions with gcQuotaConsumption alias), and providerPlans (4
functions with getProviderPlan/listProviderPlans/etc. aliases).
Zero logic added to localDb.ts — Hard Rule #2 maintained.
Implements getPlan, listPlans, upsertPlan (idempotent ON CONFLICT DO
UPDATE), and deletePlan. Serializes QuotaDimension[] as JSON into
dimensions_json column and parses back on read. Malformed JSON returns
empty dimensions rather than throwing.
Implements listPools, getPool, createPool, updatePool, deletePool,
upsertAllocations (replace strategy via transaction), and
listAllocationsForApiKey. All SQL uses prepared statements. Local type
shapes aligned with src/lib/quota/dimensions.ts contract (B13).
Creates migrations 073 (quota_pools + quota_allocations) and 074
(quota_consumption sliding-window counter). Both are idempotent via
CREATE TABLE IF NOT EXISTS and CREATE INDEX IF NOT EXISTS. FK ON DELETE
CASCADE from quota_allocations to quota_pools. Fixes B2 IDs.