Skip to content

fix(web): карточка TLE называет превышенный лимит, а не конфиг - #1376

Merged
ArtVsMark merged 2 commits into
mainfrom
agent/timeout-actual
Aug 27, 2026
Merged

fix(web): карточка TLE называет превышенный лимит, а не конфиг#1376
ArtVsMark merged 2 commits into
mainfrom
agent/timeout-actual

Conversation

@ArtVsMark

Copy link
Copy Markdown
Owner

Часть #962 — находка TW-1-01

Что было не так

docs/dev/web-contracts.md описывает timeout_s как «лимит, который был
превышен», а в карточку уезжала константа: CONFIG.timeout_seconds.

Врало это не в теории. Веб принимает timeout_s в параметрах запроса
(web/runs.py:468) и честно грейдит с ним — то есть при запросе с 1.5 с
решение падало по 1.5 с, а карточка называла человеку 5 с из конфига. Смотрят на
это поле ровно за одним: понять, во сколько не уложился.

Что сделано

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

Когда лимит не передан (CLI-потребители), настройка читается в момент
вызова
(get_config()), а не через связанный на импорте CONFIG: иначе
--timeout и настройки лаунчера сюда снова не дойдут.

Проверка

  • 7 тестов: явный лимит попадает в карточку; без него берётся конфиг; конфиг
    читается в момент вызова; поле остаётся контрактным только у TLE; ноль не
    подменяется конфигом (or здесь был бы дефектом);
  • python scripts/preflight.py — чисто: 5422 passed, 98 skipped.

Что осталось в #962

Вторая находка (AUD-3-01) снялась сама: документ аудита 2026-07-30 переехал в
docs/archive/ и больше не заявляет открытыми закрытые находки.

Работа сделана вместе: @ArtVsMark — постановка, решения и приёмка; Claude Code — реализация.

Часть #962 — находка TW-1-01

## Что было не так

`docs/dev/web-contracts.md` описывает `timeout_s` как «лимит, который был
превышен», а в карточку уезжала константа: `CONFIG.timeout_seconds`.

Врало это не в теории. Веб принимает `timeout_s` в параметрах запроса
(`web/runs.py:468`) и честно грейдит с ним — то есть при запросе с 1.5 с
решение падало по 1.5 с, а карточка называла человеку 5 с из конфига. Смотрят на
это поле ровно за одним: понять, во сколько не уложился.

## Что сделано

Фактический лимит вычисляется **один раз** в `grade_path` и уезжает в оба
места — в прогон и в карточку. Раньше эти два места считали его независимо, что
и позволило им разойтись.

Когда лимит не передан (CLI-потребители), настройка читается **в момент
вызова** (`get_config()`), а не через связанный на импорте `CONFIG`: иначе
`--timeout` и настройки лаунчера сюда снова не дойдут.

## Проверка

- 7 тестов: явный лимит попадает в карточку; без него берётся конфиг; конфиг
  читается в момент вызова; поле остаётся контрактным только у TLE; ноль не
  подменяется конфигом (`or` здесь был бы дефектом);
- `python scripts/preflight.py` — чисто: 5422 passed, 98 skipped.

## Что осталось в #962

Вторая находка (`AUD-3-01`) снялась сама: документ аудита 2026-07-30 переехал в
`docs/archive/` и больше не заявляет открытыми закрытые находки.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Artem Markitanov <86671904+ArtVsMark@users.noreply.github.com>
@ArtVsMark ArtVsMark added the merge-when-green Согласие смержить без автора: авто-мерж включится, как позеленеет label Aug 26, 2026
@ArtVsMark
ArtVsMark enabled auto-merge (squash) August 26, 2026 18:53
@claude claude Bot added area/web Веб-режим --serve (web/) bug Something isn't working labels Aug 26, 2026
@ArtVsMark
ArtVsMark merged commit 5ec8af5 into main Aug 27, 2026
17 checks passed
@ArtVsMark
ArtVsMark deleted the agent/timeout-actual branch August 27, 2026 08:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/web Веб-режим --serve (web/) bug Something isn't working merge-when-green Согласие смержить без автора: авто-мерж включится, как позеленеет

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants