specs(automation): вторая версия обоих браузерных спеков, и чего не доказывает зелёный t27c (Refs #4838) - #4842
Merged
Conversation
…t27c does not prove (Refs #4838) Four `Not claimed` lines from this morning became claimable, and one of them was hiding a fifth defect. browser-pod-restart.t27 -> VERSION 2. The restart that shipped this morning could not have worked with any set of service variables: its lookup asked for `status: "SUCCESS"` and the live API answers HTTP 400, because the field is a filter of `in`/`notIn` lists rather than a value. Version 1 blamed two missing variables. The corrected query answers live with the deployment created at 2026-09-23T11:21:26Z -- exactly the last real restart version 1 recorded, which is the cross-check now asserted. The two leaks version 1 named and fixed nowhere are fixed (6-tab budget enforced where a tab is created, never on the person's own tabs; one admin session per errand, handed back in `finally`), with the pre-fix measurements kept: 40 targets behind 16 pages, 35 ghost sessions. The token only the owner could issue exists now, so MISSING_VARIABLES is 0 -- but UNATTENDED_RESTART_OBSERVED stays false, because nobody has watched one. browser-sign-in.t27 -> VERSION 2, with the census: 191 cookies, 6 networks signed in, 5 signed out, 4 unknown, and 6+5+4 == DOORS asserted so it cannot silently stop covering a door. Instagram was never signed in, rather than signed out by the outage -- a degraded Chromium cannot delete a cookie, it could not read a page. Cookies without a known login cookie stay `unknown` instead of being guessed as signed out. And the reason version 2's numbers were not checked by the compiler: on a copy of browser-pod-restart.t27 whose only edit was `TAB_BUDGET == 6` -> `TAB_BUDGET == 999`, `typecheck`, `test` and `check` all exit 0, and `test` prints `Tests: 8` either way -- it counts test blocks DECLARED. So both files' asserts were evaluated against the constants gen-js folded: 59 hold here, 44 in the sign-in spec, 0 fail, and the falsified copy fails exactly one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Зачем вторая версия через несколько часов после первой
У обоих спеков, опубликованных утром (#4839), был блок
Not claimed. К вечеручетыре его строки стали заявляемыми — а одна из них, как выяснилось, прикрывала
пятый дефект.
browser-pod-restart.t27 → VERSION 2
Перезапуск, который поехал утром, не мог сработать ни при каких переменных.
Запрос спрашивал у платформы
status: "SUCCESS", а живой API отвечает на этоHTTP 400: поле — не значение, а фильтр из списков
in/notIn, то есть документдаже не был запросом. Версия 1 винила две отсутствующие переменные; виноват был
запрос. Исправленный запрос отвечает живьём тем деплоем, который создан
2026-09-23T11:21:26Z— ровно момент последнего настоящего перезапуска, как егозаписала версия 1. Эта сверка теперь зафиксирована ассертом.
Две утечки, которые версия 1 назвала и не починила нигде, починены:
бюджет в 6 вкладок держится там, где вкладка и создаётся (вкладку человека не
трогаем ни при каком счёте), и одна admin-сессия на дело, отдаваемая в
finally.Замеры «до» сохранены: 40 CDP-целей за 16 страницами и 35 сессий, все наши, ни
одной подключённой.
Токен, который мог выдать только владелец, теперь существует — в области
одного проекта. Поэтому
MISSING_VARIABLES= 0, ноUNATTENDED_RESTART_OBSERVEDостаётся false: ничто больше не делаетсамостоятельный перезапуск невозможным, но никто его ещё не видел. Значение
токена не появляется ни в одном файле репозитория.
browser-sign-in.t27 → VERSION 2
Перепись, 191 кука, разобранная по login-куке каждой сети: 6 сетей со входом,
5 без входа, 4 неизвестно, и
6+5+4 == DOORSстоит ассертом — чтобы переписьне перестала молча покрывать какую-нибудь дверь.
Та сеть, про которую был вопрос: в Instagram вход не пропал, его никогда не
было. Деградировавший Chromium не может удалить куку — он и страницу прочитать
не мог. «Агент перестал заходить в сети» — одна фраза про две разные вещи, и
различить их могут только куки. Куки без известной login-куки (hh.ru — 28,
upwork.com — 13) остаются
unknown, а не выдаются за «выход».И почему цифры проверены не компилятором
Утренняя запись в NOW говорила «10 из 10 test-блоков проходят под t27c
test-report». Это чтение не выдерживает проверки. На копии
browser-pod-restart.t27, где единственная правка —
TAB_BUDGET == 6→TAB_BUDGET == 999,typecheck,testиcheckвыходят с нулём, аtestитак и так печатает
Tests: 8— он считает объявленные блоки.gen-jsпроэто прямо пишет комментарием на каждый блок.
Значит, зелёный компилятор — свидетельство того, что спек парсится и
типизируется, и вовсе не свидетельство того, что его утверждения согласны
между собой. Поэтому ассерты обеих версий 2 вычислены по константам, которые
свернул
gen-js: 59 держатся здесь, 44 в спеке входа, 0 падают, аподделанная копия падает ровно одним. Гейт, который делал бы это для всего
корпуса, — очевидный следующий шаг и здесь тоже не заявляется.
🤖 Generated with Claude Code