AIKernel.NET
version: 0.0.2 / status: Refactor / edition: Draft / published: 2026-05-16 / updated: 2026-05-16

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:
  • Validate schema, linkage resolvability, type consistency, and circular references.

  • Non-role:
  • 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}
  • UC-01 ROM loading and parsing:
  • Serves as first quality gate after ROM load.

  • UC-15 Context hydration:
  • Ensures reference completeness before context expansion.

  • UC-12 Reference integrity validation:
  • Confirms dynamic link soundness pre-execution.

4. Governance & Determinism

  • Deterministic validation:
  • Same document/resolver/schema state must produce identical outcomes.

  • Fail-Closed:
  • Invalid ROM must be rejected from all execution pipelines.

  • Depth guard:
  • 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:
  • Structural failures that must stop execution.

  • Validation interruption:
  • Timeout/cancellation conditions preventing completion.

6. Implementation Notes

  • Staged validation:
  • Partial checks are acceptable only if full pass is guaranteed before inference starts.

  • Dynamic schema lookup:
  • 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
Source: architecture/interfaces/rom/IRomValidator.md