# Roadmap

## Current Stand Status - 2026-06-20

Main UI:

- LAN URL: `http://192.168.220.91:8765/tools/model-chat/`
- Current GPU profile: `image`
- Running GPU containers: `llm-model-chat-ui`, `llm-transformers-image`, `llm-transformers-translation`
- Stopped heavy GPU containers: `llm-vllm-text`, `llm-transformers-audio`, `llm-transformers-video`, `llm-llama-qwen3-coder-q6-test`
- GPU mode is intentionally single-heavy-model: keep only the active task model loaded on RTX 4090.

Plugin status:

| Plugin | Current route | Status | Notes |
| --- | --- | --- | --- |
| Text | `qwen3-4b-instruct` on `vllm-text` | ready to start | Stopped in image profile to free VRAM. |
| 1C | `qwen3-coder-1c-q6` on `llama.cpp` port `8081` | ready to start | Default manual-check route now prefers Qwen3-Coder Q6; LoRA/RAG remain separate candidates. |
| Translation | `lmt-60-4b` on `translation-api` | online | API responds on `http://docker-gpu.cin.su:8010`. |
| Audio | `whisper-large-v3-turbo` | ready to start | Model files are present; service is stopped in image profile. |
| Video | `qwen2_5-vl-7b-instruct` | ready to start | Model files are present; service is stopped in image profile. |
| Image | `sdxl-image` | online | SDXL generation and inpainting are verified through UI proxy. |

Recent verified checks:

- Browser UI opens and selects `Stable Diffusion XL Base 1.0 [staging]` for plugin `Фото`.
- Image API route is `http://docker-gpu.cin.su:8040`, served model `sdxl-image`.
- SDXL generate smoke test completed at 512x512, 4 steps, after warmup in `2194 ms`.
- SDXL inpaint smoke test completed at 512x512, 4 steps, including first inpaint model load in `180649 ms`.
- SDXL generate smoke test completed after image service restart at 512x512, 1 step, in `86866 ms`.
- Qwen Image Edit files are present and `QwenImageEditPipeline` loads in about `31 s`, but a 512x512
  1-step edit did not finish within `1800 s` on RTX 4090 with CPU offload; SDXL remains the default
  practical image service.
- Qwen3-Coder Q6 GPU/CPU comparison exists: GPU `57.72 tok/s`, CPU `2.66 tok/s`, speedup about `x21.7`.
- `1C` route check returns `qwen3-coder-30b-a3b-instruct-q6_k` through `http://docker-gpu.cin.su:8081`.

Next technical priorities:

1. Done: add a first-class launcher for Qwen3-Coder Q6 on GPU instead of keeping it as an ad hoc test container.
2. Done: make the `1C` route prefer the strongest available GGUF model for manual checks, while keeping LoRA/RAG as separate modes.
3. Done: add smoke tests for `audio` and `video` profiles similar to the completed image smoke tests; live runs wait for profile switches.
4. Done: add an image model mode switch for SDXL vs Qwen Image Edit before trying Qwen Image Edit on RTX 4090.
5. Done: add a status report generator so this section can be regenerated from `/api/health`.

## Stage 1: Platform Skeleton

- Зафиксировать архитектуру `core + plugins`.
- Описать правила model registry.
- Создать шаблон model card.
- Подготовить структуру плагинов.

## Stage 2: First Inference

- Выбрать первую текстовую модель.
- Описать ее model card.
- Поднять inference на `docker-gpu.cin.su`.
- Проверить API и базовые eval-тесты.

Текущая основа:

- `core/deploy/docker-gpu/vllm/compose.yaml`
- `core/deploy/docker-gpu/vllm/.env.example`
- `docs/runbooks/first-vllm-inference.md`
- `registry/model-cards/qwen3-4b-instruct-2507.yaml`
- `scripts/download_hf_model.py`
- `scripts/list_model_cards.py`
- `scripts/build_model_index.py`

## Stage 3: 1C RAG

- Собрать документы и правила по 1С.
- Подготовить индекс для поиска.
- Добавить инструменты работы с метаданными 1С.
- Сделать eval-набор задач по BSL и запросам 1С.

Текущая основа:

- `plugins/1c/rag/manifests/corpus.yaml`
- `scripts/prepare_1c_rag_corpus.py`
- `plugins/1c/tools/tool-contract.yaml`
- `plugins/1c/prompts/system.md`
- `plugins/1c/evals/smoke.yaml`
- `scripts/build_1c_rag_index.py`
- `scripts/search_1c_rag.py`
- `scripts/ask_1c_rag.py`
- `scripts/check_1c_rag_prompt.py`
- `plugins/1c/metadata/schema.json`
- `scripts/validate_1c_metadata_snapshot.py`
- `scripts/convert_1c_metadata_to_rag.py`

## Stage 4: 1C Fine-Tuning

- Накопить проверенные пары вопрос/ответ.
- Очистить данные от секретов и персональных данных.
- Обучить LoRA/adapter.
- Сравнить base model, RAG и adapter.

Текущая основа:

- `plugins/1c/training/examples/instruction.examples.jsonl`
- `plugins/1c/training/manifests/dataset.yaml`
- `scripts/validate_1c_training_data.py`
- `scripts/prepare_1c_training_data.py`
- `plugins/1c/training/configs/qwen3-coder-30b-a3b-lora.yaml`
- `scripts/preflight_1c_training.py`
- `scripts/train_1c_lora.py`
- `core/deploy/docker-gpu/training/1c-lora.compose.yaml`
- `plugins/1c/adapters/qwen3-coder-30b-a3b-1c-lora-v1.yaml`
- `registry/model-cards/qwen3-coder-30b-a3b-1c-lora-v1.yaml`

## Stage 5: Service Split

- Вынести тяжелые плагины в отдельные контейнеры.
- Описать API-контракты.
- Добавить мониторинг и контроль версий моделей.

Текущая основа:

- `core/deploy/docker-gpu/transformers/translation.compose.yaml`
- `core/deploy/docker-gpu/transformers/audio.compose.yaml`
- `core/deploy/docker-gpu/transformers/video.compose.yaml`
- `scripts/transformers_plugin_server.py`
- `scripts/deploy_transformers_service.ps1`

## Stage 6: GPU Service Manager

- Управлять запуском/остановкой тяжелых сервисов моделей.
- Показывать VRAM и endpoint выбранной модели в UI.
- Исключить конфликт нескольких compose-проектов.
- Оставить ручной операторский путь через PowerShell.

Текущая основа:

- `scripts/manage_model_service.ps1`
- `POST /api/service-control` in `scripts/model_chat_server.py`
- service panel in `tools/model-chat/index.html`

## Stage 7: Model Cabinet

- Загружать модель файлом из личного кабинета.
- Импортировать модель по URL или серверному пути.
- Проверять наличие файлов, размер, checksum и карточку модели.
- Переводить проверенную модель из incoming в рабочий registry.

Текущая основа:

- `/api/model-ingest/upload`
- `/api/model-ingest/source`
- `/api/model-ingest/verify`
- `reports/model-ingest/jobs.jsonl`

## Stage 8: Video And Vision

- Реализовать image endpoint для Qwen2.5-VL.
- Добавить загрузку изображения в UI.
- Для видео сделать извлечение кадров и VLM-анализ.
- Добавить eval-набор для экранов, документов и видео-сцен.

## Stage 9: 1C Live Integration

- Подключить read-only коннектор к реальной базе 1С.
- Добавить быстрый operational loop без обязательной полной XML/EDT-синхронизации на каждый шаг.
- Индексировать реальные метаданные и BSL-модули через легкий 1C agent или JSON snapshot.
- Подключить intake задач из текста, Excel-файлов и скриншотов/макетов интерфейса.
- Ввести полные 1C-пути как основной язык агента:
  `Справочник.Контрагенты.Наименование`, а не голое `Наименование`.
- Разделить effective-read и editor-provenance: агент читает итоговую картину
  1С, но пишет только через origin/layer-aware write plan.
- Добавить отдельное разрешение BSL-символов внутри модуля/формы, чтобы
  переменная `Номенклатура` не смешивалась с объектом
  `Справочник.Номенклатура`.
- Расширить поддержку расширений: порядок применения, добавленные объекты,
  adopted base objects, insert-before/after, replace, replace-with-control.
- Добавить quality gates перед любыми изменениями.
- Обучать LoRA только после RAG baseline и проверенного датасета.

Текущая основа:

- `docs/runbooks/1c-operational-coding.md`
- `docs/1c-extension-layer-plan.md`
- `docs/1c-adapter-api-contract.md`
- `plugins/1c/connector/contracts/openapi.yaml`
- `plugins/1c/connector/policies/read-only-query.yaml`
- `plugins/1c/connector/policies/change-workflow.yaml`

## Cross-Cutting: Evals

- `scripts/validate_evals.py`
- `scripts/run_1c_smoke_eval.py`
- `docs/runbooks/evals.md`

## Cross-Cutting: Observability And Quality Logging

- Add centralized access, turn, model-call, tool-call, and retrieval logging.
- Propagate `trace_id` and `request_id` across agent, adapter, MCP, and model routes.
- Add redaction, retention, and export rules for quality analysis.
- Add reviewed quality labels and aggregate reports for regressions and route comparisons.

Current plan:

- `docs/quality-audit-logging-plan.md`
