# lawref.diagnostics

*module*

Реестр диагностик (WP-03; формат — SPEC [§198](https://github.com/arxohq/law/blob/master/spec/SPEC.ru/27-part-xxvi-static-semantics-and-diagnostics.ru.md#198-diagnostic-format), диапазоны — [§199](https://github.com/arxohq/law/blob/master/spec/SPEC.ru/27-part-xxvi-static-semantics-and-diagnostics.ru.md#199-diagnostic-code-ranges) + errata E-0004).

Каталог кодов растёт вместе с реализацией (аудит: в SPEC поимённо определены
единицы кодов — остальные заводятся здесь по мере появления проверок). Каждый
новый код обязан попадать в свой диапазон и валидироваться diagnostic-схемой.

## lawref.diagnostics.CODE_RE

*attribute* · *module attribute*

```python
CODE_RE = re.compile('^LDC-([EWIH])(\\d)(\\d{3})$')
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/diagnostics.py#L11-L11)

## lawref.diagnostics.KNOWN_CODES

*attribute* · *module attribute*

```python
KNOWN_CODES = {'LDC-E1401': ('UNSUPPORTED_LANGUAGE_VERSION', 'SPEC §266.1'), 'LDC-E1402': ('UNKNOWN_FEATURE', 'SPEC §26'), 'LDC-E1403': ('FEATURE_NOT_ACTIVE', 'SPEC §26'), 'LDC-E1368': ('PACKAGE_KEY_CONFLICT', 'SPEC §45.1/§196; errata E-0210'), 'LDC-E2401': ('COMPUTABILITY_EXPECTATION_MISMATCH', 'SPEC §47.5'), 'LDC-E2402': ('COMPUTABILITY_UNKNOWN_CLASS', 'SPEC §47.5'), 'LDC-E2403': ('COMPUTABILITY_NOT_PROVED', 'SPEC §46/§47.5; errata E-0043'), 'LDC-E2110': ('FUNCTION_RECURSION_UNPROVED', 'SPEC §46/§264'), 'LDC-E4103': ('LATE_STATUS_PRODUCER', 'SPEC §111'), 'LDC-E4112': ('DEFEATER_WITHOUT_CANDIDATE', 'SPEC §107.3/§110; 0.2-01'), 'LDC-E8101': ('LAYER_EXCEEDED', 'spec/LAYERS.ru.md A1.6'), 'LDC-E8102': ('LAYER_DEPENDENCY_EXCEEDED', 'spec/LAYERS.ru.md A1.6'), 'LDC-E8201': ('VERBALIZATION_GAP', 'LAYERS-SURFACES §3.3'), 'LDC-E8202': ('STALE_APPROVAL', 'LAYERS-SURFACES §3.6'), 'LDC-E8203': ('UNKNOWN_GRAMMATICAL_FORM', 'SPEC §218.1'), 'LDC-E8301': ('TABLE_OVERLAP', 'A3 §A3.4'), 'LDC-E8302': ('TABLE_NOT_EXHAUSTIVE', 'A3 §A3.4'), 'LDC-E8303': ('TABLE_OUTPUT_DISAGREEMENT', 'A3 §A3.4'), 'LDC-E8304': ('UNSUPPORTED_FEEL', 'A3 §A3.4'), 'LDC-E8306': ('UNSUPPORTED_COLUMN_TYPE', 'A3 §A3.4'), 'LDC-W8305': ('UNREACHABLE_TABLE_ROW', 'A3 §A3.3.2'), 'LDC-E8701': ('PARAMETER_INTERVAL_OVERLAP', 'A3 §A3.2'), 'LDC-E8702': ('PARAMETER_TYPE_MISMATCH', 'A3 §A3.2'), 'LDC-E8703': ('PARAMETER_RANGE_INVALID', 'A3 §A3.2'), 'LDC-E8704': ('PARAMETER_LOCK_MISMATCH', 'A3 §A3.5'), 'LDC-E8705': ('PARAMETER_GRANULARITY_MISMATCH', 'A3 §A3.2'), 'LDC-E4701': ('EPISTEMIC_ACCEPTANCE_CYCLE', 'SPEC §78.1'), 'LDC-E5201': ('SOURCE_TEXT_HASH_MISMATCH', 'SPEC §194'), 'LDC-E5202': ('FRAGMENT_TEXT_NOT_IN_PUBLICATION', 'SPEC §194'), 'LDC-E5205': ('SOURCE_TEXT_HASH_MISSING', 'SPEC §194'), 'LDC-E5203': ('SOURCE_RESOLUTION_AMBIGUOUS', 'SPEC §198'), 'LDC-E5204': ('PUBLICATION_DOCUMENT_HASH_MISMATCH', 'SPEC §194'), 'LDC-E5208': ('ANCHOR_QUOTE_NOT_IN_FRAGMENT', 'SPEC §194'), 'LDC-E5401': ('CONSOLIDATION_MISMATCH', 'SPEC §32.2'), 'LDC-E5402': ('OPERATION_TARGET_NOT_FOUND', 'SPEC §32.2'), 'LDC-E5403': ('OPERATIONS_OVERLAP', 'SPEC §32.2'), 'LDC-E5404': ('MIGRATION_BASE_MISMATCH', 'SPEC §32.2'), 'LDC-E5405': ('DANGLING_LOCATOR', 'SPEC §32.2')}
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/diagnostics.py#L27-L66)

## lawref.diagnostics.RANGES

*attribute* · *module attribute*

```python
RANGES = {'E0': 'syntax', 'E1': 'names/packages', 'E2': 'types/units', 'E3': 'time/context', 'E4': 'rules/defeasibility', 'E5': 'source/provenance', 'E6': 'execution/determinism', 'E7': 'interop', 'E8': 'layers/surfaces/ontology (reserved, errata E-0004)'}
```

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/diagnostics.py#L14-L24)

## lawref.diagnostics.range_of

*function*

```python
def range_of(code: str) -> str
```

Имя диапазона [§199](https://github.com/arxohq/law/blob/master/spec/SPEC.ru/27-part-xxvi-static-semantics-and-diagnostics.ru.md#199-diagnostic-code-ranges) для кода; ValueError на неканоничный код.

[View source](https://github.com-arxohq/arxo-io/law/blob/2edc2b92ce22b52e03f4081d2769a58229684379/engines/lawref/lawref/diagnostics.py#L69-L80)
