Development Harness#

cb dev is for provider authors. It never uses the user’s normal broker process. Runtime state and logs are created under a temporary workspace for each run unless --keep is used.

Commands#

  • cb dev validate SERVICE: static service-spec checks only.

  • cb dev run SERVICE: start, observe, collect logs/events, and stop.

  • cb dev test SERVICE --scenario start-stop: lifecycle smoke test.

  • cb dev test SERVICE --scenario health: observe the configured health check.

  • cb dev test SERVICE --scenario crash: kill the target child process and verify restart policy.

  • cb dev report SERVICE: run validation, smoke, health, and crash checks.

Check Status#

Each check has one of these statuses:

  • pass: the service satisfied the check.

  • warn: the service may still work, but the provider should review the finding.

  • skip: the check was intentionally not applicable.

  • fail: the service failed conformance and the command exits non-zero.

Warnings do not make the report fail. Failures do.

JSON Shape#

Single-result commands return:

{
  "conformance": {
    "ok": true,
    "service": "my-provider.api",
    "command": "test",
    "scenario": "health",
    "workspace": "/tmp/conda-broker-dev-abcd",
    "kept": false,
    "checks": [
      {
        "name": "health.observed",
        "status": "pass",
        "message": "health check reported healthy",
        "data": {}
      }
    ],
    "status": {
      "name": "my-provider.api",
      "state": "ready",
      "running": true,
      "health": "healthy",
      "ready": true,
      "restart_count": 0,
      "endpoints": {
        "default": {
          "name": "default",
          "protocol": "http",
          "host": "127.0.0.1",
          "port": 8765,
          "path": "/health",
          "url": "http://127.0.0.1:8765/health"
        }
      }
    },
    "events": [],
    "logs": []
  }
}

cb dev report --json returns:

{
  "ok": true,
  "service": "my-provider.api",
  "command": "report",
  "results": []
}

Each result in results has the same shape as the single-result conformance object.

Endpoint-aware services get additional checks such as endpoint.declared, endpoint.resolved, and endpoint.reachable.