Skip to main content
Blitz
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage
Edit page

Coverage

How much of Blitz’s code its Go tests run: every line in apps/ and pkg/, measured with bazel coverage on Linux (where the sandbox and gVisor tests also run) on each push to main. Tools, generated code and dependencies aren’t counted. The desktop page’s TypeScript is measured separately, lines and branches, by bazel test //apps/desktop/web:coverage (Vitest’s V8 coverage, over src/ without the generated client and the development stand-ins), which fails below the thresholds in apps/desktop/web/vite.config.ts; its report is among that test’s outputs.

CI fails if the total drops below the floor in tools/coverage/floor.txt. When coverage rises, raise the floor with it, so it can only go up. Packages are listed least covered first: the top of the table is where tests are most needed.

94.1% of 52,956 lines covered (49,842 run by the tests), in 64 packages. The floor is 94.0%. Measured at commit fb5a7fd on 2026-10-19.

PackageCoverageLines
apps/electron/winsetup
2 files
main.go67.1%88 / 131
system_other.go0.0%0 / 16
59.8% 88 / 147
pkg/wininstall
2 files
registry_other.go33.3%1 / 3
wininstall.go73.3%80 / 109
72.3% 81 / 112
pkg/loginitem
3 files
loginitem.go75.9%186 / 245
repair.go83.8%52 / 62
run_other.go80.0%4 / 5
77.5% 242 / 312
apps/service/servicetest
1 file
servicetest.go78.5%11 / 14
78.5% 11 / 14
pkg/engine/lsp/lsptest
1 file
lsptest.go80.7%67 / 83
80.7% 67 / 83
pkg/fileview
1 file
fileview.go80.7%63 / 78
80.7% 63 / 78
pkg/socket
1 file
socket.go83.3%35 / 42
83.3% 35 / 42
apps/electron/winsetup/pack
1 file
main.go83.8%26 / 31
83.8% 26 / 31
pkg/shellpath
1 file
shellpath.go86.9%40 / 46
86.9% 40 / 46
pkg/sandboxsetup
1 file
sandboxsetup.go87.2%89 / 102
87.2% 89 / 102
apps/electron/winexe
1 file
main.go87.8%65 / 74
87.8% 65 / 74
pkg/engine/agents
3 files
files.go76.5%85 / 111
frontmatter.go97.8%89 / 91
manager.go92.6%113 / 122
88.5% 287 / 324
pkg/secrets
3 files
secrets.go91.6%143 / 156
vault.go85.7%84 / 98
wincred_other.go0.0%0 / 1
89.0% 227 / 255
pkg/selfupdate
3 files
desktop.go86.8%172 / 198
selfupdate.go93.4%201 / 215
verify.go83.7%31 / 37
89.7% 404 / 450
pkg/pagehost
7 files
cli.go84.9%147 / 173
cli_other.go100.0%4 / 4
cli_winpath.go100.0%89 / 89
host.go87.0%134 / 154
prefs.go91.8%113 / 123
sandbox.go16.6%1 / 6
update.go95.5%108 / 113
90.0% 596 / 662
pkg/engine/search
5 files
enrich.go87.1%149 / 171
index.go92.3%72 / 78
query.go98.7%153 / 155
scan.go88.8%223 / 251
vectors.go87.1%142 / 163
90.3% 739 / 818
pkg/images
5 files
clipboard.go64.4%29 / 45
images.go89.6%121 / 135
media.go98.9%96 / 97
mentions.go100.0%18 / 18
store.go91.5%261 / 285
90.5% 525 / 580
pkg/pdftext
1 file
pdftext.go90.9%120 / 132
90.9% 120 / 132
pkg/skillreg
1 file
skillreg.go91.6%360 / 393
91.6% 360 / 393
pkg/engine
55 files
added.go100.0%41 / 41
agentfiles.go81.5%62 / 76
backend.go100.0%28 / 28
changes.go94.3%151 / 160
commands.go100.0%108 / 108
commit.go91.0%92 / 101
compose.go78.4%73 / 93
context.go95.0%135 / 142
draft.go100.0%53 / 53
evaldraft.go89.2%83 / 93
evals.go94.9%168 / 177
event.go100.0%17 / 17
export.go90.9%20 / 22
extensions.go94.2%132 / 140
files.go97.4%422 / 433
flowcalls.go89.0%179 / 201
flowgraph.go96.4%520 / 539
flowreceipt.go96.6%261 / 270
flowrun.go92.6%190 / 205
flowtasks.go88.4%192 / 217
fork.go87.0%114 / 131
gitbranches.go93.2%111 / 119
gitfiles.go85.5%130 / 152
gitremote.go92.7%256 / 276
gitrevisions.go88.4%207 / 234
goals.go97.5%80 / 82
guardrails.go97.2%209 / 215
health.go70.5%194 / 275
language.go100.0%85 / 85
lock.go78.2%18 / 23
lock_unix.go100.0%6 / 6
media.go88.8%32 / 36
mentions.go93.5%87 / 93
models.go96.7%180 / 186
network.go92.0%23 / 25
notices.go100.0%17 / 17
observability.go100.0%2 / 2
permissions.go97.2%70 / 72
project.go87.7%122 / 139
rewind.go89.8%89 / 99
rules.go94.6%71 / 75
search.go97.0%362 / 373
sessions.go97.3%146 / 150
sessiontools.go97.8%46 / 47
settingswatch.go96.5%83 / 86
skillfiles.go89.3%118 / 132
skillmentions.go100.0%27 / 27
styles.go95.3%62 / 65
suggestions.go89.7%167 / 186
tables.go93.3%56 / 60
tasks.go100.0%22 / 22
turn.go96.8%304 / 314
workerrewrite.go100.0%55 / 55
workers.go87.3%317 / 363
workspace.go86.1%281 / 326
92.3% 7076 / 7664
apps/cli
29 files
agents.go90.0%127 / 141
auth.go95.6%89 / 93
configcmd.go92.1%70 / 76
configkeys.go93.7%165 / 176
configperms.go96.5%167 / 173
doctor.go97.5%40 / 41
eval.go87.1%68 / 78
exitcode.go100.0%13 / 13
headless.go100.0%156 / 156
helpgroups.go98.0%50 / 51
license.go100.0%15 / 15
main.go88.8%455 / 512
mcp.go92.0%185 / 201
memory.go93.8%92 / 98
models.go87.2%41 / 47
oneshot.go97.3%109 / 112
plugin.go95.9%236 / 246
search.go100.0%82 / 82
security.go54.0%20 / 37
service.go90.0%100 / 111
services.go89.4%161 / 180
services_unix.go100.0%1 / 1
sessions.go88.5%31 / 35
setup.go98.0%100 / 102
skills.go94.8%146 / 154
trust.go80.0%32 / 40
update.go95.8%115 / 120
workers.go91.1%216 / 237
worktrees.go100.0%71 / 71
92.7% 3153 / 3399
pkg/engine/session
4 files
adkstore.go89.9%188 / 209
search.go96.6%57 / 59
session.go92.1%444 / 482
snapshot.go97.5%156 / 160
92.8% 845 / 910
apps/service/internal/server
29 files
agents.go78.3%83 / 106
background.go93.0%175 / 188
broker.go100.0%51 / 51
compose.go84.2%32 / 38
config.go94.2%212 / 225
convert.go100.0%151 / 151
evals.go94.2%114 / 121
files.go94.4%187 / 198
guardrails.go97.1%69 / 71
health.go79.4%120 / 151
idle.go90.6%29 / 32
language.go95.8%139 / 145
listen.go82.3%14 / 17
mcp.go89.4%51 / 57
models.go95.9%47 / 49
rules.go93.8%61 / 65
scheduler.go96.8%214 / 221
secrets.go77.1%27 / 35
server.go96.4%220 / 228
session.go90.7%245 / 270
signin.go95.0%76 / 80
skills.go90.6%136 / 150
skills_edit.go93.2%83 / 89
studio.go83.3%10 / 12
tasks.go91.8%90 / 98
worker.go92.5%323 / 349
workflowruns.go95.2%119 / 125
workflows.go96.7%120 / 124
workspace.go93.7%783 / 835
92.9% 3981 / 4281
pkg/engine/health
3 files
facts.go95.8%209 / 218
judge.go91.1%72 / 79
verdict.go90.3%94 / 104
93.5% 375 / 401
pkg/mcpauth
1 file
mcpauth.go93.7%119 / 127
93.7% 119 / 127
pkg/plugins
5 files
apply.go100.0%85 / 85
importer.go95.7%319 / 333
marketplace.go93.6%132 / 141
plugins.go94.6%107 / 113
store.go89.9%251 / 279
94.0% 894 / 951
pkg/engine/frontmatter
1 file
frontmatter.go94.1%81 / 86
94.1% 81 / 86
pkg/engine/mdpdf
1 file
mdpdf.go94.1%577 / 613
94.1% 577 / 613
pkg/engine/runtime
31 files
agentrun.go72.4%21 / 29
anthropic.go98.2%387 / 394
aside.go80.0%48 / 60
cloud.go92.0%93 / 101
compact.go91.7%221 / 241
contextparts.go90.6%68 / 75
embed.go95.3%82 / 86
engine.go91.3%674 / 738
fallback.go100.0%60 / 60
geminifiles.go90.0%54 / 60
guard.go91.6%22 / 24
httpclient.go100.0%72 / 72
images.go86.1%31 / 36
keycommand.go96.1%50 / 52
listmodels.go96.2%103 / 107
media.go98.7%78 / 79
model_factory.go95.9%263 / 274
openai_images.go94.1%81 / 86
outputcap.go94.3%50 / 53
plan.go100.0%47 / 47
quota.go97.6%41 / 42
review.go98.2%171 / 174
rules.go92.9%92 / 99
search.go100.0%28 / 28
settings.go89.6%113 / 126
signatures.go97.3%37 / 38
speech.go95.2%199 / 209
steer.go91.2%52 / 57
tasks.go95.1%335 / 352
unavailable.go100.0%6 / 6
usage.go100.0%90 / 90
94.1% 3669 / 3895
pkg/client
7 files
background.go92.8%78 / 84
client.go94.0%555 / 590
convert.go98.6%143 / 145
processes.go91.3%127 / 139
project.go96.8%62 / 64
settings.go91.3%53 / 58
workers.go94.5%87 / 92
94.2% 1105 / 1172
pkg/markdown
2 files
markdown.go96.5%84 / 87
math.go92.5%75 / 81
94.6% 159 / 168
apps/tray/internal/tray
11 files
actions.go91.2%94 / 103
apply.go94.2%33 / 35
browser.go93.3%14 / 15
detach_unix.go100.0%1 / 1
exited_unix.go100.0%7 / 7
extras.go95.2%80 / 84
ico.go100.0%18 / 18
locale.go94.1%48 / 51
serve.go100.0%21 / 21
tasks.go97.6%83 / 85
tray.go96.6%57 / 59
95.1% 456 / 479
pkg/docx
4 files
docx.go96.3%339 / 352
math.go97.2%316 / 325
parts.go93.2%83 / 89
read.go88.8%111 / 125
95.2% 849 / 891
pkg/signin
2 files
signin.go100.0%105 / 105
status.go90.3%94 / 104
95.2% 199 / 209
pkg/engine/tools
59 files
agent_tools.go100.0%75 / 75
approval_store.go87.5%91 / 104
ask_user.go100.0%66 / 66
audio.go94.1%128 / 136
background.go99.1%221 / 223
blockedscan.go96.5%84 / 87
blockedscan_unix.go100.0%4 / 4
browser.go94.8%237 / 250
bwrap.go100.0%28 / 28
capped_buffer.go100.0%24 / 24
checkpoint.go94.9%468 / 493
cmdpolicy.go98.7%388 / 393
diff.go100.0%17 / 17
documents.go92.8%78 / 84
exec.go95.6%133 / 139
export_pdf.go92.1%118 / 128
file_edit.go100.0%90 / 90
file_ops.go97.5%240 / 246
flowcalls.go86.1%31 / 36
glob.go98.6%149 / 151
grep.go94.5%139 / 147
hookif.go97.0%65 / 67
hooks.go100.0%229 / 229
images.go93.8%91 / 97
lsp.go85.7%84 / 98
mcp.go94.8%465 / 490
mcpextra.go97.1%269 / 277
mode.go100.0%31 / 31
nodeenv.go92.7%128 / 138
notebook.go99.1%239 / 241
ossandbox.go95.0%115 / 121
ossandbox_linux.go87.5%14 / 16
patch.go100.0%400 / 400
pathlock.go98.0%49 / 50
pathpolicy.go91.6%88 / 96
permrules.go99.2%271 / 273
plan.go97.2%105 / 108
procgroup_unix.go76.4%13 / 17
pyenv.go95.4%169 / 177
pyversion.go97.6%165 / 169
registry.go95.4%335 / 351
remember.go100.0%24 / 24
scriptbox.go93.3%84 / 90
scriptbox_gvisor_linux.go87.8%130 / 148
scripthooks.go97.7%383 / 392
search.go92.5%25 / 27
shell.go97.7%130 / 133
skillremote.go86.8%53 / 61
skills_tools.go96.6%117 / 121
skillscript.go91.4%267 / 292
skillwrites.go91.3%105 / 115
tasks.go89.6%52 / 58
todo.go100.0%47 / 47
universal_constructor.go96.0%172 / 179
userfs.go94.3%101 / 107
usersearch.go100.0%29 / 29
web.go96.8%184 / 190
websearch.go95.6%262 / 274
workspace.go90.2%372 / 412
95.6% 8671 / 9066
pkg/config
14 files
agentmodels.go91.4%43 / 47
check.go100.0%87 / 87
config.go96.4%269 / 279
features.go100.0%113 / 113
home.go88.2%15 / 17
locale.go86.0%80 / 93
mcpedit.go100.0%160 / 160
modelsettings.go98.4%126 / 128
permissions.go93.5%87 / 93
project.go96.9%353 / 364
providers.go96.3%371 / 385
reference.go99.1%114 / 115
skilltrust.go80.3%45 / 56
trust.go83.3%60 / 72
95.7% 1923 / 2009
apps/service/internal/doctor
1 file
doctor.go96.1%378 / 393
96.1% 378 / 393
pkg/engine/flows
2 files
expr.go90.9%151 / 166
flows.go98.7%319 / 323
96.1% 470 / 489
pkg/worktree
1 file
worktree.go96.1%176 / 183
96.1% 176 / 183
pkg/engine/workers
6 files
permission.go100.0%47 / 47
policy.go100.0%31 / 31
runs.go92.7%77 / 83
schedule.go100.0%110 / 110
state.go93.2%97 / 104
worker.go95.6%175 / 183
96.2% 537 / 558
pkg/observability
6 files
logfile.go96.0%145 / 151
logread.go100.0%126 / 126
metrics.go100.0%33 / 33
span.go100.0%22 / 22
start.go86.2%25 / 29
telemetry.go94.0%141 / 150
96.2% 492 / 511
pkg/redact
2 files
pii.go91.6%44 / 48
redact.go100.0%58 / 58
96.2% 102 / 106
pkg/engine/table
2 files
query.go96.4%136 / 141
table.go96.3%105 / 109
96.4% 241 / 250
pkg/engine/lsp
4 files
client.go99.1%120 / 121
documents.go94.6%482 / 509
manager.go97.5%394 / 404
snippet.go100.0%67 / 67
96.5% 1063 / 1101
pkg/engine/skills
6 files
definition.go99.2%126 / 127
folder.go98.1%107 / 109
policy.go100.0%150 / 150
provider.go91.3%169 / 185
save.go95.9%119 / 124
skill.go96.5%113 / 117
96.5% 784 / 812
pkg/engine/evals
2 files
evals.go99.2%264 / 266
runs.go84.3%43 / 51
96.8% 307 / 317
pkg/engine/audit
1 file
audit.go96.9%63 / 65
96.9% 63 / 65
pkg/engine/browser
3 files
browser.go97.5%524 / 537
cdp.go100.0%86 / 86
proxy.go92.8%116 / 125
97.0% 726 / 748
pkg/engine/browser/browsertest
1 file
browsertest.go97.1%103 / 106
97.1% 103 / 106
apps/cli/internal/tui
35 files
attach.go100.0%70 / 70
cd.go100.0%63 / 63
commands.go98.6%282 / 286
commands_extra.go98.6%510 / 517
envs.go100.0%51 / 51
exit.go98.8%85 / 86
follow.go100.0%23 / 23
input.go97.7%173 / 177
keybindings.go96.8%61 / 63
keys.go92.5%136 / 147
keywatch.go87.3%76 / 87
keywatch_linux.go100.0%1 / 1
keywatch_unix.go84.2%32 / 38
license.go92.3%24 / 26
loops.go98.7%82 / 83
markdown.go94.6%53 / 56
mode.go98.2%57 / 58
modelsettings.go97.0%65 / 67
passthrough.go88.0%44 / 50
permissions.go100.0%60 / 60
picker.go97.7%300 / 307
pickers.go100.0%91 / 91
project.go98.7%81 / 82
render.go100.0%47 / 47
repl.go97.4%416 / 427
rewind.go100.0%116 / 116
search.go100.0%41 / 41
searchws.go100.0%92 / 92
skills.go100.0%64 / 64
spinner.go100.0%40 / 40
status.go98.4%256 / 260
statusline.go96.5%56 / 58
tasks.go100.0%87 / 87
terminal.go90.3%215 / 238
theme.go100.0%33 / 33
97.2% 3883 / 3992
pkg/engine/memory
2 files
memory.go97.4%301 / 309
notes.go96.8%122 / 126
97.2% 423 / 435
pkg/engine/gates
2 files
gates.go97.6%167 / 171
guardrails.go98.1%211 / 215
97.9% 378 / 386
pkg/engine/compose
1 file
compose.go98.8%165 / 167
98.8% 165 / 167
pkg/pageserver
2 files
proxy.go100.0%68 / 68
server.go98.1%107 / 109
98.8% 175 / 177
apps/service/internal/daemon
1 file
daemon.go98.9%92 / 93
98.9% 92 / 93
pkg/i18n
1 file
i18n.go98.9%286 / 289
98.9% 286 / 289
apps/service
1 file
main.go99.0%101 / 102
99.0% 101 / 102
pkg/a2ui
1 file
a2ui.go100.0%337 / 337
100.0% 337 / 337
pkg/api
9 files
context.go100.0%5 / 5
evals.go100.0%5 / 5
extensions.go100.0%5 / 5
models.go100.0%4 / 4
permissions.go100.0%20 / 20
sessions.go100.0%3 / 3
tasks.go100.0%7 / 7
turn.go100.0%15 / 15
version.go100.0%4 / 4
100.0% 68 / 68
pkg/config/configtest
1 file
configtest.go100.0%3 / 3
100.0% 3 / 3
pkg/engine/breaker
1 file
breaker.go100.0%37 / 37
100.0% 37 / 37
pkg/engine/commands
1 file
commands.go100.0%124 / 124
100.0% 124 / 124
pkg/legal
1 file
legal.go100.0%9 / 9
100.0% 9 / 9
pkg/textutil
3 files
glob.go100.0%15 / 15
html.go100.0%63 / 63
textutil.go100.0%44 / 44
100.0% 122 / 122

Measuring it yourself

tools/coverage.sh                       # every test, instrumented; fails below the floor
bazel run //docs:serve                  # this page, with your numbers

The line-by-line report is Bazel’s LCOV file, bazel-out/_coverage/_coverage_report.dat; genhtml (from lcov) or an editor’s coverage view can show it against the source.