Каждое обещание с файлом
Проверьте каждое обещание
- 97
- Обещаний можно проверить
- 11018
- Автоматических проверок
- 7
- Частей продукта охвачено
- 7
- Проверок у самого списка
Зачем каждое обещание привязано к коду
Обещание на сайте и программа у вас на столе расходятся легко: текст пишут в одном месте, код в другом. Без сверки вы узнали бы о расхождении уже после покупки.
Поэтому у каждого обещания есть строка, привязанная к коду, который его выполняет. Сегодня таких строк 97, и разложены они по семи частям продукта.
Поддержка
Обещание поддержки на вашем тарифе указывает на ту службу, куда правда попадёт обращение.
Отпечаток > Изменить значения
Что вы видите в окне «Отпечаток», то и получает профиль: правила на экран и на запуск одни.
Массовые действия
Строка в тарифе указывает на тот экран, где вы эти действия и делаете.
Что стоит в одной строке
В строке всегда три вещи и больше ничего: что обещано, где это сделано и чем проверено. Поэтому по любой из них вы дойдёте до файла, а не до рассуждения.
В среднем столбце стоит путь, который вы откроете, а не папка и не название части программы. В правом проверка, которую вы запустите у себя, и краснеет она тогда, когда поведение ломается.
- 1
Прочитать обещание
Возьмите строку про то, что прокси покрывает весь трафик профиля.
- 2
Открыть файл
Откройте apps/desktop/src/lib/forkEngine.js: правило для движка записано там.
- 3
Запустить проверку
Запустите apps/desktop/test/proxy-covers-https.js: она смотрит, что именно уходит через прокси.
Обещания слово в слово
Сегодня обещаний 97, и каждое ниже приведено из файла слово в слово. Путь рядом с каждым ведёт в код от корня репозитория, и каждый из них существует.
Разброс выбран нарочно: движок, сеть, команда, деньги, поддержка, программа, языки. Остальные строки вы прочитаете точно так же, как эти.
| Обещание | Где выполнено | Чем стережётся |
|---|---|---|
| Отпечаток подменяется внутри движка: правки лежат в самом Chromium и применяются при сборке | engine/patches/series | apps/desktop/test/engine-patches-real.js |
| Каждый профиль это отдельная машина: свои ядра, память, видеокарта | packages/shared/src/index.js | packages/shared/test/выбор-редактора-полон.js |
| Машина профиля не меняется от запуска к запуску | packages/shared/src/index.js | packages/shared/test/поколение-3-заморожено.js |
| Часовой пояс и язык согласованы со страной прокси | packages/shared/src/index.js | apps/desktop/test/fingerprint-consistency.js |
| Профиль не открывается без своей защиты | apps/desktop/src/main/main.js | apps/desktop/test/дыры-движка-закрыты.js |
| Прокси с паролем работает, и пароль не уходит в командную строку | apps/desktop/src/lib/proxyAuthBridge.js | apps/desktop/test/proxy-auth-bridge.js |
| Прокси покрывает весь трафик профиля, а не только https | apps/desktop/src/lib/forkEngine.js | apps/desktop/test/proxy-covers-https.js |
| Профиль с настроенным, но неприменимым прокси не открывается | apps/desktop/src/main/main.js | apps/desktop/test/leak-verdict.js |
| Профиль занят на другой машине: второй сессии не будет | apps/desktop/src/main/main.js | apps/desktop/test/profile-busy.js |
| Платный тариф выдаётся только за настоящие деньги | apps/server/src/billing/billing.service.ts | apps/server/test/paid-access.js |
| Цены на витрине считаются из сетки тарифов, а не пишутся руками | apps/web/components/pricing/PricingTable.tsx | apps/web/test/страница-возможностей.js |
| Поддержка: обращению есть куда попасть | apps/server/src/support/support.service.ts | apps/server/test/поддержка.js |
| Предел одновременно открытых считается по памяти машины | apps/desktop/src/lib/engine-config.js | apps/desktop/test/предел-открытых.js |
| Все 22 языка целы и не перепутаны | apps/desktop/src/i18n/messages.js | apps/desktop/test/i18n-integrity.js |
Почему эту страницу нельзя тихо поправить
Документ, который никто не исполняет, гниёт за месяц, а этот сгнил бы быстрее прочих: именно тут удобнее всего тихо поправить неудобную правду. Поэтому мы проверяем и сам этот список.
Утверждений у неё семь. Четыре о том, что названное в строке существует, три труднее.
Вы всегда видите весь список
Не меньше тридцати строк, иначе поломка чтения выглядела бы как список без единой беды.
Каждое обещание называет живой файл
Путь ведёт от корня репозитория и обязан существовать на диске.
Каждое обещание называет живую проверку
То же правило для правого столбца.
Каждая проверка правда идёт в прогоне
Её имя обязано стоять в команде, которой запускается своя часть.
Проверка достаёт до файла, который стережёт
Самое трудное из семи, и об этом глава ниже.
Пустых мест нет ни в одной строке
И файл не совпадает с проверкой: обещание не может быть собственным доказательством.
Самые дорогие обещания названы поимённо
Поддержка, отпечаток, прокси, приглашение, платный тариф, цены.
Правило
Когда проверка смотрит не туда
Файл жив, проверка жива, прогон зелёный, а стережёт она совсем другое. На экране об этом не говорит ничего, и потому это самая тихая поломка из всех.
Поэтому проверка обязана доставать до своего файла. Упоминание файла в примечании за исполнение не считается.
По имени
Сама проверка называет путь или имя файла, а слишком общий корень имени не засчитывается.
По имени пакета
Общий пакет подключают по имени @armanos/shared, и это имя засчитывается.
Проверка вне прогона
Написанная проверка, которую не зовёт ни одна команда, создаёт чувство, что место прикрыто. Это хуже пустого места: туда перестают возвращаться.
Поэтому первой во всём прогоне идёт проверка, которая не исполняет ни строчки продукта. Она сличает файлы проверок на диске с тем, что команды действительно зовут.
Проверка на диске, которую не зовёт ни одна команда
Названа в отказе вместе с областью, к которой относится.
Команда, зовущая файл, которого нет
Мёртвый путь в команде прогона выглядит ровно как покрытие.
Образец, не находящий ни одного файла
Пустой образец гоняет ноль файлов и печатает зелёное.
Область, которой нет в корневой команде
Тогда «всё зелено» означает «зелено не всё».
Проверка, дописанная после итоговой строки
Она исполняется, печатается и в счёт не идёт.
Откуда берутся числа
Число автоматических проверок на этой странице сосчитано, а не написано пальцем. Оно приезжает с зелёного прогона трёх настоящих наборов.
Красный прогон не даёт странице ничего: она осталась бы с прежним числом, а не с приукрашенным. Цены и нормы этой дорогой не идут вовсе, потому что таблица тарифов берёт их из того же пакета, по которому программа решает, что вам разрешено.
- Автоматических проверок
- 11018
- сервер
- 1535
- программа
- 8454
- сайт
- 1029
- Замеров отпечатка
- 37
- Языков в программе и на сайте
- 22
Содержимое apps/web/measured.json. Пересчитать: node scripts/сосчитать-проверки.js из apps/web.
Возврат дефекта в код
Зелёная проверка, которая не умеет покраснеть, не стоит ничего. Способ один и он скучный: сломайте само поведение ровно так, как оно ломается на самом деле, запустите проверку и убедитесь, что покраснела она по той самой причине.
Прочитать красное сообщение важно не меньше, чем его увидеть. Красное не по той причине не доказывает ничего, и ничего не доказывает проверка, чьи утверждения стоят ниже её собственной итоговой строки.
- 1
Сломать
Верните дефект в файл продукта ровно тем способом, каким он случается.
- 2
Запустить проверку
Она обязана покраснеть, и сообщение обязано назвать настоящую причину.
- 3
Прочитать сообщение
Красное не по той причине не доказывает ничего.
- 4
Вернуть
Поставьте код на место и убедитесь, что снова зелено.
Чего не удалось измерить
Здесь не только то, что работает: целиком названы и два места, где измерение не получилось. WebGPU на Windows никем не проверен, потому что на арендованной машине нет видеокарты, и Chromium выключает саму возможность до всякого выбора поставщика.
Голосов синтеза речи на Linux ноль, и ноль здесь равен норме площадки. У настоящего Chrome на Linux их тоже нет, а с доводом запуска, открывающим системный путь, их 13363, и столько не бывает ни на одной живой машине.
Непроверенное не равно исправному
Чего мы не обещаем
Этот список заодно говорит, чего мы не продаём. Если у вещи нет строки, это не обещание, и рассчитывать на неё не стоит.
Про четыре такие вещи спрашивают чаще всего, поэтому они названы здесь. У каждой записано то состояние, в котором она есть сегодня, а не то, к которому идёт.
Оплата картой
Касса написана и без ключей бездействует, поэтому платный тариф вам выдают рукой. apps/server/src/billing/stripe.service.ts.
Подпись и нотаризация
Усиленная среда и права доступа заданы, сертификата нет, поэтому система предупредит вас при первом запуске. apps/desktop/electron-builder.yml.
Оферта и правила возврата
Не написаны. Нужны для приёма денег, а не для работы программы.
Перепродажа прокси
Заказ это записанное намерение: денег с вас не берут и к поставщику не ходят. apps/server/src/proxy-store/proxy-store.service.ts.

Чего это не делает
- Строка в реестре не обещает, что ничего не сломается. Она говорит, что проверка есть и она идёт, а не что она покрывает все случаи.
- Реестр судит устройство, а не правду: проверяет ли названная проверка то, что надо, он сказать не может. Один разряд этого теперь закрыт машиной: обещание про живой браузер обязано называть стенд, который браузер правда поднимает. Остальное по-прежнему может сказать только человек, который проверку прочтёт.
- Число это три набора: сервер, программа, сайт. Общий пакет, командная строка и два набора разработчика идут в той же команде и в это число не входят.
- Здесь нигде не сказано, что площадка не может распознать профиль. Под проверкой стоят разделение профилей и машина, которая не меняется.
- Строки реестра написаны в репозитории по-русски. Эта страница их переводит, подлинник лежит в файле.
- WebGPU на Windows не проверен и останется непроверенным, пока его не измерят на машине с настоящей видеокартой.
Как проверить
В каждой строке слева утверждение, справа файл или стенд, на котором оно держится.
- Реестр это файл в репозитории, а не страница, написанная для вас
- docs/РЕЕСТР-ОБЕЩАНИЙ.md
- Строка с мёртвым файлом или мёртвым стендом роняет прогон
- apps/web/test/реестр-обещаний.js
- Стенд, не достающий до названного файла, отвергается
- apps/web/test/реестр-обещаний.js, проверка «сторож достаёт до файла, которым обещание выполнено»
- Ни одна написанная в дереве проверка не остаётся вне прогона
- scripts/все-ли-проверки-в-прогоне.js
- Числа на сайте приходят только из зелёного прогона настоящих наборов
- apps/web/scripts/сосчитать-проверки.js · apps/web/test/proof-strip.js
- Проверка, дописанная после итога стенда, не считается и отвергается
- apps/desktop/test/checks-really-run.js
Вопросы
- Можно ли нарочно оставить проверку вне прогона?
- Можно, но файл обязан сказать об этом сам и назвать причину не короче двадцати знаков. В конце прогона вы увидите все такие файлы поимённо: спрятанный список исключений гниёт, а напечатанный перечитывают.
- Зачем примечания срезают перед сверкой?
- Потому что упоминание файла в примечании это не исполнение. Без среза пустая проверка могла бы назвать файл, до которого не дотрагивается, и пройти.
- Почему отвергаются слишком короткие корни имён?
- Корень вроде index или api встречается внутри посторонних слов почти в любом файле кода, и совпадение по нему не доказывает ничего. Шесть таких корней мы не принимаем.
- Что будет, если названный в строке файл переедет?
- Оба столбца отсчитываются от корня репозитория, поэтому переехавший файл делает прогон красным, пока строку не поправят. Ради этого здесь и стоят пути, а не названия.
Возьмите одну строку и сломайте её сами
Доводом служит репозиторий, а не эта страница. Откройте файл, названный в строке, и запустите проверку, которая стоит рядом.
Где наша проверка не сработала
Четыре места, где числа старели незаметно
Каждое число на этом сайте обязано приходить из прогона, который можно повторить, и держится это не на добрых намерениях, а на проверках над ним.
Чего не доказывает зелёный счёт
Перед отгрузкой сборка проходит самопроверку, и прогон кончается одной строкой: столько-то показаний из стольких-то.