英語版は IMessageContract.md を参照。
IMessageContract (契約仕様)
1. 責務の境界 (Responsibility Boundary)
IMessageContract は、カーネル内部および外部連携で交換されるメッセージ封筒の標準形式を定義する契約です。
- 役割:
- 非役割:
識別子、種類、時刻、送信元/宛先、ヘッダー、ペイロードの共通枠を提供し、疎結合な通信を成立させます。
配送制御、再送、キュー管理、ペイロード解釈は責務外です。
2. 契約シグネチャ (Signature)
namespace AIKernel.Contracts;\n\n/// <summary>\n/// メッセージ契約を定義します。\n/// カーネル内通信のメッセージ形式を標準化します。\n/// </summary>\npublic interface IMessageContract\n{\n /// <summary>\n /// メッセージの一意識別子を取得します。\n /// </summary>\n string MessageId { get; }\n\n /// <summary>\n /// メッセージの種類を取得します。\n /// </summary>\n string MessageType { get; }\n\n /// <summary>\n /// メッセージ送信時刻を取得します。\n /// </summary>\n DateTime Timestamp { get; }\n\n /// <summary>\n /// メッセージの送信元を取得します。\n /// </summary>\n string Source { get; }\n\n /// <summary>\n /// メッセージの宛先を取得します。\n /// </summary>\n string Destination { get; }\n\n /// <summary>\n /// メッセージのペイロードを取得します。\n /// </summary>\n object? Payload { get; }\n\n /// <summary>\n /// メッセージのヘッダーを取得します。\n /// </summary>\n IReadOnlyDictionary<string, string>? Headers { get; }\n}
3. 関連ユースケース (Related UCs)
UC-25Event Bus 配信:UC-20決定論的リプレイと監査証跡:UC-29タスクパイプライン管理:
コンポーネント間イベント伝達の共通パケットとして機能します。
Timestamp と Headers(相関情報)を基に時系列追跡を可能にします。
非同期ステップ間の進捗通知・状態遷移シグナルに利用されます。
4. 統治上の制約 (Governance & Determinism)
- 不変性:
- 追跡可能性:
- 時系列整合:
配送中に MessageId と Payload が改変されない前提を維持します。
Headers に CorrelationId 等を含め、関連メッセージ連鎖を横断追跡可能にします。
Timestamp は監査時系列の基準となるため、UTC規約で一貫運用することが推奨されます。
5. 実装時の注意 (Notes)
- 直列化容易性:
- 型安全:
実装DTOは JSON 等で安定してシリアライズできる構造を推奨します。
object? Payload を使う場合も、実運用では型付きラッパーやジェネリック契約の併用で安全性を補完してください。
変更履歴
- v0.0.0 / v0.0.0.0: 初期ドラフト
- v0.0.1 (2026-05-06): ドキュメント規約に基づくバージョン更新
Source:
architecture/interfaces/contracts/IMessageContract-jp.md