CR-NEXUS-051-A: Error Taxonomy(例外分類)

Version: 1.0.0 Date: 2026-01-12 Status: Confirmed Related: CR-NEXUS-051 (Error Classification Specification)


1. 目的

NexusCore における例外を「どう扱うべきか(Retry/Abort/Skip)」に基づいて分類し、 051-B(Retry Logic)、051-C(Orchestrator Integration)における判断基盤とする。


2. Error Taxonomy 確定表

Class Trigger例 Default Action Retryable Notes
ModelRateLimitError HTTP 429 Retry (backoff) Yes 051-Bで詳細化
ModelTimeoutError 応答タイムアウト Retry Yes タイムアウト上限は051-B
ModelConnectionError 一時的ネット断 Retry Yes 恒久エラーは別扱い
InvalidModelOutputError JSON崩れ Retry→Failover候補 Conditional 回数上限は051-B
SandboxExecutionError pytest失敗 Abort(原則) No Self-healは別チケット
SandboxSecurityError 危険操作検知 Abort No 監査ログ優先
PatchApplyError パッチ適用失敗 Abort(原則) No 051-B範囲外
UnexpectedSystemError 想定外の例外 Abort No フォールバック先

補足説明

Retryable の定義

  • Yes: 同一モデルでの再試行が推奨される(ネットワーク・レートリミット等の一時的障害)
  • Conditional: 再試行条件が複雑(同一モデル再試行 or モデル切替は051-Bで定義)
  • No: 再試行しても成功しない(ロジックエラー・セキュリティ違反等)

Default Action の意味

  • Retry (backoff): 指数バックオフでの再試行
  • Retry: 即座または短時間での再試行
  • Retry→Failover候補: 再試行後、モデル切替を検討
  • Abort: 処理を中断し、エラー状態として上位に報告

3. 実装状況

3.1 既存例外クラス(src/nexuscore/core/errors.py)

すべての分類が既に実装済み。コード追加は不要。

class NexusCoreError(Exception):
    """Base class for NexusCore-specific errors."""

class ModelRateLimitError(NexusCoreError):
    """LLM API のレートリミット(429)"""

class ModelTimeoutError(NexusCoreError):
    """LLM 応答タイムアウト"""

class ModelConnectionError(NexusCoreError):
    """ネットワーク系の一時的なエラー"""

class InvalidModelOutputError(NexusCoreError):
    """LLM 出力が期待する JSON/構造になっていない"""

class SandboxExecutionError(NexusCoreError):
    """テスト実行・コード実行系のエラー"""

class SandboxSecurityError(NexusCoreError):
    """サンドボックスセキュリティ違反(禁止モジュールの利用など)"""

class PatchApplyError(NexusCoreError):
    """patch_applier の適用失敗"""

class UnexpectedSystemError(NexusCoreError):
    """想定外の例外ラッパ"""

3.2 分類関数

classify_error(exc: Exception) -> str

  • 例外オブジェクトを受け取り、カテゴリ文字列を返す
  • 既存実装済み(src/nexuscore/core/errors.py:61-172)

convert_http_error_to_nexus_error(exc: Exception) -> NexusCoreError

  • HTTP/SDK エラーを NexusCore 例外に変換
  • 既存実装済み(src/nexuscore/core/errors.py:175-222)

4. 次フェーズへの接続

051-B: Retry Logic(未実施)

  • 各例外に対する再試行回数、バックオフ戦略、タイムアウト上限の定義
  • InvalidModelOutputError の Failover 条件詳細化

051-C: Orchestrator Integration(未実施)

  • Orchestrator への例外伝播
  • Orchestrator レベルでの最終判断(Abort/Skip/Retry)

5. 変更禁止事項(051-A範囲)

  • 例外クラスの削除・リネーム
  • リトライロジックの追加・変更
  • 既存挙動の変更
  • テストの追加(既存テストの健全性確認のみ許可)

6. 参照ドキュメント

  • Canonical Spec: docs/spec/CR-NEXUS-051_ERROR_CLASSIFICATION_SPECIFICATION.md
  • Implementation Plan: docs/spec/CR-NEXUS-051_IMPLEMENTATION_PLAN.md
  • Core Errors: src/nexuscore/core/errors.py

End of CR-NEXUS-051-A Error Taxonomy Document.


This site uses Just the Docs, a documentation theme for Jekyll.