docs(2b): контракт v1.2, §12 и OQ-138…143, формы ББ/ОФР (Срез 2b) #27

Merged
aep merged 13 commits from feat/26-slice-2b-statement-parser into main 2026-10-06 21:36:55 +03:00
Owner

Документы Среза 2b: контракт v1.2, §12 05-domain-rules, OQ. Refs #26. Закрывает A11-6, A9-5 из arm-tabular-parser#18, OQ-113. Дочерний PR: RSHB/arm-tabular-parser #16 (код парсера), fixtures — RSHB/arm-ka-fixtures (golden и синтетика).

Что сделано

  • contracts/: схема и примеры результата v1.2 (MINOR): DISCLOSURE, statementDocument.checks, osvDocument.header.period_start/period_end/is_from_year_start.
  • context/05-domain-rules.md: §12 переписан (11 пунктов по реализации: классификация листов, колонка кодов, периоды, значения, шапка, самопроверка, склейка, статус; примеры НПЗ/Унагранде), §7 — жёсткие и мягкие проверки парсера, §1.1/§1.3/§1.4/§1.5 по PR tabular-parser #13/#15.
  • context/07-open-questions.md: OQ-138…OQ-143 (единицы «тыс. руб.» против рублей с копейками; форма без колонки кодов; страница-продолжение в отдельном файле; строка без кода с суммами в ОФР ФСБУ; образец ФСБУ 4/2023; лист продолжения с единственной кодовой строкой); OQ-100/130/131/133/134 → «реализовано»; OQ-113 закрыт как «допущение принято: выгрузка 1С полная (arm-core #25)». Номер OQ-137 в main занят вопросом о горячих папках — наши вопросы сдвинуты (R-15).
  • context/06-test-data.md (подраздел 4б), 03-architecture.md (BookParser, v1.2), 09-delivery-plan.md (Срез 2b), dev/qa-guide.md §6.7.
  • openspec/changes/slice-2b-statement-parser/: сквозной change, tasks.md; итоговый ledger SDD: docs/superpowers/plans/2026-10-06-slice-2b-statement-parser-ledger.md.
  • Ветка слита с origin/main (merge, не rebase), конфликты в 07-open-questions.md и qa-guide.md разрешены с сохранением обоих содержимых.

Что проверить

  • §12 п. 7 и OQ-138: примеры НПЗ (1600 = 1700 расходится на 1.94 / 9.02 / 2.48 руб.) и ОФР Унагранде совпадают с манифестом парсера; допуск ±1 не менялся — решение владельца.
  • Нумерация OQ без дублей (OQ-137 — main, 138–143 — наши).
  • docs/contracts/** после задачи 1 не менялись (R-4); три косметических замечания (T1.1, T2.1–T2.3) — follow-up; ядро/парсер не затронуты.
  • Копии схемы: arm-core#27, scan-gateway#5 — должны остаться байт в байт с contracts/.

Порядок мержа

docs #27 (этот PR) → arm-core #27 и scan-gateway #5 → fixtures (feat/14-statements-golden) → tabular-parser #16.

Rulings I made

№ Решение Цена ошибки
R-1 Временный скрипт проверки схемы в задаче 1 — в scratchpad контроллера нулевая
R-2 (design #12) В scan-gateway вместе с v1.2 догнан v1.1 (OsvRow.extra, пример result-osv-needs-check.json): копия схемы обязана совпадать с docs побайтно лишний необязательный OsvRow.extra, откатывается отдельным коммитом
R-3 (design #14) Golden schema_version 1.1→1.2 (113 файлов) пересозданы сразу в worktree fixtures, симлинк переключён; основной checkout fixtures не тронут коммит �� fixtures-ветке раньше плана; откат — reset ветки
R-4 (design #15) docs/contracts/** после задачи 1 заморожены (копии в arm-core#27 / scan-gateway#5 на ревью); T1.1/T2.1/T2.2/T2.3 — follow-up три косметических замечания живут до следующего MINOR
R-5 (design #16) T6.I1 (osv.py не знал STATEMENT_CONTINUATION) закрыт заменой osv.py::parse на BookParser в задаче 7 (+ тест) если бы T7 не покрыла — поймало бы финальное ревью
R-6 (design #17) Соотношение проверяется в колонке, только если присутствует его цель; отсутствующие члены = 0; подстроки — когда есть форма без итоговой строки при наличии членов этим соотношением не ловится
R-7 (design #18) Словарь statement_checks.yaml не ослаблен (жёсткие 1100…1500, 2100…2300 остаются strict: true); данные теста плана исправлены меняется одна строка yaml
R-8 (design #19) Для подстрок общий допуск ±1 расхождение в 1 единицу у подстрок не ловится
R-9 (design #20) _RELATION/_TERM допускают пятизначные коды справа (plan-mandated), явные правила из yaml валидатор ограничивает четырёхзначными закрыто валидатором
R-10 (design #21) Принять отклонения задачи 12: продолжение без колонки кодов → needs_check книги; OTHER-продолжение по правилам ББ; form_name не передаётся лишний needs_check на редком листе
R-11 (design #22) → R-13 (design #23) Допуск ±1 не менялся; баланс НПЗ ожидаемо needs_check (рубли с копейками при шапке «тыс. руб.»; 1600 = 1700 расходятся на 1.94 / 9.02 / 2.48 руб.) — решение владельца, вариант А если владелец передумает — допуск/нормировка единиц в словаре (OQ-138)
R-12 Fix round 2 задачи 13 отдан свежему исполнителю на sonnet (не резюм haiku) лишний контекст
R-14 (design #24) ОФР НПЗ и ОФР Унагранде (стр. 1) по факту needs_check (2100 расходится на 17.50 / 9.43 / 1416, единицы), допуск ±1 не менялся; сценарий «Знаки 1С» перенесён на Межениновскую если владелец хочет done на реальных ОФР — допуск/нормировка в словаре
R-15 (design #26) Наши OQ-137…142 перенумерованы в OQ-138…143: в main OQ-137 занят вопросом о горячих папках ссылки на OQ-13x в старых комментариях/описаниях
R-16 (design #27) Одна волна фиксов по финальному ревью: I-1 (лист с единственной кодовой строкой присоединяется как продолжение, порог в словаре) + M-10, I-2, I-3, M-1…M-8, M-11, T13.5, T15.1, T15.2; остальное — follow-up I-1 расширил парсер после ревью задач (N-1: ложные присоединения листов после формы)
O-1 (операционное) Контроллер запустил Docker Desktop (open -a Docker) для make up интеграционных тестов задачи 15 нет
O-12 В трейлере Claude-Session коммитов финальной волны URL сессии вместо UUID; историю не переписывали неединообразный трейлер

Находки и статусы (Срез 2b, прогоны 1–3)

Статус каждой находки: fixed <коммит> / deferred / rejected <причина>. Коммиты — tabular-parser (если не указано иное). Deferred уйдут в follow-up issue при закрытии.

Маркер Суть Статус
T1.1 / T2.1 $comment схемы упоминает «1.1» (plan-mandated, R-4) deferred
T1.2 format: date не проверяется без format_checker в check-скрипте deferred
T1.3 число «3» в примере произвольно rejected: косметика примера
T2.2 пример result-statement-excel.json — needs_check при одном мягком нарушении (R-4); плюс M-12: у BALANCE нет 1700 при relations_failed: [] deferred
T2.3 result-statement-minimal.json (OCR) получил checks, что противоречит «нет объекта = не проверялось» deferred
T2.4 необязательные негативные тесты rejected: вне брифа
T3.1 / T3.2 догон v1.1 в scan-gateway; CONTRACT_VERSION остаётся 1.0 fixed (описания PR arm-core#27, scan-gateway#5)
O-1 make golden-update в T2 переписал 113 golden в основном checkout fixtures fixed: закрыт R-3 (основной checkout чист, проверено финальным ревью)
O-2 отчёт реализатора T5 без вывода тестов; контроллер прогнал сам fixed (правило «вывод команд в отчёте»)
T4.I1 okud DISCLOSURE pattern не по брифу fixed 6a3661c
T4.1–T4.6 перепарсинг RelationRule; повтор any(...); нет проверки lo<=hi; FormType не в __all__; нет негативных тестов словарей; неточный комментарий periods deferred
T5.1–T5.5 мёртвые noqa; шумные константы; непокрытая ветка; лишние вычисления; «Пояснения» только в header_row deferred
T6.I1 osv.py не обрабатывал STATEMENT_CONTINUATION fixed 43ee753 (R-5)
T6.1 устаревшие statement_markers (M-6) fixed 1abe212
T6.2 _OKUD_CODE литерал в detect.py, английский комментарий, type: ignore (M-5) fixed 1abe212
T6.3–T6.5 производительность classify; пробелы в тестах; ложное «продолжение» на «прочем» deferred
T7.1 / T7.2 предупреждения пропуска форм при ошибке ОСВ-листа; семантика metrics.rows форм deferred
O-3 бриф T7 неточен про golden s12/s14 deferred (принято)
T8.I1 диапазон «Январь - Май 2025» давал неверные границы периода fixed f279157
T8.1–T8.4 пробелы в тестах границ периода deferred
T8.5 ветка «одиночный месяц» в bounds_span слишком широка (= I-2) fixed 1abe212
O-4 для «Январь - Май» quarter=Q4/is_cumulative остаются от правила «год» deferred (вместе с OQ-131)
T9.I1 тест охраны ИНН аудитора не проверял охрану (3 раунда) fixed cb0bd06
T9.1–T9.5, O-5 приватный импорт в тесте; кавычки аннотации; фолбэк организации без теста; okpo без границы аудитора; неточные номера строк deferred
T10.I1 / T10.I2 порог дробной доли зашит в код; нет теста границы 10 % fixed aad6310
T10.1–T10.6 float в сравнении (закрыт целочисленным сравнением, финальное ревью); дубликаты с повторами; merged_origin; перегруженный тест; минус-знак; RED не показан deferred (T10.1/T10.2 закрыты кодом)
T10.7 README/тест для fractional_share_percent (M-7) fixed 1abe212
T11.I1–I4 ослабление yaml; пропуск правила при отсутствии цели; нулевой допуск подстрок; расширение _RELATION fixed 72e5656, b9e6e31 (R-6…R-9)
T11.1 / T11.2 / O-6 is_subline по равенству моделей; устаревший раздел в fix-отчёте; 1600=1700 на фрагментах deferred / принято
T12.1 предупреждение о дробных считалось по листу, мёртвые счётчики (M-11) fixed 1abe212
T12.2, T12.4–T12.9 избыточная ветка lonely; O(n·m); побочный эффект _document; вакуумный тест; docstring; повтор form_name; нет теста дубликата в продолжении deferred
T12.3 can_join игнорировал тип формы (M-10) fixed 1abe212
O-7 D-8 «лист ОСВ между страницами» не реализуем интерфейсом deferred (принято)
T13.I1–I4 st02 подогнана под ответ; тест не проверял сценарии спеки; слабые st04/st01; пустая autouse-фикстура; дефект _upper_header_row fixed fad0c10, e7552dc, 4907935 (+ fixtures f938255, b63c0a5)
T13.3 / T13.4 нет отрицательного теста _upper_header_row; константа посреди файла deferred (T13.3 покрыт в финальной волне)
T13.5 _upper_header_row: верхняя строка при склейке хотя бы одной колонки fixed 1abe212
T13.6 api/uv.lock попал в коммит 4907935 (M-1) fixed 336f4d6
O-8 relations_failed / soft_relations_failed не попадали в wire (exclude_unset) fixed 1b17f2e
T14.I1 FailedRelation.actual не по ближайшему варианту abs_terms fixed d82940a (+ fixtures ba600fc)
T14.I2 property-тест вакуумен для complete: false fixed 6cd2ea8
T14.1, T14.2, T14.5, T14.6 нет теста уровня документа для checks; sheets через locator.count(","); document_ok не покрывает has_code_column; слабый explained_needs_check deferred
T14.3 ОКВЭД в шапке design/05-domain-rules при удалённой метке rejected: в 05-domain-rules ОКВЭД не упоминается, design описывает содержимое файла
T14.4 шаблон «ББ до» даёт пустой DISCLOSURE done из блока «Примечания» deferred (закреплено манифестом)
T15.1 / T15.2 README «Ограничения» п.1 неточен; тест воркера INCOME слабый fixed 1abe212
T15.3 / T15.4 README про «лишние снимки» форм; остановка compose deferred
T16.I1, T16.2, T16.3 docs: 88 vs 113 файлов; цитаты предупреждений; «байт в байт» fixed docs 4729e40
T16.4 статус PR в 09-delivery-plan устареет после merge deferred
O-9 (= I-1) лист ОФР НПЗ с единственной строкой 2400 терялся молча fixed 1abe212 (+ fixtures 9586207)
O-10 (= M-3) design D-11 обещал НПЗ done fixed 15fb561
O-11 в main docs занят OQ-137 fixed: R-15, docs 9235e6a, tabular-parser be47e82
O-13 интеграционный прогон финальной волны не был показан fixed: make check-full контроллером (ниже)
C-n Critical из финального ревью нет
I-1 см. O-9 fixed 1abe212
I-2 см. T8.5 fixed 1abe212
I-3 пустой line_name при line_name_confidence = 100 у итогов и «в том числе» fixed 1abe212 (+ fixtures 9586207)
M-1…M-8, M-10, M-11 uv.lock; tasks.md; D-11; §1.1 и README про текст пропуска; слово «тыс»/ОКУД в коде; statement_markers; fractional_share_percent; нумерация/нули в «строках без кода»; can_join; одно предупреждение на документ fixed 336f4d6, 1abe212, 15fb561, docs 5b34868
M-9 подстроки с 10-го номера (11510, 15110…) не попадают в _subline_rules deferred
M-12 примеры контракта противоречат описанию схемы (= T2.2/T2.3), обязательно до Среза 3 deferred
N-1 ослабленный порог (min_codes_continuation = 1) допускает ложные присоединения листов после формы; при совпадении числа колонок строка молча присоединяется и документ может остаться done deferred (значимая; реальные фикстуры не затронуты)
N-2 book.py:109: «была форма раньше», а не «сразу после листа формы» deferred
N-3 нет негативных BookParser-тестов шлюза продолжений deferred
N-4 «Пояснения» без шапки таблицы на продолжении могут стать line_name deferred
N-5 design D-10 («periods.yaml не правится») противоречит правке I-2 (not_single_month); конфликт при rebase на #11 deferred

🤖 Generated with Claude Code

**Документы Среза 2b: контракт v1.2, §12 05-domain-rules, OQ.** Refs #26. Закрывает A11-6, A9-5 из arm-tabular-parser#18, OQ-113. Дочерний PR: RSHB/arm-tabular-parser #16 (код парсера), fixtures — RSHB/arm-ka-fixtures (golden и синтетика). ## Что сделано - `contracts/`: схема и примеры результата v1.2 (MINOR): `DISCLOSURE`, `statementDocument.checks`, `osvDocument.header.period_start/period_end/is_from_year_start`. - `context/05-domain-rules.md`: §12 переписан (11 пунктов по реализации: классификация листов, колонка кодов, периоды, значения, шапка, самопроверка, склейка, статус; примеры НПЗ/Унагранде), §7 — жёсткие и мягкие проверки парсера, §1.1/§1.3/§1.4/§1.5 по PR tabular-parser #13/#15. - `context/07-open-questions.md`: **OQ-138…OQ-143** (единицы «тыс. руб.» против рублей с копейками; форма без колонки кодов; страница-продолжение в отдельном файле; строка без кода с суммами в ОФР ФСБУ; образец ФСБУ 4/2023; лист продолжения с единственной кодовой строкой); OQ-100/130/131/133/134 → «реализовано»; OQ-113 закрыт как «допущение принято: выгрузка 1С полная (arm-core #25)». Номер OQ-137 в main занят вопросом о горячих папках — наши вопросы сдвинуты (R-15). - `context/06-test-data.md` (подраздел 4б), `03-architecture.md` (`BookParser`, v1.2), `09-delivery-plan.md` (Срез 2b), `dev/qa-guide.md` §6.7. - `openspec/changes/slice-2b-statement-parser/`: сквозной change, `tasks.md`; итоговый ledger SDD: `docs/superpowers/plans/2026-10-06-slice-2b-statement-parser-ledger.md`. - Ветка слита с `origin/main` (merge, не rebase), конфликты в 07-open-questions.md и qa-guide.md разрешены с сохранением обоих содержимых. ## Что проверить - §12 п. 7 и OQ-138: примеры НПЗ (1600 = 1700 расходится на 1.94 / 9.02 / 2.48 руб.) и ОФР Унагранде совпадают с манифестом парсера; допуск ±1 не менялся — решение владельца. - Нумерация OQ без дублей (OQ-137 — main, 138–143 — наши). - `docs/contracts/**` после задачи 1 не менялись (R-4); три косметических замечания (T1.1, T2.1–T2.3) — follow-up; ядро/парсер не затронуты. - Копии схемы: arm-core#27, scan-gateway#5 — должны остаться байт в байт с `contracts/`. ## Порядок мержа **docs #27 (этот PR)** → arm-core #27 и scan-gateway #5 → fixtures (`feat/14-statements-golden`) → tabular-parser #16. ## Rulings I made | № | Решение | Цена ошибки | |---|---|---| | R-1 | Временный скрипт проверки схемы в задаче 1 — в scratchpad контроллера | нулевая | | R-2 (design #12) | В scan-gateway вместе с v1.2 догнан v1.1 (`OsvRow.extra`, пример `result-osv-needs-check.json`): копия схемы обязана совпадать с docs побайтно | лишний необязательный `OsvRow.extra`, откатывается отдельным коммитом | | R-3 (design #14) | Golden `schema_version` 1.1→1.2 (113 файлов) пересозданы сразу в worktree fixtures, симлинк переключён; основной checkout fixtures не тронут | коммит �� fixtures-ветке раньше плана; откат — reset ветки | | R-4 (design #15) | `docs/contracts/**` после задачи 1 заморожены (копии в arm-core#27 / scan-gateway#5 на ревью); T1.1/T2.1/T2.2/T2.3 — follow-up | три косметических замечания живут до следующего MINOR | | R-5 (design #16) | T6.I1 (osv.py не знал `STATEMENT_CONTINUATION`) закрыт заменой `osv.py::parse` на `BookParser` в задаче 7 (+ тест) | если бы T7 не покрыла — поймало бы финальное ревью | | R-6 (design #17) | Соотношение проверяется в колонке, только если присутствует его цель; отсутствующие члены = 0; подстроки — когда есть | форма без итоговой строки при наличии членов этим соотношением не ловится | | R-7 (design #18) | Словарь `statement_checks.yaml` не ослаблен (жёсткие 1100…1500, 2100…2300 остаются `strict: true`); данные теста плана исправлены | меняется одна строка yaml | | R-8 (design #19) | Для подстрок общий допуск ±1 | расхождение в 1 единицу у подстрок не ловится | | R-9 (design #20) | `_RELATION/_TERM` допускают пятизначные коды справа (plan-mandated), явные правила из yaml валидатор ограничивает четырёхзначными | закрыто валидатором | | R-10 (design #21) | Принять отклонения задачи 12: продолжение без колонки кодов → `needs_check` книги; `OTHER`-продолжение по правилам ББ; `form_name` не передаётся | лишний `needs_check` на редком листе | | R-11 (design #22) → R-13 (design #23) | Допуск ±1 не менялся; баланс НПЗ ожидаемо `needs_check` (рубли с копейками при шапке «тыс. руб.»; 1600 = 1700 расходятся на 1.94 / 9.02 / 2.48 руб.) — решение владельца, вариант А | если владелец передумает — допуск/нормировка единиц в словаре (OQ-138) | | R-12 | Fix round 2 задачи 13 отдан свежему исполнителю на sonnet (не резюм haiku) | лишний контекст | | R-14 (design #24) | ОФР НПЗ и ОФР Унагранде (стр. 1) по факту `needs_check` (2100 расходится на 17.50 / 9.43 / 1416, единицы), допуск ±1 не менялся; сценарий «Знаки 1С» перенесён на Межениновскую | если владелец хочет `done` на реальных ОФР — допуск/нормировка в словаре | | R-15 (design #26) | Наши OQ-137…142 перенумерованы в OQ-138…143: в main OQ-137 занят вопросом о горячих папках | ссылки на OQ-13x в старых комментариях/описаниях | | R-16 (design #27) | Одна волна фиксов по финальному ревью: I-1 (лист с единственной кодовой строкой присоединяется как продолжение, порог в словаре) + M-10, I-2, I-3, M-1…M-8, M-11, T13.5, T15.1, T15.2; остальное — follow-up | I-1 расширил парсер после ревью задач (N-1: ложные присоединения листов после формы) | | O-1 (операционное) | Контроллер запустил Docker Desktop (`open -a Docker`) для `make up` интеграционных тестов задачи 15 | нет | | O-12 | В трейлере `Claude-Session` коммитов финальной волны URL сессии вместо UUID; историю не переписывали | неединообразный трейлер | ## Находки и статусы (Срез 2b, прогоны 1–3) Статус каждой находки: `fixed <коммит>` / `deferred` / `rejected <причина>`. Коммиты — tabular-parser (если не указано иное). Deferred уйдут в follow-up issue при закрытии. | Маркер | Суть | Статус | |---|---|---| | T1.1 / T2.1 | `$comment` схемы упоминает «1.1» (plan-mandated, R-4) | deferred | | T1.2 | `format: date` не проверяется без format_checker в check-скрипте | deferred | | T1.3 | число «3» в примере произвольно | rejected: косметика примера | | T2.2 | пример `result-statement-excel.json` — `needs_check` при одном мягком нарушении (R-4); плюс M-12: у BALANCE нет 1700 при `relations_failed: []` | deferred | | T2.3 | `result-statement-minimal.json` (OCR) получил `checks`, что противоречит «нет объекта = не проверялось» | deferred | | T2.4 | необязательные негативные тесты | rejected: вне брифа | | T3.1 / T3.2 | догон v1.1 в scan-gateway; `CONTRACT_VERSION` остаётся 1.0 | fixed (описания PR arm-core#27, scan-gateway#5) | | O-1 | `make golden-update` в T2 переписал 113 golden в основном checkout fixtures | fixed: закрыт R-3 (основной checkout чист, проверено финальным ревью) | | O-2 | отчёт реализатора T5 без вывода тестов; контроллер прогнал сам | fixed (правило «вывод команд в отчёте») | | T4.I1 | okud DISCLOSURE pattern не по брифу | fixed 6a3661c | | T4.1–T4.6 | перепарсинг RelationRule; повтор `any(...)`; нет проверки lo<=hi; `FormType` не в `__all__`; нет негативных тестов словарей; неточный комментарий periods | deferred | | T5.1–T5.5 | мёртвые noqa; шумные константы; непокрытая ветка; лишние вычисления; «Пояснения» только в header_row | deferred | | T6.I1 | `osv.py` не обрабатывал `STATEMENT_CONTINUATION` | fixed 43ee753 (R-5) | | T6.1 | устаревшие `statement_markers` (M-6) | fixed 1abe212 | | T6.2 | `_OKUD_CODE` литерал в detect.py, английский комментарий, `type: ignore` (M-5) | fixed 1abe212 | | T6.3–T6.5 | производительность classify; пробелы в тестах; ложное «продолжение» на «прочем» | deferred | | T7.1 / T7.2 | предупреждения пропуска форм при ошибке ОСВ-листа; семантика `metrics.rows` форм | deferred | | O-3 | бриф T7 неточен про golden s12/s14 | deferred (принято) | | T8.I1 | диапазон «Январь - Май 2025» давал неверные границы периода | fixed f279157 | | T8.1–T8.4 | пробелы в тестах границ периода | deferred | | T8.5 | ветка «одиночный месяц» в `bounds_span` слишком широка (= I-2) | fixed 1abe212 | | O-4 | для «Январь - Май» quarter=Q4/is_cumulative остаются от правила «год» | deferred (вместе с OQ-131) | | T9.I1 | тест охраны ИНН аудитора не проверял охрану (3 раунда) | fixed cb0bd06 | | T9.1–T9.5, O-5 | приватный импорт в тесте; кавычки аннотации; фолбэк организации без теста; okpo без границы аудитора; неточные номера строк | deferred | | T10.I1 / T10.I2 | порог дробной доли зашит в код; нет теста границы 10 % | fixed aad6310 | | T10.1–T10.6 | float в сравнении (закрыт целочисленным сравнением, финальное ревью); дубликаты с повторами; `merged_origin`; перегруженный тест; минус-знак; RED не показан | deferred (T10.1/T10.2 закрыты кодом) | | T10.7 | README/тест для `fractional_share_percent` (M-7) | fixed 1abe212 | | T11.I1–I4 | ослабление yaml; пропуск правила при отсутствии цели; нулевой допуск подстрок; расширение `_RELATION` | fixed 72e5656, b9e6e31 (R-6…R-9) | | T11.1 / T11.2 / O-6 | `is_subline` по равенству моделей; устаревший раздел в fix-отчёте; 1600=1700 на фрагментах | deferred / принято | | T12.1 | предупреждение о дробных считалось по листу, мёртвые счётчики (M-11) | fixed 1abe212 | | T12.2, T12.4–T12.9 | избыточная ветка lonely; O(n·m); побочный эффект `_document`; вакуумный тест; docstring; повтор `form_name`; нет теста дубликата в продолжении | deferred | | T12.3 | `can_join` игнорировал тип формы (M-10) | fixed 1abe212 | | O-7 | D-8 «лист ОСВ между страницами» не реализуем интерфейсом | deferred (принято) | | T13.I1–I4 | st02 подогнана под ответ; тест не проверял сценарии спеки; слабые st04/st01; пустая autouse-фикстура; дефект `_upper_header_row` | fixed fad0c10, e7552dc, 4907935 (+ fixtures f938255, b63c0a5) | | T13.3 / T13.4 | нет отрицательного теста `_upper_header_row`; константа посреди файла | deferred (T13.3 покрыт в финальной волне) | | T13.5 | `_upper_header_row`: верхняя строка при склейке хотя бы одной колонки | fixed 1abe212 | | T13.6 | `api/uv.lock` попал в коммит 4907935 (M-1) | fixed 336f4d6 | | O-8 | `relations_failed` / `soft_relations_failed` не попадали в wire (`exclude_unset`) | fixed 1b17f2e | | T14.I1 | `FailedRelation.actual` не по ближайшему варианту `abs_terms` | fixed d82940a (+ fixtures ba600fc) | | T14.I2 | property-тест вакуумен для `complete: false` | fixed 6cd2ea8 | | T14.1, T14.2, T14.5, T14.6 | нет теста уровня документа для checks; `sheets` через `locator.count(",")`; `document_ok` не покрывает `has_code_column`; слабый `explained_needs_check` | deferred | | T14.3 | ОКВЭД в шапке design/05-domain-rules при удалённой метке | rejected: в 05-domain-rules ОКВЭД не упоминается, design описывает содержимое файла | | T14.4 | шаблон «ББ до» даёт пустой DISCLOSURE `done` из блока «Примечания» | deferred (закреплено манифестом) | | T15.1 / T15.2 | README «Ограничения» п.1 неточен; тест воркера INCOME слабый | fixed 1abe212 | | T15.3 / T15.4 | README про «лишние снимки» форм; остановка compose | deferred | | T16.I1, T16.2, T16.3 | docs: 88 vs 113 файлов; цитаты предупреждений; «байт в байт» | fixed docs 4729e40 | | T16.4 | статус PR в 09-delivery-plan устареет после merge | deferred | | O-9 (= I-1) | лист ОФР НПЗ с единственной строкой 2400 терялся молча | fixed 1abe212 (+ fixtures 9586207) | | O-10 (= M-3) | design D-11 обещал НПЗ `done` | fixed 15fb561 | | O-11 | в main docs занят OQ-137 | fixed: R-15, docs 9235e6a, tabular-parser be47e82 | | O-13 | интеграционный прогон финальной волны не был показан | fixed: `make check-full` контроллером (ниже) | | C-n | Critical из финального ревью | нет | | I-1 | см. O-9 | fixed 1abe212 | | I-2 | см. T8.5 | fixed 1abe212 | | I-3 | пустой `line_name` при `line_name_confidence = 100` у итогов и «в том числе» | fixed 1abe212 (+ fixtures 9586207) | | M-1…M-8, M-10, M-11 | uv.lock; tasks.md; D-11; §1.1 и README про текст пропуска; слово «тыс»/ОКУД в коде; statement_markers; fractional_share_percent; нумерация/нули в «строках без кода»; can_join; одно предупреждение на документ | fixed 336f4d6, 1abe212, 15fb561, docs 5b34868 | | M-9 | подстроки с 10-го номера (11510, 15110…) не попадают в `_subline_rules` | deferred | | M-12 | примеры контракта противоречат описанию схемы (= T2.2/T2.3), обязательно до Среза 3 | deferred | | N-1 | ослабленный порог (`min_codes_continuation = 1`) допускает ложные присоединения листов после формы; при совпадении числа колонок строка молча присоединяется и документ может остаться `done` | deferred (значимая; реальные фикстуры не затронуты) | | N-2 | `book.py:109`: «была форма раньше», а не «сразу после листа формы» | deferred | | N-3 | нет негативных BookParser-тестов шлюза продолжений | deferred | | N-4 | «Пояснения» без шапки таблицы на продолжении могут стать `line_name` | deferred | | N-5 | design D-10 («periods.yaml не правится») противоречит правке I-2 (`not_single_month`); конфликт при rebase на #11 | deferred | 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-06 12:21:55 +03:00
Proposal, design (состав v1.2: DISCLOSURE, statementDocument.checks, границы периода ОСВ; примеры; порядок
раскатки потребители → производитель), дельта recognition-contract «Файл результата» v1.2, tasks.

Refs #26

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
aep added 1 commit 2026-10-06 12:54:10 +03:00
План superpowers по спеке change slice-2b-statement-parser: контракт v1.2 в docs/парсере/копиях, словари форм,
columns/detect/header/lines/checks/merge, BookParser, границы периода ОСВ, синтетика st01…st05, манифест и golden,
интеграция, документы, завершение.

Refs #26

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
aep added 1 commit 2026-10-06 13:14:37 +03:00
Refs #26

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
aep added 1 commit 2026-10-06 18:40:35 +03:00
Копия .superpowers/sdd/…/progress.md для продолжения на другой машине: задачи 1–13 complete, рулинги R-1…R-12,
находки deferred, пауза перед задачей 14.

Refs #26

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
aep added 9 commits 2026-10-06 21:13:26 +03:00
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
Закрывает A11-6, A9-5 (arm-tabular-parser#18), OQ-113.

Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
Номер OQ-137 в main занят вопросом о раскладке горячих папок ИС Сканирование.

Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
aep changed title from openspec: сквозная спека Среза 2b — контракт результата v1.2, §12, OQ (на ревью) to docs(2b): контракт v1.2, §12 и OQ-138…143, формы ББ/ОФР (Срез 2b) 2026-10-06 21:14:14 +03:00
aep merged commit b96b5c9da2 into main 2026-10-06 21:36: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#27
No description provided.