OKR — 構造とライフサイクル

Objective・Key Result・チェックインの契約、draft/active/closed/cancelledのライフサイクル、owner、Concept/Entityへのリンク。agentがOKRを登録・更新・チェックインする前に読む契約の正本。

company.md で示した3層のうち、OKRの内部モデルをこのページで扱う。OKR RegistryはteamがKPIとして持つべき outcome の正本である。Objectiveは目指す変化、Key Resultは測定契約、チェックインはその時点の値と確信度の記録である。Project / Sessionはoutcomeを実現するための仕事、ConceptはOKRの意味を導く判断基準、Company EntityはOKRとは別の会社構成の実体であり、OKRの代わりにはならない。

構造

  • Objective: title + description
  • Key Result: 2〜5個必須。それぞれ title・description・metric(測定する対象)・unit(単位)・baseline_value(開始時点の値)・target_value(目標値)を持つ。baselineとtargetは同じ値にできない
  • 期間: starts_on < ends_on
  • 数値(baseline_value / target_value / チェックインのcurrent_value)はロスレスな文字列decimalで送受信され、percentや達成率をdocsやagentが自動計算しない

ライフサイクル

draftactiveclosed / cancelled の一方向。

status意味・制約
draftObjective・期間・KRを登録・変更できる
activeactivate後はKRの定義が凍結される。活性化にはowner設定と初回チェックインが必要
closed最終チェックインとretrospective(振り返り)を1つの操作で保存して終了
cancelled理由(reason)付きで終了

終端状態(closed / cancelled)は不変・削除不可。測定契約自体が誤っていた場合は既存OKRをキャンセルし、正しいKRを持つ新しいOKRを登録し直す。

チェックインの契約

チェックインはその回に全KRの実値を揃えて出す。変化していないKRも省略しない。

  • current_value: その時点で確認した実測値(decimal文字列)。外部計測値を取得できない時に推測値を作らない
  • confidence: KRごとに0〜10の整数。OKR全体のスコアには集約しない
  • summary はそのチェックインの要点。confidenceが下がった理由・blocker・不確実性・次に検証すべきことはdescriptionに書く
  • チェックインは追記専用の記録であり、activate時の初回チェックイン・通常のチェックイン・close時の最終チェックインはすべて同じ完全snapshot契約を使う
  • 楽観的並行性制御を持つ。直前に読んだ updated_at を渡し、他の変更と競合したら最新状態を読み直してから再送する

ownerモデル

OKRのownerは最大1名。draftはownerなしで登録でき、ownerが必須になるのはactivateの時である。ownerは人間だけでなく、teamのactiveなProject/DMに参加しているdormantでないagentもなれる。候補はowner_candidatesから選ぶ。

Concept / Entityへのリンク

OKRはConceptとEntityの両方にリンクできる。関係型は特に持たない(存在するかどうかだけの単純なリンク)。

  • Conceptへのリンク: その判断基準・戦略がOKRの意味を理解するために必要な時に使う
  • Entityへのリンク: outcomeが対象にする会社構成を示す時に使う
  • 終端後(closed / cancelled)はリンクを変更できない

変更履歴

OKRのlifecycleと定義変更は追記専用のイベントとして残る(登録・定義更新・activate・owner変更・Concept/Entityリンクの追加削除・チェックイン作成・close・cancel)。

関連ページ

  • 3層の概要と依頼の仕方: company.md
  • Conceptの型とライフサイクル: concept-registry.md
  • Entityの型とライフサイクル: company.md
  • 用語: glossary.md