- Dell NICView: strip " - XX:XX:XX:XX:XX:XX" suffix from ProductName (Dell TSR embeds MAC in this field for every NIC port) - Dell SoftwareIdentity: same strip applied to ElementName; store FQDD in FirmwareInfo.Description so exporter can filter device-bound entries - Exporter: add isDeviceBoundFirmwareFQDD() to filter firmware entries whose Description matches NIC./PSU./Disk./RAID.Backplane./GPU. FQDD prefixes (prevents device firmware from appearing in hardware.firmware) - Exporter: extend isDeviceBoundFirmwareName() to filter HGX GPU/NVSwitch firmware inventory IDs (_fw_gpu_, _fw_nvswitch_, _inforom_gpu_) - Inspur: remove HDD firmware from Hardware.Firmware — already present in Storage.Firmware, duplicating it violates ADL-016 - bible-local/06-parsers.md: document firmware and MAC stripping rules - bible-local/10-decisions.md: add ADL-016 (device-bound firmware) and ADL-017 (vendor-embedded MAC in model name fields) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
LOGPile Bible
Documentation language: English only. All maintained project documentation must be written in English.
Architectural decisions: Every significant architectural decision must be recorded in
10-decisions.mdbefore or alongside the code change.Single source of truth: Architecture and technical design documentation belongs in
docs/bible/. KeepREADME.mdandCLAUDE.mdminimal to avoid duplicate documentation.
This directory is the single source of truth for LOGPile's architecture, design, and integration contracts. It is structured so that both humans and AI assistants can navigate it quickly.
Reading Map (Hierarchical)
1. Foundations (read first)
| File | What it covers |
|---|---|
| 01-overview.md | Product purpose, operating modes, scope |
| 02-architecture.md | Runtime structure, control flow, in-memory state |
| 04-data-models.md | Core contracts (AnalysisResult, canonical hardware.devices) |
2. Runtime Interfaces
| File | What it covers |
|---|---|
| 03-api.md | HTTP API contracts and endpoint behavior |
| 05-collectors.md | Live collection connectors (Redfish, IPMI mock) |
| 06-parsers.md | Archive parser framework and vendor parsers |
| 07-exporters.md | CSV / JSON / Reanimator exports and integration mapping |
3. Delivery & Quality
| File | What it covers |
|---|---|
| 08-build-release.md | Build, packaging, release workflow |
| 09-testing.md | Testing expectations and verification guidance |
4. Governance (always current)
| File | What it covers |
|---|---|
| 10-decisions.md | Architectural Decision Log (ADL) |
Quick orientation for AI assistants
- Read order for most changes:
01→02→04→ relevant interface doc(s) →10 - Entry point:
cmd/logpile/main.go - HTTP server:
internal/server/— handlers inhandlers.go, routes inserver.go - Data contracts:
internal/models/— never breakAnalysisResultJSON shape - Frontend contract:
web/static/js/app.js— keep API responses stable - Canonical inventory:
hardware.devicesinAnalysisResult— source of truth for UI and exports - Parser registry:
internal/parser/vendors/—init()auto-registration pattern - Collector registry:
internal/collector/registry.go