Зачем
Текущий 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.
Зачем
Текущий
resolve(pptr<T>)выглядит безопаснее, чем его фактическая семантика.Для storage-kernel это опасно: интерфейс должен явно показывать, что именно гарантируется.
Нужен явный split между:
Это задача на семантический seam, а не на косметический rename.
Что нужно сделать
pptr<T> -> T*.verified/validated), он должен быть оправдан ине дублировать
verify()без необходимости.надежде на имя
resolve().Acceptance criteria
checked access и unchecked access названы по-разному.
pptr.Non-goals
Suggested labels
extraction-prepapivalidation