Problem
When two developers work on different services (e.g., UI expert on web-ui, backend expert on order-service), Phase 6 (Validate) assumes all services are available locally on one machine. This breaks in real multi-developer workflows.
Scenarios to support
- Dev A has UI, Dev B has backend — validation needs both services running. Currently no way to point at a remote service.
- Shared dev environment — services deployed to a shared dev/staging cluster where validation can run against real URLs.
- Docker compose across local builds — one developer pulls the other's image from a registry instead of building locally.
Proposed solution
Add a validation section to manifest.yaml per service:
services:
- name: "order-service"
validation:
strategy: "local" # local | remote | docker-image
remote_url: "" # if remote: http://dev.internal:5001
docker_image: "" # if docker-image: ghcr.io/org/order-service:latest
The validate phase should:
- Check each service's
validation.strategy
- For
local: use local_path and start via docker-compose
- For
remote: use the remote_url directly (skip docker-compose for this service)
- For
docker-image: pull and run the image instead of building from source
- Generate a docker-compose.yaml that mixes local builds and remote images
Additional considerations
- The validate phase should support a "contract-only" mode where it validates contracts without running services (for when not all services are available)
- Add guidance for setting up a shared dev environment URL in
manifest.yaml environments section
- Consider integration with Testcontainers for spinning up dependencies
Problem
When two developers work on different services (e.g., UI expert on
web-ui, backend expert onorder-service), Phase 6 (Validate) assumes all services are available locally on one machine. This breaks in real multi-developer workflows.Scenarios to support
Proposed solution
Add a
validationsection tomanifest.yamlper service:The validate phase should:
validation.strategylocal: uselocal_pathand start via docker-composeremote: use theremote_urldirectly (skip docker-compose for this service)docker-image: pull and run the image instead of building from sourceAdditional considerations
manifest.yamlenvironments section