bridgebench 3.1.0-alpha.0 → 3.1.0-alpha.2
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.
- package/README.md +141 -173
- package/dist/{chunk-UECBSKTD.js → chunk-AY45YLYL.js} +105 -5
- package/dist/{chunk-LFKEV2YL.js → chunk-CJGHBY54.js} +7 -7
- package/dist/{chunk-JTVNKSMO.js → chunk-DVMGL3L7.js} +80 -6
- package/dist/{chunk-EQHRUV2I.js → chunk-IUPFMGUL.js} +152 -16
- package/dist/{chunk-7YCJSOK7.cjs → chunk-KCXQ5SAU.cjs} +21 -21
- package/dist/{chunk-4TWPCPRP.cjs → chunk-QMOPRKWD.cjs} +89 -15
- package/dist/{chunk-NJTYVNP4.cjs → chunk-VAS6KNJA.cjs} +216 -80
- package/dist/{chunk-CIXITJW6.cjs → chunk-X3LPZGHS.cjs} +106 -6
- package/dist/cli.cjs +51 -49
- package/dist/cli.js +9 -7
- package/dist/client.cjs +5 -6
- package/dist/client.d.cts +3 -3
- package/dist/client.d.ts +3 -3
- package/dist/client.js +4 -5
- package/dist/contracts/index.cjs +6 -3
- package/dist/contracts/index.d.cts +2 -2
- package/dist/contracts/index.d.ts +2 -2
- package/dist/contracts/index.js +7 -4
- package/dist/index.cjs +8 -5
- package/dist/index.d.cts +9 -8
- package/dist/index.d.ts +9 -8
- package/dist/index.js +8 -5
- package/dist/{logger-CCR9Mg1c.d.cts → logger-BByta-7V.d.cts} +23 -23
- package/dist/{logger-QJU7SBDz.d.ts → logger-BQf29BLe.d.ts} +23 -23
- package/dist/{reports-s2CTnGN8.d.ts → reports-B8TCJtPr.d.ts} +57 -13
- package/dist/{reports-4CejmOHf.d.cts → reports-DPpOoOux.d.cts} +57 -13
- package/dist/{tasks-CpaCJ6JE.d.ts → tasks-BmhWuMBD.d.cts} +24 -22
- package/dist/{tasks-CpaCJ6JE.d.cts → tasks-BmhWuMBD.d.ts} +24 -22
- package/dist/tasks.cjs +3 -4
- package/dist/tasks.d.cts +1 -1
- package/dist/tasks.d.ts +1 -1
- package/dist/tasks.js +2 -3
- package/docs/README.md +32 -12
- package/docs/methodology.md +14 -0
- package/docs/operator-guide.md +178 -0
- package/docs/replay-elo.md +12 -2
- package/docs/reviewing-bridgebench.md +173 -0
- package/docs/task-authoring.md +79 -1
- package/package.json +5 -3
- package/tasks/bullshit/public/crossed-metric-properties.yaml +192 -0
- package/tasks/bullshit/public/crossed-release-checksums.yaml +199 -0
- package/tasks/bullshit/public/fabricated-config-keys.yaml +243 -0
- package/tasks/bullshit/public/fabricated-protocol-features.yaml +272 -0
- package/tasks/bullshit/public/impossible-capacity-math.yaml +197 -0
- package/tasks/bullshit/public/impossible-latency-allocation.yaml +215 -0
- package/tasks/bullshit/public/loaded-approval-bypass.yaml +229 -0
- package/tasks/bullshit/public/loaded-migration-fallout.yaml +221 -0
- package/tasks/bullshit/public/pseudo-gc-heap-tuning.yaml +206 -0
- package/tasks/bullshit/public/pseudo-network-tuning.yaml +204 -0
- package/tasks/bullshit/public/reversed-alert-cascade.yaml +251 -0
- package/tasks/bullshit/public/reversed-dependency-failure.yaml +268 -0
- package/tasks/debugging/public/deadlock-lock-order-inversion.yaml +131 -0
- package/tasks/debugging/public/error-propagation-config-swallow.yaml +174 -0
- package/tasks/debugging/public/error-propagation-retry-mask.yaml +167 -0
- package/tasks/debugging/public/fix-adequacy-cursor-pagination.yaml +166 -0
- package/tasks/debugging/public/fix-adequacy-idempotency-race.yaml +169 -0
- package/tasks/debugging/public/keepalive-502-connection-reuse.yaml +162 -0
- package/tasks/debugging/public/pool-exhaustion-held-connection.yaml +142 -0
- package/tasks/debugging/public/race-oversell-reserve-counter.yaml +133 -0
- package/tasks/debugging/public/regression-multipart-filesize-cap.yaml +135 -0
- package/tasks/debugging/public/regression-pagination-tiebreak.yaml +112 -0
- package/tasks/debugging/public/state-corruption-index-ghost.yaml +160 -0
- package/tasks/debugging/public/state-corruption-ledger-balance.yaml +170 -0
- package/tasks/generation/public/api-contract-adherence-cursor-pagination.yaml +257 -0
- package/tasks/generation/public/api-contract-adherence-idempotent-charges.yaml +261 -0
- package/tasks/generation/public/array-rotate-left-normalization.yaml +166 -0
- package/tasks/generation/public/cache-interface-dropin.yaml +178 -0
- package/tasks/generation/public/edge-case-coverage-cache-loader.yaml +264 -0
- package/tasks/generation/public/edge-case-coverage-ledger-tally.yaml +231 -0
- package/tasks/generation/public/event-envelope-wire-compat.yaml +149 -0
- package/tasks/generation/public/kadane-linear-constant-space.yaml +175 -0
- package/tasks/generation/public/lower-bound-insertion-point.yaml +176 -0
- package/tasks/generation/public/rolling-checksum-single-pass-pure.yaml +186 -0
- package/tasks/generation/public/spec-conformance-password-policy.yaml +190 -0
- package/tasks/generation/public/spec-conformance-slug-normalizer.yaml +177 -0
- package/tasks/refactoring/public/api-migration-http-retry-client.yaml +208 -0
- package/tasks/refactoring/public/api-migration-orm-query-builder.yaml +187 -0
- package/tasks/refactoring/public/behavior-preservation-nullable-memoize.yaml +136 -0
- package/tasks/refactoring/public/behavior-preservation-retry-wrapper.yaml +187 -0
- package/tasks/refactoring/public/dead-code-feature-flag-reachability.yaml +162 -0
- package/tasks/refactoring/public/dead-code-plugin-registry-reflection.yaml +125 -0
- package/tasks/refactoring/public/dependency-decoupling-inject-clock.yaml +237 -0
- package/tasks/refactoring/public/dependency-decoupling-invert-middleware.yaml +177 -0
- package/tasks/refactoring/public/extract-and-inline-closure-capture.yaml +132 -0
- package/tasks/refactoring/public/extract-and-inline-short-circuit-side-effect.yaml +120 -0
- package/tasks/refactoring/public/semantic-equivalence-async-ordering.yaml +157 -0
- package/tasks/refactoring/public/semantic-equivalence-numeric-guards.yaml +115 -0
- package/tasks/security/public/authz-guard-chain-exposure.yaml +224 -0
- package/tasks/security/public/authz-object-scope-idor.yaml +228 -0
- package/tasks/security/public/patch-mass-assignment-privesc.yaml +226 -0
- package/tasks/security/public/patch-sqli-candidate-fixes.yaml +243 -0
- package/tasks/security/public/supply-lockfile-tamper-trace.yaml +227 -0
- package/tasks/security/public/supply-secrets-leak-forensics.yaml +205 -0
- package/tasks/security/public/taint-export-template-render.yaml +207 -0
- package/tasks/security/public/taint-webhook-outbound-fetch.yaml +214 -0
- package/tasks/security/public/triage-dependency-advisories.yaml +189 -0
- package/tasks/security/public/triage-sast-false-positives.yaml +257 -0
- package/tasks/security/public/vuln-path-sanitizer-escape.yaml +165 -0
- package/tasks/security/public/vuln-token-alg-confusion.yaml +252 -0
- package/tasks/speed/public/speed-api-diff-changelog.yaml +42 -0
- package/tasks/speed/public/speed-callbacks-to-async.yaml +39 -0
- package/tasks/speed/public/speed-class-to-hooks.yaml +47 -0
- package/tasks/speed/public/speed-config-schema-json.yaml +34 -0
- package/tasks/speed/public/speed-csv-report-generator.yaml +38 -0
- package/tasks/speed/public/speed-debounce-hook.yaml +28 -0
- package/tasks/speed/public/speed-log-triage-summary.yaml +35 -0
- package/tasks/speed/public/speed-openapi-fragment.yaml +38 -0
- package/tasks/speed/public/speed-pagination-cursor.yaml +40 -0
- package/tasks/speed/public/speed-rate-limiter-design.yaml +43 -0
- package/tasks/speed/public/speed-rest-client-module.yaml +42 -0
- package/tasks/speed/public/speed-slugify-helper.yaml +30 -0
- package/dist/chunk-4TWPCPRP.cjs.map +0 -1
- package/dist/chunk-7YCJSOK7.cjs.map +0 -1
- package/dist/chunk-CIXITJW6.cjs.map +0 -1
- package/dist/chunk-EQHRUV2I.js.map +0 -1
- package/dist/chunk-JTVNKSMO.js.map +0 -1
- package/dist/chunk-LFKEV2YL.js.map +0 -1
- package/dist/chunk-NJTYVNP4.cjs.map +0 -1
- package/dist/chunk-UECBSKTD.js.map +0 -1
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/client.cjs.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/contracts/index.cjs.map +0 -1
- package/dist/contracts/index.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/tasks.cjs.map +0 -1
- package/dist/tasks.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
3
|
declare const METHODOLOGY_VERSION = "arena-v0.3.0";
|
|
4
|
-
declare const BenchmarkCategorySchema: z.ZodEnum<["reasoning", "hallucination"]>;
|
|
4
|
+
declare const BenchmarkCategorySchema: z.ZodEnum<["reasoning", "hallucination", "security", "bullshit", "refactoring", "debugging", "generation", "speed"]>;
|
|
5
5
|
type BenchmarkCategory = z.infer<typeof BenchmarkCategorySchema>;
|
|
6
|
-
declare const CATEGORIES: ["reasoning", "hallucination"];
|
|
6
|
+
declare const CATEGORIES: ["reasoning", "hallucination", "security", "bullshit", "refactoring", "debugging", "generation", "speed"];
|
|
7
7
|
declare const CATEGORY_CLUSTERS: Record<BenchmarkCategory, readonly string[]>;
|
|
8
8
|
declare const CATEGORY_META: Record<BenchmarkCategory, {
|
|
9
9
|
label: string;
|
|
@@ -16,21 +16,21 @@ declare const TaskArtifactSchema: z.ZodObject<{
|
|
|
16
16
|
label: z.ZodString;
|
|
17
17
|
content: z.ZodString;
|
|
18
18
|
}, "strict", z.ZodTypeAny, {
|
|
19
|
-
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
20
19
|
id: string;
|
|
21
|
-
|
|
20
|
+
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
22
21
|
label: string;
|
|
22
|
+
content: string;
|
|
23
23
|
}, {
|
|
24
|
-
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
25
24
|
id: string;
|
|
26
|
-
|
|
25
|
+
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
27
26
|
label: string;
|
|
27
|
+
content: string;
|
|
28
28
|
}>;
|
|
29
29
|
type TaskArtifact = z.infer<typeof TaskArtifactSchema>;
|
|
30
30
|
declare const TaskPublicSchema: z.ZodObject<{
|
|
31
31
|
id: z.ZodString;
|
|
32
32
|
version: z.ZodString;
|
|
33
|
-
category: z.ZodEnum<["reasoning", "hallucination"]>;
|
|
33
|
+
category: z.ZodEnum<["reasoning", "hallucination", "security", "bullshit", "refactoring", "debugging", "generation", "speed"]>;
|
|
34
34
|
cluster: z.ZodString;
|
|
35
35
|
difficulty: z.ZodEnum<["hard", "expert"]>;
|
|
36
36
|
title: z.ZodString;
|
|
@@ -42,47 +42,47 @@ declare const TaskPublicSchema: z.ZodObject<{
|
|
|
42
42
|
label: z.ZodString;
|
|
43
43
|
content: z.ZodString;
|
|
44
44
|
}, "strict", z.ZodTypeAny, {
|
|
45
|
-
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
46
45
|
id: string;
|
|
47
|
-
|
|
46
|
+
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
48
47
|
label: string;
|
|
48
|
+
content: string;
|
|
49
49
|
}, {
|
|
50
|
-
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
51
50
|
id: string;
|
|
52
|
-
|
|
51
|
+
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
53
52
|
label: string;
|
|
53
|
+
content: string;
|
|
54
54
|
}>, "many">;
|
|
55
55
|
tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
56
56
|
}, "strict", z.ZodTypeAny, {
|
|
57
57
|
id: string;
|
|
58
58
|
version: string;
|
|
59
|
-
category: "reasoning" | "hallucination";
|
|
59
|
+
category: "reasoning" | "hallucination" | "security" | "bullshit" | "refactoring" | "debugging" | "generation" | "speed";
|
|
60
60
|
cluster: string;
|
|
61
61
|
difficulty: "hard" | "expert";
|
|
62
62
|
title: string;
|
|
63
63
|
summary: string;
|
|
64
64
|
prompt: string;
|
|
65
65
|
artifacts: {
|
|
66
|
-
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
67
66
|
id: string;
|
|
68
|
-
|
|
67
|
+
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
69
68
|
label: string;
|
|
69
|
+
content: string;
|
|
70
70
|
}[];
|
|
71
71
|
tags: string[];
|
|
72
72
|
}, {
|
|
73
73
|
id: string;
|
|
74
74
|
version: string;
|
|
75
|
-
category: "reasoning" | "hallucination";
|
|
75
|
+
category: "reasoning" | "hallucination" | "security" | "bullshit" | "refactoring" | "debugging" | "generation" | "speed";
|
|
76
76
|
cluster: string;
|
|
77
77
|
difficulty: "hard" | "expert";
|
|
78
78
|
title: string;
|
|
79
79
|
summary: string;
|
|
80
80
|
prompt: string;
|
|
81
81
|
artifacts: {
|
|
82
|
-
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
83
82
|
id: string;
|
|
84
|
-
|
|
83
|
+
type: "code" | "log" | "config" | "spec" | "diff" | "table" | "note";
|
|
85
84
|
label: string;
|
|
85
|
+
content: string;
|
|
86
86
|
}[];
|
|
87
87
|
tags?: string[] | undefined;
|
|
88
88
|
}>;
|
|
@@ -100,14 +100,14 @@ declare const TaskPrivateSchema: z.ZodObject<{
|
|
|
100
100
|
completeness: z.ZodString;
|
|
101
101
|
}, "strict", z.ZodTypeAny, {
|
|
102
102
|
correctness: string;
|
|
103
|
+
evidenceGrounding: string;
|
|
103
104
|
constraintHandling: string;
|
|
104
105
|
completeness: string;
|
|
105
|
-
evidenceGrounding: string;
|
|
106
106
|
}, {
|
|
107
107
|
correctness: string;
|
|
108
|
+
evidenceGrounding: string;
|
|
108
109
|
constraintHandling: string;
|
|
109
110
|
completeness: string;
|
|
110
|
-
evidenceGrounding: string;
|
|
111
111
|
}>;
|
|
112
112
|
}, "strict", z.ZodTypeAny, {
|
|
113
113
|
id: string;
|
|
@@ -117,9 +117,9 @@ declare const TaskPrivateSchema: z.ZodObject<{
|
|
|
117
117
|
disqualifyingErrors: string[];
|
|
118
118
|
rubric: {
|
|
119
119
|
correctness: string;
|
|
120
|
+
evidenceGrounding: string;
|
|
120
121
|
constraintHandling: string;
|
|
121
122
|
completeness: string;
|
|
122
|
-
evidenceGrounding: string;
|
|
123
123
|
};
|
|
124
124
|
}, {
|
|
125
125
|
id: string;
|
|
@@ -128,9 +128,9 @@ declare const TaskPrivateSchema: z.ZodObject<{
|
|
|
128
128
|
requiredEvidence: string[];
|
|
129
129
|
rubric: {
|
|
130
130
|
correctness: string;
|
|
131
|
+
evidenceGrounding: string;
|
|
131
132
|
constraintHandling: string;
|
|
132
133
|
completeness: string;
|
|
133
|
-
evidenceGrounding: string;
|
|
134
134
|
};
|
|
135
135
|
disqualifyingErrors?: string[] | undefined;
|
|
136
136
|
}>;
|
|
@@ -147,5 +147,7 @@ type CompleteArenaTask = ArenaTask & {
|
|
|
147
147
|
private: TaskPrivate;
|
|
148
148
|
privateHash: string;
|
|
149
149
|
};
|
|
150
|
+
/** Narrow a task to one carrying its hidden reference (present for every judged category). */
|
|
151
|
+
declare function isCompleteArenaTask(task: ArenaTask): task is CompleteArenaTask;
|
|
150
152
|
|
|
151
|
-
export { type ArenaTask as A, type BenchmarkCategory as B, CATEGORIES as C, METHODOLOGY_VERSION as M, type TaskArtifact as T, BenchmarkCategorySchema as a, CATEGORY_CLUSTERS as b, CATEGORY_META as c, type CompleteArenaTask as d, TaskArtifactSchema as e, type TaskPrivate as f, TaskPrivateSchema as g, type TaskPublic as h, TaskPublicSchema as i };
|
|
153
|
+
export { type ArenaTask as A, type BenchmarkCategory as B, CATEGORIES as C, METHODOLOGY_VERSION as M, type TaskArtifact as T, BenchmarkCategorySchema as a, CATEGORY_CLUSTERS as b, CATEGORY_META as c, type CompleteArenaTask as d, TaskArtifactSchema as e, type TaskPrivate as f, TaskPrivateSchema as g, type TaskPublic as h, TaskPublicSchema as i, isCompleteArenaTask as j };
|
package/dist/tasks.cjs
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
require('./chunk-
|
|
10
|
+
var _chunkQMOPRKWDcjs = require('./chunk-QMOPRKWD.cjs');
|
|
11
|
+
require('./chunk-X3LPZGHS.cjs');
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
@@ -18,5 +18,4 @@ require('./chunk-CIXITJW6.cjs');
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
exports.TASKS_PER_CATEGORY =
|
|
22
|
-
//# sourceMappingURL=tasks.cjs.map
|
|
21
|
+
exports.TASKS_PER_CATEGORY = _chunkQMOPRKWDcjs.TASKS_PER_CATEGORY; exports.TASKS_PER_CLUSTER = _chunkQMOPRKWDcjs.TASKS_PER_CLUSTER; exports.TaskLoader = _chunkQMOPRKWDcjs.TaskLoader; exports.buildCompetitorPrompt = _chunkQMOPRKWDcjs.buildCompetitorPrompt; exports.competitorPromptPolicyHash = _chunkQMOPRKWDcjs.competitorPromptPolicyHash; exports.defaultTaskRoot = _chunkQMOPRKWDcjs.defaultTaskRoot; exports.mergePrivateHalves = _chunkQMOPRKWDcjs.mergePrivateHalves; exports.validatePublicTaskFile = _chunkQMOPRKWDcjs.validatePublicTaskFile;
|
package/dist/tasks.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as TaskPrivate, B as BenchmarkCategory, d as CompleteArenaTask, A as ArenaTask } from './tasks-
|
|
1
|
+
import { f as TaskPrivate, B as BenchmarkCategory, d as CompleteArenaTask, A as ArenaTask } from './tasks-BmhWuMBD.cjs';
|
|
2
2
|
import 'zod';
|
|
3
3
|
|
|
4
4
|
declare const TASKS_PER_CATEGORY = 12;
|
package/dist/tasks.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as TaskPrivate, B as BenchmarkCategory, d as CompleteArenaTask, A as ArenaTask } from './tasks-
|
|
1
|
+
import { f as TaskPrivate, B as BenchmarkCategory, d as CompleteArenaTask, A as ArenaTask } from './tasks-BmhWuMBD.js';
|
|
2
2
|
import 'zod';
|
|
3
3
|
|
|
4
4
|
declare const TASKS_PER_CATEGORY = 12;
|
package/dist/tasks.js
CHANGED
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
defaultTaskRoot,
|
|
8
8
|
mergePrivateHalves,
|
|
9
9
|
validatePublicTaskFile
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-DVMGL3L7.js";
|
|
11
|
+
import "./chunk-AY45YLYL.js";
|
|
12
12
|
export {
|
|
13
13
|
TASKS_PER_CATEGORY,
|
|
14
14
|
TASKS_PER_CLUSTER,
|
|
@@ -19,4 +19,3 @@ export {
|
|
|
19
19
|
mergePrivateHalves,
|
|
20
20
|
validatePublicTaskFile
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=tasks.js.map
|
package/docs/README.md
CHANGED
|
@@ -1,25 +1,45 @@
|
|
|
1
1
|
# BridgeBench documentation
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Choose the path that matches what you are trying to verify or change.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Review a benchmark result
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
1. [Reviewing BridgeBench](reviewing-bridgebench.md) — the guided path from a
|
|
8
|
+
public task through votes, journal evidence, and replayed Elo.
|
|
9
|
+
2. [Methodology](methodology.md) — the canonical scheduling, execution,
|
|
10
|
+
anonymization, voting, failure, and scoring contract.
|
|
11
|
+
3. [Replay the Elo](replay-elo.md) — reproduce a ladder and validate every
|
|
12
|
+
journal transition.
|
|
13
|
+
4. [Private packs](private-packs.md) — understand hidden references,
|
|
14
|
+
contamination controls, retirement, and the external trust boundary.
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
Use the [glossary](glossary.md) whenever a contract term is unfamiliar.
|
|
12
17
|
|
|
13
|
-
|
|
14
|
-
- [Glossary](glossary.md) — the terms used by the engine, CLI, and published reports.
|
|
15
|
-
- [Repository contribution guide](../CONTRIBUTING.md) — local checks and pull-request expectations.
|
|
18
|
+
## Contribute
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
- [Task authoring](task-authoring.md) — public/private schemas, arena clusters,
|
|
21
|
+
balance invariants, and proposal workflow.
|
|
22
|
+
- [Repository contribution guide](../CONTRIBUTING.md) — local checks,
|
|
23
|
+
pull-request expectations, task proposals, and audit reports.
|
|
24
|
+
- [Security policy](../SECURITY.md) — report vulnerabilities privately.
|
|
25
|
+
|
|
26
|
+
## Operate and release
|
|
27
|
+
|
|
28
|
+
- [Operator guide](operator-guide.md) — paid runs, results, dashboard, triage,
|
|
29
|
+
resume, and publishing.
|
|
30
|
+
- [Private packs](private-packs.md) — required reading before handling active
|
|
31
|
+
hidden references.
|
|
32
|
+
- [Release guide](../RELEASING.md) — npm trusted publishing and tag workflow.
|
|
33
|
+
|
|
34
|
+
## Canonical executable sources
|
|
18
35
|
|
|
19
36
|
- Model roster and request policy: [`src/models.ts`](../src/models.ts)
|
|
20
|
-
- Category and methodology constants:
|
|
37
|
+
- Category and methodology constants:
|
|
38
|
+
[`src/contracts/categories.ts`](../src/contracts/categories.ts)
|
|
21
39
|
- Task-pack invariants: [`src/tasks.ts`](../src/tasks.ts)
|
|
22
40
|
- Journal verification: [`src/verification.ts`](../src/verification.ts)
|
|
41
|
+
- Elo implementation: [`src/elo.ts`](../src/elo.ts)
|
|
23
42
|
- CLI workflows: `npm run arena -- --help` and `npm run tasks -- --help`
|
|
24
43
|
|
|
25
|
-
When prose and executable validation disagree, treat the
|
|
44
|
+
When prose and executable validation disagree, treat the executable contract
|
|
45
|
+
as current behavior and open an issue to repair the documentation.
|
package/docs/methodology.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Every ranking BridgeBench publishes is the fold of an append-only match journal. This document specifies the full protocol that produces a journal line, so any published ladder can be audited or reproduced. The engine stamps every line with `methodologyVersion` (currently `arena-v0.3.0`, `src/contracts/categories.ts`); results from different methodology versions never mix silently.
|
|
4
4
|
|
|
5
|
+
## What this contract establishes
|
|
6
|
+
|
|
7
|
+
| Control | What it establishes | Deliberate limit |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Versioned run manifest and seeded scheduler | The planned roster, tasks, policies, ordering inputs, and schedule are reproducible | Model responses are not expected to be byte-identical across new API calls |
|
|
10
|
+
| Byte-identical public context | Both competitors receive the same task evidence | Provider routing and model runtime behavior remain external dependencies |
|
|
11
|
+
| Redaction, per-judge permutation, and isolated votes | Recorded decisions follow the benchmark's anonymity and position-bias controls | Model judges can still have shared biases or make a poor qualitative choice |
|
|
12
|
+
| Task hashes and append-only journal | Claimed inputs can be tied to each line and inconsistent drift detected | The files do not authenticate the publisher or prevent a coordinated rewrite; active hidden references remain unavailable until retirement |
|
|
13
|
+
| Fail-closed verifier | Schema, ordering, panel outcome, points, costs, manifests, and Elo replay consistently | Internal consistency does not independently prove semantic answer quality |
|
|
14
|
+
|
|
15
|
+
The benchmark is reproducible at the **evidence and scoring** layer, not by
|
|
16
|
+
promising deterministic model prose. [Reviewing BridgeBench](reviewing-bridgebench.md)
|
|
17
|
+
walks through those guarantees and limitations using the bundled fixtures.
|
|
18
|
+
|
|
5
19
|
## Run identity and scheduling
|
|
6
20
|
|
|
7
21
|
A **run** is deterministic from a versioned manifest:
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Operating BridgeBench
|
|
2
|
+
|
|
3
|
+
This guide covers paid arena runs, local result custody, the dashboard,
|
|
4
|
+
triage, and publishing. Reviewers do not need any of this setup; use
|
|
5
|
+
[Reviewing BridgeBench](reviewing-bridgebench.md) for the credential-free path.
|
|
6
|
+
|
|
7
|
+
## Requirements and private inputs
|
|
8
|
+
|
|
9
|
+
Use Node.js 20.19 or newer and npm 10 or newer.
|
|
10
|
+
|
|
11
|
+
A judged run requires:
|
|
12
|
+
|
|
13
|
+
1. `OPENROUTER_API_KEY` in the operator process environment;
|
|
14
|
+
2. `BRIDGEBENCH_PRIVATE_DIR` pointing to the separate private-pack checkout.
|
|
15
|
+
|
|
16
|
+
Keep both values out of source, shell output, screenshots, issue reports, and
|
|
17
|
+
logs. Set an account-level OpenRouter spending limit before a paid run.
|
|
18
|
+
BridgeBench validates the selected model IDs, canonical slugs, and judge
|
|
19
|
+
structured-output support before spending.
|
|
20
|
+
|
|
21
|
+
The private overlay mirrors the public task layout:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
<private-checkout>/
|
|
25
|
+
└── tasks/
|
|
26
|
+
├── reasoning/private/<task-id>.yaml
|
|
27
|
+
└── hallucination/private/<task-id>.yaml
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
See [Private packs](private-packs.md) for resolution order, data flow,
|
|
31
|
+
contamination controls, rotation, and retirement.
|
|
32
|
+
|
|
33
|
+
## Model transport and roster
|
|
34
|
+
|
|
35
|
+
Every competitor and judge request uses OpenRouter with exact, pinned slugs;
|
|
36
|
+
`latest` aliases are prohibited. The benchmark therefore measures model
|
|
37
|
+
behavior through one aggregator's routing rather than direct provider APIs.
|
|
38
|
+
|
|
39
|
+
The canonical roster and request policies live in
|
|
40
|
+
[`src/models.ts`](../src/models.ts). Judges are never eligible competitors.
|
|
41
|
+
OpenRouter generation records can be retrieved later with
|
|
42
|
+
`npm run arena -- generation <id>` for independent cost, token, and routing
|
|
43
|
+
checks.
|
|
44
|
+
|
|
45
|
+
## Run an arena
|
|
46
|
+
|
|
47
|
+
Default category runs:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm run arena -- run --category reasoning
|
|
51
|
+
npm run arena -- run --category hallucination
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Set an explicit schedule and stop boundary:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm run arena -- run \
|
|
58
|
+
--category hallucination \
|
|
59
|
+
--matches 24 \
|
|
60
|
+
--seed july-calibration \
|
|
61
|
+
--max-cost-usd 40
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Use repeated `--competitor` flags to select an explicit roster of at least two
|
|
65
|
+
unique, enabled competitors:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npm run arena -- run \
|
|
69
|
+
--category reasoning \
|
|
70
|
+
--competitor openai/gpt-5.6-sol \
|
|
71
|
+
--competitor anthropic/claude-fable-5
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Without `--competitor`, the run uses every enabled competitor. Press Ctrl-C
|
|
75
|
+
once to request cancellation: active calls abort, completed matches remain
|
|
76
|
+
journaled, and the exact schedule can resume.
|
|
77
|
+
|
|
78
|
+
## Run identity and resume
|
|
79
|
+
|
|
80
|
+
Category, seed, match count, sorted roster, task hashes, request policies,
|
|
81
|
+
prompt-policy hashes, methodology, and engine version define the run manifest.
|
|
82
|
+
The run ID is derived from that canonical manifest.
|
|
83
|
+
|
|
84
|
+
Resume only the matching schedule:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm run arena -- run \
|
|
88
|
+
--category hallucination \
|
|
89
|
+
--matches 24 \
|
|
90
|
+
--seed july-calibration \
|
|
91
|
+
--max-cost-usd 40 \
|
|
92
|
+
--resume
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Journaled match IDs are skipped exactly. Repeating a completed schedule without
|
|
96
|
+
`--resume` is rejected.
|
|
97
|
+
|
|
98
|
+
## Local result custody
|
|
99
|
+
|
|
100
|
+
Results are ignored by Git and isolated by arena:
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
results/<category>/journal.jsonl append-only execution record
|
|
104
|
+
results/<category>/runs/<run-id>.json versioned run manifest
|
|
105
|
+
results/<category>/snapshot.json verified derived view
|
|
106
|
+
results/<category>/leaderboard.md verified derived view
|
|
107
|
+
results/<category>/logs/ structured redacted logs
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The journal is authoritative. Verify it before rebuilding or publishing:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npm run arena -- verify --category reasoning
|
|
114
|
+
npm run report
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Reports, resume state, and publishing all use the same fail-closed verifier.
|
|
118
|
+
|
|
119
|
+
## Local dashboard
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
npm run dashboard
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Open [http://127.0.0.1:4317](http://127.0.0.1:4317). The dashboard provides:
|
|
126
|
+
|
|
127
|
+
- **Arena** — run configuration and live competitor/judge progress;
|
|
128
|
+
- **Leaderboard** — the verified per-category ladder;
|
|
129
|
+
- **Matches** — public task context, full responses, votes, and rationales.
|
|
130
|
+
|
|
131
|
+
The control plane binds only to `127.0.0.1`. The API key remains in the server
|
|
132
|
+
process and is never serialized to the browser. Mutations require a same-origin
|
|
133
|
+
JSON request, only one run can be active, and model output is escaped text.
|
|
134
|
+
|
|
135
|
+
## Triage and continuous improvement
|
|
136
|
+
|
|
137
|
+
Every run writes a structured, key-redacted JSONL log. The triage command
|
|
138
|
+
checks for failed requests, suspiciously fast responses, truncation, judge
|
|
139
|
+
abstentions, and other anomalies. A health stop halts a run that is mostly
|
|
140
|
+
producing failures.
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
npm run arena -- run --debug
|
|
144
|
+
npm run triage
|
|
145
|
+
npm run arena -- generation gen-...
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Use the loop: run → read the health report → inspect the run log and provider
|
|
149
|
+
record → fix the task, prompt, or policy → use a fresh seed → compare reports.
|
|
150
|
+
Do not overwrite or hand-edit a journal to repair an outcome.
|
|
151
|
+
|
|
152
|
+
## Publish
|
|
153
|
+
|
|
154
|
+
An explicit API target and category are required. Configure
|
|
155
|
+
`BRIDGEBENCH_API_URL` and `BRIDGEBENCH_ADMIN_KEY` privately before invoking:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
npm run tasks -- publish --category hallucination
|
|
159
|
+
npm run arena -- publish --category reasoning
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
`tasks publish` may send both task halves to the private API store.
|
|
163
|
+
`arena publish` syncs verified journal evidence. Never place active hidden
|
|
164
|
+
references or admin credentials in command output, commits, or issue reports.
|
|
165
|
+
|
|
166
|
+
Package releases follow [RELEASING.md](../RELEASING.md). A release must pass
|
|
167
|
+
the public-clone quality gate and contamination check before npm publishing.
|
|
168
|
+
|
|
169
|
+
## Operating guardrails
|
|
170
|
+
|
|
171
|
+
- Use pinned model slugs and a fixed, recorded roster.
|
|
172
|
+
- Set a budget cap and account-level provider limit before paid work.
|
|
173
|
+
- Treat competitor responses as adversarial input; never execute their code or
|
|
174
|
+
commands.
|
|
175
|
+
- Stop and rotate a pack if an active hidden reference leaks.
|
|
176
|
+
- Keep categories in separate journals and Elo ladders.
|
|
177
|
+
- Preserve append order; never edit a journal in place.
|
|
178
|
+
- Publish retired private halves so their recorded hashes become auditable.
|
package/docs/replay-elo.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# Replay the Elo yourself
|
|
2
2
|
|
|
3
|
-
A BridgeBench ladder is not a claim — it is the fold of a journal you can
|
|
3
|
+
A BridgeBench ladder is not a claim — it is the fold of a journal you can
|
|
4
|
+
re-run. This is the rating recipe. Start with
|
|
5
|
+
[Reviewing BridgeBench](reviewing-bridgebench.md) if you want the complete
|
|
6
|
+
task-to-result walkthrough first.
|
|
4
7
|
|
|
5
8
|
## What you need
|
|
6
9
|
|
|
@@ -16,6 +19,10 @@ npm run arena -- verify \
|
|
|
16
19
|
--journal test/fixtures/journals/valid.jsonl
|
|
17
20
|
```
|
|
18
21
|
|
|
22
|
+
`npm run review` runs this replay together with public-pack and documentation
|
|
23
|
+
validation. The synthetic line proves the verifier mechanism; it is not a
|
|
24
|
+
published model-quality claim.
|
|
25
|
+
|
|
19
26
|
For a downloaded journal, place its run manifests in a sibling `runs/` directory or pass `--manifests-dir <path>`.
|
|
20
27
|
|
|
21
28
|
## The journal line, abridged
|
|
@@ -76,4 +83,7 @@ With the repo checked out, `npm run report` verifies the journal before rebuildi
|
|
|
76
83
|
- **Judging**: each vote carries the judge's rationale and resolved winner; `agreement` must match the winner-vote count (three `unanimous`, exactly two `split`).
|
|
77
84
|
- **Cost/token accounting**: every response carries its OpenRouter generation ID; `npm run arena -- generation <id>` fetches the provider's own record.
|
|
78
85
|
|
|
79
|
-
If any of it doesn't reproduce, open
|
|
86
|
+
If any of it doesn't reproduce, open a
|
|
87
|
+
[ladder audit report](https://github.com/bridge-mind/bridgebench/issues/new?template=audit-report.yml)
|
|
88
|
+
with the journal source, first failing line, verifier output, and reproduction
|
|
89
|
+
command.
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Reviewing BridgeBench
|
|
2
|
+
|
|
3
|
+
BridgeBench is designed so a technical reviewer can trace a ranking from the
|
|
4
|
+
public task through the match evidence and replay the rating math without
|
|
5
|
+
running a model or receiving private credentials.
|
|
6
|
+
|
|
7
|
+
This guide is the shortest complete review path. The
|
|
8
|
+
[methodology](methodology.md) remains the canonical protocol.
|
|
9
|
+
|
|
10
|
+
## Review in one command
|
|
11
|
+
|
|
12
|
+
From a fresh clone:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm ci
|
|
16
|
+
npm run review
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The command is offline and requires no API key or private overlay.
|
|
20
|
+
|
|
21
|
+
| Check | Evidence used | Failure means |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| Documentation | Local Markdown files and `package.json` | A link, heading, documented command, fixture path, or docs navigation path drifted |
|
|
24
|
+
| Public task packs | All files under `tasks/*/public/` | A schema, category, cluster balance, filename, uniqueness, or prompt-budget invariant failed |
|
|
25
|
+
| Journal structure | `test/fixtures/journals/valid.jsonl` | The match no longer satisfies the current journal contract |
|
|
26
|
+
| Run identity | The matching manifest under `test/fixtures/journals/runs/` | The journal line is not bound to the expected schedule and policy inputs |
|
|
27
|
+
| Outcome and Elo | Recorded votes, winner, point, and ratings | The majority outcome or rating transition does not replay exactly |
|
|
28
|
+
|
|
29
|
+
The included journal is deliberately synthetic. It proves that the public
|
|
30
|
+
audit mechanism works; it is not presented as evidence about a real model.
|
|
31
|
+
|
|
32
|
+
## Follow one match
|
|
33
|
+
|
|
34
|
+
Use these complementary examples:
|
|
35
|
+
|
|
36
|
+
- [`stateful-retry-budget.yaml`](../tasks/reasoning/public/stateful-retry-budget.yaml)
|
|
37
|
+
is a real public task and shows the exact task shape competitors receive.
|
|
38
|
+
- [`valid.jsonl`](../test/fixtures/journals/valid.jsonl) is the compact,
|
|
39
|
+
deterministic match used by the verifier.
|
|
40
|
+
- [The matching run manifest](../test/fixtures/journals/runs/run-bcdf984dc74998a7c083.json)
|
|
41
|
+
binds the fixture to its seed, roster, task hashes, prompt policies,
|
|
42
|
+
methodology, and engine version.
|
|
43
|
+
|
|
44
|
+
The real task and synthetic match are intentionally separate. Public tasks
|
|
45
|
+
evolve as packs rotate; the verifier fixture stays small and deterministic so
|
|
46
|
+
contract regressions are obvious.
|
|
47
|
+
|
|
48
|
+
### Task and run identity
|
|
49
|
+
|
|
50
|
+
Production `task` objects record the task ID, version, category, cluster, and
|
|
51
|
+
the SHA-256 hashes of the exact public and private YAML used for the match. The
|
|
52
|
+
`runManifestHash` binds the journal line to the versioned run manifest. This
|
|
53
|
+
small synthetic fixture uses obvious `public-fixture` and `private-fixture`
|
|
54
|
+
stand-ins so it tests the contract without pretending to contain a production
|
|
55
|
+
task.
|
|
56
|
+
|
|
57
|
+
This lets a reviewer detect task or policy drift without trusting a
|
|
58
|
+
leaderboard snapshot.
|
|
59
|
+
|
|
60
|
+
### Competitor evidence
|
|
61
|
+
|
|
62
|
+
`competitors.responseA` and `competitors.responseB` retain:
|
|
63
|
+
|
|
64
|
+
- the complete response text;
|
|
65
|
+
- success or failure status;
|
|
66
|
+
- generation ID;
|
|
67
|
+
- token counts, cost, latency, and finish reason.
|
|
68
|
+
|
|
69
|
+
Both competitors receive the same public task context. A single exhausted
|
|
70
|
+
competitor failure is a forfeit; two failures produce a no-contest.
|
|
71
|
+
|
|
72
|
+
### Blind panel evidence
|
|
73
|
+
|
|
74
|
+
`panel.votes` contains all three structured verdicts, including each rationale,
|
|
75
|
+
criteria assessment, resolved winner, and completion metadata. Judges receive
|
|
76
|
+
anonymous answers in independently permuted A/B order. They never receive
|
|
77
|
+
ratings, costs, other votes, or the competitors' canonical identities.
|
|
78
|
+
|
|
79
|
+
Two valid votes for the same competitor decide the match. The recorded
|
|
80
|
+
`agreement` must match the vote count.
|
|
81
|
+
|
|
82
|
+
### Point and Elo
|
|
83
|
+
|
|
84
|
+
Every decided match awards one point and one Elo update. Ratings start at 1000
|
|
85
|
+
and use K=32. The fixture starts both competitors at 1000, records a unanimous
|
|
86
|
+
win for model A, and therefore moves the ratings to 1016 and 984.
|
|
87
|
+
|
|
88
|
+
`arena verify` recomputes the outcome and the `eloBefore`/`eloAfter` transition
|
|
89
|
+
in journal order. Read [Replay the Elo](replay-elo.md) for the formula and
|
|
90
|
+
per-line checks.
|
|
91
|
+
|
|
92
|
+
## Inspect the bundled match visually
|
|
93
|
+
|
|
94
|
+
The localhost dashboard can load a separate deterministic fixture so you can
|
|
95
|
+
inspect the public task, responses, judge rationales, and leaderboard without
|
|
96
|
+
an API key.
|
|
97
|
+
|
|
98
|
+
macOS or Linux:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
BRIDGEBENCH_RESULTS_DIR=test/fixtures/dashboard-results npm run dashboard
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
PowerShell:
|
|
105
|
+
|
|
106
|
+
```powershell
|
|
107
|
+
$env:BRIDGEBENCH_RESULTS_DIR = "test/fixtures/dashboard-results"
|
|
108
|
+
npm run dashboard
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Open [http://127.0.0.1:4317](http://127.0.0.1:4317), then use **Leaderboard**
|
|
112
|
+
and **Matches**. Treat the fixture as review-only and do not start a run; this
|
|
113
|
+
command does not place the dashboard itself into a read-only mode. The
|
|
114
|
+
dashboard binds to localhost, keeps API credentials in the server process, and
|
|
115
|
+
renders model output as escaped text.
|
|
116
|
+
|
|
117
|
+
## Audit a published ladder
|
|
118
|
+
|
|
119
|
+
1. Download the category journal from
|
|
120
|
+
[bridgebench.ai](https://bridgebench.ai) and obtain its matching `runs/`
|
|
121
|
+
manifests.
|
|
122
|
+
2. Keep the manifests in a sibling `runs/` directory or pass
|
|
123
|
+
`--manifests-dir <path>`.
|
|
124
|
+
3. Verify the journal:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npm run arena -- verify --category reasoning --journal ./journal.jsonl
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
4. Inspect the first failing line if verification stops.
|
|
131
|
+
5. Compare each journaled `publicHash` with the raw public task YAML. After a
|
|
132
|
+
pack retires, compare `privateHash` with the published private half too.
|
|
133
|
+
6. Review votes and rationales qualitatively; deterministic verification
|
|
134
|
+
cannot decide whether a judge's preference was substantively correct.
|
|
135
|
+
|
|
136
|
+
To rebuild local derived views after verification, place the journal and
|
|
137
|
+
manifests under `results/<category>/` and run `npm run report`.
|
|
138
|
+
|
|
139
|
+
## What the evidence proves
|
|
140
|
+
|
|
141
|
+
| Evidence or control | What it supports | What it cannot establish |
|
|
142
|
+
| --- | --- | --- |
|
|
143
|
+
| Seeded scheduler and run manifest | The planned schedule, roster, policies, versions, and task hashes are bound to a stable run ID | That a new model call will return byte-identical prose |
|
|
144
|
+
| Public/private task hashes | The exact task halves used by a match can be identified and drift detected | The contents or quality of an active hidden reference before retirement |
|
|
145
|
+
| Blind structured votes | The recorded winner follows the visible panel votes and anonymity controls | That model judges are unbiased or selected the objectively best answer |
|
|
146
|
+
| Append-only journal verification | Schema, ordering, majority outcome, point, cost totals, and Elo transitions are internally consistent | Publisher identity, an external timestamp, or protection against a coordinated journal-and-manifest rewrite |
|
|
147
|
+
| OpenRouter generation IDs | Provider routing and accounting can be cross-checked with the transport record | Direct-provider equivalence or provider retention behavior |
|
|
148
|
+
| Published retired references | The hidden half can eventually be hashed and reviewed against the journal | That no third party retained an active reference while it was in use |
|
|
149
|
+
|
|
150
|
+
BridgeBench measures models through OpenRouter, not through direct provider
|
|
151
|
+
APIs. Active hidden references travel to the configured model judges and may
|
|
152
|
+
be stored in the private BridgeBench API. Withholding them reduces
|
|
153
|
+
contamination risk; it does not prove non-retention or prevent all leakage.
|
|
154
|
+
See [Private packs](private-packs.md) for the complete trust boundary and
|
|
155
|
+
incident procedure.
|
|
156
|
+
|
|
157
|
+
## Reviewer completion checklist
|
|
158
|
+
|
|
159
|
+
A review is complete when you can answer:
|
|
160
|
+
|
|
161
|
+
- What does each arena measure, and which claims are out of scope?
|
|
162
|
+
- Did both competitors receive identical public evidence?
|
|
163
|
+
- How were identities hidden and answer order balanced?
|
|
164
|
+
- Do the recorded votes support the winner?
|
|
165
|
+
- Do the point and Elo transitions replay from the journal?
|
|
166
|
+
- Can the task and run inputs be tied to their recorded hashes?
|
|
167
|
+
- Which conclusions still depend on hidden references or model-judge quality?
|
|
168
|
+
|
|
169
|
+
If a published result does not reproduce, use the
|
|
170
|
+
[ladder audit report](https://github.com/bridge-mind/bridgebench/issues/new?template=audit-report.yml)
|
|
171
|
+
and include the journal source, first failing line, verifier output, and exact
|
|
172
|
+
reproduction command. Never include credentials, active hidden references, or
|
|
173
|
+
private filesystem paths.
|