Skip to content

Pattern: Evaluator-Optimizer

このページは 参照パターン です。 ontology や principles のページが「PCE 2.0 で何が存在し、どういう原理で動くか」を定義するのに対して、 pattern pages は「それらをどういう topology で組むと実務上扱いやすいか」を示します。

ここで扱う Evaluator-Optimizer は、 ある output candidate を一度で決め切らず、contract に従って反復的に改善する ときの基本パターンです。 ただし PCE 2.0 では、単なる “作って、採点して、直す” ではない。 それは、

  • 何を fixed subject とするか
  • どの criteria が current か
  • どの evaluator が blocking で、どれが advisory か
  • どこで stop し、どこで escalate し、どこで human review に返すか
  • いつ old verdict が stale になるか

までを explicit に持つ governed loop である。

Evaluator-Optimizer pattern

Evaluator-Optimizer pattern とは、ある process frame の内部で、 ある subject を bounded に固定したうえで、 optimizer が candidate を生成し、 evaluatoreval contract に基づいてその candidate の adequacy を判定し、 その verdict と change request をもとに optimizer が次の candidate を生成する、という 反復改善ループ である。

それは単なる retry ではなく、 fixed objectiveexplicit subject bindingevaluation axesblocking vs advisory separationiteration budgetstaleness rulesacceptance gatefallback / escalate / rollback path を持つ。

より短く言えば、Evaluator-Optimizer pattern とは 「何をよくしたいのかを先に固定し、その固定された subject に対して、候補生成と評価を bounded に往復させる進め方」 である。

ここで重要なのは、optimizer が “自由に賢く頑張る actor” ではなく、 現在の subject を current contract に近づける bounded executor だという点である。 同様に evaluator は、単に点数をつける存在ではなく、 今の candidate を current path に残してよいかを判断する adequacy gate である。


Evaluator-Optimizer pattern が向いているのは、次のような場面である。

1. 改善対象が bounded に固定できるとき

Section titled “1. 改善対象が bounded に固定できるとき”

例:

  • PR patch candidate
  • review package
  • migration plan draft
  • runbook draft
  • recommendation memo
  • memory candidate durable-form

何を良くしたいのかが明確であるほど、この pattern は強い。

2. 評価基準がある程度 explicit なとき

Section titled “2. 評価基準がある程度 explicit なとき”

例:

  • tests pass
  • scope respected
  • required evidence attached
  • rollback note present
  • rubric fields complete
  • memory candidate has provenance

criteria が曖昧すぎると、optimizer は moving target を追い始めやすい。

3. 一回で出すより反復で quality が上がるとき

Section titled “3. 一回で出すより反復で quality が上がるとき”

特に AI / tool-assisted execution では、

  • first draft is cheap
  • later refinement is useful
  • evaluator can localize defects
  • loop cost is acceptable

という条件がよくある。 このとき Evaluator-Optimizer は非常に有効である。

4. output の shape は固定だが中身の adequacy が揺れるとき

Section titled “4. output の shape は固定だが中身の adequacy が揺れるとき”

たとえば PR patch や recommendation memo のように、 返すものの型は決まっているが、その quality や grounding が不足しがちな仕事に向く。

5. “よさそう” をそのまま採用すると危険なとき

Section titled “5. “よさそう” をそのまま採用すると危険なとき”

review、approval、memory promotion の前段で candidate を iterative に hardened したい場合に向く。


逆に、次のような場合は Evaluator-Optimizer pattern をそのまま使わない方がよい。

1. そもそも問いが固まっていないとき

Section titled “1. そもそも問いが固まっていないとき”

research 初期のように、まだ何を問うべきか自体が揺れているなら、 まず question freeze や Branch and Join が必要である。 moving target に対して optimizer loop を回すと、 「何か良さそうなもの」ができるだけで終わりやすい。

複数案を並べて比較しないと決められない場合は、 single candidate を改善し続けるより parallel / comparative pattern の方が自然である。

3. 評価基準が evaluator の頭の中にしかないとき

Section titled “3. 評価基準が evaluator の頭の中にしかないとき”

contract が implicit なまま loop を回すと、

  • criteria drift
  • optimizer overfitting to evaluator quirks
  • arbitrary “もう十分” judgment

が起きやすい。

4. one-shot deterministic check で十分なとき

Section titled “4. one-shot deterministic check で十分なとき”

単なる schema validation や deterministic compile check なら、 iterative optimizer loop は過剰である。

5. high-cost mutation を毎回伴うとき

Section titled “5. high-cost mutation を毎回伴うとき”

各 iteration が expensive or risky なら、 bounded prototype や review-before-apply を入れた方がよい。


誤解を避けるために、先に輪郭をはっきりさせておく。

失敗したらもう一回、では不十分である。 PCE 2.0 の Evaluator-Optimizer は、

  • subject
  • contract
  • evidence
  • requested changes
  • stale invalidation
  • stop rule

を持つ。

同じ model が “自分で考え直す” こと自体はありうる。 しかし pattern の本質は role separation にある。

  • optimizer role
  • evaluator role
  • approver / acceptance role

を少なくとも conceptually 分けなければならない。

evaluator が pass を出しても、それで current truth になるわけではない。 特に high-impact output では、later な ApprovalHuman Oversight が必要になる。

4. 単なる parallel candidate generation ではない

Section titled “4. 単なる parallel candidate generation ではない”

複数 candidate を並行に作る場合もあるが、それは hybrid with Pattern: Parallel である。 Evaluator-Optimizer pattern の中心は one current candidate that gets iteratively refined にある。

5. 単なる “品質を上げる方法” ではない

Section titled “5. 単なる “品質を上げる方法” ではない”

この pattern の価値は quality だけではない。 何が current candidate で、何が still not admissible なのかを process 上で明示できることが重要である。


もっとも基本的な形は、次のように書ける。

frame / subject freeze
-> optimizer proposes candidate_0
-> evaluator judges candidate_0
-> if fail or refine:
optimizer proposes candidate_1
-> evaluator judges candidate_1
-> ...
-> accept / escalate / rollback / abandon

実務では、次のように現れることが多い。

question / output contract freeze
-> first draft / first patch / first candidate
-> evaluation
-> requested changes
-> revised candidate
-> re-evaluation
-> approval / promotion / close

ここで重要なのは、first draft より前に 何を固定するのか があることだ。 それがない loop は、実質的には wandering generation になりやすい。


まず subject を固定しなければならない

Section titled “まず subject を固定しなければならない”

Evaluator-Optimizer pattern の最重要条件は、 何を改善対象としているのかを fixed subject として binding すること である。

  • subject kind 例: artifact patch, recommendation memo, memory candidate
  • current scope
  • current goal slice
  • expected output shape
  • evaluation axes
  • stop / escalate conditions
  • optimizer が別の問題を解き始める
  • evaluator が毎回違うものを見ている
  • later candidate が earlier candidate と比較できない
  • “改善した” の意味が失われる

これは research や PR review で特に起きやすい。 だから PCE 2.0 では、loop の前に question freeze / output contract freeze を置く方がよい。


Evaluator と optimizer は actor ではなく role として理解する

Section titled “Evaluator と optimizer は actor ではなく role として理解する”

実務では、

  • AI optimizer + human evaluator
  • AI optimizer + AI evaluator + human approver
  • human optimizer + AI evaluator
  • same human alternating roles
  • same model alternating roles under different contexts

のすべてがありうる。

そのため PCE 2.0 では、Evaluator-Optimizer をまず role topology として理解するのがよい。

  • candidate を作る
  • requested changes を取り込む
  • current contract に近づける
  • stop condition を検知したら止まる / escalate する
  • candidate を current contract に照らして判断する
  • pass / fail / insufficient / conditional / escalate を返す
  • missing evidence と criteria violation を区別する
  • current subject から外れた drift を検知する
  • evaluate 結果を踏まえて next legal transition を開く
  • high-impact path では human or retained authority が持つことが多い

この role separation を explicit にすると、 same model を使う場合でも self-approval を避けやすくなる。


Evaluator-Optimizer は often sequential shell の中にある

Section titled “Evaluator-Optimizer は often sequential shell の中にある”

この pattern は、しばしば larger sequential frame の内部に埋め込まれる。

frame definition
-> subject freeze
-> evaluator-optimizer loop
-> acceptance / approval
-> promotion / merge / close

つまり loop 自体は iterative でも、 その外側は often Pattern: Sequential である。

この構造が useful なのは、

  • question freeze を先に置ける
  • final approval を loop の外に retain できる
  • rollback anchor を取りやすい
  • memory writing を later に分離しやすい

からである。


評価は “スコア” ではなく “verdict + requested changes” であるべき

Section titled “評価は “スコア” ではなく “verdict + requested changes” であるべき”

Evaluator-Optimizer pattern を実務で使うなら、 evaluator の output は単なる numeric score より、 process-usable verdict に近い方がよい。

evaluator output に最低限ほしいもの

Section titled “evaluator output に最低限ほしいもの”
  • verdict
    • pass
    • fail
    • insufficient_evidence
    • conditional_pass
    • escalate
  • reasons
  • requested changes
  • still-open risks
  • currentness / freshness note
  • invalidation conditions

score が 72 -> 81 -> 84 と上がっても、

  • 何がまだ blocking なのか
  • 何が current scope violation なのか
  • 何を直せば next iteration が成立するのか

が分からないからである。

PCE 2.0 的には evaluator は optimization target function ではなく admissibility-oriented critic として理解した方がよい。


requested changes は change delta である

Section titled “requested changes は change delta である”

evaluator が返す requested changes は、単なる prose comment ではなく、 later optimizer が消費できる bounded change request である方が強い。

  • target field / scope が明確
  • why current candidate is insufficient が明確
  • which contract clause is unmet かが明確
  • if possible, evidence gap と content defect を分ける
  • what remains unchanged / still valid かが分かる
  • もっとよくして
  • なんか弱い
  • 念のため見直して
  • 全部再検討

後者は human どうしでもノイズが大きいが、AI optimizer に対しては特に危険である。 current valid core まで捨てさせてしまうからだ。


Evaluator-Optimizer pattern の最重要 distinction の一つがこれである。

current contract に照らして candidate が十分だ、という adequacy judgment

その candidate を next process path に進めてよい、という ratification

この distinction を失うと、

  • AI evaluator pass = merge 可能
  • local rubric pass = canonical memory write 可能
  • prototype looked good = adopt 可能

のような Corrupt Success が起きやすい。

したがって高インパクトな output では、loop の外に approval / promotion / close gate を残すべきである。


outcome と process を両方見る必要がある

Section titled “outcome と process を両方見る必要がある”

Evaluator-Optimizer pattern は、artifact quality だけに使うべきではない。 PCE 2.0 では evaluator は必要に応じて

  • outcome
  • process

の両軸を見る。

  • correctness
  • completeness
  • requirement fit
  • performance
  • format validity
  • scope respected
  • required evidence present
  • stale context not used
  • prohibited capability not used
  • rollback path explained
  • current approval dependencies acknowledged

この distinction を入れると、 “内容は正しそうだが process が危ない” という candidate を loop 内で止めやすくなる。


Evaluator-Optimizer pattern は便利だが、無限ループになりやすい。 そのため PCE 2.0 では、iteration budget を explicit に持つべきである。

  • max iterations
  • max wall-clock time
  • max optimizer cost
  • max evaluator cost
  • max acceptable drift from original subject
  • max unresolved issue count

予算がないと、

  • micro-optimization が続く
  • evaluator gaming が始まる
  • “もう少し良くなるかも” を止められない
  • human oversight が later に過負荷になる

loop は bounded でなければならない。


Evaluator-Optimizer pattern は “改善する限り回す” だけではない。 止めるべき局面がある。

  • candidate passes required evaluators
  • no blocking issue remains
  • residual risks are acceptable for next gate
  • content defect ではなく evidence gap が大きい
  • optimizer では埋められない missing input がある
  • current scope では解けない conflict がある
  • evaluator verdicts が conflict している
  • risk / authority issue が local loop を超える
  • recommendation or patch requires scope widening
  • iterations introduced drift
  • later evidence invalidates current candidate lineage
  • old approval / eval assumptions were attached to stale candidate versions
  • fixed subject itself was wrong
  • criteria are unstable
  • further optimization no longer reduces the right uncertainty

つまり loop は improve-or-die ではなく improve-or-stop-or-escalate-or-reframe である。


Evaluator-Optimizer pattern では、old evaluator verdicts や old candidate assumptions が stale になりやすい。 これを明示しないと危険である。

  • candidate changed materially
  • source evidence changed
  • spec / scope changed
  • branch comparison context changed
  • new human-side information arrived
  • new failure / counterexample arrived
  • old evaluator pass
  • old optimization request
  • old approval candidacy
  • old compiled context
  • old recommendation confidence

この invalidation を explicit にしないと、 “前に pass したから今回もほぼ pass” という危険な shortcut が起きる。


Evaluator-Optimizer pattern は、一見 quality を上げる pattern に見える。 しかし実際には Corrupt Success を生みやすい場でもある。

optimizer が evaluator の rubric の癖を学び、 真の adequacy ではなく evaluator pass を最適化する。

evaluator の requested changes が iteration のたびに変わり、 何を目指していたのかが失われる。

改善の途中で subject が silently 広がる。

useful-looking candidate だが required evidence が弱いのに、 loop の成功 narrative で押し切る。

outcome だけ改善し、approval dependencies や rollback note や provenance を忘れる。

evaluator pass をそのまま merge / promotion / close に読み替える。

このため Evaluator-Optimizer pattern では、 evaluation と approval の separation が特に重要になる。


human oversight はどこに置くべきか

Section titled “human oversight はどこに置くべきか”

この patternは fully automated に見えやすいが、 PCE 2.0 では human oversight の境界を明示した方がよい。

  • subject freeze
  • criteria freeze or rubric approval
  • high-impact acceptance
  • scope widening
  • exception approval
  • durable memory write
  • incident / rollback decision

human が必ずしも持たなくてよい場所

Section titled “human が必ずしも持たなくてよい場所”
  • local candidate generation
  • deterministic checks
  • advisory review pass
  • bounded formatting or structuring improvements

つまり Human Oversight は、 loop 全体を人間が回すことではなく、 which transitions are too strong to leave entirely inside the loop を explicit にすることである。


Evaluator-Optimizer pattern は一つではない。 少なくとも次の変種がある。

最も基本形。 one optimizer, one evaluator, one candidate chain。

optimizer は一人だが、evaluator が複数いる。

例:

  • CI evaluator (blocking)
  • AI reviewer (advisory)
  • human reviewer (blocking/process-aware)

実務ではこれがかなり多い。

3. Single evaluator, multi-candidate optimizer

Section titled “3. Single evaluator, multi-candidate optimizer”

optimizer が同時に複数 candidate を出し、evaluator が比較する。 これは parallel hybrid である。

粗い evaluator -> fine evaluator のように段階的に loop をかける。 大きな review burden を減らしたいときに useful。

AI optimizer + AI evaluator で preliminary loop を回し、 final acceptance だけ human が見る。 高リスク path で多い。


Evaluator-Optimizer pattern は often Pattern: Parallel と組み合わせて使われる。

  • optimizer candidates A / B を並行に作る
  • multiple evaluators が独立に verdict を返す
  • one branch は outcome checks、another branch は governance checks を行う

parallel を使っても、最終的に one current candidate を refinement するなら、 core pattern は evaluator-optimizer のままである。


こちらはさらに一般的である。 多くの場合、Evaluator-Optimizer pattern は Pattern: Sequential の middle stage として現れる。

freeze question / output contract
-> evaluator-optimizer loop
-> approval
-> promotion / merge / close

つまり loop の前後に

  • framing
  • approval
  • memory writing
  • closure

が来る。


この pattern の output は final candidate だけではない。 PCE 2.0 では、少なくとも次が valuable になりうる。

candidate_0, candidate_1, … の lineage

各 iteration の verdict と requested changes

どの old verdict / context が stale になったか

next gate に進む candidate

loop が abandon / reframe した理由

reusable requested-change patterns, checklist updates, anti-patterns

この pattern は later learning を豊かにしやすい。 単なる one-shot generation より、何が効いて何が効かなかったかが残りやすいからである。


Evaluator-Optimizer pattern がうまく機能しているときは、次の特徴がある。

何を改善しているかがぶれない。

requested changes が bounded で、optimizer が次に何を直せばよいか分かる。

3. blocking と advisory が分かれている

Section titled “3. blocking と advisory が分かれている”

all feedback が equal ではない。

4. pass と approval が分離している

Section titled “4. pass と approval が分離している”

evaluator pass をそのまま adoption にしない。

new evidence / new candidate で old verdict を invalid にできる。

“永遠に改善” にならない。


この pattern の壊れ方も典型的である。

criteria が iteration のたびに変わる。

大きな blocking issue がないのに endless refinement が続く。

same actor / same model が evaluation と acceptance を silently collapse する。

内容がきれいになるだけで、grounding や provenance は増えていない。

outcome score だけ上げて、scope / gate / authority failure を見ない。

current candidate がどの prior candidate / feedback から来たか later に追えない。

毎回ほぼ最初からやり直していて、candidate refinement になっていない。


PCE 2.0 の case pages の中では、次が特に Evaluator-Optimizer pattern に向いている。

つまりこの pattern は、 subject は fixed だが first pass では quality / sufficiency が足りない ときに特に有効である。


実装や docs 化に使いやすい最小 pattern schema を置いておく。

evaluator_optimizer_pattern:
pattern_id:
frame_ref:
subject_kind:
subject_scope:
objective:
frozen_contracts:
eval_contract_refs:
required_evidence_floor:
required_output_contract:
approval_requirements:
optimizer:
actor_ref:
bundle_ref:
capability_scope_ref:
expected_candidate_kind:
evaluators:
- actor_ref:
bundle_ref:
contract_ref:
blocking_mode:
# blocking | advisory
evaluation_axes:
- outcome
- process
iteration_policy:
max_iterations:
max_cost:
max_wall_clock:
improvement_threshold:
stop_on_scope_conflict:
stop_on_missing_evidence:
stop_on_staleness:
accept_exit:
next_transition:
fail_exit:
next_transition:
escalate_path:
rollback_anchor_policy:
memory_policy:

iteration record を separately 持つなら、次のようにも置ける。

optimization_iteration:
iteration_id:
pattern_ref:
candidate_delta_ref:
evaluator_results:
- evaluator_ref:
verdict:
requested_changes:
evidence_gaps:
risks:
stale_conditions:
aggregated_status:
# continue | accept_ready | insufficient_evidence | escalate | rollback | abandon
next_action:
invalidated_refs:
provenance:

この schema で重要なのは、loop を

  • fixed subject
  • evaluator set
  • requested changes
  • stop rules
  • approval separation
  • staleness

を持つものとして表現している点である。


negative total hotfix の AI patch refinement を evaluator-optimizer で回す最小例を書く。

1. human freezes patch scope
2. AI patch optimizer produces candidate_0
3. CI evaluator says: tests fail on edge case
4. optimizer produces candidate_1 with test fix
5. human reviewer says: rollback note too weak
6. optimizer produces candidate_2 with stronger rollback note
7. new release evidence arrives; candidate_2 assumptions become stale
8. old evaluator pass is invalidated
9. loop reopens or escalates
10. final human approval decides whether candidate enters merge-ready path

この例で重要なのは、 quality improvement だけではなく

  • scope freeze
  • multi-evaluator loop
  • stale invalidation
  • final human approval

が明示されていることだ。


Evaluator-Optimizer pattern は、PCE 2.0 の反復改善 topology として、次の概念と強く結びつく。


Evaluator-Optimizer pattern が言っていることは、最終的には次の一文に集約できる。

反復改善に価値があるのは、何を良くしたいのかが固定され、何をもって十分とするかが explicit で、old verdict が stale になれば invalidate され、final adoption が evaluator pass に自動 collapse しない場合に限る。

PCE 2.0 において Evaluator-Optimizer pattern は、単なる “作って直してを繰り返す” ではない。 それは、bounded candidate refinement を process integrity と governance の中に収めるための基本パターンである。

だから Evaluator-Optimizer pattern は、単なる iterative prompt chaining ではない。 それは、PCE 2.0 において fixed subject に対する候補生成と adequacy judgment を明示的な contract と stop rule のもとで往復させる反復改善パターン である。