Запустите это в любом репозитории, выполняющем разработку на основе спецификаций: grep -rn -i "возвратить" openspec/specs Мой вернулся: billing/spec.md:4: Возврат средств производится за покупки, совершенные за последние 30 дней. checkout/spec.md:4: Клиенты могут запросить возврат средств в течение ...
Запустите это в любом репозитории, выполняющем разработку на основе спецификаций:
grep -rn -i "возвратить" openspec/specs
Мой вернулся:
billing/spec.md:4: Возврат средств производится за покупки, совершенные за последние 30 дней.
checkout/spec.md:4: клиенты могут запросить возврат средств в течение 30 дней с момента доставки.
support/spec.md:4: Если заказу меньше месяца, предложите возврат средств.
То же правило, три характеристики, три формулировки — и два значения. 30 дней с момента покупки — это не 30 дней с момента доставки. Эту вилку никто не решил. Агент кодирования перефразировал его, и ни один человек его не уловил, потому что никто больше не читает спецификации — это делают только агенты. Как правда.
Мы исправили это в коде несколько десятилетий назад: не повторяйтесь. Спецификации так и не получили записку.
Исправление: определите правило один раз и позвольте каждой спецификации ссылаться на него — одну строку, несущую дайджест контента:
Возврат средств осуществляется в соответствии с BR-REFUND-001. {pdac:cite id="BR-REFUND-001" дайджест="sha256:b5c5…"}
Когда правило изменяется в ходе обычного процесса проверки, одна команда помечает каждую ссылку на спецификацию — файл и строку, без grep:
$ prodshape цитаты проверить
устаревший BR-REFUND-001 openspec/specs/billing/spec.md:4
устаревший BR-REFUND-001 openspec/specs/checkout/spec.md:4
устаревший BR-REFUND-001 openspec/specs/support/spec.md:4
Поместите это в CI и