Skip to content

specs(automation): вторая версия обоих браузерных спеков, и чего не доказывает зелёный t27c (Refs #4838) - #4842

Merged
gHashTag merged 1 commit into
masterfrom
specs/browser-tidy-and-self-restart
Sep 26, 2026

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Зачем вторая версия через несколько часов после первой

У обоих спеков, опубликованных утром (#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

…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>
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-26 15:15:08 UTC

Summary

Status Count
Total Open PRs 37
PRs with Failing Checks 34
PRs with All Checks Green 3
READY 3
FAILING 34
PENDING 0
NO CHECKS YET 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=403499176a5d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit ae23d07 into master Sep 26, 2026
25 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant