# `AssetManifest`

> 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.

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

The per-GLB manifest (`asset.extras.holostep.manifest`, and the sidecar). Schema owned by the runtime release.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="_schema"></a>[`$schema`](AssetManifest._schema.md) | property | The schema id. |
| <a id="element"></a>[`element`](AssetManifest.element.md) | property | The product element the GLB holds, e.g. 'kozepso_60': `asset.extras.holostep.element`, else the original file name without `.glb` (spec section 7.1). |
| <a id="front"></a>[`front`](AssetManifest.front.md) | property | The canon (Blender +Y) exports as glTF −Z. |
| <a id="origin"></a>[`origin`](AssetManifest.origin.md) | property | Where the GLB's origin sits: on the floor under the centre, or at the centre; measured from the `dimsM` box within 1 mm (spec section 7.1). |
| <a id="dimsm"></a>[`dimsM`](AssetManifest.dimsM.md) | property | The measured size, metres: the world-space box of the drawn meshes, connector planes excluded (spec section 7.1). |
| <a id="parts"></a>[`parts`](AssetManifest.parts.md) | property | Every authored part. |
| <a id="slots"></a>[`slots`](AssetManifest.slots.md) | property | Every material slot, by slot name. |
| <a id="connectors"></a>[`connectors`](AssetManifest.connectors.md) | property | Every connector plane, GLB-local. |
| <a id="animations"></a>[`animations`](AssetManifest.animations.md) | property | The clip names. |
| <a id="variants"></a>[`variants`](AssetManifest.variants.md) | property | The KHR_materials_variants names. |
| <a id="provenance"></a>[`provenance`](AssetManifest.provenance.md) | property | Who stamped the file, and when. |

## Declaration

```ts
export interface AssetManifest {
  readonly $schema: 'holostep.gltf.asset/1';
  readonly element: string;
  readonly front: '-Z' | 'other';
  readonly origin: 'floor-centre' | 'centre' | 'other';
  readonly dimsM: {
    readonly width: number;
    readonly height: number;
    readonly depth: number;
  };
  readonly parts: readonly ManifestPart[];
  readonly slots: Readonly<Record<string, ManifestSlot>>;
  readonly connectors: readonly ManifestConnector[];
  readonly animations: readonly string[];
  readonly variants: readonly string[];
  readonly provenance: {
    readonly sha256: string;
    readonly stampedBy: 'upload' | 'asset-library' | 'backfill' | 'optimizer' | 'recompress' | 'plugin' | 'other';
    readonly stampedAt: string;
    readonly ticket?: string;
  };
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `AssetManifest` 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) |
