Проблема
forgeplan validate не имеет ни одного правила для нефункциональных требований — ни MUST, ни SHOULD, ни COULD.
Для функциональных требований правил шесть, и они реально срабатывают. Для NFR — ноль.
|
FR |
NFR |
| MUST |
prd-fr-exist |
нет |
| Качество |
prd-fr-format, prd-measurability-adjectives, prd-vague-quantifiers, prd-orphan-frs, prd-no-impl-leakage |
нет |
Доказательство
Извлечение всех идентификаторов правил из бинаря forgeplan 0.34.0:
strings $(which forgeplan) | grep -oE '\bprd-[a-z-]+' | sort -u | grep -i nfr
# пусто
Строка NFR встречается среди правил ровно один раз — в сообщении "Tech names in FR/NFR sections: ", которое принадлежит prd-no-impl-leakage. То есть единственное правило, которое вообще читает секцию NFR, проверяет её на названия фреймворков, а не на измеримость.
Рядом в таблице строк лежат Non-Functional Requirements, NFR, Quality Attributes — это алиасы имён секций, которые сканирует то же правило.
Следствие в живом проекте
Из 79 PRD в рабочем окружении:
- 77 имеют
## Functional Requirements (потому что prd-fr-exist — MUST);
- 29 имеют
## Non-Functional Requirements.
50 PRD без секции NFR, и валидатор ни разу не возразил.
Это признано и в документации потребителя: plugins/fpl-skills/skills/smith-bootstrap/SKILL.md:656 — «NFR and Acceptance Criteria sections are useful but not validator-required».
Что предлагается
Три правила, по образцу уже существующих FR-правил:
| Правило |
Уровень |
Что проверяет |
prd-nfr-exist |
Should |
наличие секции ## Non-Functional Requirements (с теми же алиасами, что уже знает prd-no-impl-leakage) |
prd-nfr-measurable |
Should |
у каждого NFR-NNN есть числовой порог или явное TBD — не «быстро», не «надёжно» |
prd-nfr-measurement |
Could |
у каждого NFR указан способ измерения |
Не MUST: 50 существующих PRD немедленно покраснеют. Should даёт сигнал, не ломая рабочее окружение.
prd-measurability-adjectives уже несёт готовый чёрный список (simple, intuitive, user-friendly, responsive, quick, efficient, robust, smooth) — prd-nfr-measurable может переиспользовать его, а не заводить свой.
Смежное
Форма, которую стоит поощрять, уже сложилась в 19 PRD и даёт ровно то, что нужно правилу prd-nfr-measurement:
| ID | Category | Requirement | Metric | Condition | Measurement |
Сторона маркетплейса (гейт guardian + MUST-список ревьюера + шаблон) заводится отдельной задачей в ForgePlan/marketplace — правила валидатора без неё работают, но вместе сильнее.
Проблема
forgeplan validateне имеет ни одного правила для нефункциональных требований — ни MUST, ни SHOULD, ни COULD.Для функциональных требований правил шесть, и они реально срабатывают. Для NFR — ноль.
prd-fr-existprd-fr-format,prd-measurability-adjectives,prd-vague-quantifiers,prd-orphan-frs,prd-no-impl-leakageДоказательство
Извлечение всех идентификаторов правил из бинаря
forgeplan0.34.0:Строка
NFRвстречается среди правил ровно один раз — в сообщении"Tech names in FR/NFR sections: ", которое принадлежитprd-no-impl-leakage. То есть единственное правило, которое вообще читает секцию NFR, проверяет её на названия фреймворков, а не на измеримость.Рядом в таблице строк лежат
Non-Functional Requirements,NFR,Quality Attributes— это алиасы имён секций, которые сканирует то же правило.Следствие в живом проекте
Из 79 PRD в рабочем окружении:
## Functional Requirements(потому чтоprd-fr-exist— MUST);## Non-Functional Requirements.50 PRD без секции NFR, и валидатор ни разу не возразил.
Это признано и в документации потребителя:
plugins/fpl-skills/skills/smith-bootstrap/SKILL.md:656— «NFR and Acceptance Criteria sections are useful but not validator-required».Что предлагается
Три правила, по образцу уже существующих FR-правил:
prd-nfr-exist## Non-Functional Requirements(с теми же алиасами, что уже знаетprd-no-impl-leakage)prd-nfr-measurableNFR-NNNесть числовой порог или явноеTBD— не «быстро», не «надёжно»prd-nfr-measurementНе MUST: 50 существующих PRD немедленно покраснеют. Should даёт сигнал, не ломая рабочее окружение.
prd-measurability-adjectivesуже несёт готовый чёрный список (simple, intuitive, user-friendly, responsive, quick, efficient, robust, smooth) —prd-nfr-measurableможет переиспользовать его, а не заводить свой.Смежное
Форма, которую стоит поощрять, уже сложилась в 19 PRD и даёт ровно то, что нужно правилу
prd-nfr-measurement:Сторона маркетплейса (гейт
guardian+ MUST-список ревьюера + шаблон) заводится отдельной задачей в ForgePlan/marketplace — правила валидатора без неё работают, но вместе сильнее.