# MoonBit Phonetic 0.3.0 Development Report

## Implementation-to-claim matrix

| Capability | Public API | Implementation | Tests / executable evidence |
| --- | --- | --- | --- |
| Eight phonetic encoders | `Algorithm`, `encode`, `encode_keys`, encoder functions | `soundex.mbt`, `refined_soundex.mbt`, `nysiis.mbt`, `metaphone.mbt`, `double_metaphone.mbt`, `caverphone1.mbt`, `caverphone2.mbt`, `match_rating.mbt` | encoder test files; `examples/basic` |
| Configurable Latin-name normalization | `normalize_name`, `NormalizationConfig` | `normalization_config.mbt`, `normalization_latin.mbt`, `normalization_tokenize.mbt` | normalization test files |
| Four similarity metrics | `string_similarity`, metric functions | `levenshtein.mbt`, `jaro.mbt`, `jaro_winkler.mbt`, `dice.mbt` | similarity test files |
| Validated explainable matching | `match_names`, match presets and builders | `matching_config.mbt`, `matching_pair.mbt`, `matching_token.mbt` | matching test files; `examples/matching` |
| In-memory index and stable ranking | `NameIndex`, `query`, `candidate_records`, `statistics` | `index_mutation.mbt`, `index_query.mbt`, `index_inspection.mbt` | index test files |
| Validated structured snapshots | `export_snapshot`, `from_snapshot` | `index_snapshot.mbt` | `index_snapshot_test.mbt` |
| Batch duplicate grouping | `deduplicate_names`, `DedupReport` | `dedup_union_find.mbt`, `dedup_batch.mbt` | dedup test files; `examples/deduplicate` |
| Cross-dataset one-to-one linkage | `link_name_datasets`, `LinkageConfig`, `LinkageReport` | `linkage_config.mbt`, `linkage_validation.mbt`, `linkage_candidates.mbt`, `linkage_assign.mbt` | linkage test files; `examples/linkage` |

## Verification

The repository acceptance gate is `moon fmt --check`, `moon info`, `moon check`, `moon build`, `moon test`, and all four `moon run` commands. GitHub Actions executes format, check, build, test, and the same examples. The current suite contains 157 tests. `scripts/source-audit.ps1` reports 41 root implementation files and 4,042 rough substantive lines separately from tests, examples, generated files, blank lines, and comment-only lines.

## Scope boundary

Version 0.3.0 is a dependency-free codec and name-matching foundation. It does not implement audio processing, full Unicode normalization, multilingual transliteration, network services, database or file persistence, identity verification, measured production accuracy, or Metaphone 3. Snapshot support is limited to structured values whose derived normalization and blocking keys are recomputed during restoration. Linkage evaluates only phonetic-blocked candidates up to the configured per-left cap and uses deterministic greedy assignment; it does not claim globally optimal matching.
