# `IssueCode`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Type · `import type { IssueCode } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 17. Assets: describe, manifest, validation

What an [`Issue`](Issue.md) reports: an [`InputErrorCode`](InputErrorCode.md), a [`checkAsset`](checkAsset.md) check, or a value the stored format
can't hold. A code newer than the page's `contract` reaches it as 'other' (spec section 3.6).

## Issue codes

| Code | Summary |
| --- | --- |
| [`'element'`](../issues/element.md) | [`checkAsset`](checkAsset.md): the manifest's `element` matches none of the contract's globs. |
| [`'part'`](../issues/part.md) | [`checkAsset`](checkAsset.md): a contract part is missing where `required`, or has another tag, or a slot that is neither its `slot` nor one of its `slots`. |
| [`'slot'`](../issues/slot.md) | [`checkAsset`](checkAsset.md): a contract slot the manifest lacks, or one without `uvMetres` where `realSize` asks for it. |
| [`'connector'`](../issues/connector.md) | [`checkAsset`](checkAsset.md): fewer connectors of a type than the contract's `count`. |
| [`'animation'`](../issues/animation.md) | [`checkAsset`](checkAsset.md): a contract clip name the asset lacks. |
| [`'connector-name-collision'`](../issues/connector-name-collision.md) | [`checkAsset`](checkAsset.md): two connector planes whose authored names clean to the same name (spec section 6.9, ID1). |
| [`'connector-id'`](../issues/connector-id.md) | [`checkAsset`](checkAsset.md): an `extras.holostep.connector.id` that contains ':' (ID1). |
| [`'not-storable'`](../issues/not-storable.md) | [`validate`](validate.md): a value the stored format can't hold. |
| [`'space-not-storable'`](../issues/space-not-storable.md) | [`validate('configurator')`](validate.md): `space: 'parent'` in a document meant to be saved. |

Also every code of [`InputErrorCode`](InputErrorCode.md).

The set is open: a code newer than your declared contract arrives as `'other'`.

## Declaration

```ts
export type IssueCode = InputErrorCode | 'element' | 'part' | 'slot' | 'connector' | 'animation' | 'connector-name-collision' | 'connector-id' | 'not-storable' | 'space-not-storable' | 'other';
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `IssueCode` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | not recorded: no ledger row names this member or its owner |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
