# Tasks: enterprise-logger Status key: ✅ done | 🔄 in progress | ⬜ pending ## Wave 1 — Scaffold - ⬜ 1.1 Create `packages/universal/logger/` with `package.json`, `tsconfig.lib.json`, `vite.config.ts`, `vitest.config.ts`, `biome.json` - ⬜ 1.2 Create `src/index.ts` barrel (empty, filled incrementally) ## Wave 2 — Foundation modules - ⬜ 2.1 `src/errors/` — `LoggerError` + `LOGGER_CODES` - ⬜ 2.2 `src/record/` — `LogRecord` type + Zod schemas - ⬜ 2.3 `src/otel/` — `getOtelTraceContext()` - ⬜ 2.4 `src/redaction/` — `RedactionEngine` + rules + property tests - ⬜ 2.5 `src/sampling/` — `HeadSampler`, `TailSampler`, `RuleSampler` + property tests ## Wave 3 — Sink layer - ⬜ 3.1 `src/sink/sink` — `Sink` interface + `SinkOptions` - ⬜ 3.2 `src/sink/console-sink` — ANSI dev output - ⬜ 3.3 `src/sink/json-sink` — NDJSON writer - ⬜ 3.4 `src/sink/buffered-sink` — bounded queue, drop/block, `AbortSignal` flush ## Wave 4 — Logger core (refactored) - ⬜ 4.1 `src/abstract/` — `Logger` interface + `AbstractLogger` with Sink[], redaction, sampling, OTel, clock injection - ⬜ 4.2 `src/console/` — `ConsoleLogger` (wraps `ConsoleSink`) - ⬜ 4.3 `src/event/` — `EventLogger` (emits via `@suaveplan/events`) - ⬜ 4.4 `src/storage/` — `StorageLogger` (batched `StorageInterface` writes) ## Wave 5 — High-level API - ⬜ 5.1 `src/factory/` — `createLogger()` overloaded factory - ⬜ 5.2 `src/error-bridge/` — `installSuaveplanErrorInterceptor()` - ⬜ 5.3 `src/init/` — `initLogger()` ## Wave 6 — Quality - ⬜ 6.1 Wire all exports in `src/index.ts` - ⬜ 6.2 Add `src/__benchmarks__/logger.bench.ts` (mitata) - ⬜ 6.3 Add tree-shake test - ⬜ 6.4 Run pre-publish gate: `bunx turbo lint typecheck test:coverage --filter=@suaveplan/logger` - ⬜ 6.5 Fix any issues found in gate - ⬜ 6.6 Update `CLAUDE.md` package listing + root `README.md`