Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 52 additions & 6 deletions docs/nfugu-judge-eval-v0.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
# NFugu JudgeEval v0

> **Status: Paused (2026-07-02).** Keep this harness as a v0 prototype. Do
> not run new paid/remote batches until it supports single-baseline injection,
> pool-wise candidate judging, executable code verification for code tasks, and
> explicit selection-regret metrics.
> **Status: NFugu paused; CodexFuse sanity-check enabled (2026-07-02).**
> Keep the NFugu harness as a v0 prototype. Do not run new paid/remote NFugu
> batches until it supports single-baseline injection, pool-wise candidate
> judging, executable code verification for code tasks, and explicit
> selection-regret metrics. `codex_fuse` is allowed as a smaller monotonicity
> sanity-check because it reuses the exact `single` answer as C0, generates a
> second Codex answer C1, asks Codex to synthesize F1 from the strengths of C0
> and C1, then conservatively selects from C0/C1/F1.

NFugu JudgeEval v0 is a fast, judge-based eval harness for comparing:

```text
single_codex
codex_fuse
best_of_2n_remote
n_plus_n_remote
```
Expand Down Expand Up @@ -37,6 +42,7 @@ custom manifest can be passed with `--manifest`.

```text
single codex-cli
fuse codex-cli second candidate + codex-cli fusion + codex-cli conservative pool judge
workers codex-cli,ark-plan-deepseek
optimizers agy-cli,ark-plan-glm
judge ark-plan-minimax
Expand All @@ -49,8 +55,9 @@ kept outside the candidate pool by default.

For each task, the harness:

1. runs `single`, `best_of_2n`, and `n_plus_n` through `scripts/run_nfugu_task.py`;
2. anonymizes the three final answers as `A`, `B`, and `C`;
1. runs the requested condition set; the default remains `single`,
`best_of_2n`, and `n_plus_n`;
2. anonymizes the condition final answers as `A`, `B`, `C`, ...;
3. asks the judge for `winner_label`, `runner_up_label`, scores, failure reasons,
confidence, and rationale;
4. runs secondary static verification for code tasks;
Expand All @@ -59,6 +66,31 @@ For each task, the harness:
The judge never sees condition names. The label map is stored only in the local
result artifact.

`codex_fuse` is special: it is not another independent full run. It uses the
already generated `single` final answer as C0, generates one additional
`codex-cli` answer as C1, asks a fusion Codex call to produce F1 by combining
the real strengths of C0 and C1, then selects from C0/C1/F1 with verifier-first
checks and a conservative blind pool judge. If the judge does not strongly
select C1 or F1, the final answer stays C0.

`codex_double` follows the same audit principle without the fusion call: C0 is
the exact `single` answer and C1 is one additional Codex answer. When the
condition set is `single,codex_double`, the report-level `winner` is C0 or C1,
not the synthetic `codex_double` condition name. If the monotonic guard keeps
C0, the row records that the final answer equals the single baseline instead of
claiming a separate condition-level win.

When the condition set is `single,codex_fuse`, the report-level `winner` is the
best candidate from the C0/C1/F1 pool, not the condition name. This avoids
misreading "codex_fuse won" as "F1 won" when the actual selected candidate was
C1.

Rows in `results.jsonl` carry a run signature covering the manifest hash,
condition order, provider preset/provider slots, judge providers, thresholds,
and generation limits. Cached rows are reused only when that signature matches,
so changing from NFugu conditions to `codex_fuse` or `codex_double` cannot
silently mix stale rows into the active summary/report.

## Commands

Prepare the default manifest without model calls:
Expand All @@ -79,6 +111,20 @@ python -B scripts/run_nfugu_judge_eval.py `
--out-dir .memsuos/evals/nfugu-judge-eval-v0-smoke
```

Run the CodexFuse sanity-check shard:

```powershell
python -B scripts/run_nfugu_judge_eval.py `
--conditions single,code_fuse `
--limit 2 `
--single-provider codex-cli `
--second-provider codex-cli `
--fuse-provider codex-cli `
--fuse-judge-provider codex-cli `
--judge-provider codex-cli `
--out-dir .memsuos/evals/codex-fuse-judgeeval-v0
```

Run the real first shard:

```powershell
Expand Down
2 changes: 1 addition & 1 deletion docs/project-spec-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ memsuOS 当前聚焦的是:
| `docs/NFuguMode.md` | NFuguMode 设计(已暂停实现) | N+N 候选优化赛:V1 runner 与 JudgeEval v0 保留为研究/原型;2026-07-02 暂停继续实现和远端付费评测,重启前需补 baseline 注入、pool-wise judge/verifier 和 selection-regret 报告 |
| `docs/fugu-first-eval-plan.md` | FuguMax 首批评测计划(条件已弃用) | Aider/BFCL 轻量阶段的评测准备和失败实现复盘;抽样与打分契约沿用到 NFuguMode 首批评测(N+N vs best-of-2N 消融) |
| `docs/nfugu-first-eval-runbook.md` | NFugu 首批评测 runbook(暂停) | 首批 eval 操作记录;暂停从该 runbook 直接开跑,等待 baseline 注入、pool-wise candidate scoring 和 selection-regret 指标补齐 |
| `docs/nfugu-judge-eval-v0.md` | NFugu JudgeEval v0(暂停) | 20 题三方 blind judge 原型;默认 agy-cli 替代 kimi-cli,但暂停新远端批次,等待单调性保护和代码题可执行验证补齐 |
| `docs/nfugu-judge-eval-v0.md` | NFugu JudgeEval v0(NFugu 暂停,CodexFuse sanity-check 可用) | 20 题三方 blind judge 原型;默认 agy-cli 替代 kimi-cli;NFugu 远端批次暂停,新增 `codex_fuse` 条件用于 C0/C1/F1 同构 Codex 融合 sanity-check |

## 7. 源码索引

Expand Down
Loading