catalog-info.yaml 0.4.0

Released: 2025-11-01

Adds spec.dependencies[] format for services that define explicit Bio-ID scopes.

Breaking Changes

🟠 ERROR — catalog-dependencies-empty-scopes

Using spec.dependencies[] format with an empty scopes array is a validation error. The dependencies format requires scopes — if the target service does not define Bio-ID scopes, use spec.internalDependencies[] instead.

catalog-info.yaml 0.4.0: Empty scopes[] is invalid in spec.dependencies[].

If the target service does not define Bio-ID scopes, use internalDependencies:

WRONG (dependencies with empty scopes):
  spec:
    dependencies:
      - service: my-api
        transport: direct
        scopes: []        # validation error

CORRECT (use internalDependencies instead):
  spec:
    internalDependencies:
      - service: my-api   # port defaults to 3000

CORRECT (dependencies with actual scopes):
  spec:
    dependencies:
      - service: raterspot
        transport: direct
        scopes: [raterspot:rate]

🟡 WARN — catalog-dependencies-gateway-no-url

Using transport: gateway in spec.dependencies[] does NOT inject a URL env var. Gateway transport routes calls through Janus — the caller never gets a URL. Only transport: direct injects a {SERVICE}_URL env var.

catalog-info.yaml 0.4.0: transport: gateway does not inject a URL env var.

transport: direct  → injects {SERVICE}_URL, caller makes direct HTTP calls
transport: gateway → routes through Janus, no URL injected

If you need to call the service's URL directly, use transport: direct.

Notes

The key rule: use spec.dependencies[] only for services that define Bio-ID scope grants. Use spec.internalDependencies[] for everything else (platform services, internal tools).

Common mistake: switching everything to dependencies[] format and leaving scopes empty. That is a validation error. If in doubt, use internalDependencies[].

Last updated: February 28, 2026