-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Enhancement Description
Replace interface{}-based port APIs with explicit boundary DTOs to restore type safety and correct dependency direction.
Background
Ports currently use interface{} in signatures and import plugin types, undermining compile-time safety and violating dependency inversion.
Scope
Replace interface{} in ports with explicit DTOs
- Files: internal/application/ports/provisioner.go
- Files: internal/application/ports/repositories.go
- Files: internal/application/ports/services.go
Introduce boundary DTOs and adapters
- Files: internal/application/dto/** (new, if needed)
- Files: internal/infrastructure/** (adapters converting plugin/infrastructure types to DTOs)
Remove plugin imports from ports
- Files: internal/application/ports/provisioner.go
Non-Goals
- Changing semantics of port methods beyond type changes
- Broad renaming across public APIs (keep changes minimal and localized)
- Refactoring unrelated infrastructure code
Risks and Open Questions
- DTO design must be stable and not leak infrastructure/plugin concerns
- Adapter conversions must be well-tested to avoid subtle field mapping bugs
- Some interface{} usage may be entrenched; prioritize most harmful ones first if needed
Validation Plan
Unit and Integration Checks
- go test ./... for ports, adapters, and affected use cases
- Unit tests ensuring DTO mapping correctness
- Compile-time checks confirming ports are plugin-free
End-to-End Checks
- Smoke: provisioning and other port-using flows still function
- Ensure no runtime type assertions remain in application layer
Evidence Required in Issue Updates
- Before/after examples of port signatures
- Evidence that ports no longer import plugin packages (go list/grep snippet)
Acceptance Criteria
- Zero interface{} in port signatures (logging varargs excluded)
- Ports do not import plugin packages
- All conversions occur in adapters
- Compiler/IDE type support improved (no type assertions in app layer)
Deliverables
- PR introducing DTOs and updating ports
- PR updating infrastructure adapters and wiring
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels