Запись каталога: один зарегистрированный пакет.
Идентификация: PK = package_id (Antelope name, ≤12 символов, [a-z1-5.]). Имя выбирает разработчик при публикации; уникальность гарантируется блокчейном (emplace фейлится, если такой package_id уже зарегистрирован).
Имена пакета:
package_id — кодовое неизменяемое имя в каталоге (этот PK).
package_name — внешнее человекочитаемое имя (например, npm @voskhod/sports-club-tracker, go-module path или OCI-image name). Меняется через setpkgname (если потребуется) или re-publish; в текущей схеме допускается изменение через rename-action в будущем.
compatible_subnets — human-labels подсетей (ru, by, ...). Реальная идентификация подсети — через chain_id, который хранится в coops/subs; здесь labels достаточно, потому что они используются только для display и грубой фильтрации в UI.
last_active_version — semver самого свежего active-релиза c scope.kind=all. Поле обновляется только при setrelease со scope=all и используется для быстрого ответа GET /v1/package/:id без сканирования таблицы releases. Canary-релизы это поле не трогают — оно отражает «версию по умолчанию» для кооперативов вне canary-целей.
- См. также
- lib/domain/table_apps_releases.hpp — связанные релизы (FK by_package).