import { defineFeature } from "@repo/core-shared/conformance"; /** * The auth feature's conformance manifest. Drives binding-slot types in * `di/bind-production.ts` and is read by ESLint, the boot assertion, and * the CI drift gate (later milestones). * * Conventions: * - `mutates: true` for any use case that creates, updates, or deletes state * - `audits` lists every audit event the use case emits (must match calls * to `auditLog.record(...)` in the factory body — ESLint enforces this * in a later story) * - `publishes` / `consumes` cover cross-feature events through `IEventBus` */ export const authManifest = defineFeature({ name: "auth", requiredCores: [], useCases: { signIn: { mutates: false, audits: [], publishes: [], consumes: [], rateLimit: [ { name: "ip", window: "1m", budget: 5 }, { name: "account", window: "1h", budget: 10 }, ], }, signUp: { mutates: true, audits: [], publishes: [], consumes: [], }, signOut: { mutates: true, audits: [], publishes: [], consumes: [], }, }, realtimeChannels: [], jobs: [], coverage: { bands: { baseline: { statements: 80, branches: 75, functions: 80, lines: 80 }, entities: { statements: 100, branches: 100, functions: 100, lines: 100 }, "use-cases": { statements: 100, branches: 95, functions: 100, lines: 100, }, controllers: { statements: 100, branches: 95, functions: 100, lines: 100, }, }, mutationTargets: ["entities", "use-cases"], }, } as const); export type AuthManifest = typeof authManifest;