РуБенч (RuBench) от vibecoding.ru · LARA5
HEAD должен наследовать кэш-заголовки GET
laravel/framework · PHP · base 9c01c823a2ae
вход агента
Постановка
Наш сайт на Laravel (наш форк) сидит за CDN. Роуты обёрнуты штатным
middleware cache.headers, который вешает Cache-Control/ETag.
CDN-провайдер прислал разбор: HEAD-запросы к тем же роутам приходят БЕЗ
cache-заголовков, из-за этого валидация кэша по HEAD у них не работает.
По HTTP-семантике HEAD — это GET без тела: заголовки, включая
Cache-Control, обязаны быть теми же.
Покопались: middleware пропускает навешивание заголовков, когда у
ответа пустое тело (защита от кэширования пустых ошибок и т.п.), — а у
HEAD тело пустое ВСЕГДА, вот он и попадает под этот фильтр.
Почини:
1. HEAD-запрос к роуту с cache.headers должен получать те же
cache-заголовки, что и GET, несмотря на пустое тело.
2. Существующая защита для остальных случаев пустых ответов (не-HEAD)
должна остаться как есть, включая исключения для файловых и
стриминговых ответов.
Родные тесты фреймворка должны проходить.
(тикет LAVKA-CDN-HEAD)
артефакты билета
Verifier / Solution
- VERIFIER
- приватный оракул · SHA-256 в манифесте
- SOLUTION
- золотой фикс мейнтейнера
полный публичный артефакт — task.md; оракул не раскрывается
раунд 1 · 12 конфигураций × 3 прогона
Поячеечные исходы · раунд 1
| конфигурация | прогоны | итог |
|---|---|---|
| Claude Code + Fable 5 | PASS—— | 1/1 |
| Codex + GPT-5.6 Sol | PASSPASSPASS | 3/3 |
| Claude Code + Opus 4.8 | PASSPASSPASS | 3/3 |
| Codex + GPT-5.6 Luna | PASSPASSPASS | 3/3 |
| Claude Code + Sonnet 5 | PASSPASSPASS | 3/3 |
| SourceCraft CLI + ds | PASSPASSPASS | 3/3 |
| Codex + GPT-5.5 | PASSPASSPASS | 3/3 |
| Claude Code + Haiku 4.5 | PASSPASSPASS | 3/3 |
| Koda CLI + koda-pro | PASSPASSFAIL | 2/3 |
| Antigravity + Gemini 3.1 Pro | PASSFAILFAIL | 1/3 |
| Antigravity + Gemini 3.5 Flash | PASSFAILFAIL | 1/3 |
| SourceCraft CLI + legacy | FAILPASSFAIL | 1/3 |
оракул приватный · правильность = зелёный регресс-тест мейнтейнера