.agents/skills/code-review/references/review-checklist.md
This is the canonical shared review checklist for Langfuse.
packages/shared/clickhouse/migrations/clustered directory should include ON CLUSTER default and should use Replicated merge tree table types.
ReplacingMergeTree is likely an error while ReplicatedReplacingMergeTree would be correct in most cases.packages/shared/clickhouse/migrations/unclustered directory must not include ON CLUSTER statements and must not use Replicated merge tree table types.packages/shared/clickhouse/migrations/clustered should match their counterparts in packages/shared/clickhouse/migrations/unclustered aside from the restrictions listed above.MATERIALIZE INDEX statement in the same migration. The materialization can use SETTINGS mutations_sync = 2 if they operate on smaller tables, but may timeout otherwise.WHERE project_id = {projectId: String} filter to ensure proper tenant isolation and that queries only access data from the intended project.events table, you must never use the FINAL keyword as it kills performance. events is built so that FINAL is never required.schema.prisma changes should produce a change in packages/shared/prisma/migrations.projectId in the WHERE clause (e.g., where: { id: traceId, projectId }) to ensure proper tenant isolation and that queries only access data from the intended project.env.mjs/ts file of the respective package and not from process.env.* to ensure validation and typing.redis.call invocations. Those may have suboptimal redis cluster routing and will raise errors. Instead, use the native call patterns.
Example: await redis?.call("SET", key, "1", "NX", "EX", TTLSeconds); should use await redis?.set(key, "1", "EX", TTLSeconds, "NX"); instead.useLangfuseCloudRegion hook and never environment variables directly.top-banner-offset instead of top-0 for any elements that are positioned sticky, fixed, or absolute with a global reference point (e.g., top-0). This ensures proper spacing when system banners (payment, maintenance, etc.) are displayed.--banner-height and --banner-offset) defined in web/src/styles/globals.css.--banner-height using ResizeObserver to track their actual height, ensuring accurate positioning even when banners resize (e.g., on mobile wrapping).top-banner-offset / pt-banner-offset - For sticky/fixed/absolute positioning and paddingh-screen-with-banner / min-h-screen-with-banner - For full-height containers accounting for bannersweb/src/features/public-api/types changes, the fern/apis definition probably needs to be adjusted, too.nullish types should map to optional<nullable<T>> in fern.nullable types should map to nullable<T> in fern.optional types should map to optional<T> in fern.