dsh-llm-verifier 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +15 -11
  2. package/lib/client.js +23 -3
  3. package/lib/client.js.map +1 -1
  4. package/lib/index.js +377 -115
  5. package/lib/index.js.map +1 -1
  6. package/lib/types/auto.d.ts +32 -12
  7. package/lib/types/auto.d.ts.map +1 -1
  8. package/lib/types/auto.js +50 -38
  9. package/lib/types/auto.js.map +1 -1
  10. package/lib/types/client-i18n.d.ts +21 -1
  11. package/lib/types/client-i18n.d.ts.map +1 -1
  12. package/lib/types/client-i18n.js +22 -4
  13. package/lib/types/client-i18n.js.map +1 -1
  14. package/lib/types/client.d.ts.map +1 -1
  15. package/lib/types/client.js +1 -1
  16. package/lib/types/client.js.map +1 -1
  17. package/lib/types/engine.d.ts +19 -0
  18. package/lib/types/engine.d.ts.map +1 -1
  19. package/lib/types/engine.js +54 -4
  20. package/lib/types/engine.js.map +1 -1
  21. package/lib/types/index.d.ts.map +1 -1
  22. package/lib/types/index.js +32 -43
  23. package/lib/types/index.js.map +1 -1
  24. package/lib/types/router.d.ts +31 -0
  25. package/lib/types/router.d.ts.map +1 -1
  26. package/lib/types/router.js +181 -17
  27. package/lib/types/router.js.map +1 -1
  28. package/lib/types/statistics.d.ts +28 -0
  29. package/lib/types/statistics.d.ts.map +1 -1
  30. package/lib/types/statistics.js +101 -0
  31. package/lib/types/statistics.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/auto.test.ts +42 -23
  34. package/src/auto.ts +55 -46
  35. package/src/client-i18n.ts +32 -4
  36. package/src/client.test.ts +48 -3
  37. package/src/client.tsx +2 -0
  38. package/src/config.test.ts +6 -3
  39. package/src/engine.test.ts +40 -1
  40. package/src/engine.ts +56 -4
  41. package/src/index.ts +34 -44
  42. package/src/router.test.ts +191 -3
  43. package/src/router.ts +171 -14
  44. package/src/statistics.test.ts +116 -0
  45. package/src/statistics.ts +112 -0
@@ -1 +1 @@
1
- {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/statistics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/statistics.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-llm-verifier",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Configurable DSH-native LLM verifier with a Web settings page",
5
5
  "repository": {
6
6
  "type": "git",
package/src/auto.test.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { describe, expect, it } from 'vitest'
2
2
  import { Session } from '@deepseek-ai/dsh-session'
3
3
  import { createToolResultMessage, createUserMessage } from '@deepseek-ai/dsh-llm'
4
- import { AutoVerificationBudget, analyzeAutoTask, automaticFeedback, isSubagentSession } from './auto.ts'
4
+ import { analyzeAutoTask, automaticFeedback, failedAcceptanceCriteria, isSubagentSession, sessionAccepted } from './auto.ts'
5
5
 
6
6
  function taskSession() {
7
7
  const session = Session.create('session-00000000-0000-4000-8000-000000000009' as never)
@@ -23,6 +23,34 @@ function sessionVerify(session: ReturnType<typeof taskSession>, id: string, payl
23
23
  }
24
24
  const verdict = (score: number, winner = 'A') => JSON.stringify({ sessionId: 's', problem: 'p', score, baselineScore: 0.2, winner, fromSeq: 0, toSeq: 9, omittedCharacters: 0, calls: 3, stats: {} })
25
25
 
26
+ describe('session acceptance', () => {
27
+ const criteria = [
28
+ { id: 'specification', name: 'Specification Adherence', score: 1 },
29
+ { id: 'output_match', name: 'Output Match', score: 1 },
30
+ { id: 'error_signals', name: 'Error Signal Detection', score: 0 },
31
+ ]
32
+
33
+ it('rejects a session whose mean passes but one criterion failed', () => {
34
+ // 0.667 clears the 0.65 mean, and the empty-work baseline always scores 0, so
35
+ // without the per-criterion floor a completely failed requirement was invisible.
36
+ expect(sessionAccepted({ score: 0.6667, winner: 'A', criteria }, 0.65)).toBe(false)
37
+ expect(failedAcceptanceCriteria(criteria, 0.65).map(value => value.id)).toEqual(['error_signals'])
38
+ // A criterion exactly at the threshold is accepted; the boundary is not a failure.
39
+ expect(sessionAccepted({ score: 0.65, winner: 'A', criteria: [{ id: 'a', score: 0.65 }] }, 0.65)).toBe(true)
40
+ // Without a breakdown the mean still decides.
41
+ expect(sessionAccepted({ score: 0.6667, winner: 'A' }, 0.65)).toBe(true)
42
+ // Losing to the baseline, or missing the mean, never passes.
43
+ expect(sessionAccepted({ score: 1, winner: 'B' }, 0.65)).toBe(false)
44
+ expect(sessionAccepted({ score: 0.5, winner: 'A', criteria: [] }, 0.65)).toBe(false)
45
+ })
46
+
47
+ it('names the failing criteria in the feedback and stays silent without them', () => {
48
+ const message = automaticFeedback(0.6667, 0, 'A', 0.65, [{ id: 'error_signals', name: 'Error Signal Detection', score: 0 }])
49
+ expect(message).toContain('Criteria below the threshold: Error Signal Detection 0.0%.')
50
+ expect(automaticFeedback(0.4, 0, 'A', 0.65)).not.toContain('Criteria below the threshold')
51
+ })
52
+ })
53
+
26
54
  describe('automatic verification policy', () => {
27
55
  it('requires consequential work and enough evidence in smart mode', () => {
28
56
  const session = taskSession()
@@ -60,6 +88,19 @@ describe('automatic verification policy', () => {
60
88
  sessionVerify(failing, 'four', verdict(0.2, 'B'))
61
89
  expect(analyzeAutoTask(failing.events, smart)).toMatchObject({ eligible: true, hasManualSessionVerification: true, manualVerificationAccepted: false })
62
90
 
91
+ // A pass whose MEAN clears the threshold but whose breakdown has a failed
92
+ // requirement does not count: the automatic gate keeps the same floor, so the
93
+ // explicit path must not be a loophole around it.
94
+ const failedCriterion = taskSession()
95
+ call(failedCriterion, 'edit', 'one'); call(failedCriterion, 'pwsh', 'two'); call(failedCriterion, 'read', 'three')
96
+ sessionVerify(failedCriterion, 'four', JSON.stringify({ score: 0.7, baselineScore: 0, winner: 'A', criteria: [{ id: 'specification', scoreA: 1 }, { id: 'error_signals', scoreA: 0 }] }))
97
+ expect(analyzeAutoTask(failedCriterion.events, smart)).toMatchObject({ hasManualSessionVerification: true, manualVerificationAccepted: false, eligible: true })
98
+ // A breakdown that clears every criterion still counts.
99
+ const cleanCriteria = taskSession()
100
+ call(cleanCriteria, 'edit', 'one'); call(cleanCriteria, 'pwsh', 'two'); call(cleanCriteria, 'read', 'three')
101
+ sessionVerify(cleanCriteria, 'four', JSON.stringify({ score: 0.7, baselineScore: 0, winner: 'A', criteria: [{ id: 'specification', scoreA: 0.65 }, { id: 'error_signals', scoreA: 0.9 }] }))
102
+ expect(analyzeAutoTask(cleanCriteria.events, smart)).toMatchObject({ manualVerificationAccepted: true, eligible: false, reason: 'already-verified' })
103
+
63
104
  // A pass below the configured threshold does not count either.
64
105
  const belowThreshold = taskSession()
65
106
  call(belowThreshold, 'edit', 'one'); call(belowThreshold, 'pwsh', 'two'); call(belowThreshold, 'read', 'three')
@@ -87,28 +128,6 @@ describe('automatic verification policy', () => {
87
128
  expect(analyzeAutoTask(session.events, smart)).toMatchObject({ eligible: true, consequentialToolCalls: 2 })
88
129
  })
89
130
 
90
- it('resets per-task attempts for a new direct user message and enforces the session cap', () => {
91
- const session = taskSession()
92
- call(session, 'edit', 'one')
93
- call(session, 'read', 'two')
94
- call(session, 'pwsh', 'three')
95
- const agent = { id: session.id, session } as never
96
- const budget = new AutoVerificationBudget()
97
- const policy = { ...smart, maxPerTask: 1, maxPerSession: 2 }
98
- expect(budget.claim(agent, analyzeAutoTask(session.events, policy), policy)).toBe(true)
99
- expect(budget.claim(agent, analyzeAutoTask(session.events, policy), policy)).toBe(false)
100
- session.append('user/message', createUserMessage({ content: [{ type: 'text', text: 'Do another task' }], source: { kind: 'user' } }), { surfaceOp: 'append' })
101
- call(session, 'write', 'four')
102
- call(session, 'read', 'five')
103
- call(session, 'pwsh', 'six')
104
- expect(budget.claim(agent, analyzeAutoTask(session.events, policy), policy)).toBe(true)
105
- session.append('user/message', createUserMessage({ content: [{ type: 'text', text: 'Third task' }], source: { kind: 'user' } }), { surfaceOp: 'append' })
106
- call(session, 'edit', 'seven')
107
- call(session, 'read', 'eight')
108
- call(session, 'pwsh', 'nine')
109
- expect(budget.claim(agent, analyzeAutoTask(session.events, policy), policy)).toBe(false)
110
- })
111
-
112
131
  it('recognizes delegated child sessions that must not be gated by default', () => {
113
132
  expect(isSubagentSession(undefined)).toBe(false)
114
133
  expect(isSubagentSession({ session: {} })).toBe(false)
package/src/auto.ts CHANGED
@@ -1,6 +1,4 @@
1
- import type { Agent } from '@deepseek-ai/dsh-agent'
2
1
  import type { SessionEvent } from '@deepseek-ai/dsh-session'
3
- import { sessionEvents } from './session.ts'
4
2
  // Shared with the router so both agree on what opens a task; imported (type-only in the
5
3
  // other direction) rather than duplicated, because a drift here silently disables gating.
6
4
  import { latestDirectUserSeq } from './router.ts'
@@ -82,14 +80,22 @@ function blockText(value: unknown): string {
82
80
  * @param value - Result content blocks (or a raw string).
83
81
  * @returns The parsed verdict fields, or undefined.
84
82
  */
85
- function parseSessionVerdict(value: unknown): { winner?: unknown; score?: unknown } | undefined {
83
+ function parseSessionVerdict(value: unknown): { winner?: unknown; score?: unknown; criteria?: AcceptanceCriterion[] } | undefined {
86
84
  const text = blockText(value)
87
85
  const start = text.indexOf('{')
88
86
  const end = text.lastIndexOf('}')
89
87
  if (start < 0 || end <= start) return undefined
90
88
  try {
91
89
  const parsed: unknown = JSON.parse(text.slice(start, end + 1))
92
- return typeof parsed === 'object' && parsed !== null ? parsed as { winner?: unknown; score?: unknown } : undefined
90
+ if (typeof parsed !== 'object' || parsed === null) return undefined
91
+ const row = parsed as { winner?: unknown; score?: unknown; criteria?: unknown }
92
+ const criteria: AcceptanceCriterion[] = []
93
+ for (const entry of Array.isArray(row.criteria) ? row.criteria : []) {
94
+ const item = typeof entry === 'object' && entry !== null ? entry as { id?: unknown; name?: unknown; scoreA?: unknown } : {}
95
+ if (typeof item.id !== 'string' || typeof item.scoreA !== 'number' || !Number.isFinite(item.scoreA)) continue
96
+ criteria.push({ id: item.id, ...(typeof item.name === 'string' ? { name: item.name } : {}), score: item.scoreA })
97
+ }
98
+ return { winner: row.winner, score: row.score, criteria }
93
99
  } catch { return undefined }
94
100
  }
95
101
 
@@ -146,21 +152,28 @@ export function analyzeAutoTask(events: readonly SessionEvent[], policy: AutoVer
146
152
  // followed by more edits — must never disarm the gate.
147
153
  const stale = (seq: number) => pairedCalls.some(event => event.seq > seq && isConsequential(event.data.name))
148
154
  || successfulDispatches.some(entry => entry.seq > seq && isConsequential(entry.data.name))
149
- const manualVerdicts: Array<{ seq: number; winner: unknown; score: unknown }> = []
155
+ const manualVerdicts: Array<{ seq: number; winner: unknown; score: unknown; criteria?: AcceptanceCriterion[] }> = []
150
156
  for (const event of pairedCalls) {
151
157
  if (event.data.name !== VERIFIER_SESSION_TOOL) continue
152
158
  const result = results.get(String(event.data.callId))
153
159
  if (result === undefined) continue
154
160
  const verdict = parseSessionVerdict(result.data.message.content)
155
- manualVerdicts.push({ seq: result.seq, winner: verdict?.winner, score: verdict?.score })
161
+ manualVerdicts.push({ seq: result.seq, winner: verdict?.winner, score: verdict?.score, criteria: verdict?.criteria })
156
162
  }
157
163
  for (const entry of successfulDispatches) {
158
164
  if (entry.data.name !== VERIFIER_SESSION_TOOL) continue
159
165
  const verdict = parseSessionVerdict(entry.data.content)
160
- manualVerdicts.push({ seq: entry.seq, winner: verdict?.winner, score: verdict?.score })
166
+ manualVerdicts.push({ seq: entry.seq, winner: verdict?.winner, score: verdict?.score, criteria: verdict?.criteria })
161
167
  }
162
168
  const hasManualSessionVerification = manualVerdicts.length > 0
163
- const manualVerificationAccepted = manualVerdicts.some(verdict => verdict.winner === 'A' && typeof verdict.score === 'number' && verdict.score >= policy.threshold && !stale(verdict.seq))
169
+ // Same acceptance rule as the automatic gate, including the per-criterion floor:
170
+ // otherwise an explicitly called verification with one failed requirement could
171
+ // disarm the gate that the automatic path would have kept closed.
172
+ const manualVerificationAccepted = manualVerdicts.some(verdict =>
173
+ verdict.winner === 'A'
174
+ && typeof verdict.score === 'number'
175
+ && sessionAccepted({ score: verdict.score, winner: 'A', criteria: verdict.criteria }, policy.threshold)
176
+ && !stale(verdict.seq))
164
177
 
165
178
  if (policy.mode === 'manual') return { taskStartSeq, toolCalls, completedToolResults, consequentialToolCalls, hasManualSessionVerification, manualVerificationAccepted, eligible: false, reason: 'manual-mode' }
166
179
  if (manualVerificationAccepted) return { taskStartSeq, toolCalls, completedToolResults, consequentialToolCalls, hasManualSessionVerification, manualVerificationAccepted, eligible: false, reason: 'already-verified' }
@@ -170,56 +183,52 @@ export function analyzeAutoTask(events: readonly SessionEvent[], policy: AutoVer
170
183
  return { taskStartSeq, toolCalls, completedToolResults, consequentialToolCalls, hasManualSessionVerification, manualVerificationAccepted, eligible: true, reason: policy.mode + '-eligible' }
171
184
  }
172
185
 
173
- interface SessionBudget {
174
- taskStartSeq: number
175
- taskAttempts: number
176
- sessionAttempts: number
177
- lastEvaluatedSeq: number
186
+ /** One criterion's outcome from a session acceptance (candidate A is the session). */
187
+ export interface AcceptanceCriterion {
188
+ id: string
189
+ name?: string
190
+ score: number
178
191
  }
179
192
 
180
193
  /**
181
- * Session/task acceptance budget.
194
+ * Criteria that do not clear the acceptance threshold.
182
195
  *
183
- * The automatic verifier enforces its per-task and per-session budget through
184
- * {@link AutoVerifierRouter} reservations, which also count the routing phases;
185
- * this standalone counter is kept as a public utility for orchestrators that
186
- * need the same accounting outside the router.
196
+ * The acceptance score is the MEAN over criteria, so a session with one requirement at
197
+ * zero and the others perfect averaged ~0.67 and cleared the 0.65 default: a single
198
+ * failed requirement was arithmetically invisible. The gate therefore also requires
199
+ * every criterion to clear the threshold on its own.
200
+ * @param criteria - per-criterion A-side scores, when the judge reported them.
201
+ * @param threshold - acceptance threshold.
202
+ * @returns The failing criteria, in report order.
187
203
  */
188
- export class AutoVerificationBudget {
189
- private readonly states = new Map<string, SessionBudget>()
190
-
191
- claim(agent: Agent, evidence: AutoTaskEvidence, policy: AutoVerifyPolicy): boolean {
192
- if (!evidence.eligible) return false
193
- const id = String(agent.id)
194
- const previous = this.states.get(id)
195
- const state: SessionBudget = previous ?? { taskStartSeq: evidence.taskStartSeq, taskAttempts: 0, sessionAttempts: 0, lastEvaluatedSeq: -1 }
196
- if (state.taskStartSeq !== evidence.taskStartSeq) {
197
- state.taskStartSeq = evidence.taskStartSeq
198
- state.taskAttempts = 0
199
- state.lastEvaluatedSeq = -1
200
- }
201
- const lastSeq = sessionEvents(agent.session).at(-1)?.seq ?? -1
202
- if (lastSeq <= state.lastEvaluatedSeq || state.taskAttempts >= policy.maxPerTask || state.sessionAttempts >= policy.maxPerSession) {
203
- this.states.set(id, state)
204
- return false
205
- }
206
- state.taskAttempts += 1
207
- state.sessionAttempts += 1
208
- state.lastEvaluatedSeq = lastSeq
209
- this.states.set(id, state)
210
- return true
211
- }
204
+ export function failedAcceptanceCriteria(criteria: readonly AcceptanceCriterion[] | undefined, threshold: number): AcceptanceCriterion[] {
205
+ return (criteria ?? []).filter(criterion => !(criterion.score >= threshold))
206
+ }
212
207
 
213
- release(agent: Agent): void {
214
- this.states.delete(String(agent.id))
215
- }
208
+ /**
209
+ * Whether a session acceptance clears the gate.
210
+ *
211
+ * The empty-work baseline is a fixed sentence that always scores 0, so the comparison
212
+ * itself is decorative; what actually decides is the session's own score, the winner
213
+ * against that baseline, and (since the mean could hide a failed requirement) every
214
+ * criterion clearing the threshold.
215
+ * @param evidence - session acceptance result (score, winner and per-criterion scores).
216
+ * @param threshold - acceptance threshold.
217
+ * @returns True only when the session may conclude.
218
+ */
219
+ export function sessionAccepted(evidence: { score: number; winner: 'A' | 'B' | 'tie'; criteria?: readonly AcceptanceCriterion[] }, threshold: number): boolean {
220
+ if (evidence.winner !== 'A' || !(evidence.score >= threshold)) return false
221
+ return failedAcceptanceCriteria(evidence.criteria, threshold).length === 0
216
222
  }
217
223
 
218
- export function automaticFeedback(score: number, baselineScore: number, winner: 'A' | 'B' | 'tie', threshold: number): string {
224
+ export function automaticFeedback(score: number, baselineScore: number, winner: 'A' | 'B' | 'tie', threshold: number, failedCriteria: readonly AcceptanceCriterion[] = []): string {
219
225
  const percent = (value: number) => (value * 100).toFixed(1) + '%'
220
226
  return [
221
227
  '[Automatic verifier gate]',
222
228
  `The independent verifier did not clear this task for completion: evidence score ${percent(score)}, baseline ${percent(baselineScore)}, verdict ${winner}, required ${percent(threshold)}.`,
229
+ ...(failedCriteria.length > 0
230
+ ? ['Criteria below the threshold: ' + failedCriteria.map(criterion => (criterion.name ?? criterion.id) + ' ' + percent(criterion.score)).join('; ') + '.']
231
+ : []),
223
232
  'Re-open the task requirements, inspect the actual tool outputs for unresolved errors or missing proof, make any necessary corrections, and run a directly relevant verification command before concluding. Do not merely restate that the task is complete.',
224
233
  ].join('\n')
225
234
  }
@@ -33,7 +33,7 @@ export const zh = {
33
33
  'field.autoRouteMaxPerSession.title': '每会话最多路由',
34
34
  'field.autoRouteMaxPerSession.help': '同一会话中自动路由的尝试上限;与「每会话最多验收」共享计数器,实际可用次数同样是两者之和。',
35
35
  'field.autoTrackCompletionThreshold.title': '进度完成阈值',
36
- 'field.autoTrackCompletionThreshold.help': 'track 任一检查点低于该值时 steering 要求 Agent 继续执行;范围 0–1。',
36
+ 'field.autoTrackCompletionThreshold.help': 'track 最新检查点低于该值时 steering 要求 Agent 继续执行;更早的检查点只作展示,范围 0–1。',
37
37
  'field.autoRouteMaxItemChars.title': '单项证据字符上限',
38
38
  'field.autoRouteMaxItemChars.help': '每个候选或检查点在脱敏后允许发送给裁判的最大字符数。',
39
39
  'field.autoRouteMaxInputChars.title': '路由证据总字符上限',
@@ -146,6 +146,7 @@ export const zh = {
146
146
  'stats.outcome.passed': '通过',
147
147
  'stats.outcome.below-threshold': '未达标',
148
148
  'stats.outcome.tie': '平局',
149
+ 'stats.outcome.compared': '已比较',
149
150
  'stats.outcome.error': '异常',
150
151
  'stats.outcome.dropped-over-budget': '超预算丢弃',
151
152
  'stats.outcome.invalid-references': '引用无效',
@@ -153,6 +154,8 @@ export const zh = {
153
154
  'stats.verdict.winner': '胜方 {winner}',
154
155
  'stats.verdict.scoreThreshold': '得分 {score}(阈值 {threshold})',
155
156
  'stats.verdict.scoreOnly': '得分 {score}',
157
+ 'stats.verdict.checkpoints': '检查点 {scores}',
158
+ 'stats.verdict.criteria': '标准 {criteria}',
156
159
 
157
160
  // Metrics
158
161
  'metric.cacheHitRate': '缓存命中率',
@@ -244,7 +247,7 @@ export const en: I18nDict = {
244
247
  'field.autoRouteMaxPerSession.title': 'Max Routes per Session',
245
248
  'field.autoRouteMaxPerSession.help': 'Session attempt cap for automatic routing; shares its counter with "Max Verifications per Session" (effective limit is the sum of both).',
246
249
  'field.autoTrackCompletionThreshold.title': 'Progress Completion Threshold',
247
- 'field.autoTrackCompletionThreshold.help': 'When any track checkpoint falls below this score, steering instructs the Agent to continue; range 0–1.',
250
+ 'field.autoTrackCompletionThreshold.help': 'When the newest track checkpoint falls below this score, steering instructs the Agent to continue; earlier checkpoints are shown only; range 0–1.',
248
251
  'field.autoRouteMaxItemChars.title': 'Max Chars per Route Item',
249
252
  'field.autoRouteMaxItemChars.help': 'Maximum sanitized character count allowed per candidate or checkpoint when sent to the judge.',
250
253
  'field.autoRouteMaxInputChars.title': 'Total Route Input Chars Cap',
@@ -357,6 +360,7 @@ export const en: I18nDict = {
357
360
  'stats.outcome.passed': 'Passed',
358
361
  'stats.outcome.below-threshold': 'Below Threshold',
359
362
  'stats.outcome.tie': 'Tie',
363
+ 'stats.outcome.compared': 'Compared',
360
364
  'stats.outcome.error': 'Error',
361
365
  'stats.outcome.dropped-over-budget': 'Dropped (over budget)',
362
366
  'stats.outcome.invalid-references': 'Invalid references',
@@ -364,6 +368,8 @@ export const en: I18nDict = {
364
368
  'stats.verdict.winner': 'Winner {winner}',
365
369
  'stats.verdict.scoreThreshold': 'Score {score} (threshold {threshold})',
366
370
  'stats.verdict.scoreOnly': 'Score {score}',
371
+ 'stats.verdict.checkpoints': 'Checkpoints {scores}',
372
+ 'stats.verdict.criteria': 'Criteria {criteria}',
367
373
 
368
374
  // Metrics
369
375
  'metric.cacheHitRate': 'Cache Hit Rate',
@@ -493,6 +499,12 @@ export interface VerdictSummary {
493
499
  phase?: string
494
500
  outcome?: string
495
501
  score?: number
502
+ /** Per-checkpoint progression of a `verifier_track` verdict, oldest first; absent on older records. */
503
+ scores?: number[]
504
+ /** Candidate B's score of a two-way comparison; `score` is the winning side. */
505
+ scoreB?: number
506
+ /** Per-criterion A-side scores of a session acceptance; the mean alone can hide a failed requirement. */
507
+ criteria?: Array<{ id: string; score: number }>
496
508
  baselineScore?: number
497
509
  winner?: 'A' | 'B' | 'tie'
498
510
  threshold?: number
@@ -566,7 +578,7 @@ export function sectionForSave(
566
578
  return section
567
579
  }
568
580
 
569
- /** An eight-candidate select: ring + pivot rounds (18 pairs) x three criteria, one repeat. */
581
+ /** An eight-candidate select: ring + pivot rounds (18 pairs) x three criteria, one round (the per-pair orientation removes the slot bias). */
570
582
  export const WORST_CASE_ROUTE_CALLS_PER_JUDGE = 54
571
583
  /** Final acceptance: three criteria x the default two repeats (one per A/B position). */
572
584
  export const WORST_CASE_FINAL_CALLS_PER_JUDGE = 6
@@ -629,6 +641,8 @@ export function formatVerdictDetails(
629
641
  outcomeText?: string
630
642
  phaseText?: string
631
643
  scoreText?: string
644
+ checkpointsText?: string
645
+ criteriaText?: string
632
646
  winnerText?: string
633
647
  isFailed: boolean
634
648
  } {
@@ -650,12 +664,26 @@ export function formatVerdictDetails(
650
664
  }
651
665
  }
652
666
 
667
+ // One track verdict carries a whole progression; showing only the newest score
668
+ // hides why the route decided to continue.
669
+ let checkpointsText: string | undefined
670
+ if (Array.isArray(verdict.scores) && verdict.scores.length > 1) {
671
+ checkpointsText = tFormat(t['stats.verdict.checkpoints'], { scores: verdict.scores.map(formatPercentage).join(' → ') })
672
+ }
673
+
674
+ // The acceptance mean can hide a requirement that failed on its own, so the breakdown
675
+ // is what tells the reader which one is holding the task back.
676
+ let criteriaText: string | undefined
677
+ if (Array.isArray(verdict.criteria) && verdict.criteria.length > 0) {
678
+ criteriaText = tFormat(t['stats.verdict.criteria'], { criteria: verdict.criteria.map(criterion => criterion.id + ' ' + formatPercentage(criterion.score)).join(' · ') })
679
+ }
680
+
653
681
  let winnerText: string | undefined
654
682
  if (verdict.winner) {
655
683
  const winnerValue = verdict.winner === 'tie' ? t['stats.winner.tie'] : verdict.winner
656
684
  winnerText = tFormat(t['stats.verdict.winner'], { winner: winnerValue })
657
685
  }
658
686
 
659
- return { outcomeText, phaseText, scoreText, winnerText, isFailed }
687
+ return { outcomeText, phaseText, scoreText, checkpointsText, criteriaText, winnerText, isFailed }
660
688
  }
661
689
 
@@ -453,7 +453,8 @@ describe('settings save layer', () => {
453
453
 
454
454
  describe('budget worst case and sanity warnings', () => {
455
455
  it('defines correct constants for worst case calls per judge', () => {
456
- // Routing (54) plus the final acceptance (3 criteria x 2 repeats) per judge.
456
+ // Routing (18 pairs x 3 criteria, one round per pair) plus the final acceptance
457
+ // (3 criteria x 2 repeats) per judge.
457
458
  expect(WORST_CASE_ROUTE_CALLS_PER_JUDGE).toBe(54)
458
459
  expect(WORST_CASE_FINAL_CALLS_PER_JUDGE).toBe(6)
459
460
  expect(WORST_CASE_TASK_PER_JUDGE).toBe(60)
@@ -480,14 +481,14 @@ describe('budget worst case and sanity warnings', () => {
480
481
  })
481
482
 
482
483
  it('returns null when budgets meet or exceed worst case requirements', () => {
483
- // 1 judge (0 extra): task worst case 60, session worst case 160
484
+ // 1 judge (0 extra): task worst case 60, session worst case 160 — the shipped
485
+ // defaults (96 / 240) clear both.
484
486
  expect(evaluateBudgetWarning('smart', 0, 96, 240)).toBeNull()
485
487
  // 2 judges (1 extra): task worst case 120, session worst case 320
486
488
  expect(evaluateBudgetWarning('smart', 1, 120, 320)).toBeNull()
487
489
  })
488
490
 
489
491
  it('warns on task budget below worst case requirement', () => {
490
- // 2 judges (1 extra): task worst case 120, session worst case 320
491
492
  const warning = evaluateBudgetWarning('smart', 1, 64, 350)
492
493
  expect(warning).not.toBeNull()
493
494
  expect(warning?.warnTask).toBe(true)
@@ -591,6 +592,50 @@ describe('verdict dashboard helpers', () => {
591
592
  expect(res.phaseText).toBe('两项对比')
592
593
  })
593
594
 
595
+ it('renders the track checkpoint progression', () => {
596
+ const verdict: VerdictSummary = {
597
+ phase: 'track',
598
+ outcome: 'below-threshold',
599
+ score: 0.7894736842105262,
600
+ scores: [0, 0.10526315789473684, 0.7894736842105262],
601
+ threshold: 0.8,
602
+ }
603
+ expect(formatVerdictDetails(verdict, zh).checkpointsText).toBe('检查点 0.0% → 10.5% → 78.9%')
604
+ expect(formatVerdictDetails(verdict, en).checkpointsText).toBe('Checkpoints 0.0% → 10.5% → 78.9%')
605
+ })
606
+
607
+ it('localizes the compared outcome and omits a threshold a comparison never had', () => {
608
+ const verdict: VerdictSummary = { phase: 'compare', outcome: 'compared', score: 0.9, scoreB: 0.2, winner: 'B' }
609
+ const zhRes = formatVerdictDetails(verdict, zh)
610
+ expect(zhRes.outcomeText).toBe('已比较')
611
+ expect(zhRes.scoreText).toBe('得分 90.0%')
612
+ expect(zhRes.winnerText).toBe('胜方 B')
613
+ expect(zhRes.isFailed).toBe(false)
614
+ expect(formatVerdictDetails(verdict, en).outcomeText).toBe('Compared')
615
+ // A record written by an older build still renders.
616
+ expect(formatVerdictDetails({ phase: 'compare', outcome: 'below-threshold', score: 0.2, threshold: 0.65 }, zh).isFailed).toBe(true)
617
+ })
618
+
619
+ it('renders the per-criterion breakdown of a session acceptance', () => {
620
+ const verdict: VerdictSummary = {
621
+ phase: 'final',
622
+ outcome: 'below-threshold',
623
+ score: 0.6667,
624
+ baselineScore: 0,
625
+ criteria: [{ id: 'specification', score: 1 }, { id: 'error_signals', score: 0 }],
626
+ winner: 'A',
627
+ threshold: 0.65,
628
+ }
629
+ expect(formatVerdictDetails(verdict, zh).criteriaText).toBe('标准 specification 100.0% · error_signals 0.0%')
630
+ expect(formatVerdictDetails(verdict, en).criteriaText).toBe('Criteria specification 100.0% · error_signals 0.0%')
631
+ expect(formatVerdictDetails({ outcome: 'passed', score: 1 }, zh).criteriaText).toBeUndefined()
632
+ })
633
+
634
+ it('omits the progression for a single checkpoint', () => {
635
+ expect(formatVerdictDetails({ outcome: 'below-threshold', score: 0, scores: [0] }, zh).checkpointsText).toBeUndefined()
636
+ expect(formatVerdictDetails({ outcome: 'below-threshold', score: 0 }, zh).checkpointsText).toBeUndefined()
637
+ })
638
+
594
639
  it('formats tie winner localized in zh and en', () => {
595
640
  const verdict: VerdictSummary = {
596
641
  outcome: 'tie',
package/src/client.tsx CHANGED
@@ -502,6 +502,8 @@ export function StatisticsPage({ sessionId, rpc, isGlobal }: StatisticsPageProps
502
502
  {verdictInfo.outcomeText && <span style={{ padding: '1px 5px', borderRadius: 4, fontWeight: 500, fontSize: 11, background: verdictInfo.isFailed ? 'rgba(231,101,101,.16)' : item.verdict.outcome === 'tie' ? 'rgba(227,189,99,.16)' : 'rgba(89,201,133,.16)', color: verdictInfo.isFailed ? '#e76565' : item.verdict.outcome === 'tie' ? '#e3bd63' : '#77d49b', border: `1px solid ${verdictInfo.isFailed ? 'rgba(231,101,101,.3)' : item.verdict.outcome === 'tie' ? 'rgba(227,189,99,.3)' : 'rgba(89,201,133,.3)'}` }}>{verdictInfo.outcomeText}</span>}
503
503
  {verdictInfo.phaseText && <span style={{ padding: '1px 5px', borderRadius: 4, background: 'var(--dsw-surface-sunken)', color: 'var(--dsw-text-secondary)', border: '1px solid var(--dsw-alias-border-l2, rgba(255,255,255,.1))' }}>{verdictInfo.phaseText}</span>}
504
504
  {verdictInfo.scoreText && <span style={{ color: (typeof item.verdict.threshold === 'number' && typeof item.verdict.score === 'number' && item.verdict.score < item.verdict.threshold) ? '#e76565' : 'var(--dsw-text-primary)' }}>{verdictInfo.scoreText}</span>}
505
+ {verdictInfo.checkpointsText && <span style={{ color: 'var(--dsw-text-secondary)' }}>{verdictInfo.checkpointsText}</span>}
506
+ {verdictInfo.criteriaText && <span style={{ color: 'var(--dsw-text-secondary)' }}>{verdictInfo.criteriaText}</span>}
505
507
  {verdictInfo.winnerText && <span style={{ color: 'var(--dsw-text-secondary)' }}>{verdictInfo.winnerText}</span>}
506
508
  </div>}
507
509
  </div>
@@ -411,8 +411,9 @@ describe('config - temperature', () => {
411
411
  describe('config - automatic verification repeats and budget', () => {
412
412
  it('scores routing once and the final acceptance twice by default', () => {
413
413
  const resolved = resolveConfig({})
414
- // Routing stays a cheap single round; the gate that decides turn completion runs
415
- // two rounds so the second one swaps A/B positions and cancels position bias.
414
+ // Routing stays a cheap single round in the config; only compare is rounded up to an
415
+ // even count at run time (it judges a single pair, so an odd count would leave the
416
+ // A/B order uncorrected). select and track keep the configured round.
416
417
  expect(resolved.autoVerifyRepeats).toBe(1)
417
418
  expect(resolved.autoVerifyFinalRepeats).toBe(2)
418
419
  })
@@ -427,7 +428,9 @@ describe('config - automatic verification repeats and budget', () => {
427
428
  })
428
429
 
429
430
  it('leaves headroom in the task model-call budget for the final acceptance', () => {
430
- // 54 calls for an eight-candidate tournament + 6 for the final acceptance per judge.
431
+ // 54 calls for an eight-candidate tournament (one round; the engine orients each
432
+ // pair instead of doubling the rounds) + 6 for the final acceptance per judge.
431
433
  expect(resolveConfig({}).autoMaxModelCallsPerTask).toBe(96)
434
+ expect(resolveConfig({}).autoMaxModelCallsPerSession).toBe(240)
432
435
  })
433
436
  })