Перейти к содержимому

Блог

Чего не доказывает зелёный счёт

Перед отгрузкой сборка проходит самопроверку, и прогон кончается одной строкой: столько-то показаний из стольких-то. Даже полные 29 из 29 ещё не доказывают, что шум внутри что-то делает, поэтому приговор стоит не на одном счёте.

Команда ARMANOS7 мин

Что такое приёмка сборки

Сборка едет к покупателю не потому, что собралась. Её запускают, наводят на нашу же страницу и задают ей те вопросы, какие сайт задаёт посетителю.

Каждый ответ это одно показание. Часть показаний сверяется с тем, что объявляет профиль, а часть лишь просит число не шевелиться, и прогон кончается счётом с одним словом, от которого зависит, поедет сборка дальше или нет.

Показаниями прогон не кончается. Версию сборки и её имя читают снаружи, потому что сборка, отвечающая верно под чужим именем, нашей от этого не становится.

  1. 1

    Запускает сборку

    Движок поднимается на профиле с шаблоном и страной выхода.

  2. 2

    Спрашивает изнутри

    Экран, языки, часовой пояс, видеокарта, устройства и остальное читаются на странице.

  3. 3

    Называет приговор

    Рядом со счётом печатается одно слово для того, кто читает это сценарием.

Счёт это ещё не доказательство

Показание, которое спрашивает, устойчиво ли число, одинаково проходит и на браузере, внутри которого ничего не меняли. Устойчивость это свойство арифметики, и достаётся она даром.

Яснее всего это видно на звуке. Короткий тон отрисовывается с выключенным звуком, отсчёты складываются, и показание требует лишь, чтобы сумма была конечной, не нулевой и повторилась дважды.

У показания с силой ответ ставится против чего-то постороннего. Те, что сверяют ответ с объявленным профилем, так и устроены, а те, что просят число всего лишь не шевелиться, не сравнивают его ни с чем.

Браузер всегда согласен сам с собой

Показание такого устройства проходит и на движке, в который не внесено ни одной правки. В прогоне оно нужно, потому что гуляющая сумма была бы хуже, но само по себе о работе внутри оно не говорит ничего.

Два профиля вместо одного

Шум профиля выводится из опознавателя этого самого профиля. Значит два профиля одной сборки обязаны ответить двумя разными числами.

Поэтому прогон открывает одну и ту же страницу дважды, в двух профилях, и читает у обоих холст и звук. Совпавшие числа означают, что шум до страницы не доходит, и прогон говорит ровно это.

  1. 1

    Разыгрывает два профиля

    Два опознавателя, одна сборка, один шаблон.

  2. 2

    Читает одну и ту же пару

    Отпечаток холста и сумма звука у каждого из них.

  3. 3

    Требует расхождения

    Совпадение записывается как шум, который не применяется.

Один профиль на двух системах

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

Поэтому один прогон можно поставить против прогона того же профиля на другой системе. Показание, которое на одной системе проходит, а на другой падает, поодиночке прогоны не показывают.

  • Часть значений расходится по праву

    Длина отрисованного холста в байтах и то, какие подставные шрифты вообще есть в системе.

  • Показание есть в том прогоне и нет в этом

    Такое расхождение сверка мимо себя не пропускает.

Три приговора вместо двух

Прогон, не нашедший поломки, это не то же самое, что прогон, что-то доказавший. Это два разных состояния, и имени у них тоже два.

Дальше едет только принимающий приговор. Два других выходят одинаково, и пропущенное доказательство уже не прочитать как состоявшееся.

Само слово печатается в последней строке буквами, и угадывать случившееся по числу не приходится никому. Прогон, ничего не доказавший, говорит это тем же словом.

ПриговорЧто он значит
ПринятоНичего не провалилось, и два профиля ответили разными числами.
Не доказаноНичего не провалилось, а сверка двух профилей не шла.
Что едет дальшеТолько первое из трёх.

Как проверить это самому

Откройте два профиля одного браузера и загрузите страницу, которая рисует холст и складывает тон. Прочитайте у каждого профиля эту пару чисел и поставьте их рядом.

Разные числа означают, что шум идёт за профилем перед вами. Одинаковые означают, что страница читает машину под ним.

Второй исход это ровно то, чего счёт прошедших показаний не покажет никогда. Чтобы он стал виден, нужны два профиля.

Чего это не утверждает

  • Это не утверждает, что два разных числа делают профиль безопасным. Показано, что за профилем идёт одна пара показаний, а поведение, платёжные данные и история аккаунта остаются нетронутыми любым браузером.
  • Это не утверждает, что самопроверка спрашивает всё, что спрашивает сайт. Она покрывает известные ей вопросы, а вопрос, которого никто не придумал, не сосчитан нигде.
  • Сверка доказывает, что шум по холсту и звуку жив на этой сборке. Насколько обычным выглядит отдельный ответ для отдельного сайта, она не говорит, и каждой другой правке движка нужен свой замер.
  • Прогон меряет одну сборку на одной машине. Машина без видеокарты валит показания, принадлежащие ей самой, поэтому лишние доводы запуска печатаются в шапке отчёта.

Где это можно увидеть самому

Каждое число выше выходит из файлов, которые можно открыть и запустить.

Приговор это одна небольшая функция
engine/scripts/приговор-приёмки.js
Прогон и сверка двух профилей
engine/scripts/accept-engine.js
Целый прогон с показаниями и приговором
docs/замеры/приёмка-windows-02-09.log
Приговор исполняется на придуманных случаях, а не читается буквами
apps/desktop/test/приговор-приёмки.js
Показание звука, которое снимает самопроверка
apps/desktop/src/lib/fpAudit.js

Вопросы

Почему нельзя верить одному счёту?
Счёт говорит, сколько показаний прошло. Что за этим стоит, он не говорит, а часть показаний проходит и на движке, в который не внесено ни одной правки.
Что происходит со сборкой без доказательства?
Она остаётся на месте. Прогон выходит с тем же итогом, что и при провале, а слово в последней строке говорит, что именно из двух случилось.
Сверку можно выключить?
Можно, назвав её доводом запуска. Приговор тогда не бывает принимающим.
Почему два профиля, а не второй браузер?
Второй браузер расходится по своим причинам и есть на машине не всегда. Два профиля одной сборки расходятся, только если шум что-то делает.

Посмотрите на обещания вместе с файлами

У каждого обещания сайта есть строка с файлом и стендом за ним.