Skip to content

refactor(inventory): move event payloads from eventbus into the domain package #208

Description

@asphaltbuffet

Strength: Worth exploring
Category: in-process, structural

Problem

Event payload structs (EntityCreatedPayload, EntityRenamedPayload, etc.) live in internal/eventbus/payloads.go — the transport layer — but are domain concepts. The producer imports the consumer's package for naming:

  • internal/app/entities.go constructs eventbus.EntityCreatedPayload directly (also in RenameEntity, ReparentEntity, ChangeStatus).
  • internal/app/doctor.go payloadPrototypes map references eventbus.*Payload constructors.

This creates an asymmetric dependency: app → eventbus purely to name domain shapes. The CONTEXT.md glossary already treats payloads as part of the Event vocabulary.

Solution

Move payload structs to internal/inventory/events/ (or extend inventory directly). Both app and eventbus import the domain package; neither depends on the other for payload shapes.

Files affected:

  • New: internal/inventory/events/*.go (or new types in internal/inventory/)
  • Update imports: internal/app/entities.go, internal/app/status.go, internal/app/doctor.go
  • Update imports: internal/eventbus/handlers.go, internal/eventbus/bus.go
  • Delete: internal/eventbus/payloads.go

Wins

Composes with

Source

Architecture review 2026-05-31, candidate #5 (Worth exploring).

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions