For Japanese version, see IRomValidator-jp.md.
IRomValidator (ROM Validator Specification)
1. Responsibility Boundary
IRomValidator verifies ROM assets against RCS governance constraints and blocks structurally unsafe intelligence assets before execution.
- Role:
- Non-role:
Validate schema, linkage resolvability, type consistency, and circular references.
Canonicalization, signature matching, and physical I/O are delegated elsewhere.
2. Contract Signature
namespace AIKernel.Abstractions.Rom;\n\n/// <summary>\n/// ROM バリデーターの契約。\n/// RCS-F002: リンク未解決時は推論入力を拒否。\n/// RCS-F004: Type Consistency の検証。\n/// RCS-F005: Circular Reference Guard。\n/// </summary>\npublic interface IRomValidator\n{\n /// <summary>\n /// ROM ドキュメントのスキーマを検証します。\n /// RCS-001: 必須項目 (entity.id, entity.type, version) の存在確認。\n /// RCS-F001: 必須 ID 欠落時は ROM 無効。\n /// </summary>\n /// <param name="document">検証対象の ROM ドキュメント</param>\n /// <param name="cancellationToken">キャンセルトークン</param>\n /// <returns>スキーマ検証結果</returns>\n Task<AIKernel.Dtos.Rom.RomSchemaValidationResult> ValidateSchemaAsync(\n IRomDocument document,\n CancellationToken cancellationToken = default);\n\n /// <summary>\n /// ROM ドキュメント内の関係参照([[id]])がすべて解決可能であることを検証します。\n /// RCS-002: [[id]] は解決可能な参照でなければならない(MUST)。\n /// RCS-F002: リンク未解決時は推論入力を拒否。\n /// </summary>\n /// <param name="document">検証対象の ROM ドキュメント</param>\n /// <param name="relationResolver">関係解決サービス</param>\n /// <param name="cancellationToken">キャンセルトークン</param>\n /// <returns>リンク検証結果</returns>\n Task<AIKernel.Dtos.Rom.RomLinkageValidationResult> ValidateLinkageAsync(\n IRomDocument document,\n IRelationResolver relationResolver,\n CancellationToken cancellationToken = default);\n\n /// <summary>\n /// Type Consistency を検証します。\n /// RCS-F004: entity.type とプロパティ定義が矛盾する場合、入力を拒否。\n /// 必須プロパティ欠落も含む。\n /// </summary>\n /// <param name="document">検証対象の ROM ドキュメント</param>\n /// <param name="typeSchema">型スキーマ定義</param>\n /// <param name="cancellationToken">キャンセルトークン</param>\n /// <returns>型一貫性検証結果</returns>\n Task<AIKernel.Dtos.Rom.RomTypeConsistencyResult> ValidateTypeConsistencyAsync(\n IRomDocument document,\n AIKernel.Dtos.Rom.EntityTypeSchema typeSchema,\n CancellationToken cancellationToken = default);\n\n /// <summary>\n /// 循環参照を検出します。\n /// RCS-F005: Circular Reference Guard - 循環参照が推論ループを誘発する場合、停止しなければならない。\n /// </summary>\n /// <param name="document">検証対象の ROM ドキュメント</param>\n /// <param name="relationResolver">関係解決サービス</param>\n /// <param name="maxDepth">探索の最大深度(無限ループ防止)</param>\n /// <param name="cancellationToken">キャンセルトークン</param>\n /// <returns>循環参照検出結果</returns>\n Task<AIKernel.Dtos.Rom.CircularReferenceDetectionResult> DetectCircularReferencesAsync(\n IRomDocument document,\n IRelationResolver relationResolver,\n int maxDepth = 10,\n CancellationToken cancellationToken = default);\n}
3. Related Use Cases
UC-01ROM loading and parsing:UC-15Context hydration:UC-12Reference integrity validation:
Serves as first quality gate after ROM load.
Ensures reference completeness before context expansion.
Confirms dynamic link soundness pre-execution.
4. Governance & Determinism
- Deterministic validation:
- Fail-Closed:
- Depth guard:
Same document/resolver/schema state must produce identical outcomes.
Invalid ROM must be rejected from all execution pipelines.
maxDepth prevents runaway traversal and pathological graph expansion.
5. Exception Contract
This interface does not hard-code exception types. Implementations should clearly expose:
- Critical validation violations:
- Validation interruption:
Structural failures that must stop execution.
Timeout/cancellation conditions preventing completion.
6. Implementation Notes
- Staged validation:
- Dynamic schema lookup:
Partial checks are acceptable only if full pass is guaranteed before inference starts.
Support domain/version-aware EntityTypeSchema resolution strategies.
Changelog
- v0.0.0 / v0.0.0.0: Initial draft
- v0.0.1 (2026-05-06): Version upgrade aligned with documentation guidelines
architecture/interfaces/rom/IRomValidator.md