# Glyph v0.1.0

Stage: **research baseline**. Not published to npm or Maven.

Procedural upright strokes with held-out random seeds. Does not recognize objects in photographs or arbitrary rotated shapes.

## Artifact

- Raw bytes: 12703
- SHA-256: `0330b3fd31a02270d85143dee2b08831080bc874ec9bcc9116f4ca2e0e452838`
- Training examples: 480
- Internal held-out smoke test: 119/120
- Classes: Circle, Square, Triangle, Line

The internal test is not an independent real-world benchmark. Scores are uncalibrated. Artifact size excludes the runtime and memory overhead.

## Node / browser

From the repository root: `bun install && bun run sdk:build`.

```ts
import { createModel } from '@embermote/glyph';
const model = createModel();
```

Text models accept a string. Audio models accept `audioFeatures(pcm, 8000)`; Glyph accepts `shapeFeatures(points)`, both exported by `@embermote/core`.

## Kotlin

```kotlin
import dev.embermote.glyph.Glyph
val model = Glyph.load()
```

JDK 17+, root Gradle build. Model resources are bundled in each model module. Use `Features.audio` or `Features.shape` for numeric inputs. Android device testing is pending.

## Rebuild

`bun run train` uses the original recipe in `training/train.py`. No external datasets or third-party weights are downloaded.
