本文へ移動

エラーコード ​

すべてのエラーには、機械可読で安定した識別子code、一行の説明message、対処方法を示すreasonがあります。CLIはこれらを表示し(--jsonでは{"error": {...}})、対応する終了コードを返します。Web APIはHTTPステータス付きで返します。コードはsrc/error.rsで定義しています。

よくあるものの原因と対処は、トラブルシューティングにあります。

タスクと状態 ​

コード発生条件終了コードHTTP
task_not_foundタスクIDがプロジェクトにない。3404
task_archivedアーカイブ済みのタスクへの書き込み。1409
task_not_archivedアーカイブされていないタスクの削除や復元。1409
task_is_draft下書きへのAIの書き込み(edit・mv・state・history add)。1409
task_not_draft下書きでないタスクへのWebの編集。1409
task_is_doneDoneのタスクへのAIの変更。1409
acceptance_unmet条件が未達成、またはfrontmatterが不正なタスクを、AIがDoneへ移そうとした。2なし
invalid_state_for_columnそのレーンで無効な稼働状態(例: TodoでRunning)。1422
invalid_state_for_assignee人のタスクにIdle以外の稼働状態を設定した。2422
invalid_state_for_draft稼働中のタスクを下書きにした。1409
archive_targets_changed確認を開いた後に、一括アーカイブの対象が移動または削除された。1409

判断依頼 ​

コード発生条件終了コードHTTP
request_changed回答対象の依頼がすでに現在のものではない、または待機中の依頼がタスクの移動で取り下げられた。1409
task_status_changed移動が元の状態(fromStatus)を指定したが、タスクがもうその状態にいない。何も書かず、本文にcurrentStatusを加える。1409
request_choice_unknown回答が、依頼にない選択肢を指している。2422

プロジェクト・エピック・添付 ​

コード発生条件終了コードHTTP
project_not_found名前やIDに合うプロジェクトがない。4404
project_name_exists同じ名前のプロジェクトがある。2409
folder_unbound作業フォルダがプロジェクトに紐付いていない。4なし
bound_project_missingフォルダに紐付いたプロジェクトがもうない。4なし
folder_bound_elsewhereフォルダがすでに別のプロジェクトのものになっている。2なし
epic_not_foundEPIC-IDがない。1404
epic_id_taken同じEPIC-IDのエピックがある。1409
epic_in_useまだタスクがエピックを参照している。1409
attachment_not_found画像のIDがない。1404
attachment_limit_exceeded画像が大きすぎる、または添付先の画像件数や合計サイズが上限を超える。1422

入力とファイル ​

コード発生条件終了コードHTTP
invalid_argumentコマンドの引数がない、または形式が誤っている(例: --no-waitと整数のtimeoutSecondsの併用)。2422
invalid_value値が規則(長さ、形式など)に違反している。2422
confirmation_required削除に、端末での人のy/Nが必要。1なし
file_invalid共有ファイルが壊れている、または形式に違反している。1422
format_unsupported共有ファイルのformatVersionが1ではない。1500
file_unreadable共有ファイルを読めない。1500
file_error共有ファイルを書けない、またはジャーナルを復旧できない。1500
database_busyプロジェクトの書き込みロックが5秒以内に空かなかった。1503
database_error読み書き中の予期しない失敗。1500

サーバーと待機 ​

コード発生条件終了コードHTTP
already_servingこのデータ領域で、すでに別のserveが動いている。1なし
port_in_useポートが使われている。1なし
board_unavailable回答待機中のPending依頼、wait、Hookがサーバーに届かない。Pending依頼は保存前にサーバーを確認するため、利用できない場合は質問を保存しない。1なし
cursor_invalidcursorの形式が誤っている、または別のプロジェクトのもの。1なし
wait_timeout変更待ち(wait --after)が任意の--timeoutに達した、またはPending依頼のwait.timeoutSecondsに達した。回答ではなく、質問はPendingのまま。1なし
forbiddenWebの書き込みが保護に失敗した(Host・Origin・Sec-Fetch-Site・トークン)。なし403
invalid_sectionsDetail経路のsectionsクエリがdocument・history・document,historyのいずれでもない。Web APIを参照。なし400
not_implementedSummaryまたはDetailの経路はあるが、ハンドラーがまだ書かれていない。なし501

モバイル接続 ​

/api/monitor-connectionsの経路(Web APIを参照)が返すコードです。秘密の値は含みません。

コード発生する場面終了コードHTTP
revision_conflictページが読んだあとに設定が変わった。なし409
save_failed設定を保存できなかった。何も変わらず、何も開始していない。なし500
token_required開始したが、要求・環境変数・安全な保管場所のいずれにもトークンがなかった。なし422
keychain_unavailableトークンの保存か削除を求められたが、このPCの安全な保管場所では行えない。何も保存・変更していない。なし409
settings_unreadable保存した設定ファイルを読めないまま開始した。先に設定を保存し直す。なし409
start_failed内部の理由で接続を開始できなかった。なし500
invalid_valueトークン・本文が規則に反する(例: トークンなしのsave、未知のフィールド)。なし422

コマンドラインでは、serve --monitor ngrokのオプションが足りない、または不正な場合はinvalid_argumentで終了コード2、接続を開始できない場合は終了コード1です。状態のfailureのコードはWeb APIに一覧があります。

モニターの入口では、Hostの確認に失敗した要求は理由not availableの403 forbidden、sessionがない・期限切れなら401 session_required、公開Origin・同一オリジンのメタデータ・CSRFトークンのない書き込みは403 forbiddenです。POST /monitor/api/unlockは、間違った合言葉に403 unlock_failedを返し、連続5回間違えたあとはすべての試行に429 unlock_lockedを返します。どちらも残りの回数は示しません。

プロジェクトのドキュメント ​

/api/projects/{projectId}/docs/…のルートが返します(Web APIを参照)。CLIのエラーではないため、終了コードはありません。

コード発生する場面終了HTTP
docs_path_invalidパスが空、絶対パス、長すぎる(全体で1,024バイト、1つの要素で255バイト)、17要素より深い、または空の要素・ドットで始まる要素(..など)・バックスラッシュ・制御文字を含む。あるいは、途中のファイルやフォルダがシンボリックリンク。どれに当たるかはreasonに出る。n/a400
docs_not_founddocs/の下にそのファイルがない、またはパスがフォルダを指す。n/a404
docs_not_markdownファイルのルートに、.mdまたは.mdxで終わらない名前を渡した。n/a415
docs_asset_type画像のルートに、PNG・JPEG・WebP・GIF・AVIF・SVG以外を渡した。n/a415
docs_open_failed開くルートがdocs/またはファイルを開けなかった。フォルダがない、またはプログラムを起動できない。reasonにどちらかが書かれる。n/a500
docs_too_large2 MiBを超えるファイル、または10 MiBを超える画像。n/a413
docs_not_utf8ファイルが正しいUTF-8のテキストでない。ファイルは変更しない。n/a422

表示設定 ​

/api/preferencesと/monitor/api/preferencesの経路が返します(Web APIを参照)。CLIのエラーではないため、終了コードはありません。読めないファイルはエラーにならず、既定値を使います。

コード発生条件終了コードHTTP
invalid_preferences本文に未知の項目、許可されない値、localeもthemeもないものがある。何も保存しない。なし422
preferences_unavailable表示設定のファイルに書けなかった。保存済みの値は変わらない。なし500

初回の案内 ​

  • onboarding_conflict(409): タブが読んだあとに案内が変わった、ほかのタブがリースを持っている、または run が現在の run でない。状態を読み直し、現在のリビジョンで手順をやり直す。
  • onboarding_invalid(422): 手順が現在の段階に続かない。回答が保存される前に再開する場合など。

終了コード ​

終了コード意味
0成功。
1今の状態では操作が許されない、または何かが失敗した。
2入力が誤っている。
3タスクが見つからない。
4プロジェクトが見つからない、またはフォルダが紐付いていない。

そのほかのHTTPステータス: 壊れたJSONは400、1 MiBを超える本文は413です。保護は対象を探す前に行うので、拒否された要求から何が存在するかは分かりません。

タスク待ちモード(wait --until task --idle-timeout <seconds>)では、idle期限まで対象タスクが現れないと、成功結果のkind: "idle_timeout"を出力して終了コード0を返します。対象タスクを取得した場合も終了コード0です。引数誤りは2、プロジェクトがない場合は4、サーバー停止・不整合な応答・不正なボードデータ・ストリーム障害はboard_unavailableで1です。これらは対象なしの正常終了ではありません。idle秒数は必須で1〜86,400です。