Пакет общего кода нормализации ББ/ОФР arm_statements (#116 docs) #2
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/1-arm-statements-package"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #1
Пакет общего кода
arm_statements— план 1 волны 1 единой нормализации ББ/ОФР (RSHB/arm-ka-docs#116). План:openspec/changes/unified-statement-normalization/plans/2026-10-18-plan-1-arm-statements.md(веткаfeat/116-unified-normalizationв arm-ka-docs, PR #117).Что внутри
Чистые функции над frozen-dataclass (stdlib + PyYAML): шаги 2–8 нормализации (раскладка и колонки, строки и разлепление, суммы, §7, подтверждение кодов структурой,
needs_review, статус),normalize_candidate/normalize,recomputeдля ядра,to_contract/warning_to_contract/status_input_from_contract(форма контракта v2.0), словариrules/*.yaml, golden на обезличенных входах (Review Focus 1–5). Публичный API совпадает с разделом «Публичный API пакета» плана (проверено финальным ревью через inspect); сверх раздела в__all__добавленыRulesиRulesError(R-8).make check: ruff, ruff format, mypy strict — чисто; 272 passed. Схема v2.0:to_contractпроверен поrecognition-result.schema.json(0 ошибок, разовая проверка вне репозитория).Rules I made
code_fixed, уверенность не меняется) и Р-43 (workspace-таблица) учтены.parse_code: краевая|как в спеке («1220|» → 12201, «|1220» → 11220 сfixed=True, подсвечивается). Цена: код с краевой чертой OCR становится пятизначным; вопрос владельцу спеки.test_sublinesисправлен по спеке (допуск ±1). Цена: если подстроки хотели строже — допуск 0.git filter-branch --msg-filter(трейлер одного коммита); ветка не публиковалась.RulesиRulesErrorв__all__.Решения автора плана P1-1…P1-31 перенесены в
design.md(arm-ka-docs, коммит bb1b761 ветки feat/116).Findings
Все Critical/Important закрыты (
fixed): I-1 (T3, abs_kind), I-1/I-2 (T6, огромный Decimal, «(-5)»), T20.1 (квантование догадки), финальное ревью: I-1 двухстрочная шапка с «Код» сверху, I-2line_refs= ref строки, I-3recomputeдля DISCLOSURE, I-4 трейлер, M-1…M-4. Полная таблица — в ledger SDD (## Findings).Deferred (в follow-up при закрытии)
statement-normalization/spec.md:13(«конвертацию делает хост») ��асходится с P1-26 — правка в docs PR #117.MappingProxyTypeвместо изменяемых dict вRules(T3.8); M-9 «1 234, 56» → 1234.56 recognized (T6.9).arm-statements/CLAUDE.md— незаполненный шаблон, нет.claude/code-paths(из adopt-project).candidate.warnings) при отсутствии документа хост обрабатывает сам (README); сегмент без «Код» в верхней строке повторной шапки — см. тестыtest_segments.🤖 Generated with Claude Code