Skip to content

Commit 4b7f0b3

Browse files
authored
fix: ensure lazy types are loaded before reading version in save() paths (#1169)
## Summary - Add `await modelRegistry.ensureTypeLoaded(type)` before `modelRegistry.get(type)` in `YamlDefinitionRepository.save()` and `YamlEvaluatedDefinitionRepository.save()` - Without this, lazy-registered types (catalog-known but not yet imported) cause `get()` to return `undefined`, silently persisting a stale `typeVersion` to disk - Follows the established fix pattern from `libswamp/models/get.ts:76` and `validation_service.ts:706` Closes swamp-club#90 (follow-up to swamp-club#89) ## Test Plan - [x] `deno check` passes - [x] `deno lint` passes - [x] `deno fmt --check` passes - [x] All 4305 tests pass - [x] Filed systeminit/swamp-uat#136 for missing UAT coverage of typeVersion persistence 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1 parent b2c9040 commit 4b7f0b3

2 files changed

Lines changed: 2 additions & 0 deletions

File tree

src/infrastructure/persistence/yaml_definition_repository.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ export class YamlDefinitionRepository implements DefinitionRepository {
247247
const data = definition.toData();
248248
// Ensure type metadata is always present in persisted YAML
249249
data.type = type.normalized;
250+
await modelRegistry.ensureTypeLoaded(type);
250251
const modelDef = modelRegistry.get(type);
251252
data.typeVersion = modelDef?.version ?? data.typeVersion;
252253
// Remove undefined values since YAML can't stringify them

src/infrastructure/persistence/yaml_evaluated_definition_repository.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ export class YamlEvaluatedDefinitionRepository {
243243
const data = definition.toData();
244244
// Ensure type metadata is always present in persisted YAML
245245
data.type = type.normalized;
246+
await modelRegistry.ensureTypeLoaded(type);
246247
const modelDef = modelRegistry.get(type);
247248
data.typeVersion = modelDef?.version ?? data.typeVersion;
248249
// Remove undefined values since YAML can't stringify them

0 commit comments

Comments
 (0)