AI-powered hardware inventory management for homelab environments
Find a file
Mikkel Georgsen 1f9621fcaa feat(01-04): quality gate state machine, tag sync, catalog updater
- CatalogStatus type with forward-only state machine (draft→indexed→…→complete)
- Transition() enforces valid transitions, returns error with 'invalid transition' message
- ParseCatalogStatus() validates known status strings
- HardwareRecord domain type composing netbox.Device with quality gate state
- CatalogUpdater.UpdateCatalogStatus() validates transition then PatchCustomFields
- SyncTags() normalizes tags (slug form) and ensures they exist in NetBox
- normalizeTags deduplicates across case/whitespace/space-vs-hyphen variants
- ensureTag uses go-netbox v4 NewTagRequest(name, slug) / ExtrasTagsCreate
- All 12 state machine table-driven tests pass
2026-04-10 05:22:22 +00:00
.planning docs(01-02): complete NetBox client plan summary 2026-04-10 05:18:13 +00:00
cmd/hwlab feat(01-foundation-01): Go module init, chi server, go:embed SPA scaffold 2026-04-10 01:17:03 +00:00
internal feat(01-04): quality gate state machine, tag sync, catalog updater 2026-04-10 05:22:22 +00:00
web/dist feat(01-foundation-01): Go module init, chi server, go:embed SPA scaffold 2026-04-10 01:17:03 +00:00
.env.example chore: add environment config 2026-04-10 00:48:19 +00:00
.gitignore chore: add environment config 2026-04-10 00:48:19 +00:00
assets.go feat(01-foundation-01): Go module init, chi server, go:embed SPA scaffold 2026-04-10 01:17:03 +00:00
CLAUDE.md docs: create roadmap (7 phases) 2026-04-10 00:04:27 +00:00
config.json feat(01-foundation-01): viper config loader and SPA fallback fix 2026-04-10 01:27:54 +00:00
go.mod feat(01-02): NetBox client wrapper with device CRUD (NB-01) 2026-04-10 05:16:17 +00:00
go.sum feat(01-02): NetBox client wrapper with device CRUD (NB-01) 2026-04-10 05:16:17 +00:00
Makefile feat(01-foundation-01): viper config loader and SPA fallback fix 2026-04-10 01:27:54 +00:00