Skip to content

# Issue 1. Ввести минимальный forest domain protocol и удалить дублирующие пути #335

Description

@netkeep80

Цель

Сделать один минимальный, явный и переиспользуемый protocol для forest domains.
Протокол должен быть достаточно маленьким, чтобы его было легко читать, проверять и применять,
и достаточно сильным, чтобы на него можно было перевести pmap, pstringview и системные домены.

Почему это нужно

Сейчас в библиотеке уже есть общий AVL-substrate, registry и частично domain-aware код,
но protocol размазан:

  • часть логики сидит в ForestDomainOps,
  • часть в pstringview::forest_domain_descriptor,
  • часть в private helper'ах PersistMemoryManager,
  • часть остаётся локальной и ad hoc.

Это ухудшает interoperability, мешает упрощению и делает код похожим на "blob" из нескольких несогласованных путей.

Что надо сделать

Свести forest domain API к одному минимальному набору операций.

Ожидаемое ядро протокола:

  • name()
  • root_index()
  • root_index_ptr()
  • resolve_node(node_pptr)
  • less_node(lhs, rhs)
  • compare_key(key, node_pptr) — только если домен поддерживает поиск по внешнему ключу
  • validate_node(node_pptr) — опционально

Ожидаемое ядро generic ops:

  • find(key)
  • insert(node)
  • reset_root()

Жёсткие требования

  • Не добавлять второй protocol рядом со старым.
  • Не оставлять альтернативные "legacy" способы работы с domain roots.
  • Не плодить новые абстракции "на будущее".
  • Не превращать protocol в большой trait-blob.
  • Протокол должен быть маленьким и single-purpose.

Что удалить

После введения нового protocol удалить или схлопнуть всё, что дублирует его роль:

  • частные helper'ы, которые делают то же самое, но не через protocol;
  • избыточные локальные обёртки вокруг ForestDomainOps;
  • любые доменные helper'ы, которые отличаются только именами.

Файлы-кандидаты

  • include/pmm/avl_tree_mixin.h
  • include/pmm/pstringview.h
  • include/pmm/forest_domain_mixin.inc
  • include/pmm/forest_registry.h

Критерии приёмки

  1. В кодовой базе существует один минимальный forest domain protocol.
  2. ForestDomainOps остаётся маленьким и очевидным.
  3. Нет параллельных путей работы с доменными root'ами там, где можно использовать protocol.
  4. Общий LOC по затронутым файлам уменьшился или остался почти тем же, но без роста conceptual complexity.
  5. Документация и комментарии больше не называют старые helper'ы каноническими.

Формат PR для агента

В PR-описании явно показать:

  • какие старые пути удалены;
  • какой протокол считается каноническим;
  • на сколько строк суммарно сократился код.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions