fix: DB/cache/store providers must serve their port (migration blocker) #12

Merged
jschoubben merged 1 commits from fix/db-provider-serves-port into main 2026-09-06 01:31:50 +00:00
Owner

Two latent resolution bugs, surfaced by the broad multi-module install (mesh-lab catalogue-broad) and invisible to single-module compile/install checks — compile ≠ resolve:

  1. Providers served no port. A binding auto-carries at/from/as; the connection facts a consumer needs (port, path, realm) are the provider's half, declared in serves (manifest.go: "Serves is what a consumer needs to know … a port, a path, a realm"). postgres/redis/mongodb served {} and minio served scheme+region but no port — yet seven consumers (baserow, letta, invoicing, gitea, umami, keycloak, nextcloud), including the SDK's own umami example, reference ${bound:<provision>:port}. None could resolve, let alone deploy. Added the port to each provider's serves: postgres 5432, redis 6379, mongodb 27017, minio 9000.

  2. baserow's empty contribution. It declared contributes: {"redis-cache": {}}; redis's serves spec for the cache is empty (a cache takes no per-consumer payload), so a consumer only requires it — an empty contribution is refused. Dropped it (requires/binds/secrets unchanged).

Validated: with these, the mesh resolved all nine broad-slice modules and the host applied 94 resources (previously refused at resolution). Only latent config, no behavior/runtime change.

https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF

Two latent resolution bugs, surfaced by the broad multi-module install (`mesh-lab` catalogue-broad) and invisible to single-module compile/install checks — **compile ≠ resolve**: 1. **Providers served no `port`.** A binding auto-carries `at`/`from`/`as`; the connection facts a consumer needs (port, path, realm) are the provider's half, declared in `serves` (`manifest.go`: *"Serves is what a consumer needs to know … a port, a path, a realm"*). postgres/redis/mongodb served `{}` and minio served scheme+region but no port — yet **seven consumers** (baserow, letta, invoicing, gitea, umami, keycloak, nextcloud), including the SDK's own umami example, reference `${bound:<provision>:port}`. **None could resolve, let alone deploy.** Added the port to each provider's `serves`: postgres 5432, redis 6379, mongodb 27017, minio 9000. 2. **baserow's empty contribution.** It declared `contributes: {"redis-cache": {}}`; redis's serves spec for the cache is empty (a cache takes no per-consumer payload), so a consumer only `requires` it — an empty contribution is refused. Dropped it (requires/binds/secrets unchanged). Validated: with these, the mesh resolved all nine broad-slice modules and the host applied 94 resources (previously refused at resolution). Only latent config, no behavior/runtime change. https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
jschoubben added 1 commit 2026-09-06 01:31:45 +00:00
The breadth install (catalogue-broad) surfaced two latent resolution bugs that
single-module compile checks never caught (compile != resolve):

1. postgres/redis/mongodb/minio served no "port", yet seven consumers
   (baserow, letta, invoicing, gitea, umami, keycloak, nextcloud) reference
   ${bound:<provision>:port}. A binding auto-carries at/from/as; the port is the
   provider's half of the answer and must be declared in `serves` (manifest.go:
   "Serves is what a consumer needs to know ... a port, a path, a realm"). Added
   port to each: postgres 5432, redis 6379, mongodb 27017, minio 9000. Without it
   no DB consumer could resolve, let alone deploy.

2. baserow declared an empty contribution `contributes: {"redis-cache": {}}`.
   redis's serves spec for the cache is empty (a cache takes no per-consumer
   payload), so a consumer only `requires` it; an empty contribution is refused.
   Dropped it (requires/binds/secrets unchanged).

Found by mesh-lab catalogue-broad; the same fixes are mirrored in that bed.

Claude-Session: https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
jschoubben merged commit dc12df18b4 into main 2026-09-06 01:31:50 +00:00
jschoubben deleted branch fix/db-provider-serves-port 2026-09-06 01:31:50 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#12