Enum Handling Policy for v0.1.1.1
AIKernel.NET v0.1.1.1 の domain enum は、未知値を安全側に倒すための fail-closed contract surface として扱う。
基本方針
- すべての新規 domain enum は
Unknown = 0を持つ。 - 逆シリアライズ、外部 adapter、provider metadata、replay artifact から未知 enum 値を受け取った場合、実装は安全側に倒して処理する。
- 未知値を silent fallback で既知値に丸めない。
- 予測可能な失敗は例外ではなく、Result DTO / Snapshot DTO の
Succeeded = false、ErrorCode、ErrorMessage、Diagnosticsで表現する。 - cancellation は
OperationCanceledExceptionを許容する。
Unknown の意味
Unknown = 0 は次の状態を表す。
- 値が未設定である。
- 値が現在の contract package では解釈できない。
- 将来の enum value を古い consumer が受け取った。
- provider 固有値が shared enum に投影できない。
Unknown は成功値ではない。control / routing / replay / telemetry / metrics / evidence の境界では、明示的に許可された例外を除き fail-closed として扱う。
Diagnostics
未知 enum 値を検出した場合、実装は DiagnosticEntry を追加する。
推奨値:
Code:unknown_enum_valueSeverity:DiagnosticSeverity.ErrorScope: 対象境界に応じたDiagnosticScopeMessage: human-readable な説明
Metadata
未知 enum 値の raw value は Metadata に記録する。
推奨 key:
enum.type\nenum.raw_value\nenum.source\nenum.contract_version
例:
Metadata["enum.type"] = "RuntimeState"\nMetadata["enum.raw_value"] = "128"\nMetadata["enum.source"] = "runtime.adapter"\nMetadata["enum.contract_version"] = "0.1.1.1"
vendor / runtime / provider 固有の情報は shared enum へ追加せず、provider package 側の metadata key に逃がす。
Telemetry
未知 enum 値によって fail-closed した場合、telemetry 実装は可能な範囲で次を signal として出す。
TelemetrySignalKind.OperationStatusTelemetrySignalKind.SafetyTelemetrySignalKind.RuntimeStateまたは該当する state signal
signal の Metadata には、上記 enum.* key と同等の raw value 情報を含める。
対象 domain enum
AdapterKindAdapterBindingStateAdapterValidationSeverityRuntimeAttachmentModeRuntimeControlOperationRuntimeStateRuntimeFailureKindProcessControlOperationProcessStateKindProcessSignalKindReplayEventKindReplaySealStateReplayFrameKindEvidenceKindEvidenceCaptureModeDiagnosticSeverityDiagnosticScopeOperatorModeOperatorDecisionKindActionProposalKindProfileKindProfileFormatProfileOptimizationGoalProfileOptimizationDecisionTelemetrySignalKindTelemetryLevelMetricKindMetricAggregationKindHudSignalKindSignalConfidenceKindOverlayShapeKindOverlayLayerKind
実装者向け判断規則
未知 enum 値を受け取った場合:
- DTO の enum property は
Unknownとして扱う。 Succeeded = falseを返せる DTO では false にする。ErrorCode = "unknown_enum_value"を設定する。DiagnosticEntryを追加する。Metadataに raw value を保存する。- telemetry / replay / evidence に記録できる場合は記録する。
これにより、Observability / Replay / Telemetry は未知値を失わず、かつ実行境界は fail-closed を維持する。
Source:
operations/ENUM_HANDLING_POLICY-v0.1.1.1-jp.md