Repository navigation
brake adjudication by resumed author
brake 1 / brake 2 が出した指摘を誰が裁き、誰が修正するか。親が報告から文脈を組み直して裁くのか、実装した subagent を再開して著者本人に裁かせるのか。
指摘の裁定と修正は、実装した subagent を再開したもの(著者)が持つ。 評価者は指摘を PR コメントに直接投稿し、親への戻り値は1行に絞る。親が保持するのはセルフレビューとマージ判断のみ。
再開機構はホスト側の既存機能を使う。Claude Code = Agent ツールの SendMessage(文脈を保持したまま継続)、Codex = resume_agent(保存済み rollout から復元)。
再開には親が宛先にできる対象が要る。それを持たない状態は2つあり、どちらも同じ再構成フォールバックへ入る(#1689 / PR #1693 で条件を一般化。当初はホスト機能の欠如=Codex の resume_agent 不在のみを条件としていた)。
- ホスト側に再開機構が無い場合(
resume_agentの無い Codex) - 親がフェーズ1のエージェント id を持たない場合
2 は避けるべき事故ではなく、実装より後のセッションで裁定が走るときの常態である。id は spawn したセッションの文脈にあるため、その後に開いた親はそもそも持っていない。#1682 が実際にこの経路を通り、当時の条文を外側から類推適用して切り抜けた。
フォールバックの形は、著者役を新規 spawn し issue body + PR diff + PR コメントから再構成させるもの。役割(著者が指摘に応答する)は両ホスト・両形で同一に保つ。真の再開との差は1点のみで、cold なセッションが自力で供給できない「この spawn はフェーズ2から入る」を追加注入する。停止条件・2つの否定・指摘の所在の3点は不変。
これは skills/task-subagent-delegation/SKILL.md Autonomy の substrate-absence フォールバックとは別物である。あちらは subagent 能力そのものが無いときに発火して仕事を親へ移すが、ここでは能力はあり失われたのは再開先だけなので、仕事は subagent 側に留まる。id 喪失を親へ流せば裁定が著者から外れ、本判断そのものが壊れる。
エージェントの深さは 1 に固定する。 評価者の spawn 元は親のままで、孫(spawnDepth 2)を要求する設計は採らない。
implementation-always-delegated の「実装は常に委譲」は不変。むしろ「親は findings の範囲内であれば適用してよい」という条件分岐が不要になり、実装権は完全に subagent 側へ戻る。
-
depends on
implementation-always-delegated— 実装が常に委譲されることが前提。同 entry が受容した対価の筆頭「親は判定時に文脈を組み直す(劣化コピー、損失は受容済み)」は、本判断により別経路で解消される。判断軸だった「規則の単純さ」は不変で、条件分岐は増えず1つ減る。同 entry が「著者と判定者の分離は決定理由ではなく結果」と明記していることが、本判断が結果側のみを動かせる根拠 -
depends on
parallel-subagent-eval-cost-acceptance— 同 entry の再評価条件2「substrate 降格を伴わない別経路でのコスト圧縮策が提示された場合」の成立側。N=3、model floor、brake 発火回数はいずれも下げていないため、受容済み tradeoff の蒸し返しではない -
depends on
brake1-single-round-cap— 単巡制限下では著者が却下した指摘に誰も再反論しない。本判断は却下理由を PR コメントに残すことで、親のセルフレビューがその弱点を拾える形にする - conflicts with (現時点で対立 entry なし)
2026-08-06 のセッションで Master が作業ワークフローの図を提示。各委譲の前に親の「確認」が挟まり、レビューが二重になっているのではないかという見立てが起点。
実測(session 13d274ea、PR 4本分)で内訳が確定した。
| ターン数 | 平均コンテキスト/ターン | 実効コスト | |
|---|---|---|---|
| 親セッション | 664 | 285k(最大 502k) | 30.5M |
| 実装子 ×4 + brake 評価者 ×12 | 34〜152 | 88〜137k | 25.4M |
実効コスト = cache_write×1.25 + cache_read×0.1 + output×5。親が全体の約 55% を占め、子と孫を全部足しても親一人に届かない。 同じ1ターンの作業でも、親で実行すると子の約 2.8 倍の単価になる。親はコンテキストを積み上げて単価が上がり続け、子は PR ごとに破棄されるため 100k 前後で安定する。
二重の正体も特定された。親は「brake 指摘の裁定」と「セルフレビュー」で同じ読み込み(PR diff を issue 要件に当てる)を2回している。裁定を降ろせば親の読み込みは1回になり、その入力が「指摘と応答のスレッド」に変わる。
深さ 2 を採らない理由(2つの独立した substrate 事情)
- Claude Desktop に depth 2 の完了シグナル伝播不具合がある。孫がパネル上で「実行中」に張り付き、top-level からの nudge のみが有効。nested nudge は PR #1523 で試行して無効と実証され、PR #1525 で revert 済み。
- Codex CLI は
DEFAULT_AGENT_MAX_DEPTH = 1。[agents] max_depthで変更可能だが、doc comment に「V1 agent threads 用、V2 では無視」とあり V1/V2 の切替条件はソース上不明。なお当初「最高プランでないと孫が使えない」と伝聞されていた点は、一次情報では課金プランのゲートではなかった(Ultra がゲートするのは proactive delegation)。
rules/model/role-separation.md の "Tool independent. Roles must be separable regardless of platform." に照らすと、深さ2に依存した役割分担はプラットフォーム依存の役割分担になる。深さ1固定はこの L1 制約とも同じ方向を向く。
権限境界を明示注入する理由
#1628 に、semi_auto で委譲した subagent が停止条件を越え、セルフレビュー投稿と merge まで実行した実測が記録されている。再開した subagent には修正権を渡すが、セルフレビューとマージは渡さない。この境界は auto-load される rules 任せにせず、再開プロンプトへ literal を明示注入する(trigger モードの mode-specific injection と同じ扱い=procedure の伝達ではなくゲート状態の伝達)。
採用した案は「深さ1のまま、実装 subagent を時間軸で再開する」形。
却下した案と理由:
| 案 | 却下理由 |
|---|---|
| 現状維持(親が裁定) | 親の文脈組み直しコストと二重読み込みが残る。parallel-subagent-eval-cost-acceptance 再評価条件2が成立した以上、受容を続ける根拠がない |
| 子が孫(評価者)を spawn して裁定 | トークン的には中立(評価者のコンテキストは spawn 元によらず変わらない)。得るものがなく、Claude/Codex 双方の substrate 制約だけを踏む |
| 裁定を新規 subagent(非著者)に任せる | 文脈再構築が復活し、削減の源泉そのものを失う。人間チームの実務でも、指摘に応答するのは著者であってレビュアーでも第三者でもない |
人間のチーム開発との対応:著者は自分のコードをレビューしない(self-approve 禁止)が、指摘への一次判断と修正は著者が行う。最終承認だけが非著者側にある。本判断はこの分担に一致する。当初 AI 側は「実装者が裁定者なのは危険」と述べたが、これは人間チームの実務に照らして誤りで、危険なのは著者が最終承認まで持つことだった。
この Wiki は、Li+ に基づく開発・運用を支えるための情報整理空間です。
数字で始まるページは、 Li+プログラムの各レイヤーの仕様を定義するページです。
- 要求(何を満たすか)と仕様(どう振る舞うか)を一体として記述する
- 実装前に作成または更新する
- issue群から採用された要件を集約する
これらのページは 安定性と一貫性を重視して管理されます。
アルファベットで始まるページは、 Li+の構想・設定・導入手順などの参照用ページです。
- 設計思想・背景
- 設定リファレンス・インストール手順
これらのページは 必要に応じて更新・拡張されます。
リポジトリ内の rules/**/*.md(L1–L4 の常時ロード分、subdir 含む)、skills/**/SKILL.md(トリガー起動分)、adapter/claude/CLAUDE.md、adapter/claude/hooks-settings.md、adapter/claude/hooks/*.sh、adapter/codex/AGENTS.md、およびルート直下の Li+config.md、Li+update.md は、
AIやランタイムが直接読む実行用プログラム / 定義ファイルです。
-
docs/は人間向けの仕様書・要求仕様・手順書 -
rules/,skills/および adapter / update は実行時に読み込まれる本体
両者は対応しているが、役割は同じではない。
Home | 1. Model | 2. Evolution | 3. Task | 4. Operations | A. Concept
要求仕様書 (1-6)
参考文書 (A-L)
- A. Concept
- B. Configuration
- C. Update
- D. Installation
- DiDD(対話駆動開発)
- E. Li+ language
- F. Behavior-First
- G. Sheepdog Engineering
- H. Roles and Evaluation
- K. Source File Format
- L. Hop Count Instrument
判断構造
- Decision Structure
- layer reorg rationale
- github app user-to-server token expiration
- sheepdog engineering concept
- prerelease tag recovery procedure
- release flip drift patterns
- Li+ long-term vision (feedback only)
- Master role as client-architect
- current architecture as concession
- Li+ license Apache-2.0 rationale
- Character_Instance evolution history
- prompt as emotion vector controller
- agentic-search five-phase refactor
- Character_Instance output-styles migration
- Li+ lightening L1 gate override
- subagent state-machine label mechanism
- LSP integration out of scope
- Character_Instance opt-in and surface scope
- parallel-subagent-eval three-axis decomposition
- parallel-subagent-eval cost acceptance
- parallel-subagent-eval model floor
- release version rule always-on relocation
- bootstrap walkthrough skip and gh install relocation
- wiki sync sidebar integrity check
- decision structure rename rationale
- decision structure industry positioning
- subtractive structural beauty framing
- Li+ authorship is collaborative
- Li+ design intent vs current limit
- Li+ history is empirical
- Master verification at runtime not spec
- rules cache fetch address table
- dialogue-evaluator scoring redesign
- Li+ always-on footprint is load-bearing
- DiDD umbrella naming
- milestone subsystem removal
- L1 brake 2 root-criteria evaluator
- Hook-driven gate trigger
- ゲート適用漏れは強制より先に測る
- dynamic-workflows non-adoption
- ACE context-engineering non-adoption
- memory GraphRAG SQLite exploration
- Li+ context-rot tension
- Li+ structure as retrieval surface
- 常時ロード分の重複を削る向き
- Li+ evaluation criterion
- Li+ self-evolution lineage
- Li+ judgment-learning telos
- Sheepdog Engineering publish intent
- Implementation always delegated
- brake evaluator baseline integrity
- brake1 single-round cap
- brake1 の再実行可否は監査内容で決める
- brake 指摘の裁定を再開した著者が持つ
- brake1 の発火条件を基準で閉じる
- skill の発火条件は description 内に置く
- subagent parallel-width cap
- brake1 operational-copy target-conditional
- brake1 findings は親を経由する
- brake1 の per-draft 軸を 2 本に固定する
- brake 2 の DEVIATION を人間が上書きする
- wiki sync code-notation strip
- wiki sync drift-targeted mirror
- decision structure writer surface activation
- decision structure state-form edge binding
- Neuron Graph RAG integrated prototype
- issue 完了条件フィールドの射程
- body 節と description の被覆ずれの解き方
- グラフエンジニアリング非採用
- Li+ の配布形式は GitHub 直配布
- 配布される source に config の解決値を書かない
- ルールは基準を持ち、来歴は git に置く
- 人間と AI の関係条項を absolute.md に置く
- 来歴を預けた retrieval 面が実際に答えるか
- 存在側の欠陥は空欄ラベルの可視性に届かない
- brake 2 の判定対象は変更の内容
- エージェント定義の判定基準を sentinel 区画で所有
- brake 2 を廃し L1 のゲートを brake 1 へ一本化
- 多セッションが効くのは入力が変わるとき
- source 本文は振る舞いのみ、理由は移設
- parallel-agent-eval 本文は振る舞いのみ
- agentic-search 蒸留版は full と同等(実測)
- 読みの除去テストが通した削除を実測が差し戻した
- brake1 の評価者数の床を N=1 へ
- Judgment record ポインタ要件を撤廃
- brake1 を上限 3 往復の収束ループへ
- 受け皿より先に縮んだ検出幅の窓を閉じる
- issue constraints の「対象ではない」は宣言
- クローン同一性は remote で解決
- tally は機構の名前の下に置く
- config 値比較は厳格に、外れた値は名指し
- webhook 到着通知の消去は確認を伴う
- 検索性能比較コーパスは既存リポジトリ内の path で隔離する
- MSYS のパス変換は argv だけに効く
- 観測不能な主張は書き手を替えても記録にならない
- parallel-agent-eval の 1 周目の跡に残っていたのは再掲
- 実装委譲エージェントに定義ファイルを与え effort を固定
- cold-start diff-only 状態は agent key でパーティション分割
- 観測不能の宣告はホストの母集団に対する主張
- 検出器は到達可能な位置にあって初めて検出器である
- ランタイムの rules はタグへ解決する
- 記録面の除外は読み直しで捕まる行にだけ成り立つ
- 再開プロンプトの注入項目は基準で閉じる
- 委譲プロンプトが運ぶのは境界であって手順ではない
- 規則の効きの実測の各条件は観測された失敗の上に置かれている
- parallel-agent-eval は蒸留で約 5,340 トークン、残りの超過は受容
- brake 1 の往復上限を撤廃し、同じ指摘の再発を人間へ上げる
- rules/evolution と rules/task の本文は振る舞いのみ
- rules/operations と adapter の本文は振る舞いのみ
- rules/model(L1)の本文は振る舞いのみ
- main-agent-procedures の常時ロード本文はメインの運用場面で行いを決める文のみ
- cold-start-synthesis の本文は振る舞いのみ、フックの仕様は docs へ
- initiator-autonomy の常時ロード本文は振る舞いのみ、tests の散文規則は skill へ
- operations.md の常時ロード本文は振る舞いのみ、索引と label 辞書の写しは持たない
- memory-entry-format.md の常時ロード本文は書式と保守のみ、observation 手順は skill へ
- promotion-judgment の常時ロード本文は振る舞いのみ、軸の関係の説明は docs へ
- execution-mode.md の常時ロード本文は、マトリクスを言い直さず、他の常時ロード面の写しも持たない
- task.md の常時ロード本文は issue とラベルの行いだけを持ち、写しと層の説明は持たない
- main-agent-procedures の場面に限られる手順は、名指しが届く skill へ
- evolution.md の常時ロード本文は振る舞いのみ、レイヤーの位置づけと他面の写しは持たない
- operations.md の場面に限られる節は、名指しが届く skill へ
- CLAUDE.md の常時ロード本文は振る舞いのみ、位置づけ・読込の説明・常時ロード面の写しは持たない
- initiator-autonomy の場面に限られる記述は、brake 1 の skill へ
- skill description の詰めは、場面を狭めない句だけを切る
- L1 の 5 本の 2 周目は内側の写しと位置づけの説明を外し、書く規律は常時ロードに残す
- subtractive-structural-beauty と trigger-check-gate の常時ロード本文は振る舞いのみ、言い直し・位置づけ・他所の再掲は持たない
- absolute.md の常時ロード本文は振る舞いのみ、Name prefix scope の言い直し・位置づけは持たない
- サブエージェント起動の着地点の目安と数値の出典