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.
- package/CITATION.cff +15 -0
- package/LICENSE +21 -0
- package/README.md +249 -0
- package/dist/chunk-4TWPCPRP.cjs +1097 -0
- package/dist/chunk-4TWPCPRP.cjs.map +1 -0
- package/dist/chunk-7YCJSOK7.cjs +398 -0
- package/dist/chunk-7YCJSOK7.cjs.map +1 -0
- package/dist/chunk-CIXITJW6.cjs +249 -0
- package/dist/chunk-CIXITJW6.cjs.map +1 -0
- package/dist/chunk-EQHRUV2I.js +1466 -0
- package/dist/chunk-EQHRUV2I.js.map +1 -0
- package/dist/chunk-JTVNKSMO.js +1096 -0
- package/dist/chunk-JTVNKSMO.js.map +1 -0
- package/dist/chunk-LFKEV2YL.js +398 -0
- package/dist/chunk-LFKEV2YL.js.map +1 -0
- package/dist/chunk-NJTYVNP4.cjs +1467 -0
- package/dist/chunk-NJTYVNP4.cjs.map +1 -0
- package/dist/chunk-UECBSKTD.js +244 -0
- package/dist/chunk-UECBSKTD.js.map +1 -0
- package/dist/cli.cjs +409 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +408 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.cjs +42 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +93 -0
- package/dist/client.d.ts +93 -0
- package/dist/client.js +42 -0
- package/dist/client.js.map +1 -0
- package/dist/contracts/index.cjs +47 -0
- package/dist/contracts/index.cjs.map +1 -0
- package/dist/contracts/index.d.cts +14 -0
- package/dist/contracts/index.d.ts +14 -0
- package/dist/contracts/index.js +47 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/index.cjs +171 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +214 -0
- package/dist/index.d.ts +214 -0
- package/dist/index.js +171 -0
- package/dist/index.js.map +1 -0
- package/dist/logger-CCR9Mg1c.d.cts +319 -0
- package/dist/logger-QJU7SBDz.d.ts +319 -0
- package/dist/reports-4CejmOHf.d.cts +454 -0
- package/dist/reports-s2CTnGN8.d.ts +454 -0
- package/dist/tasks-CpaCJ6JE.d.cts +151 -0
- package/dist/tasks-CpaCJ6JE.d.ts +151 -0
- package/dist/tasks.cjs +22 -0
- package/dist/tasks.cjs.map +1 -0
- package/dist/tasks.d.cts +39 -0
- package/dist/tasks.d.ts +39 -0
- package/dist/tasks.js +22 -0
- package/dist/tasks.js.map +1 -0
- package/docs/README.md +25 -0
- package/docs/glossary.md +49 -0
- package/docs/methodology.md +58 -0
- package/docs/private-packs.md +74 -0
- package/docs/replay-elo.md +79 -0
- package/docs/task-authoring.md +80 -0
- package/package.json +137 -0
- package/tasks/hallucination/public/boundary-coverage-audit.yaml +274 -0
- package/tasks/hallucination/public/boundary-migration-audit.yaml +284 -0
- package/tasks/hallucination/public/conflict-dependency-versions.yaml +324 -0
- package/tasks/hallucination/public/conflict-runbook-versions.yaml +229 -0
- package/tasks/hallucination/public/fabrication-agent-tools.yaml +224 -0
- package/tasks/hallucination/public/fabrication-api-surface.yaml +239 -0
- package/tasks/hallucination/public/fidelity-commit-attribution.yaml +304 -0
- package/tasks/hallucination/public/fidelity-config-drift.yaml +307 -0
- package/tasks/hallucination/public/missing-deploy-window.yaml +204 -0
- package/tasks/hallucination/public/missing-latency-baseline.yaml +239 -0
- package/tasks/hallucination/public/premise-quota-breach.yaml +202 -0
- package/tasks/hallucination/public/premise-rollback-cause.yaml +235 -0
- package/tasks/reasoning/public/constraint-capacity-allocation.yaml +196 -0
- package/tasks/reasoning/public/constraint-deployment-policy.yaml +203 -0
- package/tasks/reasoning/public/counterexample-authorization-rule.yaml +278 -0
- package/tasks/reasoning/public/counterexample-scheduler-starvation.yaml +290 -0
- package/tasks/reasoning/public/root-cache-tenant-leak.yaml +225 -0
- package/tasks/reasoning/public/root-event-ordering.yaml +184 -0
- package/tasks/reasoning/public/stateful-lease-handoff.yaml +213 -0
- package/tasks/reasoning/public/stateful-retry-budget.yaml +222 -0
- package/tasks/reasoning/public/synthesis-api-contract.yaml +214 -0
- package/tasks/reasoning/public/synthesis-permission-migration.yaml +190 -0
- package/tasks/reasoning/public/uncertainty-conflicting-telemetry.yaml +242 -0
- 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]
|