Claude Skill

vdv

ВДВ-скилл — генератор и аудитор описания стадийного процесса по 6 принципам Вход·Действие·Выход. Используй для построения описания нового процесса (/vdv build) или проверки готового описания (/vdv audit).

LLM Mart · 0 points · 11 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download TserenTserenov-FMT-exocortex-template-.claude_skills_vdv-52c884b.zip · 7 KB
Part of tserentserenov/fmt-exocortex-template — 50 skills

Install

skills CLI npx skills add https://github.com/TserenTserenov/FMT-exocortex-template/tree/main/.claude/skills/vdv
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install tserentserenov-fmt-exocortex-template@llmmart
Git git clone https://github.com/TserenTserenov/FMT-exocortex-template.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole tserentserenov/fmt-exocortex-template collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

ВДВ-скилл (Вход·Действие·Выход)

Service Clause: DP.SC.052
Источник принципов: PD.METHOD.008 §174-230 (каскад v9 стратегирования как эталонный тест-кейс)

Выполни: $ARGUMENTS


When to use

ВДВ-скилл — генератор и аудитор описания стадийного процесса по 6 принципам Вход·Действие·Выход. Используй для построения описания нового процесса (/vdv build) или проверки готового описания (/vdv audit).

Принципы ВДВ (эталон проверки)

Шесть инвариантов, по которым работают оба режима:

# Принцип Формулировка Тест нарушения
1 Триада на каждой стадии У стадии есть Вход, Действие, Выход. Нет одного — неполно. Одно из трёх полей отсутствует или пусто
2 Сцепление выход→вход Выход стадии должен стать входом одной из следующих. Выход стадии N не появляется во Входе ни одной последующей стадии (и не помечен «внешний» / «обещание контура»)
3 Инвариант входа Вход = выходы предыдущих + стабильные документы + «план для сравнения». Артефакт без производителя и без пометки «внешний» — сигнал пропущенной стадии. Во Входе стадии N стоит артефакт, которого нет в Выходе ни одной предыдущей стадии и нет пометки (внешний)
4 Двусторонняя трассируемость У каждого артефакта есть производитель и потребитель. Без потребителя — лишний. Без производителя и без «внешний» — пропущенная стадия. Артефакт в Выходе без потребителя во Входах следующих стадий (и не является обещанием контура)
5 Carry-over Незавершённое переносится во Вход следующей итерации того же контура. Повторяемый процесс (ритм > 1 итерации): вход первой стадии не включает carry-over от предыдущей итерации
6 Антипустышка Стадия имеет прямую или косвенную трассировку к обещанию контура. Убрать стадию → нарушится ли обещание? Если нет — кандидат-пустышка. Проверка: убери стадию — нарушится ли обещание контура? Нет → ❌ кандидат-пустышка. Стадия не трассируется ни напрямую (выход = обещание), ни косвенно (цепочка выходов ведёт к обещанию)

Особые случаи принципа 5: одноитерационный процесс (однократный, без цикла) — принцип 5 неприменим, ставь ⏸ с пояснением.
Особые случаи принципа 6: обещание контура неизвестно — ⚠️ + запрос уточнения.


Algorithm

Режим /vdv build — Генерация

Алгоритм (подход C)

Шаг 1. Понять деятельность

Прочитать описание деятельности из $ARGUMENTS. Если описание слишком краткое (<1 предложения или нет ни одного результата/выхода) — запросить уточнение:

«Опишите деятельность подробнее: что происходит, какой основной результат, есть ли повторяющийся ритм?»

Шаг 2. Выделить стадии (быстрый черновик)

Из описания вывести предположительный набор стадий. Правила:

  • Каждая стадия = одно смысловое действие с проверяемым артефактом на выходе
  • Первая стадия: входы помечай как (внешний) если они не производятся внутри процесса
  • Ритм указывать если известен из контекста, иначе —
  • Формат: compact markdown-таблица, колонки строго в порядке: # | Стадия | Ритм | Вход | Действие | Выход

Шаг 3. Self-audit принципы 1-4

Сразу после черновика прогнать принципы 1-4 по построенной таблице. Показать:

Предварительный аудит (принципы 1-4):
П1 (триада): ✅ / ⚠️ / ❌ — <что нашёл>
П2 (сцепление): ✅ / ⚠️ / ❌ — <что нашёл>
П3 (инвариант входа): ✅ / ⚠️ / ❌ — <что нашёл>
П4 (трассируемость): ✅ / ⚠️ / ❌ — <что нашёл>
П5 (carry-over): ⏸ проверится после утверждения структуры
П6 (антипустышка): ⏸ проверится после утверждения обещания контура

Шаг 4. Inline трассируемость

После таблицы ВДВ вывести компактный блок:

| Артефакт | Произведён на стадии | Потребляется на стадиях |
|----------|----------------------|------------------------|
| Название | N. Стадия           | M. Стадия / → обещание контура / → carry-over (следующая итерация) |

Висячие артефакты (без потребителя внутри контура) помечать:

  • → обещание контура — терминальный выход, является обещанием
  • → carry-over (следующая итерация) — уходит в следующий цикл процесса (П5)
  • → ❌ потребитель не найден — нарушение П4

Шаг 5. Уточнение и финальный аудит

После правок пользователя — запустить полный аудит (шаги 1-5 режима audit) включая принципы 5-6.


Режим /vdv audit — Аудит

Алгоритм

Шаг 1. Получить описание

Входной текст из $ARGUMENTS — таблица стадий или текстовое описание. Если не содержит явной структуры стадий — спросить: «Выделите стадии или передайте таблицу с колонками Вход/Действие/Выход».

Шаг 2. Вывести обещание контура

Найти все выходы, не являющиеся входом ни одной последующей стадии = кандидаты на обещание контура. Показать:

«Я вижу обещание контура как: <список терминальных выходов>. Это верно?»

При несогласии — уточнить у пользователя. При нескольких терминальных выходах — попросить выбрать или подтвердить все.

Шаг 3. Прогнать 6 принципов

Для каждой стадии и каждого артефакта проверить все 6 принципов. Формат вердикта:

## Аудит процесса: <название>

### Принцип 1: Триада на каждой стадии
✅ Все стадии имеют триаду / ❌ Нарушения:
- Стадия N «<название>»: отсутствует <Вход | Действие | Выход>
  Фикс: <конкретное предложение>

### Принцип 2: Сцепление выход→вход
...

### Принцип 3: Инвариант входа
...

### Принцип 4: Двусторонняя трассируемость
...

### Принцип 5: Carry-over
✅ / ⚠️ / ❌ / ⏸ <пояснение>

### Принцип 6: Антипустышка
Обещание контура: <что принято>
✅ / ⚠️ / ❌ — <для каждой стадии с ❌: трассировка к обещанию не найдена>
  Фикс: <убрать стадию или явно связать с обещанием>

---
Итог: ✅ <N принципов OK> | ⚠️ <M предупреждений> | ❌ <K нарушений>

Шаг 4. Опционально: предложить исправление

Если есть ❌ — предложить исправленную таблицу стадий с применёнными фиксами.


Справка /vdv

ВДВ-скилл (Вход·Действие·Выход) — WP-413, DP.SC.052

Режимы:
  /vdv build <описание деятельности>  — построить описание процесса
  /vdv audit <описание стадий>         — проверить по 6 принципам ВДВ

6 принципов: триада · сцепление · инвариант входа · трассируемость · carry-over · антипустышка

Эталонный тест-кейс: каскад стратегирования v9 (PD.METHOD.008 §185-189)
Тест-кейсы разработки: test_cases.md
Files (fmt-exocortex-template)
  • SKILL.md 11.4 KB
    ---
    name: vdv
    description: "ВДВ-скилл — генератор и аудитор описания стадийного процесса по 6 принципам Вход·Действие·Выход. Используй для построения описания нового процесса (/vdv build) или проверки готового описания (/vdv audit)."
    argument-hint: "[build | audit] [описание процесса или деятельности]"
    version: 1.0.0
    layer: L1
    status: active
    browser_safe: true
    service_clause: DP.SC.052
    triggers:
      slash: [/vdv, /vdv build, /vdv audit]
      phrases: ["проверь процесс по ВДВ", "построй описание процесса", "аудит стадийного процесса"]
    tests: ./test_cases.md
    routing:
      executor: sonnet
      deterministic: false
    agents: single
    interaction: multi-step
    gates_required: []
    gates_enforced: []
    gates_rationale: "операционный скилл; WP Gate применим только при создании нового РП, не для операционных вызовов"
    ---
    
    # ВДВ-скилл (Вход·Действие·Выход)
    
    > **Service Clause:** DP.SC.052  
    > Источник принципов: PD.METHOD.008 §174-230 (каскад v9 стратегирования как эталонный тест-кейс)
    
    Выполни: $ARGUMENTS
    
    ---
    
    ## When to use
    
    ВДВ-скилл — генератор и аудитор описания стадийного процесса по 6 принципам Вход·Действие·Выход. Используй для построения описания нового процесса (/vdv build) или проверки готового описания (/vdv audit).
    
    ## Принципы ВДВ (эталон проверки)
    
    Шесть инвариантов, по которым работают оба режима:
    
    | # | Принцип | Формулировка | Тест нарушения |
    |---|---------|--------------|----------------|
    | 1 | **Триада на каждой стадии** | У стадии есть Вход, Действие, Выход. Нет одного — неполно. | Одно из трёх полей отсутствует или пусто |
    | 2 | **Сцепление выход→вход** | Выход стадии должен стать входом одной из следующих. | Выход стадии N не появляется во Входе ни одной последующей стадии (и не помечен «внешний» / «обещание контура») |
    | 3 | **Инвариант входа** | Вход = выходы предыдущих + стабильные документы + «план для сравнения». Артефакт без производителя и без пометки «внешний» — сигнал пропущенной стадии. | Во Входе стадии N стоит артефакт, которого нет в Выходе ни одной предыдущей стадии и нет пометки `(внешний)` |
    | 4 | **Двусторонняя трассируемость** | У каждого артефакта есть производитель и потребитель. Без потребителя — лишний. Без производителя и без «внешний» — пропущенная стадия. | Артефакт в Выходе без потребителя во Входах следующих стадий (и не является обещанием контура) |
    | 5 | **Carry-over** | Незавершённое переносится во Вход следующей итерации того же контура. | Повторяемый процесс (ритм > 1 итерации): вход первой стадии не включает `carry-over от предыдущей итерации` |
    | 6 | **Антипустышка** | Стадия имеет прямую или косвенную трассировку к обещанию контура. Убрать стадию → нарушится ли обещание? Если нет — кандидат-пустышка. | Проверка: убери стадию — нарушится ли обещание контура? Нет → ❌ кандидат-пустышка. Стадия не трассируется ни напрямую (выход = обещание), ни косвенно (цепочка выходов ведёт к обещанию) |
    
    > **Особые случаи принципа 5:** одноитерационный процесс (однократный, без цикла) — принцип 5 неприменим, ставь ⏸ с пояснением.  
    > **Особые случаи принципа 6:** обещание контура неизвестно — ⚠️ + запрос уточнения.
    
    ---
    
    ## Algorithm
    
    ## Режим `/vdv build` — Генерация
    
    ### Алгоритм (подход C)
    
    ### Шаг 1. Понять деятельность
    
    Прочитать описание деятельности из $ARGUMENTS. Если описание слишком краткое (<1 предложения или нет ни одного результата/выхода) — запросить уточнение:
    
    > «Опишите деятельность подробнее: что происходит, какой основной результат, есть ли повторяющийся ритм?»
    
    ### Шаг 2. Выделить стадии (быстрый черновик)
    
    Из описания вывести предположительный набор стадий. Правила:
    - Каждая стадия = одно смысловое действие с проверяемым артефактом на выходе
    - Первая стадия: входы помечай как `(внешний)` если они не производятся внутри процесса
    - Ритм указывать если известен из контекста, иначе `—`
    - Формат: compact markdown-таблица, колонки строго в порядке: `# | Стадия | Ритм | Вход | Действие | Выход`
    
    ### Шаг 3. Self-audit принципы 1-4
    
    Сразу после черновика прогнать принципы 1-4 по построенной таблице. Показать:
    
    ```
    Предварительный аудит (принципы 1-4):
    П1 (триада): ✅ / ⚠️ / ❌ — <что нашёл>
    П2 (сцепление): ✅ / ⚠️ / ❌ — <что нашёл>
    П3 (инвариант входа): ✅ / ⚠️ / ❌ — <что нашёл>
    П4 (трассируемость): ✅ / ⚠️ / ❌ — <что нашёл>
    П5 (carry-over): ⏸ проверится после утверждения структуры
    П6 (антипустышка): ⏸ проверится после утверждения обещания контура
    ```
    
    ### Шаг 4. Inline трассируемость
    
    После таблицы ВДВ вывести компактный блок:
    
    ```
    | Артефакт | Произведён на стадии | Потребляется на стадиях |
    |----------|----------------------|------------------------|
    | Название | N. Стадия           | M. Стадия / → обещание контура / → carry-over (следующая итерация) |
    ```
    
    Висячие артефакты (без потребителя внутри контура) помечать:
    - `→ обещание контура` — терминальный выход, является обещанием
    - `→ carry-over (следующая итерация)` — уходит в следующий цикл процесса (П5)
    - `→ ❌ потребитель не найден` — нарушение П4
    
    ### Шаг 5. Уточнение и финальный аудит
    
    После правок пользователя — запустить полный аудит (шаги 1-5 режима audit) включая принципы 5-6.
    
    ---
    
    ## Режим `/vdv audit` — Аудит
    
    ### Алгоритм
    
    ### Шаг 1. Получить описание
    
    Входной текст из $ARGUMENTS — таблица стадий или текстовое описание. Если не содержит явной структуры стадий — спросить: «Выделите стадии или передайте таблицу с колонками Вход/Действие/Выход».
    
    ### Шаг 2. Вывести обещание контура
    
    Найти все выходы, не являющиеся входом ни одной последующей стадии = кандидаты на обещание контура. Показать:
    
    > «Я вижу обещание контура как: `<список терминальных выходов>`. Это верно?»
    
    При несогласии — уточнить у пользователя. При нескольких терминальных выходах — попросить выбрать или подтвердить все.
    
    ### Шаг 3. Прогнать 6 принципов
    
    Для каждой стадии и каждого артефакта проверить все 6 принципов. Формат вердикта:
    
    ```
    ## Аудит процесса: <название>
    
    ### Принцип 1: Триада на каждой стадии
    ✅ Все стадии имеют триаду / ❌ Нарушения:
    - Стадия N «<название>»: отсутствует <Вход | Действие | Выход>
      Фикс: <конкретное предложение>
    
    ### Принцип 2: Сцепление выход→вход
    ...
    
    ### Принцип 3: Инвариант входа
    ...
    
    ### Принцип 4: Двусторонняя трассируемость
    ...
    
    ### Принцип 5: Carry-over
    ✅ / ⚠️ / ❌ / ⏸ <пояснение>
    
    ### Принцип 6: Антипустышка
    Обещание контура: <что принято>
    ✅ / ⚠️ / ❌ — <для каждой стадии с ❌: трассировка к обещанию не найдена>
      Фикс: <убрать стадию или явно связать с обещанием>
    
    ---
    Итог: ✅ <N принципов OK> | ⚠️ <M предупреждений> | ❌ <K нарушений>
    ```
    
    ### Шаг 4. Опционально: предложить исправление
    
    Если есть ❌ — предложить исправленную таблицу стадий с применёнными фиксами.
    
    ---
    
    ## Справка `/vdv`
    
    ```
    ВДВ-скилл (Вход·Действие·Выход) — WP-413, DP.SC.052
    
    Режимы:
      /vdv build <описание деятельности>  — построить описание процесса
      /vdv audit <описание стадий>         — проверить по 6 принципам ВДВ
    
    6 принципов: триада · сцепление · инвариант входа · трассируемость · carry-over · антипустышка
    
    Эталонный тест-кейс: каскад стратегирования v9 (PD.METHOD.008 §185-189)
    Тест-кейсы разработки: test_cases.md
    ```
    
    <!-- USER-SPACE -->
    <!-- /USER-SPACE -->
    
  • test_cases.md 11.8 KB
    ---
    description: "Dev-time regression suite для /vdv. Запускается при создании/обновлении скилла, не при вызове пользователем."
    version: 1.0.0
    wp: WP-413
    usage: |
      Субагент читает этот файл, прогоняет каждый тест через режим аудита /vdv,
      сравнивает с expected_violations. Тест PASS = найденные нарушения совпадают с expected.
    ---
    
    # Тест-кейсы /vdv
    
    ## TC-01: Нарушение принципа 1 — стадия без явного входа
    
    ```yaml
    id: TC-01
    mode: audit
    name: "Сбор данных без источника"
    description: "Стадия без явного Входа (поле пустое или отсутствует)"
    input: |
      | # | Стадия       | Ритм   | Вход | Действие         | Выход            |
      |---|--------------|--------|------|------------------|------------------|
      | 1 | Сбор данных  | еженед | —    | Собрать таблицу  | Таблица данных   |
      | 2 | Анализ       | еженед | Таблица данных | Проанализировать | Отчёт |
      | 3 | Отправка     | еженед | Отчёт | Отправить руководителю | Письмо |
    
    expected_violations:
      - principle: 1
        stage: 1
        field: "Вход"
        reason: "Вход стадии 1 пустой (—). Триада неполна."
      - principle: 3
        stage: 1
        reason: "Артефакты 'Таблица данных' не имеют источника. Если это внешний вход — пометить (внешний)."
    
    expected_verdict: "❌"
    expected_ok_principles: [2, 5, 6]
    # П4 не включён в OK: стадия 1 не потребляет никаких артефактов (Вход пуст),
    # поэтому нарушение П3 (нет источника) не вызывает нарушения П4 автоматически.
    # Но аудитор ДОЛЖЕН отметить, что «Таблица данных» имеет производителя (стадия 1)
    # и потребителя (стадия 2) — П4 для выходных артефактов OK.
    # П4 для входных артефактов: Вход пуст → нечего трассировать → П4 по входу неприменим.
    # Итог: П4 = ОК (потребитель и производитель для «Таблица данных» есть), не включать в expected_violations.
    expected_ok_principles_include_4: true
    explanation: |
      Классический антипаттерн: первая стадия начинается «из воздуха».
      П4 специфика: 'Таблица данных' имеет производителя (стадия 1) и потребителя (стадия 2) — П4 OK.
      Нарушение в П1 (пустой вход) и П3 (нет источника для входа), но не в П4 (артефакт сцеплён).
      Корректный фикс: добавить во Вход стадии 1 источник данных с пометкой (внешний).
    ```
    
    ---
    
    ## TC-02: Нарушение принципа 2 — разрыв в сцеплении
    
    ```yaml
    id: TC-02
    mode: audit
    name: "Разрыв в цепочке выход→вход"
    description: "Выход стадии N не появляется ни в одном последующем Входе"
    input: |
      | # | Стадия              | Ритм   | Вход                         | Действие               | Выход              |
      |---|---------------------|--------|------------------------------|------------------------|--------------------|
      | 1 | Постановка задачи   | разово | Запрос пользователя (внешний)| Сформулировать задачу  | Карточка задачи    |
      | 2 | Исследование        | разово | Запрос пользователя (внешний)| Изучить контекст       | Исследовательский отчёт |
      | 3 | Реализация          | разово | Карточка задачи              | Написать код           | PR                 |
      | 4 | Деплой              | разово | PR                           | Задеплоить             | Деплой в проде     |
    
    expected_violations:
      - principle: 2
        stage: 2
        reason: "Выход стадии 2 'Исследовательский отчёт' не является входом ни одной следующей стадии."
      - principle: 4
        stage: 2
        reason: "Артефакт 'Исследовательский отчёт' — нет потребителя во входах стадий 3 и 4."
    
    expected_verdict: "❌"
    expected_ok_principles: [1, 3, 5, 6]
    explanation: |
      Стадия 2 «Исследование» производит артефакт, который никуда не идёт — типичная пустышка
      (хотя здесь нарушается принцип 2, а не 6).
      Фикс: добавить «Исследовательский отчёт» во Вход стадии 3, либо удалить стадию 2 если её результат не влияет на реализацию.
    ```
    
    ---
    
    ## TC-03: Нарушение принципов 3 и 4 — артефакт без производителя
    
    ```yaml
    id: TC-03
    mode: audit
    name: "Артефакт во входе без производителя"
    description: "Вход стадии содержит артефакт, который ни одна предыдущая стадия не производит и нет пометки (внешний)"
    input: |
      | # | Стадия              | Ритм    | Вход                                    | Действие                     | Выход                  |
      |---|---------------------|---------|-----------------------------------------|------------------------------|------------------------|
      | 1 | Day Open            | ежедневно | Вчерашний DayPlan · Коммиты за вчера  | Планировать день             | DayPlan               |
      | 2 | Исполнение          | ежедневно | DayPlan · Кэш активных РП             | Работать по РП               | Коммиты · Заметки      |
      | 3 | Day Close           | ежедневно | DayPlan · Коммиты · WeekPlan           | Закрыть день                 | DayReport              |
    
    expected_violations:
      - principle: 3
        stage: 2
        artifact: "Кэш активных РП"
        reason: "Артефакт 'Кэш активных РП' во Входе стадии 2 не производится стадией 1 и не помечен (внешний)."
      - principle: 3
        stage: 3
        artifact: "WeekPlan"
        reason: "Артефакт 'WeekPlan' во Входе стадии 3 не производится стадиями 1-2 и не помечен (внешний)."
      - principle: 4
        stage: 3
        artifact: "WeekPlan"
        reason: "WeekPlan используется (потребляется) стадией 3, но производитель внутри этого процесса не определён."
    
    expected_verdict: "⚠️"
    expected_ok_principles: [1, 2, 5, 6]
    explanation: |
      Вход содержит стабильные документы ('WeekPlan', 'Кэш активных РП'), 
      которые производятся другим процессом (Сессия стратегирования).
      Фикс: пометить как (внешний): «WeekPlan (внешний)», «Кэш активных РП (внешний)».
      После фикса принципы 3 и 4 = ✅, процесс ОК.
    ```
    
    ---
    
    ## TC-PASS: Эталонный процесс — каскад v9 (упрощённый фрагмент)
    
    ```yaml
    id: TC-PASS
    mode: audit
    name: "Фрагмент каскада стратегирования v9 — должен пройти без нарушений"
    description: "Стадии 3-5 каскада v9 (Day Open / Исполнение / Day Close). Тест: аудит не должен находить ❌."
    input: |
      | # | Стадия        | Ритм       | Вход                                                        | Действие            | Выход                      |
      |---|---------------|------------|-------------------------------------------------------------|---------------------|----------------------------|
      | 3 | Day Open      | ежедневно  | Plan W{N} (внешний) · DayReport предыдущего дня (carry-over) · Коммиты за вчера (внешний) | Планировать день | DayPlan |
      | 4 | Исполнение    | в течение дня | DayPlan · Кэш активных РП (внешний)                     | Работать по РП      | Коммиты · Заметки          |
      | 5 | Day Close     | ежедневно  | DayPlan · Коммиты · Заметки · Plan W{N} (внешний)          | Закрыть день        | DayReport                  |
    
    promise: "DayReport"
    expected_violations: []
    expected_verdict: "✅"
    explanation: |
      Стадии 3-5 правильно сцеплены:
      - DayPlan: произведён стадией 3 → потреблён стадией 4 и 5
      - Коммиты: произведены стадией 4 → потреблены стадией 5
      - Заметки: произведены стадией 4 → потреблены стадией 5
      - DayReport: произведён стадией 5 → carry-over во Вход стадии 3 следующего дня (принцип 5)
      - Внешние входы помечены (внешний) → принцип 3 OK
      - Обещание контура задано явно как DayReport → П6 проверяется детерминированно
      Примечание: при dev-time прогоне поле `promise` подставляется автоматически,
      имитируя подтверждение пользователем (интерактивный шаг вывода обещания пропускается).
    ```
    
    ---
    
    ## TC-BUILD-01: Режим генерации — проверка self-audit и маркеров ⏸
    
    ```yaml
    id: TC-BUILD-01
    mode: build
    name: "Генерация: пайплайн обработки заметок"
    description: "Проверяет что build-режим: строит черновик, показывает self-audit П1-П4, явно маркирует П5-П6 как ⏸"
    input: |
      Деятельность: сбор мимолётных заметок в течение дня, их разбор в конце недели и перевод в Pack-знания
    
    expected_output_contains:
      - "| # | Стадия"
      - "Вход"
      - "Действие"
      - "Выход"
      - "Предварительный аудит"
      - "П5"
      - "⏸"
      - "П6"
      - "⏸"
    expected_output_not_contains:
      - "П5 (carry-over): ✅"
      - "П5 (carry-over): ❌"
      - "П6 (антипустышка): ✅"
      - "П6 (антипустышка): ❌"
    
    explanation: |
      Режим build должен:
      1. Построить таблицу стадий из описания деятельности
      2. Немедленно прогнать П1-П4 по черновику
      3. Явно пометить П5 и П6 как ⏸ (не пропускать молча, не ставить ✅/❌)
      Тест проверяет именно этот инвариант — принципы 5-6 отложены, не пропущены.
    ```
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related