Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

.nornir/docs/test-matrix-inventory-history.md

facett — Test-Matrix Fat-List Inventory

UPDATE 2026-07-22 — this inventory is now partly HISTORY. Read ## Round 2026-07-22 at the bottom first: the ~10 zero-cell panes have been backfilled, the P0 loose-viewport-multiple class is closed (including the canonical SCREEN_BOUND_K, which was already 1.0 in src — the tests were still capping at 6-8x), the vacuous near_plane_probe.rs and the file-existence composite emit are fixed, and the crate counts below are stale. The LAW and the WEAK-oracle taxonomy are unchanged and still govern.

Exhaustive enumeration of EVERY #[test], every functional_status / facett_core::testmatrix::emit* emitter, and every snapshot / robot-UI / golden-image surface in the facett workspace — judged against the TWO-AXIS LAW (input coverage × oracle exactness) from nornir/.nornir/agent-ui-test-fixing.md.

Scope: the 26 workspace members in facett/Cargo.toml (.claude/worktrees copies and target/ are excluded). Generated by read-only analysis of the actual assertion bodies — not from test names.

The law, in one line: every check is assert(invariant(f(input))). It is WEAK if it tests only ONE input value (Axis A fail) OR if its threshold is a loose multiple / tolerance / drew()-only / lit_px>0-only / literal-true rather than the EXACT contract bound (Axis B fail). The canonical failure was facett-map3d's SCREEN_BOUND_K = 4.0 + a half_h*8 extent cap that tolerated a triangle 8× the viewport while every green test sailed past the smear.


Summary table (per-crate counts)

Crate #tests #emitters #WEAK Notes
facett-core ~170 12 (10 base + 2 wgpu) 8 render backbone is byte-identical/exact; weak spots are CPU↔GPU 4% mask + >1000 floors
facett-graph 11 9 6 callchain ok==cases strong; robot body_ratio>0.01 near-vacuous
facett-graph3d 23 4 9 many render_callchain emits pass literal true
facett-graphview 18 1 (11 call sites) 11 most emits literal true; raster matrix = buffer-shape only
facett-geomap 43 12 14 strong camera/cull math; a11y + robot single-fixture
facett-map 34 16 13 one emit ok is literal true; goldens written but never diffed
facett-map3d 57 20 17 canonical failure region: SCREEN_BOUND_K=4.0, half_h*8 caps still loose
facett-pipeline 27 14 5 sweep emits strong; robot byte/ratio floors weak
facett-syschart 15 10 5 body_ratio>0.01 confinement weakest; a11y fc5 ok weak
facett-demo 50 12 7 control/robot/mega matrices strong; PNG byte-floors + half_h*8 spoke cap weak
facett (umbrella) 27 8 3 compliance/contrast strong; geometry_count _ => 1 fallback loophole
facett-arrow 3 0 1 missing_id_column_errors is is_err()-only
facett-card 12 1 3 exact clip/field tests; single-theme drew()-only render
facett-console 9 1 2 themed render drew()-only single preset
facett-docview 15 0 3 3 non-blank pixel floors (dark>1000 etc.) by design
facett-filedialog 13 1 1 exact nav/clip; a11y single fixture
facett-form 14 0 2 validation strong; take_submitted negative-only
facett-grid 67 3 6 flagship suite; only true golden = snapshot.rs (byte-floor, no pixel diff)
facett-icebergview 8 0 0 all multi-value/exact
facett-jobview 8 0 1 pull_source_feeds asserts pre-pull empty only
facett-menu 9 0 1 fuzzy > relational score
facett-osm 6 0 3 2 #[ignore] real-data + loose >1000
facett-plot 1 0 1 thinnest crate: one chart, no render/no Bars/empty
facett-plotters 37 5 2 5 a11y emitters all exact 2-value; treemap/kde tolerances
facett-pop 3 2 0 both emitters exact 2-value
facett-table 14 2 2 exact clip/identity; a11y fc5 single-condition
facett-video 8 0 1 frame_index<10 loose loop check
xtask 0 0 0 build tooling, no tests
TOTAL ~582 ~140 ~126 (WEAK = single-value OR loose-threshold OR literal-true/drew-only)

Test counts are the per-crate #[test]/#[tokio::test] totals; emitter counts are facett_core::testmatrix::emit* call sites; WEAK is the count of flagged checks per the fix list at the bottom. Examples (fn main binaries: robot_drive.rs, quality_matrix.rs, *_demo.rs, selftest.rs, render_png.rs, nornir-bench.rs) are NOT counted as tests.


The emitter API (facett-core seam)

facett-core/src/testmatrix.rs wraps nornir_testmatrix::functional_status so leaf crates call facett_core::testmatrix::emit(component, check, ok, detail) (or emit_render(component, vertices, geometry) → ok = vertices>0 && geometry>0, or emit_non_blank(component, ratio, min_ratio, geometry) → ok = ratio>=min_ratio && geometry>0). All gated #[cfg(feature="testmatrix")]; release builds compile them out (no nornir-testmatrix dep edge). The umbrella and demo crates reach it via the re-export facett::core::testmatrix::emit*.

testmatrix.rs itself has one self-test (emit_render_writes_green_and_red_rows) that points the sink at a temp file and asserts a green + 3 red rows land with the right PASS/FAIL status — an inject-and-assert of the RED/green contract (STRONG).


Per-crate inventory

facett-core (~170 tests, 12 emitters)

The render backbone is the strongest in the workspace: gatling-vs-sequential and bucketed-vs-brute-force rasters are asserted byte-identical, blend is exact Porter-Duff (±1), SDF coverage is swept over aa∈{0.5,1,2,4} with exact band bounds. The WCAG theme gate (look/tests.rs) sweeps all 5 presets × light/dark with exact contrast bounds (body≥4.5, dim≥3.0, ui≥3.0, status≥4.5).

Tests (by file, compressed)

Emitters

file:line component check ok invariant
tests/a11y.rs:41 a11y::node fc4_button_value role==Button && numeric_value==Some(42)
tests/a11y.rs:65 a11y::node fc4_list_item_toggle selected==Toggled::True && unselected==Toggled::False
render_callchain_matrix.rs:104 render::prim lower_shape_geometry_bounds swept r×aa: shape tags + clamped inner + line bounds
render_callchain_matrix.rs:135 render::camera project2d_view_proj_golden affine && perspective && view-space match golden
render_callchain_matrix.rs:159 render::layer ordered_back_to_front_stable ascending-z + stable tie
render_callchain_matrix.rs:194 render::cpu::sdf coverage_kernel_and_dispatch monotone AA + dispatch + line width over sweep
render_callchain_matrix.rs:238 render::cpu::scissor clip_area_and_zero_ink_outside inside rect + area bounded + 0 ink outside
render_callchain_matrix.rs:264 render::backend decide_probe_to_backend 3 probe variants map correctly
render_callchain_matrix.rs:320 render::cpu::raster matrix_case per-case gatling==seq byte-identity + centre px + size (drew=lit>0 sub-clause weak)
render_callchain_matrix.rs:342 render::cpu::raster matrix_sweep_complete passed==cases
render_callchain_matrix.rs:437 (wgpu) render::cpu::surface headless_nonblank lit_px>1000
render_callchain_matrix.rs:470 (wgpu) render::gpu::offscreen nonblank_and_cpu_parity ink>1000 && disagreement<0.04

Snapshot/robot/golden


facett-graph (11 tests, 9 emitters)

Tests

Emitters

file:line component check ok invariant
a11y.rs:37 DepGraphView fc4_nodes_are_buttons both alpha+beta role==Button
a11y.rs:65 DepGraphView fc5_click_selects_by_label selection none after toggle-off (encodes only the deselect end)
callchain_matrix.rs:176 facett-graph.build scene_counts_and_label_colours ok==cases (72)
callchain_matrix.rs:250 facett-graph.layout positions_finite_in_rect_circular_force ok==cases
callchain_matrix.rs:295 facett-graph.edges endpoints_are_node_centres ok==cases
callchain_matrix.rs:365 facett-graph.render_matrix all_cells_draw_with_correct_state drew==cases && state_correct==cases
callchain_matrix.rs:387 facett-graph.render_matrix empty_vs_populated_separable populated verts > empty×2
robot_callchain.rs:91 facett-graph.robot_confined non_blank_and_confined body_ratio>0.01 && leak<0.02
robot_callchain.rs:127 facett-graph.robot_png final_picture_blob_written png bytes>1000

Snapshot/robot


facett-graph3d (23 tests, 4 emitters)

Tests

Emitters

file:line component check ok invariant
a11y_determinism.rs:40 Graph3D fc4_yaw_accesskit_value yaw==0.6 (±1e-5)
a11y_determinism.rs:71 Graph3D fc7_clock_determinism clock2 dup bit-equal && clock5>clock2
rabbit3d_snapshot.rs:85 RabbitLogo3D renders_lit_with_depth ratio>0.05 && shades≥8 && tris>50
render_callchain.rs:45 facett-graph3d (multiplexed by check arg) MANY call sites pass literal true (sphere/helix/force/state/logo_mesh/matrix_cases); only ui_drew/robot_yaw/robot_nonblank/logo_cpu_lit/gpu_geometry carry the live ok

Snapshot/robot


facett-graphview (18 tests, 1 emitter / 11 call sites)

Raw render engine (no Facet). No kittest/golden — its "robot" surface is the RGBA→ColorImage texture handoff.

Tests

Emitters

file:line component check ok invariant
render_callchain.rs:52 (shim, 11 call sites) facett-graphview various most pass literal true; EXCEPTIONS carrying live ok: cpu_render_nonblank, l0_render_nonblank, matrix_{bounds,camera,lower,raster}_stage (accumulated *_ok_all), frame_to_egui_texture_nonblank

Snapshot/robot


facett-geomap (43 tests, 12 emitters)

Tests

Emitters

file:line component check ok invariant
src/osm2d/clip.rs:344 facett-geomap.clip bounds_extremes_preserves_onscreen ok==cases
tests/a11y.rs:76 GeoMap fc4_accesskit_nodes pane==4 && Malmö==320 && Göteborg==210
tests/basemap_snapshot.rs:107 GeoMap.basemap emit_non_blank (min 0.05) ratio≥0.05 && geometry>0
callchain_matrix.rs:118 facett-geomap.camera roundtrip_viewport_and_anchor_fixed ok==cases
callchain_matrix.rs:155 facett-geomap.camera fit_contains_data ok==cases
callchain_matrix.rs:207 facett-geomap.point_grid cull_exact_stride_monotone ok==cases
callchain_matrix.rs:253 facett-geomap.lod_stride monotone_and_budget_capped strides monotone && dense drawn≤budget
callchain_matrix.rs:323 facett-geomap.render_matrix all_cells_draw_within_budget drew==cases && bounded==cases
callchain_matrix.rs:344 facett-geomap.render_matrix empty_vs_populated_separable populated verts > empty×2
robot_callchain.rs:63 facett-geomap.robot pan_zoom_changes_camera_state z1>z0 && vis1<vis0 && c1<c0
robot_callchain.rs:91 facett-geomap.robot pane_node_queryable Image role && value==vis
robot_callchain.rs:156 facett-geomap.robot_confined non_blank_and_confined body_ratio>0.5 && leak<0.02

Snapshot/robot


facett-map (34 tests, 16 emitters)

Tests

Emitters

file:line component check ok invariant
a11y.rs:25 MapView fc4_pane_node role==Image && value==Some(3.0)
callchain_matrix.rs:121 facett-map.project mercator_monotone_and_f32_matches_f64 ok==cases
callchain_matrix.rs:167 facett-map.classify kind_area_fill_and_ring_close ok==cases
callchain_matrix.rs:224 facett-map.tessellate earclip_area_equals_shoelace literal true (asserts gate via panic, emit row always green)
callchain_matrix.rs:290 facett-map.index lod_partition_and_cull_monotone tiers sum==total && n0≤n1≤n2 && tight≤wide
callchain_matrix.rs:328 facett-map.fit merc_bbox_contains_all_features ok==cases
callchain_matrix.rs:389 facett-map.render_matrix all_cells_draw_with_correct_fill drew==cases && filled_correct==cases
callchain_matrix.rs:410 facett-map.render_matrix empty_vs_populated_separable populated verts > empty×2
rabbit_snapshot.rs:100 MapView.rabbit_basemap emit_non_blank (0.05) ratio≥0.05 && geometry>0
render_proof.rs:103 MapView.points emit_non_blank (0.01) ratio≥0.01
render_proof.rs:124 MapView.empty blank_is_rejected blank.is_err()
render_proof.rs:163 MapView.ways emit_non_blank (0.01) ratio≥0.01
render_proof.rs:233 MapView.filled_areas water_and_park_fill water_cov>0.05 && green_cov>0.005
render_proof.rs:259 MapView.tiny_room emit_non_blank (0.01) ratio≥0.01
robot_callchain.rs:57 facett-map.robot pane_node_queryable role==Image && value==np
robot_callchain.rs:132 facett-map.robot_confined non_blank_and_confined body_ratio>0.5 && leak<0.02

Snapshot/robot


facett-map3d (57 tests, 20 emitters) — CANONICAL FAILURE REGION

src/lib.rs:504 still has const SCREEN_BOUND_K: f32 = 4.0; and the frustum_cull emit (lib.rs:963) caps max_extent_px <= half_h*8 + 1 — i.e. the exact half_h*8 loose multiple the law calls out. Every smear-guard test (no_spokes, clip_pipeline, matrix_grid, golden_248, the legacy frustum_scissor at half_h*6) uses the same loose viewport multiple, not the ~2×viewport contract bound.

Tests (compressed)

Emitters

file:line component check ok invariant
src/lib.rs:838 facett-map3d scissor (GPU) gpu scissor rect inside widget rect
src/lib.rs:941 facett-map3d near_clip near_behind_survived==0
src/lib.rs:951 facett-map3d project project_in==project_out && nan==0
src/lib.rs:964 facett-map3d frustum_cull max_extent_px ≤ half_h*8+1 (loose ×8)
src/lib.rs:974 facett-map3d cull cull_out ≤ cull_in
src/lib.rs:985 facett-map3d shade shade_out>0
src/lib.rs:992 facett-map3d depth_sort depth_monotone
src/lib.rs:1159 facett-map3d scissor (CPU) ink_outside_rect==0
examples/selftest.rs:80 facett-map3d 3d_map_rendered tris>0 && tiles>0 && lit_px>0
clip_pipeline.rs:407 facett-map3d composite png_path.exists() (file-only, weaker than test body)
golden_248.rs:340 facett-map3d golden_248 ink==0 && lit>0 && cfrac>MAX_DIFF_FRACTION
gpu_depth.rs:176 facett-map3d gpu_depth_buffer_occludes used_gpu && red>500 && blue>500 && near_wins>0.8
gpu_depth.rs:255 facett-map3d gpu_depth_buffer_is_the_cause on>0.9 && off<on−0.05
gpu_scissor.rs:170 facett-map3d gpu_scissor_no_ink_outside_rect used_gpu && frac<0.0005
matrix_grid.rs:212 facett-map3d matrix_grid per-case finite && no_smear(≤scale*8) && front && ink==0
matrix_grid.rs:249 facett-map3d matrix_grid_summary failures.is_empty()
no_spokes.rs:64 facett-map3d no_projection_spokes worst < half_h*8 (loose ×8) && faces>0
render_proof.rs:77 facett-map3d renders_lit_with_depth ratio>0.05 && shades≥8 && tris>50
robot_ui.rs:157 facett-map3d robot_ui_confined frac<0.0005 && lit>300
zfight.rs:230 facett-map3d ground_no_zfight_flicker fixed_green>5000 && fixed_ratio<0.02 && ctrl>fixed+0.05

Snapshot/robot


facett-pipeline (27 tests, 14 emitters)

Tests

Emitters

file:line component check ok invariant
a11y_determinism.rs:71 PipelineView fc4_dag_node_value numeric_value==640 && toggled==True
a11y_determinism.rs:96 PipelineView fc7_clock_determinism !ta.is_empty() && ta==tb
a11y_determinism.rs:122 PipelineView fc8_idle_flag running!idle && done idle && busy!idle
callchain_matrix.rs:211 facett-pipeline.columns toposort_monotone_cycle_safe ok==cases
callchain_matrix.rs:253 facett-pipeline.layout scene_x_monotone_rows_separated ok==cases
callchain_matrix.rs:301 facett-pipeline.camera fit_zoom_pan_cull ok==cases
callchain_matrix.rs:346 facett-pipeline.status counts_errors_idle_mapping ok==cases
callchain_matrix.rs:411 facett-pipeline.render_matrix all_cells_draw_with_correct_state drew==cases && state_correct==cases
callchain_matrix.rs:430 facett-pipeline.render_matrix empty_vs_populated_separable rf.verts > re.verts×2
knut_facett_matrix.rs:375 PipelineView.knut_connector all_cells_pass cells==36
knut_facett_matrix.rs:412 PipelineView.selection_detail failed_node_detail sel.node==failed && sel.error==err
robot_callchain.rs:72 facett-pipeline.robot click_selects_stage selected && role==Button
robot_callchain.rs:131 facett-pipeline.robot_confined non_blank_and_confined body_ratio>0.3 && leak<0.05
robot_callchain.rs:164 facett-pipeline.robot_png final_picture_blob_written bytes>1000

Snapshot/robot


facett-syschart (15 tests, 10 emitters)

Tests

Emitters

file:line component check ok invariant
a11y.rs:52 SystemChart fc4_node_badge_value pki.value==3 && oidc.value==7
a11y.rs:89 SystemChart fc5_click_selects_by_stable_id selected().is_none() (only encodes the toggle-off end)
callchain_matrix.rs:187 facett-syschart.place centres_finite_confined_monotone ok==cases
callchain_matrix.rs:228 facett-syschart.edges endpoints_resolve_by_id ok==cases
callchain_matrix.rs:273 facett-syschart.select id_keyed_reorder_stable_badges ok==cases
callchain_matrix.rs:335 facett-syschart.render_matrix all_cells_draw_with_correct_state drew==cases && state_correct==cases
callchain_matrix.rs:354 facett-syschart.render_matrix empty_vs_populated_separable rf.verts > re.verts×2
robot_callchain.rs:81 facett-syschart.robot click_selects_node selected && is_button && deselected
robot_callchain.rs:137 facett-syschart.robot_confined non_blank_and_confined body_ratio>0.01 (1% floor) && leak<0.05
robot_callchain.rs:171 facett-syschart.robot_png final_picture_blob_written bytes>1000

Snapshot/robot


facett-demo (50 tests, 12 emitters)

The control/robot/mega matrices are exemplary (file-channel + AccessKit robot drive across every component × data × palette with exact state-pointer asserts). Weak spots are the PNG byte floors and the half_h*8 spoke cap inherited from map3d.

Tests (compressed)

Emitters

file:line component check ok invariant
gpu_chunk.rs:118 facett-map gpu_geom_buffer_chunked chunk_count≥1 && all chunks ≤ forced_cap
mega_matrix.rs:785 facett_demo.mega_matrix all_cells_pass passed==total
mega_matrix.rs:902 facett_demo.palette_gallery every_palette_renders shots==Theme::ALL.len() && all >5000 bytes
osm3d_city.rs:89 facett-map3d osm3d_frames_visible_city visible_buildings>0 && ratio>0.05
osm3d_spoke.rs:61 facett-map3d osm3d_real_no_projection_spokes worst < 8*half_h && faces>0
osm_tabs.rs:108 facett_demo.osm_2d emit_render verts2>0 && geom2>0
osm_tabs.rs:109 facett_demo.osm_3d emit_render verts3>0 && geom3>0
osm_tabs.rs:112 facett_demo.osm_2d renders_non_blank verts2>0 && visible_points>0
osm_tabs.rs:121 facett_demo.osm_3d renders_non_blank verts3>0 && visible_triangles>0
region_picker.rs:78 facett_demo.region_picker dialog_presets_and_mapping presets.len()==3
region_picker.rs:148 facett_demo.region_picker cache_hit_loads_non_blank r2.drew() && geom>0
region_picker.rs:218 facett_demo.region_picker host_swaps_region_into_tabs applied=="Skandinavien" && r.drew()

(control_matrix.rs and robot_demo.rs write nornir_testmatrix::TestResultRows to JSONL directly, not via emit.)

Snapshot/robot


facett (umbrella, 27 tests, 8 emitters)

Tests

Emitters

file:line component check ok invariant
compliance.rs:203 compliance {name}_themeable c.themeable || in EXCEPTIONS
compliance.rs:242 compliance registry_covers_all_components every expected name present
matrix.rs:168 (emit_render helper, called :182,:282) {name} / {name}@sci_fi render vertices>0 && geometry_count>0 (fallback _ => 1 auto-greens unknown components)
testmatrix_wiring.rs:95 testmatrix_wiring roundtrip_row_count read_back.len()==rows.len()
testmatrix_wiring.rs:101 testmatrix_wiring summary_tally passed==3 && failed==1 && ignored==1
testmatrix_wiring.rs:107 testmatrix_wiring render_matrix_shows_red grid.contains('✗')

Snapshot/robot


Small component crates (condensed)

facett-arrow (3): scene_from_edge_batch (3 nodes/2 edges); table maps cols/rows; missing_id_column errors. No emitters/snapshots.

facett-card (12 + 1 a11y): field kind inference (5 variants); subcards nest counts; read render state (8 fields exact); copy nested JSON; copy↔paste roundtrip; paste rejects garbage; scale clamps (boundary); caps; edit-mode toggle; themed render (drew()-only single theme); empty card. a11y kittest: chip Label value==3.0 + 2 hugin labels. Emitter a11y.rs:83 CardView/fc4_chip_and_avatar_nodes (exact, single fixture).

facett-console (9 + a11y): ANSI split runs; plain line one span; scrollback ring drops oldest (max 3); copy plain; animation deterministic (±1e-6); caps+serde; headless draws 40 lines; themed render (drew()-only single preset). a11y kittest: input value=="cargo test --all", scrollback value==2.0. Emitter a11y.rs:52 exact.

facett-docview (15): parse intrinsic size; rasterize non-blank (dark>1000); svg text renders (dark_ink>200); empty fontdb drops text (bug pin dark==0); clamp to MAX_TEX_DIM; state pages/toc/zoom; jump+clamp; zoom steps+fit; caps scale==zoom; headless render; render after jump; from_svgs skips bad; empty hint; lazy band fetch (0<fetched<100); lazy jump fetches target. No emitters/snapshots.

facett-filedialog (12 + a11y): sort dirs-first; arrow nav+confirm; confirm dir navigates; type filter; pick-folder dirs only; open-many; save typed name; cancel; copy cursored; caps+serde; headless; keymap ArrowDown moves cursor (real UI). a11y kittest: rows Button, selected Toggled::True. Emitter a11y.rs:65 exact, single fixture.

facett-form (14): valid default; reject bad (3 field errors); ymd accept/reject (5 values); dirty tracking; mark clean; copy JSON; paste roundtrip; paste rejects garbage; caps; cut keeps; take_submitted None-before-save (negative-only); headless clean/errors/dirty-after-paste. No emitters/snapshots.

facett-grid (67 + a11y/perf/snapshot): the flagship — type detection 100k; sort+multisort invariants; visible window 1M (count<64); selection→TSV exact; copy follows sort; scale row height; filter; caps; state contract; headless 5000 rows; themed all palettes (drew()-only); full edit lifecycle (begin/commit/invalid/escape/text, GridChange exact); validate all kinds; GUI commit end-to-end; zero-copy Arc identity; typed column copy/paste; keymap ArrowDown. arrow.rs: type maps + ISO date/timestamp (all precisions) + null. condfmt.rs: normalize/lerp exact, heat_color a()> relational. data.rs/selection.rs/sort.rs/viewport.rs: exact group/TSV/perm/window math. a11y kittest: header Button + cell value==20.0 + sort Toggled. perf.rs: window constant across sizes; timing slack thresholds; ingest <5s. snapshot.rs: wgpu golden — byte-floor only, no pixel diff. Emitters a11y.rs:60/85 exact; snapshot.rs:106 Grid.snapshot/flagship_png_non_trivial WEAK.

facett-icebergview (8): newest snapshot first; time-travel changes rows; state full list; paging windows (+ across batches); headless; empty hint; caps. All multi-value/exact. No emitters/snapshots.

facett-jobview (8): status roundtrip+active; default sort newest; toggle sort; kind filter; counts+state; fmt_elapsed buckets (5 exact); pull_source asserts pre-pull empty only; headless. No emitters/snapshots.

facett-menu (9): fuzzy subsequence; fuzzy prefers contiguous (relational >); rank filters disabled; rank keywords; cursor wraps; invoke+close; state hits+invoked; builders compose; disabled never matched. No emitters/snapshots/render.

facett-osm (6): decode point/linestring exact; read synthetic geoparquet; classify polygon vs line; read synthetic ways; read real Liechtenstein ways #[ignore] (>1000); read real nodes #[ignore] (>100000). No emitters/snapshots.

facett-plot (1): state_json reports series (line, 3 points). Thinnest crate — single chart, no Bars/empty/render. No emitters/snapshots.

facett-plotters (37 + 5 a11y): boxplot percentile (numpy type7), quartiles, outliers, empty, single, csv; candlestick classification, y-mapping, x-centers, bar roundtrip, range, csv; heatmap tile no-gaps, bounds row-major, range ignores nan, csv; ramp lerp/stops/clamp/degenerate; treemap area partition, proportional ±0.2, skip zero/neg, empty, single, disjoint; violin kde lengths, nonneg+peak, integrates ~1 ±0.05, empty, silverman, csv. 5 a11y kittest emitters (treemap/box/heatmap/candle/violin) all exact 2-value. Emitters a11y.rs:37/66/91/120/148 all STRONG.

facett-pop (3): totals (done 60/total 110); a11y rows progress fractions (0.5/1.0); idle flag two-state. Emitters a11y.rs:35/57 both exact 2-value (STRONG).

facett-table (14 + a11y): truncate cap; state shape; caps; copy all/selected (exact TSV); row identity index vs RowId; select toggles; cut==copy read-only; paste rejected; empty copies nothing; scale clamps. a11y kittest: selected Toggled::True/unselected False; row label no collision. Emitters a11y.rs:57 exact; a11y.rs:85 single-condition.

facett-video (8): frame count/bounds; playback advances injected clock (frame 12); loops (frame_index<10 loose); seek clamps; roi roundtrip; copy frame→viewer Image; state+caps; headless draws. No emitters/snapshots.


⚠ WEAK ORACLES — fix list

Every check below fails Axis A (single input) and/or Axis B (loose threshold / drew()-only / lit_px>0-only / literal-true / byte-floor). Grouped by severity. Actionable: tighten the threshold to the exact contract bound and/or sweep the input boundaries the function's own branches define, then prove the oracle goes RED on the broken code before claiming it fixed.

P0 — loose viewport multiples (the canonical smear class)

P1 — literal-true / file-existence emits (matrix row decoupled from the real check)

P2 — drew()-only / verts>0-only / lit_px>0-only render proofs

P3 — loose tolerance / "big enough" floors

P4 — single-value input (Axis A only), exact bound otherwise


Provenance

This inventory was produced by read-only static analysis of the actual assertion bodies (ripgrep + Read), not from test names. Counts may drift as the suite evolves; regenerate by re-walking Cargo.toml members, rg '#\[test\]', and rg 'testmatrix::emit' and re-reading the bodies. The two-axis law it is judged against lives in /run/media/rickard/T9/git/nornir/.nornir/agent-ui-test-fixing.md.


Round 2026-07-22 — what this inventory drove, and what it now says

1. The zero-cell panes are backfilled (14 crates)

Every crate that emitted no testmatrix row of either aspect now has one, and every one of them got it through the SHARED facett_core::testmatrix::probe_and_emit seam — one call per pane, no bespoke harness, no twinned sink (L5).

crate what it needed cell
facett-gantt impl Facet + select_id/clear_selection drive seam headless_render + responds_to_input
facett-calendar impl Facet + select_date/month nav same
facett-kanban impl Facet + select_id/move_card (the headless drag) same
facett-markdown impl Facet + set_text/mode toggle + copy/paste caps same
facett-file impl Facet + attach/detach (the headless drop / ✕) same
facett-toast impl Facet (overlay: forwards ui.ctx()) + push/dismiss/tick same
facett-search impl Facet + set_text/submit same
facett-cfd impl Facet + push_snapshot/clear_series same
facett-sdp impl Facet + mode/add/remove/set_query same
facett-brokkr impl Facet + mode/add_stage/set_text same
facett-holger had impl Facet, but no update_json override same, plus the bug below
facett-streamlit one loop over the registry a cell per registered component (13)
facett-arrow it is an adapter, not a pane its OUTPUT driven through the probe (Scene→GraphView, batch→Table)
facett-wasm-demo wasm shim over the demo still none — deliberately (it has no independent surface)

Each pane also got a shared local() fixture in src/, and the existing robot test now consumes it instead of twinning its own copy.

Two real bugs the backfill found

2. P0 — the loose viewport multiples are CLOSED

The inventory named SCREEN_BOUND_K = 4.0 as the canonical failure. In src it had already been tightened to 1.0; the tests had not followed, and that is what kept the class alive — a suite measuring a fixed renderer against a cap 4× looser than its contract.

site was now
facett-map3d/tests/no_spokes.rs half_h * 8 half_h * 2 + 1 (measured worst 704 of 721)
facett-map3d/tests/matrix_grid.rs scale * 8 + 1 scale * 2 + 1 (2688 swept cases, worst 600)
facett-map3d/tests/golden_248.rs scale * 8 scale * 2 + 1
facett-map3d/tests/frustum_scissor.rs half_h * 6 half_h * 2 + 1
facett-demo/tests/osm3d_spoke.rs half_h * 8 half_h * 2 + 1 (same cap, REAL OSM data)

The RED-when-broken proof is in the suite, not in prose. golden_248's sensitivity control now asserts BOTH halves at the smear-bait pose: the preserved pre-fix pipeline projects 1097 px, which breaches the new 601 px cap (so the tightened oracle detects the smear) and passes the historical 2880 px cap (so the old oracle was green on broken code). The loophole is demonstrated by an assertion.

Note for the next round: flipping SCREEN_BOUND_K back to 4.0 does not by itself trip these tests, because the full frustum clip (clip_tri_frustum) is now the binding constraint on the synthetic scenes — the screen bound is a second net. The fail-on-bug control therefore drives shade_faces_clip(.., near_clip = false), the preserved pre-fix pipeline, which is the defect the caps exist to catch.

3. P1/P2 — the decoupled and vacuous oracles

4. New coverage that did not exist

5. Still open from the WEAK list

Unaddressed this round, in rough value order: the P1 literal-true emits in facett-graph3d/tests/render_callchain.rs, facett-graphview/tests/render_callchain.rs and facett-map/tests/callchain_matrix.rs:224; the umbrella's geometry_count _ => 1 auto-green fallback; the P3 PNG byte-floor goldens across the whole workspace (only golden_248 does a real perceptual diff); the body_ratio > 0.01 near-vacuous confinement floors in syschart/graph; and the CPU↔GPU disagreement < 0.04 binary-mask tolerance in facett-core.