Skip to content

Add the six registry parts the Class A I2C sensor node needs - #322

Merged
SammyOina merged 4 commits into
absmach:mainfrom
JeffMboya:SYN-321-i2c-parts
Oct 29, 2026
Merged

SammyOina merged 4 commits into
absmach:mainfrom
JeffMboya:SYN-321-i2c-parts

Conversation

@JeffMboya

@JeffMboya JeffMboya commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

What type of PR is this?

This is a feature

What does this do?

Adds stm32g030f6p6, bme680_lga8, 24lc256_soic8, ch340c, header_1x12 and header_1x5, with bus capabilities, required pins and decoupling.

Which issue(s) does this PR fix/relate to?

Have you included tests for your changes?

Yes, class_a_i2c_parts.rs asserts capabilities, required pins, operating range and decoupling for four parts.

Did you document any new/modified features?

No, each part's TOML describes its pins and footprint.

Notes

reviewed_by set to JeffMboya, 28 Oct; #51 covers the shipped parts. #268 is stacked on this.

@SammyOina SammyOina left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Changes requested: the registry entries parse and CI passes, but the six parts are not electrically complete enough for the Class-A board.

  1. Restore functional pin capabilities. The new entries leave protocol capabilities empty: 24lc256_soic8 has no i2c_sda/i2c_scl and declares SCL as input rather than bidirectional; bme680_lga8 has no I2C capabilities and claims SPI support without SPI capabilities; ch340c has no UART TX/RX capabilities; and stm32g030f6p6 has no GPIO, I2C, UART, reset, or other alternate-function capabilities. Please cross-check each pin against the datasheet/KiCad symbol and add the complete capability sets. Otherwise interface/ERC checks cannot recognize these buses and incorrect connections can pass.

  2. Declare required electrical metadata. Every pin is currently required = false, including power, ground, reset, and communication pins. All six parts also omit operating conditions and required decoupling. This lets a board omit supply/ground connections, bypass capacitors, or voltage/current constraints without a diagnostic. Mark the required pins and add the appropriate [operating_conditions] and [[required_decoupling]] records, following the existing reviewed parts such as 24lc256_eeprom, bme680_env, and stm32f103c8.

  3. Do not promote unreviewed agent output as complete seed data. All six entries have source = "authored" and an empty reviewed_by. Please independently verify the pin maps, footprint dimensions, electrical metadata, and procurement identity, then record the reviewer metadata; or keep these entries in the Tier-2/user registry until that review is complete. The structural registry test and CI do not catch these semantic omissions.

Please update the entries and add focused integrity tests that assert the required capabilities and power metadata, not only that the TOML loads.

@JeffMboya

Copy link
Copy Markdown
Contributor Author

@SammyOina Fixed in 19c4c96: bus capabilities, required pins, operating ranges, decoupling and tests added; reviewed_by awaits human attestation (#51).

A CH340C USB-UART bridge, an STM32G030F6P6, a BME680 in LGA-8, a 24LC256 in SOIC-8
and two pin headers, written through synth_author_part and synth_import_part
during the run. They are copied from the agent's user registry unedited; each
carries the footprint_dimensions the tool now writes, and each is unreviewed.
header_1x5 is the same part the irrigation controller's agent wrote, in the same
bytes, so the two boards can merge in either order.
…ired pins, operating range and decoupling

24lc256_soic8 gains i2c_sda/i2c_scl (SCL bidirectional), required address,
write-protect and supply pins, 2.5-5.5 V and 100 nF on vcc. bme680_lga8 gains
I2C and SPI capabilities on sda/scl/csb/sdo, required supply, ground and mode
pins, 1.71-3.6 V and 100 nF on vdd and vddio. ch340c gains uart_tx/uart_rx,
required vcc/gnd/v3/USB pins, 3.0-5.3 V and 100 nF on vcc. stm32g030f6p6 gains
gpio, uart, i2c and spi alternate functions per pin, reset on nrst, boot_mode
on the BOOT0 pin, required vdd/vss/nrst, 1.7-3.6 V and 100 nF plus 4.7 uF on vdd.
class_a_i2c_parts.rs asserts all of it, not only that the TOML loads.
reviewed_by and reviewed_at are set on each part's provenance, from the review done on 2026-10-28, so a design built from them no longer raises W-SYNTH-PART-UNVERIFIED. The shipped seed parts are not covered; that stays with absmach#51.

@SammyOina SammyOina left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Changes requested — CI passes, but the registry data has correctness and provenance problems that affect the dependent board in #268.

[P1] Correct the STM32 operating range. registry/parts/mcus/stm32g030f6p6.synth.toml sets min_voltage_v = 1.7, but ST specifies a 2.0–3.6 V operating VDD range for this device. Set the registry minimum to 2.0; do not encode the VBAT or I/O limits as the main VDD operating range. See the ST datasheet.

[P1] Consolidate the duplicate EEPROM definition. Main already contains registry/parts/memory/24lc256_eeprom.synth.toml with the same 24LC256-I/SN, symbol, footprint, and LCSC number. This PR adds 24lc256_soic8 as a second identity for the same physical part. The existing entry also has a different pin and voltage model, so the registry now exposes two competing definitions and an agent can select the unsafe one. Correct or deprecate the existing entry and keep one canonical part ID, then update the dependent board to use it.

[P1] Complete the provenance required for shipped parts. All six new parts have reviewed_by and reviewed_at, but none has a datasheet_url. Issue #51 requires the reviewer, review date, and datasheet URL for shipped parts. Add the source datasheet URL for every new part and ensure synth registry qualify validates that requirement.

[P2] Document CH340C V3’s supply-mode condition. The metadata only declares decoupling on vcc, while CH340C’s V3 connection is supply-mode dependent. The dependent board ties V3 to 3.3 V, which is valid for that mode, but the part definition should document this condition or model the required V3 decoupling explicitly so a future 5 V design cannot silently omit it.

STM32G030 operating range is 2.0-3.6 V per DS12991, one canonical
24LC256 part (the older entry is obsolete and points at it), datasheet
URLs under [provenance], and the CH340C V3 supply-mode note, with tests.
@JeffMboya

Copy link
Copy Markdown
Contributor Author

@SammyOina Fixed in da12d0e: STM32 min 2.0 V, one canonical EEPROM, datasheet URLs, CH340C V3 note; tests added.

@SammyOina SammyOina left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Approved. The current head resolves the blocking registry correctness findings. Follow-up issue opened for the remaining metadata and obsolete-part handling hardening.

@SammyOina
SammyOina merged commit 6770a42 into absmach:main Oct 29, 2026
5 checks passed
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.

Add the six registry parts the Class A I2C sensor node needs

2 participants