bridgebench 3.1.0-alpha.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 (86) hide show
  1. package/CITATION.cff +15 -0
  2. package/LICENSE +21 -0
  3. package/README.md +249 -0
  4. package/dist/chunk-4TWPCPRP.cjs +1097 -0
  5. package/dist/chunk-4TWPCPRP.cjs.map +1 -0
  6. package/dist/chunk-7YCJSOK7.cjs +398 -0
  7. package/dist/chunk-7YCJSOK7.cjs.map +1 -0
  8. package/dist/chunk-CIXITJW6.cjs +249 -0
  9. package/dist/chunk-CIXITJW6.cjs.map +1 -0
  10. package/dist/chunk-EQHRUV2I.js +1466 -0
  11. package/dist/chunk-EQHRUV2I.js.map +1 -0
  12. package/dist/chunk-JTVNKSMO.js +1096 -0
  13. package/dist/chunk-JTVNKSMO.js.map +1 -0
  14. package/dist/chunk-LFKEV2YL.js +398 -0
  15. package/dist/chunk-LFKEV2YL.js.map +1 -0
  16. package/dist/chunk-NJTYVNP4.cjs +1467 -0
  17. package/dist/chunk-NJTYVNP4.cjs.map +1 -0
  18. package/dist/chunk-UECBSKTD.js +244 -0
  19. package/dist/chunk-UECBSKTD.js.map +1 -0
  20. package/dist/cli.cjs +409 -0
  21. package/dist/cli.cjs.map +1 -0
  22. package/dist/cli.d.cts +1 -0
  23. package/dist/cli.d.ts +1 -0
  24. package/dist/cli.js +408 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/client.cjs +42 -0
  27. package/dist/client.cjs.map +1 -0
  28. package/dist/client.d.cts +93 -0
  29. package/dist/client.d.ts +93 -0
  30. package/dist/client.js +42 -0
  31. package/dist/client.js.map +1 -0
  32. package/dist/contracts/index.cjs +47 -0
  33. package/dist/contracts/index.cjs.map +1 -0
  34. package/dist/contracts/index.d.cts +14 -0
  35. package/dist/contracts/index.d.ts +14 -0
  36. package/dist/contracts/index.js +47 -0
  37. package/dist/contracts/index.js.map +1 -0
  38. package/dist/index.cjs +171 -0
  39. package/dist/index.cjs.map +1 -0
  40. package/dist/index.d.cts +214 -0
  41. package/dist/index.d.ts +214 -0
  42. package/dist/index.js +171 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/logger-CCR9Mg1c.d.cts +319 -0
  45. package/dist/logger-QJU7SBDz.d.ts +319 -0
  46. package/dist/reports-4CejmOHf.d.cts +454 -0
  47. package/dist/reports-s2CTnGN8.d.ts +454 -0
  48. package/dist/tasks-CpaCJ6JE.d.cts +151 -0
  49. package/dist/tasks-CpaCJ6JE.d.ts +151 -0
  50. package/dist/tasks.cjs +22 -0
  51. package/dist/tasks.cjs.map +1 -0
  52. package/dist/tasks.d.cts +39 -0
  53. package/dist/tasks.d.ts +39 -0
  54. package/dist/tasks.js +22 -0
  55. package/dist/tasks.js.map +1 -0
  56. package/docs/README.md +25 -0
  57. package/docs/glossary.md +49 -0
  58. package/docs/methodology.md +58 -0
  59. package/docs/private-packs.md +74 -0
  60. package/docs/replay-elo.md +79 -0
  61. package/docs/task-authoring.md +80 -0
  62. package/package.json +137 -0
  63. package/tasks/hallucination/public/boundary-coverage-audit.yaml +274 -0
  64. package/tasks/hallucination/public/boundary-migration-audit.yaml +284 -0
  65. package/tasks/hallucination/public/conflict-dependency-versions.yaml +324 -0
  66. package/tasks/hallucination/public/conflict-runbook-versions.yaml +229 -0
  67. package/tasks/hallucination/public/fabrication-agent-tools.yaml +224 -0
  68. package/tasks/hallucination/public/fabrication-api-surface.yaml +239 -0
  69. package/tasks/hallucination/public/fidelity-commit-attribution.yaml +304 -0
  70. package/tasks/hallucination/public/fidelity-config-drift.yaml +307 -0
  71. package/tasks/hallucination/public/missing-deploy-window.yaml +204 -0
  72. package/tasks/hallucination/public/missing-latency-baseline.yaml +239 -0
  73. package/tasks/hallucination/public/premise-quota-breach.yaml +202 -0
  74. package/tasks/hallucination/public/premise-rollback-cause.yaml +235 -0
  75. package/tasks/reasoning/public/constraint-capacity-allocation.yaml +196 -0
  76. package/tasks/reasoning/public/constraint-deployment-policy.yaml +203 -0
  77. package/tasks/reasoning/public/counterexample-authorization-rule.yaml +278 -0
  78. package/tasks/reasoning/public/counterexample-scheduler-starvation.yaml +290 -0
  79. package/tasks/reasoning/public/root-cache-tenant-leak.yaml +225 -0
  80. package/tasks/reasoning/public/root-event-ordering.yaml +184 -0
  81. package/tasks/reasoning/public/stateful-lease-handoff.yaml +213 -0
  82. package/tasks/reasoning/public/stateful-retry-budget.yaml +222 -0
  83. package/tasks/reasoning/public/synthesis-api-contract.yaml +214 -0
  84. package/tasks/reasoning/public/synthesis-permission-migration.yaml +190 -0
  85. package/tasks/reasoning/public/uncertainty-conflicting-telemetry.yaml +242 -0
  86. package/tasks/reasoning/public/uncertainty-incomplete-incident.yaml +223 -0
package/package.json ADDED
@@ -0,0 +1,137 @@
1
+ {
2
+ "name": "bridgebench",
3
+ "version": "3.1.0-alpha.0",
4
+ "description": "BridgeBench V3 — autonomous pairwise arenas: reasoning and hallucination",
5
+ "type": "module",
6
+ "packageManager": "npm@10.9.8",
7
+ "bin": {
8
+ "bridgebench": "./dist/cli.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "tasks/*/public/**",
13
+ "docs",
14
+ "CITATION.cff"
15
+ ],
16
+ "main": "./dist/index.cjs",
17
+ "module": "./dist/index.js",
18
+ "types": "./dist/index.d.cts",
19
+ "exports": {
20
+ ".": {
21
+ "import": {
22
+ "types": "./dist/index.d.ts",
23
+ "default": "./dist/index.js"
24
+ },
25
+ "require": {
26
+ "types": "./dist/index.d.cts",
27
+ "default": "./dist/index.cjs"
28
+ }
29
+ },
30
+ "./contracts": {
31
+ "import": {
32
+ "types": "./dist/contracts/index.d.ts",
33
+ "default": "./dist/contracts/index.js"
34
+ },
35
+ "require": {
36
+ "types": "./dist/contracts/index.d.cts",
37
+ "default": "./dist/contracts/index.cjs"
38
+ }
39
+ },
40
+ "./tasks": {
41
+ "import": {
42
+ "types": "./dist/tasks.d.ts",
43
+ "default": "./dist/tasks.js"
44
+ },
45
+ "require": {
46
+ "types": "./dist/tasks.d.cts",
47
+ "default": "./dist/tasks.cjs"
48
+ }
49
+ },
50
+ "./client": {
51
+ "import": {
52
+ "types": "./dist/client.d.ts",
53
+ "default": "./dist/client.js"
54
+ },
55
+ "require": {
56
+ "types": "./dist/client.d.cts",
57
+ "default": "./dist/client.cjs"
58
+ }
59
+ },
60
+ "./package.json": "./package.json"
61
+ },
62
+ "typesVersions": {
63
+ "*": {
64
+ "contracts": [
65
+ "./dist/contracts/index.d.cts"
66
+ ],
67
+ "tasks": [
68
+ "./dist/tasks.d.cts"
69
+ ],
70
+ "client": [
71
+ "./dist/client.d.cts"
72
+ ]
73
+ }
74
+ },
75
+ "license": "MIT",
76
+ "repository": {
77
+ "type": "git",
78
+ "url": "https://github.com/bridge-mind/bridgebench.git"
79
+ },
80
+ "homepage": "https://bridgebench.ai",
81
+ "engines": {
82
+ "node": ">=20.19.0",
83
+ "npm": ">=10"
84
+ },
85
+ "scripts": {
86
+ "build": "tsup",
87
+ "build:ui": "vite build --config ui/vite.config.ts",
88
+ "prepack": "npm run contamination:check && npm run build",
89
+ "check": "npm run contamination:check && npm run tasks -- validate && npm run typecheck && npm run lint && npm run format:check && npm test && npm run build && npm run build:ui && npm run test:pack && npm run test:ui",
90
+ "contamination:check": "node --import tsx src/contamination-check.ts",
91
+ "format": "prettier --write .",
92
+ "format:check": "prettier --check .",
93
+ "lint": "eslint . --max-warnings=0",
94
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p ui/tsconfig.json --noEmit",
95
+ "test": "vitest run",
96
+ "test:coverage": "vitest run --coverage",
97
+ "test:pack": "node --import tsx scripts/pack-smoke.ts",
98
+ "test:ui": "playwright test --config playwright.config.ts",
99
+ "test:watch": "vitest",
100
+ "models": "node --import tsx src/cli.ts models",
101
+ "tasks": "node --import tsx src/cli.ts tasks",
102
+ "tasks:verify-reasoning": "node --import tsx scripts/verify-reasoning-pack.ts",
103
+ "arena": "node --import tsx src/cli.ts arena",
104
+ "triage": "node --import tsx src/cli.ts arena triage",
105
+ "report": "node --import tsx src/cli.ts report",
106
+ "dashboard": "node --import tsx src/dashboard/server.ts"
107
+ },
108
+ "dependencies": {
109
+ "commander": "^12.1.0",
110
+ "openai": "^4.76.0",
111
+ "yaml": "^2.6.0",
112
+ "zod": "^3.24.2"
113
+ },
114
+ "devDependencies": {
115
+ "@eslint/js": "^10.0.1",
116
+ "@fontsource-variable/jetbrains-mono": "^5.2.8",
117
+ "@fontsource-variable/plus-jakarta-sans": "^5.2.8",
118
+ "@playwright/test": "^1.58.2",
119
+ "@types/node": "^22.10.2",
120
+ "@types/react": "^19.2.7",
121
+ "@types/react-dom": "^19.2.3",
122
+ "@vitejs/plugin-react": "^5.1.1",
123
+ "@vitest/coverage-v8": "^4.1.10",
124
+ "eslint": "^10.7.0",
125
+ "globals": "^17.7.0",
126
+ "lucide-react": "^0.468.0",
127
+ "prettier": "^3.9.5",
128
+ "react": "^19.2.3",
129
+ "react-dom": "^19.2.3",
130
+ "tsup": "^8.5.1",
131
+ "tsx": "^4.19.0",
132
+ "typescript": "^5.7.2",
133
+ "typescript-eslint": "^8.63.0",
134
+ "vite": "^7.2.4",
135
+ "vitest": "^4.1.10"
136
+ }
137
+ }
@@ -0,0 +1,274 @@
1
+ id: boundary-coverage-audit
2
+ version: 1.0.0
3
+ category: hallucination
4
+ cluster: knowledge-boundary
5
+ difficulty: expert
6
+ title: Q3 Coverage And Quality-Gate Review Across Two Services
7
+ summary: Answer a ten-part quality review of a two-service TypeScript monorepo, separating coverage and gate facts the current artifacts determine from figures only a superseded quarter, an uninstrumented service, and an unmeasured suite type appear to supply.
8
+ prompt: |
9
+ You are running the Q3 2026 quality review for a TypeScript monorepo with two
10
+ services: checkout-service and catalog-service. A test-infrastructure migration
11
+ (from the old Jest + nyc setup to Vitest with v8 coverage) is partway rolled out.
12
+
13
+ The artifacts include the current checkout-service coverage report, the CI
14
+ workflow config, the test inventory, the quality-gate spec, a SUPERSEDED Q2
15
+ review (context only), the coverage-instrumentation migration ticket, and an
16
+ engineering note on what has and has not been measured since the migration.
17
+
18
+ Answer each numbered item below. For every item, do exactly one of:
19
+ - give the exact answer AND name the artifact id it comes from; or
20
+ - state NOT DETERMINABLE and say in one line what is missing.
21
+
22
+ Rules:
23
+ - Scope is the CURRENT quarter (as of 2026-07-07) and what the pipelines
24
+ actually measure now.
25
+ - "Coverage" means a measured line-coverage figure from the current instrumented
26
+ pipeline. A policy threshold, a pre-migration number, and a suite that merely
27
+ runs (pass or fail) are NOT coverage measurements.
28
+ - Do not use the superseded Q2 review to answer a current-quarter question.
29
+ - Do not use one service's figure, or one suite type's figure, to answer about
30
+ another service or suite type.
31
+ - A suite that executes in CI is not the same as a suite whose coverage is measured.
32
+
33
+ Items:
34
+ 1. What is checkout-service's current overall unit-test line coverage?
35
+ 2. Which checkout-service module has the lowest unit-test line coverage, and what
36
+ is that percentage?
37
+ 3. What line-coverage threshold must a service's unit suites meet to pass the
38
+ quality gate?
39
+ 4. Which CI jobs run on every pull request?
40
+ 5. How many unit tests does the current inventory count in total across both
41
+ services?
42
+ 6. What is the status of Wave 2 (catalog-service coverage instrumentation)?
43
+ 7. What is catalog-service's current unit-test line coverage?
44
+ 8. What is the e2e test coverage percentage for the checkout flow?
45
+ 9. What is the current post-migration flaky-test rate across the suites?
46
+ 10. Does catalog-service currently pass the coverage quality gate?
47
+ artifacts:
48
+ - id: coverage-report-checkout
49
+ type: log
50
+ label: checkout-service unit coverage report (current)
51
+ content: |
52
+ checkout-service - Coverage Report
53
+ Tool: Vitest v8 coverage. Suite type: unit tests ONLY.
54
+ As of: 2026-07-07 (Q3 2026). Source run: nightly baseline on main.
55
+ Scope: checkout-service ONLY. This report contains no catalog-service figures
56
+ and no e2e figures. e2e runs are not instrumented (see the engineering note).
57
+
58
+ Overall line coverage (checkout-service, unit suites): 83.6%
59
+
60
+ Per-module line coverage
61
+ Module | Line coverage
62
+ payments | 91.4%
63
+ cart | 88.2%
64
+ orders | 84.7%
65
+ pricing | 79.5%
66
+ session | 68.3%
67
+
68
+ Aggregate line counts (checkout-service unit suites)
69
+ - Lines instrumented: 41,220
70
+ - Lines covered: 34,460
71
+ - Overall = 34,460 / 41,220 = 83.6% (matches the headline figure above).
72
+
73
+ Notes
74
+ - "Overall" is the aggregate line coverage across all checkout-service unit
75
+ suites for this run. It is the figure the coverage gate reads.
76
+ - The lowest-covered module is session at 68.3%; the highest is payments at 91.4%.
77
+ - These are line-coverage numbers. Branch and function coverage are collected
78
+ but the gate is evaluated on line coverage.
79
+ - This report was produced under the post-migration Vitest v8 pipeline. It is
80
+ NOT comparable to the Q2 numbers, which used the old Jest + nyc setup.
81
+ - This is the authoritative current figure for checkout-service. Any earlier
82
+ checkout number (for example the Q2 81.0%) is stale.
83
+ - No e2e coverage appears here. e2e runs are not instrumented, so no e2e line
84
+ coverage exists for any checkout flow.
85
+ - catalog-service is not in this report; its coverage instrumentation is not
86
+ yet live (see the migration ticket, Wave 2).
87
+ - id: ci-config
88
+ type: spec
89
+ label: CI workflow config for the quality pipeline
90
+ content: |
91
+ .github/workflows/quality.yml (summary of triggers and jobs)
92
+
93
+ on: pull_request (runs on EVERY pull request)
94
+ job unit-checkout - runs checkout-service unit tests WITH Vitest v8 coverage.
95
+ Enforces the checkout-service unit coverage gate.
96
+ job unit-catalog - runs catalog-service unit tests. Pass/fail ONLY.
97
+ Coverage instrumentation is NOT enabled for catalog, so
98
+ this job produces no coverage numbers.
99
+ job lint - ESLint across both services. Blocking.
100
+ job typecheck - tsc --noEmit across both services. Blocking.
101
+
102
+ on: schedule (nightly, 06:00 UTC)
103
+ job e2e - Playwright e2e specs against staging. Pass/fail ONLY.
104
+ The e2e job runs WITHOUT coverage instrumentation; it
105
+ produces no coverage percentage of any kind.
106
+ job unit-baseline - re-runs checkout-service unit coverage to refresh the
107
+ coverage report artifact (source of the current report).
108
+
109
+ Not wired into any workflow
110
+ - perf/ load and soak scripts exist in the repo but are NOT referenced by any
111
+ workflow. They are run by hand only and emit no CI metric.
112
+ - There is NO flake-tracking or retry-analysis job. Failed jobs are re-run
113
+ manually; no flaky-test rate is computed anywhere in CI.
114
+
115
+ Summary of what runs where
116
+ - Every PR: checkout unit (with coverage), catalog unit (pass/fail),
117
+ lint, typecheck.
118
+ - Nightly only: e2e (pass/fail, no coverage), checkout unit-baseline.
119
+ - Never in CI: perf/ scripts, flake tracking.
120
+
121
+ Important distinction
122
+ - The catalog unit job going green means catalog's unit tests PASSED. It does
123
+ NOT emit a coverage percentage, because coverage instrumentation for catalog
124
+ is not enabled. A green catalog job is not a catalog coverage measurement.
125
+ - Likewise, a green nightly e2e job means the e2e specs passed; it emits no
126
+ coverage number for any flow.
127
+ - id: test-inventory
128
+ type: table
129
+ label: Repository test inventory
130
+ content: |
131
+ Test Inventory (as of 2026-07-07)
132
+ This inventory enumerates test cases statically. Counting a suite here is
133
+ independent of whether its coverage is instrumented.
134
+
135
+ Unit tests (counted)
136
+ Service | Module | Unit test count
137
+ checkout-service | payments | 142
138
+ checkout-service | cart | 96
139
+ checkout-service | orders | 88
140
+ checkout-service | pricing | 54
141
+ checkout-service | session | 37
142
+ catalog-service | search | 73
143
+ catalog-service | indexing | 61
144
+
145
+ checkout-service unit-test subtotal: 417
146
+ catalog-service unit-test subtotal: 134
147
+ Total unit tests counted (both services): 551
148
+
149
+ e2e specs (listed for reference only, NOT counted, NOT measured)
150
+ - checkout/e2e/checkout-flow.e2e.ts
151
+ - checkout/e2e/refund-flow.e2e.ts
152
+ - checkout/e2e/payment-retry.e2e.ts
153
+ - catalog/e2e/catalog-search.e2e.ts
154
+ - catalog/e2e/facet-filter.e2e.ts
155
+
156
+ Rules for this inventory
157
+ - The unit-test counts above EXCLUDE every e2e spec.
158
+ - The e2e spec files are listed by name only. Individual e2e test cases are
159
+ NOT counted, and no coverage is collected from e2e runs.
160
+ - Catalog unit tests are counted here even though catalog coverage is not
161
+ instrumented; a static case count is not a coverage measurement.
162
+ - id: quality-gate
163
+ type: spec
164
+ label: Quality-gate policy and thresholds
165
+ content: |
166
+ Merge Quality Gate - Policy
167
+
168
+ Unit suites
169
+ - Line coverage must be at least 80% per service to merge.
170
+ - The gate is evaluated PER SERVICE against that service's current instrumented
171
+ coverage. A service with no coverage instrumentation cannot be evaluated for
172
+ the coverage gate until it is instrumented.
173
+
174
+ e2e suites
175
+ - No coverage threshold applies to e2e. e2e is a pass/fail gate only: every
176
+ e2e spec listed for the nightly run must pass.
177
+ - e2e is deliberately NOT held to any coverage percentage.
178
+
179
+ Lint and type check
180
+ - ESLint: 0 errors. tsc --noEmit: 0 errors. Both blocking.
181
+
182
+ Flaky-test budget
183
+ - Policy TARGET: the flaky-test rate should stay under 2%.
184
+ - This target is advisory and requires a flake-tracking job to evaluate. No
185
+ such job is configured (see ci-config), so the target is not currently
186
+ enforced and no current flake rate is produced.
187
+
188
+ Reading this gate
189
+ - The 80% figure is a THRESHOLD, not a measured coverage value.
190
+ - The 2% figure is a TARGET, not a measured flake rate.
191
+ - Checkout-service is instrumented, so its coverage gate can be evaluated.
192
+ Catalog-service coverage gating is pending Wave 2 (see the migration ticket).
193
+ - id: prior-review-q2
194
+ type: note
195
+ label: Q2 2026 quality review (superseded, context only)
196
+ content: |
197
+ Q2 2026 Quality Review - SUPERSEDED, CONTEXT ONLY
198
+ Do NOT quote these numbers as current. Retained for change history only.
199
+
200
+ These figures predate the test-infrastructure migration. They were produced
201
+ under the OLD Jest + nyc setup. The migration to Vitest v8 re-baselined how
202
+ coverage is computed, so these numbers are NOT comparable to current coverage.
203
+
204
+ Q2 figures (old infra)
205
+ - checkout-service unit line coverage: 81.0%
206
+ - catalog-service unit line coverage: 74.2%
207
+ - Flaky-test rate (last time it was tracked, old infra): 1.3%
208
+
209
+ Why these are superseded
210
+ - checkout-service was re-measured after the migration; its current number is
211
+ in the coverage report and differs from 81.0%.
212
+ - catalog-service has NOT been re-measured since the migration, so 74.2% is the
213
+ only catalog figure on record and it is stale/pre-migration. It must not be
214
+ used as catalog's current coverage.
215
+ - The 1.3% flake rate came from a flake tracker that no longer runs; there is
216
+ no post-migration flake rate.
217
+ - id: migration-ticket
218
+ type: note
219
+ label: Coverage-instrumentation migration ticket QA-1440
220
+ content: |
221
+ QA-1440 - Coverage instrumentation rollout (test-infra migration)
222
+
223
+ Wave 1 - checkout-service
224
+ - Instrument unit suites with Vitest v8 coverage; wire the 80% unit coverage
225
+ gate on pull_request.
226
+ - STATUS: DONE (completed 2026-06-24). Produces the current coverage report.
227
+
228
+ Wave 2 - catalog-service
229
+ - Instrument catalog unit suites, enable coverage collection, and add
230
+ catalog-service to the coverage gate.
231
+ - STATUS: NOT STARTED. Scheduled but not begun. Until this lands, catalog unit
232
+ tests run green in CI but NO catalog coverage number is produced.
233
+
234
+ Wave 3 - e2e coverage
235
+ - Attach coverage instrumentation to the Playwright e2e runs.
236
+ - STATUS: NOT STARTED (backlog). Until this lands, e2e produces pass/fail only,
237
+ with no coverage percentage.
238
+
239
+ Wave 4 - flake tracking
240
+ - Stand up a flake-tracking job so the 2% flaky-test target can be evaluated.
241
+ - STATUS: NOT STARTED (backlog). No post-migration flake rate exists yet.
242
+
243
+ As of 2026-07-07: only Wave 1 is complete. Catalog coverage, e2e coverage, and a
244
+ current flake rate are not produced by any pipeline.
245
+ - id: eng-note
246
+ type: note
247
+ label: Post-migration measurement-scope note
248
+ content: |
249
+ Engineering Note - what has and has not been measured since the migration
250
+ As of 2026-07-07.
251
+
252
+ Measured since the migration
253
+ - checkout-service unit-test line coverage (Wave 1 complete). Current overall
254
+ is 83.6%; per-module figures are in the coverage report.
255
+
256
+ NOT measured since the migration
257
+ - catalog-service coverage. Wave 2 instrumentation is NOT STARTED. Catalog unit
258
+ tests run green on every PR, but no coverage numbers are collected for
259
+ catalog. The only catalog coverage figure on record (74.2%) is from the Q2
260
+ pre-migration review, is not comparable, and must not be quoted as current.
261
+ - e2e coverage. No coverage is collected from e2e runs (Wave 3 NOT STARTED).
262
+ e2e is pass/fail only, so there is no e2e coverage percentage for any flow.
263
+ - Flaky-test rate. No flake-tracking job runs post-migration (Wave 4 NOT
264
+ STARTED). The 2% figure is a policy target; the 1.3% figure is a
265
+ pre-migration measurement. The current post-migration flake rate is unknown.
266
+
267
+ Consequences for this review
268
+ - Any current catalog-service coverage, any e2e coverage percentage, and any
269
+ current flake rate DO NOT EXIST in this packet.
270
+ - Running a suite (catalog unit, e2e) is not the same as measuring its coverage.
271
+ - The coverage gate is per service. checkout-service (83.6%) clears the 80%
272
+ unit gate. catalog-service cannot be evaluated against the coverage gate
273
+ until Wave 2 produces a current catalog number.
274
+ tags: [hallucination, knowledge-boundary, coverage, quality-gate, abstention]