lawref.conformance
Conformance descriptor §266.3 — заявка реализации и её проверка (WP-27-срез).
Дескриптор здесь не пишется руками: он собирается из того, что уже проверено — реестра версий и features (WP-32), слоевой разметки векторов (WP-24) и фактического набора артефактов. Заявка, которую никто не сверяет, хуже её отсутствия: она выглядит как обещание, а является текстом.
Правила проверки (verify) отражают нормативные требования:
- заявленная версия языка обязана иметь статус
supportedв реестре; - заявленная feature обязана существовать и быть
active: заявить зарезервированную — ложное утверждение (§26); - заявка слоя
Liозначает «все векторы слоёв L0…Li проходят» (LAYERS A1.7).xfailна таком векторе опровергает заявку: требование заведомо не выполняется.pending(артефактов ещё нет) заявку не опровергает, но обязан быть раскрыт вdeferred— иначе заявка прячет пробел вместо того, чтобы его назвать (§197 + WP-27: «дескриптор с отложенными блоками»); core-production(§8.6) требует объявленных resource limits — профиль без них не заявляется.
Частично реализованные возможности НЕ заявляются. Схема не различает «есть» и «есть наполовину», поэтому половина — это «нет»; чем именно она половина, сказано в STATUS, а не в дескрипторе.
Attributes
| Name | Description |
|---|---|
LAYER_ORDER | No description. |
PROFILES | No description. |
Functions
| Name | Description |
|---|---|
build | Сборка дескриптора. Версии языка берутся из реестра, а не задаются. |
descriptor_hash | sha256 канонических байтов дескриптора без самого поля хэша. |
load_registry | No description. |
load_vectors | No description. |
verify | Список опровержений заявки; пустой — заявка подтверждена данными. |
write | No description. |
LAYER_ORDERattributemodule attribute#
LAYER_ORDER = {'L0': 0, 'L1': 1, 'L2': 2, 'L3': 3}PROFILESattributemodule attribute#
PROFILES = (
'core-syntax',
'core-static',
'core-representation',
'core-executable',
'core-auditable',
'core-production'
)buildfunction#
def build(implementation: str, profiles: list[str], features: list[str], semantic_layer: str, resource_limits: dict[str, Any], proof_capabilities: list[str], registry: dict, deferred: list[dict] | None = None, interop_adapters: list[dict] | None = None) -> dictСборка дескриптора. Версии языка берутся из реестра, а не задаются.
descriptor_hashfunction#
def descriptor_hash(descriptor: dict) -> strsha256 канонических байтов дескриптора без самого поля хэша.
load_registryfunction#
def load_registry(root: Path) -> dictload_vectorsfunction#
def load_vectors(root: Path) -> list[dict]verifyfunction#
def verify(descriptor: dict, registry: dict, vectors: list[dict]) -> list[str]Список опровержений заявки; пустой — заявка подтверждена данными.
writefunction#
def write(path: Path, descriptor: dict) -> NoneDocumentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.