Доказательства архитектурного снимка
Дата: 2026-09-16. Source commit: 21c85b0c7bc7a96497ce78ec2ead44b113f18db6. SOURCE и LOCAL TEST не утверждают состояние production. CALCULATED — арифметика из параметров кода; MEASURED SOURCE — статический подсчёт. Предложения не выданы за реализованные свойства.
| ID | Утверждение | Статус | Первичный источник | Граница / пробел |
|---|---|---|---|---|
| P01 | Entry point запускает stream и/или WebUI | SOURCE | src/stt_whisper_to_nats.py — _main_async; SttWhisperToNatsService | Running flags UNKNOWN |
| P02 | Поток PCM формируется в соседнем Core | SOURCE | src/utils/wire_packet.py — parse_wire_packet; WebRTC WhisperStreamNode | Источник/приёмник сверены в обоих repos |
| P03 | VAD local, распознавание через LinTO HTTP | SOURCE | src/stt_whisper_to_nats.py — _check_stream_buffer; _transcribe_and_publish | Реальный backend image UNKNOWN |
| P04 | Stream wildcard без queue, buffer local | SOURCE | src/stt_whisper_to_nats.py — run; streams; PhraseStreamState | Требование affinity — INFERRED |
| P05 | File upload отвечает 202 и запускает task внутри процесса | SOURCE | src/webui/server.py — _file_http_handler; FileJobWorkerService.start_job | Надёжная межпроцессная job queue не найдена |
| P06 | Новый ordinary job отменяет предыдущий активный | SOURCE | src/stt_whisper_to_nats.py — start_job; _cancel_active_locked | Один активный job на экземпляр |
| P07 | Combine читает сохранённые words и diarization | SOURCE / TEST | src/webui/staged_jobs.py — _run_combine; invalidation helpers | Inference не вызывается этой веткой |
| P08 | Snapshots в JSON и artifacts на filesystem | SOURCE | src/webui/file_mode.py — FileJobStore; write_state; normalized_audio_path | Crash-safe atomic write и multiwriter не доказаны |
| P09 | Lock service хранит одну lease в RAM | SOURCE / TEST | src/webui/job_lock_server.py — FileJobLockService; ttl_s; heartbeat | Restart и split brain не покрыты live experiment |
| P10 | CONNECT не заменяется direct при ошибке | SOURCE / TEST | src/model_transport.py — model_http_session; tests/test_model_transport.py | Не тест живого H100 туннеля |
| P11 | Обычный handler допускает downgrade diarization | SOURCE / TEST | src/webui/server.py — _file_http_handler; test_file_transcribe_downgrades_to_plain_text_when_diarization_backend_is_unavailable | Fallback видим через requested/run flags |
| P12 | 115 тестов проходят | LOCAL TEST | tests — 16.09.2026, .venv/bin/python -m unittest discover -s tests | Warnings и mock pipeline error; итог OK |
| P13 | Ordinary terminal cleanup delay 30 s | SOURCE | src/stt_whisper_to_nats.py — FILE_JOB_TERMINAL_CLEANUP_DELAY_S; _schedule_job_cleanup | Не долговечная история; staged lifecycle отличается |
| P14 | Benchmark измеряет RTF и quality_proxy | SOURCE / TEST | src/webui/bench.py — build_bench_result; _rtf | WER/DER не вычислены в этом исследовании |
| P15 | Legacy CPU stack=5 service declarations | SOURCE | stack/stack.drs — bridge, LinTO proxy, pyannote, sherpa, Sortformer; otlp.drs first | Public ingress — соседний repo; GPU — внешний owner |
| P16 | CI tests job закомментирована | SOURCE | .gitlab-ci.yml — #tests; deploy rules default branch | Из локального suite не следует CI gate |
Метод и сохранность
Исследование началось с AGENTS.md и .knowledge. Следующим источником были calls, routes, subscriptions, DTO, schema, tests, Dockerfiles и DRS. Существующие презентации, OpenWiki и ранее написанные архитектурные обзоры не служили доказательствами.
DRS прочитан статически, без исполнения Ruby DSL. Values credentials не переносятся в документы. Готовые материалы не меняют код приложения и не публикуются в runtime.
CW: cw sync --pull --company monitorsoft остановился на dirty shared scope. cw sync --company monitorsoft установил текущие рабочие skills; cw validate прошёл без ошибок и предупреждений (76 skills, 33 agents во всём проверенном каталоге). Fetch корневого и shared repositories показал 0/0 divergence. Локальные правки shared сохранены.
Что остаётся неизвестным
Текущие image digests, число реплик, фактические лимиты ресурсов и p50/p95/p99 не измерялись. Тесты с подменёнными модельными ответами подтверждают ветвление, но не качество LLM/ASR. Изменения архитектуры требуют своего baseline и named сценариев приёмки.