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).
Strength: Worth exploring
Category: in-process, structural
Problem
Event payload structs (
EntityCreatedPayload,EntityRenamedPayload, etc.) live ininternal/eventbus/payloads.go— the transport layer — but are domain concepts. The producer imports the consumer's package for naming:internal/app/entities.goconstructseventbus.EntityCreatedPayloaddirectly (also inRenameEntity,ReparentEntity,ChangeStatus).internal/app/doctor.gopayloadPrototypesmap referenceseventbus.*Payloadconstructors.This creates an asymmetric dependency:
app → eventbuspurely 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 extendinventorydirectly). Bothappandeventbusimport the domain package; neither depends on the other for payload shapes.Files affected:
internal/inventory/events/*.go(or new types ininternal/inventory/)internal/app/entities.go,internal/app/status.go,internal/app/doctor.gointernal/eventbus/handlers.go,internal/eventbus/bus.gointernal/eventbus/payloads.goWins
app → eventbuscouplingComposes with
PathPropagatoruses the relocatedEntityPathChangedPayloadSource
Architecture review 2026-05-31, candidate #5 (Worth exploring).