Skip to content

Code review проекта: исправление багов, CI, линтинг и документация#45

Merged
netkeep80 merged 4 commits into
netkeep80:mainfrom
konard:issue-44-96f563cfe778
Mar 21, 2026
Merged

Code review проекта: исправление багов, CI, линтинг и документация#45
netkeep80 merged 4 commits into
netkeep80:mainfrom
konard:issue-44-96f563cfe778

Conversation

@konard

@konard konard commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Полный code review проекта по запросу из issue #44. Найдены и исправлены баги, проблемы CI pipeline, нарушения линтинга и несоответствия в документации.

Fixes #44


Обнаруженные и исправленные проблемы

Критические баги

Файл Проблема Исправление
parsers/anum_prover.py:577 _check_meta_self_closure проверял expr2.value вместо expr2.reference — некорректные результаты эквивалентности для паттерна ♂∞ = ∞ → ♂∞ Заменено на expr2.reference (как в mtc_formula_prover.py:1294)
parsers/extended_anum_parser.py:90 char == 'INF' — одиночный символ никогда не равен 3-символьной строке Удалено невозможное сравнение
parsers/complex_anum_parser.py:10 from extended_anum_parser import ... — bare import не работает при запуске из корня проекта Добавлен try/except с fallback на relative import
.github/workflows/ci.yml:72 EXIT_CODE=1 в pipe + while read устанавливается в subshell и не видна в parent shell — проверка никогда не проваливается Заменено на for file in $(find ...)

CI pipeline

Проблема Исправление
ruff check --exit-zero + continue-on-error: true — линтинг полностью игнорируется Удалены --exit-zero и continue-on-error
pytest с continue-on-error: true — тесты не блокируют pipeline Удалён continue-on-error

Мёртвый / unreachable код

Файл Проблема
parsers/anum_prover.py:226 Дублированная проверка if self.current_char == '=' — уже обработана на строке 211
parsers/mtc_formula_prover.py:303 Аналогичная дублированная проверка '=' — уже обработана на строке 283
core/notation_system.py:44 Дублированный '!=' в FORMULA_OPERATORS

Линтинг (ruff)

Файл Правило Исправление
core/axioms/validate_axioms.py:139 F541 f-string без плейсхолдеров → обычная строка
parsers/anum_prover.py:623 E721 type(x) == type(y)type(x) is type(y)
parsers/mtc_formula_prover.py:1440 E721 type(x) == type(y)type(x) is type(y)
parsers/extended_anum_parser.py:225 F841 Неиспользуемая переменная start_pos
parsers/anum_prover.py:37 E722 except:except Exception:
parsers/mtc_formula_prover.py:43 E722 except:except Exception:
converters/ascii_unicode.py:31 F401 Неиспользуемый import re

Документация

Файл Проблема Исправление
README.md:216 Английская секция аксиом устарела: "12 axioms (A0–A11)" не соответствует русской секции "17 axioms (A0–A16)" Обновлена до 17 аксиом (А0–А16) с актуальными формулами
.gitignore Содержал только C++ записи, отсутствовали Python-специфичные Добавлены .pytest_cache/, .ruff_cache/, .venv/, .egg-info/, IDE файлы

Замечания для будущей работы (не исправлено в этом PR)

Следующие проблемы обнаружены, но выходят за рамки bugfix-PR:

  1. Массивное дублирование кода между mtc_formula_prover.py и anum_prover.py — базовые классы (Symbol, Connection, AssociativeRoot и др.) скопированы целиком. Рекомендуется выделить в общий модуль.
  2. validate_axioms.py не валидирует ничего — все 17 тестов передают True в log_test() hardcoded. Это документационный runner, а не тест-сьют.
  3. ascii_unicode.py: ascii_to_unicode наивно заменяет M и F во всём тексте через str.replace(), что может повредить обычный текст (например, "FORM""♀OR♂").
  4. mtc_formula_prover.py: 1560 строк — файл превышает рекомендуемый лимит CI (1500). Рекомендуется разбить на модули.
  5. Нет тестов для complex_anum_parser.py, mtc_original_abit_parser.py, extended_anum_parser.py, notation_system.py.
  6. tests/test.bat — только Windows, нет аналога для Linux/macOS.

Test plan

  • ruff check parsers/ converters/ core/ tests/ --ignore E501,F401 — All checks passed
  • python -m pytest tests/test_converters.py -v --tb=short — 43 tests passed
  • CI pipeline passes on GitHub Actions

🤖 Generated with Claude Code

konard and others added 2 commits March 20, 2026 01:34
Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: netkeep80#44
Исправления багов:
- anum_prover.py: _check_meta_self_closure проверял expr2.value вместо expr2.reference (логическая ошибка)
- extended_anum_parser.py: char == 'INF' никогда не сработает для одиночного символа
- complex_anum_parser.py: bare import не работает при запуске из корня проекта
- anum_prover.py, mtc_formula_prover.py: unreachable код (дублированная проверка '=')
- notation_system.py: дублированный '!=' в FORMULA_OPERATORS

CI pipeline:
- check-file-limits: переменная EXIT_CODE не выходила из подоболочки (баг с pipe + while)
- Удалён --exit-zero у ruff и continue-on-error у тестов (CI не ловил ошибки)

Линтинг (ruff):
- validate_axioms.py: f-string без плейсхолдеров
- anum_prover.py, mtc_formula_prover.py: type() == type() → type() is type()
- extended_anum_parser.py: неиспользуемая переменная start_pos
- anum_prover.py, mtc_formula_prover.py: bare except → except Exception
- ascii_unicode.py: неиспользуемый import re

Документация:
- README.md: английская секция аксиом обновлена до А0-А16 (была устаревшая А0-А11)
- .gitignore: добавлены Python-специфичные записи

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard konard changed the title [WIP] code review Code review проекта: исправление багов, CI, линтинг и документация Mar 20, 2026
Выделены общие хелперы _check_val_closure_composition и
_check_ref_closure_composition для обобщения повторяющихся
паттернов проверки r♀...♀ и ♂...♂v с произвольным количеством
форм. Файл уменьшен с 1561 до 1343 строк (в рамках лимита CI 1500).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard konard marked this pull request as ready for review March 20, 2026 01:46
@konard

konard commented Mar 20, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $6.202342
  • Calculated by Anthropic: $4.546886 USD
  • Difference: $-1.655456 (-26.69%)

🤖 Models used:

  • Tool: Claude
  • Requested: opus
  • Main model: Claude Opus 4.6 (ID: claude-opus-4-6, Anthropic, cutoff: 2025-05)
    📎 Log file uploaded as Gist (2554KB)
    🔗 View complete solution draft log

Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard

konard commented Mar 20, 2026

Copy link
Copy Markdown
Contributor Author

🔄 Auto-restart 1/3

Detected uncommitted changes from previous run. Starting new session to review and commit or discard them.

Uncommitted files:

?? ci-logs/

Auto-restart will stop after changes are committed or discarded, or after 2 more iterations. Please wait until working session will end and give your feedback.

@konard

konard commented Mar 20, 2026

Copy link
Copy Markdown
Contributor Author

🔄 Auto-restart 1/3 Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $1.664419
  • Calculated by Anthropic: $0.870642 USD
  • Difference: $-0.793778 (-47.69%)

🤖 Models used:

  • Tool: Claude
  • Requested: opus
  • Main model: Claude Opus 4.6 (ID: claude-opus-4-6, Anthropic, cutoff: 2025-05)
    📎 Log file uploaded as Gist (3127KB)
    🔗 View complete solution draft log

Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard

konard commented Mar 20, 2026

Copy link
Copy Markdown
Contributor Author

✅ Ready to merge

This pull request is now ready to be merged:

  • All CI checks have passed
  • No merge conflicts
  • No pending changes

Monitored by hive-mind with --auto-restart-until-mergeable flag

@netkeep80 netkeep80 merged commit e61451b into netkeep80:main Mar 21, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

code review

2 participants