Срез 3b (docs): §7/§9 по факту, контракт API форм и мелких дыр, OQ #49

Merged
aep merged 6 commits from feat/48-slice-3b-docs into main 2026-10-07 14:20:55 +03:00
Owner

Closes #48.

Сопровождает arm-core#36 (Срез 3b: формы ББ/ОФР в ядре и API до сводной ОСВ). DBML v5.16 и контракты docs/contracts/ не менялись.

Что изменено

  • context/05-domain-rules.md: §7 (проверки в ядре по копии словаря, межформенная мягкая, акцепт сбрасывается правкой), §9.3 (статус документа формы), §9.5 п. 2 (маппинг форм, период по дате отчёта или самой поздней дате колонок), п. 4 (условия подтверждения: PERIOD_REQUIRED, CHECKS_NOT_PASSED), п. 6 (аудит), новые п. 9 (правка формы только до подтверждения) и п. 10 (исходный файл, комментарии).
  • context/07-open-questions.md: новый OQ-153 (аудит скачивания первички и CSV); у OQ-23, 36, 77, 140, 145 — «Срез 3b: допущение реализовано».
  • context/03-architecture.md: раздел «Формы ББ/ОФР, проверки §7 и API экрана проверки (Срез 3b)» (маппинг в map_file, словарь statement_checks.yaml — копия, риск расхождения).
  • context/09-delivery-plan.md: Срез 3a закрыт, 3b реализован (бэкенд и API), статусы 2a и 2c — «закрыт».
  • dev/api-contract-slice-3b.md (новый) и ссылка в dev/README.md: контракт API форм и мелких дыр пути пользователя.
  • dev/qa-guide.md: раздел 6.9 — как проверить форму на стенде.

Rulings I made

  • R-1 (design #11): признак повтора формы при маппинге — множество типов, второй экземпляр пропускается, первый документ NEEDS_CHECK.
  • R-2 (design #12): после правки/акцепта статус формы пересчитывается без предупреждений маппинга (они не хранятся на уровне документа).
  • R-3 (design #13): тест плана «по колонкам/None» заменён тестами «отсутствующий код = 0 → нарушение».
  • R-4 (design #14): «форма без строк создаётся с шапкой и колонками (если они есть в результате)».
  • R-5 (design #15): сверка golden ОСВ ограничена документами OSV (в снимке s12 есть BALANCE).
  • R-6 (design #16): BALANCE/INCOME без financial_statement_meta подтверждается без условий D-9.
  • R-7 (design #17): список нарушений CHECKS_NOT_PASSED — в detail.failures.
  • R-8 (design #18) — закрыт: комментарии удаляются вместе с документами файла (при DELETE /files/{id}).
  • R-9 (design #19): значения CSV чек-листа не нейтрализуются от формул Excel.
  • R-10: пакеты доработок A/B отдельного task-ревью не получали (B получил, A — тесты с мутационной проверкой), покрываются финальным ревью ветки.
  • R-11 (design #20) — отозван: посылка финального ревью неверна, поведение §7 не менялось (цель присутствует, если строка есть в форме; пустая сумма = 0).
  • R-12 (design #21): PATCH header.inn = null — 422 INVALID_INN (очистить ИНН нельзя).
  • R-13 (design #22): повтор column_index в колонках результата или повтор пары (строка, колонка) — остаётся первое, предупреждение, документ NEEDS_CHECK.

Полный список решений — arm-core openspec/changes/slice-3b-statements-api/design.md, «Decisions made without discussion» №1–22.

🤖 Generated with Claude Code

https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2

Closes #48. Сопровождает arm-core#36 (Срез 3b: формы ББ/ОФР в ядре и API до сводной ОСВ). DBML v5.16 и контракты `docs/contracts/` не менялись. ## Что изменено - `context/05-domain-rules.md`: §7 (проверки в ядре по копии словаря, межформенная мягкая, акцепт сбрасывается правкой), §9.3 (статус документа формы), §9.5 п. 2 (маппинг форм, период по дате отчёта или самой поздней дате колонок), п. 4 (условия подтверждения: `PERIOD_REQUIRED`, `CHECKS_NOT_PASSED`), п. 6 (аудит), новые п. 9 (правка формы только до подтверждения) и п. 10 (исходный файл, комментарии). - `context/07-open-questions.md`: новый OQ-153 (аудит скачивания первички и CSV); у OQ-23, 36, 77, 140, 145 — «Срез 3b: допущение реализовано». - `context/03-architecture.md`: раздел «Формы ББ/ОФР, проверки §7 и API экрана проверки (Срез 3b)» (маппинг в `map_file`, словарь `statement_checks.yaml` — копия, риск расхождения). - `context/09-delivery-plan.md`: Срез 3a закрыт, 3b реализован (бэкенд и API), статусы 2a и 2c — «закрыт». - `dev/api-contract-slice-3b.md` (новый) и ссылка в `dev/README.md`: контракт API форм и мелких дыр пути пользователя. - `dev/qa-guide.md`: раздел 6.9 — как проверить форму на стенде. ## Rulings I made - R-1 (design #11): признак повтора формы при маппинге — множество типов, второй экземпляр пропускается, первый документ NEEDS_CHECK. - R-2 (design #12): после правки/акцепта статус формы пересчитывается без предупреждений маппинга (они не хранятся на уровне документа). - R-3 (design #13): тест плана «по колонкам/None» заменён тестами «отсутствующий код = 0 → нарушение». - R-4 (design #14): «форма без строк создаётся с шапкой и колонками (если они есть в результате)». - R-5 (design #15): сверка golden ОСВ ограничена документами OSV (в снимке s12 есть BALANCE). - R-6 (design #16): BALANCE/INCOME без financial_statement_meta подтверждается без условий D-9. - R-7 (design #17): список нарушений CHECKS_NOT_PASSED — в detail.failures. - R-8 (design #18) — закрыт: комментарии удаляются вместе с документами файла (при `DELETE /files/{id}`). - R-9 (design #19): значения CSV чек-листа не нейтрализуются от формул Excel. - R-10: пакеты доработок A/B отдельного task-ревью не получали (B получил, A — тесты с мутационной проверкой), покрываются финальным ревью ветки. - R-11 (design #20) — отозван: посылка финального ревью неверна, поведение §7 не менялось (цель присутствует, если строка есть в форме; пустая сумма = 0). - R-12 (design #21): `PATCH header.inn = null` — 422 `INVALID_INN` (очистить ИНН нельзя). - R-13 (design #22): повтор `column_index` в колонках результата или повтор пары (строка, колонка) — остаётся первое, предупреждение, документ `NEEDS_CHECK`. Полный список решений — arm-core `openspec/changes/slice-3b-statements-api/design.md`, «Decisions made without discussion» №1–22. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-07 12:30:21 +03:00
§7 (проверки в ядре, межформенная мягкая, акцепт), §9.3/§9.5 (формы ББ/ОФР, период,
правка до подтверждения, условия подтверждения, исходный файл и комментарии),
OQ-153 и пометки «допущение реализовано» у OQ-23/36/77/140/145, раздел 3b в
03-architecture, статусы срезов в 09-delivery-plan, dev/api-contract-slice-3b.md,
сценарии 6.9 в dev/qa-guide.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-07 12:39:28 +03:00
Порядок проверок в контракте, ссылки на решения №1–19, разделители в OQ,
уточнения по units и /users/brief, номера PR закрытых срезов 2a/2c/3a, убрана
ссылка на исполнителя экранов.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-07 13:08:01 +03:00
ASCII filename у CSV, формат format=json|csv, nosniff у исходного файла,
before.checks_accepted с комментарием в аудите сброса акцепта.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-07 13:36:44 +03:00
inn=null — 422, удаление файла удаляет формы и комментарии, заголовки исходного
файла (no-store, CSP sandbox), повторы колонок и пар, присутствие цели §7,
ссылки на решения №1–22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-07 13:46:17 +03:00
Цель проверки присутствует, если строка есть в форме; пустая сумма и отсутствующий
код — 0, как в tabular-parser. Решение №20 отозвано.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
aep added 1 commit 2026-10-07 14:05:10 +03:00
aep merged commit 6be6823808 into main 2026-10-07 14:20:55 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-ka-docs#49
No description provided.