Status: Phase 0.1 canon(#1275) North Star:
north-star.md§5 / §6 / §13 / §14 / §15 Role: Evolution Loop の invariant を固定する。Candidate の採用評価に使う authority を Candidate 自身の変更対象から切り離し、Independence Level と Promotion Decision の値域を定義する。
Candidate cannot modify the authority that judges the candidate.
Harness Improvement Candidate は、自分の採用評価中に次を変更できない。
| Protected authority | 内容 |
|---|---|
| Evaluation Harness | paired replay / activation check / grader / stable meta-verifier / HarnessManifest 生成器・canonical 化器 / protected_surfaces 定義 / 実差分算出器(§1「実差分の供給元」) |
| Sealed / held-out fixtures | 提案時に未使用の regression set。Candidate 作成前に ID を固定 |
| Promotion Policy | PASS / FAIL / INCONCLUSIVE の判定規則 |
| Acceptance Threshold | Candidate 作成前に固定した閾値・trial 数・metrics |
| Protected Gate | この Candidate を裁く評価系に参加する Verifier pipeline の blocking 規則、Stop / Escalation policy。当該 Candidate の評価に参加しない Verifier / Gate は Protected Gate ではない(§3 の手続きで評価する) |
| Human-owned Boundary | C-4 / Merge / HO / Policy / Permission / First Principles |
Protected Gate は その Candidate の採用評価に参加する Gate / Verifier に限る。限定を外すと、あらゆる Verifier blocking 規則の変更が DENIED になり、North Star §11(Verifier は正式な改善対象)/ §15(Verifier 追加は「条件付き領域」)と §3(stable meta-verifier / known mutants による Verifier Candidate の評価手続き)が到達不能な死文になる。
verifier set を基準にする。判定不能なら参加扱い(fail-closed)。この verifier set は §6 の規定により Candidate 提案者が単独で決められない(Candidate が「自分を裁かない」set を書いて Protected Gate の適用外へ落とす経路を塞ぐ)。set が baseline の verifier 集合より狭い場合は、値が入っていても判定可能値として扱わず、欠落分は参加扱い(fail-closed)。DENIED にせず、§3 の手続き(stable meta-verifier / known mutants / baseline detection power)へ差し戻して評価する。本節以降で「実差分」と書くとき、それは次で定義される観測値を指す。供給元を定義しない「実差分」は宣言値の別名に退化し、交差判定の核(自己申告依存の排除)が失われる(artifact-responsibilities.md §6-4「フィールドを増やしても供給経路が無ければ値は入らない」と同じ理由)。
| 項目 | 定義 |
|---|---|
| 算出主体 | Evaluation Harness 側(Promotion Evaluator)。Candidate 側ではない。Candidate が申告した値、および Candidate の allowed_paths 内にある実装が出力した値を実差分として受け取らない。実差分算出器は §1 の Protected authority(Evaluation Harness)に含み、Candidate の変更対象外とする |
| base | baseline HarnessManifest の source_commit(harness-manifest.md §2)。比較対象は candidate HarnessManifest の source_commit / distribution_digest が指す実体。どの Manifest を baseline に置くかは evaluation plan(§6)に固定した baseline_manifest_ref に従う |
| 算出方法 | evaluation plan(§6)に固定する。Candidate が選べない(結果を見てから算出範囲・除外パターンを変えることは §6「結果を見てから評価条件を緩めない」に反する新 evaluation plan) |
| Legacy 対応 | Legacy #916 の changed_files(arbiter が算出する観測値)に相当する。V2 でも「評価系が算出する観測値」という供給元の性質を失わせない(§2) |
取得・信頼性が満たされない場合の扱い:
| 状況 | 扱い |
|---|---|
| 実差分が取得できない(baseline / candidate の Manifest が取れない・binding 不一致・差分算出器が実行不能) | INCONCLUSIVE(§5)。PASS 側へ倒さない |
実差分は取得できたが信頼できない(算出主体が Candidate 側・算出器が Candidate の allowed_paths 内・base が evaluation plan の固定値と不一致・算出方法が事前固定と異なる) |
fail-closed。DENIED または HUMAN_REQUIRED |
信頼できない観測は「取れた」と扱わない。供給元・base・算出方法のいずれかが確認できない実差分を交差判定の充足根拠にしない。
適用規則:
allowed_paths(Candidate の宣言値)と実差分(観測値)の両方とする。いずれか一方でも protected authority と交差する場合、その Candidate は 通常の paired evaluation で PASS にできない。DENIED(Policy Verdict)または HUMAN_REQUIRED(fail-closed)。allowed_paths の検証を必須とする(allowed_paths の過少申告で交差判定を素通りする経路を塞ぐ)。実差分が allowed_paths を超えた場合は、超過分が protected authority と交差するか否かにかかわらず fail-closed とし、DENIED または HUMAN_REQUIRED。超過が観測できない(差分が取れない・binding 不一致)場合は INCONCLUSIVE(§5)。Issue #916(判定基盤 carve-out の arbiter 機械強制)は、Legacy C-3’ arbiter が自分の判定基盤(scripts/ai-loop/** / docs/workflows/ai-loop/** / docs/ai/ai-loop/** / ai-loop-cycle Skill)を auto-approve 経路で改変しうる構造的盲点を塞ぐ局所 Issue として起票された。
V2 ではこれを 本 invariant の Legacy 実例として位置づける。
| #916 の要素 | V2 での一般化 |
|---|---|
| carve-out glob(escalate 固定パス集合) | Protected authority の path 集合。機械可読な 1 正本(protected_surfaces)として HarnessManifest の verifier_set_sha / policy_profile_sha が指す定義に含める。交差判定には baseline Manifest(または evaluation plan digest に固定した定義)の protected_surfaces を使い、candidate Manifest 側の定義は判定に用いない(candidate が自分を保護集合から外す経路を塞ぐ) |
changed_files が carve-out に一致 → HUMAN_ESCALATED |
(Candidate allowed_paths(宣言) ∪ 実差分(観測)) ∩ protected authority ≠ ∅ → Policy Verdict DENIED または HUMAN_REQUIRED(fail-closed)。Legacy #916 が観測値 changed_files を入力にしていた性質を V2 でも失わない。加えて 実差分 ⊆ allowed_paths を検証し、超過は fail-closed(§1) |
| 規範層のみの防御 | 機械層(Policy Gate)+ 規範層 + Human C-4 の多層防御 |
| ho-paths.md の HO 一覧だけを読む単一経路(#906 / #978 統合) | protected surface の解決元を explicit / downstream / bundled_template として保持し、雛形フォールバックを escalate(#916 移管 AC を継承) |
Issue #916 の実装は Legacy arbiter への機械層配線として Legacy freeze の例外(security fix / migration・compatibility support)に当たるが、その分類は本節の断定ではなく phase0-migration.md §2「判定主体と判定手順」に従い Human が C-3 で裁定する(本節はその申告内容を記述するもので、承認の代わりにならない)。V2 の Policy Gate は同じ protected surface 定義を再利用する。
Candidate が Verifier / Eval / Test strategy を変更する場合、評価は次で行う。Candidate 自身の変更後 Verifier の出力だけを根拠にしない。
| 手段 | 何を証明するか |
|---|---|
| stable meta-verifier | Candidate 作成前から存在する、Candidate の allowed_paths 外の Verifier。変更後 Verifier の出力の妥当性を検査する |
| known mutants | 既知の欠陥を注入した artifact 群。変更後 Verifier が baseline と同等以上に検出できることを示す(検出力の退行を防ぐ) |
| sealed positive / negative fixtures | Candidate 作成前に ID を固定した「通すべき入力」「落とすべき入力」。変更後 Verifier の false positive / false negative を測る |
| baseline detection power | baseline Verifier の known mutants に対する検出率。Candidate はこれを下回ってはならない(critical regression condition) |
原則:
「meta-verifier を変える Candidate は誰が評価するか」「sealed fixture を更新する Candidate は誰が評価するか」「HarnessManifest 生成器を変える Candidate は誰が評価するか」は、いずれも Evaluation Harness そのものの変更である。これらは通常の paired evaluation の対象外とし、Independence Level I4(Human + machine independent evidence)でのみ採用する。ここが後退の終端であり、North Star §3 / §15 の Human-owned Promotion に接地する。Manifest 生成器が Candidate の対象に含まれると identity 偽装(同一 harness_id の詐称・INCONCLUSIVE の回避)が可能になるため、生成器は protected authority に含める。
「独立レビュー」を same model / separate context の一語で表さない。独立度を段階化し、surface ごとに最低 Level を要求できるようにする。
| Level | 定義 | 独立性 |
|---|---|---|
| I0 | same context(作成者自身の同一会話内セルフレビュー) | 独立性なし。self-review としてのみ有効 |
| I1 | same model / separate context + role + run | context 汚染を排除。同一 model の系統的盲点は残る |
| I2 | separate model | model の系統的盲点を分散 |
| I3 | separate model + deterministic oracle / sealed fixture | 機械的根拠で LLM 判断を裏付ける |
| I4 | Human + machine independent evidence | Human-owned 判断と機械 evidence の両方 |
原則:
phase0-migration.md §7)。Harness Candidate の評価結果を PASS / FAIL の二値にしない。
| Decision | 意味 |
|---|---|
PASS |
事前固定した evaluation plan のすべての条件を満たし、critical regression が 0 |
FAIL |
いずれかの条件を満たさない、または critical regression が 1 以上 |
INCONCLUSIVE |
評価が成立しない。判定を下せる evidence が揃わない |
INCONCLUSIVE になる条件(例):
harness_manifest_ref が取れない(identity 不明)fired 以上の evidence が無い(Verifier / Gate の改善では要求段階が influenced_decision であり、fired / produced_evidence 止まりも INCONCLUSIVE。North Star §14 / harness-manifest.md §4)allowed_paths を検証できない(§1)原則:
INCONCLUSIVE は FAIL ではないが、PASS 側へ倒さない。Promotion Ready にならない。INCONCLUSIVE の理由は Stop Reason と同様に evidence refs 付きで記録し、Evolution input にする。Candidate の実装を始める前に、evaluation plan を固定する。
| 固定する項目 | 内容 |
|---|---|
| fixture IDs | sealed / held-out set の ID 一覧 |
| verifier set | この Candidate の採用評価に参加する Verifier / Gate の集合。§1「Protected Gate の限定」の判定基準になる。baseline HarnessManifest の verifier_set_sha が指す定義から導出する |
| baseline manifest ref | 実差分の base(§1「実差分の供給元」)と paired 比較の baseline を固定する baseline_manifest_ref(harness-manifest.md §3) |
| task profile | 評価に使う task の種別(探索 / 定型修正 / …) |
| trial count | 非決定的挙動に対する試行回数。単発で足りる場合はその理由 |
| metrics | 何を測るか(North Star §14 / §18) |
| threshold | 採用閾値 |
| critical regression condition | 1 件でも出たら FAIL にする条件 |
固定の主体(誰が固定するか):
| 項目 | 固定の主体 |
|---|---|
verifier set / baseline manifest ref |
Evaluation Harness 側(Promotion Evaluator)。Candidate 提案者は単独で決められない。提案者は変更を申請できるが、その変更は §1 の Protected authority(Evaluation Harness / Protected Gate)の変更として扱い、§3 の手続きまたは Human Gate(North Star §15)を要する |
| fixture IDs / task profile / trial count / metrics / threshold / critical regression condition | 同上。Candidate 実装を始める前に Evaluation Harness 側が固定し、Candidate 作成後は変更しない |
原則:
verifier set の欠落 → 全 Verifier を参加扱い。baseline manifest ref の欠落 → INCONCLUSIVE(§5))。| ケース | 期待される扱い |
|---|---|
Candidate の allowed_paths に sealed fixture のパスが含まれる |
Policy Verdict DENIED または HUMAN_REQUIRED。paired evaluation を開始しない |
allowed_paths は protected authority と交差しないが、実差分が sealed fixture / Verifier を触っている |
invalid。実差分を交差判定の入力に含めるため DENIED または HUMAN_REQUIRED(§1)。宣言だけを見て PASS にしない |
実差分が allowed_paths を超えているが、超過分は protected authority と交差しない |
invalid。実差分 ⊆ allowed_paths を満たさない時点で fail-closed(§1) |
交差判定を allowed_paths(宣言値)だけで行う |
invalid。Candidate の自己申告を判定根拠にしている(North Star §6) |
| Verifier を変更した Candidate を、変更後 Verifier の PASS だけで採用 | invalid。stable meta-verifier / known mutants / sealed fixtures が必須 |
| baseline と candidate の Manifest identity が取れないまま比較 | INCONCLUSIVE |
| trial 数を結果を見てから減らす | invalid。新 evaluation plan として再評価 |
| 実装 Agent の I0 セルフレビューを Independent Review として記録 | invalid |