Skip to content

build-i2c: Cover generate_sensors in i2c-codegen snapshots - #2655

Merged
jamesmunns merged 8 commits into
masterfrom
james/snapshot-sensors
Aug 25, 2026
Merged

build-i2c: Cover generate_sensors in i2c-codegen snapshots#2655
jamesmunns merged 8 commits into
masterfrom
james/snapshot-sensors

Conversation

@jamesmunns

Copy link
Copy Markdown
Contributor

This covers the codegen output, as well as the returned I2cSensorsDescription.

#2645 added name mapping, but did not add snapshot coverage for the new functionality, and for some reason I didn't add a test case for generate_sensors in #2648.

This closes the gap, and gives us even more snapshot output to love.

This covers the codegen output, as well as the returned `I2cSensorsDescription`.
@jamesmunns
jamesmunns requested review from evan-oxide and hawkw August 20, 2026 11:38
@jamesmunns jamesmunns changed the title Cover generate_sensors in i2c-codegen snapshots build-i2c: Cover generate_sensors in i2c-codegen snapshots Aug 20, 2026
}: [
33,
],
DeviceNameKey {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, is this just #2637? We can now kind of see every case where by_name has more than one value as a MultiMap, and I think every case is probably a bug?

CC @hawkw

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, is this just #2637? We can now kind of see every case where by_name has more than one value as a MultiMap

Not quite: that issue is for multiple sensors of the same type (i.e. InputCurrent, Temperature, etc) having the same name. It is normal and expected for multiple sensors of different types to have the same name; this is, for example, how basically every PMBus rail will end up looking. You'll see InputCurrent, OutputCurrent, InputVoltage, OutputVoltage, etc sensors for V50_PSU0 and that's expected. The thing we want to prevent is a situation where there are two InputCurrent sensors named V50_PSU0 (or similar).

Unfortunately, this output doesn't actually let us check for that, since it's just the sensor IDs for that device name key, not any other details of the sensors. I think eventually replacing the MultiMaps of keys to usize with the Arc<DeviceSensor>s that include the ID but also all the other stuff about that sensor would let us check for it here, but that'll make the snapshot even huger.

Also, I would really rather that case emit a build error and fail loudly than have to read the golden file to figure out if I got anything wrong, ideally.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I experimented with added the check as a warning, as seen here: #2634 (comment).

I do think we should fail loudly, but I would prefer to do that as a follow-on to this PR instead of bundling it here. I agree "look at the snapshot" is not a good workflow, but faithfully catching the defect is easier to see now. The current snapshot code makes this very easy to see:

by_name:
...
  - DeviceNameKey { device: "mwocp68", name: "psu0mcu", kind: Temperature } :: [0, 1, 2]
  - DeviceNameKey { device: "mwocp68", name: "psu0mcu", kind: Speed } :: [11, 12]
  - DeviceNameKey { device: "mwocp68", name: "psu1mcu", kind: Temperature } :: [13, 14, 15]
  - DeviceNameKey { device: "mwocp68", name: "psu1mcu", kind: Speed } :: [24, 25]
  - DeviceNameKey { device: "mwocp68", name: "psu2mcu", kind: Temperature } :: [26, 27, 28]
  - DeviceNameKey { device: "mwocp68", name: "psu2mcu", kind: Speed } :: [37, 38]
  - DeviceNameKey { device: "mwocp68", name: "psu3mcu", kind: Temperature } :: [39, 40, 41]
  - DeviceNameKey { device: "mwocp68", name: "psu3mcu", kind: Speed } :: [50, 51]
  - DeviceNameKey { device: "mwocp68", name: "psu4mcu", kind: Temperature } :: [52, 53, 54]
  - DeviceNameKey { device: "mwocp68", name: "psu4mcu", kind: Speed } :: [63, 64]
  - DeviceNameKey { device: "mwocp68", name: "psu5mcu", kind: Temperature } :: [65, 66, 67]
  - DeviceNameKey { device: "mwocp68", name: "psu5mcu", kind: Speed } :: [76, 77]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't include the warning in this PR, I think it ends up being too noisy to be acceptable for now:

[Running 'cargo xtask dist app/psc/rev-c-dev.toml']
   Compiling build-i2c v0.1.0 (/Users/james/oxide/hubris/build/i2c)
   Compiling xtask v1.0.0 (/Users/james/oxide/hubris/build/xtask)
    Finished `dev` profile [optimized + debuginfo] target(s) in 1.75s
     Running `target/debug/xtask dist app/psc/rev-c-dev.toml`
building crate task-jefe
    Finished `release` profile [optimized + debuginfo] target(s) in 0.12s
target/thumbv7em-none-eabihf/release/task-jefe -> target/psc-c-dev/dist/jefe.elf
building crate drv-stm32xx-sys
    Finished `release` profile [optimized + debuginfo] target(s) in 0.11s
target/thumbv7em-none-eabihf/release/drv-stm32xx-sys -> target/psc-c-dev/dist/sys.elf
building crate drv-stm32h7-rng
    Finished `release` profile [optimized + debuginfo] target(s) in 0.12s
target/thumbv7em-none-eabihf/release/drv-stm32h7-rng -> target/psc-c-dev/dist/rng_driver.elf
building crate drv-stm32xx-i2c-server
   Compiling build-i2c v0.1.0 (/Users/james/oxide/hubris/build/i2c)
   Compiling drv-stm32xx-i2c-server v0.1.0 (/Users/james/oxide/hubris/drv/stm32xx-i2c-server)
    Finished `release` profile [optimized + debuginfo] target(s) in 1.51s
target/thumbv7em-none-eabihf/release/drv-stm32xx-i2c-server -> target/psc-c-dev/dist/i2c_driver.elf
building crate task-packrat
    Finished `release` profile [optimized + debuginfo] target(s) in 0.12s
target/thumbv7em-none-eabihf/release/task-packrat -> target/psc-c-dev/dist/packrat.elf
building crate drv-psc-seq-server
   Compiling build-i2c v0.1.0 (/Users/james/oxide/hubris/build/i2c)
   Compiling task-sensor-api v0.1.0 (/Users/james/oxide/hubris/task/sensor-api)
   Compiling drv-local-vpd v0.1.0 (/Users/james/oxide/hubris/drv/local-vpd)
   Compiling drv-psc-seq-server v0.1.0 (/Users/james/oxide/hubris/drv/psc-seq-server)
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
   Compiling task-power-api v0.1.0 (/Users/james/oxide/hubris/task/power-api)
   Compiling drv-i2c-devices v0.1.0 (/Users/james/oxide/hubris/drv/i2c-devices)
   Compiling drv-oxide-vpd v0.1.0 (/Users/james/oxide/hubris/drv/oxide-vpd)
   Compiling ereports v0.1.0 (/Users/james/oxide/hubris/lib/ereports)
   Compiling drv-packrat-vpd-loader v0.1.0 (/Users/james/oxide/hubris/drv/packrat-vpd-loader)
    Finished `release` profile [optimized + debuginfo] target(s) in 3.67s
target/thumbv7em-none-eabihf/release/drv-psc-seq-server -> target/psc-c-dev/dist/sequencer.elf
building crate stm32h7-update-server
    Finished `release` profile [optimized + debuginfo] target(s) in 0.12s
target/thumbv7em-none-eabihf/release/stm32h7-update-server -> target/psc-c-dev/dist/update_server.elf
building crate task-hiffy
   Compiling task-hiffy v0.1.0 (/Users/james/oxide/hubris/task/hiffy)
    Finished `release` profile [optimized + debuginfo] target(s) in 0.74s
target/thumbv7em-none-eabihf/release/task-hiffy -> target/psc-c-dev/dist/hiffy.elf
building crate task-validate
   Compiling build-i2c v0.1.0 (/Users/james/oxide/hubris/build/i2c)
   Compiling task-sensor-api v0.1.0 (/Users/james/oxide/hubris/task/sensor-api)
   Compiling task-validate-api v0.1.0 (/Users/james/oxide/hubris/task/validate-api)
   Compiling task-validate v0.1.0 (/Users/james/oxide/hubris/task/validate)
warning: task-validate-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
   Compiling task-power-api v0.1.0 (/Users/james/oxide/hubris/task/power-api)
   Compiling drv-i2c-devices v0.1.0 (/Users/james/oxide/hubris/drv/i2c-devices)
    Finished `release` profile [optimized + debuginfo] target(s) in 3.42s
target/thumbv7em-none-eabihf/release/task-validate -> target/psc-c-dev/dist/validate.elf
building crate task-net
    Finished `release` profile [optimized + debuginfo] target(s) in 0.13s
target/thumbv7em-none-eabihf/release/task-net -> target/psc-c-dev/dist/net.elf
building crate drv-stm32h7-spi-server
    Finished `release` profile [optimized + debuginfo] target(s) in 0.11s
target/thumbv7em-none-eabihf/release/drv-stm32h7-spi-server -> target/psc-c-dev/dist/spi2_driver.elf
building crate task-control-plane-agent
   Compiling task-validate-api v0.1.0 (/Users/james/oxide/hubris/task/validate-api)
   Compiling task-control-plane-agent v0.1.0 (/Users/james/oxide/hubris/task/control-plane-agent)
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
   Compiling task-sensor-api v0.1.0 (/Users/james/oxide/hubris/task/sensor-api)
   Compiling task-power-api v0.1.0 (/Users/james/oxide/hubris/task/power-api)
   Compiling drv-i2c-devices v0.1.0 (/Users/james/oxide/hubris/drv/i2c-devices)
warning: task-validate-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
warning: task-control-plane-agent@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
    Finished `release` profile [optimized + debuginfo] target(s) in 4.18s
target/thumbv7em-none-eabihf/release/task-control-plane-agent -> target/psc-c-dev/dist/control_plane_agent.elf
building crate drv-stm32h7-sprot-server
    Finished `release` profile [optimized + debuginfo] target(s) in 0.13s
target/thumbv7em-none-eabihf/release/drv-stm32h7-sprot-server -> target/psc-c-dev/dist/sprot.elf
building crate task-udpecho
    Finished `release` profile [optimized + debuginfo] target(s) in 0.11s
target/thumbv7em-none-eabihf/release/task-udpecho -> target/psc-c-dev/dist/udpecho.elf
building crate task-udpbroadcast
    Finished `release` profile [optimized + debuginfo] target(s) in 0.11s
target/thumbv7em-none-eabihf/release/task-udpbroadcast -> target/psc-c-dev/dist/udpbroadcast.elf
building crate drv-eeprom
   Compiling drv-eeprom v0.1.0 (/Users/james/oxide/hubris/drv/eeprom)
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
   Compiling task-sensor-api v0.1.0 (/Users/james/oxide/hubris/task/sensor-api)
   Compiling task-power-api v0.1.0 (/Users/james/oxide/hubris/task/power-api)
   Compiling drv-i2c-devices v0.1.0 (/Users/james/oxide/hubris/drv/i2c-devices)
    Finished `release` profile [optimized + debuginfo] target(s) in 1.70s
target/thumbv7em-none-eabihf/release/drv-eeprom -> target/psc-c-dev/dist/eeprom.elf
building crate task-vpd
   Compiling task-vpd v0.1.0 (/Users/james/oxide/hubris/task/vpd)
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
    Finished `release` profile [optimized + debuginfo] target(s) in 1.30s
target/thumbv7em-none-eabihf/release/task-vpd -> target/psc-c-dev/dist/vpd.elf
building crate drv-user-leds
    Finished `release` profile [optimized + debuginfo] target(s) in 0.11s
target/thumbv7em-none-eabihf/release/drv-user-leds -> target/psc-c-dev/dist/user_leds.elf
building crate task-power
   Compiling build-i2c v0.1.0 (/Users/james/oxide/hubris/build/i2c)
   Compiling task-sensor-api v0.1.0 (/Users/james/oxide/hubris/task/sensor-api)
   Compiling task-power v0.1.0 (/Users/james/oxide/hubris/task/power)
warning: task-power@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
   Compiling task-power-api v0.1.0 (/Users/james/oxide/hubris/task/power-api)
   Compiling drv-i2c-devices v0.1.0 (/Users/james/oxide/hubris/drv/i2c-devices)
    Finished `release` profile [optimized + debuginfo] target(s) in 3.62s
target/thumbv7em-none-eabihf/release/task-power -> target/psc-c-dev/dist/power.elf
building crate task-sensor
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
   Compiling task-sensor v0.1.0 (/Users/james/oxide/hubris/task/sensor)
    Finished `release` profile [optimized + debuginfo] target(s) in 0.41s
target/thumbv7em-none-eabihf/release/task-sensor -> target/psc-c-dev/dist/sensor.elf
building crate task-sensor-polling
   Compiling task-sensor-polling v0.1.0 (/Users/james/oxide/hubris/task/sensor-polling)
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
warning: task-sensor-polling@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
    Finished `release` profile [optimized + debuginfo] target(s) in 1.19s
target/thumbv7em-none-eabihf/release/task-sensor-polling -> target/psc-c-dev/dist/sensor_polling.elf
building crate drv-psc-psu-update
   Compiling drv-psc-psu-update v0.1.0 (/Users/james/oxide/hubris/drv/psc-psu-update)
warning: task-sensor-api@0.1.0: The following sensors are duplicated with the same name. This is likely an error. See https://github.com/oxidecomputer/hubris/issues/2634 for details: (mwocp68:psu0mcu:TEMPERATURE): 3 instances, (mwocp68:psu0mcu:SPEED): 2 instances, (mwocp68:psu1mcu:TEMPERATURE): 3 instances, (mwocp68:psu1mcu:SPEED): 2 instances, (mwocp68:psu2mcu:TEMPERATURE): 3 instances, (mwocp68:psu2mcu:SPEED): 2 instances, (mwocp68:psu3mcu:TEMPERATURE): 3 instances, (mwocp68:psu3mcu:SPEED): 2 instances, (mwocp68:psu4mcu:TEMPERATURE): 3 instances, (mwocp68:psu4mcu:SPEED): 2 instances, (mwocp68:psu5mcu:TEMPERATURE): 3 instances, (mwocp68:psu5mcu:SPEED): 2 instances,
    Finished `release` profile [optimized + debuginfo] target(s) in 1.19s
target/thumbv7em-none-eabihf/release/drv-psc-psu-update -> target/psc-c-dev/dist/psu_update.elf
building crate task-dump-agent
    Finished `release` profile [optimized + debuginfo] target(s) in 0.12s
target/thumbv7em-none-eabihf/release/task-dump-agent -> target/psc-c-dev/dist/dump_agent.elf
building crate task-snitch
    Finished `release` profile [optimized + debuginfo] target(s) in 0.10s
target/thumbv7em-none-eabihf/release/task-snitch -> target/psc-c-dev/dist/snitch.elf
building crate task-idle
    Finished `release` profile [optimized + debuginfo] target(s) in 0.09s
target/thumbv7em-none-eabihf/release/task-idle -> target/psc-c-dev/dist/idle.elf
building crate task-udprpc
    Finished `release` profile [optimized + debuginfo] target(s) in 0.11s
target/thumbv7em-none-eabihf/release/task-udprpc -> target/psc-c-dev/dist/udprpc.elf
building crate task-framulator
warning: task-framulator v0.1.0 (/Users/james/oxide/hubris/task/framulator) ignoring invalid dependency `drv-stm32h7-spi-server` which is missing a lib target
    Finished `release` profile [optimized + debuginfo] target(s) in 0.10s

We could potentially move the detection to task-sensor-polling so it only fires once instead of on every invocation of the build-i2c sensor disposition.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I experimented with added the check as a warning, as seen here: #2634 (comment).

I do think we should fail loudly, but I would prefer to do that as a follow-on to this PR instead of bundling it here. I agree "look at the snapshot" is not a good workflow, but faithfully catching the defect is easier to see now. The current snapshot code makes this very easy to see:

Yeah, I agree with that; mostly, I was just trying to suggest that I don't think this totally fixes #2637 yet.

@jamesmunns

Copy link
Copy Markdown
Contributor Author

Ah, right, these are hash maps. Cool. I'll fix that.

@jamesmunns

jamesmunns commented Aug 20, 2026

Copy link
Copy Markdown
Contributor Author

Is adding 30k (edit: 10k) lines of snapshots a good idea? Who can say! We could drop this a lot with a more succinct version of I2cSensorsDescription, I don't know if the effort on that is justified though.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @hawkw do you like this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

Comment thread build/i2c/src/lib.rs Outdated
Comment thread build/i2c/src/lib.rs Outdated
@jamesmunns
jamesmunns merged commit de103b2 into master Aug 25, 2026
190 checks passed
@jamesmunns
jamesmunns deleted the james/snapshot-sensors branch August 25, 2026 19:07
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.

3 participants