# Migrating to v0.10.x

## Chunker options merging

`Chunker` option merging uses `dataclasses.replace()` instead of `asdict()` so **callable fields** (e.g. `otel_tracer`, `semantic_embed_fn`) are not deep-copied.

If you passed custom callables through `ChunkOptions`, they should now round-trip reliably; if you relied on accidental deep-copy side effects (unlikely), treat this as a bugfix.

## New infrastructure APIs (additive)

- `ChunkStore` for SQLite-backed incremental indexing
- `Chunker.stream_upsert()` for batched vector-export rows
- `omnichunk serve --mcp` for JSON-RPC tools
- `ChunkOptions.otel_tracer` for optional tracing

## Breaking changes

None expected for core chunking callers; new features are opt-in.
