Skip to content

refactor: const-корректность _walk_path — разделение на _walk_path_read и _walk_path_create (Этап 10.4, Issue #208)#225

Merged
netkeep80 merged 3 commits into
netkeep80:mainfrom
konard:issue-208-762904d62e85
Mar 22, 2026
Merged

refactor: const-корректность _walk_path — разделение на _walk_path_read и _walk_path_create (Этап 10.4, Issue #208)#225
netkeep80 merged 3 commits into
netkeep80:mainfrom
konard:issue-208-762904d62e85

Conversation

@konard
Copy link
Copy Markdown
Contributor

@konard konard commented Mar 22, 2026

Summary

  • Шаблонный _walk_path<bool CreateMode>() const разделён на два метода с корректными квалификаторами:
    • _walk_path_read() const — только чтение, возвращает 0 при отсутствии узла
    • _walk_path_create() — без const, создаёт промежуточные узлы
  • Устранена ложная const-квалификация метода, который в режиме CreateMode=true модифицировал дерево узлов через глобальное состояние PMM
  • Добавлены 10 тестов в tests/test_pjson_const_correctness.cpp
  • Обновлены plan.md и readme.md

Контекст

Это Этап 10.4 (Проблема 11) из plan.md. Метод _walk_path<bool>() был объявлен const, но в режиме CreateMode=true модифицировал дерево узлов. Это было возможно только из-за глобального состояния PMM. Разделение на два явных метода (_walk_path_read и _walk_path_create) делает const-контракт корректным и устраняет if constexpr ветвление.

Fixes

Fixes #208

Test plan

  • Все 700 тестов проходят (690 существующих + 10 новых)
  • 10 новых тестов: const get (2), const exists (1), const find (1), const root (1), const metrics (1), put creates (1), const array navigation (1), const wrong_type (1), get does not create (1)
  • Сборка без ошибок (только предупреждения из deps/pmm/pmm.h)
  • clang-format проверен

🤖 Generated with Claude Code

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

Issue: netkeep80#208
…ad и _walk_path_create (Этап 10.4, Issue netkeep80#208)

Шаблонный _walk_path<bool CreateMode>() const разделён на два метода:
- _walk_path_read() const — только чтение, возвращает 0 при отсутствии узла
- _walk_path_create() — без const, создаёт промежуточные узлы

Устранена ложная const-квалификация метода, который в режиме CreateMode=true
модифицировал дерево узлов через глобальное состояние PMM.

Добавлены 10 тестов в tests/test_pjson_const_correctness.cpp.
Обновлены plan.md и readme.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard konard changed the title [WIP] Сделать следующую задачу в текущей фазе разработки и после обновить README.md и файл фазы разработки refactor: const-корректность _walk_path — разделение на _walk_path_read и _walk_path_create (Этап 10.4, Issue #208) Mar 22, 2026
@konard konard marked this pull request as ready for review March 22, 2026 10:00
@konard
Copy link
Copy Markdown
Contributor Author

konard commented Mar 22, 2026

🤖 Solution Draft Log

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

💰 Cost estimation:

  • Public pricing estimate: $5.835836
  • Calculated by Anthropic: $3.582283 USD
  • Difference: $-2.253553 (-38.62%)

🤖 Models used:

  • Tool: Claude
  • Requested: opus
  • Model: Claude Opus 4.6 (claude-opus-4-6)

📎 Log file uploaded as Gist (1587KB)


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

@konard
Copy link
Copy Markdown
Contributor Author

konard commented Mar 22, 2026

✅ 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 5376302 into netkeep80:main Mar 22, 2026
7 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

2 participants