Hardware ingest contract v2.1: sensors, MAC addresses, device_class expansion

- Add HardwareSensors to JSON contract: fans, power, temperatures, other
- Add machine_sensor_readings table (migration 0022) with upsert in ingest service
- Add mac_addresses []string to HardwarePCIeDevice
- Expand device_class examples: VideoController, ProcessingAccelerator,
  EthernetController, FibreChannelController, StorageController
- Add distributable hardware-ingest-contract.md v2.1 with versioning,
  changelog, field tables, and canonical URL
- Add governance rule: contract doc must be updated with every parser change
- Update data-model.md to document machine_sensor_readings projection
- Update both import-example-full.json files with sensors and new PCIe entries

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Mikhail Chusavitin
2026-03-15 16:15:16 +03:00
parent 04ad1f0568
commit 96aefc0eb4
10 changed files with 1219 additions and 0 deletions

View File

@@ -18,3 +18,13 @@ This policy defines how architectural knowledge is captured and maintained.
2. If behavior changed, add or update a decision note in `bible/decisions/`.
3. Remove duplicated or outdated statements from non-Bible docs.
4. Validate consistency against code paths in `internal/api`, `internal/ingest`, and `internal/repository`.
## Hardware Ingest Contract
`bible-local/docs/hardware-ingest-contract.md` is a distributable integration document for external teams.
**Mandatory:** any change to the hardware JSON import contract (`HardwareIngestRequest`, `HardwareSnapshot`, or any nested struct in `internal/ingest/parser_hardware.go`) must be reflected in `hardware-ingest-contract.md` in the same commit:
- Bump the `version` field in the YAML front matter (patch for additive/optional fields, minor for new sections, major for breaking changes).
- Update the `updated` date.
- Add a row to the Changelog table describing what changed.