From 1cb56be0108eb4ec7ff194e864d47f02c9444dc3 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Mon, 26 Oct 2026 03:23:19 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BF=D0=B5=D0=BA=D0=B0:=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=B5=20ensure=5Ffields=20=D0=B8=D0=B7=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B1=D0=B5=D0=BB=D0=BE=D0=B2=20=E2=80=94=20422=20(R-8,?= =?UTF-8?q?=20#129)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- openspec/changes/hub-backend-fixes/specs/commands/spec.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openspec/changes/hub-backend-fixes/specs/commands/spec.md b/openspec/changes/hub-backend-fixes/specs/commands/spec.md index da7eae9..a036fab 100644 --- a/openspec/changes/hub-backend-fixes/specs/commands/spec.md +++ b/openspec/changes/hub-backend-fixes/specs/commands/spec.md @@ -5,7 +5,9 @@ каноническом виде. Нормализация SHALL выполняться сразу после проверки типов значений, до остальных проверок: обязательный параметр, ставший пустым после обрезки, даёт 422 «нет <параметр>»; правила типов, временные ключи `new:` и проверки `ensure_attachment` работают по нормализованным значениям; элемент списка, ставший пустым, даёт -422 «<параметр> — без пустых элементов». Строковые параметры обрезаются по краям, кроме текстовых `summary`, +422 «<параметр> — без пустых элементов». Необязательное поле `ensure_fields` из одних пробелов (`priority`, `duedate`, +`planned_start`, `planned_end`, `epic_key`, `assignee`) даёт 422 «<параметр> — из одних пробелов; для очистки — "" или +null»: после обрезки оно стало бы пустой строкой, которую агент читает как «очистить поле в Jira» (R-8). Строковые параметры обрезаются по краям, кроме текстовых `summary`, `description`, `body` и `goal`, которые хранятся как заданы. Элементы списков `labels`, `labels_add`, `labels_remove` и `keys`, а также `target` у `ensure_status`, если это список, обрезаются поэлементно. Числа, логические значения и `null` не меняются. `filename` у `ensure_attachment` SHALL дополнительно приводиться к нормальной форме Unicode NFC. @@ -28,6 +30,10 @@ - **WHEN** `POST /batches` с `ensure_status {key: " ", target: "Готово"}` - **THEN** 422 «команда 1 (ensure_status): нет key; ожидаются key, target» +#### Scenario: Поле из пробелов не очищает Jira +- **WHEN** `POST /batches` с `ensure_fields {key: "A-1", assignee: " "}` +- **THEN** 422 «команда 1 (ensure_fields): assignee — из одних пробелов; для очистки — "" или null», пакет не создан + #### Scenario: Имя вложения в NFD - **WHEN** `ensure_attachment` с `filename` «отчёт.pdf» в NFD («е» + U+0308) - **THEN** сохранён `filename` «отчёт.pdf» в NFC; повторная постановка того же файла с именем в NFC даёт ту же строку