Skip to content

health: name the device a run of bus read failures stopped at - #409

Open
pierre-rouanet wants to merge 4 commits into
mainfrom
bus-failure-names-the-device
Open

pierre-rouanet wants to merge 4 commits into
mainfrom
bus-failure-names-the-device

Conversation

@pierre-rouanet

@pierre-rouanet pierre-rouanet commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

udp-pad showed ⚠ motor bus: 1 read failures running and nothing more: the bus dropped a read, but not where. On lavandiere the drop is the IMU board, about once every 10 s.

Now it shows ⚠ motor bus: 1 read failure running, at 200 imu.

  • duck-control: a failed sync read keeps the device that rustypot names, as IoError::Device { what, id, cause }, with IoError::device() to read it.

  • robotd: collects the devices named during the current run of failures and clears them with consecutive_errors. A normal tick doesn't touch the list; only a failure and the success that ends a run do.

  • Protocol: adds BusHealth::failing (API v42), a field older readers can ignore. IMU_DXL_ID moves into the protocol next to JOINT_IDS, so that the IMU board can be called the IMU rather than a bare ID.

  • Clients: BusHealth::describe_run() produces the line, used by:

    • udp-pad's panel and log;
    • robotctl monitor;
    • robotctl health.

    The update gate's unhealthy reason also adds , at ….

Drops since start, by device. An isolated drop shows in consecutive_errors for only one 20 ms tick, and health is sampled once a second, so udp-pad caught about one drop in fifty. BusHealth::drops (plus unnamed_drops for drops that can't be pinned on a device) counts every failed read since robotd started. A total only grows, so a sample a second later still sees it.

  • udp-pad logs ⚠ motor bus: read dropped at 32 head_yaw (3 since robotd started) each time a total goes up, and shows the totals on its motors row.
  • robotctl monitor and robotctl health show the totals too.

The device named is where the answer went wrong, not proof the other devices are fine. A cable that breaks at one device silences every device after it, and only the first is named.

Install consequence of v42: none. The field is additive. A new client talking to an older robotd sees no failing and shows the line without devices, as it does today.

rustypot 1.12.0: the first commit moves duck-control from 1.8.0 to 1.12.0, the release with SyncReadError (pollen-robotics/rustypot#153).

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Coverage

73.76% lines on this branch, against a floor of 70%.

Per-file
Filename                              Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
btd/src/bluez.rs                          533               533     0.00%          35                35     0.00%         346               346     0.00%           0                 0         -
btd/src/chorale.rs                        346               246    28.90%          23                13    43.48%         231               172    25.54%           0                 0         -
btd/src/link.rs                            24                 0   100.00%           3                 0   100.00%          26                 0   100.00%           0                 0         -
btd/src/main.rs                            77                77     0.00%          11                11     0.00%          77                77     0.00%           0                 0         -
btd/src/pairing.rs                        149                 2    98.66%          12                 1    91.67%          81                 1    98.77%           0                 0         -
btd/src/route.rs                          387                37    90.44%          30                 0   100.00%         379                13    96.57%           0                 0         -
btd/src/session.rs                       1218                73    94.01%          71                 5    92.96%         706                41    94.19%           0                 0         -
btd/src/upstream.rs                       397                35    91.18%          34                 8    76.47%         242                19    92.15%           0                 0         -
configd/src/bluez.rs                      586               498    15.02%          85                79     7.06%         375               326    13.07%           0                 0         -
configd/src/identity.rs                   111                 5    95.50%          12                 1    91.67%          52                 3    94.23%           0                 0         -
configd/src/indicator.rs                  105                49    53.33%           8                 4    50.00%          72                27    62.50%           0                 0         -
configd/src/logs.rs                       314                33    89.49%          31                 3    90.32%         219                36    83.56%           0                 0         -
configd/src/main.rs                       525               525     0.00%          38                38     0.00%         349               349     0.00%           0                 0         -
configd/src/net.rs                        246                12    95.12%          38                 2    94.74%         181                 4    97.79%           0                 0         -
configd/src/nm.rs                         271               213    21.40%          43                39     9.30%         171               120    29.82%           0                 0         -
configd/src/pad.rs                        379                13    96.57%          38                 2    94.74%         222                 8    96.40%           0                 0         -
configd/src/power.rs                       30                30     0.00%           6                 6     0.00%          28                28     0.00%           0                 0         -
configd/src/store.rs                      350                25    92.86%          28                 2    92.86%         173                 9    94.80%           0                 0         -
configd/src/units.rs                      183               116    36.61%          24                18    25.00%         116                79    31.90%           0                 0         -
duck-ble/src/adv.rs                       138                 0   100.00%          13                 0   100.00%          65                 0   100.00%           0                 0         -
duck-ble/src/framing.rs                   281                 9    96.80%          25                 1    96.00%         140                 5    96.43%           0                 0         -
duck-ble/src/gatt.rs                        3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
duck-control/src/bus.rs                   713               550    22.86%          63                46    26.98%         491               382    22.20%           0                 0         -
duck-control/src/fall.rs                  173                 0   100.00%          15                 0   100.00%         108                 0   100.00%           0                 0         -
duck-control/src/imu.rs                   370                 8    97.84%          20                 0   100.00%         195                 5    97.44%           0                 0         -
duck-control/src/io.rs                    166                17    89.76%          30                 5    83.33%         153                17    88.89%           0                 0         -
duck-control/src/model.rs                 156                 2    98.72%          19                 0   100.00%          95                 0   100.00%           0                 0         -
duck-control/src/obs.rs                   283                 6    97.88%          28                 2    92.86%         188                 8    95.74%           0                 0         -
duck-control/src/pickup.rs                400               144    64.00%          35                15    57.14%         265               100    62.26%           0                 0         -
duck-control/src/policy.rs                701               560    20.11%          67                47    29.85%         457               350    23.41%           0                 0         -
duck-control/src/safety.rs                694                15    97.84%          49                 1    97.96%         424                 7    98.35%           0                 0         -
duck-control/src/sim.rs                   464                62    86.64%          34                10    70.59%         249                39    84.34%           0                 0         -
duck-detect/src/bin/duck-bench.rs         306               306     0.00%          16                16     0.00%         170               170     0.00%           0                 0         -
duck-detect/src/lib.rs                    258                 1    99.61%          14                 0   100.00%         149                 0   100.00%           0                 0         -
duck-detect/src/onnx.rs                    96                96     0.00%           5                 5     0.00%          52                52     0.00%           0                 0         -
duck-detect/src/rknn.rs                   267               237    11.24%          15                11    26.67%         216               195     9.72%           0                 0         -
duck-ether/src/main.rs                    504               404    19.84%          27                16    40.74%         270               217    19.63%           0                 0         -
duck-ipc-proto/src/led.rs                 188                 0   100.00%          12                 0   100.00%          74                 0   100.00%           0                 0         -
duck-ipc-proto/src/lib.rs                2415               183    92.42%         164                16    90.24%        1734                96    94.46%           0                 0         -
duck-ipc-proto/src/vetbook.rs             226                 1    99.56%          17                 0   100.00%         147                 0   100.00%           0                 0         -
duckctl/src/main.rs                      2917              1173    59.79%         175                53    69.71%        1805               745    58.73%           0                 0         -
duckctl/src/udp_pad.rs                    915               367    59.89%          65                20    69.23%         499               204    59.12%           0                 0         -
duckctl/src/udp_pad/link.rs               332                15    95.48%          25                 2    92.00%         182                 7    96.15%           0                 0         -
duckctl/src/udp_pad/panel.rs             1289               329    74.48%          60                15    75.00%         724               160    77.90%           0                 0         -
kinematics/src/hand.rs                    394                 2    99.49%          22                 2    90.91%         181                 2    98.90%           0                 0         -
kinematics/src/head.rs                    405                 9    97.78%          22                 0   100.00%         196                 4    97.96%           0                 0         -
kinematics/src/lib.rs                     348                10    97.13%          23                 1    95.65%         174                 7    95.98%           0                 0         -
kinematics/src/math.rs                    194                 0   100.00%          16                 0   100.00%          82                 0   100.00%           0                 0         -
kinematics/src/mjcf.rs                    237                32    86.50%          17                 1    94.12%         134                15    88.81%           0                 0         -
kinematics/src/tof.rs                     365                17    95.34%          14                 0   100.00%         190                10    94.74%           0                 0         -
mediad/src/camera.rs                      321                 5    98.44%          23                 0   100.00%         208                 5    97.60%           0                 0         -
mediad/src/config.rs                       87                 5    94.25%           7                 1    85.71%          46                 4    91.30%           0                 0         -
mediad/src/detect.rs                      293               222    24.23%          13                 9    30.77%         200               145    27.50%           0                 0         -
mediad/src/exposure.rs                    564               172    69.50%          37                 8    78.38%         374               122    67.38%           0                 0         -
mediad/src/frame.rs                       683                54    92.09%          35                 1    97.14%         392                18    95.41%           0                 0         -
mediad/src/indicator.rs                    37                25    32.43%           4                 2    50.00%          24                16    33.33%           0                 0         -
mediad/src/main.rs                        443               443     0.00%          14                14     0.00%         292               292     0.00%           0                 0         -
mediad/src/pipeline.rs                   2039              1765    13.44%         135               108    20.00%        1316              1123    14.67%           0                 0         -
mediad/src/producer.rs                    183                34    81.42%          22                 5    77.27%         137                21    84.67%           0                 0         -
mediad/src/relay.rs                      2391               244    89.80%         189                28    85.19%        1623               176    89.16%           0                 0         -
mediad/src/route.rs                       183                19    89.62%          12                 0   100.00%         158                 8    94.94%           0                 0         -
mediad/src/sensor.rs                      288                15    94.79%          24                 2    91.67%         166                 9    94.58%           0                 0         -
mediad/src/session.rs                     671                21    96.87%          37                 0   100.00%         424                18    95.75%           0                 0         -
mediad/src/snapshot.rs                    174                15    91.38%          10                 0   100.00%         108                 2    98.15%           0                 0         -
mediad/src/stream.rs                      836               136    83.73%          54                10    81.48%         529                91    82.80%           0                 0         -
mediad/src/turn.rs                        487                32    93.43%          44                 3    93.18%         299                17    94.31%           0                 0         -
mediad/src/upstream.rs                    263                16    93.92%          17                 1    94.12%         160                12    92.50%           0                 0         -
mediad/src/web.rs                         339                30    91.15%          28                 4    85.71%         216                19    91.20%           0                 0         -
netpadd/src/health.rs                     209                58    72.25%          16                 2    87.50%         105                31    70.48%           0                 0         -
netpadd/src/main.rs                      1159               140    87.92%          64                 7    89.06%         633                89    85.94%           0                 0         -
netpadd/src/receiver.rs                  1136                 6    99.47%          40                 0   100.00%         432                 4    99.07%           0                 0         -
netpadd/src/robotd.rs                      91                22    75.82%          15                 3    80.00%          61                11    81.97%           0                 0         -
nfc/src/clrc663.rs                        217               217     0.00%          15                15     0.00%         147               147     0.00%           0                 0         -
nfc/src/lib.rs                             27                27     0.00%           3                 3     0.00%          16                16     0.00%           0                 0         -
nfc/src/main.rs                           337               337     0.00%          23                23     0.00%         186               186     0.00%           0                 0         -
nfc/src/ndef.rs                           326                49    84.97%          25                 5    80.00%         168                24    85.71%           0                 0         -
nfc/src/pairing.rs                        172                 8    95.35%          12                 0   100.00%         109                 4    96.33%           0                 0         -
nfc/src/reader.rs                          12                 0   100.00%           3                 0   100.00%          19                 0   100.00%           0                 0         -
nfc/src/serial.rs                         125               125     0.00%           6                 6     0.00%          81                81     0.00%           0                 0         -
nfc/src/spi.rs                             78                78     0.00%           4                 4     0.00%          46                46     0.00%           0                 0         -
nfc/src/st25r100.rs                       516               134    74.03%          30                 7    76.67%         254                66    74.02%           0                 0         -
nfc/src/tag.rs                            134               134     0.00%           4                 4     0.00%          80                80     0.00%           0                 0         -
nfc/src/transport.rs                      182                29    84.07%          16                 4    75.00%          96                12    87.50%           0                 0         -
odometry/src/anchors.rs                     5                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
odometry/src/lib.rs                       445                80    82.02%          28                 5    82.14%         254                50    80.31%           0                 0         -
pad-imu/src/lib.rs                        608                 7    98.85%          39                 0   100.00%         372                 5    98.66%           0                 0         -
pad-map/src/bindings.rs                   127                 9    92.91%           6                 0   100.00%          80                 5    93.75%           0                 0         -
pad-map/src/buttons.rs                     29                 0   100.00%           5                 0   100.00%          20                 0   100.00%           0                 0         -
pad-map/src/continuous.rs                 207                 0   100.00%          17                 0   100.00%         114                 0   100.00%           0                 0         -
pad-map/src/hold.rs                       253                 1    99.60%          11                 0   100.00%         123                 1    99.19%           0                 0         -
pad-map/src/lib.rs                         35                 0   100.00%           2                 0   100.00%          19                 0   100.00%           0                 0         -
pad-map/src/loss.rs                       214                 4    98.13%          18                 0   100.00%         129                 2    98.45%           0                 0         -
pad-map/src/mapper.rs                     879                90    89.76%          40                 3    92.50%         608                82    86.51%           0                 0         -
pad-map/src/wire.rs                       385                30    92.21%          30                 2    93.33%         293                17    94.20%           0                 0         -
padd/src/main.rs                          445               420     5.62%          21                20     4.76%         242               232     4.13%           0                 0         -
padd/src/tap.rs                          1311               681    48.05%          74                36    51.35%         790               407    48.48%           0                 0         -
pet-detect/src/bin/detect.rs               61                61     0.00%           1                 1     0.00%          38                38     0.00%           0                 0         -
pet-detect/src/bin/features.rs             46                46     0.00%           2                 2     0.00%          20                20     0.00%           0                 0         -
pet-detect/src/lib.rs                     362               184    49.17%          27                13    51.85%         224               122    45.54%           0                 0         -
pet-detect/src/worker.rs                  381               230    39.63%          24                14    41.67%         276               160    42.03%           0                 0         -
robotctl/src/camera.rs                    350                 9    97.43%          20                 0   100.00%         163                 3    98.16%           0                 0         -
robotctl/src/cells.rs                      43                 1    97.67%           2                 0   100.00%          22                 1    95.45%           0                 0         -
robotctl/src/configure.rs                1636               480    70.66%          62                12    80.65%         849               324    61.84%           0                 0         -
robotctl/src/duck.rs                     1172               143    87.80%          63                 1    98.41%         586                46    92.15%           0                 0         -
robotctl/src/frame.rs                     231                13    94.37%           9                 0   100.00%         129                 1    99.22%           0                 0         -
robotctl/src/imu_view.rs                  266                25    90.60%          19                 2    89.47%         173                19    89.02%           0                 0         -
robotctl/src/led.rs                       339                61    82.01%          23                 3    86.96%         163                23    85.89%           0                 0         -
robotctl/src/main.rs                     6481              3058    52.82%         372               147    60.48%        4443              2065    53.52%           0                 0         -
robotctl/src/monitor.rs                  4749               817    82.80%         238                38    84.03%        3001               525    82.51%           0                 0         -
robotctl/src/path_map.rs                  425                59    86.12%          24                 2    91.67%         223                36    83.86%           0                 0         -
robotctl/src/show.rs                      714                46    93.56%          31                 1    96.77%         509                25    95.09%           0                 0         -
robotctl/src/vetbook.rs                  2034               430    78.86%          86                18    79.07%        1135               260    77.09%           0                 0         -
robotd-params/src/board.rs                255                26    89.80%          29                 3    89.66%         167                13    92.22%           0                 0         -
robotd-params/src/edit.rs                2068               120    94.20%         119                14    88.24%        1015                52    94.88%           0                 0         -
robotd-params/src/lib.rs                 2622               101    96.15%         221                 9    95.93%        1831                56    96.94%           0                 0         -
robotd-params/src/pad_axes.rs             158                 0   100.00%          16                 0   100.00%         131                 0   100.00%           0                 0         -
robotd-params/src/registry.rs             213                11    94.84%          17                 2    88.24%         160                19    88.12%           0                 0         -
robotd/src/chorale.rs                    1366                30    97.80%          71                 4    94.37%         826                20    97.58%           0                 0         -
robotd/src/control.rs                     734               695     5.31%          47                42    10.64%         533               485     9.01%           0                 0         -
robotd/src/head_imu.rs                    655               289    55.88%          42                12    71.43%         351               161    54.13%           0                 0         -
robotd/src/idle_head.rs                   341                 1    99.71%          28                 0   100.00%         199                 0   100.00%           0                 0         -
robotd/src/intents.rs                     434                74    82.95%          50                 9    82.00%         316                49    84.49%           0                 0         -
robotd/src/leds.rs                        301                96    68.11%          25                 3    88.00%         182                41    77.47%           0                 0         -
robotd/src/main.rs                       9279              1773    80.89%         461                68    85.25%        5897              1144    80.60%           0                 0         -
robotd/src/pickup.rs                      298                22    92.62%          23                 4    82.61%         205                23    88.78%           0                 0         -
robotd/src/posture.rs                     133                 1    99.25%          11                 0   100.00%          77                 1    98.70%           0                 0         -
robotd/src/soc.rs                         413                47    88.62%          22                 2    90.91%         182                29    84.07%           0                 0         -
robotd/src/sound.rs                       968               692    28.51%          50                34    32.00%         565               420    25.66%           0                 0         -
robotd/src/theremin.rs                    472               112    76.27%          32                12    62.50%         271                64    76.38%           0                 0         -
robotd/src/vetbook.rs                     788                78    90.10%          45                 4    91.11%         481                39    91.89%           0                 0         -
sounds/src/chorale/beat.rs                403                16    96.03%          26                 1    96.15%         246                12    95.12%           0                 0         -
sounds/src/chorale/midi.rs               1047                80    92.36%          44                 2    95.45%         581                43    92.60%           0                 0         -
sounds/src/chorale/mod.rs                1423                57    95.99%          83                 3    96.39%         812                41    94.95%           0                 0         -
sounds/src/chorale/text.rs                700                60    91.43%          41                12    70.73%         376                17    95.48%           0                 0         -
sounds/src/lib.rs                         167                35    79.04%          14                 6    57.14%          87                21    75.86%           0                 0         -
sounds/src/main.rs                        463               463     0.00%          20                20     0.00%         240               240     0.00%           0                 0         -
sounds/src/personality.rs                 174                 0   100.00%           6                 0   100.00%          84                 0   100.00%           0                 0         -
sounds/src/rng.rs                         173                 0   100.00%          18                 0   100.00%          96                 0   100.00%           0                 0         -
sounds/src/stream.rs                      719                 7    99.03%          46                 1    97.83%         420                 6    98.57%           0                 0         -
sounds/src/synth.rs                       353                 7    98.02%          29                 0   100.00%         197                 3    98.48%           0                 0         -
sounds/src/voices.rs                      679                 2    99.71%          26                 0   100.00%         353                 2    99.43%           0                 0         -
test-support/src/lib.rs                   272                 2    99.26%          22                 0   100.00%         167                 0   100.00%           0                 0         -
tof/src/config.rs                          48                 8    83.33%           4                 1    75.00%          27                 7    74.07%           0                 0         -
tof/src/imu.rs                            232               162    30.17%          11                 6    45.45%         142                98    30.99%           0                 0         -
tof/src/lib.rs                             88                 0   100.00%           9                 0   100.00%          54                 0   100.00%           0                 0         -
tof/src/link.rs                           121                 0   100.00%          10                 0   100.00%          88                 0   100.00%           0                 0         -
tof/src/main.rs                           995               627    36.98%          46                19    58.70%         642               405    36.92%           0                 0         -
tof/src/sensor.rs                         254               166    34.65%          23                16    30.43%         185               125    32.43%           0                 0         -
tof/src/status.rs                          76                 2    97.37%           7                 1    85.71%          58                 1    98.28%           0                 0         -
updater/src/account.rs                     93                 5    94.62%          10                 1    90.00%          79                 3    96.20%           0                 0         -
updater/src/config.rs                     545                25    95.41%          46                 4    91.30%         450                17    96.22%           0                 0         -
updater/src/engine.rs                    3451               506    85.34%         229                31    86.46%        2225               327    85.30%           0                 0         -
updater/src/faults.rs                      71                 8    88.73%           7                 0   100.00%          52                 0   100.00%           0                 0         -
updater/src/fsutil.rs                     104                30    71.15%          10                 6    40.00%          51                24    52.94%           0                 0         -
updater/src/hooks.rs                      492                16    96.75%          40                 2    95.00%         416                13    96.88%           0                 0         -
updater/src/ipc.rs                        933               333    64.31%          68                20    70.59%         581               179    69.19%           0                 0         -
updater/src/journal.rs                   1087                85    92.18%          74                11    85.14%         592                55    90.71%           0                 0         -
updater/src/lib.rs                         55                16    70.91%           5                 0   100.00%          41                14    65.85%           0                 0         -
updater/src/main.rs                       552               224    59.42%          38                14    63.16%         423               154    63.59%           0                 0         -
updater/src/manifest.rs                   159                 6    96.23%          16                 0   100.00%         110                 1    99.09%           0                 0         -
updater/src/orphan.rs                     288                 6    97.92%          25                 0   100.00%         181                 3    98.34%           0                 0         -
updater/src/policy.rs                    1883               698    62.93%         159                60    62.26%        1006               386    61.63%           0                 0         -
updater/src/preflight.rs                  382                16    95.81%          47                 4    91.49%         284                11    96.13%           0                 0         -
updater/src/reconcile.rs                  292                15    94.86%          25                 3    88.00%         172                 5    97.09%           0                 0         -
updater/src/robot.rs                      288                33    88.54%          41                10    75.61%         189                21    88.89%           0                 0         -
updater/src/source/github.rs              494               188    61.94%          53                28    47.17%         316               108    65.82%           0                 0         -
updater/src/source/hf_hub.rs              136                72    47.06%          20                12    40.00%          81                41    49.38%           0                 0         -
updater/src/source/http.rs                377                89    76.39%          32                10    68.75%         295                91    69.15%           0                 0         -
updater/src/source/local.rs               346                33    90.46%          36                 8    77.78%         192                23    88.02%           0                 0         -
updater/src/source/mod.rs                  39                30    23.08%           4                 2    50.00%          30                24    20.00%           0                 0         -
updater/src/spawn.rs                       94                13    86.17%           5                 0   100.00%          49                 4    91.84%           0                 0         -
updater/src/store.rs                      593                41    93.09%          43                 7    83.72%         271                42    84.50%           0                 0         -
updater/src/transcript.rs                 518                42    91.89%          31                 3    90.32%         290                22    92.41%           0                 0         -
updater/src/unix.rs                        44                 3    93.18%           3                 0   100.00%          22                 2    90.91%           0                 0         -
updater/src/verify.rs                     786                95    87.91%          55                18    67.27%         424                75    82.31%           0                 0         -
uyvy/src/lib.rs                           383                14    96.34%          13                 0   100.00%         184                 8    95.65%           0                 0         -
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                  106035             27183    74.36%        6883              1715    75.08%       65214             17109    73.76%           0                 0         -

@pierre-rouanet
pierre-rouanet force-pushed the bus-failure-names-the-device branch from 1223d5e to 5b38417 Compare October 13, 2026 13:27
The release that names the device a failed sync read stopped at
(SyncReadError), which the previous commit reads.

Assisted-by: Claude:claude-opus-5-5
"motor bus: 1 read failures running" said the bus dropped a read and
not where. rustypot now names the device a sync read stopped at, so
duck-control keeps it (`IoError::Device`), robotd collects the devices
of the current run and reports them as `BusHealth::failing` (API v42),
and every client says them: udp-pad's panel and log, robotctl monitor,
robotctl health, and the update gate's unhealthy reason.

The IMU board is a device on the bus like the servos, and the one this
was found on, so the description names it: `at 200 imu`. Its ID moves
to the protocol beside JOINT_IDS for that.

Assisted-by: Claude:claude-opus-5-5
@pierre-rouanet
pierre-rouanet force-pushed the bus-failure-names-the-device branch from 5b38417 to 0d62c1d Compare October 13, 2026 13:27
@pierre-rouanet
pierre-rouanet marked this pull request as ready for review October 13, 2026 13:27
An isolated drop holds `consecutive_errors` for one 20 ms tick, and a
client samples health once a second, so udp-pad saw about one drop in
fifty. `BusHealth::drops` counts every failed read since robotd started,
by the device it stopped at (`unnamed_drops` for the rest). A total only
grows, so a report a second later still sees it.

udp-pad logs a line for each total that went up, and shows the totals
on the motors row; robotctl monitor and health show them too.

Assisted-by: Claude:claude-opus-5-5
…-device

# Conflicts:
#	duck-ipc-proto/src/lib.rs

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant