Open source · MIT

Lift

Самохостимая платформа фича-флагов и A/B-экспериментов: интервалы Уилсона, z-тест и метрики-ограничители, которые сами поднимают тревогу.

v1.0.0 Эксперименты, у которых сходятся цифры
Laravel 13PHP 8.5PostgreSQL 18BladeTailwind 4Vite 8
Lift

Стрелка вверх — не ответ

Любой инструмент A/B рано или поздно показывает два числа и зелёную стрелку. Стрелка — простая часть. Сложное — всё, что она прячет: хватает ли выборки, пересекаются ли доверительные интервалы, не сломал ли выигравший вариант что-нибудь ещё.

Lift сделан так, чтобы решение можно было защитить через месяц. Экран результата говорит вывод одной строкой, а под ним показывает работу: интервал Уилсона, p-значение, вероятность обойти контроль, сколько данных тесту ещё нужно и что случилось с метриками, которым двигаться было нельзя.

Что внутри

Детерминированные вёдра

SHA-256 от «соль:флаг:человек» в 10 000 вёдер. Один и тот же человек получает один и тот же вариант на любом запросе и любом сервере — без сессии, без таблицы соответствий и без похода в базу.

Правила с объяснением

Условия по любому атрибуту, внутри правила «и», между правилами решает порядок. Ответ возвращает вариант, причину и номер сработавшего правила — вопрос «почему у этого человека старая кнопка» решается одним полем формы.

Статистика без пакетов

Интервал Уилсона, двухвыборочный z-тест, бета-апостериорная вероятность выигрыша и расчёт размера выборки написаны руками и проверены против учебных значений — включая обратную нормальную функцию по Моро.

Метрики-ограничители

То, чему нельзя становиться хуже, даже если основная метрика растёт. Значимое ухудшение фоновая задача сама пишет в журнал, а экран показывает красным рядом с выводом: заказов больше, но возвраты выросли сильнее.

Идемпотентная свёртка

Человек считается один раз в сутки на вариант, а задача перезаписывает день целиком, а не складывает его с собой. Опоздавшие события просто поправляют цифры на следующем прогоне; экраны читают только свёртку и остаются мгновенными.

API для SDK

Две ручки: забрать конфигурацию и прислать события пачкой до 500 штук. Ключ привязан к окружению, конфигурация лежит в кэше десять минут и сбрасывается в момент сохранения флага.

Скриншоты

Результат: вывод, интервалы, ограничитель — на одном экране
Результат: вывод, интервалы, ограничитель — на одном экране
Флаг: раскатка, правила таргетинга и проверка на конкретном человеке
Флаг: раскатка, правила таргетинга и проверка на конкретном человеке
Интервалы на общей шкале: пересечение видно глазом
Интервалы на общей шкале: пересечение видно глазом
Журнал: кто, что и когда менял
Журнал: кто, что и когда менял
Ключи SDK по окружениям и два запроса на подключение
Ключи SDK по окружениям и два запроса на подключение
Тёмная тема
Тёмная тема

Установка

git clone https://github.com/dripips/lift.git cd lift docker compose up --build

Есть проект или идея?

Напишите мне, обсудим задачу.