Codex Luna Task Split
main CodexがAstraでもSolでも同じ契約を使う。モデルや推論設定を自動で変更しない。永続的な計画・taskと段階検収が必要なSprintにはcodex-luna-sprintを使う。
main Codexが先に事実を調べ、未解決の判断を引き受ける。Lunaを前提に設計を歪めず、契約が完全に固定されたleafだけを任意で分担する。作業領域、file種別、行数、見かけの単純さをowner判定に使わない。このスキルの運用だけを理由にSprint、計画、task、prompt、進捗ファイルを作らない。
1. 作業を観察して候補へ切る
repository、適用される指示、最新要求、既存差分、関連実装とtestを確認する。最初は全taskをmain担当とし、利用者から観測できる成果を壊さない単位へ切る。別のproject ruleやユーザー要求がPLAN、user story、EVIDENCE等を必要とする場合は従うが、このスキル自身は追加要求しない。
高推論と低推論はtask名や実装対象ではなく、その時点で残る判断から決める。同じ作業領域でも、契約が未確定ならmain、完全に固定済みならworkerが許可する機械的実行だけがLuna候補になり得る。逆にparserやfixtureでも、仕様解釈、trade-off、責務変更、弱い合否判定が残るならmainが担当する。
2. 五つの軸でownerを決める
各候補を次で分類する。
- Decision state:
fixed|bounded|unresolved - Independence:
independent|staged|coupled - Side effect:
local_reversible|shared_reversible|external_or_irreversible - Verification oracle:
strong|partial|weak - Split benefit:
positive|neutral|negative
Split benefitは、mainがcontractを固定し、workerの成果を独立検収する費用まで含めて、main単独実装より時間・費用・並行性の実利が残る場合だけpositiveとする。
次をすべて満たす一つのleafだけをluna_sprint_workerへ分ける。
- Decision stateが
fixedで、Lunaに推測、補完、選択を要求しない。 independent、または先行契約が完了したstagedで、実行中に他taskとの調整を要しない。- Side effectが
local_reversibleで、排他的write scopeがある。 - oracleが
strongで、positive/negative caseと棄却条件を機械判定できる。 - mainのcontract作成とdiff検収を含めてもSplit benefitが
positiveである。 luna_sprint_worker自身と適用先の指示が、その実行を許可している。
boundedまたはunresolved、coupled、共有・外部・不可逆な副作用、partialまたはweakなoracle、分担利益が非positiveのいずれかを含むtaskはmainが所有する。安全な候補が0件ならmain-onlyが正常である。利用可能なluna_sprint_workerがなければ、別agentやmodel overrideで代替せずmainが実行する。
mainは目的、制約、契約、例外、採否を確定する責任をLunaへ移さない。領域名だけで可否を決めず、実際のleafとworkerの制約で判定する。固定済みであることはworkerの禁止範囲を解除しない。UI、利用者向け文言、契約、mutation、状態遷移など、workerが許可しない実行はmainが所有する。許可された機械的写像だけを候補にする。
3. 会話内でtask contractを渡す
永続promptファイルを作らず、workerへ次のtask-local contractを直接渡す。計画全文の解釈をLunaへ依頼しない。
Task ID: <一意なID>
Goal: <一つの固定済み成果物>
Workspace: <absolute path>
Source of truth: <absolute pathと該当箇所>
Fixed contract: <I/O、変換規則、exact behavior>
Forbidden decisions: <判断・変更してはいけない領域>
Decision state: fixed
Independence: independent | staged(完了済み依存を明記)
Side effect: local_reversible
Verification oracle: strong
Positive/negative cases: <機械判定できる例>
Write scope: <排他的なallowed paths>
Stop without changes when: <矛盾、未解決判断、scope競合、外部副作用>
Verification: <focused commandと期待結果>
Final report: <TASK_ID、変更file、検証結果、mainへ残した作業>
正本agent typeはluna_sprint_workerとし、modelやreasoning effortを上書きしない。一つのworkerには一つのleafだけを渡し、再委任、commit、push、branch変更、計画更新、外部サービス操作を禁止する。並行実行はwrite scopeと依存関係が独立している場合だけにする。
実装中に判断、契約矛盾、scope外変更、外部副作用が必要になった時点で、Lunaは変更せずmainへ返す。mainは不足した判断を確定して自分で実装するか、新しい固定contractとして改めて分担する。
4. mainが独立検収する
worker報告は完了証明ではなく主張として扱う。mainが実diff、scope外変更、focused test、少なくとも一つの独立negative caseを確認し、accepted、corrected-by-main、rejected、blockedを判定する。
worker testで覆えない上位の振る舞いは、mainが必要な実画面、実成果物、統合test、whole-user-journeyで確認する。全leafが通っても、利用者の成果が成立しなければ全体を完了にしない。
完了報告では、mainが所有した判断、Lunaへ分けたleafと理由、mainの独立検証、棄却・修正、残リスクを短く示す。