Skip to content

# Extraction prep: разделить resolve() на явные checked/unchecked/verified access modes #312

@netkeep80

Description

@netkeep80

Зачем

Текущий resolve(pptr<T>) выглядит безопаснее, чем его фактическая семантика.
Для storage-kernel это опасно: интерфейс должен явно показывать, что именно гарантируется.

Нужен явный split между:

  • fast checked access
  • intentionally unchecked/internal access
  • optional stronger verified access, если он действительно нужен

Это задача на семантический seam, а не на косметический rename.

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

  • Сформулировать явную модель access modes для pptr<T> -> T*.
  • Развести как минимум:
    • публичный checked путь
    • внутренний unchecked путь
  • Если нужен третий режим (verified / validated), он должен быть оправдан и
    не дублировать verify() без необходимости.
  • Свести внутренние call-site'ы к явному выбору режима доступа, а не к неявной
    надежде на имя resolve().

Acceptance criteria

  • В API и внутренних helper'ах исчезает двусмысленность:
    checked access и unchecked access названы по-разному.
  • Внутренние call-site'ы используют explicit path, а не случайно самый удобный helper.
  • Есть tests, показывающие разницу между valid / invalid / stale pptr.
  • Изменение не добавляет upper-layer semantics в PMM и не превращает validation в runtime-heavy subsystem.

Non-goals

  • Не делать pointer arithmetic API.
  • Не тащить в PMM object schema semantics.
  • Не трогать docs/governance/generator surface в этом PR.

Suggested labels

  • extraction-prep
  • api
  • validation
change_type: extraction-prep
change_class: extraction-prep
scope:
  - include/pmm/persist_memory_manager.h
  - include/pmm/*.h
  - tests/**
budgets:
  max_new_files: 1
  max_new_docs: 0
must_touch:
  - include/pmm/persist_memory_manager.h
  - tests/**
must_not_touch:
  - docs/**
  - README.md
  - CONTRIBUTING.md
  - repo-policy.json
  - .github/**
  - single_include/**
expected_effects:
  - Pointer resolution semantics become explicit instead of being hidden behind one overloaded helper name.
  - Public checked access and internal unchecked access are separated.
  - Future extraction of access/validation seams becomes easier.

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