Skip to content

Cross-surface parity test: one edge-case transcript through every consumer in CI #103

Description

@axisrow

Part of #94.

Зачем

Тесты в репо проверяют каждого потребителя отдельно. Единственный тест, сравнивающий несколько поверхностей, — test/shared/turnAccounting.parity.test.ts. Он сравнивает хук, проход CLI и часть панели на одной фикстуре без компакта, релеев, промптов сабагентов и строк прокси.

Все расхождения эпика (#95–#102) прошли CI зелёными. Регрессии приходили из более поздних PR, которые меняли правило в одном месте:

Что сделать

  1. Новый тест, например test/shared/crossSurfaceParity.test.ts. В нём — построитель синтетического JSONL (как в блоках «Как проверить» из sub-issue эпика) и таблица «сценарий × поверхности»:
сценарий что сравнивать
запрос прокси без requestId (несколько строк, один message.id) итог токенов: сайдбар, детали сессии, analyze:session, analyze:sessions (#95)
многострочный запрос Claude с параллельными tool_use число вызовов: сырой JSONL, ledger, панель (#88)
повторы одного вызова ×2/×3/×4 Loop: панель, loop_streak, cycles, колокол (#96)
компакт внутри хода wait-loop: CLI и панель; самый длинный ход в обеих CLI; номер хода везде (#97)
промпт сабагента в основном файле перечитывание за ход: хук, колокол, панель; число ходов: сайдбар, чипы, CLI (#98, #99)
релей тиммейта номер хода: чат, колокол, CLI (#99)
старт без user-сообщения счётчик сайдбара против чипов (#100)
<task-notification> ход не открывается; есть элемент отображения (#104)
  1. Начать со строк, которые совпадают уже сейчас. Каждый фикс из эпика добавляет свою строку в том же PR. Заведомо красные строки со skip не добавлять.
  2. Тест входит в pnpm test, то есть работает в CI.

Связано: #74 (эталонная фикстура и сверка с внешним источником) и #79 (корпус реальных сессий вне CI). Этот тест синтетический и работает в CI — они дополняют друг друга.

Acceptance

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions