fix(commands): address Santa Loop review feedback

(cherry picked from commit 3a0e3313d5)
This commit is contained in:
ethereal49 authored and haelyra committed 2026-10-20 17:38:05 -04:00
1 parent 4aa28ccac5
commit f7c6809bd7
3 files changed
+14 -9

No files matched your search

+2 -2
View File
@@ -169,8 +169,8 @@ Result: [PUSHED / ESCALATED TO USER]
## 注意事項
- レビュアー A(Claude Opus)は常に実行されます — ツール環境に関係なく、少なくとも1つの強力なレビュアーが保証されます。
- レビュアー Bの目標はモデル多様性です。GPT-5.4またはGemini 2.5 Proは真の独立性を提供します — 異なる学習データ、異なるバイアス、異なる死角。Claudeのみのフォールバックでもコンテキスト分離による価値はありますが、モデル多様性は失われます。
- 利用可能な最も強力なモデルが使用されます:レビュアー AにはOpus、レビュアー BにはGPT-5.4またはGemini 2.5 Pro。
- レビュアー Bの目標はモデル多様性です。選択したバックエンドが報告する実際のモデルとプロバイダーを記録してください。Claudeのみのフォールバックはコンテキストを分離しますが、モデル多様性は失われます。
- レビュアー AにはOpusを使用します。レビュアー BのCodexは設定されたモデル、またはCLIのデフォルトを使用します。
- 外部レビュアーはレビュー中のリポジトリ変更を防ぐため、`--sandbox read-only`(Codex)で実行されます。
- 各ラウンドで新しいレビュアーを使用することで、以前の発見に対するアンカリングバイアスを防ぎます。
- ルーブリックは最も重要な入力です。レビュアーがゴム印承認をしたり、主観的なスタイルの問題をフラグに立てる場合は、ルーブリックを厳格化してください。
+2 -2
View File
@@ -173,8 +173,8 @@ Result: [PUSHED / ESCALATED TO USER]
## 备注
* 评审者 A(Claude Opus)始终运行——无论工具如何,保证至少有一个强大的评审者。
* 模型多样性是评审者 B 的目标。GPT-5.4 或 Gemini 2.5 Pro 提供真正的独立性——不同的训练数据、不同的偏见、不同的盲点。仅 Claude 的回退通过上下文隔离仍然提供价值,但失去了模型多样性。
* 使用最强可用模型:Opus 用于评审者 A,GPT-5.4 或 Gemini 2.5 Pro 用于评审者 B。
* 模型多样性是评审者 B 的目标。记录所选 backend 报告的实际模型和 provider。仅 Claude 的回退仍提供上下文隔离,但失去了模型多样性。
* 评审者 A 使用 Opus;评审者 B 的 Codex 使用已配置的模型或 CLI 默认值。
* 外部评审者使用 `--sandbox read-only`(Codex)运行,以防止审查期间仓库发生变异。
* 每轮使用全新的评审者可以防止先前发现导致的锚定偏差。
* 评分标准是最重要的输入。如果评审者盖章通过或标记主观风格问题,请收紧评分标准。
+10 -5
View File
@@ -40,8 +40,7 @@ function runCodexExample(commandPath, configuredModel) {
try {
const promptFile = path.join(tempRoot, 'prompt.md');
fs.writeFileSync(promptFile, 'Independent review only.');
fs.writeFileSync(path.join(tempRoot, 'codex'), `#!${process.execPath}
const fs = require('fs');
fs.writeFileSync(path.join(tempRoot, 'codex.js'), `const fs = require('fs');
const args = process.argv.slice(2);
const modelFlag = args.findIndex(arg => arg === '-m' || arg === '--model');
const model = modelFlag < 0 ? process.env.ECC_TEST_CONFIGURED_MODEL : args[modelFlag + 1];
@@ -50,11 +49,13 @@ if (model !== process.env.ECC_TEST_CONFIGURED_MODEL) {
process.exit(1);
}
console.log(JSON.stringify({ args, model, prompt: fs.readFileSync(0, 'utf8') }));
`, { mode: 0o755 });
const result = spawnSync('bash', ['-c', invocation[0]], {
`);
fs.writeFileSync(path.join(tempRoot, 'codex'), '#!/bin/sh\nexec "$ECC_TEST_NODE" "$0.js" "$@"\n', { mode: 0o755 });
// Ignore exported functions and startup scripts so CLI dispatch stays inside the fixture.
const result = spawnSync('bash', ['-p', '-c', invocation[0]], {
cwd: tempRoot,
env: { ...process.env, PATH: `${tempRoot}${path.delimiter}${process.env.PATH}`,
PROMPT_FILE: promptFile, ECC_TEST_CONFIGURED_MODEL: configuredModel },
PROMPT_FILE: promptFile, ECC_TEST_CONFIGURED_MODEL: configuredModel, ECC_TEST_NODE: process.execPath },
encoding: 'utf8', timeout: 10000,
});
assert.strictEqual(result.status, 0, result.stderr);
@@ -67,6 +68,10 @@ console.log(JSON.stringify({ args, model, prompt: fs.readFileSync(0, 'utf8') }))
console.log('\n=== Testing Santa Loop Codex model selection (stub CLI) ===\n');
for (const commandPath of commands) {
test(`${commandPath} has no obsolete fixed-model promise`, () => {
const source = fs.readFileSync(path.join(repoRoot, commandPath), 'utf8');
assert.ok(!/gpt-5\.4/i.test(source), 'Codex model selection must agree throughout the command');
});
for (const model of ['account-default', 'configured-review-model']) {
test(`${commandPath} respects ${model} and preserves review inputs`, () => {
const result = runCodexExample(commandPath, model);