First Light First Light Function observation report

1200 of 2290 product-code functions in visidata have never been observed executing

1090 observed = 1082 in situ + 2 under driver + 6 driver redundant. The 2 under driver were never observed until an agent built a way to reach them, so the unobserved count moved from 1202 to 1200. Measured on visidata at commit 1d8a6fc

1090 observed, by any means
2290 total (product)
1082 in-situ
2 under driver
6 driver redundant
Product code (excl. apps, experimental, tests, vendor)
never observed 1200
in-situ 1082
under driver 2
driver redundant 6
total 2290
Whole package (incl. tests & vendor)
never observed 1632
in-situ 1151
under driver 2
driver redundant 6
total 2791
Baseline: cli
observed 262
only this one 1
exit code 0
Baseline: test_suite
observed 934
only this one 384
exit code 1
Baseline: replay
observed 703
only this one 144
exit code 0

Baselines: exactly what was executed
generated 2026-08-29T23:01:48.429174+00:00  ·  First Light v0.3.0
Baseline: cli
runner runners\visidata_runner.py package target\visidata\visidata command target\visidata\.venv\Scripts\python.exe -m coverage run --source=target\visidata\visidata runners\visidata_runner.py exit code 0 observed 262 product-code units (1 reached by this baseline alone) excluded apps, experimental, tests, vendor
Baseline: test_suite [exit 1, partial run]
runner runners\visidata_pytest_runner.py package target\visidata\visidata command target\visidata\.venv\Scripts\python.exe -m coverage run --source=target\visidata\visidata runners\visidata_pytest_runner.py exit code 1 tests 256 collected, 252 passed, 4 failed observed 934 product-code units (384 reached by this baseline alone) excluded apps, experimental, tests, vendor
Baseline: replay
runner runners\visidata_replay_runner.py package target\visidata\visidata command target\visidata\.venv\Scripts\python.exe -m coverage run --source=target\visidata\visidata runners\visidata_replay_runner.py exit code 0 session logs 52 replayed, 0 failed observed 703 product-code units (144 reached by this baseline alone) excluded apps, experimental, tests, vendor

Evidence map: every module, every function

observed in situ
observed under driver
driver made redundant by baseline
never observed
module never observed / total one square per function, hover for its name
visidata\canvas.py53 never / 82
visidata\loaders\f5log.py45 never / 45
visidata\loaders\_pandas.py40 never / 40
visidata\loaders\orgmode.py34 never / 34
visidata\loaders\unzip_http.py30 never / 30
visidata\deprecated.py29 never / 33
visidata\loaders\pcap.py29 never / 30
visidata\graph.py22 never / 39
visidata\canvas_text.py21 never / 21
visidata\pyobj.py21 never / 33
visidata\features\command_server.py20 never / 20
visidata\loaders\sqlite.py20 never / 20
visidata\shell.py20 never / 29
visidata\loaders\api_zulip.py19 never / 19
visidata\loaders\xlsx.py19 never / 22
visidata\path.py18 never / 68
visidata\basesheet.py17 never / 49
visidata\modify.py17 never / 32
visidata\column.py16 never / 70
visidata\freqtbl.py16 never / 24
visidata\loaders\s3.py16 never / 16
visidata\loaders\scrape.py16 never / 18
visidata\loaders\api_reddit.py15 never / 16
visidata\loaders\pandas_freqtbl.py15 never / 15
visidata\sheets.py15 never / 112
visidata\loaders\ttf.py14 never / 14
visidata\threads.py14 never / 51
visidata\_input.py13 never / 34
visidata\features\history_palette.py13 never / 14
visidata\features\join.py13 never / 24
visidata\loaders\archive.py13 never / 13
visidata\loaders\parquet.py13 never / 13
visidata\loaders\html.py12 never / 12
visidata\loaders\mbtiles.py12 never / 12
visidata\menu.py12 never / 22
visidata\features\ping.py11 never / 11
visidata\loaders\api_matrix.py11 never / 11
visidata\macros.py11 never / 13
visidata\features\cmdpalette.py10 never / 17
visidata\features\expand_cols.py10 never / 16
visidata\features\procmgr.py10 never / 14
visidata\loaders\postgres.py10 never / 10
visidata\mainloop.py10 never / 13
visidata\settings.py10 never / 59
visidata\loaders\claude.py9 never / 9
visidata\loaders\fec.py9 never / 11
visidata\loaders\geojson.py9 never / 9
visidata\loaders\mysql.py9 never / 9
visidata\loaders\xword.py9 never / 9
visidata\aggregators.py8 never / 32
visidata\loaders\json.py8 never / 18
visidata\type_date.py8 never / 14
visidata\form.py7 never / 8
visidata\loaders\rec.py7 never / 7
visidata\help.py6 never / 12
visidata\indexsheet.py6 never / 11
visidata\loaders\arrow.py6 never / 6
visidata\loaders\grep.py6 never / 6
visidata\loaders\mailbox.py6 never / 6
visidata\loaders\markdown.py6 never / 6
visidata\loaders\png.py6 never / 9
visidata\loaders\shp.py6 never / 6
visidata\loaders\xml.py6 never / 8
visidata\utils.py6 never / 30
visidata\vdobj.py6 never / 23
visidata\wrappers.py6 never / 20
visidata\clipboard.py5 never / 14
visidata\color.py5 never / 24
visidata\ddwplay.py5 never / 14
visidata\editor.py5 never / 10
visidata\features\repl.py5 never / 5
visidata\features\replay_bulk.py5 never / 7
visidata\guide.py5 never / 11
visidata\loaders\api_airtable.py5 never / 5
visidata\loaders\jsonla.py5 never / 7
visidata\loaders\vds.py5 never / 5
visidata\metasheets.py5 never / 8
visidata\optionssheet.py5 never / 10
visidata\plugins.py5 never / 7
visidata\_open.py4 never / 8
visidata\cmdlog.py4 never / 35
visidata\features\currency_to_usd.py4 never / 4
visidata\features\regex.py4 never / 13
visidata\loaders\eml.py4 never / 4
visidata\loaders\hdf5.py4 never / 4
visidata\loaders\http.py4 never / 4
visidata\loaders\lsv.py4 never / 4
visidata\loaders\npy.py4 never / 8
visidata\loaders\odf.py4 never / 4
visidata\mouse.py4 never / 11
visidata\save.py4 never / 12
visidata\sidebar.py4 never / 12
visidata\textsheet.py4 never / 10
visidata\choose.py3 never / 6
visidata\features\addcol_audiometadata.py3 never / 3
visidata\features\reload_every.py3 never / 3
visidata\features\repeat.py3 never / 4
visidata\input_history.py3 never / 5
visidata\loaders\csv.py3 never / 6
visidata\loaders\fixed_width.py3 never / 10
visidata\loaders\imap.py3 never / 3
visidata\loaders\jrnl.py3 never / 3
visidata\loaders\pdf.py3 never / 3
visidata\loaders\vcf.py3 never / 3
visidata\loaders\vdx.py3 never / 4
visidata\loaders\xlsb.py3 never / 3
visidata\loaders\yaml.py3 never / 3
visidata\pivot.py3 never / 18
visidata\statusbar.py3 never / 29
visidata\undo.py3 never / 14
visidata\_types.py2 never / 13
visidata\bezier.py2 never / 2
visidata\features\canvas_save_svg.py2 never / 2
visidata\features\graph_seaborn.py2 never / 2
visidata\features\rank.py2 never / 10
visidata\features\rename_col_cascade.py2 never / 3
visidata\features\sysedit.py2 never / 2
visidata\features\term_extras.py2 never / 2
visidata\features\window.py2 never / 9
visidata\loaders\frictionless.py2 never / 2
visidata\loaders\google.py2 never / 2
visidata\loaders\graphviz.py2 never / 2
visidata\loaders\msgpack.py2 never / 2
visidata\loaders\psv.py2 never / 2
visidata\loaders\sas.py2 never / 4
visidata\loaders\spss.py2 never / 2
visidata\loaders\toml.py2 never / 2
visidata\loaders\usv.py2 never / 2
visidata\main.py2 never / 11
visidata\search.py2 never / 9
visidata\type_floatsi.py2 never / 2
visidata\_urlcache.py1 never / 2
visidata\cliptext.py1 never / 18
visidata\features\colorsheet.py1 never / 3
visidata\features\describe.py1 never / 6
visidata\features\fill.py1 never / 2
visidata\features\go_col.py1 never / 3
visidata\features\graph_zoom_y.py1 never / 1
visidata\features\hlsearch.py1 never / 4
visidata\features\normcol.py1 never / 4
visidata\features\open_syspaste.py1 never / 1
visidata\features\pypkg.py1 never / 2
visidata\features\setcol_fake.py1 never / 2
visidata\features\slide.py1 never / 10
visidata\features\sparkline.py1 never / 2
visidata\features\sysopen_mailcap.py1 never / 1
visidata\features\type_ipaddr.py1 never / 2
visidata\features\type_url.py1 never / 1
visidata\fuzzymatch.py1 never / 8
visidata\loaders\conll.py1 never / 3
visidata\loaders\texttables.py1 never / 1
visidata\rename_col.py1 never / 4
visidata\sort.py1 never / 14
visidata\stored_list.py1 never / 4
visidata\theme.py1 never / 2
visidata\tuiwin.py1 never / 2
visidata\type_currency.py1 never / 2
visidata\__init__.py0 never / 3
visidata\clean_names.py0 never / 2
visidata\errors.py0 never / 2
visidata\expr.py0 never / 10
visidata\extensible.py0 never / 23
visidata\features\addcol_histogram.py0 never / 3
visidata\features\change_precision.py0 never / 2
visidata\features\colorbrewer.py0 never / 3
visidata\features\condfmt.py0 never / 20
visidata\features\customdate.py0 never / 2
visidata\features\dedupe.py0 never / 5
visidata\features\exec_shell.py0 never / 1
visidata\features\freeze.py0 never / 7
visidata\features\hint_types.py0 never / 2
visidata\features\incr.py0 never / 3
visidata\features\known_cols.py0 never / 1
visidata\features\layout.py0 never / 7
visidata\features\melt.py0 never / 4
visidata\features\scroll_context.py0 never / 2
visidata\features\select_equal_selected.py0 never / 1
visidata\features\status_source.py0 never / 1
visidata\features\transpose.py0 never / 2
visidata\features\unfurl.py0 never / 3
visidata\hint.py0 never / 2
visidata\keys.py0 never / 1
visidata\loaders\tsv.py0 never / 5
visidata\memory.py0 never / 5
visidata\motd.py0 never / 1
visidata\movement.py0 never / 5
visidata\selection.py0 never / 21
visidata\splitwin.py0 never / 2
visidata\text_source.py0 never / 9
visidata\apps\vdsql\_ibis.pyexcluded73 never / 73
visidata\experimental\daw\vdaw.pyexcluded59 never / 59
visidata\apps\galcon\galcon-server.pyexcluded55 never / 55
visidata\apps\galcon\galcon.pyexcluded25 never / 25
visidata\experimental\daw\mpv.pyexcluded16 never / 16
visidata\vendor\appdirs.pyexcluded15 never / 19
visidata\experimental\mark.pyexcluded13 never / 13
visidata\apps\vgit\gitsheet.pyexcluded12 never / 12
visidata\apps\vgit\status.pyexcluded12 never / 12
visidata\experimental\noahs_tapestry\tapestry.pyexcluded12 never / 12
visidata\apps\vgit\diff.pyexcluded9 never / 9
visidata\apps\vgit\repos.pyexcluded9 never / 9
visidata\apps\vgit\branch.pyexcluded8 never / 8
visidata\experimental\gdrive.pyexcluded8 never / 8
visidata\experimental\gsheets.pyexcluded8 never / 8
visidata\experimental\rownum.pyexcluded8 never / 8
visidata\apps\vgit\config.pyexcluded7 never / 7
visidata\apps\vgit\remote.pyexcluded7 never / 7
visidata\apps\vdsql\bigquery.pyexcluded6 never / 6
visidata\apps\vgit\log.pyexcluded6 never / 6
visidata\experimental\daw\merge_transcripts.pyexcluded6 never / 6
visidata\apps\vdsql\snowflake.pyexcluded5 never / 5
visidata\experimental\daw\tests\test_vdaw.pyexcluded5 never / 5
visidata\experimental\daw\xmd2json.pyexcluded5 never / 5
visidata\experimental\search_geo.pyexcluded5 never / 5
visidata\experimental\llm.pyexcluded4 never / 4
visidata\apps\vdsql\clickhouse.pyexcluded3 never / 3
visidata\apps\vdsql\setup.pyexcluded3 never / 3
visidata\apps\vgit\blame.pyexcluded3 never / 3
visidata\apps\vgit\stash.pyexcluded3 never / 3
visidata\apps\vgit\statusbar.pyexcluded3 never / 3
visidata\experimental\diff_sheet.pyexcluded3 never / 3
visidata\experimental\live_search.pyexcluded3 never / 3
visidata\experimental\liveupdate.pyexcluded3 never / 3
visidata\apps\__init__.pyexcluded2 never / 2
visidata\apps\vgit\grep.pyexcluded2 never / 2
visidata\experimental\sort_selected.pyexcluded2 never / 2
visidata\apps\vdsql\__main__.pyexcluded1 never / 1
visidata\apps\vgit\abort.pyexcluded1 never / 1
visidata\apps\vgit\main.pyexcluded1 never / 1
visidata\experimental\slide_cells.pyexcluded1 never / 1
visidata\tests\conftest.pyexcluded0 never / 2
visidata\tests\test_cache.pyexcluded0 never / 4
visidata\tests\test_cliptext.pyexcluded0 never / 11
visidata\tests\test_color.pyexcluded0 never / 7
visidata\tests\test_commands.pyexcluded0 never / 4
visidata\tests\test_completer.pyexcluded0 never / 1
visidata\tests\test_csv.pyexcluded0 never / 3
visidata\tests\test_date.pyexcluded0 never / 1
visidata\tests\test_editor.pyexcluded0 never / 5
visidata\tests\test_edittext.pyexcluded0 never / 2
visidata\tests\test_features.pyexcluded0 never / 2
visidata\tests\test_fixed_width.pyexcluded0 never / 5
visidata\tests\test_keys.pyexcluded0 never / 1
visidata\tests\test_keystrokes.pyexcluded0 never / 3
visidata\tests\test_menu.pyexcluded0 never / 1
visidata\tests\test_modify.pyexcluded0 never / 2
visidata\tests\test_open.pyexcluded0 never / 1
visidata\tests\test_parsepos.pyexcluded0 never / 1
visidata\tests\test_path.pyexcluded0 never / 6
visidata\tests\test_shell.pyexcluded0 never / 3

Driver results: 2 confirmed, 6 driver redundant, 2 not confirmed

visidata.aggregators._percentile
target/visidata/visidata/aggregators.py:198 -- _percentile(sorted(col.getValues(rows)), self.pct/100, key=float)
confirmed lines: 179, 180, 181, 182, 183, 184...
visidata.modify.changestr
target/visidata/visidata/modify.py:345 -- sheet.changestr(adds, mods, deletes)
confirmed lines: 324, 325, 326, 328, 329, 330...
Driver made redundant by baseline (6)

These functions were genuinely observed by a baseline, making the corresponding driver redundant. The unit’s provenance is observed_in_situ. The driver file is kept as a record of the path that was built.

visidata.aggregators.mean
call site not recorded
driver made redundant by baseline: replay. The unit is observed in situ; the driver is no longer the only evidence
visidata.path.modtime
target/visidata/visidata/_urlcache.py:18 -- modtime(p) where p is a visidata Path
driver made redundant by baseline: test_suite. The unit is observed in situ; the driver is no longer the only evidence
visidata.utils.colname_letters
target/visidata/visidata/sheets.py:1086 -- colname_letters(self.colname_ctr)
driver made redundant by baseline: test_suite. The unit is observed in situ; the driver is no longer the only evidence
visidata.utils.getattrdeep
target/visidata/visidata/column.py:546 -- getattrdeep(row, col.expr, None)
driver made redundant by baseline: test_suite. The unit is observed in situ; the driver is no longer the only evidence
visidata.utils.moveListItem
target/visidata/visidata/features/slide.py:22 -- moveListItem(sheet.rows, rowidx, newcolidx)
driver made redundant by baseline: test_suite. The unit is observed in situ; the driver is no longer the only evidence
visidata.utils.setattrdeep
target/visidata/visidata/column.py:551 -- setattrdeep(row, self.expr, val)
driver made redundant by baseline: test_suite. The unit is observed in situ; the driver is no longer the only evidence

Attempted, not confirmed (2)

visidata.aggregators.stdev
driver ran and coverage confirmed 2 lines of the function body; promotion refused because the declared call site could not be confirmed in the source
visidata.path.vstat
driver ran and coverage confirmed 4 lines of the function body; promotion refused because no call site was declared, so there was no claim to check

Refusal distribution: 10 drivers measured

10 drivers were measured against this evidence file. 2 promoted  ·  6 made redundant by a baseline  ·  2 refused. The table shows only classes that occurred.

Refusal class Count
line_not_a_call_site1
no_call_site1
Driver Refusal class Reason
visidata.aggregators.stdevline_not_a_call_siteline 93 of 'target/visidata/visidata/aggregators.py' is not a call site: the cited line does not call stdev; the parser finds no such call there. Correct the '# call site:' comment in the driver file.
visidata.path.vstatno_call_siteno '# call site:' comment; a driver must declare where the function is reached in production so the claim can be checked

Driver generation on watsonx.ai: 2 accepted, 3 refused of 5 drafted

ibm/granite-4-h-small on watsonx.ai Runtime, called by tools/wx_draft_driver.py, drafted a driver for functions nothing had been seen to execute. The model's output goes through the same gate as our own: the driver must run, coverage must confirm the body executed, and the declared call site is parsed to confirm the function is called there.

visidata.color.rgb_to_attrrefuseddriver process exited with non-zero return code
visidata.graph.format_input_valueacceptedbody lines 371, 374 executed
graph.py:324 suggested = format_input_value(val, xtype)
visidata.menu.menudrawrefuseddriver process exited with non-zero return code
visidata.optionssheet.commitrefuseddriver process exited with non-zero return code
visidata.threads.codestracceptedbody lines 500, 501 executed
threads.py:436 Column('funcname', getter=lambda col,row: codestr(row.code))

Not counted. The two accepted drivers are not folded into the published evidence. They were drafted hours before submission and no human has reviewed the fixtures they build. Promoting them would move never_observed from 1200 to 1198 on an unreviewed model draft, which is the shape of claim this project argues against. The two accepted drafts ship in drivers-candidates/ as candidates, and every figure elsewhere on this page excludes them.


Does the control change the outcome: 79 of 79 edits placed and named with no line number, 37 stopped

Everything above measures a codebase. This measures the tool. Each of 79 rows is a real edit payload, carrying no line number, built from a function in this evidence file and run against the shipped hook as a subprocess. Reproduce it with tools/ab_gate.py --seed 11.

The denominator. 82 functions were sampled and 3 were dropped for having no line unique within their file. That exclusion is not neutral: an ambiguous anchor is exactly the case the hook refuses, so the 79 below are the locatable subset rather than a random one. Read the rates against that.

Without the hook
0
edits questioned. All 79 proceed and nothing is said about any of them, including the 37 that rewrite code with no execution record.
With the hook
79
edits placed and named by function, from the edited text alone. Under --strict, 37 were stopped: every one had never been observed, and 0 observed functions were stopped by mistake.

What this is not. These are scripted edits, not a live agent. Nothing here shows a model changing its mind. It shows that the control fires on every edit it is given, places each one without a line number, and separates the code with no execution record from the rest without a single false stop. Whether an agent then behaves differently is a claim this run does not make.

And what it lets through. When an edit cannot be placed at all, --strict exits 0 and the edit proceeds. Not knowing which function is being edited is not evidence that it is unobserved, so the gate fails open by design. That is the first way past it, it is not hypothetical, and it belongs on this page next to the stop count rather than in a source comment.