Skip to content

Repo health

Measured at 4bc8eab67. Generated by moondeck/check/repo_health.py on every KPI-gate run. Do not edit by hand.

Current state only; the trend is this file's git history (git log -p docs/reference/metrics/repo-health.md). Nothing here fails a build: the numbers make growth visible, the judgment stays human.

Since v7.0.0

Metric v7.0.0 Now Change
flash desktop-macos 2,221 KB 2,545 KB +324.1 KB (+14.6%)
flash esp32 2,095 KB 2,230 KB +135.5 KB (+6.5%)
flash esp32-16mb 2,343 KB 2,210 KB -133.1 KB (-5.7%)
flash esp32-eth 1,642 KB 1,827 KB +185.6 KB (+11.3%)
flash esp32-pico 2,058 KB 2,375 KB +317.6 KB (+15.4%)
flash esp32-wrover 1,801 KB 2,145 KB +344.1 KB (+19.1%)
flash esp32c3 2,199 KB 2,349 KB +150.5 KB (+6.8%)
flash esp32p4rev1-eth 2,360 KB 2,556 KB +196.3 KB (+8.3%)
flash esp32p4rev1-eth-wifi 2,606 KB 2,809 KB +202.8 KB (+7.8%)
flash esp32p4rev3-eth 2,357 KB 2,554 KB +196.7 KB (+8.3%)
flash esp32p4rev3-eth-wifi - 2,612 KB new
flash esp32s3-n16r8 2,300 KB 2,435 KB +135.0 KB (+5.9%)
flash esp32s3-n32r16 2,322 KB 2,431 KB +109.3 KB (+4.7%)
flash esp32s3-n8r2 - 2,194 KB new
flash esp32s3-n8r8 2,277 KB 2,301 KB +23.8 KB (+1.0%)
flash esp32s3-zero 2,068 KB 2,076 KB +8.0 KB (+0.4%)
flash esp32s31 2,597 KB 2,733 KB +135.9 KB (+5.2%)
flash teensy41 1,140 KB 1,259 KB +119.0 KB (+10.4%)
free heap esp32 33,034 KB 33,034 KB +0.0 KB (+0.0%)
tick Effects_pipeline_builds_and_renders (desktop-macos) 7 µs 7 µs +0 (+0.0%)
tick Layouts_resize_reallocates_live (desktop-macos) 10 µs 10 µs +0 (+0.0%)
lines core 33,397 37,845 +4,448 (+13.3%)
lines light 31,681 35,148 +3,467 (+10.9%)
lines platform 22,993 25,937 +2,944 (+12.8%)
lines ui 13,043 14,559 +1,516 (+11.6%)
lines test 76,140 86,853 +10,713 (+14.1%)
lines moondeck 32,680 35,606 +2,926 (+9.0%)
code findings 1,642 1,607 -35 (-2.1%)
unit tests 2,836 3,263 +427 (+15.1%)
scenarios 36 37 +1 (+2.8%)

Against the release v7.0.0, the fixed point a user compares with; the tables below compare against the last commit. A firmware not rebuilt since v7.0.0 is left out, and a measure the release did not record yet, such as the code check, joins from the next one.

Firmware size

Target Flash Capacity Used Built
desktop-linux 2,488 KB - - STALE 32d
desktop-macos 2,545 KB (+512 B) ⚠ - - yes
desktop-windows 1,880 KB - - STALE 44d
esp32 2,230 KB 2,496 KB 89% carried 1d
esp32-16mb 2,210 KB 4,096 KB 54% STALE 14d
esp32-eth 1,827 KB 2,496 KB 73% carried 2d
esp32-pico 2,375 KB 3,072 KB 77% carried 3d
esp32-wrover 2,145 KB 2,496 KB 86% STALE 14d
esp32c3 2,349 KB 2,496 KB 94% carried 1d
esp32p4rev1-eth 2,556 KB 4,096 KB 62% carried 1d
esp32p4rev1-eth-wifi 2,809 KB 4,096 KB 69% carried 0d
esp32p4rev3-eth 2,554 KB 4,096 KB 62% carried 2d
esp32p4rev3-eth-wifi 2,612 KB 4,096 KB 64% STALE 14d
esp32s3-n16r8 2,435 KB (+144 B) ⚠ 4,096 KB 59% yes
esp32s3-n32r16 2,431 KB 4,096 KB 59% carried 3d
esp32s3-n8r2 2,194 KB 3,072 KB 71% STALE 14d
esp32s3-n8r8 2,301 KB 3,072 KB 75% STALE 14d
esp32s3-zero 2,076 KB 2,496 KB 83% STALE 14d
esp32s31 2,733 KB 4,096 KB 67% carried 2d
qemu 1,351 KB - - carried (age?)
teensy41 1,259 KB 3,456 KB 36% carried 3d

Built: yes was measured this run. carried (age?) was not rebuilt either and predates this record, so its age is unknown: it dates itself on the next build. carried Nd was NOT rebuilt and its number is N days old, so an absent delta says nothing about the change. STALE marks a carry older than 7 days: the number has gone unchecked long enough that growth will surface later as one jump, blamed on whichever commit happens to rebuild that target. Used is against the app slot in the firmware's own partition table.

Flash change by kind

Target Net New Removed Grown Shrunk Other Since
esp32s3-n16r8 +0.1 KB +0.1 KB +0.0 KB +0.0 KB -0.0 KB +0.0 KB 4bc8eab67

Largest moves:

  • esp32s3-n16r8: mm::HttpServerModule::readDigest(mm::platform::TcpConnection +118 B, mm::HttpServerModule::handleFirmwareUrl(mm::platform::TcpCon -12 B

What this commit's flash went to, symbol by symbol against the measurement at Since. New is new functionality, removed and shrunk are what a cleanup saved, and other is what no symbol owns, such as merged strings and alignment. A rename reads as removed plus new, which the largest moves expose.

Render performance

Target Tick FPS
desktop-linux 5 µs 200,000
desktop-macos 12 µs (+4 µs) ⚠ 83,333 (−41,667) ⚠
desktop-windows 4 µs 250,000
esp32 1,716 µs 582

Scenario tick by target (p50 of each sample window)

Scenario desktop-macos desktop-windows esp32 esp32s3-n16r8 esp32p4rev1-eth esp32s31 esp32-eth esp32-eth-wifi teensy41 desktop-docker-arm64 esp32p4rev1-eth-wifi host=esp32p4rev1-eth sender=esp32p4rev1-eth host=esp32p4rev1-eth sender=esp32s3-n16r8 host=esp32s3-n16r8 sender=esp32p4rev1-eth host=esp32s3-n16r8 sender=esp32s3-n16r8 host=esp32s3-n16r8 sender=esp32s3-n16r8 receiver2=esp32p4rev1-eth host=teensy41 sender=esp32p4rev1-eth host=teensy41 sender=esp32s3-n16r8
Aurora_fps 1,549 6,015 ? 217,295 ? 188,782 ? 83,632 ? 87,613 ? - - 33,192 ? 7,532 ? 1,942,284 ? - - - - - - -
Control_a_palette_preset_changes_only_the_palette 8 - - 2,073 - - - - - - - - - - - - - -
Drivers_output_and_brightness 7 4 ? - 8,690 ? - - - - 2,144 ? 218 ? - - - - - - - -
Effects_pipeline_builds_and_renders 7 4 ? - - - - - - - - - - - - - - - -
Effects_swap_while_running 1 4 ? - 10,000 ? - - - - 2,167 287 ? - - - - - - - -
Effects_teardown_under_a_running_pipeline 8 17 ? - 9,080 - - - - 2,159 ? 482 ? - - - - - - - -
Firmware_reports_what_is_running 29 1,827 ? - 8,659 ? - - - - 2,142 ? 215 ? - - - - - - - -
Fluid_solver 218 685,902 ? 45,974 ? 102,058 ? 71,150 ? 66,874 ? - - 14,853 ? 3,371 ? 761,768 ? - - - - - - -
GridLayout_resize 120 219 ? 1,352 ? 18,414 ? 7,218 ? 8,919 ? 95,771 ? 82,231 ? 1,521 ? 2,005 ? 6,735,719 ? - - - - - - -
Layers_stack_and_blend_live 267 - - - - - - - - - - - - - - - - -
Layouts_resize_reallocates_live 10 93 ? - 32,399 ? - - - - 7,788 ? 579 ? - - - - - - - -
Modifiers_reshape_the_mapping 7 29 ? - 10,350 ? - - - - 2,165 ? 273 ? - - - - - - - -
NetworkReceive_two_boards - - - - - - - - - - - 92,530 ? 11,930 ? 37,919 ? 30,612 ? - 3,402 ? 5,022 ?
NetworkSend_one_sender_many_receivers - - - - - - - - - - - - - - - 3,847 ? - -
Network_hardware_reconfigures_live 21 ? 2,734 ? - 8,678 ? - - - - 2,147 ? 232 ? - - - - - - - -
Palettes_a_script_drives_the_effects 7 - - - - - - - - - - - - - - - - -
RAM_floor - - - 11,732 ? 2,168 ? - - - - - - - - - - - - -
State_one_document_adds_an_effect_with_its_controls 7 - - 2,505 ? - - - - - - - - - - - - - -
perf_full 256 592 ? 5,313 25,340 ? 11,711 ? 13,373 ? - - 6,797 ? 2,438 ? 5,469,660 ? - - - - - - -
perf_light 16 35 ? 2,510 3,044 1,117 ? 1,378 ? - - 662 ? 780 ? 5,385,763 ? - - - - - - -
peripheral_grid_sweep 257 649 ? 5,766 70,668 ? 11,495 ? 12,273 ? - - 6,618 ? 2,577 ? 1,673,544 ? - - - - - - -
peripheral_switch 4 9 ? 425 2,307 2,570 ? 2,990 ? - - 111 ? 341 ? 773,191 ? - - - - - - -

Microseconds. ? marks a cell backed by fewer than 4 samples, which is a first impression rather than a percentile; several are months old and were captured during a network reconfigure, so they read as whole milliseconds. - means that target has never run that scenario.

Coverage: 117/396 cells measured (29%), 27 of them with 4+ samples (6%). The blanks are the point: a regression on a target that has never run a scenario cannot be DETECTED in it, and the target cannot be compared against the others. Filling the matrix means running the scenario suite on each bench board, which is a standing task rather than a one-off.

desktop-macos: isolated scenarios (p50 of the sample window)

Scenario p50 p95 n
Effects_pipeline_builds_and_renders 7 µs 13 µs 32
Layouts_resize_reallocates_live 10 µs 17 µs 32

These build a bare pipeline with no optional modules, so a change here is a change in the pipeline itself rather than in what was measured. A new module belongs in an advanced scenario, which keeps its own numbers.

desktop-windows: isolated scenarios (p50 of the sample window)

Scenario p50 p95 n
Effects_pipeline_builds_and_renders 4 µs 6 µs 2
Layouts_resize_reallocates_live 93 µs 1,957 µs 3

These build a bare pipeline with no optional modules, so a change here is a change in the pipeline itself rather than in what was measured. A new module belongs in an advanced scenario, which keeps its own numbers.

Code

Area Lines Comments Comment share
core 37,845 (−59) ✓ 7,428 21.8 %
light 35,148 7,277 23.3 %
platform 25,937 (+111) ⚠ 4,547 19.6 %
ui 14,559 3,626 26.4 %
test 86,853 (+35) ⚠ 7,975 10.6 %
moondeck 35,606 (+75) ⚠ 4,513 14.6 %

Tests

Kind Count
unit cases 3,263 (+2) ✓
scenarios 37

Complexity

Metric Value
functions 6,313 (+3) ✓
over threshold 333
worst CCN 128

Documentation

Metric Value
markdown files 122
markdown lines 19,769 (+2) ⚠
plan files 14
backlog lines 2,835
lessons lines 455
CLAUDE.md lines 139