Overview
This issue tracks the review and approval of the refactoring plan for moving Docker Compose topology logic from Tera templates to the Rust domain layer. The plan document has been created and needs contributor review before implementation begins.
Once this plan is approved and merged, a separate Epic issue will be created to track the actual implementation work.
Goals
Plan Document Location
The complete refactoring plan is at:
docs/refactors/plans/docker-compose-topology-domain-model.md
Plan Summary
The plan addresses architectural issues where Docker Compose topology rules (networks, volumes, dependencies) are scattered between Rust code and Tera templates. It proposes:
- Phase 0: Convert named volumes to bind mounts with new
BindMount domain type
- Phase 1: Create
Network enum and NetworkSet for type-safe network management
- Phase 2: Create
DockerComposeTopology aggregate that derives required networks from services
Key Decisions Documented
- Use bind mounts exclusively (9 reasons documented in ADR task)
- Type-safe
MountOption enum (ReadOnly, SELinux)
- Domain-driven network derivation (single source of truth)
- ~47 domain rules identified with test specifications
Implementation Strategy
The plan proposes 5 separate PRs:
| PR |
Scope |
| PR 1 |
ADR: Bind Mount Standardization |
| PR 2 |
BUG-01: Remove invalid template branch |
| PR 3 |
Phase 0: Bind mount foundation |
| PR 4 |
Phase 1: Network domain types |
| PR 5 |
Phase 2: Topology aggregate |
Issues Discovered During Planning
- BUG-01: Template handles invalid "Grafana without Prometheus" case
- ISSUE-01: ADR
grafana-integration-pattern.md recommends named volumes (will be superseded)
- ISSUE-03: ADR says Grafana has no healthcheck but template now has one
Acceptance Criteria
Related Documentation
Notes
- This is a documentation-only issue for reviewing the plan
- The actual implementation will be tracked by a separate Epic issue after this plan is merged
- The plan was developed iteratively, discovering bugs and inconsistencies along the way
- Once merged, the Epic issue will reference this plan as the source of truth
Overview
This issue tracks the review and approval of the refactoring plan for moving Docker Compose topology logic from Tera templates to the Rust domain layer. The plan document has been created and needs contributor review before implementation begins.
Once this plan is approved and merged, a separate Epic issue will be created to track the actual implementation work.
Goals
Plan Document Location
The complete refactoring plan is at:
docs/refactors/plans/docker-compose-topology-domain-model.md
Plan Summary
The plan addresses architectural issues where Docker Compose topology rules (networks, volumes, dependencies) are scattered between Rust code and Tera templates. It proposes:
BindMountdomain typeNetworkenum andNetworkSetfor type-safe network managementDockerComposeTopologyaggregate that derives required networks from servicesKey Decisions Documented
MountOptionenum (ReadOnly, SELinux)Implementation Strategy
The plan proposes 5 separate PRs:
Issues Discovered During Planning
grafana-integration-pattern.mdrecommends named volumes (will be superseded)Acceptance Criteria
./scripts/pre-commit.shRelated Documentation
Notes