Prompt Slicing Service Spec

1. Назначение и граница сервиса

Назначение функции:

  • разложить source prompt на набор block suggestions;

  • поддержать update mode с preservation hints;

  • не публиковать результат автоматически;

  • вернуть batch, пригодный для review и publish-all workflow.

Потребители:

  • GUI slicing workflow;

  • composition update workflow.

Не-цели:

  • direct persistence без review;

  • deterministic parser для любого произвольного формата;

  • implicit migration без участия пользователя.

2. Потребители и зависимости

Потребители:

  • BlockSliceViewModel

  • composition update workflow

Зависимости:

  • IBlockGenerator

  • provider API

  • engine batch generation

  • workflow-level validation

3. Методы и точки вызова

Основные методы:

  • Engine.GenerateBlockBatchData(const PromptSlicingRequest&)

  • Engine.GenerateBlockDrafts(const PromptSlicingRequest&)

Связанный локальный fast path:

  • deterministic parse tagged sections в BlockSliceViewModel

Он не является отдельным engine API, но является важной частью фактического поведения функции.

4. Входной контракт

Основная структура входа: PromptSlicingRequest

Обязательные поля:

  • source_text

Необязательные поля:

  • preferred_language

  • namespace_prefix

  • existing_block_ids

  • reusable_block_ids

  • reusable_block_summaries

  • preserve_reuse_percent

  • preserve_order

  • allow_id_collision

Семантика ключевых полей:

  • source_text Исходный prompt, который нужно декомпозировать.

  • namespace_prefix Подсказка для формируемых block ids.

  • existing_block_ids Список id, которых нужно избегать.

  • reusable_block_ids Список id, которые можно переиспользовать в update mode.

  • reusable_block_summaries Краткий контекст существующей структуры для стабилизации update mode.

  • preserve_reuse_percent Желаемая сила сохранения существующей структуры.

  • preserve_order Подсказка не перестраивать порядок блоков без необходимости.

5. Выходной контракт

Основные выходы:

  • GeneratedBlockBatch

  • std::vector<BlockDraft>

  • GUI-local preview text derived from generated batch

Семантика:

  • GeneratedBlockBatch Основной batch suggestion для review и возможной публикации.

  • std::vector<BlockDraft> Draft-представление того же результата.

  • preview text Локальный вспомогательный UI-артефакт, не являющийся persisted contract.

6. Правила доменного контракта

Функция обязана соблюдать следующие правила:

  • generated ids должны быть уникальны;

  • batch должен быть пригоден к review before publish;

  • collisions with existing ids должны быть явными ошибками;

  • reuse existing ids допускается только в явно разрешённом update mode;

  • empty batch считается ошибкой;

  • отсутствие AI не отменяет deterministic fast path для tagged sections.

7. Иерархия источников и prompt policy

Приоритеты источников:

  • source prompt - первичный артефакт;

  • в update mode добавляется контекст текущей composition structure;

  • provider-specific prompt policy живёт в generator implementation;

  • workflow-level preservation heuristics применяются после AI response.

8. Ошибки и retry policy

Ошибки, которые должны доходить до вызывающего слоя:

  • provider errors;

  • transport errors;

  • parsing errors;

  • duplicate id errors;

  • validation failures;

  • empty source prompt;

  • empty generated batch.

Политика retry:

  • retry - на уровне transport/provider;

  • persistence retry отсутствует, потому что publish выполняется отдельно.

9. Routing и quality gates

Текущая реализация:

  • использует один configured generator path;

  • не публикует отдельный confidence score;

  • использует preservation heuristics как practical quality gate.

Дополнительный gate:

  • workflow-level validation before publish.

10. Edge cases и fallback behavior

Основные edge cases:

  • empty source prompt Немедленная validation failure.

  • duplicate ids Batch отклоняется до publish.

  • tagged source Используется deterministic fast path без AI rewriting.

  • слишком агрессивный update result Пользователь review-ит и при необходимости возвращается к manual editing.

11. Связанные документы

Upstream:

Downstream: