From 647b9c98bc39b811d1807785decf492721933618 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 19:51:04 -0400 Subject: [PATCH 1/9] feat: harden reliability, validation, and project evidence --- .github/workflows/ci.yml | 33 +- .github/workflows/release.yml | 2 +- .gitignore | 10 + CHANGELOG.md | 28 ++ CONTRIBUTING.md | 120 +++++ Dockerfile | 2 +- LICENSE | 21 + README.md | 40 ++ SECURITY.md | 45 ++ cmd/control-plane/main.go | 20 +- cmd/scheduler/main.go | 14 +- cmd/worker-go/main.go | 33 +- cmd/worker-go/main_test.go | 14 + compose.yaml | 27 +- deploy/docker/local.env | 3 + deploy/helm/runmesh/Chart.yaml | 4 +- deploy/helm/runmesh/templates/config.yaml | 3 + .../helm/runmesh/templates/deployments.yaml | 2 + deploy/helm/runmesh/values.schema.json | 6 +- deploy/helm/runmesh/values.yaml | 16 +- docs/adr/0001-postgresql-source-of-truth.md | 15 + docs/adr/0002-at-least-once-delivery.md | 15 + docs/adr/0003-kafka-durable-delivery.md | 15 + docs/adr/0004-redis-outside-durable-path.md | 15 + .../adr/0005-transactional-outbox-recovery.md | 15 + docs/adr/0006-worker-leases-and-fencing.md | 15 + docs/adr/0007-per-workflow-ordering.md | 15 + docs/architecture.md | 12 +- docs/delivery-semantics.md | 8 +- docs/demo/README.md | 23 + docs/demo/dashboard-overview.png | Bin 0 -> 186955 bytes docs/demo/lease-recovery.png | Bin 0 -> 75324 bytes docs/demo/run-detail.png | Bin 0 -> 102329 bytes docs/demo/runmesh-recovery.webm | Bin 0 -> 1487780 bytes docs/deployment.md | 10 +- docs/failure-modes.md | 2 +- docs/release-v0.1.0.md | 23 + examples/python_worker.py | 14 + gen/runmesh/v1/worker.pb.go | 2 +- go.mod | 2 +- internal/api/server.go | 107 +++- internal/api/stream.go | 2 +- internal/api/stream_test.go | 4 +- internal/artifact/manager.go | 2 +- internal/config/config.go | 15 + internal/config/config_test.go | 10 + internal/ratelimit/limiter.go | 2 +- internal/rpc/worker.go | 30 +- internal/rpc/worker_test.go | 2 +- internal/scheduler/scheduler.go | 145 ++++-- internal/storage/postgres.go | 39 +- internal/storage/worker.go | 28 +- internal/telemetry/dbmetrics.go | 2 +- internal/workflow/model.go | 19 + migrations/007_outbox_claims.down.sql | 8 + migrations/007_outbox_claims.up.sql | 15 + openapi/openapi.yaml | 1 + proto/runmesh/v1/worker.proto | 2 +- scripts/check-go-coverage.sh | 14 + sdk/go/client.go | 12 +- sdk/python/pyproject.toml | 3 +- sdk/python/runmesh/v1/worker_pb2.py | 4 +- sdk/python/runmesh/worker.py | 10 +- sdk/python/tests/test_worker.py | 22 + tests/benchmarks/local.py | 23 +- tests/benchmarks/run-local.sh | 96 ++-- tests/benchmarks/verify.py | 20 +- tests/deployment/kind-dependencies.yaml | 23 + tests/deployment/kind-rolling-upgrade.sh | 3 +- tests/deployment/kind-values.yaml | 9 + tests/integration/stack_test.go | 459 ++++++++++++++---- tests/load/submissions.js | 23 +- web/Dockerfile | 10 +- web/demo/capture.spec.ts | 73 +++ web/e2e/dashboard.spec.ts | 2 +- web/package-lock.json | 205 +++++++- web/package.json | 36 +- web/playwright.demo.config.ts | 15 + web/scripts/forward-host.mjs | 11 + web/src/App.test.tsx | 131 ++++- web/src/App.tsx | 179 +++++-- web/src/api.ts | 8 +- web/src/dashboard.css | 226 +++++++++ web/src/main.tsx | 7 +- web/src/types.ts | 3 +- web/vite.config.ts | 13 +- 86 files changed, 2352 insertions(+), 365 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 SECURITY.md create mode 100644 cmd/worker-go/main_test.go create mode 100644 docs/adr/0001-postgresql-source-of-truth.md create mode 100644 docs/adr/0002-at-least-once-delivery.md create mode 100644 docs/adr/0003-kafka-durable-delivery.md create mode 100644 docs/adr/0004-redis-outside-durable-path.md create mode 100644 docs/adr/0005-transactional-outbox-recovery.md create mode 100644 docs/adr/0006-worker-leases-and-fencing.md create mode 100644 docs/adr/0007-per-workflow-ordering.md create mode 100644 docs/demo/README.md create mode 100644 docs/demo/dashboard-overview.png create mode 100644 docs/demo/lease-recovery.png create mode 100644 docs/demo/run-detail.png create mode 100644 docs/demo/runmesh-recovery.webm create mode 100644 docs/release-v0.1.0.md create mode 100644 migrations/007_outbox_claims.down.sql create mode 100644 migrations/007_outbox_claims.up.sql create mode 100755 scripts/check-go-coverage.sh create mode 100644 web/demo/capture.spec.ts create mode 100644 web/playwright.demo.config.ts create mode 100644 web/scripts/forward-host.mjs create mode 100644 web/src/dashboard.css diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3496c20..8b274f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,13 @@ jobs: with: {go-version: "1.25.x", cache: true} - run: test -z "$(gofmt -l cmd internal sdk/go gen tests/integration)" - run: go vet ./... - - run: go test -race -coverprofile=coverage.out ./cmd/... ./internal/... ./sdk/go/... + - run: go test -race -covermode=atomic -coverprofile=coverage.out ./cmd/... ./internal/... ./sdk/go/... + - run: scripts/check-go-coverage.sh coverage.out 10 + - run: go test -coverprofile=workflow-coverage.out ./internal/workflow && scripts/check-go-coverage.sh workflow-coverage.out 70 + - run: go test -coverprofile=auth-coverage.out ./internal/auth && scripts/check-go-coverage.sh auth-coverage.out 40 + - run: go test -coverprofile=live-coverage.out ./internal/live && scripts/check-go-coverage.sh live-coverage.out 70 + - uses: actions/upload-artifact@v4 + with: {name: go-coverage, path: "*-coverage.out"} python: runs-on: ubuntu-latest steps: @@ -22,6 +28,8 @@ jobs: - run: pip install -e 'sdk/python[dev]' - run: ruff check sdk/python examples - run: cd sdk/python && mypy runmesh && pytest --junitxml=../../pytest.xml + - uses: actions/upload-artifact@v4 + with: {name: python-coverage, path: sdk/python/coverage.xml} web: runs-on: ubuntu-latest defaults: {run: {working-directory: web}} @@ -32,8 +40,10 @@ jobs: - run: npm ci - run: npm run lint - run: npm run build - - run: npm test -- --run + - run: npm run test:coverage - run: npm audit --audit-level=high + - uses: actions/upload-artifact@v4 + with: {name: web-coverage, path: web/coverage/coverage-summary.json} protobuf: runs-on: ubuntu-latest steps: @@ -68,16 +78,29 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: {go-version: "1.25.x", cache: true} - - run: go test -tags=integration -count=1 -timeout=10m ./tests/integration + - run: go test -tags=integration -count=1 -timeout=15m ./tests/integration containers: runs-on: ubuntu-latest needs: [go, python, web, protobuf, integration] - strategy: {matrix: {service: [control-plane, scheduler, worker-go]}} + strategy: + fail-fast: false + matrix: + include: + - {service: control-plane, dockerfile: Dockerfile, build-args: "SERVICE=control-plane"} + - {service: scheduler, dockerfile: Dockerfile, build-args: "SERVICE=scheduler"} + - {service: worker-go, dockerfile: Dockerfile, build-args: "SERVICE=worker-go"} + - {service: worker-python, dockerfile: sdk/python/Dockerfile, build-args: ""} + - {service: web, dockerfile: web/Dockerfile, build-args: "WEB_DEVELOPMENT_MODE=false"} steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3 - uses: docker/build-push-action@v6 - with: {context: ., build-args: "SERVICE=${{ matrix.service }}", tags: "runmesh/${{ matrix.service }}:${{ github.sha }}", load: true} + with: + context: . + file: ${{ matrix.dockerfile }} + build-args: ${{ matrix.build-args }} + tags: runmesh/${{ matrix.service }}:${{ github.sha }} + load: true - uses: aquasecurity/trivy-action@v0.36.0 with: {image-ref: "runmesh/${{ matrix.service }}:${{ github.sha }}", severity: CRITICAL, exit-code: "1", ignore-unfixed: true} kind-upgrade: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3005e01..99b4d24 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: build-args: "" - component: web dockerfile: web/Dockerfile - build-args: VITE_DEV_AUTH=false + build-args: WEB_DEVELOPMENT_MODE=false steps: - uses: actions/checkout@v6 - uses: docker/setup-qemu-action@v4 diff --git a/.gitignore b/.gitignore index 38743ef..bc75d6a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,17 @@ .env +.env.* +!.env.example +.secrets/ +*.pem +*.key +*.p12 +credentials.json .DS_Store bin/ coverage/ +.coverage +coverage.xml +htmlcov/ dist/ node_modules/ __pycache__/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1b24f19 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +All notable changes are documented here. This project follows Semantic Versioning. + +## [0.1.0] - Unreleased + +### Added + +- Multi-tenant workflow and DAG lifecycle APIs with OIDC and scoped API-key authentication. +- Go and Python workers using Kafka delivery, expiring leases, fenced mutations, retries, cancellation, and dead-letter replay. +- S3-compatible input, output, and log artifacts with presigned transfer URLs. +- Per-tenant Redis rate limiting and live WebSocket notifications with a polling fallback. +- Prometheus metrics, OpenTelemetry traces, structured logs, and six Grafana dashboards. +- Docker Compose, Helm, validated AWS Terraform, browser tests, chaos tests, and reproducible local benchmark tooling. + +### Reliability + +- Transactional outbox publication now claims work in short PostgreSQL transactions and publishes outside row locks. +- Workflow-run Kafka keys preserve ordering across multiple partitions and concurrent publishers. +- Worker operations verify tenant ownership, worker identity, active state, and unexpired leases. + +### Known limitations + +- Benchmark evidence is local and does not establish production capacity. +- The Terraform configuration is validated with mock providers but has not been applied to AWS. +- Kafka is externally supplied; the Terraform configuration does not create MSK. +- At-least-once execution cannot make arbitrary handler side effects exactly-once. +- `v0.1.0` images and release artifacts have not been published. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..db8568e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,120 @@ +# Contributing to RunMesh + +Thank you for helping improve RunMesh. Changes should preserve tenant isolation, +at-least-once delivery, per-workflow ordering, and backward-compatible protobuf +evolution. + +## Local setup + +The shortest path to a complete development environment is Docker Engine or +Docker Desktop with Docker Compose v2: + +```bash +git clone https://github.com/samarth1412/RunMesh.git +cd RunMesh +docker compose up --build -d +docker compose ps +bash tests/e2e/smoke.sh +``` + +For development outside containers, install Go 1.25, Python 3.11 or newer, and +Node.js 22. Then install the Python and web dependencies: + +```bash +python3 -m pip install -e 'sdk/python[dev]' +npm --prefix web ci +``` + +## Testing + +Run focused tests while developing and the relevant full suite before opening a +pull request: + +```bash +gofmt -w cmd internal sdk/go gen tests/integration +go vet ./... +go test -race ./cmd/... ./internal/... ./sdk/go/... +go test -coverprofile=workflow-coverage.out ./internal/workflow +scripts/check-go-coverage.sh workflow-coverage.out 70 + +ruff check sdk/python examples +(cd sdk/python && mypy runmesh && pytest) # includes a 40% worker-SDK floor + +npm --prefix web run lint +npm --prefix web run build +npm --prefix web run test:coverage + +buf lint +go test -tags=integration -count=1 -timeout=20m ./tests/integration +``` + +Integration tests use Docker through Testcontainers. The browser suite expects +the Compose stack: + +```bash +docker compose up -d --build +npm --prefix web run test:e2e +``` + +CI additionally checks protobuf compatibility, container vulnerabilities, +Terraform, Helm, rendered Kubernetes resources, the Compose smoke path, and a +kind rolling upgrade. + +## Protobuf changes + +Only make additive, backward-compatible changes to `proto/`. Regenerate both Go +and Python clients and commit them in the same pull request: + +```bash +buf generate +buf lint +buf breaking --against '.git#branch=origin/main' +``` + +If `buf` is not installed locally, use the pinned container: + +```bash +docker run --rm -v "$PWD:/workspace" -w /workspace \ + bufbuild/buf:1.47.2 generate +``` + +## Database migrations + +Schema changes require paired, reversible migrations. Create the next numbered +`.up.sql` and `.down.sql` files under `migrations/`, use idempotent DDL where it +is safe, and test both directions against disposable data. Apply pending local +migrations with: + +```bash +make migrate +``` + +Never edit a migration that may already have been applied; add a new migration. + +## Benchmarks and failure tests + +Performance claims require raw, machine-readable evidence tied to a source +commit. Start from a disposable Compose environment and run: + +```bash +tests/benchmarks/run-local.sh tests/benchmarks/results/YYYY-MM-DDTHHMMSSZ +``` + +The benchmark driver starts the local stack, stops schedulers, scales and terminates workers, and writes +into a new result directory. It refuses to overwrite existing evidence. Do not point it at shared or production +infrastructure. Do not hand-edit raw output. Record failed runs honestly, and +distinguish API throughput, scheduling throughput, and end-to-end completion +throughput. See [`docs/benchmarks.md`](docs/benchmarks.md). + +## Pull requests + +- Keep changes focused and explain the behavior or failure mode being changed. +- Add tests for new state transitions, authorization boundaries, and recovery + behavior. +- Update OpenAPI, protobuf clients, deployment configuration, and documentation + with the behavior they describe. +- Include exact validation commands and results. Do not describe a partial test + run as a full validation. +- Do not include secrets, local environment files, generated credentials, or + unreviewed benchmark output. +- Preserve existing commit attribution and do not rewrite shared history. diff --git a/Dockerfile b/Dockerfile index 0d88768..3dc5803 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM golang:1.25-alpine AS build WORKDIR /src RUN apk add --no-cache ca-certificates git -COPY go.mod ./ +COPY go.mod go.sum ./ RUN go mod download COPY . . ARG SERVICE=control-plane diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..edb8674 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Samarth Vinayaka + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 475a635..c54f15d 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,10 @@ RunMesh stores versioned DAGs, schedules dependency-aware tasks, and delivers work with at-least-once semantics. PostgreSQL is the source of truth, a transactional outbox bridges state to Kafka/Redpanda, and expiring leases let work recover safely after worker or infrastructure failures. +| See it | Run it | Verify it | +| --- | --- | --- | +| [Dashboard demo](#demo) | `docker compose up --build -d` | [Raw benchmark evidence](tests/benchmarks/results/) | + It ships as a complete local platform: Go control plane and scheduler, Go and Python workers, a React operations dashboard, OIDC authentication, tenant-scoped API keys, S3-compatible artifacts, live updates, metrics, logs, traces, Helm charts, and validated AWS Terraform. ## Highlights @@ -49,6 +53,18 @@ PostgreSQL remains authoritative throughout the lifecycle. Kafka delivery can be Read the deeper [architecture](docs/architecture.md), [delivery semantics](docs/delivery-semantics.md), and [failure-mode analysis](docs/failure-modes.md). +## Demo + +The dashboard is exercised against the real Compose stack in Playwright; it does not use a mock API. The [one-minute recovery video](docs/demo/runmesh-recovery.webm) creates and runs a DAG, terminates both bundled workers during an active lease, and shows the successful recovered attempt. + +| Operations overview | Completed dependency graph | +| --- | --- | +| ![RunMesh operations overview](docs/demo/dashboard-overview.png) | ![RunMesh completed run detail](docs/demo/run-detail.png) | + +![RunMesh lease recovery with immutable attempt history](docs/demo/lease-recovery.png) + +The exact capture procedure is documented with the media in [`docs/demo`](docs/demo/README.md); no mock API or generated screenshot is used. + ## Quick start You need Docker Engine/Desktop with Docker Compose v2, `curl`, and Python 3. @@ -137,6 +153,15 @@ worker.run() See the complete [Python worker example](examples/python_worker.py) and the [artifact guide](docs/artifacts.md). +The canonical Go SDK import is: + +```go +import runmesh "github.com/samarth1412/RunMesh/sdk/go" + +client := runmesh.NewClient("localhost:7001", "rm__", "worker-1") +defer client.Close() +``` + ## Reliability model RunMesh deliberately promises **at-least-once**, not exactly-once, execution. Task handlers that perform side effects should deduplicate using the stable `context.idempotency_key`. @@ -205,6 +230,19 @@ make lint # format/check Go, Python, and TypeScript CI also validates protobuf compatibility, container vulnerability scans, Terraform, Helm, rendered Kubernetes manifests, Playwright flows, and a live kind rolling upgrade. +Coverage gates intentionally target risk rather than 100%: the workflow state machine, authentication, live event broker, Python worker, and dashboard each have documented minimums in CI. Docker-backed integration tests cover PostgreSQL scheduler and storage behavior. + +## Limitations and future work + +- Published performance evidence is from one local Docker Desktop machine, not a production capacity guarantee. +- The AWS Terraform is formatted, validated, and tested with mock providers; it has not been applied and no AWS deployment is claimed. +- Useful worker parallelism is bounded by Kafka partition count, and a single workflow run remains intentionally confined to one partition. +- Workers in the same Kafka consumer group must expose the same handler set; heterogeneous capability pools require separate group IDs. +- The outbox removes broker I/O from database transactions, but PostgreSQL claim and acknowledgement writes still bound dispatch throughput. +- At-least-once execution cannot make arbitrary handler side effects exactly-once. Handlers must use the stable task idempotency key. +- Redis Pub/Sub notifications are best-effort; the dashboard re-reads durable state and falls back to polling. +- The repository prepares `v0.1.0`, but no release or versioned image is published until a maintainer explicitly creates the tag. + ## Deployment The Helm chart deploys independently scalable control-plane, scheduler, dashboard, and worker pools with probes, resource limits, autoscaling, disruption budgets, restricted security contexts, and default-deny NetworkPolicies. @@ -237,3 +275,5 @@ Pushing a `v*` tag builds five multi-architecture GHCR images with semantic-vers - [Artifact handling](docs/artifacts.md) - [Benchmarks](docs/benchmarks.md) - [Deployment and releases](docs/deployment.md) +- [Architecture decisions](docs/adr/) +- [Draft v0.1.0 release notes](docs/release-v0.1.0.md) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..1d7e4ad --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,45 @@ +# Security policy + +## Supported versions + +RunMesh has not published a stable release. Security fixes are currently made +on the `main` branch. A version support table will be added when the first +release is published. + +## Reporting a vulnerability + +Please do not disclose a suspected vulnerability in a public issue, discussion, +or pull request. + +GitHub private vulnerability reporting is not currently enabled for this +repository. To request a private reporting channel, open a minimal issue that +contains only a request to contact the maintainer and no vulnerability details. +The maintainer will arrange a private channel and acknowledge the report. This +file will be updated with a direct private-reporting link when that repository +feature is enabled. + +Include the affected component and version or commit, reproduction conditions, +security impact, and any suggested mitigation in the private report. Please +allow reasonable time for investigation and remediation before disclosure. + +## Local development credentials + +The credentials committed in `compose.yaml`, `deploy/docker/local.env`, the +Keycloak realm fixture, examples, and test fixtures are intentionally public, +development-only values. They secure nothing outside the disposable local +Compose environment and must never be reused in a shared or production system. + +Production mode rejects development authentication. Deployments must provide +unique secrets outside the repository for the database, Redis, S3, worker API +keys, and the API-key pepper, and must configure a trusted OIDC issuer and +audience. See [`docs/security.md`](docs/security.md) and +[`docs/deployment.md`](docs/deployment.md). + +## Scope + +Useful reports include authentication or authorization bypasses, cross-tenant +data access, worker lease-fencing failures, secret exposure, unsafe artifact +access, injection, denial-of-service paths, and vulnerable deployment defaults. +Reports about the documented public local-development credentials are not +vulnerabilities unless those credentials are accepted when development +authentication is disabled. diff --git a/cmd/control-plane/main.go b/cmd/control-plane/main.go index 68e4a6b..4b11ac2 100644 --- a/cmd/control-plane/main.go +++ b/cmd/control-plane/main.go @@ -11,16 +11,16 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" - runmeshv1 "github.com/runmesh/runmesh/gen/runmesh/v1" - "github.com/runmesh/runmesh/internal/api" - "github.com/runmesh/runmesh/internal/artifact" - "github.com/runmesh/runmesh/internal/auth" - "github.com/runmesh/runmesh/internal/config" - "github.com/runmesh/runmesh/internal/live" - "github.com/runmesh/runmesh/internal/ratelimit" - workerrpc "github.com/runmesh/runmesh/internal/rpc" - "github.com/runmesh/runmesh/internal/storage" - "github.com/runmesh/runmesh/internal/telemetry" + runmeshv1 "github.com/samarth1412/RunMesh/gen/runmesh/v1" + "github.com/samarth1412/RunMesh/internal/api" + "github.com/samarth1412/RunMesh/internal/artifact" + "github.com/samarth1412/RunMesh/internal/auth" + "github.com/samarth1412/RunMesh/internal/config" + "github.com/samarth1412/RunMesh/internal/live" + "github.com/samarth1412/RunMesh/internal/ratelimit" + workerrpc "github.com/samarth1412/RunMesh/internal/rpc" + "github.com/samarth1412/RunMesh/internal/storage" + "github.com/samarth1412/RunMesh/internal/telemetry" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "google.golang.org/grpc" diff --git a/cmd/scheduler/main.go b/cmd/scheduler/main.go index 545bf8e..665557f 100644 --- a/cmd/scheduler/main.go +++ b/cmd/scheduler/main.go @@ -12,12 +12,12 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" - "github.com/runmesh/runmesh/internal/config" - "github.com/runmesh/runmesh/internal/live" - "github.com/runmesh/runmesh/internal/messaging" - "github.com/runmesh/runmesh/internal/scheduler" - "github.com/runmesh/runmesh/internal/storage" - "github.com/runmesh/runmesh/internal/telemetry" + "github.com/samarth1412/RunMesh/internal/config" + "github.com/samarth1412/RunMesh/internal/live" + "github.com/samarth1412/RunMesh/internal/messaging" + "github.com/samarth1412/RunMesh/internal/scheduler" + "github.com/samarth1412/RunMesh/internal/storage" + "github.com/samarth1412/RunMesh/internal/telemetry" ) func main() { @@ -51,7 +51,7 @@ func main() { defer liveBroker.Close() published := prometheus.NewCounterVec(prometheus.CounterOpts{Name: "scheduler_outbox_published_total", Help: "Outbox events published to Kafka by tenant and event type."}, []string{"tenant_id", "event_type"}) prometheus.MustRegister(published) - service := scheduler.Service{Store: store, Publisher: publisher, Live: liveBroker, Published: published, ScheduleInterval: cfg.SchedulerInterval, OutboxInterval: cfg.OutboxInterval} + service := scheduler.Service{Store: store, Publisher: publisher, Live: liveBroker, Published: published, ScheduleInterval: cfg.SchedulerInterval, OutboxInterval: cfg.OutboxInterval, OutboxBatchSize: cfg.OutboxBatchSize, OutboxClaimTTL: cfg.OutboxClaimTTL, OutboxPublishTimeout: cfg.OutboxPublishTimeout} metricsServer := &http.Server{Addr: cfg.SchedulerMetricsAddr, Handler: promhttp.Handler(), ReadHeaderTimeout: 3 * time.Second} go func() { if serveErr := metricsServer.ListenAndServe(); serveErr != nil && !errors.Is(serveErr, http.ErrServerClosed) { diff --git a/cmd/worker-go/main.go b/cmd/worker-go/main.go index 1db74d9..53522b7 100644 --- a/cmd/worker-go/main.go +++ b/cmd/worker-go/main.go @@ -12,9 +12,9 @@ import ( "syscall" "time" - "github.com/runmesh/runmesh/internal/telemetry" - "github.com/runmesh/runmesh/internal/tracecontext" - runmesh "github.com/runmesh/runmesh/sdk/go" + "github.com/samarth1412/RunMesh/internal/telemetry" + "github.com/samarth1412/RunMesh/internal/tracecontext" + runmesh "github.com/samarth1412/RunMesh/sdk/go" "github.com/segmentio/kafka-go" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" @@ -43,7 +43,7 @@ func main() { workerID := env("RUNMESH_WORKER_ID", defaultWorkerID()) client := runmesh.NewClient(env("RUNMESH_ENDPOINT", "localhost:7001"), env("RUNMESH_INTERNAL_TOKEN", "local-development-token"), workerID) defer client.Close() - reader := kafka.NewReader(kafka.ReaderConfig{Brokers: brokers, Topic: env("RUNMESH_KAFKA_TOPIC", "runmesh.tasks"), GroupID: "runmesh-workers", MinBytes: 1, MaxBytes: 10e6}) + reader := kafka.NewReader(kafka.ReaderConfig{Brokers: brokers, Topic: env("RUNMESH_KAFKA_TOPIC", "runmesh.tasks"), GroupID: env("RUNMESH_KAFKA_GROUP_ID", "runmesh-workers"), MinBytes: 1, MaxBytes: 10e6}) defer reader.Close() go report(ctx, client) slog.Info("go worker started", "worker_id", workerID) @@ -66,6 +66,12 @@ func main() { _ = reader.CommitMessages(ctx, message) continue } + if !supported(d.Handler) { + if err = reader.CommitMessages(ctx, message); err != nil { + slog.Error("commit unsupported dispatch", "handler", d.Handler, "error", err) + } + continue + } taskContext := tracecontext.IntoContext(ctx, header(message.Headers, "traceparent")) if err = execute(taskContext, client, d.TaskRunID); err != nil { slog.Error("execute task", "task_run_id", d.TaskRunID, "error", err) @@ -75,6 +81,15 @@ func main() { } } } + +func supported(handler string) bool { + switch handler { + case "examples.greet", "examples.upper", "examples.notify", "examples.slow", "validation.dead": + return true + default: + return false + } +} func execute(parent context.Context, client *runmesh.Client, id string) error { parent, span := otel.Tracer("runmesh/worker").Start(parent, "task.execute", trace.WithAttributes(attribute.String("task_run_id", id))) defer span.End() @@ -120,6 +135,8 @@ func execute(parent context.Context, client *runmesh.Client, id string) error { output = map[string]any{"message": fmt.Sprintf("Hello, %v!", input["name"]), "worker": "go"} case "examples.upper": output = map[string]any{"text": strings.ToUpper(fmt.Sprint(input["text"])), "worker": "go"} + case "examples.notify": + output = map[string]any{"delivered": true, "idempotency_key": id, "worker": "go"} case "examples.slow": delay := 200 * time.Millisecond if value, ok := input["delay_ms"].(float64); ok && value >= 0 && value <= 30_000 { @@ -131,6 +148,12 @@ func execute(parent context.Context, client *runmesh.Client, id string) error { case <-ctx.Done(): return ctx.Err() } + case "validation.dead": + err = errors.New("intentional permanent failure for validation") + _, _ = client.Fail(parent, id, false, err) + cancel() + <-heartbeatsDone + return err default: err = fmt.Errorf("unsupported handler %q", task.Handler) _, _ = client.Fail(parent, id, true, err) @@ -147,7 +170,7 @@ func report(ctx context.Context, client *runmesh.Client) { ticker := time.NewTicker(10 * time.Second) defer ticker.Stop() for { - if err := client.Report(ctx, []string{"examples.greet", "examples.upper", "examples.slow"}, 0); err != nil { + if err := client.Report(ctx, []string{"examples.greet", "examples.upper", "examples.notify", "examples.slow", "validation.dead"}, 0); err != nil { slog.Warn("worker heartbeat failed", "error", err) } select { diff --git a/cmd/worker-go/main_test.go b/cmd/worker-go/main_test.go new file mode 100644 index 0000000..e661c03 --- /dev/null +++ b/cmd/worker-go/main_test.go @@ -0,0 +1,14 @@ +package main + +import "testing" + +func TestSupportedHandlers(t *testing.T) { + for _, handler := range []string{"examples.greet", "examples.upper", "examples.notify", "examples.slow", "validation.dead"} { + if !supported(handler) { + t.Errorf("supported(%q)=false", handler) + } + } + if supported("documents.unknown") { + t.Fatal("unknown handler must not be claimed by this worker pool") + } +} diff --git a/compose.yaml b/compose.yaml index 8ad4ea1..0d8f551 100644 --- a/compose.yaml +++ b/compose.yaml @@ -29,6 +29,22 @@ services: ports: ["8081:8080"] depends_on: {redpanda: {condition: service_healthy}} + redpanda-init: + image: redpandadata/redpanda:v24.3.15 + entrypoint: ["/bin/sh", "-ec"] + environment: {RUNMESH_KAFKA_PARTITIONS: "6"} + command: + - | + if summary="$$(rpk topic describe runmesh.tasks --print-summary -X brokers=redpanda:9092 2>/dev/null)"; then + current="$$(printf '%s\n' "$$summary" | awk '$$1 == "PARTITIONS" {print $$2}')" + if [ "$$current" -lt "$$RUNMESH_KAFKA_PARTITIONS" ]; then + rpk topic add-partitions runmesh.tasks --num "$$((RUNMESH_KAFKA_PARTITIONS-current))" -X brokers=redpanda:9092 + fi + else + rpk topic create runmesh.tasks --partitions "$$RUNMESH_KAFKA_PARTITIONS" --replicas 1 -X brokers=redpanda:9092 + fi + depends_on: {redpanda: {condition: service_healthy}} + redis: image: redis:7.4-alpine command: ["redis-server", "--appendonly", "yes"] @@ -72,8 +88,9 @@ services: env_file: [deploy/docker/local.env] depends_on: migrate: {condition: service_completed_successfully} - redpanda: {condition: service_healthy} + redpanda-init: {condition: service_completed_successfully} redis: {condition: service_healthy} + deploy: {replicas: 2} restart: unless-stopped worker-python: @@ -83,7 +100,8 @@ services: RUNMESH_HTTP_ENDPOINT: control-plane:8080 RUNMESH_INTERNAL_TOKEN: rm_00000000-0000-0000-0000-000000000002_local-development-worker-key RUNMESH_KAFKA_BROKERS: redpanda:9092 - depends_on: {control-plane: {condition: service_started}, redpanda: {condition: service_healthy}} + RUNMESH_KAFKA_GROUP_ID: runmesh-workers + depends_on: {control-plane: {condition: service_started}, redpanda-init: {condition: service_completed_successfully}} restart: unless-stopped worker-go: @@ -92,14 +110,15 @@ services: RUNMESH_ENDPOINT: control-plane:7001 RUNMESH_INTERNAL_TOKEN: rm_00000000-0000-0000-0000-000000000002_local-development-worker-key RUNMESH_KAFKA_BROKERS: redpanda:9092 - depends_on: {control-plane: {condition: service_started}, redpanda: {condition: service_healthy}} + RUNMESH_KAFKA_GROUP_ID: runmesh-workers + depends_on: {control-plane: {condition: service_started}, redpanda-init: {condition: service_completed_successfully}} restart: unless-stopped web: build: context: . dockerfile: web/Dockerfile - args: {VITE_DEV_AUTH: "false", VITE_OIDC_AUTHORITY: "http://localhost:8180/realms/runmesh", VITE_OIDC_CLIENT_ID: "runmesh-web"} + args: {WEB_DEVELOPMENT_MODE: "false", VITE_OIDC_AUTHORITY: "http://localhost:8180/realms/runmesh", VITE_OIDC_CLIENT_ID: "runmesh-web"} ports: ["3000:3000"] depends_on: [control-plane] restart: unless-stopped diff --git a/deploy/docker/local.env b/deploy/docker/local.env index ed47577..06b7d6f 100644 --- a/deploy/docker/local.env +++ b/deploy/docker/local.env @@ -8,6 +8,9 @@ RUNMESH_INTERNAL_TOKEN=local-development-token RUNMESH_LEASE_DURATION=30s RUNMESH_SCHEDULER_INTERVAL=500ms RUNMESH_OUTBOX_INTERVAL=250ms +RUNMESH_OUTBOX_BATCH_SIZE=100 +RUNMESH_OUTBOX_CLAIM_TTL=30s +RUNMESH_OUTBOX_PUBLISH_TIMEOUT=10s RUNMESH_DEV_AUTH=false RUNMESH_DEV_TENANT_ID=00000000-0000-0000-0000-000000000001 RUNMESH_DEV_USER_ID=00000000-0000-0000-0000-000000000001 diff --git a/deploy/helm/runmesh/Chart.yaml b/deploy/helm/runmesh/Chart.yaml index 31c3ecf..e3030b5 100644 --- a/deploy/helm/runmesh/Chart.yaml +++ b/deploy/helm/runmesh/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: runmesh description: Failure-tolerant workflow orchestration control plane type: application -version: 1.0.0 -appVersion: "1.0.0" +version: 0.1.0 +appVersion: "0.1.0" diff --git a/deploy/helm/runmesh/templates/config.yaml b/deploy/helm/runmesh/templates/config.yaml index 7fa3eb4..c5968cf 100644 --- a/deploy/helm/runmesh/templates/config.yaml +++ b/deploy/helm/runmesh/templates/config.yaml @@ -12,6 +12,9 @@ data: RUNMESH_HTTP_ENDPOINT: "runmesh-control-plane:8080" RUNMESH_KAFKA_BROKERS: {{ required "config.kafkaBrokers is required; Kafka is externally supplied" .Values.config.kafkaBrokers | quote }} RUNMESH_KAFKA_TOPIC: {{ .Values.config.kafkaTopic | quote }} + RUNMESH_OUTBOX_BATCH_SIZE: {{ .Values.config.outboxBatchSize | quote }} + RUNMESH_OUTBOX_CLAIM_TTL: {{ .Values.config.outboxClaimTTL | quote }} + RUNMESH_OUTBOX_PUBLISH_TIMEOUT: {{ .Values.config.outboxPublishTimeout | quote }} RUNMESH_DEV_AUTH: {{ .Values.config.devAuth | quote }} RUNMESH_OIDC_ISSUER: {{ .Values.config.oidcIssuer | quote }} RUNMESH_OIDC_AUDIENCE: {{ .Values.config.oidcAudience | quote }} diff --git a/deploy/helm/runmesh/templates/deployments.yaml b/deploy/helm/runmesh/templates/deployments.yaml index 0bcd8ae..1a953eb 100644 --- a/deploy/helm/runmesh/templates/deployments.yaml +++ b/deploy/helm/runmesh/templates/deployments.yaml @@ -148,6 +148,8 @@ spec: {{- toYaml $.Values.containerSecurityContext | nindent 12 }} envFrom: [{configMapRef: {name: {{ include "runmesh.name" $ }}}}] env: + - name: RUNMESH_KAFKA_GROUP_ID + value: {{ $pool.groupID | quote }} - name: RUNMESH_INTERNAL_TOKEN valueFrom: secretKeyRef: diff --git a/deploy/helm/runmesh/values.schema.json b/deploy/helm/runmesh/values.schema.json index 73e017b..132d310 100644 --- a/deploy/helm/runmesh/values.schema.json +++ b/deploy/helm/runmesh/values.schema.json @@ -15,6 +15,9 @@ "webApiURL": {"type": "string"}, "kafkaBrokers": {"type": "string", "minLength": 1}, "kafkaTopic": {"type": "string", "minLength": 1}, + "outboxBatchSize": {"type": "integer", "minimum": 1}, + "outboxClaimTTL": {"type": "string", "pattern": "^[0-9]+(ms|s|m)$"}, + "outboxPublishTimeout": {"type": "string", "pattern": "^[0-9]+(ms|s|m)$"}, "rateLimitRate": {"type": "integer", "minimum": 1}, "rateLimitBurst": {"type": "integer", "minimum": 1}, "artifactPathStyle": {"type": "boolean"}, @@ -34,11 +37,12 @@ "type": "array", "items": { "type": "object", - "required": ["name", "enabled", "type", "replicas", "credentialSecretKey", "resources", "autoscaling"], + "required": ["name", "enabled", "type", "groupID", "replicas", "credentialSecretKey", "resources", "autoscaling"], "properties": { "name": {"type": "string", "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"}, "enabled": {"type": "boolean"}, "type": {"type": "string", "enum": ["go", "python"]}, + "groupID": {"type": "string", "minLength": 1}, "replicas": {"type": "integer", "minimum": 0} } } diff --git a/deploy/helm/runmesh/values.yaml b/deploy/helm/runmesh/values.yaml index 6572cd8..1ba6ebb 100644 --- a/deploy/helm/runmesh/values.yaml +++ b/deploy/helm/runmesh/values.yaml @@ -1,9 +1,11 @@ images: - controlPlane: {repository: ghcr.io/example/runmesh-control-plane, tag: latest, pullPolicy: IfNotPresent} - scheduler: {repository: ghcr.io/example/runmesh-scheduler, tag: latest, pullPolicy: IfNotPresent} - web: {repository: ghcr.io/example/runmesh-web, tag: latest, pullPolicy: IfNotPresent} - workerGo: {repository: ghcr.io/example/runmesh-worker-go, tag: latest, pullPolicy: IfNotPresent} - workerPython: {repository: ghcr.io/example/runmesh-worker-python, tag: latest, pullPolicy: IfNotPresent} + # v0.1.0 is prepared but not published. Override these tags until the release + # workflow has published the corresponding immutable images. + controlPlane: {repository: ghcr.io/samarth1412/runmesh-control-plane, tag: 0.1.0, pullPolicy: IfNotPresent} + scheduler: {repository: ghcr.io/samarth1412/runmesh-scheduler, tag: 0.1.0, pullPolicy: IfNotPresent} + web: {repository: ghcr.io/samarth1412/runmesh-web, tag: 0.1.0, pullPolicy: IfNotPresent} + workerGo: {repository: ghcr.io/samarth1412/runmesh-worker-go, tag: 0.1.0, pullPolicy: IfNotPresent} + workerPython: {repository: ghcr.io/samarth1412/runmesh-worker-python, tag: 0.1.0, pullPolicy: IfNotPresent} imagePullSecrets: [] replicas: {controlPlane: 2, scheduler: 2, web: 2} @@ -12,6 +14,9 @@ config: devAuth: false kafkaBrokers: "kafka.example.internal:9092" kafkaTopic: runmesh.tasks + outboxBatchSize: 100 + outboxClaimTTL: 30s + outboxPublishTimeout: 10s oidcIssuer: "https://identity.example.com/realms/runmesh" oidcAudience: runmesh-web oidcJwksURL: "https://identity.example.com/realms/runmesh/protocol/openid-connect/certs" @@ -49,6 +54,7 @@ workerPools: - name: default-go enabled: true type: go + groupID: runmesh-workers replicas: 2 image: {repository: "", tag: "", pullPolicy: ""} credentialSecretName: "" diff --git a/docs/adr/0001-postgresql-source-of-truth.md b/docs/adr/0001-postgresql-source-of-truth.md new file mode 100644 index 0000000..9bdf357 --- /dev/null +++ b/docs/adr/0001-postgresql-source-of-truth.md @@ -0,0 +1,15 @@ +# ADR 0001: PostgreSQL is the execution source of truth + +Status: Accepted + +## Context + +Workflow state must remain queryable and recoverable when brokers, workers, or optional services are unavailable. + +## Decision + +Persist definitions, runs, tasks, attempts, leases, dependencies, and outbox events transactionally in PostgreSQL. Kafka transports work but never decides the durable task state. Redis carries rate-limit state and live hints only. + +## Consequences + +Correctness can be reasoned about through database constraints and conditional updates. PostgreSQL availability and write throughput bound the control plane, and schema migrations require operational care. diff --git a/docs/adr/0002-at-least-once-delivery.md b/docs/adr/0002-at-least-once-delivery.md new file mode 100644 index 0000000..9cede33 --- /dev/null +++ b/docs/adr/0002-at-least-once-delivery.md @@ -0,0 +1,15 @@ +# ADR 0002: At-least-once delivery + +Status: Accepted + +## Context + +A process can fail after a broker publish or handler side effect but before recording the corresponding acknowledgement. + +## Decision + +Allow duplicate messages and attempts, and prevent duplicate successful leases with compare-and-swap state transitions. Expose the stable task-run ID as the handler idempotency key. + +## Consequences + +RunMesh does not lose durable work merely to suppress duplicates. Handlers with external side effects must deduplicate those effects; the orchestrator cannot promise exactly-once behavior for arbitrary code. diff --git a/docs/adr/0003-kafka-durable-delivery.md b/docs/adr/0003-kafka-durable-delivery.md new file mode 100644 index 0000000..225ab14 --- /dev/null +++ b/docs/adr/0003-kafka-durable-delivery.md @@ -0,0 +1,15 @@ +# ADR 0003: Kafka for durable work delivery + +Status: Accepted + +## Context + +Workers need resumable, partitioned delivery with consumer-group coordination and explicit offset commits. + +## Decision + +Publish dispatch events to Kafka or Redpanda through the transactional outbox and commit consumer offsets only after a lease conflict or completed processing path. + +## Consequences + +Workers scale through partitions and consumer groups. Kafka remains an operational dependency for new dispatch, but broker outages do not erase work because unpublished events remain in PostgreSQL. diff --git a/docs/adr/0004-redis-outside-durable-path.md b/docs/adr/0004-redis-outside-durable-path.md new file mode 100644 index 0000000..0c6d099 --- /dev/null +++ b/docs/adr/0004-redis-outside-durable-path.md @@ -0,0 +1,15 @@ +# ADR 0004: Redis stays outside durable execution + +Status: Accepted + +## Context + +Rate limiting and low-latency UI notifications benefit from Redis, but workflow correctness must not depend on ephemeral state. + +## Decision + +Use Redis for atomic tenant token buckets and Pub/Sub hints. Public production requests fail closed if limits cannot be enforced; schedulers, Kafka consumers, and durable state transitions do not call Redis. + +## Consequences + +A Redis outage can reject public API traffic and degrade the UI to polling without losing or stopping already durable work. diff --git a/docs/adr/0005-transactional-outbox-recovery.md b/docs/adr/0005-transactional-outbox-recovery.md new file mode 100644 index 0000000..59300df --- /dev/null +++ b/docs/adr/0005-transactional-outbox-recovery.md @@ -0,0 +1,15 @@ +# ADR 0005: Claim-based transactional outbox recovery + +Status: Accepted + +## Context + +Publishing to Kafka inside a PostgreSQL transaction holds row locks across network I/O. Publishing first without a durable claim allows competing publishers to reorder a workflow. + +## Decision + +Claim only the oldest unpublished event for each workflow ordering key in a short `SKIP LOCKED` statement. Publish outside the transaction with a timeout, then conditionally acknowledge the claim. Claims expire and are explicitly released on known errors. + +## Consequences + +Database lock time no longer includes broker latency and publishers can process different workflows concurrently. A crash after publish but before database acknowledgement causes a duplicate, never a lost event. A claim timeout must remain longer than the publish timeout. diff --git a/docs/adr/0006-worker-leases-and-fencing.md b/docs/adr/0006-worker-leases-and-fencing.md new file mode 100644 index 0000000..b6d4a78 --- /dev/null +++ b/docs/adr/0006-worker-leases-and-fencing.md @@ -0,0 +1,15 @@ +# ADR 0006: Worker leases and fencing + +Status: Accepted + +## Context + +Workers can pause, partition, or restart while holding tasks, and an old process may resume after recovery reassigned its work. + +## Decision + +Lease through a conditional state transition and require the tenant, task, worker ID, active state, and unexpired lease for worker mutations. Record each attempt separately. Recover expired leases to retry wait or dead letter based on the attempt budget. + +## Consequences + +Only the current lease holder can mutate a task. Long tasks must heartbeat, and recovery begins only after lease expiry; therefore the configured lease bounds failover latency. diff --git a/docs/adr/0007-per-workflow-ordering.md b/docs/adr/0007-per-workflow-ordering.md new file mode 100644 index 0000000..06262c6 --- /dev/null +++ b/docs/adr/0007-per-workflow-ordering.md @@ -0,0 +1,15 @@ +# ADR 0007: Preserve per-workflow ordering + +Status: Accepted + +## Context + +Global ordering limits throughput, while events within one workflow must not overtake their predecessors. + +## Decision + +Derive each outbox ordering key from the workflow-run ID, claim only that key's head event, and use the same ID as the Kafka message key. Different workflow runs may publish and execute concurrently. + +## Consequences + +Kafka partition count limits useful consumer parallelism. Ordering is guaranteed within a run, not across tenants or workflow runs, and changing partition counts can remap future keys without reordering records already in a partition. diff --git a/docs/architecture.md b/docs/architecture.md index 34cf05b..5213600 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -15,7 +15,7 @@ React web -> REST control plane -> PostgreSQL <- scheduler PostgreSQL ``` -The control plane validates and versions DAGs, creates runs transactionally, handles tenant-scoped reads and mutations, and exposes worker lease/completion callbacks. The scheduler uses `FOR UPDATE SKIP LOCKED` so replicas can claim distinct tasks. The outbox publisher may republish after a crash; task IDs and compare-and-swap transitions make consumers safe under duplicate delivery. +The control plane validates and versions DAGs, creates runs transactionally, handles tenant-scoped reads and mutations, and exposes worker lease/completion callbacks. The scheduler uses `FOR UPDATE SKIP LOCKED` so replicas can claim distinct tasks. Outbox publishers claim a workflow's head event in a short database operation, release database locks before Kafka I/O, and acknowledge the claim afterward. A crash in the acknowledgement gap can republish an event; task IDs and compare-and-swap transitions make consumers safe under duplicate delivery. Redis enforces the public API's per-tenant token bucket and carries tenant-scoped live UI hints after the transactional outbox commit. Those hints only trigger durable API reads; they never replace PostgreSQL or Kafka. Losing Redis fails public requests closed in production, while the dashboard polls and scheduling/execution continue independently. MinIO stores oversized input/output/log artifacts. PostgreSQL contains references to those artifacts. @@ -36,3 +36,13 @@ No API performs an unqualified state change. Worker mutations include the task I ## Tenant boundary The authenticated principal supplies tenant and role. Resource IDs from paths never establish tenancy. Every public SQL query also filters by the principal tenant ID. + +## Decision records + +- [PostgreSQL as source of truth](adr/0001-postgresql-source-of-truth.md) +- [At-least-once delivery](adr/0002-at-least-once-delivery.md) +- [Kafka for durable delivery](adr/0003-kafka-durable-delivery.md) +- [Redis outside the durable path](adr/0004-redis-outside-durable-path.md) +- [Transactional outbox recovery](adr/0005-transactional-outbox-recovery.md) +- [Worker leases and fencing](adr/0006-worker-leases-and-fencing.md) +- [Per-workflow ordering](adr/0007-per-workflow-ordering.md) diff --git a/docs/delivery-semantics.md b/docs/delivery-semantics.md index 0143e94..022eeaf 100644 --- a/docs/delivery-semantics.md +++ b/docs/delivery-semantics.md @@ -3,11 +3,15 @@ RunMesh promises **at-least-once**, not exactly-once, task execution. 1. A state transaction moves a task from `READY` to `DISPATCHING` and appends an outbox event. -2. The publisher sends the event to Kafka using the workflow-run ID as the partition key. -3. A crash after publish but before recording `published_at` can publish a duplicate. +2. A publisher atomically claims the oldest unpublished event for that workflow, commits the short claim, and sends it to Kafka outside a database transaction using the workflow-run ID as the partition key. +3. It conditionally records `published_at`. A crash after publish but before that acknowledgement can publish a duplicate. 4. A worker leases with a conditional transition. A duplicate cannot acquire an already owned, running, or terminal task. 5. If a worker runs user code and dies before completion is recorded, its lease expires and the task is delivered again. Handlers should use `context.idempotency_key`, normally the task-run ID, for side effects. The database retains each attempt. A stale worker cannot complete a task after its lease has been reassigned because completion is fenced by `lease_owner` and state. Events are ordered within a workflow run because all of its messages share a Kafka partition key. There is no global order across runs. + +Claims expire so another publisher can recover abandoned work. The publish timeout must remain shorter than the claim TTL; otherwise two publishers could concurrently send the same ordering key while the first call is still running. + +Workers in one Kafka consumer group must advertise the same handler set because Kafka assigns partitions, not individual handlers. Use a separate group ID for a heterogeneous capability pool; each group sees the dispatch, unsupported pools leave it untouched, and the database lease selects the single executor. The bundled Go and Python workers intentionally implement the same example handlers and share `runmesh-workers`. diff --git a/docs/demo/README.md b/docs/demo/README.md new file mode 100644 index 0000000..dc77e1f --- /dev/null +++ b/docs/demo/README.md @@ -0,0 +1,23 @@ +# Demo media + +These files are captured from the real local Compose stack, never a mocked dashboard. + +To regenerate them from the repository root, start RunMesh and run the pinned +Playwright image. The small TCP forwarder makes the host-published services +available on Docker Desktop while the Docker socket lets the test terminate and +restart only the two local worker containers: + +```bash +docker compose up --build -d +docker run --rm --ipc=host \ + -v "$PWD/web:/app" \ + -v "$PWD/docs:/docs" \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -w /app mcr.microsoft.com/playwright:v1.56.1-noble \ + sh -lc 'node scripts/forward-host.mjs & proxy_pid=$!; trap "kill $proxy_pid 2>/dev/null || true" EXIT; npm ci >/dev/null && npx playwright test --config=playwright.demo.config.ts' +``` + +The capture creates a workflow, executes a DAG, terminates both bundled worker +processes during a leased task, restarts the worker containers, waits for lease +recovery, and records the successful second attempt. Review the resulting media +before committing it; never substitute mock data or generated screenshots. diff --git a/docs/demo/dashboard-overview.png b/docs/demo/dashboard-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..540c7ce048185a7f07ba56e046185e8020ea2f3f GIT binary patch literal 186955 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

t>E3I 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%0DrYpS>^fqM4@4S&4}Da+TwqTWwRF_;=; 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 AU;qFB literal 0 HcmV?d00001 diff --git a/docs/demo/run-detail.png b/docs/demo/run-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb1b9da16e13cb6e24795f9632752fca56942a0 GIT binary patch literal 102329 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%0DQ>dZ&PU*FsCSKj(*-GbAZZGzl1%k|+gX=8 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

B^2!@{O4c?9JD zJ_pBMclXldtMT<}GVp|16k`RI`dsvfw0vViZsNq4nsw@K5a`{VL>W@Y!oQ<%5`IdG zDpx=%LjS^T#ipWOk*tAJqvF_B$H|I=)@{i7fK=K5wOuYD4&LkaT8WuJJsC)lvVsqo zApA&6dFc!!;)iYJ!I#BL#Ofhh%44jEnP)hp%fO4xhLxC-CuVE8enVW9;eMOF^m?IW zRc5?%7(56}PeQ&)>!tm{ot4MH@{+dj)z!IgTZ$1Qu|j`iE^ulT&DR9A_K|L*Pcr>} z-UFtj^qQY08mx$85BbY%SSEU=TL0NKow0Cl)z&Ny%lF_s9dD_Ro=LDf@mILq)l>IL z0OMXZnU)wU7peIc%4$S9nlFqcXfV20N^LeUS8XI0YL|}(HO$5B(M`A)dfs5;-%J&q zW>tWaz;B^5(7~XvW^p2(0d3PE2Gvi)7J|2upJCd?$!}$?1AjpqGb6ej_veWga1u3V zL%=pIy_p`25%_X4RsRp_&S^;$CCH*}+qP}nwr!ubZQHhO+qP}n?zt2574rx6P!$&d^x>52e6xr7g{>@f4lk)?4MgAt711#m3*j)i8n4qa4XJv8Uk3rV^5m{t_%#N z#n0LbujmE9EuU>Vgt3twz1uSbGC~M=)X{pp+H{-@SJWnL5o!W3{rq9xtA$L)cnmGb zBeG*RFNW)*8VF7N(6oWQD4Vp*GqruWQ3vfc5}NC9b4LqPaN5}a`ytFVQ;V?WKD4MB z{VHgQw|8kh=U_oCP2k{>NU&zT=76eX3l|4b&QgMow@iQ55^S1J<^W^JA~APk74T>p z&4wOd;!jOQu-{9~4bV;h>cgLw`9TvWlKB5bV|nbZNakUD=4)vbI6z3Jr((%ujHGpX+VvEE}RffW@(#W zWxXwMU=Ojs8kpz<(6zwAB_(ypw1M%uJF+YDZMA%J}4A^tRHev~WA^2R$~uk6zxRTSLc ziOCfBMrvRvTMi#l%#jeMDB0M_^MG0=q2H<8O(_g$;ZM{J-fqDYG`KM`6f<~J`l>0m zQyvMN4i3?mq^&4P_YmRkLYJ+029d*WcmlYuuA`mk(Ko6e+mt-|wUEW<7Islc<2u z32ujp-&LAataf)T6?BfC+t$&unV0uW4W}cx@%hlT?#(K3MQiz}(Yi+D<=%@0`DjS_ zqSJ%(Q`T*V`ML8pbXaSD8fu&zK`AWo7iwZ@9c=x36LY5&h3Np-=Gx`_P_k~o4&t-P z_U-(K-WQ$Wg5`IozH5~=#2Vm>SSlX0hfypY2{@}-y=~zkVmNmuDu26mxCl=f-~QJi zA~@cD$gc2F?GvPu5PDJp@A#kK4$Te?myisDmW!dj+!wlt!P2Xa9y;Hrj@acpqBT@x zR(7`a`4IKC0Sw97!sxeaQXFiYlt@A`vm}gim=Z;Vgd5))AAB8=uIGEZ2Z%nEEb@H6 zQw>kHpwScQ|8Dv45AML5Q_J`bN{+O> z)e`gwGD@UWSS6AyUGZZUH)p_W!mBn5%aIamN8e;elsEY5bIYU6p<@&ea3R|UKG+x` zY`nr4=n;${WVL#)?CORbzVOoZeQAgm56Kr$EF{itBa-flxiDml=3*sP3ttIjZJd1X z>xgvBV>+w=&%Upa8;l0vb(&>{W-N5122&~!K0xGIgb#b@!-X!V%ofNO8Z**4*UwbD!afKmlZM!p6#YafKHiBEORw3Lf1XDxR2okabU|;RV*m$a@M7(H@vE)u zYDPf(pXp@e>e3$_3CoT(F=Ep864fX9`oGXmG~o*Ekh3e)AuoNWnbz|5-Zf7@O(3A0 z>O#uy+TVW?5BU$bEV#K6YXws{^Gn7a*16k5c(qVDHmlY!R8QhdTK;a?`NVA?DLXumusZQ^yIW?P=ZlB_{o-`Kj2{A-Gd&tIo&*(w7t3{wps zfLivvQ>dB zK?-4;_Pi4-{SBG{{akBpXS|E_9c8VPw!SkmXP30!7bzBG#sd#&q)^Xt|5FA1& z=*aYe{x{q!*{(gl^iw9IOleyrzob@$c!F!!D5+6^NWD&)tD{vA>K@y@5K?Tcfh1VD!HdMBLSBu&aIH&N{#$@`VD}hTf&UZOImVwv8%OMR+)-^9n*hdtJK(CYv*ovhx?4 zg8NP8d&2oV(jr}@VCikA6OyK?%csK2D7-A)s9brc}&##g|#FO?gCqQQQ)B)K{f zQg-`fTHT9r|5n@~ z*BW9WQwuENNp{>%Yq7HVzIciNXfhlKRn!N)V4+*SjsmW%EXf$n)W99zyxQ>;ut1-8 zs&K-#Hn=E;(fhf!8csKZpaW)nwZsVN9CDl{2_?_XE40%yC;1Nv-&;Y&l%TG0wsM>&8m2>|QABXQ zG}^D)ny6k%-SK&mUaWJJ|g1GHrQc0)*`&2l(R5%GosCp|7k`6#%_dj;vtF4&z>v} z#3ZA$!kuWD@=amJ zGkFO(8FRTS#-%|5SK^)H0s=cKFJB{sl1Qldl|T4diwpIVBH6S2j}UC~M<5}&KE2@N zW$P~VHE zvkpqDz|C4KR}U<1zH83KcheyJ-0jZ+F0f{UUAL1Hy)frG`yU9dcK)#Uf)G51fuiPS zC%X8wS5ZX&tS;V<(&h@q^Ii5Gf5!MV=}ZQtR5(8+CM&{YNuherQ)fuM_HhDyZ>jHK z*|UT|t`vgc;@W)p z_O7sM%n-If>bR0$?d#4{4w%W&l+Y$eim_{grhKk*QhYxsV!EJ{M`@F}oF4l%`se$X z0mHsBM3@*Cf&TjY0cPUE!>S{Y{gB?K*f;HB>*ZsEiO?ZQsb+j(-GrEMy=zn(l7Cu%4&P?;W$<*9&c5)PmNi@b1j3tmTltf zi%52JK{3N+`Y6`IOhBs?@!s!YYUG#c5>#tx2z2FdTxVk9WR`2wtpr2kqNUGz8(*9o zYi!QDm5&=)9^RFmIizh*F4sExFWVLLXTllEO}MB?rSbkalLQa_5`U+l`}k*50bJ}z zPvkWFiGGe^nUgY|%O}Bk@BW;tXbN@lw&X6uT%zA(7l84&rWrWM&6OE!gd5(tr3!0m zEONtqAYb)1?!DoTr0aXD<3aw74AbOEn#<7ZEj2lV1Kpc)gOa|%CK?Zs`ATQ0M^+|I zt$!963UM|+R?r-+jibmRIKJP_AvFaBQctpS?kUwli9!(K5$&%VYg#fv`dckKOp+fU z%W#jvfvYkrzZZEG{L~gdS_$V7k!-3sEK8Dk$V)l!)zp!*{crYFf*T!{uHpL4;?Z2; zqdY?1$;U#k6aLU#A9MHBNIw%}EZ7;T!tda#@1tsW@%A=$R z`Kvs_<;n>pVH=7`LK$^H>U5-xYQrRKY;)A_%~JagYXn`M-mZ)7fD63Y2kMw%&;A-~ za8t0pa^tP&8^r4U;Gb=0v9asv6%(^j!f;tF>O@)6D`cJqfEhbioba?5PxJ}yTijey zFG{nu{#NIwAa&NgTiXz+OxEaEJd*8|nf)-nMRz3rx7r=uyzaeK;sDk`39m_a)^PtE zP=regq5BpgyEWq+h03-K64ih|fhXa#o+^90#nrtNOkbXGlzpup+u?V`kA6;=>xe-- zu(Sj57<;VAe7>TqTbBGuE#>y>g5RM(dA_~tjhiy}Qy<(O;A5Wkgm-Srt;rl&%}Fqo ze@I^OGQ8Eq&LE@M47c_7kAXG&E`R8jgaBlYggy7%lzheVvSlgrH#AD;`jvf$W8l;(THkvW-~4Jl3$s8M1v zz2W7gWUFs<4s1$0O0udpZ&f%2@pvpt5Y+MB%4)1%E_A<8LK02+>MrV4X|vshj=0Iz%UssjAlb<4nVfju_2sDgE&=dvZey zY(qx!M>s&~n?;W)pvwwKBiwn_?*Ufg<^01195=i$69}lEobo ziq5ZKv>{QdJ$~K{taQtZVIvg~W3&?SBQJGdRRkL8KYru=I_9GT(K=z1Gtp*XyTC#y zfgl+>EMh8=bntihp@;mN*6qGeC^s&S03&vP;C@idrvG39faW}a%N6SNr_nPJsOD84 zK5rXCS#Slh2a7Ojum3O?E#8k{1cF%t+GJtry$EJwr$pL8inUL{ zKBbr0T~nEMta@oKT`}>8&qR^~12OAx#s((C4I9tv`HvS}GY@xB52@$?hH~!{y5ST5 z06$PzyP}pQ>`UDL^HZ`cQ~~NGj;7i0yIpc}m~6td2w`*PU`O^YcKks)yt?a66$xzl zv5ya!_}Y(pw)^ZdPX;g?o42*ri$m1;Wcn=cz6o|U@(9o%g$hkv-3Ky<^er!xec%QQ zjQDhi=Ml!ag_WV+m4EiFumCfcf~>7Nvcq_ml$s(d^T;l`5tby~_+df>|9Jj)eYNs8p(rc5W`&$tZI04!cOp6qP1V<+4HT$`x^&2%=NjcC3#dsxW>mBlo_hI8?n=5%KaLG_cH2~Xmry{KNUhpV@Qjm2M< zrVQRq$Bp)sjGr##Zcp5I;N3Q-3dDyN8uN$jX&PlY0FY&bk%*~4sv|43gz`w0-K&oz zLh7-^dB=yS$D4r>O_ot|pW!V?R21VQnUt7zf?cUa%|<$A)UaYOYxgzOERa1FK4XoDKCTghPQz21~s6S8bYqNXX zCf-g*1sW#Mo{4VXHg>VTCKi9b0nkhpL%KY{INDDdW>;WSc*`>{j`JeJ1GWq~VVJ$a zp5W0{L|HL`9+HI|qxA8w{gxDadIUY>w{?wF0 zt6(#!lWJcjK(phy{JKea*B%noxi;A$*#KLz9~Pi)f@y#rA%OiBb*q2gy7&x_x^m6I zWr=*!yVSqUWmn4Q%6s`TB4DHEk2E8!}+*SHSFash3}oq z2@#nCCB(a~9)@B&?|PN@M|wUCy>Ibk0i!g@+h#F}C#{>b;G#;e$jKNiOvnQGT|56N zf%cud`stqS;kyl_w_JLATZ8-&f*8jDzL502D+AiPDNv=E9gA zrGgPjam>m)f6P5y1 z&Y$#w4rhv>d2^=-Ax;8UPr6RfImL+by!)l zuiTbf1t~lVKp?6+D@&chpWbtRyE~b)vF@6_BJ2*m4KtDgA_jRSb766YJP+^gVsyZYAI=fl z6Wd@1!zWWdSdR(~N;7vPzn3~DxG#6$5wY8%WG?}1Z^vSUAS2UlULNsxZa*EvOObLV zt0}821@FV*(sCn|Hl=z8Li#t+|CLEf|IFaF{5CFzW&;!Cd=RZTN0z8z|#D3mGsgoN(UUY=%9 zD+v1r#48`iU4SoIL7|_qr(a>ZWsb_1?9lYVVNd^=xrgRO6}#q?2~H;G2$;p4i?>|V z4;#c*`y&gr`+1`Nt*Q${)oY)=6@J`OyehC8G2!6-oq+pV=R*y8aHEB~W6)rs+xSmS;HB%o(5hNu2=Oc@rgE{;)Q zT%NCWAM}@Utjw;Ikq&a!QRbFd~82mtr> zCBx^@7v$k>l!Drr6L)d3N*Qui_Ovo4e~jaiC$mfb@W)KpnIF4QAbJCc)7juOG|sFD z7^#B(24MKqnE=)<&bfMl*VD{)H78QVV$wG;T-5gfdP}0p02r;kuE6ZV>V(oNctJ!{gj#NRg$PLN26_K4x8FsYn>N&DVqR(o-=Qwb!7Q%b)ifWHf()*1~mRjR|fj8k23s~BAm4MYwh;nBe z1OP-g_$0X~@zh=smv=C2xF%hc2s-PI@aNHU4%34Hs7&N_$b>BG$<5m+-toybYj&2O zqpYth)eAH>_wvZQs6q+aj)*d|R)+~E4Wzg7Z&`hFh{$|iyU{&G){ejObZDcDo~32d z0G9q5SKev*bwgS07D4P#yxX{pqB{It&HY-c6ynFkEhAFrN0LB~>o5m~f;`WRfJe@VD z0W+bnXzm0Vt?Mx=?$kRrVrNsB1jc9FQfKM{jTDKfBn(+3@|Nv3C>+t>R_)~=`WwFs zuTYQqGQy-HuSXychRU!+kM;~2VcN?IVqO6%t$oi*vN$09n#wk;D!16U)4{??KJTQz zKdy%_Q5eDmg{Bb5Wbp3@W!ZfE{*fayvWS;mk*-1b!W`0%<3=s5+{P^ymod>is@#J{ z2sNBkyz`rK1ra$UoNn^!^V_M~jKd_$qsm!rRQ#pZK>?}M9%KHsD_q$S zF8Gx(Zvf=6_O^HDC~{4O0)IFnSoE1sEu>3cH2!;M!B^|h(xWrgNgca+hnVKePJAt7 z3Yf}us^`NBFg*#^AwkLuFGK7AJUvH!B;%jj+!iLVyEnST6^D2w;Q$5@(&FLf)8uWL zS&WT_OQi#X<{s#R?bJCQ3GbWyKwRt+#Q7CTY|o#eiFnqMJom6v>V(U+5j@Fu=MlKTK&=d8#D>pyzmlwkal2owW77B!n;M+cbip@KQVp z>pek6iv09JK2$BifQ{d)x?blONP}|!K@xH6V=_K}a){A5G1`RooS&>>E39yT?!RvM zUid?zEetHOqw9nQXRy*-%3$0BP`{AE)SEQM#76QwF>h!simb7BJwy6ij5*2wp>6+#kx*Y!6k{)C-_^4np1jh>S+RE$%{aE-di< zD64(OUcIn2w#pUpFj>4maJ759CD$E!q~^&rG+uA@`d}d;(^+sF{dDU&YMiaTTe&|* z|Nb5%yZ{Yh>`P^Gx%R#48Njo|3lP`~{oXeq?T2#oi)wPT(^sxGzeV!PN+jz7PXW+m zst3UdvBO~Dc6%`BL)kVP^^Ubg$S?<{2o|-nI?RC>+PZ==F39;Y4#k6TzGZHl$I0}{ z!&`T?yXU2K`muq;fO-5FhX5^r)%S#J4s{xnQwzy!eBRED{HjuZ{F!r*>9iFSVd@l{ z7ZFPh+gf}TES}~pI1?Gun+O{` z>bCt>8?2+uxVZQvGzFR6+uR45?D5TsOn$f`*PFA5K;bQ}dkYU9 z)ib&fz&k0lD{ZK)P?sPiwQmmd?BCBK9v5z|-{Ufu%}%NSpl<5IS+SMUQ8Dcz4rl0p z1`!6yu>yFh~F^c!gvg5}rS&Vsk^WTqVEt7L{zfCp$b#m<;t|M!3 z?qzq;kRs(tG9Dg>KMjYFZn+j{oaB~GKA+E>$LnZd9y_>zzl!$`DVV2iJ_MU2JbH5@ z@eo~6!?X7!bjdU*R!+(iFFpLVL{i#Acwo+C>l`cHl#Q{<@&}we5+(DtdZNl76fExy zIq7d++5$4S&znJvsS#<8fmXa71Ye*26+M}}lbf25jENdlG<2Xqud z(ig%4?1rmgy$V*RY-ml7iEE`H*9lh*$^aE)OVrh14B?WxyQ$T>uLk&oTiBh!;=_)W zeqAb@Tb-fkybN%Y4K>^ltr_cYPb8MI=v9+g^A6zuDI5szpw-05c{3_FD{n&YFSe6m zfsjNKLU8qoq^Q-5c*sjvZ_B4aWa2EeG6FF&M>X&0VhCs=no#Vr+x|tu9K_4)p*65| zT*`{6r^X?*IlRQvbJabw=Ty|0;b)4bzO}#RP5n7L?P+}2me+77Y|wA%V@9~Tf`kzj-FBNVWjW8t9hAHo)lvf zHBRZAZoHRFNyCqG|XYQHK}uxDLBZ_>ltcDr$7pFn+IeSyu>yzFSy!}5@s z0K%w`Ii8qDF7u++O;GWCI%6FDjy9pVBYZ* z(x11LCcl=`@6O6O1B*4envrL!$uTk#YCEqAuji?RGd@P$e2#g2e{UUmD$_iMolF8V z1l$O7Ebitq;<3^MBMoeLmkTss7i z+@CB<95s>Dm-7(>Vqjz&-aq`HX}dN?$-&g1!nPb80Roxyik$V_;7>5TY>Bhs->0xP zbqiMjSj90QESzwKf4;@}-$sXufxtt>TntS6*dJexw-qsp2L-IRL)BuUN?>E+)ZIA$ zylr9RyCfC8e{wod)eQtwZ`(FYWKrZh;96;O=&5{;i6cgGm=!JAOI*`i!RXRV@4+#M z5R<*6Usnc>;#oeQh9EU;eNp+r!CG7>MOis#ABNE?z1&%&mEm z;VW3*x4GU~Nr_V=$cN8SrK0&A6Ii%!J$fMP`Q5wvIsd3) z)NtB!*B?;Q9tzh(5Jxjhcf89hfYs)~F^ z%zHn;EFZ=rQfJD=%_xQEU)7>Q@##K2A;?$(vdRQ88ETETanBHBRCQc6E-!Hjcb$jy zjRE9Er^J}ylUHO89qikO!FJxl`7K8oCA=~e; zXKgWI;KbOT^bCZXLnye$*M14CN)D(LQW=z4N zy5;G0{6QmS!Of~R{^22T6R5rPJd`uZ7jyyG;Mrm5!d)X%#50^I0V@->zglGrcjJdl)-oND(Q%8J3bjNRvwvsh>_>Cn$v z@rBz%6fU=Mg)b1$lPcg4PH{s!1pO+NnqEVstbDttebZK7YaCc@hV5=!l7%I}3H2T2QyVE`d6>(`?SAB% zwqV#%>%qIi<`=Ok*Z`h{HwRBuR$LriZcuuG_iu!J2KV{nU1>VlvC^XtU0(+8(hKOu z2!z0cNreb}W53@-(GJF5rvvROr zR&-IN^hhJHjRXb~;B(RBn;MnL^v>m{@T1+nJD2Omf1D!@^F`o2xRJjh10 z<=`tIB5TKcI%E&KqJynhT{BUx1SYnHqPC+}#&dlqg`Ota;1kX&nyHHVSL0Rm2+)Nn zx_IrxvY;*e4_6h{%ZO2@ppyGJc!d0coxkV~4=D*qPgZbR3?Yn*Es9XHTK>}(X7iu7 zZPi-o4#Q|#cV$7w&Qf%pl$cM}NE4D%kL-tyn38xEM0A6Z)|cjgILSdOi#MCLzd;CP z_E35vlaQq7Mt~+T5Q`(%ariirulfpslj++qQXYm;sW-|}F`$vHm_Uub57n*t&X7k0 zRRPU*JtWFhIMm7}6>N8rthWS@qp3T6Slv^OB4$?nKK)YwS#cX+IH5x9|H4D0Tw;&1 zR=-x+0={7y;j#gOMx<8Qn>>?nc1X|&>WR*AoeMtXcQ7S+Xc9J7UWux=MymIeOBT+2 zNS3uxYmVH=VyC7b^`Jh(e*zo1IEl{T#zF2+-Wh^HC;WA1kM&<_m$z2J7NE}d20za! zFw~Z)H|xx2tId7QEd<)eXIX8nBUb)uC4!!+7&%eR{B?()pgY2%h!$M)Ecd69H$c=X zVR9mz^E(S%gRJ8jm?(a*>Hv+CZr|{>5pNz`Ufvc0Xb(`kgJT*QA{m++Q#B4ORA9%N zRe6T%qZy+Pn3hb|8w4^liyct`j)i>cQcF84P_w}Z+o7;enO7tWujo-8elAalW|>l%vXdv)$S{y0;9GlzP=1(?*c^>Y z;q1`_cWP^jqG@}(gt>dK8P@;6;^wbxdnrhfZQc`sW!w=Uldj^=llr0gdJsd>8|&Q< z*PXQfI&78m+_xLA_R^>i5U5JX4Mhd>RZWu!ZcTJ;vvuW-^3{cQL)MYlhEIXn%zma0ni62o8q)u>T;d+7c(GVeF~9RSQDudM*{7}x zn0u~8OH@RahpjH!Ec;>jmxU+iK}b9~AY5R@ZeR2J(i)h|Wq5AOmyZ{+c-cSfX2_Yw z(D3(tNVGK7S}*Tl5u=BKOzNK&LKU!_@bzJyt-mxvMTROOdC zl=b2N{A3Pu_P8WI_qnppA0Ao6Gufy4CidAW=hpF4k--6a|Tz24r!!8 zTCD;p>FO79K2J3DLXj@dVNwvYFppc1CJ(2QJBtoe>cx^53cQw=Fv?vCj8I;k;pERb zA7>UTtM{iO$$aP_cW6@JHwa3(r=&y3%xGp?G{)@%4OlayS#&T0bQUN>Hn zd#4+gyreXV3gZySipTDSbRs$DqtgI5%L2g1o``(#onXaIHC!|_>G9bJ*1#qW^`td@ zSDmUh?aDd!9OQHvAT^S=uS60u>VKHRbGz@nO$n5tI*{))d@*n0#t4!?%tIGLubQWX z{`-j1A6*V737N!FL&w)sfBwyL^>d@GPob}Ph0terAbn+-W4}tJ;K%`)$8Z!-OG;p`)$ugJ3Q~&vWXSibp%2B2CLBw8iuBHoKlc729{x%E zIw+S_G)DFuMdV5alb@pn0xo$QZsUtwxicYg2|k~La=;Yk@>9K9z5OCtCN0ld;*1h@ zEZ|gp&_g{ZB|}ntj608r1Qnx9eA4QwTwM*}=p|ETcQU4f9OOok2DMLTNdyDdC=??Hs@RuNnE~f&nsJ@2h*Jj=BQil`9jC zDqfof`kkMjMgcsDTdKs+I`n3C5bkpgVjUa@PP04oRoSe0?p=9gC%{PL+J~BZ$0YvJ z;+~6kn7_Z|(~hl%-ZZq$5?X|*Qy(5Z7s9&1v95Zrmh49?h9gF9`dAAcuDrUN8OSPU zCLP18RflK&YtWQ!C9hl)EDo%PpwBw1K%tGIl};N5U7mFzM9aejW?}r*Wvu#K4?BD7 z8u?2`Ro>spFdE)%*0_JJ#+?06c!uK8#=7k=PJk0D@zKsLbMfvVp1W(_q^U(eh)&&> z(T~9*-wqbXZp75OHQ7A9EaFS($!ERRn+oB(9)17@(E(m(DS-1)-@HnzRvSMAsz|7_ zLCb8*tv5?UFvWtTVd%d|8B z7KzHbq&6lJdGYVh4NWF-DCZ=n ze~1m*@~0V!eC)lZX1wYkq$+bk0IE~~M!^HtSxA;0I`nSTec~hanCLK3{x`h0aBXg0 z0Un$bv3u5!(coL)Ic3sOPfdwd6cZL02RR2UXJw$BIHPyl1ea@ZyB7u zLq@^#Xwi%qZ=(5NK47I^cfdI{!{&+$AGLynwYx^FWB`?{3uhxE%}Kfa9(u1Q)nlgK zO^s14C^#Vcuacs;IqFo=;K z`4}d5X^oXh)7r+G`L{r|z3j^(bJ!0izr}uW&$|(s)1)i1l(1wZOycvpRg!!q0x2Ul zfv#(>^kHHq9~2~uC{%yNQWx(caC_bwH>D94dN%Sunsh>=)Fi=S)2c0{RM0Y1-m|*( z$oDIY)Q>J(m0^{!@pKR|=cbweT(o}mBzs;La`Rt6GFy)|=?=az|?V zOGmBg%;u7b`t~Dwg}&FnO1GbPwI7CZxZy@+tI#n!A2h$GCHEFCi4>{Nn!@2d&0uma zlaeMqboY9p^A2_RMTszQ1z`wYa#eUBZg@`MS8UjZBd?PdpeAc*6yCJz0CXIVDNkL1 zjZR|@gOC2G^#S27iHe~%riqA%mBwj*bn_sPdj@$=FxWL|p?+tyY^Jah+%rsqE%bUN zqW=|gyfv7#0F`!)?6luG+_n_a^!q3@j!#x!MR~BuTg4@#+>`d&OtZoQ-eGuS#zqWt zp_7I{gy(HJ8PNAQ#}Al0-{5_Jgi>)R1LY2M*<+4I&R}$toENpHw|?{fxVpifILQ#u z62H{9AECDSMA9FVkO>?oL&KUccDj^7l;wD+bkB-rF_wZAGrsY!GA;_iTwS7ZvDDnO zWGEl6{O@U$ijXeZ_j{_TsTc{fm?DvVx)`gz?{)%&XiYXH*-lV#q6CeJ^^C@7I3-un z`*53+_jJ4Q>4Yn~&X2OPvIj0JCWK4OrP4-wUngUZogr-AH>jWrEJdt;7Xu(FskL6^ z3(qf-?khdyIoZbtSs%r-7KYwJ9^pUqFgW1g8YFtR&Z%aa((XvwoV>wE8$WKA$V<)z zP@vq+A8*4BbN;cS>E6vbWzSm`2K8-lDiyqn8W_rs!Iu|t)Ym##Hf-o3u#QUTZ#Zp9 z3IkgB33ZXTh4T~+tRD|X4_ueLc$jUEMF6LfL-aO!Iatyol)EL%bvc4TWa|f9!ZnS1 z2M_Eeht;gx!sa0z+0MgSl_86M+R-w8M<&t>_>1?LH5QxbPawq}<`m+It^H{*a8Ae? zcQ?WHQPwh52=3(VW&5Q@O&?w-*fVU9+j8=6jwBAL!$V62o}u@wu5W+z_908dc^htE zA#A>7sajmpT0Xe1yb5`y?Ql^(1W-PEZ}Z}ecExgG{-7Nm)YyZD7$=oe3Jd&}m{?i| zS^vUB-#S)e#?!5)Y$hWNulci+cz>v4C*!g2R;4F%<-xiAL}nhc=KC;?hzIU+3`s`- z&Ztgpg}a*=&Vh+4zH_@Q= zaJW6~mMn0n?6|R)%E2!*lVZ5U3-8u>QSxkWj2?&*_@GG8SgoM)go zK%BEGB;8qkZpc=}r7Egcwp_rvaPhXgUg6NI3|J1H4L>e-5Cy=Sc*9K1IN%@+rqnOI z|6d56zVv>Vm%5BH%OKBa)JPXxzg>xg1b|43Iq-Uu2Ox}08e+#%^n+pOXuDD@ZF9o|1&?<$sA&T0nbSBE%f^n@X)E1$ zWk9(mbH*@6Fn_(9Lcc8~uT4Nqy=R&y6#?0#A2JOVy9S7~-tO-sI!$tz0fD0{RIEdihc9x<>GVixW*x^gSO~IDOOoa zZhLQE^REA*WG)bV$q(XphCYvA>4mUI0}Rs{wIn+6*hk>FeX;^k-hPUKucE09e1`DP zUE{n~TczgbR`uIij9YlM^8B{%0jY#h6|6s-{|MzJ3$Xyzdh00%ZgCDsRA zMn~2eb-cWzdhT&NW%wzB+L^uqTn$g@{*&9nYZ|-JoA0fKuL`RZTgK-Ze*av}fny#)kMa0%7R1|dA{wuGNdq@>me)FD2H2>mf%tF(9y6@Z}^f{guu+wX>?Rge+gn zs~^6%R>`E>x`H}gQVV(pn+C6V;T5NlA%e|#3;t;8uToD5DlA%Hh03VZwKZI7+$sg3>TpQ ztWGU3g2b9n;Y0)m>c6EJWNb+xwS{JCAya!S;RSXwKx?tuwb5CcTh}9QepTFey?`<9 zXgX)t4!-B5GE>yrkW#$UUK3LwTfW5xy28v+WnYPu_H+IJ%NAWj3dzd&Y&+@y^7+Z! zd-1riTHa{rT}*`xzOkCnl}Wy^L9yQOjRCH3?I^pUB=A)>DkA@z7EGFJJy-q;vNqSF zlyfp(#l`BZB6wtAIx(6+1Q*I={B5X?9H7*lT9W7iOKOwBHb`syuLVgaJQ<|jShYwm z=+K)g)gQxEGXoF*BJ5nW0zfZ5fT4P>3Qoq~vD(2@zWtWO88H=Cb-%`&GB?m0IbA-@ zwBadn3PG$LS4SLbU_jGE+++N-HY~G|Z3>+rL8GnQnRbCWXjp+|C)qf-sN`R9k5Uuj z6a90(QukEvH2vpii(&rv5%zlXb3~r3%iheHm&Ljg(EGXqP4$;l34(VLKyOvxDZ)d* z&dU7#6gca`WXsmg3BYFF>N+5=9|0cQ4@;EcFa%O}B~bP(PCcZ<&d(3YN+N!ZpGq!g z(;_zpJ9FgJXvMQcWt+*rFU+wpo1YKn;u}YcOj4+3w%2@K=Om05+d}n#hwUX52Ne17 z>yQ^4lxZv%%xdS=WgNe}krvBM_WbuVk!bDCurT|`=Vc>rqk+%@9ohs~BVMW?Xjm)I zJ`2T3ijDb57Up1C5w0FRz~dOb9xmBZy#iYLURW7_xzFUSxj5q8n8y{E_J{H|$yXIs z(G*0ra8STVod|~DG9+gLe%)uTBpQ(4&Ep{{@z8LVoe|}Q6sSed?C}_!JpXGvCOVC) z{A$#$2=%D24swsZTNz`;+$P@t*x0>r=&Tp!$X-bKU7o_fFWI{Xl zHA{VDo=)SS6OG$w(`xI46#dsVz9}Hg_`JQ9$LZe?<~IAtG) zP?->-@5AD%j}!hJ;@C_sDPi1Ei8RZC@va=#Y(5Da;Q0K2Aa(FJCId30_i>~QBkI?2TK6i*Sx@h0Vt@}wy%?XbH+e<07B;SJ1Z%- z6_7NAA%wYwm3pp#6Quf5Ye)0l-ebyUgZOgfPa+*}|LJ*ME6W_B=a|Dvn1Yxl(&A>k zEEx4#*i(p%Cs<}EBiAs7C;lf!C3T!Ca>A^MA8y#nz&aBTgYj4SjkSIQ*s!O&$JnUw zQ-qCQ^SZr6fi{p^jrdG+3gbXq{FDsji&SLVM{PRX(7$qJquU|b6bsf7+KM)Dg+OlF zt#17^73!B@f3X4N1u{l;xdn$(2Ei-kcy93p%LnJCq5om;9fCw@qPD@dZQHhO+qR9{ zwr$(C-M4Mqw(Xw#{@=`Iu${%koMlBtR7U2>=Q(w_6-`Dl5m-0|2{d(F{BpG(h2K<~ zuz(uT-DqEfTh`Eoo)a^Dov>BR$PsclPHF_w4-3SQyZ;o40quy!T7PbQ&{Daj8yCmNS%dD+6T{6TBkw?4X4A*~_(I>CpTQoswKF0F)L%CX@!I;UMF!40FQA`41e z!RrdaGExjpp+wJ^IS*RBd=8pI=tzXT9XA|wXB9pM)4Uh4=EVGgIYk;A4C&XLtJyYC z#J1#$M>=chIfN9F$p`l$4kziyS4IT~nn;j?7&GL13hy2YQv?m5?HB$=^^hL`RMyQ@ z-IsU%x8mc&*m-G!}&;SV~qvuOZ(4N3-EjvoiNe>i7(otZKk+Ik%#a zv}qdN#fj$H0QtJ1)|~k-A|zR5KUip_cnLd2R_DVV5HeLoN1*b4&}PCWq@wHmDjYNn zrxY^OgXSfzQ)+HBU;!p|6L_L9zf}^GuTFR-H%j#f1E+VuQ#li=f1$t68~=RY!__vJ z$J%uvVwkE#w>6d6jOB5PC{IG*W-3*G?9#!_+|+6s=h!nEbF@K|RE5=aUf5i;>T6Kr zLx!m~+#jTZK_szKEV;iE5Y{BTxXbs;=E3Kp*GV`K9)8%mRwg&&X#F6zwNjN zM~(!{3u0MsTD~COz*61t#8h}Zl!kACS`*O8Xs5`Lcrkf56fwci6PSI7heraybMQ)d z?%Sm{8DnlYVYVXwKZ;vMP@Xa`bR&n%WSI);^GU|eOZ1u9xTgxUtQ;O9t?{`kcmfW- z`v6+8#sKzpZDlxHUvLx`a0NTdi7tyf&m?Och9vw#<^{7pv(u*{-5GjvqT302bk|51 z=58A#m(i2|G)+ReGi1e%J~9$1xNE2cjpf$_5vOpd8~Qu&jf6phlRqR4&MKPR($Y9M zT$tQ|#m}ylJRw^0Y0Y+I4d`Otq4k?|l&fN_G{k*NE-m!1ed)-zhlA*hW%mP(iTvgs z4l|;xN(Tt!X>SNqR(2KCur$s&$HAO+{Bp=jn`qhL~Z!Cy3@ zm0dGYp9}PE4}4QfvsfSL)3~5%c69@Wv3W&0Ho*JkKxtxlww%#5DO97c(Mt!Cf~JZZ z4>o^+C0^SBUFB*I-%QhWgHtEG#1e?4?Hoyb`vN+^nD}Y3%dBk^KtA$V3e!D<9xxpk zQ#_jZ5%%FHuphsZ1K_$|$S@s`uo>l^ViA;21y%e)?sF3^beuId?{6PPTads^F~7Rd zV#i}F6zP`-0eI~sk^9pK)-qes9|sf~W+F6)>3cumoPoRcYo0t>byis=ZSXWSBsAPY zgGN|Qm1-5Y@KMWLM!{fVLgvpeJabfgJ>;dE&!AoqnY2%3x}f154jd)M<(@JPY_{D=s2m;ySP#bT&g{RdXMRgclv( zM*||u%YitwL8~yChR}_&Louk^1$^65+7)5ZXim<1(8VB!86@qK3rfVA*v^k- zRoxh2VI2ecSN)O~L0Kj9^21O-YspezD}QHc&JzuF8ZQR0QyyamM&vS7uYiAl)V3-|8v=hJwf40G{whglPiFD-3z4O$3r@VZMO!n%*JS_rIRm}6J4UJdQ<^f`RJz*GR=1%&X|0(a~L zZ#yv#72iBm&_}9`xVQtc04KqV$taDyXrc~&FsOI82HcLv32KTuQC)kiF2*Qq0h7ja zCSFyMIJ7fI^!9svwkkPd<4UOrH6I=I_G~v|C_cn24$Lsv$b^I#LcS`MN+T1A+F3aB zTJG+pInE}&d-NN>1JdtpEF4br=!0kKT;;sTRjo|}`pKngJmwXF0?g=M+v}Wx zh9ZynSc|}Hu;K$Z8BFfC7nKak7s#qy2+RqYRpp!ez<7Jos`%PUr2Vd~u~lpWzfj7` zPW@%dUvh7SZ;P3^VlNkq<_|i~x>{pNH?}V&@LT>YP3M^x-o)@nbr|o8k>yNcfMz@( zA-5cm(2je0D(Aft-+dWr(YAqAXH5O3j(%xs(w12yT=5*$$QhGm&^w(nPdp^k1b$5| zd?%5E7mcSZfFnfF34J z%soEg{Y^hQd+B-D(s*0Y);;$rmbXMDaiLNyWw}t$VK5tB!7)0|X8U1JVjP3mOvTC>+H#1n3&N%@-h3mH(5nF6;_&E)VM- zB3S!+1HVOIH&5D6eWjHu^KGT@@lr(n)7@opTog;iHyk7(3uFvKUl=U{9$fpA({k(b zd(QJms&1>J^0_!Re^MCGZ$-_$d1Lvt8)to;a~UqsVpeYBli4MF-~`fXTG2GG)_PbZ znv-WTtxVS-9j$sj0>d3cP)*(q0yXVfxh?D8ALwg4G_b;E#jaftlG{pMOz0SU1KkEs ztLT5Rc2=-!wren@-x22{+OaxtmpcxKby2S<4~Kqgq3%)of^H*Y(HJN(*gZbXr4V(p zU>vFO{FhE~0JxDY7@^1}Q*$1}x&e!g*)J7tcnN6cg$)wsUg#R5`sANfhot0+^tfU? zBJ>MBk1Qxe?}M08GP{Qwgq9Old+}z4wl`&hye*C-V$yJJ!u` zLNFkKwEb&aVD51mONM3%U9i-q>##!7c6~iDG&?bO_QBI`KXw56dpTZizl^G+l4>nn zQCfcTurovow~gU?Zqq%RnMNyQNkjGiOSm;mr`RcL#zHQNpolJRauBsu2cm-!+HnT} z$V5R-_RLDQAe_Uo2diuTsOJpWxi7m2AZ8PYwIfJVTApQPvA^>bRE2(y?46tRAHE0v@ebsb@# z94Zq$Ex$sr+V){9dpYkBx>j4u8kVwVM&amA@G!(>CEwOkF@BO5?Z%@uKeiE5RU1zi z@>S@yo`MT`e6>}bx|~DcWN47-}kBy z$TS7zI{2^3VZtWEreE>0r- zSQ!F|E2K1Wd$ld5B(^MC7}j7hVj7ZhwloGv$N*+sQ`ttIPO>$n^91?;={T;c!PYRQ z8ttxFL5UoQnpEzt$R=9}H-iRU)>MWw9^WHqQU+u~kPW0w?VEoJ?9>(q)tp1)_dPfl z^gn<2*mY0ogy-}Yu2zCD4{F_WiW!p70zS-bOb%7RsRD0j#!&&O$Oem;j3p1$(Gb|H zNvXGs$$_S!d>}lvg}ERzjn0YwD%8Y~ALeG*GB>(7bMo8>&+OX+L&u^*amG|+OuXLU`h{PV0; z#mbPT8%BYxegALTQx((+qUmCl{1?M{^Q!;yK(vx*v?6o?$?RJBRTUA{n(KSQYz?Lt7Sa|5DKUj?)l2?SzYhfTWXEcQ&b8m!^l;ORN2RPqo?cb4e zR5bGr?}vP-_SjMYA~CH*L}HL*?!eWf!^ z(vkC~??WEGk~_BkC06uy1?t&{w?{6D%cj>+r+|yHLdBEAO!# zn)MDA%sfZdFFW*PunEz!Sdh8WKV4&*<))I&Z%J!~1f~637tnN!C5y^fMnu~w11->&M?RdVg2j`@(Lu-WWP%8oz?e)kEUbx33={AfbWjb=E~-vXXl z>|S_*3)Yq}MgO+zDuvXS|4IYkjOU;m(+pKHXSeu@=y1q7d`)@_vTcJ$+oYdX3DjXT zVZbC=Sd5IfKoD~AQFxaUFjK%N1|DTkC^^Y%CX4|+W?{M`F<>6P$6`PWVD*0B+9Mq& z7q=ktTHp2wBY*4ET>)mFWjJj_$D4Y_l*Y#}!}e6&5ly7%_{*DQ%&aMiB{(nF;UU&3 z8d_|(q3?Ur;|jtvK8ojh2~H(M4`;weP5U1Hv_vUsbd*2xx2Patchc{c*O)v6$T4cl zYPRdMy^O(_w=PlBl71wqwkJG1bgafUEjQ5TU3O5AaXLe;GD%*knFVd)R?N>o2u(m{ z4R?*eX8C_|B9oslsSOveBT#sWn?9q%Cw5P-`SZ>TZ7UmUE7Yb7N$uLBe1?tk$fw5H zn-6)f6tUB40I1t~3zlyr_m@w4%cEKP-5`X*{mpvK{*0=NeY5?+IvGqc*|LfYEwmFS zEMAZP`UyKtVy#v4bbHRR1NC$ro@}LScOK^VHjp9}$uypvMZbuZrSTWt(j#*VAap4(C{oVM6t6k|c0^Lz!MI~C zVEa2#voD+Ml<5aKKK76eY3Juh7{)MVMkmWDiaV-|C7@Q0$ljf#lyseQOdD}smn)_D_AcYU*sAgSXi1yk{tps3%Q zSg*e!tBpA`rujP-WRZ$;G_hOh?z_!55%BuiF9p|> z>?t$gXQ=ygik|9hkB~_(*^WSFTJZem`S>TcY_+@(lyu4;8Znc0)z4!DPxD~H2NgJ~ zjucX5Vk>+;(AmuZVOK8>TF?aJQhCqrv9{7IK+hD}e3uK~y%=+yszTZ6goT2J$y&Upv0jmiqm- zTwkerwz|(%gPq2vDdw2HBb+u;W5EjKf>z_WCRUvw_+Qy4Tmx9-&_}}e=G(od zkR`y=k;t92tCJG4dBahhA&TD^2EfF7-5vuF93B8jP$si?5gq1EyeO4y{pp ztWHsG2Y4q^d(|$BH@rCzu^_umGqqL64TVxQmzw~e`v)!!IJrjSzL+LJGlP(lyMf^2 z6z@$8D{RE4J?Mj_hHT~Q3z*bq1YE}o0+J|zYYtKHwx024n8&zA?S@!U`+dpP?b`Sd z-#WR#z62O!@}|LLQUBrDx?c=-66#tQZ(goFAchRDs|@|RH9a_z)^s`VTMiz~@u$2h zoqnPxq%qLZMVp{kMV&8S27wl$C)8QA@AvS#1Qf`!tXUdJr8>&mT3iJ&EMe0QwkZQp zE*(@iJI^gm{c4|TOAczl5}Htzb`_%xHJE!19tGsPwKXAEK(PV`(1O?}4_8f+vTBUD zEg-=rJNtf&E3D5Xzv_rqMh|=3H%GUKj?KX|%X(^S_eG056Z;}9-Pf0P-Zn_2V(3JS zA1+6)QV|Gj88)1;m2+eaIznZ4?79z%NNg&MO@a_tD5SEV+! zicy!25)jOYW%}K_@>s%>@9Fk2p&OG(=aCWsDlkoS>v3a|RRz&oBCQAK#?TA{!(XJb zjbKif=y=5%j{^em@3{p8lkBjPGg~YwC=!k+TR&v4<|q+k83{RZ2`PgyBkJQSbHWs7 zXU`<78dkH`QaGX`!|IeuQc$sgH4bp^ptTbS5p+VHrZkN(Mfq_Y<$~x~1v0=C$Mb z7Ntlf3=xlXUy#UJQvIW@;wX$;dZd=mGAT{YP0I?tSl6z?uM)>F<} zkpBgqI`icYgDzs38IOgY^D9p^`7~<$THsR~aQEzRwhc@!D1r=|`1FjFmP|m^=}E(e zkXcqu1qy#sxCM^upHp#(d#T<&L;=1h1rXdwx{pWTV+nN7A6y--3ZD_=exl_O zqrKvjWh26&28n=^7+7At%qE0QCvrgHhaxHAdg#;}nJMLDFOPT7lWksbQ`DU~c1X2M zF@Mdfpt<~BcLCgo#t2@;F3Ql)?lHTapB@hvBiFs5zP9H9C`ZoDxJp)xxXNpX^kZld2r_Kt3InuB%9dMNrDF30P5a)Xz1vxI$E zeaj5^VOAfB1=@*qNvGv*=Zvajy0)8=vj&BJ%_GRMfWYPD~v0rf0 zl7>h-iqttdA(s^))?u*NGBf`??$^pMCNSqP6)N>*?ReDq2Di6pYDZj?Q3y0lytiAf z6@=pVlTr$cJY0D;?WB|O<$}wfeRA2Uo5`9bNKTt6Ffn~Aa+Xx{5O_CM)?Su^j^O0I z_giIodwHeVS*!j#*n>1B6hs7Xq+N$_1~7^w?x6g-ZupvZa>)Tcf$-;R!Fr>W&r)%= zgmqdVs6|k=OgrH9$&u>o1}zqDO<)^UppmQ|G($&$-l%ztS30*2L^ED^>^rm( zS>#y1Va)H76uk@;wf5#V-GSRmqT8YAnH6@culzui3CH6U zW3Z~^B;K)(;VmjkT`EZUO&6_4v6h6xVLonxjvnJHEk>8?&*`oEKt6mS= zc_>TIu`0~WO}44067$s#ZF*A9h5h8FERz;7jYewkic;tF=l#a}kq#1u$a1K=mew1|P`8uhh8$=CaMwU;nxd29m1=v-(rcj3Zo7MMwKPr`Kr-F2PJ zb-oyc=75Q#B-k1sj51XSO5`H`msv}XyN?rEr5B~t$4J71jc19=gZ1r0e_kX4pYg|xAd zn9zjM6Eod=uN?~w8$A+wiIRT*Ys87Vg35!U2mq%TtofT@WBhHwJ2??Vn*H-&{JI+* zK%}BJ#M%P@Es4uDm&zB9GUp6XhqaB#_jULUfd3W^5Gv%T9t7@VuyM)<&4Rlyh!yz# z=qqS$B1?8@VX)b#vxD+qd235ORqz;lCx7v9oJs&XlWX19Pvkuy70)D!oeM*ZD25|g z8q7ctak|=_?H1dFbyBaE=!Z(kU+Vgx7-QgoitG~#p1=^qCFRQ!voIh;^PWcNwllQ4 z;JS!F?MCzqN0%>Fkz&y2{jP)CBJ8cdZlY?7oHXazd(a*z8Zy!|K!z&z!M*eGr>BXC zz*5L@y({PNuC@!ot|7ksj^HN@mv^{q?#K5Z1qbJMI~a~F4Z+hM+9uMO_|u@Z44DoH zqh<$?-jkEwbUu{!eZSWG-%FwdQt>-l2CulGFxuELmK|RV2@7tsSj{sTGY#X4nty0W zd>8`qI&A5@!sC98@5HCf7aEL1ut8HUWlpO{4=hr)w$oWUH)Cqm0Ux%ki|5$j_6TUs zXnkSPdkXONd8=$ zZ{$CUrL?3?ND;Hf);?wTu_{28bNyqonN?RZ(K}Bdw)Fo-3CW*O99X3aSb?+Hi9vNF z5~jkiMRs*#Pf;`T;RP^N6|wp<>-#Pig~o}ZG$oiwgQ3zRa51dK5+ri?Dlr3er0-W! zwumEk0=v1!=^tD6kF~^qjXiRXaua$JbSCIPD@_|A8=97*R?tgf29J|@t`FUIX@Rm; zhw}c60bM31$qgz=Vy_)sgPScmft3C1@zxYyBW~@ui|AR1M~=BgY>ae~+I}I2W+g+6 zCt6X_3(a4gl7x21IAiVD$y@-LO&7FPa~(si6TH0{S}st>QT;VK!Wy!)xC|KYcE)e1 zXGJ`;a4>*GpJ`N$=k_tBLicrqzz{Hi2(<--isSEEeT{aU>~bq!brQn@0)6Y6nF9uZ zV+)JZRK57c^npZyGi#i`p}ADo?dm(4cr~o3#y`$McVHTGJ2TyOa|bkX__0Q zK<4)4!s;^6R^Zr>P6|a(<^fmV6XWKl*l$V;{EMZE1Xus1t*3F=*^LVx{AGLVa(EO!Zux2(So#4$3=&)EgA|fS)i>W^ zbcs{qA#1C_!9aKFq&4NZrCng0u&kKozBlL}3Dvzhf%3+lja&5sGBnq&3u2=eXLVJ+ z?av*;M@C??5-&m=NI448FKc>~$ClHEVExON zo&pjNJLMR}1I@WdVF6L8?eoIMVXOkVUMj2~0u35>)$rb;FsGr+t1QO3{2mt3lG$_8 z1NMX{jSB^#k57Ca$@sfimnu*YVpi>9>zdfCccYBI912T`Pk>0cdkY z&2=*|hge$doVh1dL&}ThLW83py~umgVhmQ9k}J}ld3S+UmuYSoLx%n?!H7O*sK9Jw zA_}?2&=(TzH^e69T;1<5M|l%GOwA?-RJ|_x zmZtn;^N@oz-x#ARdb!2BYYV9o*3j>l>*0*XiwI0NF0ye5V99A?seIx^AGc@){}=NR z)BL`B7vg3wEHNe*Y{n6k^caGzfGHjv8vKEX8LTrNo4`St3xD<6+w z5+E`3B5IBwQg_sC6t346*H%hu$Z(|=BlydRtrL9Seb9LGQHZN@w zaL6NDqj4Wz{8A@Di(S`Y4->nEJ+O)05*vg5pn6Iv9yGwImLcD*fBj;*23&Chzpr#1)<(CVRcy5u9x=}O>IPVs{ItZZj;T5L zn)Y%~vx{s*vQHv&_1a2!Xvp47vXkh?ux(=}PjERSm9y*O2C!v!tdS)?7pt*_ z!3!NMlI8S%4FGftbSJ#@pPj&S`eJs{ufEgbi};O*V}0t+8Y8Nb-CvIC=rKP>J9h78 zJon4B2V8od<4}!ZaDHp$2bBy$I3lP-n(E{-H)OHa?4<4vH(*9g(`^=zkV{h`KszD| zB*m4m3~*qf{PIclPG{Q{a6!PuXzre8oYb})bQYIrLJ$4!)s^zo{6R}^CAR{JnGau~4kfxVjFMyp@)TE}VsdJIK?d9U;%Y@|4fy zummwDcn>OponVUG*Z?3CkeW6G&`;;#mML}ZOyDz$zAV#LJ~RD`dI8=HhN^pP$7OQh zYCxLbcNzpDyUgBFbhwzFi#u#iMh|J33fN?#3(|qk;GpWeb7<=&`m6q7RSyA; z)9seMIVxbuKAYU9dmZ%^Qh1TtkDaRe{p~XHxkm2fWWOC|%}<07vmFAg2`ezryb+g* zEvwY?c|@pxBBO(OMKAMoWI3gV2k6DmL$_T8FSk4Wy=TvDiNU`;2dU%YPNLS?h_<~m zs@mTEB;Vp@sn#>bb^-);L8UzhJ;=>7zC-Y%HncU*AGo&2nO$Hzhp|%5*AvGddJQBQ zXmrsQ|GZ+Xr&_y67&T~AUatubO?BUyS31*Os~Tyvp4x{2H5tfkm|TNp4PQ2Yt*(sr zfzD$?^(%kPg+G(7R^lB$i6yAirkBiE&EZn(Vu+Gsa>!==LzPwN*;`Xy__^q50m~12 z7Mgj2N5)>L`|H{vW!Prxe?>_DQfA|5yhTGeYNF%q?Qv1%hZ6FZHS3omG%5N4P*UX+ zr9MHbKVAJ4p>jSc&;`cWGIu`6BsV{(9^VG`^kg#K^v(X`G01=R+L3Q_{I_wj;jUxyr_gH7R7x>as>z&P!Q#2QF9@{1^$T&W9>|g%seJDZj3iU48rA--p z!TF23vQP~kl23p*NUWPCB;7?*LGVWPxhkqwo>K6tc-gL(QOU@=3|Ky%13w{mC=I}i zbn{g8DCjT^rZgbDzo_$2Z`PpuQ*CysZJXUr^ChQYUm{J?`>Bz$>Z$~Jv4l37r^$Nxk79jKLjmo-$i6Za#E$Y|E7B+Q=5)s%ulWHBIs^(!n zC!r0{AHJ{;Qg8i0Z7TUhI&B|YPU77s0w2U!$G`TEE<+AW7Q;p^T52Rxj{XZJZm$FE zfY{BiaStH};I>*8Yph3(b>^~!A2|L3({8Xf!{6q&BQ$?@JSD-DQ%)?820iHhEIRI{ zufGYL;_X5duUx`Um@RQAiYPEnXZ;0>4yvfFfs&sQ3v#!3<80WLU}r_T&2iN&?UmdR z5-aatQ*KMdMig?i%{)oOnp2SHtL)!b$ys(h7Hzf(QqMj46Ih9Rb0cdu808xSnF{wi z2}ncf_lG}oKBZR@$#>=>rMzn-5M(iXf)7R3Wpe4-Qa>fBygNH+;`fB=#G27jRW}wG+JkM_ z*I1J2gdeLn{6#tjP8}^2)kF({ZkZJ*A8G8UP@51i(+G0}XA#IKWp8LF)(05|EsB}L zsFyq{dXbA;C(qOJJ&&tYim0f$Sxv`~nJJKjFye8D7b{4MPv&B_iEWkBvNn7XJ z^)X4)I=ZeVTXp?~S1k)IPdbl9(NA<`*9{^@w-pc>2w<6Rv^e1p7&xx3Ro;ERku>I+ zu8OcI0n(aD!6>Yg(K9CcFE5(w4`~f5bD2W*gBF%C*JCo)7XfdxjS4M5xe7AtSVr@j znyh?F0`Tk66mt;@7^;Z`W^7D%EBF^{5ueUSA!d(j?Dy z1H{h<)YQ7(qxX_qLl)_kd8CbesW#)gm|BoSot+dT=P7_$eBpo)Y$j5oqEen_;2O$e ztY`3ct4iJ5#Sk^LFNR&w!-Ifj?^^4|cW$ieMa1Er&1vUdwJ4=DrkNBxfWt$_z=gE6 z!U{Z8!bX08YWba`wMD*fQ-?&d7hV|?WkPz~;4$8^igXhU512N1#aWwLE+MQPd>u;uQsH@{Q==+0@_j-<$(A*xDn@J(%jDw`ezJwLm2R_g@; zdSjD-$GitFUqk3TbY~TH*hAjPUN5qqNoxhbolhVF-}351*>#T5ywVr!MxRJLvjsjK zexQ?z#J_0yL64D96A(|QORMQ6{fpxV&fV2_VX@Y!Bsw|;5}v|SdzZP2Xf$r`G|Vti z;xWI#j_dx=tCt8AF-gV+7$Avtd94Ah;oWa%ym6z&pVUcWpT!M z98`J$F3Klf_ee}iU5i%e*rXGQrRxORI%%+fF$-F%g_dS%nzTrD6~}=ueWhtaGg38n zy0H`+`^{k1%brG{OXiGtGTRpP?Q1PMQ<(aQC*x8I-O`tRADSMCIt=($?iTDliHn_2 zl>d`7*2*oO^eF_#C>CZN3nl|LLR*W^-e*li+^MWWF|Rp|2A>2y)8u^;)5e~Plv7eL z$tWsArwN?_AM3j;co}rx_`0P_LukssaKG3&xIUqQ3h>(!*jNot@puEo$O$lSP_QgqWdZQWC zqDFz2q5Ho*a=wQB4pz+W6Wo3;_iX}heYd&alDq8n_zRwDjbWR3#k)rDzn7<9;07zf_#XhksmM5ZJ%L3dFsF43CYlu)ud4f6ut9@$Oj&x@Wyl;_EFxMPQpIZ zE5k|HdvR+r5&I;D6~`TOfXQ0>(R#OkqgPob>+rv$K}s zIkWl4deG`(xiJa|{SuiQnRK=ORbdiN{wX07*QwDp%l?`?uqW0NCZGPe;gVks;xe zwaqFtV*l-)5z}Q2Dl}r6u0^>?veKJi5q|=wBI);ofxu5aYCgC9liQlxrAmpYX@sBkahTH}u{-XxNz@IsZ-^{DR^VqKVcqT==#?&}NE_02d%Gxa$fcBbeAr zs@ny$dWk)TG#UzF#qv;`XTtx93Lj7&03H3b$Drj8Y<{hSjkjR{m2)31eMXiVQ_0psfE?X(3dd z8JRiy?$!tZ?+pQFUR-XtUBG!oL7g6s-A2zEJ`yG1hG34SEe)=v> zauWpV`!$;vT|Kpj5+xw1XY-03BP_HIYvjnqjR5UBkprkz%y^y?=44D`D-9eVA{UyC z6XdDK<&Bz{Kh^%JP?@s+t3&Q4F*rjqUCT!amaZ*^$~35a4CAMJf$X))na_Y(uIu>|%oa-zCf+L+bYO&3)a$w*hY4wtHF_Nyv zvk&@hAD$We?6jnxFZGuZu&EL+e%Wq|^?nA8nA4RQ+XJP)?)J7J--@Wm2Q~_<&a%V&EXM&J z>X+6g+;oPUzjTL$w7OF;&6y=13(Kas(lAS>OWVe^Tojw76^xysKeGzgR6G0=XPT0& z50#LfQm5=+h?RQ0d0U@;)G|uqu?`gKXTZ|H;5fqJjTEoImmE|h=K52~NAa)IFo1mK zPbDIR0bsSkdNCnWIl-@Rm84>I;%kXwUGBcZN05hjJ+0hsqxTT*G7Yi^85YPkLZkuDseAJ=~f8Pm{4_)oi@ zQGz0_`ghVAVsTd;33AxB6PwSD{N41xH2XqfY-BL}f$ z{9z6Lhi~~82FRh2QQ+_tnnr&2QnS87yatrIGe1r;HRn?+6g!SWhY|A4X9i03zOl1n zi=*PB2Ugnjqw8&0R?Umb%j9<)8Kfvkfi8+xPbt?{=Xlbsint{jLK1fA(tySLnF?aG zj6Bv#?`apX&YHoxHkrQfJs1-%0(oa)!d z#*%gx<4x{W%?)$MU6ItWL^Skku?yw&*+^4TX z82|4aDh}Yc21X%@nT?7}dDY_-Q!{BYo_ReJ20!8A2g)0fQ*VlW4J{^Ldi19)MN1yk zl0Uz2Y*~Ay7K;)A@j+Wry4j@4kwlp)vykP5NnBlb`>1jw7-z@-UE>=&2bIq%&x@+& z^St)S*i+TtpuMeT7X~i!tacT{hliP0!k-dLdE{6;1X27WOwTR_NfZTsfYdt4q5OZ~ z)Lq^Zxu@SHD;Oil-c{O&wT)|dN-d_U zafNl$;ZdD=1>864mw4Sbjo1^^X-K0{YCHYqAcra^7kLV9vGBp!8vh@QCms*^ zkhKXXsT1QU2R6k1f9WQ#_Rx=b;dSlGJGETIIk-57D;A6DVhD~$tR#%B+17(;_Q-7- zsHfyKsV4<_a>oByP-l*f`9^6W)Pkk!i$TE)X(Xs;`E}|@ncJ>F#3AB%#)<#v$@!C7 zuh1)U>%`3`kzBQiBtN%13h&IWyK}9tz1Tuyc8lbjx%va(#V9B$gD~NB>>Z zsLz-{eg5#o_%*7ZdR{h`<)NZZ#pIso4i3?=#k_bzL))xy9PwMtw_G^6xYVvcr%Lx^ zGrR^{zj?6eiI8z}$aXav0sC3Dv_bkX!IL;aFP@#>n$0XR_e|S^ql-Y8v|4!cBE+P4 zyzRw^V5UrAen(YV6BfAP&sPn9|Hq(g`z#6++q5)bX^@)nu9*aZ*mlI}U!~We9MP!E_;r95UToBg9G|G$=0y_pX}5eq_qC0NuC25 z4N`NK1F<~+)bf9qP%u-R#Qy_w;+wN$P*=(Sop3-Bv`e6b_xm*ua-k;|lvkN^ps(>r zl%Rb5Lqi>;;73YY1n^@bBn>1`9;6aFrF*h*kY1Mdf4J7PYmwU3*#~~3H9+hqV8HXH9Wj z4-u6UWTj84#UQ~6Pk}569#2hqSzPf{b!E;4=gpwz_@MdJ8Ua4 zHO-|RNsI*2dM-W?=14R^s4w-;+q=Wz7S!h1SE2nQmOOgW#Yo<|k$i1Igm-vh@&%fq zw*)_!R|E!yECz2{v?}}>Nw@iR!S zN>nu_6QYNo_$QT>vvvOdmEe{e6tY3l0g25trTDMkRAx>}q5e*9pA^ZJo7>5w>1 zJWmz}0pMPeyzFJ69V70F=KjuPTxAF~($dd?wp%BVwNzCehPzB@WdZrPW#sh}5Yus{<%w`t2q_7o)6+dIBWg+QF+IA5H(O z$2RK)$~{9iVPS!LTiRNV;<3Ll59B+vfPNK9k8X>1M)E< z$9_%hwJHNHqGAi(;4oqD#-{8JxQw$F+{vrlve$a}==i*4&Wcl!1==?C@>t`zNI<(A zTxU*c7UhOU8tcsz!duD>YLqw^6XaigqvBH^u_2DKl|23v3y<(n_pDsTnVGHe^tQ&%jpxj z!{e7Kk$KqHaklJKyQ{=m##d45{O=HN`a=*>4yCbpf4ZQHhuiEZ1)#J25ZVrOF8ww-t9+pYT5R&8zdKc~B^Z?*0@ z&pr2^=Q*V;#f7MErCqtiOovDh1$?t(tC5V$KD)h@hd> zPxj$n5y-?dZ<6j>0y?L6#p1D`nR-kI0uNZ?uOak(?v-wmMjg@$PfFeAZP#o*_cfQ! z>pG6W&$U+J;ZTH4-(jCV{pb*B*-$+GW~m8;tD>t7uQ)eou>7PCQ{1u9$}4w|6&0?Q z0In|Ruf7e5#yWY}WU5GkJ4A28C01wu#ZmXU+}L9k=g{A)+IMYPI8V%}>EA=Q&L)bv zgHc*PYghCa0%U{ENS*RGr2%R|!u4AFFM5&^2$r_uvGiRXF?zm;6#}Bdm(vtR@5OBT zB`*rL6D7c_W8X{~@&^R9lc{tsIN1t*BE%r1dh$i$lx7R=_s38|J%n=F?Hy#sf22@o zT~~ta=EBK;oB=@;%HDk+feJl&XD_}%H;QTS5`}7@Pl>Vxc@aO?3|1WLYsgI~|55R1 zAc??5u5N=Ynce%$wWIfo4^$THdMRqLI0D!}=^u?3`mGS>w*mo|%wtTl2nHj$0p=|@ zCvy9^WS6qG5ui%;QR+kb$I_0>@T-}QLgl|}rCD&`C=Qu;BbqBU0iETDMtg!L%aMBl zoIFkjXt8b-;har-bId*^YlhVrUt6!w6Qn!L9R0lQOe=~d;PGMh%GZ-OE`jh+znL(6 z0|)1a#us!qbN}|LmLn~gv##A(R2{s{Q!@Y@b(g0&5je`X4X)7%slVzWL_TpmS!+4d z`y;@WLbywf0ayHRmo1E?5N%OKduY^FE}D_N?tP8(r$p1Lf!Yx`)I%dQ=CXM-N}JgP z!5jOqtz=w0PG)REvB3INyb(1!ai#J*9c2hoS`ZJ$wQ-!o)37&LdCwEvq->^J=T&E@ zDvABo_IO*AHrz*#?VKb%25L436Low1aUFkBxd_2}%9{FIlVaNNRa>~QmBj-M9rmx*@R?=rkmg9O1KfY9EH7hNX!YKN?bm?v5 z9ai!8vw1)#)o~o1{a)2%zN*bG3~HK2Fth9yD%4!-+jTh8A`VYN8VH^>FaGhHxkIWE z#UF%+OuBR`pj((dBuxH=_HG^6qah_u>Dp5|+=-QkdqKgkhdg$Y7xsMLSpr0+(r%)W z1_&cbia&c=WA{qi{5t$?;@Pcr$hpZQHC?q>8LzGRoT6+WrL1M4qZF(CCngKW?6Q50 zgxE7w;)P|r;#RK~J>F6zamvfGTNxE(f$i0j-C~qs4i;*vevRqUbY*1(4l6*~MF`gD z*(l1xOqsnNFE&)hSw5N)0sYldSTbtoQaDIw-6f4&$7QsNT3PJ#7t3sDDlH&Y)2$?p z^knZituAcYqHRas{v zvo00c#;J0gr?q|0FylMH_ES$@Ob4Am~5U8)#X^H9)2 zD}3$vbI+f#C@~!6St?#bK7Z>6TEl%!Qn*Jw@kUmr3Om0ZjhdaPr_ALbl@=;`u)7IE zh!T*;L_O(y9|S{r5t8CAMPP?*0#5XJ~<>jK_tb5}(F zG~SKQX#J(Vj}>94s@Lwnl(@n@ahYW86nD_>tr5$%_~}tZVnR^8Ek8_2E~WuBue)B> z$@Gy?*KXxCF;Afq7kR*RYGW3L?bhjh#T!&CZ1U4u3lUv`N!p~BF<#O28vDZoUYcya z&a7!pZI6F{nWn$a0^|J4uppr@bsS8#CM0Iz+&wivXSmHVG(;9AY}!bBqFB;gG&QU~ zgd7pJq+X^PsE#hMPdjc=dGIva*0}EX)v9~zJwM}hTXhay`Sy4g>-oDJ6>9btb&n1E zBUvn!r-b*ToJU;AuBN+N=v63`r6X)SlXGx8RujAJK~Q5f(B^R>6z@V%YBR3!)r^l& z6CqQ@X)=duh#9L1D#&z4-FGF|fwjKKqeY)uEzm&hd#-9Hg?n4M)8EnKEw zpJ-5*ZRagEIL2zI6z45e=g1AabC|P@95LM%VcE+sKjNPVu`uVD2zdHt5z<%jcGwVW znIJ-wBhe9YRNi0HAFLmE%RxkSPh8eLeiy!=LkYVHp4OmqQ&aBpz#XP$(meg%2om9tkoi5ETe_mP_i7A6H*}NFQTp`&ZI2oB{gGM&s#G=QA`}@dZY2e#F+S90uV;dgF zOxn0DYLb)P_Te+QTVOg(tT=Zwto~>hL12jdq&3-y$Q+=cBQ9NFrt;~^hsxD2+pCpkTK(67-)6O0{gQXWQouka=lWKo_*M8iZ zwtW`nm)N%egb&8Wg-8}k6FrI%F}Y2F?HHV3KN$b9`{fil7b)yH6$}QRkb)IYI@(fx z%&OZ(ObWU=J^e2La#(^y{2ughJc+`=LSU(-uHC3q<=2^qWS+QA=_*MxwpPY(kJx6W zwr_S>&ZUD1a1u=}X4aX?>Y1zDb@P9_b!B!a4nB3I1wZhzD{WQ&O+EVqI9`He$9G7S z%hrVkR^?<-+PP$l|JDWS4ei>U+DKB4Q>wOWbu+pwU7OYBl)|cOrys=*w}m{nl`u;t zme}_bOESA%Km*YN4PFD`gXKj!Htfc}-JW*RF?E~S#N+RZQxB;%8N4Sgyy=V>|Az57 zd1{^ERw~Fx{a@pAYv?<$L=Byst7XAWXCW}}l{nA-s+C;&4f|uxcRlQ%ge?^&qs$%% z>{JoOYex+y)GsY#}{%a@}GGesyXH5CjR)YNGb4 zTyykNOA4Fu0^`r*8948u*^xlBIy}O`C97+haBB9?)1{y4&>4lD5(L(gu=aghy+*c-)pT?b=*vdB zS$T`OXutOqFVd#{+ObEHx>_&HIQ!ttGkdOWR%Mx z-ipqNmpLppyI`;+ykrJca@`r8Ii=;HJt98kXoymj@VDaWTbh0c5T*Vn=6=X+CX__5 zPD@y8aac?l>B%F15sJL#SwQco!p5pP$rE*LD<-Tt${k+z?UpO9+aq4c6X#ZH4ZRZ@ zfpx*por*Xav#CI$V_zb+*p-raN>o_`EQzdG{)%+m`2>|u=d80I8>@|nE-rDJ?EZ>R z$Y=*_x~sG8`Q#Zo)fgeD!wng0H$e9T`DdaMZ8e74D+jR}PQd|Rtw5gb$|tO$d*7>k zqJF7^vLM9g@U-y01t}~1hV?xyr3Q0J=zUaW3gs5Kw!ZSb>5{{~wA4PY0;ht)4wYu; z^c7lo$^CEzz-rQ;n{ zIY!hLUBvCi@@={05k}`_+WTeIE}YgJAb>}A$|;|a0&&DdSChAts^93a_+0UuTnr9P z*K>;PM6aDfC^x)jp$4si*;w}@(bDqnh)EQRDXidIg9p6iwCTbQY-$I+X}y!Vas{h& z{m6;W(2+smAinE%h^y1j5D+8DkzbTOS;>`%Vt7QO1?C~;^{z~6qdgBKRhbW zLj_mCyh<}k5~2c_5_?(+qC~eMRNtbEKF}y#D5}C-;O>;p}zya^10F| zL_EOeXjD6Wg>v|===88vqLLKpnRoZG68ZmxklVE0(TBAQQ1i9d>27OXeFYN0q-m>P z|B8_w*+A^rnY_-}sq!7#2ajUJ%iw=;72*|MevY`1pbmY4(gqhSF|Jz_5!~UPpo3sY zrKluu@zr!aV;{rDs8*>Z&#ZleT=&zN41Y;rC{$N-Qn|svTd~{v`CwzSP<6&yEbr`6 z`F6EVjC_l`0`+lPr9qakpx>Fd4@#=gOoRA;L9-YKC%2xVMSl6Eb{oXpm0r=+8eS~9cB zN=X-X!-VoOMNnefiot1|b%JmUFe-KC5ZCsO4Ikj;r&k)+g8n2c93?A|}^qG^f$Xmou*dwyuz z3(={fRsPcJ?uj6-b9u4Rb}WOm-Uh8jlQJ0+QN2TOTm%7wX=ia!K6;O8p-vw}Imd%P zlgqyuF`g>7Iw$v4MC#Ds8mS}}C?Q3V2)C>7yF^KQH6^~)@9zzhqoHHaw80=Jo1^TaM`50) z#Ea-Z|L~Pnzi}~)i;@w~=s|32z`j~}8XJ_e*$OgUXdDz%b}96X&7|4U#o)Byto)r=mT$Q9KaU6J;IwEv9Ay~fEc5e? zlXIqPUXCXDi3~Meq?P2Y=ENmm5mJ4ClN|^v$R9NdHrpfq>`K^!Xyyx4n&B=hW}^FZ)9Zu({KdZ7FrLjAb7Ow@zkEbLG>bnL{d4#QLC@w=c)erm5>F zK)2lUYl|p_w=I$9h@34i8;q;*$sf)mj7%z~($MCusgn3g)j=2;4k{nO^C|D;J62bJ zrxZBs&_Z^Wu8qit>A*`TK+=-B8rhrsrld`J;D@rChyRfK_EKU%+Y2*E56S(N)sm&> zUb-WZM@qKw&XGPC*EtiP$7q?hOCBA9v_$-=5syJ^hkAzaH+iV9_qhB)WO6)_eoDcj zHlh;A$T^Qw;DE)lq?O96EIMDoGZITn9tB$efOEBb7vZG8t?A6WIDX#@8(jxbsco?a z3cj0yj2bQewm#PFdZSh~HEZAkJU0D$YGkcs(IzkNs~sVxV5$HR(^&9$)bX5G2y0|1 z68=3r+a~VPCk`$&S;n}?;^p5Ms%`z>xtssM1gs||nUApQNLKbhjX%Aq`AT$$pu=MW zv&#wxB@V|D+2w*Mu1L=p?SLL_bCPa$L_Z?Wb78@zK)b3>)pH*@;;rT3eEYr$BoVT> z0NUgumb%XUW3ydt%H1D12G`X)5^echh}1M8NT;F>y7d=CR}e#-**{h~Xna{lFTcCG zCSs+RFq|^{n~VJ_u9ZHw&_sFD-gJVdK{2uTRXZxm@M>-)MZ%Ig%#MJRN}2t)bpk7m z(*B>ZjQv;pw4$<`gl@4%0TDZAl%#{RAQHZ0iG<-B0YRlQ&EE7VhooXj*g4r5)ensM&e4NIJ;VEY8qMO zQ0x7V5wPuG^D}Ys`w%Z-GPJ~0w zc!e^4SW6pFg8^q4RXO~P!{xrX16$sSX;F-_c2Q-~M%qe9%b!<&`xk^q|7ZN)TRwHP zb}t@!b>GGHh-Vn+Vm7=5BLhYoni9f|X33_YIEtt{ciTO3`XvvWgeJg$`T#Dm5`sb9rP z`_M}@y5fB{&irK(I=oAzf!Z7bD({m*_lT&~Lr{3c;svtPgh&~U8$+Eqr_YtPHi&D^ zia>2P#DLcArLK%3l!n&98~J02zxVVTd$A2$O1s!Sp-xATV7<7rL{-EUl1*<9!Tm55 zlvIf^Fl54T+LgfxV6R!3lI4F}b_;2Zh#%A)W4>2{?NAaIX?m&6qZHX;`%%-a+w79w zTG=g^9y66GxH{E*p0AK1Ug0l-zX`WSG{rf4UsOH?MIB1Mzo?xwD%LljRS*$4yptcZ zcf|;m_Spu8M5+7{g1!D0qdO$-UO#mvVI{$|mv3E1vf?i^3;$+n>vJUSk%(Nw;;D_i z*xD0{X;lA(-v{WKPyjI+v9DPM)dib6fUF)oqwtR+l_x#V@5KmKu2!Q7ssCvjcYGGt zFI7BTw&su%U)gMD5MIv+C?ZNE2?S6Alz2fQkYoXPO*6M%5{?3`J-XX?Z@_Z_5&_~5 z+~gA*Anu38CG30ni+-~~bB-1_@Evj8-@#zEchLVD=z0pg&1=eg<5TXL`8Ijp*@b#1 ze2w3zd+P=5t@^5e)PJ^rBy7vw6DS4-d?maff4N`8e-PvgXaYIjFE;%jd+!8*0`uR% zPa7ccCGTq*2)u#%g!+a80>3b58VxeP!mn~aWu@EyRSUlRU+gGZwesL$^NqU1PBBU zy+VEmes2JQEi>N?+wnjkHSk#A=6x2p{qH1j7wQ!eXrM^=y=D6S^fmgKXX}3=(CfG4 z@AEiw@1OU*^0o4u{DC;@zePCfzI_+<4seqDSL zzUI9dYyw@rNB;DF?Yt3g^zHzi;{O1PJ_msK|J~s!;sfHTz^Q-F_mO|_zx|zkZy;f` z#0GH2e+j7fmiG+t#q&Y*n8wbN;CLXBrHRUMm1UHlsg@E5c>?$=Y5cDvYJ}XCNy_ zdh;Qf%OXV(j3oi%yjm>}C<+*GB?>5EctZ(r`#~w2Z#hOf__CX_k4||cHrs*OfA;3K z?*4z<8YkGhPr$PxttG2XJ`&wWJ>de$tlY(hdiO_kBF4XBrm^t$NCy6SFf?kohf|sP zBfqcR+x)>ONupGvu)h`^g4aj}_L~fjrp~6In#Xo_aCp3(QMwH>i*lZ^ zZ-P+CnszP?ibxP=;Ug?fx#JK30D$An%%+u0(U_`YpZt&EY}zMw-)$#IXXk+)vAaKH z7|_;ycY!{gZpg>e<4Siej1*!F5TPEiQ(2%?j8V|FT@ex2o@6zvHaa}KYnyghqg;fl2eia z53a~{Lu6o-koa4S_-3v2SRE_i-IG@}?_Q29w;ikpEDX611Z;gQUX0CGH9O=FP^SR0 zKMy@sM|1HTu%`JkUj(V~avz;8`7@-p8{ImeD|e}~MNJn+i2wlYKhjE%sbS*E=6jqa zrHU}69?7!=ox7vV9L;rKO6q8L5A+8O!JUu8c)zk0$Iy5SE0$+>cgX2-Z20hZ**kg! z?jqZbq}sw=oi`(qlG9K=u=?gq(5U-8~ku(7pk0js|Imt6`=PH|TB4a6imodX_jX=`#eWpa z4|GpeXQB0Uy{qWb(dYDcpg!xxT<^Xyo3*{r9dVBcBVRqXJV?vq$2AZCMy&l zbB1b<^pl1eZ8O8!lrmMBIjyk2JI5_$c^M9{Vi=c_O3q8C^4-K zj-=uX&lIl2@Y@f_&syOP(ZDu> z58Ix_HiF(iy^RlvvfaIHUMK&jj>M@%+VUvgc>lvG1d;#8A4!SpB$FdHETM4YIBch8 z7P+kAVayB0X9r`dwZJ50qgs~-M)4IYuK2%@zg0b0jdg~eQ ziGJwfcSuf>8~pFqt`*y1$Q&PAnB#rh=u~v%B$89-(V{zLnX@xO+=0kg_N&mXA-bY) z-nqi`iWp^Vd4FsAG@b>G9(ECPZrhwm^Fq1OuKP6s%r{3Fm!|} z$02%^jwsPL@v0;CyE=I%p-b$;r$vt0_JukyaYB#{a&XtDQeACvJ3>_|L-Zpg?lF(N zw9d`&io!x3uUOTjw#EG*{)4c_#8aS;`Y5`)miPrp1#}jC1h-@)h%1lfWMUt)1zi2<>GGkFjJ=oJK>aWZvfdVsJul7K9K&WOVL? zVZPW!pki=Fqr3r+p!B&p_l$XSDd1Hitt|&^*NbPIA+Vi<+mV{47kY0P2JeTBKfKjq z&_PnrscH+Vhg6jjHqRpK3shJB7b9{`J=f9?yN>BKty)oSeI-Y(8%8;fuM{f?9(o*t ztIW577CxB{0^5OHZf$xD<8PZl7!9l2m+_C^lC>S-wmcKvjS%v8&|Ahy?o@#*6s_p} zATRx4JIe=OJ*Oss-*I44H4Sq2S2Q`TP_2uP71$6`;p`zzZ(&X8&5NN=3#ya7!j$6v zJRudLpqtP1j7Tr0>kn5pF1IT%j)NzXCGA#o^JTI;XyGdrLCE=tC1>YhcmW`tr^ToT zUG^S?9npeCK}i5&UzmD%``*Pnkg$C=3O5jp0GRz33Gdff4a=Z1?z9O|wK8Et1Q*rI#-t7qdBR+C*PUR%ss z%q`Ngd{n)>=>rtu*_10P^0!vn(5#i`)tlz00raw#svrPRR=*U_kDlnis2*LIiYrW- zJ~rZlhbK@GjpE6!sLl%7N=mj$EBIpuIt3Y-ea*@ZQHm=bqrBQnnoJQMpABJ_^(R)h zaNdYOgCcLdtsS#z7A)mq*TKhA0@18qdErZ)fR=Zj-W6tAha`_aU5C9V$-6$DQWTMo zU|sCuc8_=+ieW;zbI|V^QQ!j`_U#@2Y#<32=&BMT+ zk>O)<`khtObRAFo``G5v55@3qZ_p>)n_?lo-_XYsfHyg2rE9oc^Lg;#A4r(AQ5X1= zy;C#9DX$xyA{WTZdCe5o|*cg3&r_vSZ-(z|y?weHZEl+qy^eF_# zp65uw#qd_IfTa8zD}!l59O}+z^b>Lj{~d$oPbM;hgk4w0n*g}tUoeocsV#2}89OkN zn5{sAN1W#C56f-Z;b3gTROuoiFSo)V(|V6E(~h+g9$1BU35!{@+NKGBUtd{{^DGmO zrjoWMEBCKKt>y0D)MQhZkpbGna&;9 zx2{_UudbZjO0vVRML9(xLp%9(2fEE$f~wZ!r!Igwz==yvMLzHsQnHgcHHOnM&u37q z`<3iuJvZh4v_7AtQ>=vP4ZSusxb}BUQ_t3JJbHiJ%|Fzt%PnhbgRc~lU)d}CWP{RO z>zzjKEM0vS-ftWlNnco*l89Gj6S^0Xb){{=JL)?{c(q-4^p`6Rb$vH)wReZ}=dn|} zb~fk3#qp`buIj~o21_>vq#mgZSWN|Lg~3UcB&}J`Xf@L6A77(1H-xNEO;FvP7^Ud5 z=+Bsdk~Qc>{a_Z}TesX1 z@0~aNRiF)x0s|5W^dG~3>6H(G9YTma9Yp+nzOE;=7`Ltqz+Vf}r!z-kC#|0J7=jSx zI0!lfgU1lHOr5d|ZPMgtb9jdF@JqyWLPbxPPY(iADBBI88D7o**TFr4nHkdK!te}j z0sxM+7-WM`$|hw2fOrgBpLS1Sdi#md{a5knHkt6nOB`)vGCVG4=$Z@A$#is%()69l zpvil@pLpiS^hzj@M+zv2V+sbWG_IRw@khW@Ll4#gq6KMV(ty|%eV2-@q|1Tfs7 zhSO9FU~032(OqwF1lbH5UVZR@Gt%MUNT_J%2hIgIh$4#s7LgOml7Y&n;Bb0;{Dt1~fZ=KSoj6Rtwp_UEv74}Wi8uKDMpEW8|4(m!qNG$4SQsgpBM2vA@FO8D z2*)&*ftVCdV!4I>g}FfUtH1emHf#;rFTn&fR!7JKjkuuHEJzVvEWHOnzat3{#f~eV zsx?0TtoCCFv3|zE+}VS`>!^X~DtnUJe305$_dHPtDHj@$uSD?XN%5gYvdhiR=ULnj zKfg-gW@jQ(z1e8iS!rOjPe!FrBd5OhZcsNHC$f36V(bf@4S65iVuFT9=peIkiP ze*!YyhHS(D4B~1G;8&4N@eZcQcnl;ONE&}$FtiT;t0<}njrpT!AHxx3Fs2P}_m_6kY zify4J+C8K&pVeGczB54>xwJDO<9^H+{8Gh*dNtK5#nYyX-tgj|3!bnOM~Aw1cx`vz z=3A`YCJKk2a7>Im1O38@xFoYFc0%34y?=Di$Vh+|LiYO@uBjr_@uYX~cnNn9ud@~| zQ(;Xto-~{|3-^W-e0Do2u`~y-`!CkUq}E51N0GUwP@?RwX2NI~Y~f?v1Q0OqM21oI zfDq)~7BuSB=@3~2-6*4*2#n{Y4oblHRmuI)4McJ5go~o@j3XA>iWJl;GB~nsy<nSa5$Aa7S!8XGs-o5pZt!MincqP1YAgBy{hVjhEItV=6$x&`MOaj}~l$3?K@F-?X+MCRu1CR{iLX1FEkGA$11&qH7m;C*v z_o{Ausfx8|dnbz(*XQ=Q&`8t6#1Fk}3z4>!^v^)ru?FQ{C#+hkAf$NLE|^+TEGh^yhv1)wlJ7quQ}qJI_?o=kagj?k{IuHfNeNMH}<;9{qp3 zMBcI{YFAeF5JHfkrW!*23Y4s=^#sdaKTT(PUstZCBIg<=+WISAf)z5j{WlHHcRkx)ZAz>ToRJ6}@%Hjf-YK&Q1Y3K+mn`dn=oLPeF#4X?ArC`zPy)jLNTEqCr zsPHdh&PHzDxjz=EonHw%a2knfH{O1@x} zwOkTMxI3@DE5%V&_=TlMmcIo>@lS?hNQ6ki;g`&VC1MgzJ)%Z|oX@sL&*2!v;nLxf z#4JmA?O9TH9Dv_q+-!RSUJw~AGcnVoH6yY2jc-GCY;)E_JS`(S(_%s?x7`&}U6BpB zuBmjXtXZU!3CjzW9wyTbGH@tHq^n+WX3R^0OPng!_Zus;hpWO4&$|e`%IODWfpg;p zF(HLZ*Ny3()@+sliq^$sAdt9dYK`2{R?#)qtxswR=(Dl#8gfCSoiePBc-$hNgpL(I zRQ&@2E9iiXNZ8O3mp4VkM7~CTUpHKyFCQ7tezz&3ZvTxn_E*0ariHx|!~C*_tU?(? z`NzchQA!7#l3kN5obO3RW2qHBheC>hQ$jbESP%i$X#p zN@h@Tpo4`yIaNRYY(WzzOlNj5>SxdHzafXd)m|);tBej=2w>vu6RZgoiJE+U;mb5= zoxo+-aV15ZJ#f&9)-D?<2BgDqlA)uzJh9|3^0v; z@BsbMI8jp7sr?JzeiwVKK+$sBuf?jGZY15>`%C_PsfJxox-ub7q}0R%)aZFjKwq;9N!ih#MHV8urZH`Oh1YIj8|xySV9bSj0Nm`f zAj1$!t0q7Xca|$q>zbRulCrU|$!+2TPUcU(#|zXXqfp$a#M*_ZC-r1v;8xDh)dEgz zSmi?FdF`6=Uq7Y0x4Ot=LXB%0BPyjUVtxp?X$65?Y~v>AZ?m^tzA@wA*&t5+3MFj} zM*{xlryqtTkNne8^B1*#I9#6$zRcOO?ja$?n~?%{^Yb5Hh@e`%XYb3j+01mfq>l9$ zOu1%X2EVL$uC62f6Qcc_wLAxJ`_bS*y*ee#mlrLxjfdCW^izW=ZJ&XF_)16y_SJW^ zbwf_(ynASSJRHG$Gmb(?3(!7dEe>ml=2>_bX%XEk3u@D$Ed`x`Z0v0jR4K28H7w|Z zV-6sy%WH}vG;^#o;H8iHUNRd02LPFKttYgobV%)u+V$U2jeqjX|H`|~g3_?j=nJxv z3#ip?Wv!r3g1qt{7l)z**8YUOywOWZ|320&g}TgU5<}onMVB0xH2!%rFNB?FG`C6= z?vAiYsgIqioPiI6vps#E5FFt!%t)O*ktXR?JSFWIB13n;$oB04Y8Nf?72n4_r}s^H zPvTg3AI8TisLrz0sq+d<#;3U#e>hl(;gj5J+uM(Kx+@oAZPP|`c0k48rNEqdjfeGV z^^tn%L|VZ;RkreGfYOslzzE9qv3*gXbgH$L32})8PdNCkyLq(fkO2I6joMQDqujqutF@2%-%<%o> zJ>$H6bvr%Jz5!^tMDCr4H!xtZPI7`tQR+*Zd>W!|8@9%x zu|soCzNHEWX~<|A_*Vhu>6<*PgT?*P-LQ2)Vyk5Mx{OXiJYai+A}8~hxhAqyFY7zd4(EX^KdV0l6n_sQJxI0sEPCw{Dr&Js$4Ohn4EQLQ^?Dc$!0d>(%V z;~wsYmg1%jwu}NU7tX(#Z}(F3AVxg-)4Y8oC(ftX^LbVkD!vn121LptWJdT@&TefY zQ>Y08-g^O(eM1>1hO;I@neLCdV2mnz4L}Wejj+5`lWlp1dcmG+1UK8bS?6G8oqzVE zCH6zf74R=LHdL5hc-6*iJ(KyW0lMuY8DeDon`ISj&y$OJrVSX&JHT#wAoRq^05k;g! zU*)4*hZxt3spA{kA-Cm1UMu3#`D6ovKjo6*K~$GloDzjm=55|ftIf<=NjU( z8U^}Kv#L)iwr`pCtpw47DK7E-k??}Kp&ygU6|QCv-O<|LhZGxLHMEzSPGSm(1{j)x zE2%rJ*M)tyDx0Bi1>BPa7jRv+5%BBRRK-o%5F(P7%B%&^^$WXZgvU+jjmCNSE=PA= zH)hPou*knj9{1wY?Ssu!;}HHaV0(o$t*`G0Ab2N*IZTv#U#v5{^jXJIPXxRRof4}( z!S@=!FXsz+5tPbW=O*oXOB_hr{|sRH!!QRAyq#~OoF`FuyBdHmj}t#=ab)=l)v4Wm zgGb?ejP9;%kc7k<7;Mj}x*S9p7Jq(^k*q52wrdDu$YhqBZ*yQ(#yb>B?C%z&lAIST zvh*h@-g1Le7{@CSDKq`1zirE}IuF!(bLpLE&2z$#Byu6si;0iPk2&emUDAUtyF&l? zLbG9_c?=0u1~mvS2%ZqfkEqsP9~k$%?A6 z(-Dk2Xos2ld&y7HT!GZNOB_H^`?7Zk$1h5mLEdvB9sf)#qfv~E~6e` zf4Rc&o`TFkZdxcG6(tIT%@0mJEAsz5H`-%2)tQIF5L^Lp zgG>e54Z{l&V^@iL_RzfV?ff@gP<$i~C;+6i7R^8=@3L;A=$P&e%jfQM^Q?r&i{`1s zsbW;rHCVwK$v`xF9PIszp;p-p!JA`5Js@I`hiL)*G*2y*&j+?Q2J3byD({%3T>t5k z!h2?wKLF41m-EQb4fs!B zhR)lAbY-?++PCQl?njyAz}xZ2g$3kqMTvpNyE3nhy)=fvru`~WZQftZa}eSXfzz-p ztz-J9EjaJ5Eiu(dgf7$egJ}sg(Z^q6iJ`w$g;6Oq$Ni8Uo!}XB;MbvA=b$2Fu{PnWclyb6sfX#uAVJ1w8{W+C<{EP&^ zc-YgS;Of?^vPRP?GH1D=cMl||bE(CyE&Rx4zPUIurftWfT_y0o$wJ^qYrae{JhTnw zR-^lf}e;CUYB@6U>CaTz$EU)m78vO{f&eNGDF4&4$~uT z^)t;?83~HG+9*<&t5cuNtqtXl^AV^B00nBibpWy7GW$!WW`k&zR&Gt@?rXW!|ANR5 zzCVk-0y?U1>~?-iGbPO97>W6mHHX|G%m@O@7VlSIY^{ofq#V86ct5W#o*zh6nNX(} z0ZUEO#h=YN`OA4?vQp%xwAUh-ri$>cD4Z_qVuUzx>w4mVa)400U)7fjW#k5|1_9(rGrI+EDZ>2kD?V zTp1xPYoIuD#BdWp8?%EM)@aO!lb*L3 z7y=Sa*l&8iY}Kut)U2mwmg49zsO#7I2nd&s6Z9>(UG7%)JGF-9(m5m+O3upfn<31b zyOfluOq*&Tf66RZe1ZvYon%r*V7$waCi*e15Q-TZ!NtZ?^0farM`95nqx?=h4T8E^ zxSkH>`mT)X&zqU=Rd8GdnY36AMC^ZlRQo#QHax;&%dPR6%vG<}PfjbLsEN=FU=IC= z6J7gyPsOVv^WacMhEI-qyQLTTJN$lE?}-6|3zXK*xB;qx9Kvl)G*=lQ&(}zV>BOdO zMaklR@x}*zK6l>WmmDJd6li-W)iOWeSO+glIhir)(mF6T)&&bNu$54eoPkVio2~pt zeH-)YX4K5gJ&2syPA$(-7k;uv=99ZX>_;Rh5~lx@6FbePSGf3di}figB2$AXl+a!O zI-o{CHR`LTP6e)(GguR19ElQX3rzp$44Lo^xL8$ZJ9(@SC?XL$3<~L zqh)WNBf50jOF`8Igje7Hhw}_o565Io4-IHi5~ebz^(};mAO(dHku}R)s|uqQ~&=_ojD|$?}e5Kx`}Si3ra*z22JU_)wUZ?FM!s z`Y4?)TwQUAfDD-{C?`?X7cCb{Dzs_$r#%2iq_Lb%cEU4w4drihqIZjNeuul8^$J^6 zMDbRd&~Y9gJ4tL=fh1*yd0Mx@druO#rxUO54j8K&rdBDorbD1DfqWU{Fyt<6#uuBj zAtpdCT~LWvA4bI(?QOlpAn}q(L|x~-fQ3eJjaHT~Y^=)z{qc1GaYPpCN9|cJp;|dB zPA?clmOGg+m7kD1T}=i221=sNubyPP^MBM5JbKfui#n7Xt8ewzni)AK^gCT1MzUJo z?U(^Dp4Zy1d!5j)o423p&VpXWK5OQ^ZN;MkwlF8PKcR23`XwHAedr(_3lAxo3QA~< zz(6VqFGJPgNecJt7Q`S%LubZzaMC%KEL8;q+IjXf$)o&CipJFq&>;h6k7T)^tA<91 zh&~S!+C?-*?qHUQX2F%$IefxZX=$*qaNQCL(|zS$&Bm0>`{}$CON!WFikQ-?AvnRl ztqA2~(QilzqQ#|Imvny*cZ=L>Agj_aEi2h(6P{WG?yuPuN~Y)&2%qMsXvt8P3Ej#b z232zR9XptplszATBw_{ejNP299*QdShqSke1Y-~q_H-}<8ui1qV5r zJ|M@^PJnV|X5e(fDe^CdF1`65Jp|gKUyvn=BcHi1V!sB!Czg^SXd98m8GLpG;))X$QB9o+Yf8O#Mn??$bd&jUg5WH_-G^&jJ`aS|j_C z5%d7BMqm9Xl%KJGCXo^tHVTEI!=!o2&z2fuDxE9Q4W!n{vjC3Wfk3>XY%NJBw3Z><)tD@z*{! zD~v4wp7W+%W}Nr7bDs0wVX82e)(fxK)S(53;kJ9-lojx1jy-;_a-71o%UazEX?^oA$kq;ElQX-1 z;)ME@zdV zaG91hjE^UDSmh#SN)KI61)nabK|MdbNBMbaX(@fplu8YIICs@2fT>S zt}6yID)YCuUz)hY86FXvMDG1Cjvkn9OoVdZt+kZi6TC0-hlEPtkX2^nJC&E&3mvQ? zS5Ocuz~lhC${s3l$LlQ)Ux)uvi`CH{&sq!$!8%4hFH|%tsdkF+(e~f19D%^vO*LWt zNdcqKRTK+%UED-9U9AkZAc6BFj3pA_bT1=SzlXb)V17odG8FeOPu>W1LZiE$r5$c= z0DDAN(w~W(-(T++ffN+%?@5zyKOrNThN3|1P%YhfD*~?6yR`o;S)k(X?zCxQmWgcK zH>v2**0!5+b(-QbbGubot5z2c_GcDkjgIqB`e}(GKzbG39av$(vH&vyU%>c_07Nuh zWF3ON-DUa{gGAFro67P@Eljb9NmtwmOR(GVU;r@a!GUt>uV&)OK-b0l#xcP;QP^R9 zRrNmzticphG19yz=^o9f|F~KY~EjTC(t>QvKmP4v-CU@di z2`ek&$Ux`h$4agjqah%sG2j(8YM28qs&Iati4YOAy}>>K9|A*!p?NW=s-jOyVA6E9 z5Yj2?uEFq-u#an2PIt7PB4v(>R>Uc~_^ijrxk$JcUJboZL-O%SCZ(c!5W2xKCk=Yu z5wr;kbVg+dJ}=tD{5v2SOMB9~N)c2j=xF7Bh97^y}q79)WA=T z^IGz8^(dw|3!$F1*Srnj`|max2&_Lzq{F0uy!7vMskyP*VOEzgg`Im5NK6FOC6Wy4 z;#vN8KTTj7E>XwdIlaUt9KCXQ=xM;XEZWbuI}D!l+vV~;C1H^wjZH+czU z+`I__cwbt|lYTHmj-a*s#4f)~hYd#;BCUou5Z@tJpE7gA7N$yS8jn*a->IHFBC zG>E`)Xp{g`=GqN`gij~M{BU;-@@tcj`+Q-c%HZpNgPs?&E1aZ206+ViWOp466M!3+ z0se!jbYMNg{Dr;r=9-|2!xGeI25sT&kDddkQ&j{n%OS!a_l>kbPiC1-~kx+i8)f}HH3)F!Jw?+&5$O5 z5%*I~4CBnc3%+%m$eBK&jAN^K0#lFvy2zKz7SjmXV-kNe2(0%pnPtxhBzTCAI z!{L7E&C}1)e(WRf2rRSpr5C%<^L`&+ajrSk+gs2;d3dT@+#iSR(eS&#?N4Z^52e+T zb>)jumLQ;97yptUXZVEfk5RN60nK+^)$zUU)GS_!J)O7}vFCzRJ|@0+9!<OSacA?{x!ezf&QHUNF&-+}yHL zhmW%6a7l=Lx(zCx7IZh^Dr z2@tkyoFA3)#?=sq@#6d~JjZ=BSu03Y@j;6FdO}%VjHNr6#%tNL-HOa2VSZqWZLASU z6Do8a9nHWn?>@y34WNbMNiIftTrpDyrMDOHbz&XaVWfGXT2r@`pu@~?A82R$d12FT zf=-63_%(~e-QYuX&>PsHEnWO_39d(;r)I%C6qvIycE|kH>>%T}pdGp`W#IOFAV&XJIB#M$f>+@gMGUdUK(hNP@x zcCC~xb{;R_&j55OEV>B8t!dturE8u;v5CmP_KHXReity`UKX6?6^cnsZDy{LHBu72 zEOPK6272)@z+3bQ$tNlwZ6#QIbFxz_*|qUSI&o27(5k64RGy>egK#rlWBzHY7?v<_BiW(caV_z8Xh z>cP#Kup_zrL^MUhML?bJX}HrNgPR9752X%o4GVB@umzt4*L8EiDU$^tI1k#Dk9Qc=ICifB<G*_^vtQrQ?7#4qlWg&~=QE_9h0s1v5J)omvTv*%FJ8euI}Zj*E4kH^UB#C0$4WWyqkf z{Jlwu!7D@_PWh@i$fdP7gd2i6y+r1y_^~FX`_!g;YnJ14!S8HyPBbF6n4~qE`M3=wN#EGnyI%>k>GX+&f%Y` z71Lg!=o!JJa4 zj!KOFo!=|7DY0E+uk1LNC8IIzyNQ=j1fc>xW34p2KAGfQ@NHDnYRu{rP4<5d(*xG@ zE)LNbaDLgave^|7j{2bOJ4?rE$;Sx(g#!x0el_Tak?HTI%$NvOz9-mCr(Cjm?-LyM zCo4rzw>hTwS=GKGPgWX)<{v1ocOAMda3De*Ao2w;{ucY887!&umnkVoyBW@}-61pb z`ltL6an}ft+@<(ML1mn7ps?XfY2Aeo9b!?=SyPs9VxY#Ja202}7M2msdGsy|MolmD z*NBS+o#bc$y!G|GP8iMz^orL%xvc2`BWCQ1k>hK3r7|{AsQmC5@ z&G2sh@X_gG>^8PBXgy0F(RZNfL%m#Nn7^hpbb*YCFElv(@kuRy3N#e?H(A{_C-PPs z?lcpcg-st=iNx}D6E$jQJ&a%E&bJFIPnVNbxmG?7|I;sLB?e6y!rG!ujY+2~+^J&* zWJpO=)oc4{po>K#dh^J+acDsIPARNYr^L#( zbS@G8P)&BDBjqK08W$}a>m?uMz2mo#^{tI?w^^pP+B0HOQOIown_Ym7;%ZS3<3$5q z0kvP;NR>Ug2#Qvu=Dh-+j9IxgB_Yk3Zh_SQow6ae4{4b>t|A%- z!^?dhHg~%B_c`vQK6z}B9|(>Wg43}!0ER`_d%;;xOf+kp?eoP$<}E3KI`GG*gBIMM zya+S2V|!#TQ)j6&M45)odf%*~4mrnpbdu2Apiv|v%_Qp1k$|V6dY{^)%ezW|Yv5dA z15`?#Q#yUd+h;{WMTKa!Kk{b|vrWytcf2T~;dxr8&y>5DoIz&64rA71$M)}_kH*Me z>~6Ee`XfP7`9mN|n3~l+?+Ozr0i<@Mg6&SF_+5jdr-@iRNoFs?r{Dwqd0tNsV(N1E}D)SBOKQ`D<)z@)1*sE*qO8P$f3T6c$ z`#k?(C{$y=x28n1A6DFUs=EB9N0*@Bs@XC}RTxo^OL)AlQryHb{An$?)CA6mGBsuc ziL?!gd8B&=N$jQ5Tdg!?bWz6-vl-nGp=3S*vVtO=B|CKrX|c8`4LSGL>jYDYRMljY z(juo$J$wtAPv_A6E-1d5o*EcG?mcZ@)0GoznjZl_RW2Vg$Vk}~adjzb!@Big=2$Y~ z{kiplnx#4BGBU*?twM{rzv0N|0Q5l@8evO=BJDLQx*W%*Y9|tQ5~mu8O760KdwR86 z6a^a!D-Q@|*hol^rB)yp5EiQ7QHKOhv{o(mV2=5Sx~oli&$}pe6?k2YgT>SKZ>#aP zGkuXZ_aTDxq0?eHQFLvY6I(Tjx#kcPt=3D;bxtXprD*5TI5Bke0^u6-*F`LuV@J}rCMqOESTF(b+Hg z?PV!2aqYv-Py5~eTA43x8uNm(N?YsRXbn#25~Sh>+0WG1o~JXS>#eOS_I-3j0Lnj7 zw3+(Saq#Wb^a8ut;_F$^xrqHbAB?#!iKuw4q3>h6-Vq}QBPO7z`!jt`%2Ib-6sDSZ zVeZDhU6qp|a{SPI_?9VMb72639HgMGAZi_aw)-d=%AHM!q=PI`{Y;`vpn7k zx=R3Y)%IP4eJ=LeO-8cmR(JZ*%*d5)*6Qrv01=o^(!+@SmK8sHVG{MJ&!8PZ*2{}I z#u^QpwIrR_H`Uer>e$^Y)%`Za@pn;pwg?RL zN5sIGX@kz<+LgW+6(vU%iwhWnPSx~j z+!VCs|I8=>CL3(t!{~Dn3u~^cdav%dF{MO)pmY0sMt-c0X2CW4v_C<^Y=w`5Wl-{@ z+cIR_aSd}Z%}@KgdK;{td)$t=BUY9FrIU?hcq^&{9)Mc7?O@Hlr*x#E6n)E+rWco@ zFLI|qR#u?<>|6si{(3}t-S=`qR<2&Tm>mW#Oll;cv({1|di*6RI9(Nyyp%M&h(1yl za{RDV)F^Mmt$aL;a{{hM=XK@fFz&E?>Bz&3l6`I<@CXQUPqkpGM}!7jgiu)z-vLQ% z(tXJcG>FQx6$^@wA2gol6y4#H3YVYN&4`yF*B`&hPd z0ut|%^NPCG@COY>tl*VVukCd>iB1h@kID!HWo|p@#XRi(QtvLwq+?d^uM6X@?j}p!zG=UpM~KE z>9j%-xa~jbuy#?EeF6jDPVAz8XlYks6uBXczn^#S(sFBBHoMiBcRi9!F?G@icOdvYV5c@Vc{UHy(`f{OglS{`$YI*yen! zSX{eIxkx#mlg=Q|#QgGaUW!E@6C>r7Va^(3vJ?*y^3&YX6w1M$q^B29MTdTQ$7f&M zHBs}vbhIf*inNapuQ)A@qn-1mD;`UR4GJ_HYuf6&`}-35stEEcLGghd!)jfff8);lL2AMhcRQC!7%G`s>Z4L2 zCqEfd!}}|9#=Pn22GyMv@sY_1Rpbhv_rmJuvhDjlHF4t?6k^By8ZZS8ii##TlR*`K zh&e$*lD(-HL!tF|MzfJKh3n~dvHE@;n6xHB-IkLl_V#m8)KB@+zyPtN%c!6TLTlql zDs~s^#DNVW5cmYn$?cnpo8XlEg5Ju*@nc@06Bbkw3BVmW*J^2KbG;}8&qbz0Y)n+Q zqFfPyeF3RA(i(eLUlx9pm~yz_g{37cDNDio>wJx@=ASM57J)6vjjxjY7}6 zGl`86&tAsiaHtegjP~h+d65$bctvU`V!$$oV&xV~6q5Uv!L@!!-u<|nFN{BvFX6wC zQu2~3o()`~X_QD4$YJ1&0xk~Re)lxuh5w5cN%=Y!hW7nfD0kQDaDO>x&+MV6SR|42 zvsbt%=%>fiM^rVYUx|gB-iP~!V#tOZ49~VuvY59tor_aAo7|Yq7U)I-AxIi?LYlF` z3_xNV9pw9xv%kw&bsdz17FN5pgC&QR`K_5C1#~>of|ab4$Khi+aO6~pu78kuhr$Bl zXhsp_I+_Wr3gq!#hSGUYkV`Wp8PnlWDl?41-(FeV_IUF1xOfdwcl7%*tWt}Szj6yT@5j#@D*m~2d z+ZYnRxeY#cewj4E=69P4|7t8wCfeu=a!eC)P=~jtgTTlhJ~8{xf%`i_1zUz& z69S&r&5a0}pCpSyY;doQm;n`anM9%~t6!G>>Fb$7>Gj?d1rX_4BC#KX2=HN~KjoZv zn3#_u7;%Awz!{`mzG$LR^)U?<#Rq^B^;^|>jR)blv=5^@eW>}i9G02KUuta_C(vZ> zC<#rFs)&@qlVYe0loKd&0ev?%<7BK)mPbteiLma-LAlBdc!xt^OEq$nHI4bdYy(726%hv#Zr@;gIy-cVpL~X;DnUSA>S=QsGot|BwL|f0q2Yj$u~i25CJTOn z2>&%yu&u#WOkH-|5+mZZfU$Q294lXD7?gSQ5q|ynpJ<~Fc93LyMg>aUxve)xoUDZT zk-btZp)*(gx&xv*S>P()P#vnU-;dJyzKd z4{8mh;~ygk7Vd)sNGmhK;y&#{vM87fqO9XtU~sI$Eq99dDcm*_?b?hWGlzp5QfO2t z5=d0lu_|VrR`#-m)FbwNKkkIuRNmd6Fq}Azc_g5>Ux`|kweDMKE{4L}tDsNtv$wSc zGD(gko~lK{oJ*AdHtBNp>^1G@A66Vl_75nytKTLOs0E|^i=4w#kFXZw;cttJAI~jC z8ZB$1E<}XDI=79UO&jj=<}xRtrf4}~+xe^IEqX%XuYWKT3TEq(;z7ng(SISj+P1&} zzXlyy!Kk#KMU!Swi2t%|(Zy29cz}N}>)KXTtHl1V_A&{T|5w?XBx)3i{0q>E!}y;C zo>Y-_@#WW9vm*hF9cDt8i(Nzd7r?nUb}%$AJqP6^c9O)Qnlu?se%ewK&TEU}P#ngs z%}@u&%z<8AS_erZ%AF@Axt-0gKHPvI3C2|EDSCyQ5B06R<^*ojJ%_uykMP zuwHINx2hdyG)NfdTqZWHArCcT`lg2v`Y(2ultTs^&#^oEd}p~FbRS7#GTePn#hg0V z<=!A7L8mN>^hl>DLe!F3qkz@P&V?9oGGHK)F8jpwz^^*{@@JG9CFY;jZSI4FQ5F(P zg-{Wj3Ao>I*ML#Tp9g%{6EDb7K3S?>^&AbB#nDrt!XI$T)`%@GprLL(BiV zrV~V!j27#52C4IFyMDIB+TFwFO9)C>x=X1P2vyuc%us3=4KNeZ)DIIjv@eoaMPP$+)X>TSj$m;_krHiO!Lc2AR5C#OTh_|_XKb#StrGlfeo%N# zC6O`IHT^YXxh&!Lg@RTy$M&9HRCqS0ws;Y=F56(ISDX}GlI6=K5 zEXn<8U8Fi6Yrl$HJ}wRP_PpbJG0f^G8=KAPz~zI^YD88XFIT4Oz3Ki8(SV*id}umk!Zg$h9N z;ykkw7n5zo%>Av`dzeY=#aL`jr}x~%3{g>0;;5ow_;?9njj{7~8`5DDkKm{TrS7?l zX=Fwg@wA?{kk+i(`7%bKNUN8ZMSmeLFhf@FS4pf(q1L4gPjqA`)yur6lhU+P_Yphu z2<;bQNOI31v}2CB9Q+-**Zbvx=Qc#Q%*LQ?=jMF{c@;KY?2^Uby>yihAvQdEY1> zR%90ykoDnU5xf&uO;2ed3L^Mr{PT@QQZ^;+90K-HC8$u)^=AYbwUGDZT#Vn%3ZFQ118e<@-Q0NfiaKi zAgTrQUv+R(-fjl7pNj9A1~b8>UxJOZe(O8Cl{apteSY8<^BJOfNrW%xLFjyY886y< zwl^r}56aa;>SevI@E_Z!+?tb-Av_KXei}dF$;#Pa_4dzOO(O%{kFw?aGJY6zcPmwJ zK9yjL1yvwK54zUAy~pY`){jH_!@Kgp<=DA``{4lwuv^w~j$*&jgs*y2u?^P`55!3G z2~U(Us=2vn9@a^)^BSP!f~Ce|{va3D4cTsmWNy?sF=dFl(ek8#@AeU#2L;gZn1Ya5 zlTn`i@Ur>qc^iV@dzXU0!%tyW;zphEJYw$CJP)8L_c}W`-Uw-$8~Qd0$lyS?=_aSS>hE zbnc2wO#O%MYZ!X?K`f3aX;P^VN3v4(-V19bS0O;&Ifr#R7~btOqIK)P7Y3O;7zp?N z0iHavh^~Vlop_2(ecvCVhaMve77!d*nxFRSh))dNZOLpQFRJH4to_M4 z1?KK_#t9@J=a>biFtHMKx$ME`bDpo(xKPMgug6xwOtcV01~<>y^NMW$rqfb- z#hqw|@qR|qjUb;%gqAR%S;8&_XctUAtqww7ELd0{L6_T2t@xB%_z`cUu;>yp+Ek-W-|DT;6=HtqAvzz<&l5n5z}=#p{^1Svj8>rl zy#&Q4GZH*bnRW>evyi2bo~;YpTc$=;DnhT1QH!9#ATA*`!xk;?@KD*^wpMCyVjR4K zu(49SR^#v^ZWPS|F3~ona-dgB*`HK$565rGMULeZU8$@vlb+$a~NH>m71zq`xJf9 zY20ux)R;S9WrZ4G0^!vF@O9n}bhUOqA--G2PUI-I@XpNU6Ov##MsdQ186sNDF3Qz2yyV;{d8Tmn`Y4E2|TA$$XM%yuRAdO<&27g(0 zTNT)M&rkOva#BG-NO}dKNTbMk;plu#rXYT5VfHuaVo%7eNUjAzikXz{FxxF`P@b4f z$*^}5Ge}Zvfi@Eb4guyU4{x#aRFBwwsY%nP2VR9km?;z1Ka3So!DLd#QbCT*6r89I zKqKzP_Pel+>Xfz_2@D=e-23^ViE#s4^K$aZMOQZ;1V3r0PpA{OBH%zW0UbK5BVE^D ztpnYlXTYI}d>jfj@PN;8h8g#6W&kUSOI)*SbfKrLr#i-(cSZJ>%J!yfx$k%R+h4S+ zxTa>MY;fV=>w3FHyq_|`7!hJ;DH};Ibjwrw_!Y+)F9RL_rWJ+$;vaKQUQOW zbd;}jfPTHUazDd`<4_c*v{;N8S!C*vAKO@sE4D_r=aE+WQGV6@*a!Nk(#FNY+7h(s zU5UZ8W|Wh3hSB>SGe4o?XrcAd7I=AaxTua3!i(R%{}=foX?KGM_xv?_@>nMZ;gOGH zW)p3c00z8UGz1f_ZHOuHk7x>Qqgv<<1F<#zF3+c+XYRTNE@OH48OvNcsai+W05UE$ z#|e0N{0~>p%Ys6{G?qd^qP028T%UoLM$&Rr)hSL+O2CLngATI7c0rm-g#v5=I|amH zX4>B*}u%ge#8*x269x`X?+o6qGRct_Ty$M{@6d*os zv*kMHE%3_FdIIky_CC-(GY4l17rS6)w{IesEMS(7WgJ`bNy`kfj>Se!$fU{_FSRAC zz2iSHkw@acFE29GZXS#!){>idysQPz?7iyJjL*nDWbTc{DXj)Xo^~mc()MEfAKO8# zk|P|1(%d4q0puuMh^-}Zk~fV^`gspRT5-skCb%eC_MyOCI~EK%X3hcf2o%ouIYKFRk4xwj9->uk@y9g|WHw{8nbS zrHF9XprfKoQ#qPxYA*^2|gJ0v+_cV`$j^qn{Q`meMKCf|4PhfJ|2boGS@hptCWjh8T`rXfw>kV)<>u zK8jf-u~*)T>9=XmS$(!+%mp4#;)#dc;OJ=7=fkJX%Lx~8nQW;jV4fsOz)kRa_LWQM zvAnIe4ni9|f2KxWEWjqaDL3x+AI`a`J}L#sXhI8cK~QYx64I4_S2m;?$*9D#1ugX$ zMjMDV^wYB#i2r(0vk-rl%X+DM9NAmrf*K;TdEbf*tb6%@)AGquE>O;BgrqAK4BAz_ zMCWZbE8ZG`d<0wx>11g%h^$2?WX!5EH(mh9YsQZ!IHko6DlVh`{~Xbrknc(izNDhr zjH#UXbD=~qyCIHq!UZ7G;cljYe9)RPo084ZZe}N!h>PsU=@#N8^HEAt^8{>03iJeW z3DAei*AnX2?5?AvAu)^IDFtrj8|&U1e=2v_!)Fc1*BjLC>R{Ui8$e1Z*Dvs@1c!tP z5`#Vn*)$^_JMdXRf@-?Z#EF%#_t^M%$Z3s(mJA;k>YXL1$HYBtS&&a#7Di5 z#X5>CTv_#inoCCn2pP>Z*Y1aKisYC@bEopHC3}zrMzFSxm*&oOYUUe@Y^%)@dNq)- z2mhVkKa&>QxpPStEUt!jE3HQmW`zfj?d@H$U*wJ=&{tdl7kmmHX%z((--4Ni2O^7x zPFOMl=8{7kWGTUOQIJk90v=9H%1F+HB?I>SkTj2GX;qBjj*{DmKpTu2-7Q9wiZpI! zrz`BsB0^~RP~qZEgp7Hfz38SQ`Uo*1C?w?^(p3V7V_?=;Ug}7)Gu6MAM^!jI#IEil zzyR^o2++1cKl5QO2!CG4-|*sjWBRzuZFvJ=aV%Uky_jJ?DaA8LLrUp+@~1ASj6PKZ zQR9=WJS{~Y#E(rtM&N6rY_x|)`_9j2BsO|5vNI)zM_(yd0X7e~| zR}R&&Rcv2`BPu;pZ0!cGecn_`g~{0T)tLIPs*0z2G15uz-s~T&9vUXVQwh2Q#Vzve za(@YwN{ATw$hiG>~`^n%%RD}KjRr`MVfVq?IB)#^ssfQF0gn(f7F;abE(?Pim=oe zh#jCx7&93T zITFYx0~)f3xWi!E$oB@FfB+#EYwgF8u0q`;2_lqNYu=AyPuBu@hfyLoFe1{9z{YZH za%bs4y{qQP*`7OuqI$xX%S(Wo4mvQS8RLo*^+Y|>Honf8V&^-Z&(8L$z|cT^hGFth zgHL*AY>(bWG~|WwdK%T``eXWPC65yXVLrH58rm@3gsV;s?S{%wuO|;o6O@hOM={t;__S0D_EUgD4C`=JZCN@B(jt6W-LsrQe2V884Gb;q48`lB)P#h@ z26NGv#fhRPv!Ru+fSViumzRsoye%UhP~#X;F(3i3DZ|VRk9)1%d2F+18{>zH)ot_z zSL8PdrD~K06|x6A@Oe<*r|{uTz}cP?pEo~!v0vhFdm|n+4@s-)f>KOH#u=av($Zdd zB_2CP%Ahtx@pndJ00MwOQC%?PG_UrJc`&CNm7jcx^nkhWLJBY!U7C0n1;)h2x42Dh27JpNe zChnph-M(fHCCtS9T)Ix0@nOk;&8}SQ#qwzZ;I6ax|6fbW3x1#C47_zf!jfrqK&oNH zgt}khe(vD!Yz^bVg#7kb7f$V%+5=#U3SfD`!D;E-MB=~9poI$ovk4Y2AIx*ycrl0% zk9|p@g@|2(;|&e`caOUC?B2f3&qWsNC++F~{>YlTYha$8rK?g>r_osjIRndBJem=JYgh7=2 zP+mg7K%$(@!kc8Mw#n-*3lSstATY6F;& zDU#;A^PO7i1X zd?$;Tho=P!d5nVJHz|GN_4CLwq7mR5QOq!=Km{Nq6yW4@w)b$RuPyxigs!L3FMgvl zKB&A-|0GGV13@*liFDi6$R`}j{#EF`%LJQ&J^(yiSHYi`n$nb!bb!aP5Q!7>L$6Ed zODot7CrBu{|9o9uAmBCsP&YZwbsfnA7j`F(G~)wEH=wf^|l6BfV%I50Eqh+1q}!TFwiR_fFh*+gVN`$KZmzBel`2cE< zC&k)Zy$!sm@*-dEt&bdvsM~jW(>yW{WLa??Xn{cjpfN_ZYx@Xb2YoIWc$y200bez- zPSRvewyq59<{*_vU&V>9gqDHHGG*978K=-Rl(J}Jg+@)h)Mu*Y@h=bRQ=s1Ds8cm^ zv>aHBh-!MZuhr4DZ;Y!B5S2qQ<~F+Vya0g>143r>_`sF`7(xtbcAZxhtyx*Qb@^cI zzjPU<4RXqzJRdQ`0cm_w7Cb;1&|F`p>C*5(EO-$BI-DYZ&jS<*@?eH%)hkO|JaHm}w97t1rKg3U%GCeMsa&^DkpvWGM9QCFqXEJQ zF%LPW4GLQNvf4dR_cq+QTUP#7`^DDo7h)SC5e-miTD?$6Nry0V1d7B<;IMYkuRwhr zLIB193hcVJGNz3*KvSp`(elf@<1h|Xh^l2++9ke23iabS0yBw>Ae3vjpnuXSAwOH${P3 ztG+hOTvVz;S+deJ%|3gHqlgcai%DK)*6IoP7=z^i&O5FpA99I7M*{9jsq?PI+j%vO zIg?e#dGqRnL*9m(>)-psiT2E?UrzkOqZkB)83$CGg8@VTSh_B601WpoFI)^*1dTfZ zZg&#wtk`|Ae`ULa<@Nhca;_nc%=@4NVstenP*T6a4M5p!X?c&#ulOsv8Ep>At}{mf zi5<3LfEv|g?qUX(t525>j}E~7wx|Audw999F@&Tk6xT{-XT%U~5tpca?OUk}o#XD( z(+d_2QK`gv0f^}=0zdNpQ>eHw|CYP*y8V(BEo83w-;m4mv?^^(m=Z=e+9xiX6>3q1 zqMuPH-juq{&+lHq6x*Nx72SFlYP$t$Y6m_}76PJlq9#yu2c;IaZG9ZGrL26^mlq(} zlQ#koUXZBl@N+br1rPfUXpgky0%{nhZ}cUUREp56 zqZT-_OD^fi=U2>>m_ z8@m6R=O}tGbTfSK$YuH5Mb;ZBLHCU<(wcH-!gBjYeR4Je)G^L*7Vf_F_pZaOM%e5jaL31?pcBP8nDPy+`T@G7Vf+hpks!+!Vtkp&lc35XxRRA#au$v zH9i15+e|HuZXriY1Qf+}nU5x>^WZ@@kykA>8>t@M-Wol=cjPkh{-5<=K2m0YFu}hs z4o}VJ301)|ioH|SWeBpTg`ftdZAsVkD(!$N`pbwksYvVcKO^{7a{xy>fCDfU{11q* z1VcsELD(zZ)?ZEqmrP-Qz|e$UdNHFKEdNTgG+2|rr~>c>}*qXeUn zk(msWtpg9;?-d|86owswzP-M8Y>5pyrYu9_>y+iRVfA!Nb z?i>nOv`lh{xtF-+AR{ueUz+L9^nkw`+W!JE?GkdO&}$4pZcQRD^mOf6vc!B#Wqc}~ zcKH}xzNFpjazw^Dv&7^#eC3A$gE}N_hg*i1E>7lV?gUM4o}2_FT!`5n#a8B2<#yVX zXzP@l(L+pF(`ELe-wB{iV2H?$RG0%2&`e#7XCF?{18%G5$9snI^-PMgs0NEex7TmR z{?-9oNr00p>m-ZOG%}^5uR>vO**>HHW~Oaj9X#M*&KI9;BGvv0p~Z^Q*HBM!{<@f? z>5;tH0=Gyk^X05qzi?AI^)s~a{?Hc^cAl}8OojX>N1{Y#^1e<<*hAfEb;JQI0IuV8 zxdpDvlaP;t!+mUiO$yRIWhQD1ak;m_ zr52kxlAm#oKEkPk&(%efnjtc1njM2+fLEAbWl)0z1{C5ui;C=zZo!REWl4O4Vi=(2 zuij$&gJ5~fX>_I<#GiTdK3zItux1LKff@Ehu(D-=G$-}7K$)Xz5g}LFR_RFF(Oag6 z2H3zf$Qi_e1a6`!(Uhli7|n`EhF(0>Y0B&a-if>esXm|m`3AYd3-a2P(IhW&o+l*# zo>t6gk2p#+kM@gW_;fab;46PIv~UK{%LoZcqp}30<$9o1tbGocD6fD`b&)k8aDEG* z;g8W7{F`xZFI26r#4Hk&c|gF0Dvg3HZ!kC@N8=^a!Gb%xAKk1!I81KuH||2%Uh~=} z5$|0f%tZWHKQ@!}`r&9xKR~UNgj1G82ZpAJLbk}-nPh(=;Vz&#u)arHWxF{sgT(m{ zRT`n$ON6eb=bxq|Z!#oob@`FsFD^-%~usv!r}L?HU8Cj&3-T(rsyBd2`Wc&>o^SS7A7?7y#?eNA9)Ur_$CVc1|352bGDKwDj42= zsgqOC{?PK9o5%%0(B61|O;~g!H}#%?Q~%$VCFk0nn59}$7{-94d5hb&j@(I;U*uN+ zpXAX%A31q(lC^W;A>LMRfaSZLV&`ra*hfMXWs{nVqitNE-nPlJ+laz^T1HO_#lvgoHH{Ij9jHgC~i%_J{0XJKLXXH z%S1p}3d<(a+ic9|&mGr6?qEhz*^mRGmuHAsSND_9zdMM*m=%O7(WxWYg4kb@O+A!2HlRZ=FOVHKw*ISqqY-NP)P26sblPc zcp4#<;qE$;G1Lbp&pC(9gZ;7R)XOQ@vF(0bxnSFFmFA=Uxmn!AM9ReWD)t}h_)4*g^Z;DKJ-i161 zu5_eVYP&@kZ4b2uu_Wew1JPef)YJ{-N0)M3H~PO==XB212>6E8>ha;lXy5%R$v&MG!P`ZR<>#Kt5Hs zu!*4OPw_%53@*rM99j1p$!hb+vhMq!NtLUh`_UqyTf6Y&6I&2+Z4ZVYANsj3WeS=a z8$LtZo7`<5yR!M4Um!P8kZdU-Bm%ATu7AtP?)Dze1rxMLe=A~Vp=zAEod9QRD>0zW z5xwqfz(An*M6Dl6x?YfAHo4JQ9oW;pOD_gO3@bzFsm;iWHo6Vehb~QNI-mCX&OQhm z1o{2JHDsoOK`$1)``U7}n+H5J+||`o)4;{do<+|mjxu`#L!Nov62Ymf^~C+U<&FL| zGi~qucmb=RUT5Sz;J+@#RW9&n#-+%>2^UL3|J&$eEATqp^TeQuk5k>GvA9}w$ztfK z&tc^?0i*C8Qe5?v@bh50$(;5ukfCbl;q%117;2eBwc4ZS)9iABVx1lIom z23u|I>vQ&DTED@Xp&4?wiYCM$fs+^GG|9>$JuJq!oWi%Pd|(xP%k>2Ige!SESLx8s zEO5kO8n_oSJpCe8TF%Nm%yLcpE=!NL+_3vHs|OiJQuX-mM%d(6I8PV>&lx`)>-x|? z9ghLNVMH*k!7WkKg@l((htlC#LWxI|i?in7?+0*ah^`A*?+wZspu)x)3smsxD)q1f z>HvcX&AgjAXxixji4feY9kA=@E;Ux%tQL9ph}d+VlY_r?Qf+rFQ?4bGE2BAt6e!}2 z@%%d&tIxy%fU<{LAnRp}F08Bvtx~U^aXO*wQj92X%`<0BYan;#IxxD3vAnbXSVuRV>5Y2YIQtI(_nIcF=k2)TtB6pd*8>f<~ zNKD{wYdox^DzIT^WGMlbgt@Xa3!fUeu77bHN zNl}0-aBR%1_Omif*1jHW7X6`PAiW%lPbAt$gT6GNy=*35TyWVPy#}2j2P{Km={^>J-8U)}?2SnEDl5d-RH**nnAOnwk#C_G;t-G>r_^gaLQTS%3ne>!%&P^3&JFzA!Sh)&f-z)#cH+v? z3SD+Ldx;Ukem)D}@WK1VfWIAzCzN>It;V9@8An+tnGTBIb6bp0n{~gd`qv6CU3Lty zl%keveg-Kh&lJNGmQEucBz{8)b2#YCPgNQs`|Z1SBlwnRFs3mHD*t+OpLw>uut6GA z*6)pxN98x^-H=hk(D9;6{|s+GDgKCcbc&c|gAzGJDBmrbm}++cBr+7MOA@eEb6|K#swZLKeaK}QzMjUxxHo@ z<)DwrZ4fP3r`MY#aZP$6-%okyFy?lJ(m5Y(B3Qnv0dP?yQ?|75hL5Nb3A9ZZpI9u2 zlWEqNUkaBRWJ#J1Z$#%Z$yFZJQPT@{Y;ba)Fh7XSa+vF?Aj^2`?yPS!ZsoIpGP z5<~G;=RwfH9d+WI0FJbFLgE%XlRZ}_r<;eP0VOVmCYV)LEN*S+{Yt%xJdioJ*nm<5 z>N#nRLeKy}E;-rzS?3q=+Y^WyTfb;FRWYC?4c|*J0eB~cNp(o-XZRPwj}_z5E7y*5 zgexn-bdHv+!3dhal5XiR&GrHEH+M_9LF0{5y&6zFGHju5CWr+Hx$|Ov%rB*NGU7h~ zcUX){AAtNFqLCez#k$bkt0G1M7GoJY{uRZ54dfzcvKEz!G$2=xt)KGLAK8o0P1JrD zI8ffR!+hugsx2ndN?)m-ihxPvGxPV3MYuY_rB^gcVL-+^_N)8_ukgH^XBKp*4R_U1 zZJ|9thCNCJ{#qP9?;!1t73yRwU*rq*V?mN=Qz>Bc4YDU7?$JQ?bw%=Ao{F=p z^=9}QGvqJS@3T9k8WxQqhtgDB7h~Kgp@OmF!L0)<)FgYS@(iQ7eW~z}rY%Ho`GBsU zM;q#mO8v`IE40j5-WkzO2vh9u`T;8DA9Ja9q+H_Hq}Ij6*ostsn(mSD7w88fV>p(U zreFG{3rp7HpAzaif|b#eO&xbN6!|2M8F0C!CQjUwujRTjZ146y5Fj*fxj;|D*Ip6( zJyh~j45{j@<{>isI3_P}$kqqLdn}xfOG06(8*A>EiADH;E$ly!A=;=R?NIQ{wos8>YKuH@V%$3c!i3KvB1 z3opynlK_G7r0kq!1=?W5+nfu$1oS4S6G18KNW&F+PL^u)h7lnAFSv0Ipa*#VR=rCUUcyvF&5Vc_ zalm)&RPs97_L|l{Ccqxv9by0evPrV6S_9-Tw1L;*m3qzJw3fqND6pOnA?m+uPaM_g zJA28h2SygHe{1}-&uMiCMkrnCO z=fKno(Mw7553=uP`dW7xzbT?Y2U>9XT)L`E^B7Ma?B}D|EL3?O=5L1|2zyC)K2gX| zO4)K{x2J1Iss)Jw6O<~j9eh-e;{~gAc>qTugvBgL!76;GvYK%6w)8Co?5nwQ2<=${zQ&hrAN#Tc~C;k>`7#)@n%3{6& z01r7zV7dWJ34vosf3)SkXXm|8e)iZyEDz_$1S`nW-W2w@RF%x5h-5)ON?anh#Te)P zPB!||EG+7fEKI9rt1IP~Bof6hWF%Q;C53uGc1K+BYCTIep}=kUA1;;oNC&B0*L8+d zxBKIMt$g1fB)kT3Uo%ig0Kc zC$v0XNvTA(bvRyrSwT!CIb41aUWC6;kcX-U}`fKglnUh^xx zo~h4BZDodhE?RZ^dVzR)!euo(7xwr%%B?RLT=r((P418LfpBI*$JTyF_E-Q+PY6?U zXvrkCar!zb71>JtwUCz6m|S{zXMuSM(zx9A#RwFR9Ql#b48KQ*NQ4P4F?Ajf($Iwe zp)P|X%bx+%6FIo-M>Sd~&WYd817GeN0DqJ8O&fsXh|+4M=tb}o52A5lQJBq@%X$!z z@g213xnioQ^MU8dj>VbJ>PMXk3vPY zVAOGtUxY+mgZ?`r+dwuN(v@I<)7QGcE@X)NcEQ>Wq=rwx=lT@N#H~x0TNn|bNr}p) zJE~AA7Iy4ZyY@4U*%`F#b!2)^_vYI%M# z1JKv^IjcmWKNAoOP(y{Ec}n(UQ%~Kw1g+`w7VmdqrK_9Xv&ZXr*%uml8l>jiQOWpU z1nBm;%|b$Q4L0z{>cZW`=kn1Le6Qae)&e-ik4`IMkhF^HP%ybu74< zklC|%q{I_LVanJA+o3bJx^kqBeQgU|01IiI&BMtnkY53=FtP{$f)27+76XLBg2$G$ z!-e1clkCRsH~tyR((~o6bu3yaaU6k2aVqn|_t7r5Q7)R^d9vm6t#4eIWa?{I4;Ku! zwq=#5$#$)F?*RWB`~S~SYDg&WYl4<|g6(kQ|M%Dc*<1W_8)YWQt_g!R+)R?gymfHH zGM!qG{0e{j-u+`~R<&5~Z_>SZ%DJLA0F$#+{>@J43CR383;uK$@Jw0u!*m2&f0Ifi zuP-kGVBi};|7xp9S$I466`jVndbX+=oL@@-gq(4@0|IoefNtof5U#M6(4og>o-+3r zWIa$&!uz>yX}3njz{sii1Qn{GY^fWrD(ZR^L?#k8P;ikscD!#+OiQ0k)Vyj(LR1hd zYhw>YFki;63cNVj&N2t3n*6M(JOP!0eXmY}M*j3x{rlau>=Yr0`o@w^T zeRaSuY{|mqIZrs(xX!&dWGFsn?kEZZNV&f!**97mQPQ-IJg>($x)ApM^9s@AoP`+i zM=rLZ5Do%)+31%v;F_Td`%^v)4N|FH@tfDG&6kvJi-K`cdWH-?6@d-m&jklJ+!O7J zPwM%J?E-cw3{8huX7>HCG|VOxs&KsmTN6d5?xFD@C1 zgeCBG68$UL#3OAUngdg+0mhA-qs*|x8PSc%NQH|n1}cc_IUVlRoXt~LS&L0{0J$^r z?oAndVWzh$lOV|zZT*3%Pvcs{Q=Cn!^b}KTxY(s$%k)$)!a{whuM^W<;Jp8{=O?2*<*#kl{bI36a;z>yQ$J~+uGrjPZfqmXFIH9_3{b6MSNQ5XHe$ma=3PW!2 z%MfOK78lh)Ub$&fm@mPURrmjM>K zxuI2Cb7NQyop8QYf^pFI9Bkdb$*h`Y4Zl*?z{^~NmyLJb51p>;4mulj6l{JODN7!VK6vS z?CYUUw9Ft7ZN(ZU*WKhb%4SI!dHd7PG({AXPr^J^J{b8hTlrkwqUBKdz?6^Yn)#lF zm2#K2L^ML&#zX8HzBeb`KRRFsUR2Lo@;wjjx0TXTEbm)1*lpM5#sm=>`Plj^os?Mj z%HFA~?vNQ_h)c!!Lj~6suA$z}kcnK2_ZgCm_6E7cwaxA`_R43dzo69xBE)i)oE~x4 z0+)M^9H1Yrj1fb?BdN#nq7&QJy}n3-x}-U}m`n=tdP26jbi88sjo8mJj|u`Y?v`L= zuc~Qr`E9F=_71%#0R(4>ApZSPf%*@5(#Es|X@*6LZc>T4yxnN{P@-}=7N0(Sj4bz9A}>x|z8U1Yu!$?Mk1Dj|Od z9@e7keseCG0(3AXh7L2n12iS3p5RqW6Jx_7_Jh@8jqn0$FLAmlY?px|NvA zUjvcMny5G_TwtE-5Bb19Mtvi9trbGzu@0c*-O@l7F!*%ug}byK^=fKVKDgX_3LRnf zwnb4I)dwr*7H9#Rkn(Ox=>qC-_@S}Qy5>=|OAmk{ch}3~fCBAqW@V|Lys6|%%j}vu zg#9jP@OMC{hAZ+9Pl4r*1qdaY4S!+sir!r#Q9;>-$uIrUr_7Gl(FESG&WTy0R$OR4 zpFMiu>2|=*iTtSl8P4ZbaymV>-0iKu(3po-)8t(P4kfh#x#hna@iX^Pi2Jv^Y6gwT zVL7Y2yx1?;UmWxf#!~AH_24^#wn=Wxs<5Sy42+#X+G#*4H1JDj4%~dW>CzKLpVeIv z4j4)(BQ1XRGZ8J;+4Ld#mt(_6vc#TmqCUjNVciM(D3KoimeC*F1okj_Z@a3N(6Y&K z`b(uA4z~yhHGDP}=F!m)iBD%-?kCDK$~{3x#g};5okp_56)sExIBpjJJPvZ3At^j+Nt;|K zjw-m++=g5w@s5mueNfh7`4;Psy(5Y@RsbX!N=FVg54r+$RdYl#bzV5qa&8kp-Jn1r zkMBU8K^mEy;EjHB)<)JVU4%=}VTWE<)kBthy(Cr(P81z9*cGQlSEOl~e5&S_uIE%m z@|sn}>|eK>p!QWXbOTHEZTn-M=h~_cM~l=ufW6a!U}5qZLclaAdb)`_Ms9TX-9*iz z1tM(${$$bXag#YH{+hPQ8pUc*#Ycvi*g&!Tt~C@u)kjWgmg^Nk=5o0Nv&<;G^(8q! zf(qC$-#>u>hbwMArV~^w$Z^dI7eGlIb2=b)Bw&+Kl1L*cySMfY={s-9bNq(We{}8LBi09RH94L6Fbcwu^#1Y$juyLWC>ltYO;kP z`k2@<1*V6fT|yW)Kt-A^v@0&hhL3NY_fUdQq#S%nDZ&>hGse1S!#ec|Knb9K1yr#u zDU5-J=Az&*l*nnkVX1~Z?Uwo(-;W+t!xeL-!wr@MbLKCmZ%0QOcFMML3~s}~WNFWq05F(or;*%A!I~(UEPMgs=#fNQ1iT^~dGsHn{|zX>oPe-7;BL z1;fqR$CatEs4{@~5Bc0i48W|r4%U|dE2JXW$-fVnIy z|E0vfO1q2y{GI*sLtFJ})!DcDAB8iyxL=8FZ%L7KcY5H zJsA|VBh6S371QCkgL0Ezb^aqX6pf(;4Pke;a-XZa3tXjF3@ZRe?NF~|WdKfGcV>G8 zvhKmv92Spn0J9FkUy)*f{r4(0yuqooL*H?NIn*Dd;UIs1Ye^_281bE{U#wO1k)tGk zIsPi_^&G4wArMQvH7{3m+fe6<(HI2q2+;ps&<|e9SVJt8Okoouihl}ub^(`yC?PDW zxNU3w-%@GEjR~Jq>+Jc8N88L*{Ky>M-hLcRr4RUQjJ{^Aoo+nUae$vt*{$iXhC7*H zBBfB9tfGU%sEFv|!jn<7!MC}B9#>1Gx4C{7NQ3knR&Eg_y~34qMjcIV;!8eG0JqHP z);)qQ$h)|pAqW~E$1$wfQ0P#421f_@!D1j#fUJqxxV3$7xYE%eo=XU z-$Og`&lf(`R~2aF>+ywcXm!QWWCANF1gWxh z_`K@~-S0;if{O+%9 zQ;?;Jfa%=A6aj^60gqIKH@d6|vqS`0L|gsc!QR*#$Aby^?5-}I+cC5T!4wq0^MiuZ z)3}Mnf0;oF76WDyEM7mD=eY1=5FZ}yi8QRA^bh|7<|~M*Mj+(TDK246HU^|*V#;_z zy4CJz#m+CqzCj}`cA2QCrsqe8QZ^6xQ6L@alF7W5)n*IKu&-~O`3$^&sS|4%kastB z#|)(96t*^?`{Vr@PLVc&uMeG)c3|#)2ljDr^f48XD~3ULX8q9N?orkm3|s`q^&l5I z96xT<>7Q;c6$m0m)Oc4Zq)Y|G9LyFp-@t$XA|0SW;rIH^w=$XE{L7$% zRNJYRw&gOm#OatUFl;%H%Z_oyH2&rK1;ddrvQfe`wJ*c4!7(guzJiyQV8^6K+_! zQQxbNDq$dMEraI4|ra zLtLavh8|Njcoo1QZQa?m-${oCR6hp$dtSSBX5)sm9@r8#fQQmlw6fWG`O0~e38r=x zKumugBSv_BSU$ktCa)2fGv7d&ykXsbwS2hR`NM!RXCMo`m<+ifYGr3_1Bd<6KF>!; z67D5DGI}hF)Fo1@1AAB-4ct#6Z2tXA4p)*q8>t9}$;Ev57a`_i{dm+0{N{KYZtAJg zegKLC!NDqDyOPU{dEu7hW%pu}2LDeZ;J-btyT@sH1Yamto)ong5M+Q`X!Z#vnl$#f z9?6=A0r#gd{s+MkbP)FpC<~Ks!wc}iFd!aMkGzU^vnqk)%M8z^V+_1Gn}G1a1)z~p z;y!5(SsaYZ&vGUn{SKG>iKU2a{YreHw{xjPgIO~|?&1k!3kvQz)7V#z3WOsioP~EF zl`hE%Q}_}=AP+RrR!r4HE*^@CG%^dEq;=FOC;(38KrOl!O_PsJ?LP$uru#uiE?lLq zEvlYa-qXi6Tt`|UP(Y{*QLS43!WaSHONJgMg5v;J&1_S&nGbZPN!}^ryH@PYl&0MVq79%1Wo~>*3bZuMXD#L^& zP|SIauDovmAVWaVnY}(RC4dGHgBo3@RmE#oR&HH>SUWG>25Ey_vZqf6%y7V3UlhfU z5C(Jt>zEre4~91W_`xs`Lc7$$D{Lfk1Q1EH)(H}Tv;mQ$q(MYcgK}q&MjRVM?kjSf z1iEPDAe5AHL#glZbPA8^O>^&6X`Dyra!=0qBwEIC`2CQ>)D*p_acJ^#OtPp; z9fbmOwTIJnc+f!Wcgs?{t!$p_HN`)S*~@64eQVcZ;Q#H3Av&Ie6AO7)Z@tyK1#Nig z18dAXc}Rql&_1rRPeGZP5mT7F(ZgBEP1>dOgBm}|a;snE&C^l4LaTr{#5P(<%B0Ys zm;0D1AC=K3!8EzjBPFY9MEqxjh<*G46Y>?T0VvlfQ6cB4VHIcE)0LTb?P@mNXpj7< zQ*);OT@MC&tKcheCku<7GC9hLMpl;eD>9`S@w9RbrA#RLo5O`qkYbgd0TjZbfk}Cv zdWenN?%;*a00ER~DH9N7p-7C~f+p%tz`Mj)LFC}G5jWu8NIw&8)%w;p_9*2Q@QuEK z15qaXwMcpd+O#E!K;#{iWIK+Qjsf;SJ&2$Yq~ZyAlpLYg?t3T6?%3J?oD%zjgBb-F-mp5~htO}9?4Mv;M zE)iJbqXtzvc^H}fI|GvfiCf2qc3G@W#rz!lU7q+{UKNBCqZ?p~ip3wK@$P%*<@;Rs-)=Zk7jsss8* z)nLb7^GR@Sd$2|ahD*HUyYPopDtYSfVJ>L>Rw;HC@Ze7X&lnUd(QW@m!cg>_@3ZJe6t{ zs9G7&VkTO!mC&*L^6N%PQqkznWDS@*xLj4-XfZft~l&IL4K;BXG@lrvF zC77}%^EJRKKFz6%TR!2|5bgq{19BqEBZqV+)ID%nFI2-V2aj|3)niDS0)X z(U?`rMehBflM~GeQl7-Wq!^(JI)GUR+WL4N*yefp>@)Y*pjVz^G23<)IvGA>?KElb zdnIa1m!r$-2lnGgT$NJs%hm@0fLn7E32q80XypYCp3HwjW|{e3=-T21myd!(4?Rre z&fOic^4Zt)SC98Q$Oe<-Xo3Kct3Vnol*FcxeBr2gv zs;aI)91uw*0gX#g*pWP~IlTCMRD1haW)JN8y_~2skhIei&p_2FvkQYe<22N@+rqgo zkzh<@A{wAqG~wBVUcSE=E&f5~1@Ik^>O)dO zP>HPXGMmsSXlamTbMt0-K?A|#27vmJ)1EiOghPb?4lqvVsYlsb<>gq zuyf}y9}6|^&~5gANj`xCIEbCFy5z7*`OA{R{4?f0Eg~@=TCMugghIajrZK3Zj+@?8 zm%Lj&sY4N>IiZq>d!Ijm1Ua&|qhGJPkOoR;VY;tOB6Q-BQR`=+%JL){1Ma-(L$!U0 z0W7{7KvN<~iVOLK0AmqTHTNPGyJgkj(A&~UrLPc=AL)~YnFymYbOzIjbT;IiA5;8i9pWF)fJK_kfYs?7fBBe2#iFTwN^lc zS~Adw*PSsoIsOG{xo85Ck_v}DVGE+Dwjph+6!t_ry{2U^7=?7@3-q z3kX+tpJe9J$XK4Ce8rcze1fLIdMQtto|135;Hq^tfm4JjtdLwKyVO+DW~I;|8+}Gq zZp*iJ{RdL$z6rHp1uR-7IYd{G8qw63ex_o8jfks8ZakVGqHReV?R$IV|9 z1N>SpTu{ON`_@!6h~agIzlc~p+r0OuH%~uF`=b#5Rn>n-dt@%ITj#iv!mdEJQKu?A z1oN@2-~^N_G8T(pjx*`%`Veuyi3(q)ey3U zgA!2EZ_th+QbXbS+2Xe(!QWwY>Ms6IasDIRU+IVMZ$4Sj=Wcwpil6^C20&`da7j=0 z28Yp5uzJ&iZ8DJ}GkISpB;O7i6;Z(ST#1f=tgl`-BEjLBKQlZHgtP;^`6e=fSALHs z$%`E>#7=}quXoyk=j?+~)vR@}!0cvr)ep7L{>xsJ4&tL>u%(7}Qs7c**hCs8h(0ox z$CBqa89{Ar?JzakY6$#D=szZA1UprFRYZ$iCZF=mK~qBXrHm21yZt-;dZR!A&^%XQ zzBZhHi&k`ZPrJlFYA2l8Ns9Z_-x(?MP8NNfZf)>sMW)VVr`%(Yu&QA5^-*Nzh)kL$ zhhW$s73LS&R3O0tg*cAl;=3c;uwzsiQePn0hA26!_n5xm*dB7)T`7jKC*FL|mrj^$ z8sBc+2U9XSO9{>d(4W@T0%nb|AZHQ;5xR({MpB*3V>T%w z8F=$irz@}z?-MI?*&&c1=7D)CVp9+fh>Hu6x}KWi(Q-?65`9AP4jt` z__van%CX(3gYh(ApPy)7J34>vum0dhXm(y%W1|L&Wb@;EeF`A0oo38GHk0(|Gg7kg zoA=OoN40$Aqf{!i`=s}&L(qb3l?Es&m-+Y5mMrKuYPy0q!BfgU?sJ>tdpU|R=#)ib zeGDJkDaE4dLaRes!c;4_IjycI}@T)XV(XWez%TUZb7vmh4JU7$cfPJtYbm{dE&*T1Y4cdFFj|V6#w_+)b~=# z-e+Q_!rYKM2Di@k+lMNKV3XT>L(`L_=O*3 zaE)vvq!|&nGc5eeGEIsaUvJm|tqLXcUdg}#kd10Yh}bYawn`+rcM|co8hW?{9KZoP zB*8=g03^3wwg3_53y#Yi;wSxVEP~H)0afeQsQ?6)>(`nCwu>Fp%HB8t*M_T(AhhlK zGXzjAJATZ;6f7CwNX;0t6%2QVu)_>8km!*kzyJUkNeGQg!&qU4QdmjMbS|EJwy7Mb zT7xTbZ1&08@s`ea8+OY~b!1L0pe<*j%L3E5>bu}tcLSt)mZWU08#QE^{;ZQedDf$8YrI)(6jo%u-D|XpWdv=RNKgd8iem5OeadCC zQ!pCl_rL%E2hKCg@Bjs1jn6N=000B$8Oc2gSZ67A%jGd@ z;32HXa(~n8Lg^6&ovtJ5r*Kn3+3{bWy|&Jfr1mT?g4td%*+R_WYJG^LbNt$xK~_B4 z4l^<;Xhcd~@esM(6k#P10C0TXPL`!?2{Vd8l% zky~<(+YnE3JIBM@L8Lo48nPq?b@( zLcJ7&-LzSgz~(rS!6g-t=3<*9m(HfK@AbFONl`rxZi)~sL-Q(%1*dU23V2K(GwIz{ zrhls>%;ahheid^-`zJn_VJ!l^1?tEyw{;{?Koa~vF7?eMtGW8dp&pfSVdA4lX++P%g0 zDPFsjY@U(K4K&U++#m-2%)t%38nARu-X|kjtvi0qNH05R_xi5#m#48*5JgN-zKiv& z61&PFKzB?^aEISwfB+kw;g4DX0B#&I<2eif00`9~LPpnalMNA|0+k^yNSp;r+lik>!;f!`uBF&H^6k9W5{h(()9l;G@s8M}DmjO6RBVY?h zP8hQG`rgqN&=#D}Vp3F2-?7|Cp#sylqkM!*$R_nEACf7QUZ+w8pcbiJiI|6b?vo7@ zhZ5qlwL<5P-ZmK3km6i>R$>S~63S6SL02dt4SlRUr^^e=y$mWTREuZ}HQQ+_Cvnhb zx_14fMpf+rY3Pc?i2RqtqJOI-&-G-P{;ZQcJeMb>+N(`Vi29CUyHsoBW8zC2Me0z$ zsRa1Z_UqTAy@GQd6>8q1A!M2kkmn)Ad$0LdvBbem2(BVB->{Al?381oNv?)EP;apP zsj>bvhD}jpk1eGy6MT2IGIJ$J>suM;KtFEu_OA8as_QCq0Sd${smuJFyIIZpZBGYC zCQ!8e3NtY}(<6J1ms@Y;=nOdkL!n+}F)9(cRYdWh&UWB0z;B2~svVi#B&JM6;=nRrX9S zM$kQTU4Xjfy&E~uRY^b*9He06dv;I%2COy%W6r7t`Un4PUf0pqXw1rZk99Wd%194} zhRPDm-k}aWye+#xHIE!7sShmMs}kI2CkMkyz6b$g%GPowRB=$2{|iCBAZtH2O8|g2 z4N`t_%3j`QlumAI?%irN&nhuNro|!IK^)zzBxrQ^;<3>#IaT%E4o!^Hh>i6spd17a zcMkDKyf>EI9zaWgjBq!?4wt;Xyl>@X1LeYqnI;#n(>=Eowg$RE0 z8i-s72itgx4@K62YBSTLAo86Zw+ILj2I3t>pJ8-f4}XHB2nRH0y2Ko(JhrEh88ZDE zdhWwL5vPcc;8=X?kb{6uI)!!4yO!G4vpsv_O8h`)ub82E^lWHcDIp^Ua2XehEpVe= zOo0G+01*}e2@r??94VVN`Q0XeCEQib;uH1mk9DzsVd3}n|MZn5-|s)*Z5_xzFaEEs zUSgrAfB%B(o}~Wv^Z(>y&HvTTl-@c&sXi6?GrF^T|AI&V2hz2m`d#=o%XoL5-|jtG zb8dPf{;KrZXb8 ztW?;+ay_V=+Rw*&;Oi)mS^lsmc&+|>Dr(ceXjdiUV}0hR{;Qd!Qx{mwd8-az1p4;z z+8BKF2OW$ULF(Sf6g(mp08Ro_ynrHBAP6rv@CsX}kOcwa`+zrK$6Mf3gww60bA*lr zxZ9dRnd%-L)&_4YkOGpG&92d*?~Ox-BV+d*V~0wTwM$+1LXNj*mLl`j zqRZ1X$@TGO+wcSL?Fl6R8$V7(oh|MFG!Q9T0gw@&$pX1*65c>;es#d6)C)!&fmYqn z!1>D52Q2mSt+UGD@)?7qz9cMxV%8zPL(tzL=x>npH^_xR{M$8MvUqNcB!OiCKGJr+ zd_jbR`&yx5RR1WGO;BtsSqZKoWuVI>kTinV6Z@;rMijc*7*#!O04lUL;4lCH000A- zhyr)j3yExekT}*F*3bAO>yI^Z4Q)V$6bICYkRaBP#J1tJ>9j@9rC8(TIF{em^}I?w zskeiOZg~XRm9ifqkBiRWOcV;Cym*<(Eo?X#7}&HY9G$SWTYWEI$T80}{!9?)4Zup! zazZ^|Uv$#Kff_nTNaOuSv^yjK0Wk@*j*rAs@~n&wT>P}?0np9YJ1%NDbTd5fd1^=xmX`WQbPKci=)JC6!cKNU1CkHz3-9T z>1<%pw8Qz6bYR-34>OY(=AQmSw${}VnwQTQmy{01Q>@gBG2w`5>NLftR9dpTrr}Pq zMhc}Z2zptv)xD^4#c$C(XEro?HWh>JbBrB81+{O>)kUsoq@Ae=_-gO(pZD*zEBdC8 z946^)Q2;vMsv$|JaDmYJi>zwIx2mdtH5415R^__!a7GYm3pb|7KI*B#9Qgjg>ZcK1stn1FSEy=Xj zRvRhdSaUNFl40N+@2mjVE~@|l6^C1Mpv;`?*yP{)`{(`r^Zx$%|9^g-c_N4RdG}?` zzpy}sFy>Q$02QRP2Ji3VNLj@}yjDG|=spPfO`Y+IFPE@s6zCWE`DZF@4OO?KS_!c_ z^8DEHyYG@^JcQn%aO_KKk<(WUQD))b+^dF_cXT=Z-xmZQ=97c#9>DOy=EDgbXpfu(06 z4EX3j?8YIo4&2LT7eD|o#U4jpkRw1Gy^d4px_mAfb4^@VY8Ma@Z;kFH2bpM{wPfux_WuJi$ zU_|VTilM-l+s3q9WR8)@5@AdvKMLKD(5W2kmCY$L=l@;^520cQ4&1+&{WxNsq@gxm zr2qA_j$~9UTvMx_j;zV7O!Zhx?WlF&%=6alW=^2Dp^31Vn);Y(!v*4Znv+@tOs zO5t(sO4SPuN=^b$*Hh`Ze+g#G0c*@A1pUlYiC|fTwF~4NG07+zT!jGp$BB2J1069W z9Llv;I@YRk%zvQH>OlB4Rl6)9cVN;vx`d6e&5K-7W;h6-^>>}N%TwOyuJg9pYJ1%k z-get9PkW-f&7M#>DAvZCz0v^RkN`Sa`h}bO=2mjjd zBj2DwcRBDsf&35T?xHFdUpUV*G1H`pb}uXVlezfitq>fj=w7A;B8#5@ST9X2*eEYo z1Sk?>k4~#hxVo543_P>@Pu(16?yCKk6Gl#Ch1NB*-exb1xG(R@_v7gii&_i-an$#^ zE4=NtTAuescb&G&Q{L#V^S0S)d&G6BPy_5}(bxx+2lr;}%E2e7b`|~HM@UTZo?r`c zOs~rNVRm?6(q!Eng$AG(;~0o2*MYXN<&suH=a^B!RAp#6SzI&t@fa4K+B=J4_703hu?|!JzgHBx4Ku94UN>aObZ1TS)0LZjLi7(?+m4>%LafI!v3R zn8b}5;i>8BA<{a;laM6Bm`HvVyCI=cIlDUe(mKSGj~2>NhAuwg#F6jU6;}z0REJn# zv2cM2LU))W*p|vbwS+T=!$@9WsIk|f44_OtDE1BifVmLN z&Sp86pXb-^O(SF41mc2H8r?L~q2>toST9rnO)B6&zM-7RAa9`e=2;|-BeJ*v{xm;M z)kpZfGV=0>_j(@dbo5nSkNJMn>>zkdco%m? z{fw3L<0uIvD~CNA00Op7N27E+klTE)daPK6QfeP^(X#|SrG;*;P%v1=SGX=Q{1*mz1xu-k5tU<PpD_EZkz4M|Ep ze)-AFK*Ug!m-?~mfwJT{IL+Q4+k*b|Lxws+aockRZxJ z|DsOzyNb4dEPRP2pje}ls(ci06KJN;l|3y@T@ve=aS394ikHF`WAPO8T=-kRyIx=+ z@}%a|*wNjc3$0k8Vrep>xTrr+FTJC!gr{icC+kD=C7O=>hj?&xd>=2_%dV;>S zlEQOQ|DIk?oKMahgsb5SmT`3U*xp;faV@!>8Hq?WW8jb->L%P$h<&7D_AEgKSPIYg z-q`a5<$=75^ZWm*ep8U?fXY4wINPj|K9gmy)AoQrKW#|+@C$M~QO$MYG z<_mjrCPlmO)eGa9vvtX`xGf<&3XUkuyWkTMTiMhN8un#@?r>f66dBJ}4jt|98X*^gL^?7mNyUc~QGY`K_ zUF+y#+0XiKI$EghR<+^ND-L;i*Q#?47ynhV7-t{9O$Fj)$Q?g(7YeY9u99&EM`yVaEK`B_{;kBMmw+}a3fIF}Zm-R3ddjx6N8?(7gc zf25n@NW@du?^y3$4uY}}?ewt2Xsk6hNr-P<2^1m=OT70%#|gF~Rvd6Zao|46RoL~; zw9)DJJldELxxm=i5-TksVC1ncxl;6Q!58{l*Ku72GV5UP`0tL}8}8L1cRGr(GsVZ-p(G@zzS!Dw3Te-s_=->HDB!3YOEg6{lGt`p zNrA0P6|K3nHUs6Ll=f4SLo#bQi6R_nonUe~!npSJ)k-I0X|lsbJmf(`aeyfYZA0tcKibRezC|KR&9{}I z`=TPeC;>6H&W{;?#9M9Vi1%NV5eP5W0+Jmg1#B+-&FUF(&!2ps8Dc0KTVYNTnDQ>( zi(8HFp){f>0Y;9xh-;yvew@BraAa2*{k1W$*JgH`H{2ey{2qUxX}Od4#K}qbo_8e+ zlU8v9T|g0QbiqHSh%~vu0_t>%(1)Tv#i;hQf zH+1qYt9^5NTycocvO}<@NKCyk*z(qD)yDpiiT|=ijEjM!ar!LwVss=kkAtMh?ctI zl_qRosOzqTms7|hM0Ym%li&f?OOUq0h`6~xYSp`t(`nv@{r#&WjUMyvN|7Z1gP^jp zPTemIC%Md;wIxzoV5DiLGn37a zr@p1lCz(K+-||wJB;&3A06Us$NaZCdw@(LrO`jr;QqssXgXnSu+;kg}EWn*On++W( zHMt2#bqP6&`FOs8&8_y*$c;y>!PnmN<83eaO;qOn+`;HdVKG<$1n|F+=TPidy%B`7{ESQg_@G> z$c1nwE+hGGS9>KyadYl2!D;RRILSS%&CeSO$R;Ai980(xwnSCkHsQUww|r*<=z;-N z0zgKES}+swf(p?J#`m;tu5zRxw77Do;W1wIq?x>N!=#M+mF}y~$@Q^i#U7)gZ5DEF zijZvmV|XRa_XY~@*tTukwvCCMiOq>^+qP|6lVoDsw)5us{m*+oo$BlA-L-aMq4w_8 zy{hh#$+b01&Oaw)j#Utg5zeF8kfp|`2$r-?&f%4AD6iM|qQa^qk3Q~JQ0+iZzt7kN zJIGAQ$6;IeJp#7Pg(!c9tWb;91QQtJfLQO=${^lus5_s(8{SS(>F15S7k-xCzsR^t z0_&+HwSZ6QyK}w*J=h45kzXao0=b(7Ukx4+wfyW~cPW0k-`!||#X=BLloW0kS{x`g zs^q>nS;(1f5CuQ-m=jzN@#uG%jaN>^0=-_dvfE_r{H3F*&9G~WtLWCIXa(iHkYO2* zSlbZ8T+zW;Ggco;#L4UG;VG!K3N91zH_qdh$~jxmxuw@HuTr1%8QS1I`3n=hE> zdu`V28`mi^G(JunlW2QfupUX2<;gIeiK$qKTAy_ZT}&-SU$uu8`SUzVVG?9st3j!7`x>zK6&N&=YhG#3&DtW;3~ zK;fJ^w1Os4^`V!K@><}n72b4<*QjwcXefyyvUm;l`Xr<~&Ke+Fh_Ds%zmQAKzC4(Z zha;B5%dI-`OoyK;d=JNQKnZB)y!8pl1Z z6C&WsjnuG*H(NT%(>~w(I7-E*H#e%ZwV@!FCj6!{;=ZO-N^T}fatQTH@|)wn*wA_? z%6ju`y3&Ia_P;-AE$u(sZTbB}Bv?^|CB%x?a!Jj5*R`_pf-vcEFCzS6*Ad zN#!5xg|u>{C_eF&W>>GgY`@ttlhF;HkxU`}^>XSImzt$*HE&YX2a-?4Mj0?bE!vrs zGxck`m&1<{65zduqLF81X9@uqCiL#}H z;EInj_>~?F9MpPlp3D;nht0i0E5){_8DR*aEB*>Pj3y2DEVr=JM@#WCLKy~Ht#}`K zSRS(n3Ntx0+>PG;NCJo3kp;@!LdF^YxCL=}9v)Y1B?jF=-OaMONe>~}ZbH_-(pVZ< z1^0E(?7$4<@K~s`K3gqt72Qbty*tYLTkqCRD+(b@;&&k$iAn$m2W3l3mk>YJX?YGE z5ZXROiY2w`3E-aT?*8Sydz{1*X0!=pZsqsFdMMi=IeWLibqU>J((kQN64P1Ln>fa^#BGgao? z8LuIekpWK1rcIG1RKU!VCW#OvS#Z1M^&HH+>Uo*QuE6@)vT&dw+FR1+n*apl!D+SY zB#gtX5I&9{IzQ2}KGYS0L%eOOSm|mf(0d^m19?Ofx))YS{U&Olb9wG^G7_S2Lr$ZI zr2~!9&Y5<48u~cIdi-apwf91{kclg%Hp=5cjWe^O98kdVm#yhu)Y5d|28YZocgOtO z{8ulmSRVlK!!_)0Nel>Sk8D?Ko}Mh zoQr>xPk|*9xKwTYzVXn1YqR?Sf%L(taP^Oumoc+QBgP8ISfd7S^Ds&qnH1MJdTk^t z!ls9Q3h(*pHmw{{7G;I+u>uGg?b+Jy;4D8bK|>fFVsLzIf<#1Hw4aN1aD${!kG5l< zE%s3BACGq%8~|WNAu!4Ky@`@C$V08l7z(s|5$l~!d8PA-RYvQuZFo1P+YIrFqkI}( z4Cn-t_Ywl-a|AdHAb%j3u@pzLNs}F>lMW$r{=OWy>+%NUu!V3IP$Cdks};e5czru# zrj`Yaev#aOtcR;1X25Ga!vh6YMqjXWnX^POURkqH8D`CAeO{^k0`1KM7@u74Jai&_ zJS3>~JKMGQt_s<2IuKA{zE}Fx(wO;IR7DFVyn&zLR~S8BNz7llAr=SLC@9qiM6iG**}v2>*O`d?dLD z^F>4n#Xz}v8=i&GkMhvTIUf+5>jI?oaa$tR;6)JM=!s%4SQ2*SOE>8wMeg6}N^gR4 z#bt3S<86LsYW&XM-rF5)?+l<97l+{JEGO~)iBm6B{!xqJk7_HVb+c$tAAJ$$CMS)3 z;R;Kz^#hx~q4Z=XIVIMZb|7E4CjXd^bSmrS)Egsj>qy3-nN=?~q;I&3bYu6J<+=j4 zEHB`&9w9%;z>8I<2!7ddl^6>-W4^@AJHz0221d1s`wh0C%ciKGY!7cvwKlTG57C~O z&-Q9WN_AY0?>><^3iJa*RXf{pWqQYKCnYca@_`lOt@bBOnh7p91O!bVlgZVao-Q`H z``13^)HL&nFvoz2O5yjxef{YsjHGZuo|KK}t}PICf#LN64H6nS_7-9Ds&7l5ytJoe zCYVdab|j$>!YsE1+)C$bI0bAqFNVM4@A8FTTR?aaNI4Dqtx}w@6ARkySMHKl9~zMS0qbrUU2@KDwILWimxwo-KI#apWwI9 zsfw&t>nOG(gb83DgPr*xql{-`=ruVoDxt2@aA}V}8~AoD!R$G-)xq%wdf%c6rt}`y z6NQSQ#RkC`Q@@~)H);dd2@&P{#RqTUrVcPT0rPErjtZf|J=ib)JGsQgeR>IgyY#P3 z_wU)VP&utncIa@s{AJ1Y&nu?Z!Uhfx9vj?KT)?(F&=soWJ#Uu^&zKJyAkx^^riZS= zO4;AZsC2DVa*h2o4RkE`BQCyaYJCIuO&Glh0PvxctOtwGRSfl@j5x-AlJh|1fC+DX}*1{IQLXGyEuQiI_-(XNXylmtAUH?o_W9+ zg>J+L`Tko=WxxF=(ht$zrwFTgg149c)Vjt-f6I*!F0BZY4!y~{R|Uy$rs!!Cs2WN{ z9G$JwTxnRj9WAy+4daQWQLzp{DF~GRKKxv!ILF&R%RPvC?XZ`laQO8eM43^~mGC&| zNd0aj851x79*u!X$+$}>8N-``H*wM%r$5DSb>3tYw7kC|C>QM6EF>djV1(B-W;E5J z!2Raf?iU^FBK=9hNTOwsP`f0-Z@shX0rk*RCB2ZV(ZRs@p)7M6BvRbpi@}W0$Z>>} z|E-^otw$+IPwQL&sOkH2S#XY${qR38zVu7aW=zB7*K2!;yvpYYk`O=7u*lrG4P1v_26Km&xDXUBQ}+LkIJ%7+T`gS>Wky_efVc8<#W>U1M2y|}fAYk>HDELr-w zl@XI+TM!lBH+?I1uD7_SS;%9_f4tNBR8nh)w)olgcgb%!J+Nj0Y_lEuDpv1QIqOg7 zd#dO5QZ6^!SDdvbpio@PACL#A_W_{(7f$90prg1O^6)IgYd}x^{_1cU-dq0L`PK z;cHPRSn(#6g}5UG*2?!qjq55S&W~G+)r8D5CFH$o8P!Zd#Q`fEr~|GiV=jFhR$R!y zlWKBLd_7Fpa?|!ORrclNpv8IPu0@>CV7z)!KG)y_mz0pt=5{{)SJ2ZI#p_(#nC8Mo zqZ*w359w&Zo$%$xg6B(L5}R_qHfGb@mErSFrT-Y5c$|uJTe{L8?^2AzxC}D$c}j zdrTf7DkYw3(%keHG)X)2%2v)8wbHAUR2+Yx{lLQW6&D4H^NXU$-go{;%SGv*N4ZG9sZU6r)1W+w71`-pX)%x*iSaFapSOI6>ie=ysT!t zw2PM>o2KB3&Y&fbb953PGN$g;Qkc4Cv?8ajYEKdwwMZboNanU7B zLL@<6{nqv0*pF2tZ}&%I@p;{UK2!>@7Ouj=|2hHyh=@OygE*=J#G^*OLCA{i4llNKVQq>Y=pM17h)Ir=Bt>GQ+?(!O3lNZRC5Jsl=+YXA zCt-u4DJ};EVxZs-;ylq|fjw=;Gk2-v;0pxYPU>%HzjAshsL&12Un5##D6B(|glJH5 zs8nsJ+;?c|6QMmyEWd8L7r zwT&CPUI}v7&DE^5d(&8S{vkP+noIyK zV-02y1pZt@Kg7sWm_2Ntu0NraGM*JEz3S{7l~=X90DH(C{8J=}+OL>_HPVs%GlKz! zCFX1TD%PN#&X7+^tee^h?HU9e_*>nQ0>;)}ac>$l7i)hrYPnS}9qZ0eAxJSa@x4JL zy_NJ)F`?pYCt5yFm_qqeL6IK%v{SzbR*ngB*Y}_tnQL%{EMNkW8z#tj9@H8*zg}sY zikqpE&?dz7!h9pA|5_i%qr;`nx?F<&(`Su~{YW6Hm>*;Ie|l z8Di4LycYiEv;l2ndzZ6h2I8m{<<_NI0OPP5v>9E$9%fOuesk3ukUvUzHXVh z-*?v{-*XNa-`{U+UnRW?_ut>w-g}jo)U{tc9txu})@q@?jo+J?{?}Z&j9~JF?qjj$ z6OWJHt*&03rgsEWv*w*)6GkKlCJ$K4<|Xo~GMh$44}8voV+9o<=RITm%Q)i13Q0t} z(FxwrSYR@nK9xj5sWg@arIQ6P5kaqtNXnjsi%R47rkz$-$`{vo8QTiKGXvqgI&k}O zH@cZ9xhF%0BGK6aO@G5Xy^w@WOB9O@_;fm>agYox*(}KM6}wJ>#=6a(E@1vQyXNQL z3mo%rA2R9Btz=Sc%eW0hM5 zCY2R#0V|-)VbBCGSHv@oX*+W{A{m!MB7()*ozWVREctkHCKuZtNwZs;n*>RXy+926 z06xJJhkWE}D$QY-_MQ7^ch{hl%s*zB7eGK=>vC}{Pa!Wes++Klt>yw_qkdX2Ej#2FPJt$KcSR8s8s8gQL>jc0(2WJIj_MKNJ)nEuE9pk(0U3%0@ z6lSE0gLFTN4RbIJ=%f@=lp|c~q!Cp;;a5k#h;A0iq*!b;YIj2Z3sNbPSEpCvpFjyS zN#J?oQPF7(FR!y0^^~nsV);c#3h1xAi#LlCL#N6O!^x<(El_KK<4TQTXN+B{`LxtO zTz3ywKSioU+%Mx+BC@E!CVry4#A-PUXDdr4UKG|;^C`$5f|~hc?0117v(Il6LLoTN ztoPlTdXfD6@rytFdenAi47~;}HWALXOlWui>&u>rY?YLxI3Sf93nC(OHBxF1%=#N0 z*C5WOgJ|~27hIp>2JwiPw$!%g5ieQS2OJ4=`KMUKUZc&_^)#n9{e{r#{bU$t4Hnrf zNWElqQ#6G6KdHDQ#lqPMTFBqOy!!s&_S?qjk?7_+BCow%n!eDarJ8vya27GI;s4Ds z6`oV!ox$AWS+UKVLKB~z2@%?>+{as!`7^-VfEw^c1JZb$0Qfq{HMf(Cq82MvLhaI4Gx zpL8A*K@rwwjF?~>Wrr!Bd25-xe@Awfr`2GB3CybXD|oVsv6R{?vnuZQsAr*)0`21_ zk9?QGVpL0AdOU|(KVPQ@C_(6tHk|(*hg({UoBamm+wS#4$J#1af<2SOhnNwiRT*$Cs3RKUv&cj&a{wBxV} zwRd^FzrBP?t81`4T)%lrZ|$kV!C!{!P4#+Xz{`8mqj%C|48Ua`>^IC8=p#czz-WeefEVCes2Y}oY zl~!n$lG?ehIFOhPB1--H@>eQxfnGpm<-0pA4JyE630&22`iDkf&;GTXR2=6^9eaH= z;5CFO6RZA`Qzm=hID6Ee-IDA3iEki?hNN5IK@JEG58D^gn1BM;P5gnPluuDFqPz&B z=Ha}JoxDUAZ?JGI=x{Y{`JqH-ev-VrU96| zeA<()M6t8Np_Lc(br!G(3rWS>`JGNI+2HDKpjy9~m7WY9Ob zk}9+QT!Tl4#B=72YIOFV8f@MiR;1&5dqgPo>m#iaiCH+GIk5{(UkZobPOcGpkiPg6 z@Le~;e+?`*d*VSMCR$^ctL71K?PJxE!8XjrPN8~$F>SA{T|x#2<{7dVz%$c6(ec1Yre&^nH~Jc5(0V&f$B90n1M zRfwV_g>{m0V%c6t4J`xSI@TG

&g5<;$PoY6%@m-&aOO2!hZhG^Jb#Tzu)-bHSCb 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%0A3{t^S2)Yt8@75EK-6>iP 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 @z^lOZ(Gil(}Mg@;J~pv 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 literal 0 HcmV?d00001 diff --git a/docs/deployment.md b/docs/deployment.md index 91e150f..f65e1d1 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -34,10 +34,10 @@ helm upgrade --install runmesh deploy/helm/runmesh \ --set config.corsAllowlist=https://runmesh.example.com \ --set config.artifactRegion=us-east-1 \ --set config.artifactBucket=runmesh-production-artifacts \ - --set images.controlPlane.tag=1.0.0 \ - --set images.scheduler.tag=1.0.0 \ - --set images.web.tag=1.0.0 \ - --set images.workerGo.tag=1.0.0 + --set images.controlPlane.tag=0.1.0 \ + --set images.scheduler.tag=0.1.0 \ + --set images.web.tag=0.1.0 \ + --set images.workerGo.tag=0.1.0 ``` The dashboard reads OIDC and API configuration from a ConfigMap-mounted `config.js`, so the same immutable web image can be promoted between environments. Credentials are rendered only into a Secret, never into the ConfigMap. Probes, resources, HPAs, disruption budgets, restricted security contexts, rolling strategies, and default-deny NetworkPolicies are enabled by default. @@ -65,7 +65,7 @@ Annotate the chart service account with the `artifact_role_arn` output. Install ## Release and upgrade validation -Tags matching `v*` publish control-plane, scheduler, Go worker, Python worker, and web images to GHCR. Every image receives semantic-version and commit-SHA tags, a multi-architecture manifest, SBOM, provenance attestation, and a Trivy scan. +Tags matching `v*` are configured to publish control-plane, scheduler, Go worker, Python worker, and web images to GHCR. Every image receives semantic-version and commit-SHA tags, a multi-architecture manifest, SBOM, provenance attestation, and a Trivy scan. No `v0.1.0` tag or image is published as part of repository validation; a maintainer must explicitly create the tag after reviewing the release checklist. CI lints every workflow with actionlint, validates Terraform and its mock plan, lints/templates the Helm chart, checks manifests with kubeconform, and runs a kind rolling-upgrade scenario while a workflow is active. Run that scenario locally with: diff --git a/docs/failure-modes.md b/docs/failure-modes.md index 62cb1a3..bdd5132 100644 --- a/docs/failure-modes.md +++ b/docs/failure-modes.md @@ -5,7 +5,7 @@ | Broker unavailable | State and outbox commit; publisher retries later | | Duplicate broker message | Lease compare-and-swap rejects the duplicate | | Worker crash | Expired lease becomes retryable or dead after attempt exhaustion | -| Completion response lost | Repeated completion sees the terminal task and is idempotent | +| Completion response lost | The durable completion remains committed; a redelivered dispatch cannot lease the terminal task, so user code is not rerun for that message | | Scheduler crash | Database locks are released; another replica claims work | | Redis unavailable | Rate limiting fails closed in production and live WebSocket hints reconnect with polling fallback; durable scheduling and execution remain unaffected | | Artifact store unavailable | Worker reports a retryable failure | diff --git a/docs/release-v0.1.0.md b/docs/release-v0.1.0.md new file mode 100644 index 0000000..9a24791 --- /dev/null +++ b/docs/release-v0.1.0.md @@ -0,0 +1,23 @@ +# v0.1.0 release notes (draft) + +This draft prepares the first RunMesh release. It is not evidence that a tag, GitHub release, container image, or cloud deployment exists. + +## What it demonstrates + +- Durable, dependency-aware DAG execution backed by PostgreSQL. +- At-least-once Kafka delivery with a transactional outbox and lease-fenced workers. +- Tenant-scoped OIDC and API-key authentication, rate limiting, and artifacts. +- Go and Python worker interoperability and a live React operations dashboard. +- Reproducible integration, chaos, deployment, and local benchmark checks. + +## Before publishing + +1. Complete a clean-clone Compose run and the validation checklist in `CONTRIBUTING.md`. +2. Run benchmarks against the release candidate and commit their untouched raw output. +3. Confirm CI is green for that commit. +4. Review image names and permissions, then create the `v0.1.0` tag manually. +5. Verify multi-architecture manifests, SBOMs, provenance attestations, and Trivy results. + +## Known limitations + +See `CHANGELOG.md` and the README limitations section. In particular, AWS has not been applied and benchmark results are local evidence only. diff --git a/examples/python_worker.py b/examples/python_worker.py index 12b7d50..7aeba38 100644 --- a/examples/python_worker.py +++ b/examples/python_worker.py @@ -8,6 +8,7 @@ http_endpoint=os.getenv("RUNMESH_HTTP_ENDPOINT", "control-plane:8080"), api_key=os.getenv("RUNMESH_INTERNAL_TOKEN", "local-development-token"), brokers=os.getenv("RUNMESH_KAFKA_BROKERS", "redpanda:9092"), + group_id=os.getenv("RUNMESH_KAFKA_GROUP_ID", "runmesh-workers"), ) @@ -28,5 +29,18 @@ async def notify(payload: dict, context: TaskContext) -> dict: return {"delivered": True, "idempotency_key": context.idempotency_key} +@worker.task("examples.slow") +async def slow(payload: dict, context: TaskContext) -> dict: + delay = max(0, min(int(payload.get("delay_ms", 200)), 30_000)) / 1000 + await asyncio.sleep(delay) + context.raise_if_cancelled() + return {"slept_ms": int(delay * 1000), "worker": "python"} + + +@worker.task("validation.dead") +def validation_dead(payload: dict, context: TaskContext) -> dict: + raise RuntimeError("intentional permanent failure for validation") + + if __name__ == "__main__": worker.run() diff --git a/gen/runmesh/v1/worker.pb.go b/gen/runmesh/v1/worker.pb.go index 1a1268d..781b71b 100644 --- a/gen/runmesh/v1/worker.pb.go +++ b/gen/runmesh/v1/worker.pb.go @@ -1144,7 +1144,7 @@ const file_runmesh_v1_worker_proto_rawDesc = "" + "\x04Fail\x12\x17.runmesh.v1.FailRequest\x1a\x18.runmesh.v1.FailResponse\x12i\n" + "\x14CreateArtifactUpload\x12'.runmesh.v1.CreateArtifactUploadRequest\x1a(.runmesh.v1.CreateArtifactUploadResponse\x12o\n" + "\x16CompleteArtifactUpload\x12).runmesh.v1.CompleteArtifactUploadRequest\x1a*.runmesh.v1.CompleteArtifactUploadResponse\x12f\n" + - "\x13GetArtifactDownload\x12&.runmesh.v1.GetArtifactDownloadRequest\x1a'.runmesh.v1.GetArtifactDownloadResponseB5Z3github.com/runmesh/runmesh/gen/runmesh/v1;runmeshv1b\x06proto3" + "\x13GetArtifactDownload\x12&.runmesh.v1.GetArtifactDownloadRequest\x1a'.runmesh.v1.GetArtifactDownloadResponseB9Z7github.com/samarth1412/RunMesh/gen/runmesh/v1;runmeshv1b\x06proto3" var ( file_runmesh_v1_worker_proto_rawDescOnce sync.Once diff --git a/go.mod b/go.mod index 9cb3b20..c7201b7 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/runmesh/runmesh +module github.com/samarth1412/RunMesh go 1.25.0 diff --git a/internal/api/server.go b/internal/api/server.go index 81682bd..6586a3c 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -18,13 +18,13 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/robfig/cron/v3" - "github.com/runmesh/runmesh/internal/artifact" - "github.com/runmesh/runmesh/internal/auth" - "github.com/runmesh/runmesh/internal/live" - "github.com/runmesh/runmesh/internal/storage" - "github.com/runmesh/runmesh/internal/telemetry" - "github.com/runmesh/runmesh/internal/workflow" - openapispec "github.com/runmesh/runmesh/openapi" + "github.com/samarth1412/RunMesh/internal/artifact" + "github.com/samarth1412/RunMesh/internal/auth" + "github.com/samarth1412/RunMesh/internal/live" + "github.com/samarth1412/RunMesh/internal/storage" + "github.com/samarth1412/RunMesh/internal/telemetry" + "github.com/samarth1412/RunMesh/internal/workflow" + openapispec "github.com/samarth1412/RunMesh/openapi" ) const maxBodyBytes = 1 << 20 @@ -230,6 +230,7 @@ func (s *Server) createArtifactUpload(w http.ResponseWriter, r *http.Request) { SizeBytes int64 `json:"size_bytes"` ChecksumSHA256 string `json:"checksum_sha256,omitempty"` TaskRunID *string `json:"task_run_id,omitempty"` + WorkerID string `json:"worker_id,omitempty"` } if !decode(w, r, &req) { return @@ -238,6 +239,13 @@ func (s *Server) createArtifactUpload(w http.ResponseWriter, r *http.Request) { var upload artifact.Upload var err error if strings.HasPrefix(r.URL.Path, "/internal/") { + if req.TaskRunID == nil || req.WorkerID == "" { + writeError(w, http.StatusBadRequest, "task_run_id and worker_id are required") + return + } + if !s.authorizeActiveTask(w, r, *req.TaskRunID, req.WorkerID) { + return + } upload, err = s.Artifacts.CreateInternalUpload(r.Context(), p.TenantID, p.UserID, req.Kind, req.ContentType, req.SizeBytes, req.ChecksumSHA256, req.TaskRunID) } else { upload, err = s.Artifacts.CreateUpload(r.Context(), p.TenantID, p.UserID, req.Kind, req.ContentType, req.SizeBytes, req.ChecksumSHA256, req.TaskRunID) @@ -259,6 +267,24 @@ func (s *Server) completeArtifactUpload(w http.ResponseWriter, r *http.Request) return } p := auth.PrincipalFrom(r.Context()) + if strings.HasPrefix(r.URL.Path, "/internal/") { + var req workerRequest + if !decode(w, r, &req) { + return + } + if req.WorkerID == "" || req.TaskRunID == "" { + writeError(w, http.StatusBadRequest, "task_run_id and worker_id are required") + return + } + if !s.authorizeActiveTask(w, r, req.TaskRunID, req.WorkerID) { + return + } + pending, pendingErr := s.Store.GetArtifact(r.Context(), p.TenantID, r.PathValue("id")) + if pendingErr != nil || pending.TaskRunID == nil || *pending.TaskRunID != req.TaskRunID { + writeError(w, http.StatusNotFound, "artifact not found for active task") + return + } + } a, err := s.Artifacts.Complete(r.Context(), p.TenantID, r.PathValue("id")) if handleErr(w, err) { return @@ -275,6 +301,15 @@ func (s *Server) downloadArtifact(w http.ResponseWriter, r *http.Request) { var download artifact.Download var err error if strings.HasPrefix(r.URL.Path, "/internal/") { + taskRunID := r.URL.Query().Get("task_run_id") + workerID := r.URL.Query().Get("worker_id") + if taskRunID == "" || workerID == "" { + writeError(w, http.StatusBadRequest, "task_run_id and worker_id are required") + return + } + if !s.authorizeActiveTask(w, r, taskRunID, workerID) { + return + } download, err = s.Artifacts.DownloadInternal(r.Context(), p.TenantID, r.PathValue("id")) } else { download, err = s.Artifacts.Download(r.Context(), p.TenantID, r.PathValue("id")) @@ -307,6 +342,19 @@ func (s *Server) getRun(w http.ResponseWriter, r *http.Request) { run.Tasks[index].LogArtifactDownloadURL = signed.URL } } + for attemptIndex := range run.Tasks[index].Attempts { + attempt := &run.Tasks[index].Attempts[attemptIndex] + if attempt.ArtifactURI != "" { + if signed, signErr := s.Artifacts.Download(r.Context(), tenantID, attempt.ArtifactURI); signErr == nil { + attempt.ArtifactDownloadURL = signed.URL + } + } + if attempt.LogArtifactURI != "" { + if signed, signErr := s.Artifacts.Download(r.Context(), tenantID, attempt.LogArtifactURI); signErr == nil { + attempt.LogArtifactDownloadURL = signed.URL + } + } + } } } writeJSON(w, 200, run) @@ -457,12 +505,17 @@ func (s *Server) revokeAPIKey(w http.ResponseWriter, r *http.Request) { } type workerRequest struct { - WorkerID string `json:"worker_id"` + WorkerID string `json:"worker_id"` + TaskRunID string `json:"task_run_id,omitempty"` } func (s *Server) lease(w http.ResponseWriter, r *http.Request) { var req workerRequest - if !decode(w, r, &req) || req.WorkerID == "" { + if !decode(w, r, &req) { + return + } + if req.WorkerID == "" { + writeError(w, http.StatusBadRequest, "worker_id is required") return } if !s.authorizeTask(w, r) { @@ -479,6 +532,10 @@ func (s *Server) start(w http.ResponseWriter, r *http.Request) { if !decode(w, r, &req) { return } + if req.WorkerID == "" { + writeError(w, http.StatusBadRequest, "worker_id is required") + return + } if !s.authorizeTask(w, r) { return } @@ -493,6 +550,10 @@ func (s *Server) heartbeat(w http.ResponseWriter, r *http.Request) { if !decode(w, r, &req) { return } + if req.WorkerID == "" { + writeError(w, http.StatusBadRequest, "worker_id is required") + return + } if !s.authorizeTask(w, r) { return } @@ -511,9 +572,25 @@ func (s *Server) complete(w http.ResponseWriter, r *http.Request) { if !decode(w, r, &req) { return } + if req.WorkerID == "" { + writeError(w, http.StatusBadRequest, "worker_id is required") + return + } if !s.authorizeTask(w, r) { return } + if req.OutputArtifactURI != "" { + if s.Artifacts == nil { + writeError(w, http.StatusServiceUnavailable, "artifact storage is not configured") + return + } + principal := auth.PrincipalFrom(r.Context()) + a, artifactErr := s.Store.GetArtifactByURI(r.Context(), principal.TenantID, req.OutputArtifactURI) + if artifactErr != nil || a.Status != "READY" || a.Kind != "output" || a.TaskRunID == nil || *a.TaskRunID != r.PathValue("id") { + writeError(w, http.StatusForbidden, "invalid output artifact") + return + } + } t, err := s.Store.CompleteTask(r.Context(), r.PathValue("id"), req.WorkerID, req.Output, req.OutputArtifactURI) if handleErr(w, err) { return @@ -528,6 +605,10 @@ func (s *Server) fail(w http.ResponseWriter, r *http.Request) { if !decode(w, r, &req) { return } + if req.WorkerID == "" { + writeError(w, http.StatusBadRequest, "worker_id is required") + return + } if !s.authorizeTask(w, r) { return } @@ -560,6 +641,14 @@ func (s *Server) authorizeTask(w http.ResponseWriter, r *http.Request) bool { return true } +func (s *Server) authorizeActiveTask(w http.ResponseWriter, r *http.Request, taskID, workerID string) bool { + p := auth.PrincipalFrom(r.Context()) + if handleErr(w, s.Store.ActiveTaskLeaseBelongsToWorker(r.Context(), taskID, p.TenantID, workerID)) { + return false + } + return true +} + func (s *Server) createSchedule(w http.ResponseWriter, r *http.Request) { var req struct { WorkflowDefinitionID string `json:"workflow_definition_id"` diff --git a/internal/api/stream.go b/internal/api/stream.go index 301734a..72cb03f 100644 --- a/internal/api/stream.go +++ b/internal/api/stream.go @@ -7,7 +7,7 @@ import ( "time" "github.com/gorilla/websocket" - "github.com/runmesh/runmesh/internal/auth" + "github.com/samarth1412/RunMesh/internal/auth" ) var streamUpgrader = websocket.Upgrader{ diff --git a/internal/api/stream_test.go b/internal/api/stream_test.go index cdf5b86..904a9dd 100644 --- a/internal/api/stream_test.go +++ b/internal/api/stream_test.go @@ -11,8 +11,8 @@ import ( "github.com/alicebob/miniredis/v2" "github.com/gorilla/websocket" "github.com/prometheus/client_golang/prometheus" - "github.com/runmesh/runmesh/internal/auth" - "github.com/runmesh/runmesh/internal/live" + "github.com/samarth1412/RunMesh/internal/auth" + "github.com/samarth1412/RunMesh/internal/live" ) func TestAuthenticatedTenantStream(t *testing.T) { diff --git a/internal/artifact/manager.go b/internal/artifact/manager.go index 3f07a20..10ddf70 100644 --- a/internal/artifact/manager.go +++ b/internal/artifact/manager.go @@ -16,7 +16,7 @@ import ( "github.com/aws/aws-sdk-go-v2/credentials" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/google/uuid" - "github.com/runmesh/runmesh/internal/storage" + "github.com/samarth1412/RunMesh/internal/storage" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" diff --git a/internal/config/config.go b/internal/config/config.go index d8fd3f5..3889f60 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -19,6 +19,9 @@ type Config struct { LeaseDuration time.Duration SchedulerInterval time.Duration OutboxInterval time.Duration + OutboxBatchSize int + OutboxClaimTTL time.Duration + OutboxPublishTimeout time.Duration DevAuth bool DevTenantID string DevUserID string @@ -90,6 +93,15 @@ func Load() (Config, error) { if c.OutboxInterval, err = envDuration("RUNMESH_OUTBOX_INTERVAL", 250*time.Millisecond); err != nil { return Config{}, err } + if c.OutboxBatchSize, err = envInt("RUNMESH_OUTBOX_BATCH_SIZE", 100); err != nil { + return Config{}, err + } + if c.OutboxClaimTTL, err = envDuration("RUNMESH_OUTBOX_CLAIM_TTL", 30*time.Second); err != nil { + return Config{}, err + } + if c.OutboxPublishTimeout, err = envDuration("RUNMESH_OUTBOX_PUBLISH_TIMEOUT", 10*time.Second); err != nil { + return Config{}, err + } if c.ArtifactPresignExpiry, err = envDuration("RUNMESH_ARTIFACT_PRESIGN_EXPIRY", 15*time.Minute); err != nil { return Config{}, err } @@ -105,6 +117,9 @@ func Load() (Config, error) { if c.RateLimitRate <= 0 || c.RateLimitBurst <= 0 { return Config{}, fmt.Errorf("rate limit rate and burst must be positive") } + if c.OutboxBatchSize <= 0 || c.OutboxClaimTTL <= 0 || c.OutboxPublishTimeout <= 0 || c.OutboxPublishTimeout >= c.OutboxClaimTTL { + return Config{}, fmt.Errorf("outbox batch size must be positive and publish timeout must be shorter than claim TTL") + } if !c.DevAuth && c.RateLimitFailOpen { return Config{}, fmt.Errorf("RUNMESH_RATE_LIMIT_FAIL_OPEN cannot be enabled outside development") } diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 79d7d83..2933375 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -2,6 +2,7 @@ package config import ( "reflect" + "strings" "testing" ) @@ -12,3 +13,12 @@ func TestSplitNonEmpty(t *testing.T) { t.Fatalf("splitNonEmpty()=%v, want %v", got, want) } } + +func TestOutboxClaimConfiguration(t *testing.T) { + t.Setenv("RUNMESH_DEV_AUTH", "true") + t.Setenv("RUNMESH_OUTBOX_CLAIM_TTL", "5s") + t.Setenv("RUNMESH_OUTBOX_PUBLISH_TIMEOUT", "5s") + if _, err := Load(); err == nil || !strings.Contains(err.Error(), "publish timeout") { + t.Fatalf("Load() error=%v, want outbox timeout validation", err) + } +} diff --git a/internal/ratelimit/limiter.go b/internal/ratelimit/limiter.go index dcd12c8..4dbd516 100644 --- a/internal/ratelimit/limiter.go +++ b/internal/ratelimit/limiter.go @@ -10,7 +10,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/redis/go-redis/v9" - "github.com/runmesh/runmesh/internal/auth" + "github.com/samarth1412/RunMesh/internal/auth" ) const tokenBucketScript = ` diff --git a/internal/rpc/worker.go b/internal/rpc/worker.go index 7a08be6..5631676 100644 --- a/internal/rpc/worker.go +++ b/internal/rpc/worker.go @@ -7,11 +7,11 @@ import ( "strings" "time" - runmeshv1 "github.com/runmesh/runmesh/gen/runmesh/v1" - "github.com/runmesh/runmesh/internal/artifact" - "github.com/runmesh/runmesh/internal/auth" - "github.com/runmesh/runmesh/internal/storage" - "github.com/runmesh/runmesh/internal/workflow" + runmeshv1 "github.com/samarth1412/RunMesh/gen/runmesh/v1" + "github.com/samarth1412/RunMesh/internal/artifact" + "github.com/samarth1412/RunMesh/internal/auth" + "github.com/samarth1412/RunMesh/internal/storage" + "github.com/samarth1412/RunMesh/internal/workflow" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" @@ -29,10 +29,14 @@ type WorkerServer struct { func (s *WorkerServer) authorize(ctx context.Context) (auth.Principal, error) { values := metadata.ValueFromIncomingContext(ctx, "authorization") - if len(values) != 1 { + if len(values) != 1 || !strings.HasPrefix(values[0], "Bearer ") { return auth.Principal{}, status.Error(codes.Unauthenticated, "invalid worker credential") } - principal, err := s.Authenticator.AuthenticateWorker(ctx, strings.TrimPrefix(values[0], "Bearer ")) + token := strings.TrimSpace(strings.TrimPrefix(values[0], "Bearer ")) + if token == "" { + return auth.Principal{}, status.Error(codes.Unauthenticated, "invalid worker credential") + } + principal, err := s.Authenticator.AuthenticateWorker(ctx, token) if err != nil { return auth.Principal{}, status.Error(codes.Unauthenticated, "invalid worker credential") } @@ -49,12 +53,12 @@ func (s *WorkerServer) authorizeTask(ctx context.Context, taskID string) error { return nil } -func (s *WorkerServer) principalForTask(ctx context.Context, taskID string) (auth.Principal, error) { +func (s *WorkerServer) principalForActiveTask(ctx context.Context, taskID, workerID string) (auth.Principal, error) { principal, err := s.authorize(ctx) if err != nil { return principal, err } - if err = s.Store.TaskBelongsToTenant(ctx, taskID, principal.TenantID); err != nil { + if err = s.Store.ActiveTaskLeaseBelongsToWorker(ctx, taskID, principal.TenantID, workerID); err != nil { return principal, rpcError(err) } return principal, nil @@ -90,7 +94,7 @@ func (s *WorkerServer) Heartbeat(ctx context.Context, request *runmeshv1.Heartbe return &runmeshv1.HeartbeatResponse{LeaseExpiresAt: timestamppb.New(expires), Cancelled: cancelled}, nil } func (s *WorkerServer) Complete(ctx context.Context, request *runmeshv1.CompleteRequest) (*runmeshv1.CompleteResponse, error) { - principal, err := s.principalForTask(ctx, request.TaskRunId) + principal, err := s.principalForActiveTask(ctx, request.TaskRunId, request.WorkerId) if err != nil { return nil, err } @@ -125,7 +129,7 @@ func (s *WorkerServer) CreateArtifactUpload(ctx context.Context, request *runmes if s.Artifacts == nil { return nil, status.Error(codes.Unavailable, "artifact storage is not configured") } - principal, err := s.principalForTask(ctx, request.TaskRunId) + principal, err := s.principalForActiveTask(ctx, request.TaskRunId, request.WorkerId) if err != nil { return nil, err } @@ -140,7 +144,7 @@ func (s *WorkerServer) CompleteArtifactUpload(ctx context.Context, request *runm if s.Artifacts == nil { return nil, status.Error(codes.Unavailable, "artifact storage is not configured") } - principal, err := s.principalForTask(ctx, request.TaskRunId) + principal, err := s.principalForActiveTask(ctx, request.TaskRunId, request.WorkerId) if err != nil { return nil, err } @@ -159,7 +163,7 @@ func (s *WorkerServer) GetArtifactDownload(ctx context.Context, request *runmesh if s.Artifacts == nil { return nil, status.Error(codes.Unavailable, "artifact storage is not configured") } - principal, err := s.principalForTask(ctx, request.TaskRunId) + principal, err := s.principalForActiveTask(ctx, request.TaskRunId, request.WorkerId) if err != nil { return nil, err } diff --git a/internal/rpc/worker_test.go b/internal/rpc/worker_test.go index 181c27a..d6ece88 100644 --- a/internal/rpc/worker_test.go +++ b/internal/rpc/worker_test.go @@ -4,7 +4,7 @@ import ( "encoding/json" "testing" - "github.com/runmesh/runmesh/internal/workflow" + "github.com/samarth1412/RunMesh/internal/workflow" ) func TestTaskSnapshotContract(t *testing.T) { diff --git a/internal/scheduler/scheduler.go b/internal/scheduler/scheduler.go index 460ae77..bcb5d48 100644 --- a/internal/scheduler/scheduler.go +++ b/internal/scheduler/scheduler.go @@ -4,17 +4,18 @@ import ( "context" "encoding/json" "errors" + "fmt" "log/slog" "time" + "github.com/google/uuid" "github.com/jackc/pgx/v5" "github.com/prometheus/client_golang/prometheus" "github.com/robfig/cron/v3" - "github.com/runmesh/runmesh/internal/live" - "github.com/runmesh/runmesh/internal/messaging" - "github.com/runmesh/runmesh/internal/storage" - "github.com/runmesh/runmesh/internal/tracecontext" - "github.com/runmesh/runmesh/internal/workflow" + "github.com/samarth1412/RunMesh/internal/live" + "github.com/samarth1412/RunMesh/internal/storage" + "github.com/samarth1412/RunMesh/internal/tracecontext" + "github.com/samarth1412/RunMesh/internal/workflow" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" @@ -22,12 +23,25 @@ import ( type Service struct { Store *storage.Store - Publisher *messaging.Publisher + Publisher EventPublisher Live *live.Broker Published *prometheus.CounterVec ScheduleInterval, OutboxInterval time.Duration + OutboxBatchSize int + OutboxClaimTTL time.Duration + OutboxPublishTimeout time.Duration } +type EventPublisher interface { + Publish(context.Context, []byte, []byte, map[string]string) error +} + +const ( + defaultOutboxBatchSize = 100 + defaultOutboxClaimTTL = 30 * time.Second + defaultOutboxPublishTimeout = 10 * time.Second +) + func (s *Service) Run(ctx context.Context) error { errc := make(chan error, 2) go func() { errc <- s.runScheduler(ctx) }() @@ -243,75 +257,122 @@ func (s *Service) runOutbox(ctx context.Context) error { } } func (s *Service) publishBatch(ctx context.Context) error { - tx, err := s.Store.Pool.Begin(ctx) - if err != nil { - return err + for { + published, err := s.publishClaimedBatch(ctx) + if err != nil { + return err + } + if published == 0 { + return nil + } } - defer tx.Rollback(ctx) - rows, err := tx.Query(ctx, `SELECT o.id,o.aggregate_id,o.event_type,o.payload,COALESCE(o.trace_parent,''),o.created_at, +} + +func (s *Service) publishClaimedBatch(ctx context.Context) (int, error) { + batchSize := s.OutboxBatchSize + if batchSize <= 0 { + batchSize = defaultOutboxBatchSize + } + claimTTL := s.OutboxClaimTTL + if claimTTL <= 0 { + claimTTL = defaultOutboxClaimTTL + } + publishTimeout := s.OutboxPublishTimeout + if publishTimeout <= 0 { + publishTimeout = defaultOutboxPublishTimeout + } + if publishTimeout >= claimTTL { + return 0, fmt.Errorf("outbox publish timeout %s must be shorter than claim TTL %s", publishTimeout, claimTTL) + } + + claimToken := uuid.NewString() + rows, err := s.Store.Pool.Query(ctx, `WITH candidates AS ( + SELECT o.id FROM outbox_events o + WHERE o.published_at IS NULL + AND (o.claim_token IS NULL OR o.claim_expires_at<=now()) + AND NOT EXISTS ( + SELECT 1 FROM outbox_events earlier + WHERE earlier.ordering_key=o.ordering_key + AND earlier.published_at IS NULL + AND (earlier.created_at,earlier.id)<(o.created_at,o.id) + ) + ORDER BY o.created_at,o.id + FOR UPDATE OF o SKIP LOCKED + LIMIT $1 + ) + UPDATE outbox_events o + SET claim_token=$2,claim_expires_at=now()+make_interval(secs => $3),publish_attempts=publish_attempts+1 + FROM candidates c + WHERE o.id=c.id + RETURNING o.id,o.aggregate_id,o.ordering_key,o.event_type,o.payload,COALESCE(o.trace_parent,''),o.created_at, COALESCE( (SELECT tenant_id::text FROM workflow_runs WHERE id=o.aggregate_id AND o.aggregate_type='workflow_run'), (SELECT r.tenant_id::text FROM task_runs t JOIN workflow_runs r ON r.id=t.workflow_run_id WHERE t.id=o.aggregate_id AND o.aggregate_type='task_run'), (SELECT tenant_id::text FROM workflow_definitions WHERE id=o.aggregate_id AND o.aggregate_type='workflow_definition'), '' - ) - FROM outbox_events o WHERE o.published_at IS NULL ORDER BY o.created_at FOR UPDATE OF o SKIP LOCKED LIMIT 100`) + )`, batchSize, claimToken, claimTTL.Seconds()) if err != nil { - return err + return 0, err } type event struct { - id, aggregateID, eventType, traceParent, tenantID string - payload []byte - createdAt time.Time + id, aggregateID, orderingKey, eventType, traceParent, tenantID string + payload []byte + createdAt time.Time } var events []event for rows.Next() { var e event - if err = rows.Scan(&e.id, &e.aggregateID, &e.eventType, &e.payload, &e.traceParent, &e.createdAt, &e.tenantID); err != nil { + if err = rows.Scan(&e.id, &e.aggregateID, &e.orderingKey, &e.eventType, &e.payload, &e.traceParent, &e.createdAt, &e.tenantID); err != nil { rows.Close() - return err + return 0, err } events = append(events, e) } + if err = rows.Err(); err != nil { + rows.Close() + return 0, err + } rows.Close() - for _, e := range events { - var envelope struct { - WorkflowRunID string `json:"workflow_run_id"` - } - _ = json.Unmarshal(e.payload, &envelope) - key := e.aggregateID - if envelope.WorkflowRunID != "" { - key = envelope.WorkflowRunID + + releaseClaims := func() { + releaseContext, cancel := context.WithTimeout(context.WithoutCancel(ctx), time.Second) + defer cancel() + if _, releaseErr := s.Store.Pool.Exec(releaseContext, `UPDATE outbox_events SET claim_token=NULL,claim_expires_at=NULL WHERE claim_token=$1 AND published_at IS NULL`, claimToken); releaseErr != nil { + slog.Warn("outbox claim release failed", "claim_token", claimToken, "error", releaseErr) } + } + for _, e := range events { publishContext := tracecontext.IntoContext(ctx, e.traceParent) + publishContext, cancel := context.WithTimeout(publishContext, publishTimeout) publishContext, span := otel.Tracer("runmesh/scheduler").Start(publishContext, "outbox.publish", trace.WithAttributes(attribute.String("tenant_id", e.tenantID), attribute.String("event.id", e.id), attribute.String("event.type", e.eventType))) - if err = s.Publisher.Publish(publishContext, []byte(key), e.payload, map[string]string{"event_type": e.eventType, "event_id": e.id}); err != nil { + if err = s.Publisher.Publish(publishContext, []byte(e.orderingKey), e.payload, map[string]string{"event_type": e.eventType, "event_id": e.id}); err != nil { span.RecordError(err) span.End() - return err + cancel() + releaseClaims() + return 0, err } span.End() - if _, err = tx.Exec(ctx, `UPDATE outbox_events SET published_at=now() WHERE id=$1 AND published_at IS NULL`, e.id); err != nil { - return err + cancel() + command, ackErr := s.Store.Pool.Exec(ctx, `UPDATE outbox_events SET published_at=now(),claim_token=NULL,claim_expires_at=NULL WHERE id=$1 AND published_at IS NULL AND claim_token=$2`, e.id, claimToken) + if ackErr != nil { + releaseClaims() + return 0, ackErr } - } - if err = tx.Commit(ctx); err != nil { - return err - } - if s.Published != nil { - for _, e := range events { + if command.RowsAffected() != 1 { + releaseClaims() + return 0, fmt.Errorf("outbox claim lost before acknowledgement: event %s", e.id) + } + if s.Published != nil { s.Published.WithLabelValues(e.tenantID, e.eventType).Inc() } - } - if s.Live != nil { - for _, e := range events { + if s.Live != nil { if liveErr := s.Live.Publish(ctx, e.tenantID, live.Event{ID: e.id, Type: e.eventType, AggregateID: e.aggregateID, Payload: e.payload, OccurredAt: e.createdAt.UTC().Format(time.RFC3339Nano)}); liveErr != nil { slog.Warn("live notification unavailable", "tenant_id", e.tenantID, "event_id", e.id, "event_type", e.eventType, "error", liveErr) - break } } } - return nil + return len(events), nil } func mustJSON(v any) []byte { b, err := json.Marshal(v) diff --git a/internal/storage/postgres.go b/internal/storage/postgres.go index e92e6ca..e5d9f16 100644 --- a/internal/storage/postgres.go +++ b/internal/storage/postgres.go @@ -10,8 +10,8 @@ import ( "github.com/google/uuid" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgxpool" - "github.com/runmesh/runmesh/internal/tracecontext" - "github.com/runmesh/runmesh/internal/workflow" + "github.com/samarth1412/RunMesh/internal/tracecontext" + "github.com/samarth1412/RunMesh/internal/workflow" ) var ErrNotFound = errors.New("not found") @@ -235,19 +235,46 @@ func (s *Store) GetRun(ctx context.Context, tenantID, id string) (workflow.Run, if err != nil { return r, err } - rows, err := s.Pool.Query(ctx, `SELECT id,workflow_run_id,task_key,handler,status,priority,available_at,attempt_count,maximum_attempts,timeout_seconds,lease_owner,lease_expires_at,input,output,output_artifact_uri,(SELECT log_artifact_uri FROM task_attempts WHERE task_run_id=task_runs.id AND log_artifact_uri IS NOT NULL ORDER BY attempt_number DESC LIMIT 1) FROM task_runs WHERE workflow_run_id=$1 ORDER BY created_at,task_key`, id) + rows, err := s.Pool.Query(ctx, `SELECT id,workflow_run_id,task_key,handler,status,priority,available_at,attempt_count,maximum_attempts,timeout_seconds,lease_owner,lease_expires_at,input,output,output_artifact_uri, + (SELECT log_artifact_uri FROM task_attempts WHERE task_run_id=task_runs.id AND log_artifact_uri IS NOT NULL ORDER BY attempt_number DESC LIMIT 1), + ARRAY(SELECT upstream.task_key FROM task_dependencies d JOIN task_runs upstream ON upstream.id=d.depends_on_task_run_id WHERE d.task_run_id=task_runs.id ORDER BY upstream.task_key) + FROM task_runs WHERE workflow_run_id=$1 ORDER BY created_at,task_key`, id) if err != nil { return r, err } - defer rows.Close() + taskIndexes := make(map[string]int) for rows.Next() { var t workflow.TaskRun - if err = rows.Scan(&t.ID, &t.WorkflowRunID, &t.TaskKey, &t.Handler, &t.Status, &t.Priority, &t.AvailableAt, &t.AttemptCount, &t.MaximumAttempts, &t.TimeoutSeconds, &t.LeaseOwner, &t.LeaseExpiresAt, &t.Input, &t.Output, &t.OutputArtifactURI, &t.LogArtifactURI); err != nil { + if err = rows.Scan(&t.ID, &t.WorkflowRunID, &t.TaskKey, &t.Handler, &t.Status, &t.Priority, &t.AvailableAt, &t.AttemptCount, &t.MaximumAttempts, &t.TimeoutSeconds, &t.LeaseOwner, &t.LeaseExpiresAt, &t.Input, &t.Output, &t.OutputArtifactURI, &t.LogArtifactURI, &t.DependsOn); err != nil { + rows.Close() return r, err } + taskIndexes[t.ID] = len(r.Tasks) r.Tasks = append(r.Tasks, t) } - return r, rows.Err() + if err = rows.Err(); err != nil { + rows.Close() + return r, err + } + rows.Close() + attemptRows, err := s.Pool.Query(ctx, `SELECT a.task_run_id,a.attempt_number,a.worker_id,a.scheduled_at,a.executing_at,a.started_at,a.ended_at, + COALESCE(a.exit_status,''),COALESCE(a.error_type,''),COALESCE(a.error_message,''),COALESCE(a.trace_id,''),COALESCE(a.artifact_uri,''),COALESCE(a.log_artifact_uri,'') + FROM task_attempts a JOIN task_runs t ON t.id=a.task_run_id WHERE t.workflow_run_id=$1 ORDER BY t.created_at,t.task_key,a.attempt_number`, id) + if err != nil { + return r, err + } + defer attemptRows.Close() + for attemptRows.Next() { + var taskID string + var attempt workflow.TaskAttempt + if err = attemptRows.Scan(&taskID, &attempt.AttemptNumber, &attempt.WorkerID, &attempt.ScheduledAt, &attempt.ExecutingAt, &attempt.StartedAt, &attempt.EndedAt, &attempt.ExitStatus, &attempt.ErrorType, &attempt.ErrorMessage, &attempt.TraceID, &attempt.ArtifactURI, &attempt.LogArtifactURI); err != nil { + return r, err + } + if index, ok := taskIndexes[taskID]; ok { + r.Tasks[index].Attempts = append(r.Tasks[index].Attempts, attempt) + } + } + return r, attemptRows.Err() } func (s *Store) ListRuns(ctx context.Context, tenantID string, limit int) ([]workflow.Run, error) { diff --git a/internal/storage/worker.go b/internal/storage/worker.go index 1f8ae64..576cdf6 100644 --- a/internal/storage/worker.go +++ b/internal/storage/worker.go @@ -8,8 +8,8 @@ import ( "time" "github.com/jackc/pgx/v5" - "github.com/runmesh/runmesh/internal/tracecontext" - "github.com/runmesh/runmesh/internal/workflow" + "github.com/samarth1412/RunMesh/internal/tracecontext" + "github.com/samarth1412/RunMesh/internal/workflow" ) type Failure struct { @@ -47,9 +47,6 @@ func (s *Store) LeaseTask(ctx context.Context, taskID, workerID string, lease ti if err != nil { return t, err } - if _, err = tx.Exec(ctx, `UPDATE task_attempts SET executing_at=now() WHERE task_run_id=$1 AND attempt_number=$2 AND executing_at IS NULL`, t.ID, t.AttemptCount); err != nil { - return t, err - } return t, tx.Commit(ctx) } @@ -78,6 +75,9 @@ func (s *Store) StartTask(ctx context.Context, taskID, workerID string) (workflo if err != nil { return t, err } + if _, err = tx.Exec(ctx, `UPDATE task_attempts SET executing_at=now() WHERE task_run_id=$1 AND attempt_number=$2 AND executing_at IS NULL`, t.ID, t.AttemptCount); err != nil { + return t, err + } return t, tx.Commit(ctx) } @@ -266,6 +266,24 @@ func (s *Store) TaskBelongsToTenant(ctx context.Context, taskID, tenantID string return nil } +func (s *Store) ActiveTaskLeaseBelongsToWorker(ctx context.Context, taskID, tenantID, workerID string) error { + var taskTenantID string + var active bool + err := s.Pool.QueryRow(ctx, `SELECT r.tenant_id::text, + (t.status IN ('LEASED','RUNNING') AND t.lease_owner=$2 AND t.lease_expires_at>now() AND r.status='RUNNING') + FROM task_runs t JOIN workflow_runs r ON r.id=t.workflow_run_id WHERE t.id=$1`, taskID, workerID).Scan(&taskTenantID, &active) + if errors.Is(err, pgx.ErrNoRows) || (err == nil && taskTenantID != tenantID) { + return ErrNotFound + } + if err != nil { + return err + } + if !active { + return ErrLeaseLost + } + return nil +} + func (s *Store) DeadLetter(ctx context.Context, tenantID string) ([]workflow.TaskRun, error) { rows, err := s.Pool.Query(ctx, `SELECT t.id,t.workflow_run_id,t.task_key,t.handler,t.status,t.priority,t.available_at,t.attempt_count,t.maximum_attempts,t.timeout_seconds,t.lease_owner,t.lease_expires_at,t.input,t.output,t.output_artifact_uri FROM task_runs t JOIN workflow_runs r ON r.id=t.workflow_run_id WHERE r.tenant_id=$1 AND t.status='DEAD' ORDER BY t.updated_at DESC`, tenantID) if err != nil { diff --git a/internal/telemetry/dbmetrics.go b/internal/telemetry/dbmetrics.go index 3ee9315..2a74a12 100644 --- a/internal/telemetry/dbmetrics.go +++ b/internal/telemetry/dbmetrics.go @@ -6,7 +6,7 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" - "github.com/runmesh/runmesh/internal/storage" + "github.com/samarth1412/RunMesh/internal/storage" ) var durationBuckets = []float64{0.01, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10, 30, 60, 300, 900, 3600} diff --git a/internal/workflow/model.go b/internal/workflow/model.go index ba24341..4ab344f 100644 --- a/internal/workflow/model.go +++ b/internal/workflow/model.go @@ -62,6 +62,25 @@ type TaskRun struct { LogArtifactURI *string `json:"log_artifact_uri,omitempty"` OutputArtifactDownloadURL string `json:"output_artifact_download_url,omitempty"` LogArtifactDownloadURL string `json:"log_artifact_download_url,omitempty"` + DependsOn []string `json:"depends_on,omitempty"` + Attempts []TaskAttempt `json:"attempts,omitempty"` +} + +type TaskAttempt struct { + AttemptNumber int `json:"attempt_number"` + WorkerID string `json:"worker_id"` + ScheduledAt time.Time `json:"scheduled_at"` + ExecutingAt *time.Time `json:"executing_at,omitempty"` + StartedAt time.Time `json:"started_at"` + EndedAt *time.Time `json:"ended_at,omitempty"` + ExitStatus string `json:"exit_status,omitempty"` + ErrorType string `json:"error_type,omitempty"` + ErrorMessage string `json:"error_message,omitempty"` + TraceID string `json:"trace_id,omitempty"` + ArtifactURI string `json:"artifact_uri,omitempty"` + LogArtifactURI string `json:"log_artifact_uri,omitempty"` + ArtifactDownloadURL string `json:"artifact_download_url,omitempty"` + LogArtifactDownloadURL string `json:"log_artifact_download_url,omitempty"` } type Event struct { diff --git a/migrations/007_outbox_claims.down.sql b/migrations/007_outbox_claims.down.sql new file mode 100644 index 0000000..2e36b0c --- /dev/null +++ b/migrations/007_outbox_claims.down.sql @@ -0,0 +1,8 @@ +DROP INDEX IF EXISTS outbox_claim_expiry_idx; +DROP INDEX IF EXISTS outbox_ordering_head_idx; + +ALTER TABLE outbox_events + DROP COLUMN IF EXISTS publish_attempts, + DROP COLUMN IF EXISTS claim_expires_at, + DROP COLUMN IF EXISTS claim_token, + DROP COLUMN IF EXISTS ordering_key; diff --git a/migrations/007_outbox_claims.up.sql b/migrations/007_outbox_claims.up.sql new file mode 100644 index 0000000..40001fc --- /dev/null +++ b/migrations/007_outbox_claims.up.sql @@ -0,0 +1,15 @@ +ALTER TABLE outbox_events + ADD COLUMN ordering_key UUID GENERATED ALWAYS AS ( + COALESCE(NULLIF(payload->>'workflow_run_id', '')::UUID, aggregate_id) + ) STORED, + ADD COLUMN claim_token UUID, + ADD COLUMN claim_expires_at TIMESTAMPTZ, + ADD COLUMN publish_attempts INTEGER NOT NULL DEFAULT 0 CHECK (publish_attempts >= 0); + +CREATE INDEX outbox_ordering_head_idx + ON outbox_events (ordering_key, created_at, id) + WHERE published_at IS NULL; + +CREATE INDEX outbox_claim_expiry_idx + ON outbox_events (claim_expires_at) + WHERE published_at IS NULL AND claim_token IS NOT NULL; diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index baa97d6..c018e94 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -92,6 +92,7 @@ paths: /v1/runs/{id}: get: operationId: getRun + description: Returns tenant-scoped run state, task dependencies, active lease metadata, and immutable attempt history including workers and failure messages. parameters: [{$ref: '#/components/parameters/ID'}] responses: {"200": {description: Run with tasks}, "404": {description: Not found}} /v1/runs: diff --git a/proto/runmesh/v1/worker.proto b/proto/runmesh/v1/worker.proto index 43da72e..2bc1844 100644 --- a/proto/runmesh/v1/worker.proto +++ b/proto/runmesh/v1/worker.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package runmesh.v1; -option go_package = "github.com/runmesh/runmesh/gen/runmesh/v1;runmeshv1"; +option go_package = "github.com/samarth1412/RunMesh/gen/runmesh/v1;runmeshv1"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; diff --git a/scripts/check-go-coverage.sh b/scripts/check-go-coverage.sh new file mode 100755 index 0000000..5095027 --- /dev/null +++ b/scripts/check-go-coverage.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euo pipefail + +profile=${1:?usage: check-go-coverage.sh PROFILE MINIMUM} +minimum=${2:?usage: check-go-coverage.sh PROFILE MINIMUM} +coverage=$(go tool cover -func="$profile" | awk '/^total:/ {gsub("%", "", $3); print $3}') + +awk -v coverage="$coverage" -v minimum="$minimum" 'BEGIN { + if (coverage + 0 < minimum + 0) { + printf "coverage %.1f%% is below required %.1f%%\n", coverage, minimum > "/dev/stderr" + exit 1 + } + printf "coverage %.1f%% meets required %.1f%%\n", coverage, minimum +}' diff --git a/sdk/go/client.go b/sdk/go/client.go index 54fa2bb..e85c70e 100644 --- a/sdk/go/client.go +++ b/sdk/go/client.go @@ -11,7 +11,7 @@ import ( "strings" "time" - runmeshv1 "github.com/runmesh/runmesh/gen/runmesh/v1" + runmeshv1 "github.com/samarth1412/RunMesh/gen/runmesh/v1" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" @@ -126,7 +126,15 @@ func (c *Client) Complete(ctx context.Context, id string, output any) (Task, err if err != nil { return Task{}, err } - response, err := c.worker.Complete(c.rpcContext(ctx), &runmeshv1.CompleteRequest{TaskRunId: id, WorkerId: c.workerID, Output: structured, OutputArtifactUri: artifactURI}) + logData, err := json.Marshal(map[string]any{"task_run_id": id, "status": "SUCCEEDED"}) + if err != nil { + return Task{}, err + } + logArtifactURI, err := c.UploadArtifact(ctx, id, "log", "application/json", logData) + if err != nil { + return Task{}, fmt.Errorf("upload task log: %w", err) + } + response, err := c.worker.Complete(c.rpcContext(ctx), &runmeshv1.CompleteRequest{TaskRunId: id, WorkerId: c.workerID, Output: structured, OutputArtifactUri: artifactURI, LogArtifactUri: logArtifactURI}) if err != nil { return Task{}, err } diff --git a/sdk/python/pyproject.toml b/sdk/python/pyproject.toml index 8f43ffd..43db4b5 100644 --- a/sdk/python/pyproject.toml +++ b/sdk/python/pyproject.toml @@ -10,11 +10,12 @@ requires-python = ">=3.11" dependencies = ["aiohttp>=3.11,<4", "aiokafka>=0.12,<1", "grpcio>=1.74,<2", "protobuf>=7,<8"] [project.optional-dependencies] -dev = ["pytest>=8", "pytest-asyncio>=0.25", "ruff>=0.9", "mypy>=1.14", "types-grpcio", "types-protobuf"] +dev = ["pytest>=8", "pytest-asyncio>=0.25", "pytest-cov>=7,<8", "ruff>=0.9", "mypy>=1.14", "types-grpcio", "types-protobuf"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] +addopts = "--cov=runmesh.worker --cov-report=term-missing --cov-report=xml --cov-fail-under=40" [tool.ruff] line-length = 100 diff --git a/sdk/python/runmesh/v1/worker_pb2.py b/sdk/python/runmesh/v1/worker_pb2.py index 6407a03..6d4047e 100644 --- a/sdk/python/runmesh/v1/worker_pb2.py +++ b/sdk/python/runmesh/v1/worker_pb2.py @@ -26,14 +26,14 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17runmesh/v1/worker.proto\x12\nrunmesh.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"K\n\x0cLeaseRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\"=\n\rLeaseResponse\x12,\n\x04task\x18\x01 \x01(\x0b\x32\x18.runmesh.v1.TaskSnapshotR\x04task\"K\n\x0cStartRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\"=\n\rStartResponse\x12,\n\x04task\x18\x01 \x01(\x0b\x32\x18.runmesh.v1.TaskSnapshotR\x04task\"O\n\x10HeartbeatRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\"w\n\x11HeartbeatResponse\x12\x44\n\x10lease_expires_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0eleaseExpiresAt\x12\x1c\n\tcancelled\x18\x02 \x01(\x08R\tcancelled\"\xd9\x01\n\x0f\x43ompleteRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12/\n\x06output\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x06output\x12.\n\x13output_artifact_uri\x18\x04 \x01(\tR\x11outputArtifactUri\x12(\n\x10log_artifact_uri\x18\x05 \x01(\tR\x0elogArtifactUri\"@\n\x10\x43ompleteResponse\x12,\n\x04task\x18\x01 \x01(\x0b\x32\x18.runmesh.v1.TaskSnapshotR\x04task\"\xc7\x01\n\x0b\x46\x61ilRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x1c\n\tretryable\x18\x03 \x01(\x08R\tretryable\x12\x1d\n\nerror_type\x18\x04 \x01(\tR\terrorType\x12#\n\rerror_message\x18\x05 \x01(\tR\x0c\x65rrorMessage\x12\x19\n\x08trace_id\x18\x06 \x01(\tR\x07traceId\"<\n\x0c\x46\x61ilResponse\x12,\n\x04task\x18\x01 \x01(\x0b\x32\x18.runmesh.v1.TaskSnapshotR\x04task\"\xb3\x02\n\x0cTaskSnapshot\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12&\n\x0fworkflow_run_id\x18\x02 \x01(\tR\rworkflowRunId\x12\x19\n\x08task_key\x18\x03 \x01(\tR\x07taskKey\x12\x18\n\x07handler\x18\x04 \x01(\tR\x07handler\x12-\n\x05input\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x05input\x12\x18\n\x07\x61ttempt\x18\x06 \x01(\x05R\x07\x61ttempt\x12\'\n\x0ftimeout_seconds\x18\x07 \x01(\x05R\x0etimeoutSeconds\x12\x16\n\x06status\x18\x08 \x01(\tR\x06status\x12,\n\x12input_artifact_uri\x18\t \x01(\tR\x10inputArtifactUri\"\xd9\x01\n\x1b\x43reateArtifactUploadRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x12\n\x04kind\x18\x03 \x01(\tR\x04kind\x12!\n\x0c\x63ontent_type\x18\x04 \x01(\tR\x0b\x63ontentType\x12\x1d\n\nsize_bytes\x18\x05 \x01(\x03R\tsizeBytes\x12\'\n\x0f\x63hecksum_sha256\x18\x06 \x01(\tR\x0e\x63hecksumSha256\"\xc9\x02\n\x1c\x43reateArtifactUploadResponse\x12\x1f\n\x0b\x61rtifact_id\x18\x01 \x01(\tR\nartifactId\x12!\n\x0c\x61rtifact_uri\x18\x02 \x01(\tR\x0b\x61rtifactUri\x12\x1d\n\nupload_url\x18\x03 \x01(\tR\tuploadUrl\x12O\n\x07headers\x18\x04 \x03(\x0b\x32\x35.runmesh.v1.CreateArtifactUploadResponse.HeadersEntryR\x07headers\x12\x39\n\nexpires_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"}\n\x1d\x43ompleteArtifactUploadRequest\x12\x1f\n\x0b\x61rtifact_id\x18\x01 \x01(\tR\nartifactId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x1e\n\x0btask_run_id\x18\x03 \x01(\tR\ttaskRunId\"C\n\x1e\x43ompleteArtifactUploadResponse\x12!\n\x0c\x61rtifact_uri\x18\x01 \x01(\tR\x0b\x61rtifactUri\"|\n\x1aGetArtifactDownloadRequest\x12!\n\x0c\x61rtifact_uri\x18\x01 \x01(\tR\x0b\x61rtifactUri\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x1e\n\x0btask_run_id\x18\x03 \x01(\tR\ttaskRunId\"{\n\x1bGetArtifactDownloadResponse\x12!\n\x0c\x64ownload_url\x18\x01 \x01(\tR\x0b\x64ownloadUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt2\x9b\x05\n\rWorkerService\x12<\n\x05Lease\x12\x18.runmesh.v1.LeaseRequest\x1a\x19.runmesh.v1.LeaseResponse\x12<\n\x05Start\x12\x18.runmesh.v1.StartRequest\x1a\x19.runmesh.v1.StartResponse\x12H\n\tHeartbeat\x12\x1c.runmesh.v1.HeartbeatRequest\x1a\x1d.runmesh.v1.HeartbeatResponse\x12\x45\n\x08\x43omplete\x12\x1b.runmesh.v1.CompleteRequest\x1a\x1c.runmesh.v1.CompleteResponse\x12\x39\n\x04\x46\x61il\x12\x17.runmesh.v1.FailRequest\x1a\x18.runmesh.v1.FailResponse\x12i\n\x14\x43reateArtifactUpload\x12\'.runmesh.v1.CreateArtifactUploadRequest\x1a(.runmesh.v1.CreateArtifactUploadResponse\x12o\n\x16\x43ompleteArtifactUpload\x12).runmesh.v1.CompleteArtifactUploadRequest\x1a*.runmesh.v1.CompleteArtifactUploadResponse\x12\x66\n\x13GetArtifactDownload\x12&.runmesh.v1.GetArtifactDownloadRequest\x1a\'.runmesh.v1.GetArtifactDownloadResponseB5Z3github.com/runmesh/runmesh/gen/runmesh/v1;runmeshv1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17runmesh/v1/worker.proto\x12\nrunmesh.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"K\n\x0cLeaseRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\"=\n\rLeaseResponse\x12,\n\x04task\x18\x01 \x01(\x0b\x32\x18.runmesh.v1.TaskSnapshotR\x04task\"K\n\x0cStartRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\"=\n\rStartResponse\x12,\n\x04task\x18\x01 \x01(\x0b\x32\x18.runmesh.v1.TaskSnapshotR\x04task\"O\n\x10HeartbeatRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\"w\n\x11HeartbeatResponse\x12\x44\n\x10lease_expires_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0eleaseExpiresAt\x12\x1c\n\tcancelled\x18\x02 \x01(\x08R\tcancelled\"\xd9\x01\n\x0f\x43ompleteRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12/\n\x06output\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x06output\x12.\n\x13output_artifact_uri\x18\x04 \x01(\tR\x11outputArtifactUri\x12(\n\x10log_artifact_uri\x18\x05 \x01(\tR\x0elogArtifactUri\"@\n\x10\x43ompleteResponse\x12,\n\x04task\x18\x01 \x01(\x0b\x32\x18.runmesh.v1.TaskSnapshotR\x04task\"\xc7\x01\n\x0b\x46\x61ilRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x1c\n\tretryable\x18\x03 \x01(\x08R\tretryable\x12\x1d\n\nerror_type\x18\x04 \x01(\tR\terrorType\x12#\n\rerror_message\x18\x05 \x01(\tR\x0c\x65rrorMessage\x12\x19\n\x08trace_id\x18\x06 \x01(\tR\x07traceId\"<\n\x0c\x46\x61ilResponse\x12,\n\x04task\x18\x01 \x01(\x0b\x32\x18.runmesh.v1.TaskSnapshotR\x04task\"\xb3\x02\n\x0cTaskSnapshot\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12&\n\x0fworkflow_run_id\x18\x02 \x01(\tR\rworkflowRunId\x12\x19\n\x08task_key\x18\x03 \x01(\tR\x07taskKey\x12\x18\n\x07handler\x18\x04 \x01(\tR\x07handler\x12-\n\x05input\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x05input\x12\x18\n\x07\x61ttempt\x18\x06 \x01(\x05R\x07\x61ttempt\x12\'\n\x0ftimeout_seconds\x18\x07 \x01(\x05R\x0etimeoutSeconds\x12\x16\n\x06status\x18\x08 \x01(\tR\x06status\x12,\n\x12input_artifact_uri\x18\t \x01(\tR\x10inputArtifactUri\"\xd9\x01\n\x1b\x43reateArtifactUploadRequest\x12\x1e\n\x0btask_run_id\x18\x01 \x01(\tR\ttaskRunId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x12\n\x04kind\x18\x03 \x01(\tR\x04kind\x12!\n\x0c\x63ontent_type\x18\x04 \x01(\tR\x0b\x63ontentType\x12\x1d\n\nsize_bytes\x18\x05 \x01(\x03R\tsizeBytes\x12\'\n\x0f\x63hecksum_sha256\x18\x06 \x01(\tR\x0e\x63hecksumSha256\"\xc9\x02\n\x1c\x43reateArtifactUploadResponse\x12\x1f\n\x0b\x61rtifact_id\x18\x01 \x01(\tR\nartifactId\x12!\n\x0c\x61rtifact_uri\x18\x02 \x01(\tR\x0b\x61rtifactUri\x12\x1d\n\nupload_url\x18\x03 \x01(\tR\tuploadUrl\x12O\n\x07headers\x18\x04 \x03(\x0b\x32\x35.runmesh.v1.CreateArtifactUploadResponse.HeadersEntryR\x07headers\x12\x39\n\nexpires_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"}\n\x1d\x43ompleteArtifactUploadRequest\x12\x1f\n\x0b\x61rtifact_id\x18\x01 \x01(\tR\nartifactId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x1e\n\x0btask_run_id\x18\x03 \x01(\tR\ttaskRunId\"C\n\x1e\x43ompleteArtifactUploadResponse\x12!\n\x0c\x61rtifact_uri\x18\x01 \x01(\tR\x0b\x61rtifactUri\"|\n\x1aGetArtifactDownloadRequest\x12!\n\x0c\x61rtifact_uri\x18\x01 \x01(\tR\x0b\x61rtifactUri\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x1e\n\x0btask_run_id\x18\x03 \x01(\tR\ttaskRunId\"{\n\x1bGetArtifactDownloadResponse\x12!\n\x0c\x64ownload_url\x18\x01 \x01(\tR\x0b\x64ownloadUrl\x12\x39\n\nexpires_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt2\x9b\x05\n\rWorkerService\x12<\n\x05Lease\x12\x18.runmesh.v1.LeaseRequest\x1a\x19.runmesh.v1.LeaseResponse\x12<\n\x05Start\x12\x18.runmesh.v1.StartRequest\x1a\x19.runmesh.v1.StartResponse\x12H\n\tHeartbeat\x12\x1c.runmesh.v1.HeartbeatRequest\x1a\x1d.runmesh.v1.HeartbeatResponse\x12\x45\n\x08\x43omplete\x12\x1b.runmesh.v1.CompleteRequest\x1a\x1c.runmesh.v1.CompleteResponse\x12\x39\n\x04\x46\x61il\x12\x17.runmesh.v1.FailRequest\x1a\x18.runmesh.v1.FailResponse\x12i\n\x14\x43reateArtifactUpload\x12\'.runmesh.v1.CreateArtifactUploadRequest\x1a(.runmesh.v1.CreateArtifactUploadResponse\x12o\n\x16\x43ompleteArtifactUpload\x12).runmesh.v1.CompleteArtifactUploadRequest\x1a*.runmesh.v1.CompleteArtifactUploadResponse\x12\x66\n\x13GetArtifactDownload\x12&.runmesh.v1.GetArtifactDownloadRequest\x1a\'.runmesh.v1.GetArtifactDownloadResponseB9Z7github.com/samarth1412/RunMesh/gen/runmesh/v1;runmeshv1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'runmesh.v1.worker_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'Z3github.com/runmesh/runmesh/gen/runmesh/v1;runmeshv1' + _globals['DESCRIPTOR']._serialized_options = b'Z7github.com/samarth1412/RunMesh/gen/runmesh/v1;runmeshv1' _globals['_CREATEARTIFACTUPLOADRESPONSE_HEADERSENTRY']._loaded_options = None _globals['_CREATEARTIFACTUPLOADRESPONSE_HEADERSENTRY']._serialized_options = b'8\001' _globals['_LEASEREQUEST']._serialized_start=102 diff --git a/sdk/python/runmesh/worker.py b/sdk/python/runmesh/worker.py index f66c263..c7dcb14 100644 --- a/sdk/python/runmesh/worker.py +++ b/sdk/python/runmesh/worker.py @@ -234,6 +234,13 @@ async def _process( dispatch = json.loads(message.value) task_id = dispatch["task_run_id"] trace_parent = _header(message, "traceparent") + handler = self._handlers.get(dispatch["handler"]) + if handler is None: + # Heterogeneous capability pools use distinct consumer groups. This + # group acknowledges handlers it does not own without claiming the + # database task; a capable group can acquire the durable lease. + await consumer.commit() + return try: task = await self._post( session, f"/internal/v1/tasks/{task_id}/lease", {}, trace_parent=trace_parent @@ -256,9 +263,6 @@ async def _process( ) heartbeat = asyncio.create_task(self._heartbeat(session, context)) try: - handler = self._handlers.get(task["handler"]) - if handler is None: - raise RetryableError(f"worker does not provide handler {task['handler']!r}") task_input = task["input"] if task.get("input_artifact_uri"): task_input = json.loads( diff --git a/sdk/python/tests/test_worker.py b/sdk/python/tests/test_worker.py index 14f388b..95eae5d 100644 --- a/sdk/python/tests/test_worker.py +++ b/sdk/python/tests/test_worker.py @@ -98,3 +98,25 @@ async def test_worker_heartbeat_payload_excludes_task_worker_id() -> None: ) assert session.payload == payload + + +async def test_unsupported_handler_is_not_leased() -> None: + class Consumer: + committed = False + + async def commit(self) -> None: + self.committed = True + + class Message: + value = b'{"task_run_id":"task-1","handler":"documents.unknown"}' + headers: list[tuple[str, bytes]] = [] + + worker = Worker("localhost:7001", "token", worker_id="worker-1") + consumer = Consumer() + await worker._process( + cast(aiohttp.ClientSession, object()), + cast(Any, consumer), + cast(Any, Message()), + ) + assert consumer.committed + assert worker._grpc_stub is None diff --git a/tests/benchmarks/local.py b/tests/benchmarks/local.py index 2d0e8de..1891ab8 100755 --- a/tests/benchmarks/local.py +++ b/tests/benchmarks/local.py @@ -5,7 +5,6 @@ import argparse import json -import statistics import sys import time import urllib.error @@ -61,6 +60,20 @@ def create_workflow(api: str, token: str, name: str, task_count: int, handler: s return payload["id"] +def latency_summary(values: list[float]) -> dict[str, float]: + ordered = sorted(values) + + def percentile(value: float) -> float: + index = min(len(ordered) - 1, max(0, round((len(ordered) - 1) * value))) + return round(ordered[index] * 1000, 3) + + return { + "p50_ms": percentile(0.50), + "p95_ms": percentile(0.95), + "p99_ms": percentile(0.99), + } + + def active_workflows(api: str, token: str, count: int, prefix: str) -> dict: workflow_id = create_workflow(api, token, f"{prefix}-definition", 1, "examples.slow") latencies: list[float] = [] @@ -82,7 +95,9 @@ def active_workflows(api: str, token: str, count: int, prefix: str) -> dict: "workflow_id": workflow_id, "idempotency_prefix": prefix, "elapsed_seconds": round(elapsed, 3), - "create_p95_ms": round(statistics.quantiles(latencies, n=100)[94] * 1000, 3), + "create_latency": latency_summary(latencies), + "failure_count": 0, + "failure_rate": 0, "sample_run_ids": run_ids[:5], } @@ -131,7 +146,7 @@ def duplicate_submission(api: str, token: str, prefix: str) -> dict: def main() -> None: parser = argparse.ArgumentParser() - parser.add_argument("command", choices=("token", "active", "prepare", "duplicate")) + parser.add_argument("command", choices=("token", "definition", "active", "prepare", "duplicate")) parser.add_argument("--api", default="http://localhost:8080") parser.add_argument("--identity", default="http://localhost:8180/realms/runmesh/protocol/openid-connect/token") parser.add_argument("--count", type=int, default=1000) @@ -141,6 +156,8 @@ def main() -> None: token = oidc_token(args.identity) if args.command == "token": print(token) + elif args.command == "definition": + print(create_workflow(args.api, token, f"{args.prefix}-definition", 1, "examples.greet")) elif args.command == "active": print(json.dumps(active_workflows(args.api, token, args.count, args.prefix), indent=2, sort_keys=True)) elif args.command == "prepare": diff --git a/tests/benchmarks/run-local.sh b/tests/benchmarks/run-local.sh index fb3a743..cad5536 100755 --- a/tests/benchmarks/run-local.sh +++ b/tests/benchmarks/run-local.sh @@ -1,22 +1,38 @@ #!/usr/bin/env bash set -euo pipefail -# Run against the disposable local Compose stack. This script never provisions -# cloud resources and intentionally leaves the stack available for inspection. -result_dir=${1:-tests/benchmarks/results/$(date +%F)} +# Runs only against the local Compose project. It never provisions cloud +# resources. Raw result directories are immutable: choose a new path to rerun. +result_dir=${1:-tests/benchmarks/results/$(date -u +%Y-%m-%dT%H%M%SZ)} +if [[ -e "$result_dir" ]]; then + echo "result directory already exists: $result_dir" >&2 + exit 1 +fi mkdir -p "$result_dir" run_suffix=$(date -u +%Y%m%dT%H%M%SZ) active_prefix="validation-active-$run_suffix" crash_prefix="validation-crash-$run_suffix" duplicate_prefix="validation-duplicate-$run_suffix" -benchmark_token=$(python3 tests/benchmarks/local.py token) cp "$0" "$result_dir/commands.sh" +docker compose up -d --build +benchmark_token=$(python3 tests/benchmarks/local.py token) -docker run --rm --network host \ +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-before.json" +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_RATE=100 -e RUNMESH_DURATION=30s \ -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ - grafana/k6:0.57.0 run --summary-export=/results/api-100-rps.json /scripts/api-read.js + grafana/k6:0.57.0 run --summary-export=/results/api-read.json /scripts/api-read.js + +sleep 3 +submission_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-submission-$run_suffix") +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_WORKFLOW_ID="$submission_workflow" \ + -e RUNMESH_RATE=50 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/workflow-submissions.json /scripts/submissions.js docker compose stop scheduler worker-python worker-go python3 tests/benchmarks/local.py active --count 1000 --prefix "$active_prefix" > "$result_dir/active-workflows.json" @@ -24,51 +40,77 @@ docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ "SELECT json_build_object('active_runs',count(*),'active_tasks',sum(task_count)) FROM (SELECT wr.id,count(tr.id) task_count FROM workflow_runs wr JOIN task_runs tr ON tr.workflow_run_id=wr.id WHERE wr.idempotency_key LIKE '$active_prefix-%' AND wr.status='RUNNING' GROUP BY wr.id) rows" \ > "$result_dir/active-workflows-database.json" -# Remove the completed active-count fixture before measuring dispatch throughput. -docker compose exec -T postgres psql -U runmesh -d runmesh -c \ - "UPDATE task_runs SET status='CANCELLED' WHERE workflow_run_id IN (SELECT id FROM workflow_runs WHERE idempotency_key LIKE '$active_prefix-%'); UPDATE workflow_runs SET status='CANCELLED',completed_at=now() WHERE idempotency_key LIKE '$active_prefix-%';" >/dev/null +# Start two schedulers and twelve workers against six partitions, then measure +# drain throughput for the 1,000 distinct workflow keys created above. +completion_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale scheduler=2 scheduler +docker compose up -d --build --scale worker-go=12 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$active_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 0.2; done +completion_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$completion_start" "$completion_end" > "$result_dir/end-to-end-completion.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"queued_end_to_end_completion","tasks":1000,"elapsed_seconds":round(elapsed,3),"tasks_per_second":round(1000/elapsed,3)}, indent=2)) +PY +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED')) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$active_prefix-%'" \ + > "$result_dir/end-to-end-completion-database.json" -# Begin at the current topic end so a repeat run measures only its own work. +# Begin at the current topic end so this scenario observes only its own work. +docker compose stop worker-go docker compose exec -T redpanda rpk group seek runmesh-workers --to end --topics runmesh.tasks >/dev/null python3 tests/benchmarks/local.py prepare --tasks 10000 --prefix "$crash_prefix" > "$result_dir/worker-crash-setup.json" -dispatch_start=$(date +%s) -docker compose up -d scheduler +dispatch_start=$(python3 -c 'import time; print(time.time_ns())') while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status IN ('READY','BLOCKED')") != 0 ]]; do sleep 0.1; done -dispatch_end=$(date +%s) +dispatch_end=$(python3 -c 'import time; print(time.time_ns())') python3 - "$dispatch_start" "$dispatch_end" > "$result_dir/scheduler-dispatch.json" <<'PY' import json, sys -elapsed = max(1, int(sys.argv[2]) - int(sys.argv[1])) +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 print(json.dumps({"scenario":"scheduler_dispatch","tasks":10000,"elapsed_seconds":round(elapsed,3),"dispatches_per_second":round(10000/elapsed,3)}, indent=2)) PY -# Make the first dispatch long enough to guarantee an in-flight lease when the -# entire worker pool is terminated; the other 9,999 tasks remain short. +# Keep enough tasks running to occupy every available Kafka partition before +# terminating the entire 20-container worker pool. docker compose exec -T postgres psql -U runmesh -d runmesh -c \ - "UPDATE task_runs SET input='{\"delay_ms\":5000}'::jsonb WHERE id=(SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id JOIN outbox_events o ON o.aggregate_id=tr.id AND o.event_type='task.dispatch' WHERE wr.idempotency_key LIKE '$crash_prefix-%' ORDER BY o.created_at,o.id LIMIT 1);" >/dev/null + "WITH selected AS (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' ORDER BY tr.id LIMIT 100) UPDATE task_runs SET input='{\"delay_ms\":5000}'::jsonb WHERE id IN (SELECT id FROM selected);" >/dev/null docker compose up -d --build --scale worker-go=20 worker-go -while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING'") == 0 ]]; do sleep 0.1; done +deadline=$((SECONDS+60)) +while true; do + running=$(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING'") + [[ "$running" -ge 4 ]] && break + [[ "$SECONDS" -ge "$deadline" ]] && { echo "fewer than four tasks became concurrently RUNNING" >&2; exit 1; } + sleep 0.1 +done +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('running_count',count(*),'task_ids',json_agg(id ORDER BY id)) FROM (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING') active" \ + > "$result_dir/in-flight-before-termination.json" worker_ids=( $(docker compose ps -q worker-go) ) -docker kill "${worker_ids[@]}" -python3 - "${#worker_ids[@]}" "$crash_prefix" > "$result_dir/worker-termination.json" <<'PY' +docker kill "${worker_ids[@]}" >/dev/null +python3 - "${#worker_ids[@]}" "$crash_prefix" "$running" > "$result_dir/worker-termination.json" <<'PY' import datetime, json, sys -print(json.dumps({"terminated_workers":int(sys.argv[1]),"idempotency_prefix":sys.argv[2],"terminated_at":datetime.datetime.now(datetime.timezone.utc).isoformat()}, indent=2)) +print(json.dumps({"terminated_workers":int(sys.argv[1]),"idempotency_prefix":sys.argv[2],"in_flight_tasks":int(sys.argv[3]),"terminated_at":datetime.datetime.now(datetime.timezone.utc).isoformat()}, indent=2)) PY +recovery_start=$(python3 -c 'import time; print(time.time_ns())') docker compose up -d --scale worker-go=20 worker-go -recovery_start=$(date +%s) while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$crash_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 1; done -recovery_end=$(date +%s) +recovery_end=$(python3 -c 'import time; print(time.time_ns())') +recovery_seconds=$(python3 -c "print(round(($recovery_end-$recovery_start)/1_000_000_000,3))") docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ - "SELECT json_build_object('scenario','worker_termination_and_lease_recovery','tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED'),'attempts',sum(tr.attempt_count),'recovered_tasks',count(*) FILTER (WHERE tr.attempt_count > 1),'recovery_seconds',$((recovery_end-recovery_start))) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%'" \ + "SELECT json_build_object('scenario','worker_termination_and_lease_recovery','tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED'),'attempts',sum(tr.attempt_count),'recovered_tasks',count(*) FILTER (WHERE tr.attempt_count > 1),'duplicate_attempts',sum(tr.attempt_count)-count(*),'recovery_seconds',$recovery_seconds) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%'" \ > "$result_dir/worker-crash-result.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "WITH gaps AS (SELECT EXTRACT(EPOCH FROM (next_attempt.started_at-expired.ended_at))*1000 milliseconds FROM task_attempts expired JOIN task_attempts next_attempt ON next_attempt.task_run_id=expired.task_run_id AND next_attempt.attempt_number=expired.attempt_number+1 JOIN task_runs tr ON tr.id=expired.task_run_id JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND expired.error_type='LeaseExpired') SELECT json_build_object('samples',count(*),'p50_ms',percentile_cont(0.50) WITHIN GROUP (ORDER BY milliseconds),'p95_ms',percentile_cont(0.95) WITHIN GROUP (ORDER BY milliseconds),'p99_ms',percentile_cont(0.99) WITHIN GROUP (ORDER BY milliseconds)) FROM gaps" \ + > "$result_dir/lease-recovery-distribution.json" python3 tests/benchmarks/local.py duplicate --prefix "$duplicate_prefix" > "$result_dir/duplicate-submission.json" -docker run --rm \ - -v "$PWD":/src -w /src -v /var/run/docker.sock:/var/run/docker.sock \ +docker run --rm -v "$PWD":/src -w /src -v /var/run/docker.sock:/var/run/docker.sock \ -e TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal golang:1.25 \ - sh -c 'go test -tags=integration -count=1 -run TestDuplicateDispatchIsLeasedOnce -json ./tests/integration' \ + /usr/local/go/bin/go test -tags=integration -count=1 -run TestDuplicateDispatchIsLeasedOnce -json ./tests/integration \ > "$result_dir/duplicate-delivery-go-test.json" docker compose images --format json > "$result_dir/image-digests.json" +docker compose ps --format json > "$result_dir/compose-topology.json" +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-after.json" { uname -a sysctl -n machdep.cpu.brand_string 2>/dev/null || true diff --git a/tests/benchmarks/verify.py b/tests/benchmarks/verify.py index 85002a2..5a55e0f 100755 --- a/tests/benchmarks/verify.py +++ b/tests/benchmarks/verify.py @@ -19,26 +19,40 @@ def main() -> None: args = parser.parse_args() root = args.result_dir - api = load(root / "api-100-rps.json") + api = load(root / "api-read.json") + submissions = load(root / "workflow-submissions.json") active = load(root / "active-workflows.json") active_db = load(root / "active-workflows-database.json") + completion = load(root / "end-to-end-completion-database.json") crash = load(root / "worker-crash-result.json") termination = load(root / "worker-termination.json") + recovery = load(root / "lease-recovery-distribution.json") duplicate = load(root / "duplicate-submission.json") + kafka_before = load(root / "kafka-topology-before.json")[0] + kafka_after = load(root / "kafka-topology-after.json")[0] delivery_events = [json.loads(line) for line in (root / "duplicate-delivery-go-test.json").read_text(encoding="utf-8").splitlines()] + before_offsets = {item["partition"]: item["high_watermark"] for item in kafka_before["partitions"]} + used_partitions = sum(item["high_watermark"] > before_offsets.get(item["partition"], 0) for item in kafka_after["partitions"]) + checks = { "api_requests": api["metrics"]["http_reqs"]["count"] >= 3000, "api_zero_failures": api["metrics"]["http_req_failed"]["value"] == 0, + "submission_requests": submissions["metrics"]["http_reqs"]["count"] >= 1400, + "submission_zero_failures": submissions["metrics"]["http_req_failed"]["value"] == 0, "active_workflows": active["created"] == active["requested"] == active_db["active_runs"] == 1000, + "end_to_end_zero_task_loss": completion["tasks"] == completion["succeeded"] == 1000 and completion["other"] == 0, + "six_kafka_partitions": kafka_after["summary"]["partitions"] == 6, + "multi_partition_delivery": used_partitions >= 4, "worker_pool_terminated": termination["terminated_workers"] == 20, + "multiple_tasks_in_flight": termination["in_flight_tasks"] >= 4, "ten_thousand_tasks": crash["tasks"] == crash["succeeded"] == 10_000, "zero_task_loss": crash["other"] == 0, - "lease_recovered": crash["attempts"] > crash["tasks"] and crash["recovered_tasks"] > 0, + "lease_recovered": crash["attempts"] > crash["tasks"] and crash["recovered_tasks"] >= 4 and recovery["samples"] >= 4, "duplicate_submission": duplicate["passed"] is True, "duplicate_delivery": any(event.get("Action") == "pass" and event.get("Test") == "TestDuplicateDispatchIsLeasedOnce" for event in delivery_events), } - output = {"passed": all(checks.values()), "checks": checks} + output = {"passed": all(checks.values()), "checks": checks, "observed_partitions_with_new_records": used_partitions} print(json.dumps(output, indent=2, sort_keys=True)) if not output["passed"]: raise SystemExit(1) diff --git a/tests/deployment/kind-dependencies.yaml b/tests/deployment/kind-dependencies.yaml index 3d20ead..823a1e4 100644 --- a/tests/deployment/kind-dependencies.yaml +++ b/tests/deployment/kind-dependencies.yaml @@ -59,3 +59,26 @@ apiVersion: v1 kind: Service metadata: {name: redpanda} spec: {selector: {app: redpanda}, ports: [{port: 9092}]} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: {name: minio} +spec: + selector: {matchLabels: {app: minio}} + template: + metadata: {labels: {app: minio}} + spec: + containers: + - name: minio + image: minio/minio:RELEASE.2025-02-07T23-21-09Z + args: [server, /data] + env: + - {name: MINIO_ROOT_USER, value: runmesh} + - {name: MINIO_ROOT_PASSWORD, value: runmesh-development} + ports: [{containerPort: 9000}] + readinessProbe: {httpGet: {path: /minio/health/live, port: 9000}, periodSeconds: 2, failureThreshold: 30} +--- +apiVersion: v1 +kind: Service +metadata: {name: minio} +spec: {selector: {app: minio}, ports: [{port: 9000}]} diff --git a/tests/deployment/kind-rolling-upgrade.sh b/tests/deployment/kind-rolling-upgrade.sh index 790ea10..e69c90d 100755 --- a/tests/deployment/kind-rolling-upgrade.sh +++ b/tests/deployment/kind-rolling-upgrade.sh @@ -44,7 +44,7 @@ if [[ "${RUNMESH_SKIP_BUILD:-0}" != "1" ]]; then docker build -t runmesh/control-plane:rolling --build-arg SERVICE=control-plane . docker build -t runmesh/scheduler:rolling --build-arg SERVICE=scheduler . docker build -t runmesh/worker-go:rolling --build-arg SERVICE=worker-go . - docker build -t runmesh/web:rolling -f web/Dockerfile --build-arg VITE_DEV_AUTH=true . + docker build -t runmesh/web:rolling -f web/Dockerfile --build-arg WEB_DEVELOPMENT_MODE=true . fi kind load docker-image --name "$cluster" runmesh/control-plane:rolling runmesh/scheduler:rolling runmesh/worker-go:rolling runmesh/web:rolling @@ -53,6 +53,7 @@ kubectl -n "$namespace" apply -f tests/deployment/kind-dependencies.yaml kubectl -n "$namespace" rollout status deployment/postgres --timeout=180s kubectl -n "$namespace" rollout status deployment/redis --timeout=180s kubectl -n "$namespace" rollout status deployment/redpanda --timeout=240s +kubectl -n "$namespace" rollout status deployment/minio --timeout=180s kubectl -n "$namespace" create configmap runmesh-migrations --from-file=migrations kubectl -n "$namespace" apply -f - <<'YAML' diff --git a/tests/deployment/kind-values.yaml b/tests/deployment/kind-values.yaml index 2588514..e7768b8 100644 --- a/tests/deployment/kind-values.yaml +++ b/tests/deployment/kind-values.yaml @@ -12,11 +12,20 @@ config: oidcIssuer: "" oidcJwksURL: "" corsAllowlist: http://127.0.0.1:18080 + artifactEndpoint: http://minio:9000 + artifactPublicEndpoint: http://minio:9000 + artifactPathStyle: true + artifactCreateBucket: true + +secret: + artifactAccessKey: runmesh + artifactSecretKey: runmesh-development workerPools: - name: default-go enabled: true type: go + groupID: runmesh-workers replicas: 2 image: {repository: "", tag: "", pullPolicy: ""} credentialSecretName: "" diff --git a/tests/integration/stack_test.go b/tests/integration/stack_test.go index e000dd6..57d1237 100644 --- a/tests/integration/stack_test.go +++ b/tests/integration/stack_test.go @@ -21,13 +21,13 @@ import ( toxiproxyclient "github.com/Shopify/toxiproxy/v2/client" "github.com/jackc/pgx/v5" "github.com/prometheus/client_golang/prometheus" - "github.com/runmesh/runmesh/internal/artifact" - "github.com/runmesh/runmesh/internal/auth" - "github.com/runmesh/runmesh/internal/messaging" - "github.com/runmesh/runmesh/internal/ratelimit" - "github.com/runmesh/runmesh/internal/scheduler" - "github.com/runmesh/runmesh/internal/storage" - "github.com/runmesh/runmesh/internal/workflow" + "github.com/samarth1412/RunMesh/internal/artifact" + "github.com/samarth1412/RunMesh/internal/auth" + "github.com/samarth1412/RunMesh/internal/messaging" + "github.com/samarth1412/RunMesh/internal/ratelimit" + "github.com/samarth1412/RunMesh/internal/scheduler" + "github.com/samarth1412/RunMesh/internal/storage" + "github.com/samarth1412/RunMesh/internal/workflow" "github.com/segmentio/kafka-go" "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/modules/redpanda" @@ -141,69 +141,69 @@ func TestArtifactOwnershipPresigningAndSlowUploadRecovery(t *testing.T) { func TestPostgresIdempotencyAndConcurrentClaims(t *testing.T) { ctx := context.Background() store := postgresStore(t, ctx) + const tenantOne = "00000000-0000-0000-0000-000000000001" + const userOne = "00000000-0000-0000-0000-000000000001" + const tenantTwo = "00000000-0000-0000-0000-000000000020" + const userTwo = "00000000-0000-0000-0000-000000000020" + const taskCount = 240 dag := workflow.DAG{Tasks: map[string]workflow.TaskSpec{}} - for i := 0; i < 40; i++ { - key := fmt.Sprintf("task-%02d", i) + for i := 0; i < taskCount; i++ { + key := fmt.Sprintf("task-%03d", i) dag.Tasks[key] = workflow.TaskSpec{Handler: "test.handle"} } - definition, err := store.CreateWorkflow(ctx, "00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000001", "claims", dag) + definition, err := store.CreateWorkflow(ctx, tenantOne, userOne, "claims", dag) if err != nil { t.Fatal(err) } - first, created, err := store.CreateRun(ctx, "00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000001", definition.ID, "same-key", json.RawMessage(`{"value":1}`)) + first, created, err := store.CreateRun(ctx, tenantOne, userOne, definition.ID, "same-key", json.RawMessage(`{"value":1}`)) if err != nil || !created { t.Fatalf("first submission: created=%v err=%v", created, err) } - second, created, err := store.CreateRun(ctx, "00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000001", definition.ID, "same-key", json.RawMessage(`{"value":2}`)) + second, created, err := store.CreateRun(ctx, tenantOne, userOne, definition.ID, "same-key", json.RawMessage(`{"value":2}`)) if err != nil || created || second.ID != first.ID { t.Fatalf("duplicate submission: first=%s second=%s created=%v err=%v", first.ID, second.ID, created, err) } + if _, err = store.Pool.Exec(ctx, `INSERT INTO tenants(id,name,plan) VALUES($1,'Idempotency tenant','development')`, tenantTwo); err != nil { + t.Fatal(err) + } + if _, err = store.Pool.Exec(ctx, `INSERT INTO users(id,tenant_id,oidc_subject,email,role) VALUES($1,$2,'idempotency-user','idempotency@example.com','admin')`, userTwo, tenantTwo); err != nil { + t.Fatal(err) + } + secondDefinition, err := store.CreateWorkflow(ctx, tenantTwo, userTwo, "claims", workflow.DAG{Tasks: map[string]workflow.TaskSpec{"only": {Handler: "test.handle"}}}) + if err != nil { + t.Fatal(err) + } + crossTenant, created, err := store.CreateRun(ctx, tenantTwo, userTwo, secondDefinition.ID, "same-key", json.RawMessage(`{"value":3}`)) + if err != nil || !created || crossTenant.ID == first.ID { + t.Fatalf("tenant-scoped idempotency: first=%s cross_tenant=%s created=%v err=%v", first.ID, crossTenant.ID, created, err) + } - claimed := map[string]bool{} - var mu sync.Mutex + services := make([]scheduler.Service, 4) + for i := range services { + services[i] = scheduler.Service{Store: store} + } var wg sync.WaitGroup - for i := 0; i < 8; i++ { + for i := range services { wg.Add(1) - go func() { + go func(service *scheduler.Service) { defer wg.Done() - for { - tx, e := store.Pool.BeginTx(ctx, pgx.TxOptions{}) - if e != nil { - t.Error(e) - return - } - var id string - e = tx.QueryRow(ctx, `SELECT id FROM task_runs WHERE workflow_run_id=$1 AND status='READY' FOR UPDATE SKIP LOCKED LIMIT 1`, first.ID).Scan(&id) - if e == pgx.ErrNoRows { - _ = tx.Rollback(ctx) - return - } - if e != nil { - _ = tx.Rollback(ctx) - t.Error(e) - return - } - if _, e = tx.Exec(ctx, `UPDATE task_runs SET status='DISPATCHING' WHERE id=$1`, id); e != nil { - _ = tx.Rollback(ctx) - t.Error(e) - return - } - if e = tx.Commit(ctx); e != nil { - t.Error(e) - return - } - mu.Lock() - if claimed[id] { - t.Errorf("task %s claimed twice", id) - } - claimed[id] = true - mu.Unlock() + if runErr := service.RunOnce(ctx); runErr != nil { + t.Error(runErr) } - }() + }(&services[i]) } wg.Wait() - if len(claimed) != 40 { - t.Fatalf("claimed %d tasks, want 40", len(claimed)) + var dispatched, dispatchEvents, distinctDispatches, maxDispatchesPerTask int + if err = store.Pool.QueryRow(ctx, `SELECT + count(*) FILTER (WHERE status='DISPATCHING'), + (SELECT count(*) FROM outbox_events WHERE event_type='task.dispatch' AND payload->>'workflow_run_id'=$1::text), + (SELECT count(DISTINCT aggregate_id) FROM outbox_events WHERE event_type='task.dispatch' AND payload->>'workflow_run_id'=$1::text), + COALESCE((SELECT max(event_count) FROM (SELECT count(*) event_count FROM outbox_events WHERE event_type='task.dispatch' AND payload->>'workflow_run_id'=$1::text GROUP BY aggregate_id) counts),0) + FROM task_runs WHERE workflow_run_id=$1::uuid`, first.ID).Scan(&dispatched, &dispatchEvents, &distinctDispatches, &maxDispatchesPerTask); err != nil { + t.Fatal(err) + } + if dispatched != taskCount || dispatchEvents != taskCount || distinctDispatches != taskCount || maxDispatchesPerTask != 1 { + t.Fatalf("concurrent scheduler claims: dispatched=%d events=%d distinct=%d max_per_task=%d", dispatched, dispatchEvents, distinctDispatches, maxDispatchesPerTask) } } @@ -254,6 +254,24 @@ func TestProductionAPIKeysAndWorkerTenantIsolation(t *testing.T) { if err = store.TaskBelongsToTenant(ctx, taskID, tenantTwo); !errors.Is(err, storage.ErrNotFound) { t.Fatalf("cross-tenant task lookup error=%v, want not found", err) } + if err = store.ActiveTaskLeaseBelongsToWorker(ctx, taskID, tenantOne, "worker-one"); !errors.Is(err, storage.ErrLeaseLost) { + t.Fatalf("undispatched task active lease error=%v, want lease lost", err) + } + if err = (&scheduler.Service{Store: store}).RunOnce(ctx); err != nil { + t.Fatal(err) + } + if _, err = store.LeaseTask(ctx, taskID, "worker-one", time.Minute); err != nil { + t.Fatal(err) + } + if err = store.ActiveTaskLeaseBelongsToWorker(ctx, taskID, tenantOne, "worker-one"); err != nil { + t.Fatalf("active worker lease: %v", err) + } + if err = store.ActiveTaskLeaseBelongsToWorker(ctx, taskID, tenantOne, "worker-two"); !errors.Is(err, storage.ErrLeaseLost) { + t.Fatalf("wrong worker active lease error=%v, want lease lost", err) + } + if err = store.ActiveTaskLeaseBelongsToWorker(ctx, taskID, tenantTwo, "worker-one"); !errors.Is(err, storage.ErrNotFound) { + t.Fatalf("cross-tenant active lease error=%v, want not found", err) + } if err = store.WorkerHeartbeat(ctx, tenantOne, "shared-worker-id", []string{"test.secure"}, 1, nil); err != nil { t.Fatal(err) } @@ -524,10 +542,11 @@ func TestRedisRedpandaAndMinIOContainers(t *testing.T) { func TestWorkerCrashLeaseRecovery(t *testing.T) { ctx := context.Background() store := postgresStore(t, ctx) - - dag := workflow.DAG{Tasks: map[string]workflow.TaskSpec{ - "recover": {Handler: "test.recover", MaximumAttempts: 3}, - }} + const taskCount = 12 + dag := workflow.DAG{Tasks: make(map[string]workflow.TaskSpec, taskCount)} + for i := 0; i < taskCount; i++ { + dag.Tasks[fmt.Sprintf("recover-%02d", i)] = workflow.TaskSpec{Handler: "test.recover", MaximumAttempts: 3} + } definition, err := store.CreateWorkflow(ctx, "00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000001", "worker-crash", dag) if err != nil { t.Fatal(err) @@ -542,61 +561,93 @@ func TestWorkerCrashLeaseRecovery(t *testing.T) { t.Fatal(err) } run, err = store.GetRun(ctx, "00000000-0000-0000-0000-000000000001", run.ID) - if err != nil || len(run.Tasks) != 1 || run.Tasks[0].Status != "DISPATCHING" { - t.Fatalf("task was not dispatched: run=%+v err=%v", run, err) + if err != nil || len(run.Tasks) != taskCount { + t.Fatalf("tasks were not dispatched: count=%d err=%v", len(run.Tasks), err) } - taskID := run.Tasks[0].ID - first, err := store.LeaseTask(ctx, taskID, "worker-crashed", 150*time.Millisecond) - if err != nil { - t.Fatal(err) + workerByTask := make(map[string]string, taskCount) + for i, task := range run.Tasks { + if task.Status != "DISPATCHING" { + t.Fatalf("task %q status=%s, want DISPATCHING", task.TaskKey, task.Status) + } + workerID := fmt.Sprintf("worker-crashed-%02d", i) + workerByTask[task.ID] = workerID + if _, err = store.LeaseTask(ctx, task.ID, workerID, 150*time.Millisecond); err != nil { + t.Fatal(err) + } + if _, err = store.StartTask(ctx, task.ID, workerID); err != nil { + t.Fatal(err) + } } - if _, err = store.StartTask(ctx, taskID, "worker-crashed"); err != nil { - t.Fatal(err) + for _, task := range run.Tasks { + waitForLeaseExpiry(t, ctx, store, task.ID) } - waitForLeaseExpiry(t, ctx, store, taskID) + recoveryStarted := time.Now() if err = service.RunOnce(ctx); err != nil { t.Fatal(err) } + recoveryDuration := time.Since(recoveryStarted) recovered, err := store.GetRun(ctx, "00000000-0000-0000-0000-000000000001", run.ID) if err != nil { t.Fatal(err) } - task := recovered.Tasks[0] - if task.Status != "RETRY_WAIT" || task.AttemptCount != 1 || task.LeaseOwner != nil || task.LeaseExpiresAt != nil { - t.Fatalf("expired lease was not recovered: %+v", task) - } - if task.AvailableAt.Before(time.Now().Add(time.Second)) { - t.Fatalf("retry backoff was not applied: available_at=%s", task.AvailableAt) - } - if _, _, err = store.HeartbeatTask(ctx, taskID, "worker-crashed", time.Minute); !errors.Is(err, storage.ErrLeaseLost) { - t.Fatalf("stale worker heartbeat error=%v, want ErrLeaseLost", err) + latestAvailability := time.Time{} + for _, task := range recovered.Tasks { + if task.Status != "RETRY_WAIT" || task.AttemptCount != 1 || task.LeaseOwner != nil || task.LeaseExpiresAt != nil { + t.Fatalf("expired lease was not recovered: %+v", task) + } + if task.AvailableAt.After(latestAvailability) { + latestAvailability = task.AvailableAt + } + staleWorker := workerByTask[task.ID] + if _, _, heartbeatErr := store.HeartbeatTask(ctx, task.ID, staleWorker, time.Minute); !errors.Is(heartbeatErr, storage.ErrLeaseLost) { + t.Fatalf("stale worker heartbeat task=%s error=%v, want ErrLeaseLost", task.ID, heartbeatErr) + } + if _, completeErr := store.CompleteTask(ctx, task.ID, staleWorker, json.RawMessage(`{"late":true}`), ""); !errors.Is(completeErr, storage.ErrLeaseLost) { + t.Fatalf("stale worker completion task=%s error=%v, want ErrLeaseLost", task.ID, completeErr) + } + assertAttempt(t, ctx, store, task.ID, 1, staleWorker, "RETRY_WAIT", "LeaseExpired") + assertOutboxEvent(t, ctx, store, task.ID, "task.retry_wait") } - assertAttempt(t, ctx, store, taskID, 1, "worker-crashed", "RETRY_WAIT", "LeaseExpired") - assertOutboxEvent(t, ctx, store, taskID, "task.retry_wait") + t.Logf("recovered %d simultaneously expired leases in %s", taskCount, recoveryDuration) - time.Sleep(time.Until(task.AvailableAt) + 25*time.Millisecond) + time.Sleep(time.Until(latestAvailability) + 25*time.Millisecond) if err = service.RunOnce(ctx); err != nil { t.Fatal(err) } - second, err := store.LeaseTask(ctx, taskID, "worker-replacement", time.Minute) - if err != nil { - t.Fatal(err) + for i, task := range recovered.Tasks { + workerID := fmt.Sprintf("worker-replacement-%02d", i) + second, leaseErr := store.LeaseTask(ctx, task.ID, workerID, time.Minute) + if leaseErr != nil { + t.Fatal(leaseErr) + } + if second.AttemptCount != 2 { + t.Fatalf("replacement attempt=%d, want 2", second.AttemptCount) + } + if _, err = store.StartTask(ctx, task.ID, workerID); err != nil { + t.Fatal(err) + } + if _, err = store.CompleteTask(ctx, task.ID, workerID, json.RawMessage(`{"recovered":true}`), ""); err != nil { + t.Fatal(err) + } } - if second.AttemptCount != first.AttemptCount+1 { - t.Fatalf("replacement attempt=%d, want %d", second.AttemptCount, first.AttemptCount+1) + completed, err := store.GetRun(ctx, "00000000-0000-0000-0000-000000000001", run.ID) + if err != nil || completed.Status != "SUCCEEDED" || len(completed.Tasks) != taskCount { + t.Fatalf("replacement worker did not complete run: run=%+v err=%v", completed, err) } - if _, err = store.StartTask(ctx, taskID, "worker-replacement"); err != nil { - t.Fatal(err) + for i, task := range completed.Tasks { + if task.Status != "SUCCEEDED" || task.AttemptCount != 2 { + t.Fatalf("recovered task final state: %+v", task) + } + assertAttempt(t, ctx, store, task.ID, 2, fmt.Sprintf("worker-replacement-%02d", i), "SUCCEEDED", "") } - if _, err = store.CompleteTask(ctx, taskID, "worker-replacement", json.RawMessage(`{"recovered":true}`), ""); err != nil { + var totalAttempts, recoveredTasks int + if err = store.Pool.QueryRow(ctx, `SELECT count(*),count(DISTINCT task_run_id) FILTER (WHERE attempt_number=2) FROM task_attempts WHERE task_run_id IN (SELECT id FROM task_runs WHERE workflow_run_id=$1)`, run.ID).Scan(&totalAttempts, &recoveredTasks); err != nil { t.Fatal(err) } - completed, err := store.GetRun(ctx, "00000000-0000-0000-0000-000000000001", run.ID) - if err != nil || completed.Status != "SUCCEEDED" || completed.Tasks[0].Status != "SUCCEEDED" { - t.Fatalf("replacement worker did not complete run: run=%+v err=%v", completed, err) + if totalAttempts != taskCount*2 || recoveredTasks != taskCount { + t.Fatalf("attempt history: total=%d recovered_tasks=%d", totalAttempts, recoveredTasks) } - assertAttempt(t, ctx, store, taskID, 2, "worker-replacement", "SUCCEEDED", "") } func TestDuplicateDispatchIsLeasedOnce(t *testing.T) { @@ -875,6 +926,214 @@ func TestTransactionalOutboxRecoversAfterBrokerOutage(t *testing.T) { } } +func TestOutboxPublishesWithoutHoldingDatabaseLocks(t *testing.T) { + ctx := context.Background() + store := postgresStore(t, ctx) + publisher := &blockingPublisher{started: make(chan struct{}), release: make(chan struct{})} + service := scheduler.Service{Store: store, Publisher: publisher} + tenantID := "00000000-0000-0000-0000-000000000001" + userID := "00000000-0000-0000-0000-000000000001" + definition, err := store.CreateWorkflow(ctx, tenantID, userID, "outbox-lock-window", workflow.DAG{Tasks: map[string]workflow.TaskSpec{"only": {Handler: "test.only"}}}) + if err != nil { + t.Fatal(err) + } + run, created, err := store.CreateRun(ctx, tenantID, userID, definition.ID, "outbox-lock-window", json.RawMessage(`{}`)) + if err != nil || !created { + t.Fatalf("create run: created=%v err=%v", created, err) + } + var eventID string + if err = store.Pool.QueryRow(ctx, `SELECT id FROM outbox_events WHERE aggregate_id=$1`, run.ID).Scan(&eventID); err != nil { + t.Fatal(err) + } + + publishDone := make(chan error, 1) + go func() { publishDone <- service.PublishOnce(ctx) }() + select { + case <-publisher.started: + case <-time.After(5 * time.Second): + t.Fatal("publisher was not called") + } + + tx, err := store.Pool.Begin(ctx) + if err != nil { + t.Fatal(err) + } + var lockedID string + if err = tx.QueryRow(ctx, `SELECT id FROM outbox_events WHERE id=$1 FOR UPDATE NOWAIT`, eventID).Scan(&lockedID); err != nil { + _ = tx.Rollback(ctx) + t.Fatalf("Kafka publish retained a PostgreSQL row lock: %v", err) + } + if err = tx.Rollback(ctx); err != nil { + t.Fatal(err) + } + close(publisher.release) + if err = <-publishDone; err != nil { + t.Fatal(err) + } + + var published bool + if err = store.Pool.QueryRow(ctx, `SELECT published_at IS NOT NULL FROM outbox_events WHERE id=$1`, eventID).Scan(&published); err != nil || !published { + t.Fatalf("event acknowledgement: published=%v err=%v", published, err) + } +} + +func TestOutboxRepublishesAfterDatabaseAcknowledgementFailure(t *testing.T) { + ctx := context.Background() + store := postgresStore(t, ctx) + _, broker := redpandaContainer(t, ctx) + topic := "outbox-ack-failure" + createTopic(t, ctx, broker, topic) + publisher := messaging.NewPublisher([]string{broker}, topic) + t.Cleanup(func() { _ = publisher.Close() }) + service := scheduler.Service{Store: store, Publisher: publisher} + tenantID := "00000000-0000-0000-0000-000000000001" + userID := "00000000-0000-0000-0000-000000000001" + definition, err := store.CreateWorkflow(ctx, tenantID, userID, "outbox-ack-failure", workflow.DAG{Tasks: map[string]workflow.TaskSpec{"only": {Handler: "test.only"}}}) + if err != nil { + t.Fatal(err) + } + run, created, err := store.CreateRun(ctx, tenantID, userID, definition.ID, "outbox-ack-failure", json.RawMessage(`{}`)) + if err != nil || !created { + t.Fatalf("create run: created=%v err=%v", created, err) + } + var eventID string + if err = store.Pool.QueryRow(ctx, `SELECT id FROM outbox_events WHERE aggregate_id=$1`, run.ID).Scan(&eventID); err != nil { + t.Fatal(err) + } + + if _, err = store.Pool.Exec(ctx, `CREATE FUNCTION reject_outbox_ack() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN IF OLD.published_at IS NULL AND NEW.published_at IS NOT NULL THEN RAISE EXCEPTION 'injected acknowledgement failure'; END IF; RETURN NEW; END $$`); err != nil { + t.Fatal(err) + } + if _, err = store.Pool.Exec(ctx, `CREATE TRIGGER reject_outbox_ack BEFORE UPDATE ON outbox_events FOR EACH ROW EXECUTE FUNCTION reject_outbox_ack()`); err != nil { + t.Fatal(err) + } + if err = service.PublishOnce(ctx); err == nil { + t.Fatal("publication unexpectedly acknowledged while the database rejected the update") + } + if _, err = store.Pool.Exec(ctx, `DROP TRIGGER reject_outbox_ack ON outbox_events`); err != nil { + t.Fatal(err) + } + if err = service.PublishOnce(ctx); err != nil { + t.Fatal(err) + } + + reader := kafka.NewReader(kafka.ReaderConfig{Brokers: []string{broker}, Topic: topic, Partition: 0, MinBytes: 1, MaxBytes: 1e6, StartOffset: kafka.FirstOffset}) + t.Cleanup(func() { _ = reader.Close() }) + readContext, cancelRead := context.WithTimeout(ctx, 10*time.Second) + defer cancelRead() + for i := 0; i < 2; i++ { + message, readErr := reader.FetchMessage(readContext) + if readErr != nil { + t.Fatal(readErr) + } + if got := headerValue(message.Headers, "event_id"); got != eventID { + t.Fatalf("publication %d event_id=%q, want duplicate %q", i+1, got, eventID) + } + } + var published bool + var attempts int + if err = store.Pool.QueryRow(ctx, `SELECT published_at IS NOT NULL,publish_attempts FROM outbox_events WHERE id=$1`, eventID).Scan(&published, &attempts); err != nil { + t.Fatal(err) + } + if !published || attempts != 2 { + t.Fatalf("acknowledgement recovery: published=%v publish_attempts=%d", published, attempts) + } +} + +func TestConcurrentOutboxPublishersPreserveWorkflowOrderingAcrossPartitions(t *testing.T) { + ctx := context.Background() + store := postgresStore(t, ctx) + _, broker := redpandaContainer(t, ctx) + topic := "outbox-concurrent" + createTopic(t, ctx, broker, topic, 6) + publisherA := messaging.NewPublisher([]string{broker}, topic) + publisherB := messaging.NewPublisher([]string{broker}, topic) + t.Cleanup(func() { _ = publisherA.Close() }) + t.Cleanup(func() { _ = publisherB.Close() }) + serviceA := scheduler.Service{Store: store, Publisher: publisherA, OutboxBatchSize: 1} + serviceB := scheduler.Service{Store: store, Publisher: publisherB, OutboxBatchSize: 1} + tenantID := "00000000-0000-0000-0000-000000000001" + userID := "00000000-0000-0000-0000-000000000001" + definition, err := store.CreateWorkflow(ctx, tenantID, userID, "outbox-concurrent", workflow.DAG{Tasks: map[string]workflow.TaskSpec{"only": {Handler: "test.only"}}}) + if err != nil { + t.Fatal(err) + } + const runCount = 24 + for i := 0; i < runCount; i++ { + if _, created, createErr := store.CreateRun(ctx, tenantID, userID, definition.ID, fmt.Sprintf("outbox-concurrent-%02d", i), json.RawMessage(`{}`)); createErr != nil || !created { + t.Fatalf("create run %d: created=%v err=%v", i, created, createErr) + } + } + if err = serviceA.RunOnce(ctx); err != nil { + t.Fatal(err) + } + + start := make(chan struct{}) + errorsByPublisher := make(chan error, 2) + for _, service := range []*scheduler.Service{&serviceA, &serviceB} { + go func(service *scheduler.Service) { + <-start + errorsByPublisher <- service.PublishOnce(ctx) + }(service) + } + close(start) + for i := 0; i < 2; i++ { + if publishErr := <-errorsByPublisher; publishErr != nil { + t.Fatal(publishErr) + } + } + + reader := kafka.NewReader(kafka.ReaderConfig{Brokers: []string{broker}, Topic: topic, GroupID: "outbox-concurrent-reader", MinBytes: 1, MaxBytes: 1e6}) + t.Cleanup(func() { _ = reader.Close() }) + readContext, cancelRead := context.WithTimeout(ctx, 15*time.Second) + defer cancelRead() + seenEvents := make(map[string]bool, runCount*2) + eventsByRun := make(map[string][]string, runCount) + partitionByRun := make(map[string]int, runCount) + usedPartitions := make(map[int]bool) + for i := 0; i < runCount*2; i++ { + message, readErr := reader.FetchMessage(readContext) + if readErr != nil { + t.Fatal(readErr) + } + eventID := headerValue(message.Headers, "event_id") + if seenEvents[eventID] { + t.Fatalf("event %s was published more than once", eventID) + } + seenEvents[eventID] = true + var payload struct { + WorkflowRunID string `json:"workflow_run_id"` + } + if err = json.Unmarshal(message.Value, &payload); err != nil { + t.Fatal(err) + } + if string(message.Key) != payload.WorkflowRunID { + t.Fatalf("partition key=%q workflow_run_id=%q", message.Key, payload.WorkflowRunID) + } + if previous, ok := partitionByRun[payload.WorkflowRunID]; ok && previous != message.Partition { + t.Fatalf("workflow %s moved from partition %d to %d", payload.WorkflowRunID, previous, message.Partition) + } + partitionByRun[payload.WorkflowRunID] = message.Partition + usedPartitions[message.Partition] = true + eventsByRun[payload.WorkflowRunID] = append(eventsByRun[payload.WorkflowRunID], headerValue(message.Headers, "event_type")) + } + if len(usedPartitions) < 2 { + t.Fatalf("workflow keys used only %d Kafka partition", len(usedPartitions)) + } + for runID, events := range eventsByRun { + if len(events) != 2 || events[0] != "workflow.run.created" || events[1] != "task.dispatch" { + t.Fatalf("workflow %s event order=%v", runID, events) + } + } + var unpublished, claimed int + if err = store.Pool.QueryRow(ctx, `SELECT count(*) FILTER (WHERE published_at IS NULL),count(*) FILTER (WHERE claim_token IS NOT NULL) FROM outbox_events`).Scan(&unpublished, &claimed); err != nil { + t.Fatal(err) + } + if unpublished != 0 || claimed != 0 { + t.Fatalf("outbox after concurrent publication: unpublished=%d claimed=%d", unpublished, claimed) + } +} + func TestTransactionalOutboxRecoversAfterKafkaLatency(t *testing.T) { ctx := context.Background() store := postgresStore(t, ctx) @@ -1460,18 +1719,38 @@ func kafkaProxy(t *testing.T, ctx context.Context, broker *redpanda.Container) ( return net.JoinHostPort(host, port), proxy } -func createTopic(t *testing.T, ctx context.Context, broker, topic string) { +func createTopic(t *testing.T, ctx context.Context, broker, topic string, partitions ...int) { t.Helper() + partitionCount := 1 + if len(partitions) > 0 { + partitionCount = partitions[0] + } connection, err := kafka.DialContext(ctx, "tcp", broker) if err != nil { t.Fatal(err) } defer connection.Close() - if err = connection.CreateTopics(kafka.TopicConfig{Topic: topic, NumPartitions: 1, ReplicationFactor: 1}); err != nil { + if err = connection.CreateTopics(kafka.TopicConfig{Topic: topic, NumPartitions: partitionCount, ReplicationFactor: 1}); err != nil { t.Fatal(err) } } +type blockingPublisher struct { + started chan struct{} + release chan struct{} + once sync.Once +} + +func (p *blockingPublisher) Publish(ctx context.Context, _, _ []byte, _ map[string]string) error { + p.once.Do(func() { close(p.started) }) + select { + case <-p.release: + return nil + case <-ctx.Done(): + return ctx.Err() + } +} + func headerValue(headers []kafka.Header, key string) string { for _, header := range headers { if header.Key == key { diff --git a/tests/load/submissions.js b/tests/load/submissions.js index 67a6c30..2fac80b 100644 --- a/tests/load/submissions.js +++ b/tests/load/submissions.js @@ -1,12 +1,25 @@ import http from 'k6/http'; -import { check, sleep } from 'k6'; -import { randomUUID } from 'https://jslib.k6.io/k6-utils/1.4.0/index.js'; +import { check } from 'k6'; -export const options = { scenarios: { submissions: { executor: 'constant-arrival-rate', rate: 100, timeUnit: '1s', duration: '30s', preAllocatedVUs: 100, maxVUs: 300 } }, thresholds: { http_req_duration: ['p(95)<150'], http_req_failed: ['rate<0.01'] } }; +export const options = { + scenarios: { + submissions: { + executor: 'constant-arrival-rate', + rate: Number(__ENV.RUNMESH_RATE || 50), + timeUnit: '1s', + duration: __ENV.RUNMESH_DURATION || '30s', + preAllocatedVUs: 100, + maxVUs: 300, + }, + }, + // Latency is evidence, not a merge gate. Correctness remains blocking. + thresholds: { checks: ['rate==1'], http_req_failed: ['rate==0'] }, +}; const api = __ENV.RUNMESH_API || 'http://localhost:8080'; const workflow = __ENV.RUNMESH_WORKFLOW_ID; const token = __ENV.RUNMESH_TOKEN; export default function () { - const response = http.post(`${api}/v1/workflows/${workflow}/runs`, JSON.stringify({ input: { value: Math.random() } }), { headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', 'Idempotency-Key': randomUUID() } }); - check(response, { 'created': r => r.status === 201 }); sleep(0.01); + const key = `benchmark-${__VU}-${__ITER}-${Date.now()}`; + const response = http.post(`${api}/v1/workflows/${workflow}/runs`, JSON.stringify({ input: { value: Math.random() } }), { headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', 'Idempotency-Key': key } }); + check(response, { 'created': r => r.status === 201 }); } diff --git a/web/Dockerfile b/web/Dockerfile index 22d395d..2805436 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -1,13 +1,15 @@ FROM node:22-alpine AS build WORKDIR /app COPY web/package*.json ./ -RUN npm install +RUN npm ci COPY web . -ARG VITE_DEV_AUTH=true +ARG WEB_DEVELOPMENT_MODE=true ARG VITE_OIDC_AUTHORITY=http://localhost:8180/realms/runmesh ARG VITE_OIDC_CLIENT_ID=runmesh-web -ENV VITE_DEV_AUTH=$VITE_DEV_AUTH VITE_OIDC_AUTHORITY=$VITE_OIDC_AUTHORITY VITE_OIDC_CLIENT_ID=$VITE_OIDC_CLIENT_ID -RUN npm run build +RUN VITE_DEV_AUTH="$WEB_DEVELOPMENT_MODE" \ + VITE_OIDC_AUTHORITY="$VITE_OIDC_AUTHORITY" \ + VITE_OIDC_CLIENT_ID="$VITE_OIDC_CLIENT_ID" \ + npm run build FROM nginx:1.27-alpine COPY web/nginx.conf /etc/nginx/conf.d/default.conf diff --git a/web/demo/capture.spec.ts b/web/demo/capture.spec.ts new file mode 100644 index 0000000..1250036 --- /dev/null +++ b/web/demo/capture.spec.ts @@ -0,0 +1,73 @@ +import http from 'node:http' +import { expect, test } from '@playwright/test' +import { apiURL, authorization, createRun, createWorkflow, login, token, waitForRun } from '../e2e/helpers' + +type Container = { Id: string; Names: string[] } + +function dockerRequest(method: string, path: string): Promise { + return new Promise((resolve, reject) => { + const request = http.request({ socketPath: '/var/run/docker.sock', method, path }, response => { + const chunks: Buffer[] = [] + response.on('data', chunk => chunks.push(Buffer.from(chunk))) + response.on('end', () => response.statusCode && response.statusCode < 300 + ? resolve(Buffer.concat(chunks)) + : reject(new Error(`Docker API ${method} ${path} returned ${response.statusCode}: ${Buffer.concat(chunks)}`))) + }) + request.on('error', reject) + request.end() + }) +} + +async function terminateWorkerProcesses(): Promise { + const raw = await dockerRequest('GET', '/containers/json') + const containers = (JSON.parse(raw.toString()) as Container[]).filter(container => + container.Names.some(name => name.includes('runmesh-worker-go') || name.includes('runmesh-worker-python'))) + await Promise.all(containers.map(container => dockerRequest('POST', `/containers/${container.Id}/kill`))) + return containers +} + +async function restartWorkerProcesses(containers: Container[]): Promise { + await Promise.all(containers.map(container => dockerRequest('POST', `/containers/${container.Id}/start`))) +} + +test('capture the real dashboard and worker lease recovery', async ({ page, request }) => { + await login(page) + await page.waitForTimeout(4_000) + await page.screenshot({ path: '../docs/demo/dashboard-overview.png', fullPage: true }) + + const created = page.waitForResponse(response => response.url().endsWith('/v1/workflows') && response.request().method() === 'POST') + await page.getByRole('button', { name: 'New workflow' }).click() + const workflowName = ((await created).json() as Promise<{ name: string }>).then(workflow => workflow.name) + await page.locator('.workflow-card').filter({ hasText: await workflowName }).getByRole('button', { name: 'Launch' }).click() + await expect(page.locator('.drawer .run-meta .status')).toHaveText('SUCCEEDED', { timeout: 20_000 }) + await page.screenshot({ path: '../docs/demo/run-detail.png' }) + await page.getByRole('button', { name: 'Close run detail' }).click() + await expect(page.getByRole('dialog')).toBeHidden() + + const bearer = await token(request) + const workflow = await createWorkflow(request, bearer, 'examples.slow', 3) + const runID = await createRun(request, bearer, workflow, { delay_ms: 5_000 }) + let running = false + for (let attempt = 0; attempt < 40; attempt++) { + const response = await request.get(`${apiURL}/v1/runs/${runID}`, { headers: authorization(bearer) }) + const run = await response.json() as { tasks?: { status: string }[] } + if (run.tasks?.some(task => task.status === 'RUNNING')) { running = true; break } + await page.waitForTimeout(250) + } + expect(running).toBeTruthy() + + await page.getByRole('button', { name: 'Overview' }).click() + await page.getByLabel('Search runs').fill(runID) + await page.getByText(runID.slice(0, 8), { exact: true }).click() + await expect(page.locator('.drawer').getByText('RUNNING').first()).toBeVisible() + const terminatedWorkers = await terminateWorkerProcesses() + expect(terminatedWorkers.length).toBeGreaterThanOrEqual(2) + await page.waitForTimeout(8_000) + await restartWorkerProcesses(terminatedWorkers) + + await waitForRun(request, bearer, runID, 'SUCCEEDED', 60_000) + await expect(page.locator('.drawer .run-meta .status')).toHaveText('SUCCEEDED', { timeout: 5_000 }) + await expect(page.getByText('Attempt 2')).toBeVisible() + await page.screenshot({ path: '../docs/demo/lease-recovery.png', fullPage: true }) + await page.waitForTimeout(15_000) +}) diff --git a/web/e2e/dashboard.spec.ts b/web/e2e/dashboard.spec.ts index b6005cf..2602f4f 100644 --- a/web/e2e/dashboard.spec.ts +++ b/web/e2e/dashboard.spec.ts @@ -10,7 +10,7 @@ test('Keycloak login, workflow execution, live updates, cancellation, and dead-l await expect(page.getByRole('heading', { name: 'Workflows' })).toBeVisible() await page.locator('.workflow-card').filter({ hasText: await workflowName }).getByRole('button', { name: 'Launch' }).click() await expect(page.getByText('RUN DETAIL')).toBeVisible() - await expect(page.locator('.drawer').getByText('SUCCEEDED').first()).toBeVisible({ timeout: 15_000 }) + await expect(page.locator('.drawer .run-meta .status')).toHaveText('SUCCEEDED', { timeout: 15_000 }) await page.locator('.drawer .icon-button').click() const bearer = await token(request) diff --git a/web/package-lock.json b/web/package-lock.json index 1a89e21..be95513 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -8,27 +8,28 @@ "name": "runmesh-web", "version": "0.1.0", "dependencies": { - "@vitejs/plugin-react": "latest", - "lucide-react": "latest", + "@vitejs/plugin-react": "^6.0.3", + "lucide-react": "^1.25.0", "oidc-client-ts": "3.5.0", - "react": "latest", - "react-dom": "latest" + "react": "^19.2.7", + "react-dom": "^19.2.7" }, "devDependencies": { - "@eslint/js": "latest", + "@eslint/js": "^10.0.1", "@playwright/test": "1.56.1", - "@testing-library/react": "latest", - "@types/react": "latest", - "@types/react-dom": "latest", - "eslint": "latest", - "eslint-plugin-react-hooks": "latest", - "eslint-plugin-react-refresh": "latest", - "globals": "latest", - "jsdom": "latest", - "typescript": "latest", - "typescript-eslint": "latest", - "vite": "latest", - "vitest": "latest" + "@testing-library/react": "^16.3.2", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "@vitest/coverage-v8": "^4.1.10", + "eslint": "^10.7.0", + "eslint-plugin-react-hooks": "^7.1.1", + "eslint-plugin-react-refresh": "^0.5.3", + "globals": "^17.7.0", + "jsdom": "^29.1.1", + "typescript": "^6.0.3", + "typescript-eslint": "^8.64.0", + "vite": "^8.1.5", + "vitest": "^4.1.10" } }, "node_modules/@asamuzakjp/css-color": { @@ -332,6 +333,16 @@ "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@bramus/specificity": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", @@ -1470,6 +1481,37 @@ } } }, + "node_modules/@vitest/coverage-v8": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.10.tgz", + "integrity": "sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.1.10", + "ast-v8-to-istanbul": "^1.0.0", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.2", + "obug": "^2.1.1", + "std-env": "^4.0.0-rc.1", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "4.1.10", + "vitest": "4.1.10" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, "node_modules/@vitest/expect": { "version": "4.1.10", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", @@ -1669,6 +1711,25 @@ "node": ">=12" } }, + "node_modules/ast-v8-to-istanbul": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.5.tgz", + "integrity": "sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", @@ -2291,6 +2352,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/hermes-estree": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", @@ -2321,6 +2392,13 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2378,6 +2456,45 @@ "dev": true, "license": "ISC" }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2821,6 +2938,47 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/magicast": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz", + "integrity": "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.3", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mdn-data": { "version": "2.27.1", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", @@ -3285,6 +3443,19 @@ "dev": true, "license": "MIT" }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", diff --git a/web/package.json b/web/package.json index dbc4639..1f975ac 100644 --- a/web/package.json +++ b/web/package.json @@ -8,29 +8,31 @@ "build": "tsc -b && vite build", "lint": "eslint .", "test": "vitest", + "test:coverage": "vitest --run --coverage", "test:e2e": "playwright test" }, "dependencies": { - "@vitejs/plugin-react": "latest", - "lucide-react": "latest", + "@vitejs/plugin-react": "^6.0.3", + "lucide-react": "^1.25.0", "oidc-client-ts": "3.5.0", - "react": "latest", - "react-dom": "latest" + "react": "^19.2.7", + "react-dom": "^19.2.7" }, "devDependencies": { "@playwright/test": "1.56.1", - "@eslint/js": "latest", - "@testing-library/react": "latest", - "@types/react": "latest", - "@types/react-dom": "latest", - "eslint": "latest", - "eslint-plugin-react-hooks": "latest", - "eslint-plugin-react-refresh": "latest", - "globals": "latest", - "jsdom": "latest", - "typescript": "latest", - "typescript-eslint": "latest", - "vite": "latest", - "vitest": "latest" + "@vitest/coverage-v8": "^4.1.10", + "@eslint/js": "^10.0.1", + "@testing-library/react": "^16.3.2", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "eslint": "^10.7.0", + "eslint-plugin-react-hooks": "^7.1.1", + "eslint-plugin-react-refresh": "^0.5.3", + "globals": "^17.7.0", + "jsdom": "^29.1.1", + "typescript": "^6.0.3", + "typescript-eslint": "^8.64.0", + "vite": "^8.1.5", + "vitest": "^4.1.10" } } diff --git a/web/playwright.demo.config.ts b/web/playwright.demo.config.ts new file mode 100644 index 0000000..d894a37 --- /dev/null +++ b/web/playwright.demo.config.ts @@ -0,0 +1,15 @@ +import { defineConfig, devices } from '@playwright/test' + +export default defineConfig({ + testDir: './demo', + timeout: 90_000, + workers: 1, + reporter: 'line', + outputDir: '../docs/demo/test-output', + use: { + baseURL: 'http://localhost:3000', + video: { mode: 'on', size: { width: 1280, height: 720 } }, + viewport: { width: 1280, height: 720 }, + ...devices['Desktop Chrome'], + }, +}) diff --git a/web/scripts/forward-host.mjs b/web/scripts/forward-host.mjs new file mode 100644 index 0000000..e910219 --- /dev/null +++ b/web/scripts/forward-host.mjs @@ -0,0 +1,11 @@ +import net from 'node:net' + +for (const port of [3000, 8080, 8180, 9000]) { + net.createServer((client) => { + const upstream = net.connect(port, 'host.docker.internal') + client.on('error', () => upstream.destroy()) + upstream.on('error', () => client.destroy()) + client.pipe(upstream) + upstream.pipe(client) + }).listen(port, '127.0.0.1') +} diff --git a/web/src/App.test.tsx b/web/src/App.test.tsx index dd02d93..81fe4e1 100644 --- a/web/src/App.test.tsx +++ b/web/src/App.test.tsx @@ -1,19 +1,126 @@ -import { act } from 'react' -import { createRoot } from 'react-dom/client' +import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import App from './App' +const now = new Date().toISOString() +const run = { + id: 'run-12345678', + workflow_definition_id: 'workflow-1', + workflow_version: 3, + status: 'FAILED', + idempotency_key: 'tenant-order-42', + created_at: now, +} + +function response(body: unknown, status = 200) { + return new Response(JSON.stringify(body), { + status, + statusText: status === 401 ? 'Unauthorized' : 'OK', + headers: { 'Content-Type': 'application/json' }, + }) +} + describe('operations dashboard', () => { - let container: HTMLDivElement beforeEach(() => { - container = document.createElement('div') - document.body.appendChild(container) - vi.stubGlobal('fetch', vi.fn(async () => ({ ok: true, status: 200, json: async () => ({ items: [] }) }))) - }) - afterEach(() => { container.remove(); vi.unstubAllGlobals() }) - it('renders the live operations overview', async () => { - await act(async () => { createRoot(container).render() }) - expect(container.textContent).toContain('Your workflows, moving.') - expect(container.textContent).toContain('No executions yet') + vi.stubGlobal('fetch', vi.fn(async (input: string | URL | Request) => { + const path = String(input) + if (path.endsWith('/v1/runs')) return response({ items: [run] }) + return response({ items: [] }) + })) + }) + + afterEach(() => { + cleanup() + vi.restoreAllMocks() + vi.unstubAllGlobals() + }) + + it('moves from the loading state to the live operations overview', async () => { + render() + expect(screen.getByText('Loading dashboard')).toBeTruthy() + expect(await screen.findByText('Your workflows, moving.')).toBeTruthy() + expect(screen.getByText('run-1234')).toBeTruthy() + expect(screen.getByText('Live updates reconnecting')).toBeTruthy() + }) + + it('filters executions by a tenant-scoped idempotency key', async () => { + render() + await screen.findByText('run-1234') + fireEvent.change(screen.getByLabelText('Search runs'), { target: { value: 'missing' } }) + expect(screen.getByText('No matching executions')).toBeTruthy() + fireEvent.change(screen.getByLabelText('Search runs'), { target: { value: 'order-42' } }) + expect(screen.getByText('run-1234')).toBeTruthy() + }) + + it('shows task dependencies, worker identity, and failed attempt history', async () => { + vi.mocked(fetch).mockImplementation(async (input: string | URL | Request) => { + const path = String(input) + if (path.endsWith('/v1/runs/run-12345678')) return response({ + ...run, + tasks: [{ + id: 'task-2', + task_key: 'notify', + handler: 'examples.notify', + status: 'DEAD', + attempt_count: 2, + maximum_attempts: 2, + available_at: now, + depends_on: ['extract'], + attempts: [{ + attempt_number: 2, + worker_id: 'python-worker-2', + scheduled_at: now, + started_at: now, + ended_at: now, + exit_status: 'FAILED', + error_type: 'TimeoutError', + error_message: 'handler exceeded deadline', + log_artifact_download_url: 'http://artifacts.example/log', + }], + }], + }) + if (path.endsWith('/v1/runs')) return response({ items: [run] }) + return response({ items: [] }) + }) + + render() + fireEvent.click(await screen.findByText('run-1234')) + expect(await screen.findByRole('dialog', { name: /run run-12345678/i })).toBeTruthy() + expect(screen.getByText('depends on extract')).toBeTruthy() + expect(screen.getByText('python-worker-2')).toBeTruthy() + expect(screen.getByText('TimeoutError: handler exceeded deadline')).toBeTruthy() + expect(screen.getByRole('link', { name: 'Log' }).getAttribute('href')).toBe('http://artifacts.example/log') + }) + + it('does not reopen a closed drawer when an older refresh finishes', async () => { + let detailRequests = 0 + let resolveRefresh!: (value: Response) => void + const pendingRefresh = new Promise((resolve) => { resolveRefresh = resolve }) + vi.mocked(fetch).mockImplementation(async (input: string | URL | Request) => { + const path = String(input) + if (path.endsWith('/v1/runs/run-12345678')) { + detailRequests += 1 + if (detailRequests >= 2) return pendingRefresh + return response({ ...run, tasks: [] }) + } + if (path.endsWith('/v1/runs')) return response({ items: [run] }) + return response({ items: [] }) + }) + + render() + fireEvent.click(await screen.findByText('run-1234')) + await screen.findByRole('dialog') + fireEvent.click(screen.getByRole('button', { name: 'Refresh dashboard' })) + await waitFor(() => expect(detailRequests).toBeGreaterThanOrEqual(2)) + fireEvent.click(screen.getByRole('button', { name: 'Close run detail' })) + resolveRefresh(response({ ...run, tasks: [] })) + await waitFor(() => expect(screen.queryByRole('dialog')).toBeNull()) + }) + + it('renders an actionable unauthorized state', async () => { + vi.mocked(fetch).mockResolvedValue(response({ error: 'invalid token' }, 401)) + render() + await waitFor(() => expect(screen.getByRole('alert').textContent).toContain('session is no longer authorized')) + expect(screen.getByRole('button', { name: 'Sign in' })).toBeTruthy() }) }) diff --git a/web/src/App.tsx b/web/src/App.tsx index 3a42910..8c96473 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1,12 +1,41 @@ import { useCallback, useEffect, useMemo, useState } from 'react' -import { Activity, AlertTriangle, Boxes, Braces, ChevronRight, CirclePlay, Clock3, GitBranch, LayoutDashboard, Plus, Radio, RefreshCw, Search, Server, Workflow as WorkflowIcon, X } from 'lucide-react' -import { api, subscribeToEvents } from './api' -import type { Run, TaskRun, Worker, Workflow } from './types' +import { + Activity, + AlertTriangle, + Boxes, + Braces, + ChevronRight, + CirclePlay, + Clock3, + GitBranch, + LayoutDashboard, + Plus, + Radio, + RefreshCw, + Search, + Server, + Workflow as WorkflowIcon, + X, +} from 'lucide-react' +import { APIError, api, subscribeToEvents } from './api' +import type { Run, TaskAttempt, TaskRun, Worker, Workflow } from './types' type Page = 'Overview' | 'Workflows' | 'Workers' | 'Dead letter' -const nav: [Page, typeof Activity][] = [['Overview', LayoutDashboard], ['Workflows', WorkflowIcon], ['Workers', Server], ['Dead letter', AlertTriangle]] +type DashboardError = { message: string; status?: number } + +const nav: [Page, typeof Activity][] = [ + ['Overview', LayoutDashboard], + ['Workflows', WorkflowIcon], + ['Workers', Server], + ['Dead letter', AlertTriangle], +] const terminal = new Set(['SUCCEEDED', 'FAILED', 'CANCELLED']) +function dashboardError(value: unknown): DashboardError { + if (value instanceof APIError) return { message: value.message, status: value.status } + return { message: value instanceof Error ? value.message : 'Unable to reach the control plane' } +} + export default function App() { const [page, setPage] = useState('Overview') const [workflows, setWorkflows] = useState([]) @@ -14,17 +43,37 @@ export default function App() { const [workers, setWorkers] = useState([]) const [dead, setDead] = useState([]) const [selected, setSelected] = useState(null) - const [error, setError] = useState('') + const [error, setError] = useState(null) const [busy, setBusy] = useState(false) + const [loading, setLoading] = useState(true) + const [query, setQuery] = useState('') const [streamConnected, setStreamConnected] = useState(false) const selectedId = selected?.id const refresh = useCallback(async () => { try { - const [wf, rs, wk, dl] = await Promise.all([api.workflows(), api.runs(), api.workers(), api.dead()]) - setWorkflows(wf.items); setRuns(rs.items); setWorkers(wk.items.filter(worker => Date.now() - Date.parse(worker.last_seen_at) < 30_000)); setDead(dl.items); setError('') - if (selectedId) setSelected(await api.run(selectedId)) - } catch (e) { setError(e instanceof Error ? e.message : 'Unable to reach control plane') } + const [workflowResult, runResult, workerResult, deadResult] = await Promise.all([ + api.workflows(), + api.runs(), + api.workers(), + api.dead(), + ]) + setWorkflows(workflowResult.items) + setRuns(runResult.items) + setWorkers(workerResult.items.filter((worker) => Date.now() - Date.parse(worker.last_seen_at) < 30_000)) + setDead(deadResult.items) + if (selectedId) { + const detail = await api.run(selectedId) + // A refresh that started before the drawer closed must not reopen it, + // and an older response must not replace a newly selected run. + setSelected((current) => current?.id === selectedId ? detail : current) + } + setError(null) + } catch (value) { + setError(dashboardError(value)) + } finally { + setLoading(false) + } }, [selectedId]) useEffect(() => { @@ -36,47 +85,105 @@ export default function App() { refreshTimer = window.setTimeout(() => void refresh(), 150) }, setStreamConnected) return () => { - clearTimeout(initial); clearInterval(fallback); unsubscribe() - if (refreshTimer !== undefined) clearTimeout(refreshTimer) + window.clearTimeout(initial) + window.clearInterval(fallback) + unsubscribe() + if (refreshTimer !== undefined) window.clearTimeout(refreshTimer) } }, [refresh]) - const create = async () => { setBusy(true); try { await api.createSample(); await refresh(); setPage('Workflows') } catch (e) { setError(String(e)) } finally { setBusy(false) } } - const launch = async (id: string) => { setBusy(true); try { const run = await api.launch(id); setSelected(await api.run(run.id)); await refresh() } catch (e) { setError(String(e)) } finally { setBusy(false) } } - const stats = useMemo(() => ({ active: runs.filter(r => !terminal.has(r.status)).length, succeeded: runs.filter(r => r.status === 'SUCCEEDED').length, failed: runs.filter(r => r.status === 'FAILED').length }), [runs]) + + const perform = async (operation: () => Promise) => { + setBusy(true) + try { + await operation() + setError(null) + } catch (value) { + setError(dashboardError(value)) + } finally { + setBusy(false) + } + } + const create = () => perform(async () => { + await api.createSample() + await refresh() + setPage('Workflows') + }) + const launch = (id: string) => perform(async () => { + const run = await api.launch(id) + setSelected(await api.run(run.id)) + await refresh() + }) + const openRun = (run: Run) => perform(async () => setSelected(await api.run(run.id))) + const replay = (id: string) => perform(async () => { + await api.replay(id) + await refresh() + }) + + const stats = useMemo(() => ({ + active: runs.filter((run) => !terminal.has(run.status)).length, + succeeded: runs.filter((run) => run.status === 'SUCCEEDED').length, + failed: runs.filter((run) => run.status === 'FAILED').length, + }), [runs]) + const visibleRuns = useMemo(() => { + const needle = query.trim().toLowerCase() + if (!needle) return runs + return runs.filter((run) => `${run.id} ${run.idempotency_key} ${run.status}`.toLowerCase().includes(needle)) + }, [query, runs]) return

-

OPERATIONS / {page.toUpperCase()}

{page}

- {error &&
{error}
} -
- {page === 'Overview' && setSelected(await api.run(r.id))}/>} - {page === 'Workflows' && } - {page === 'Workers' && } - {page === 'Dead letter' && { await api.replay(id); await refresh() }}/>} +

OPERATIONS / {page.toUpperCase()}

{page}

{page === 'Overview' && }
+ {error &&
{error.status === 401 ? 'Your session is no longer authorized. Sign in again to continue.' : error.message}{error.status === 401 && }
} +
+ {loading ? : <> + {page === 'Overview' && void openRun(run)}/>} + {page === 'Workflows' && void launch(id)}/>} + {page === 'Workers' && } + {page === 'Dead letter' && void replay(id)}/>} + }
- {selected && setSelected(null)} onCancel={async () => { await api.cancel(selected.id); setSelected(await api.run(selected.id)); await refresh() }}/>} + {selected && setSelected(null)} onCancel={() => void perform(async () => { await api.cancel(selected.id); setSelected(await api.run(selected.id)); await refresh() })}/>}
} -function Overview({ stats, runs, workers, workflows, onRun }: { stats: {active:number;succeeded:number;failed:number}; runs:Run[]; workers:Worker[]; workflows:Workflow[]; onRun:(r:Run)=>void }) { - return <>
LIVE CONTROL PLANE

Your workflows, moving.

At-least-once delivery with leases, retries, and complete attempt history.

+function LoadingState() { + return
Loading dashboard{Array.from({ length: 5 }, (_, index) => )}
+} + +function Overview({ stats, runs, workers, workflows, onRun }: { stats: {active:number;succeeded:number;failed:number}; runs:Run[]; workers:Worker[]; workflows:Workflow[]; onRun:(run:Run)=>void }) { + return <>
LIVE CONTROL PLANE

Your workflows, moving.

At-least-once delivery with leases, retries, and complete attempt history.

} -function Stat({icon:Icon,label,value,detail,tone}:{icon:typeof Activity;label:string;value:number;detail:string;tone?:string}){return
{label}
{value.toLocaleString()}{detail}
} -function PanelTitle({title,subtitle}:{title:string;subtitle:string}){return

{title}

{subtitle}

} -function RunTable({runs,onRun}:{runs:Run[];onRun:(r:Run)=>void}){if(!runs.length)return ;return
RUN IDSTATUSVERSIONSTARTED
{runs.slice(0,8).map(r=>)}
} -function Workflows({workflows,onLaunch}:{workflows:Workflow[];onLaunch:(id:string)=>void}){return
{workflows.map(w=>

{w.name}

Version {w.version} · {Object.keys(w.dag.tasks).length} tasks

{Object.keys(w.dag.tasks).slice(0,4).map((key,i)=>{i>0&&}{key.slice(0,1).toUpperCase()})}
Updated {ago(w.created_at)}
)}{!workflows.length&&
}
} -function Workers({workers}:{workers:Worker[]}){return
{workers.map(w=>

{w.worker_id}

{w.handlers.join(' · ') || 'No handlers'}

{w.active_tasks} active
)}{!workers.length&&}
} -function DeadLetter({tasks,replay}:{tasks:TaskRun[];replay:(id:string)=>void}){return
{tasks.length?
TASKHANDLERATTEMPTSAVAILABLE
{tasks.map(t=>
{t.task_key}{t.handler}{t.attempt_count}/{t.maximum_attempts}{ago(t.available_at)}
)}
:}
} -function RunDrawer({run,onClose,onCancel}:{run:Run;onClose:()=>void;onCancel:()=>void}){return
} -function Status({value}:{value:string}){return {value.replace('_',' ')}} -function Empty({icon:Icon,title,text}:{icon:typeof Activity;title:string;text:string}){return

{title}

{text}

} -function ago(date:string){const seconds=Math.floor((Date.now()-Date.parse(date))/1000);if(seconds<5)return 'just now';if(seconds<60)return `${seconds}s ago`;if(seconds<3600)return `${Math.floor(seconds/60)}m ago`;if(seconds<86400)return `${Math.floor(seconds/3600)}h ago`;return `${Math.floor(seconds/86400)}d ago`} +function Stat({icon:Icon,label,value,detail,tone}:{icon:typeof Activity;label:string;value:number;detail:string;tone?:string}) { return
{label}
{value.toLocaleString()}{detail}
} +function PanelTitle({title,subtitle}:{title:string;subtitle:string}) { return

{title}

{subtitle}

} +function RunTable({runs,onRun}:{runs:Run[];onRun:(run:Run)=>void}) { if (!runs.length) return ; return
RUN IDSTATUSVERSIONSTARTED
{runs.slice(0, 8).map((run) => )}
} +function Workflows({workflows,onLaunch}:{workflows:Workflow[];onLaunch:(id:string)=>void}) { return
{workflows.map((workflow) =>

{workflow.name}

Version {workflow.version} · {Object.keys(workflow.dag.tasks).length} tasks

{Object.entries(workflow.dag.tasks).slice(0, 4).map(([key, task]) => {key.slice(0,1).toUpperCase()}{task.depends_on?.length ? {task.depends_on.length} : null})}
Updated {ago(workflow.created_at)}
)}{!workflows.length &&
}
} +function Workers({workers}:{workers:Worker[]}) { return
{workers.map((worker) =>

{worker.worker_id}

{worker.handlers.join(' · ') || 'No handlers'}

{worker.active_tasks} active
)}{!workers.length && }
} +function DeadLetter({tasks,replay}:{tasks:TaskRun[];replay:(id:string)=>void}) { return
{tasks.length ?
TASKHANDLERATTEMPTSAVAILABLE
{tasks.map((task) =>
{task.task_key}{task.handler}{task.attempt_count}/{task.maximum_attempts}{ago(task.available_at)}
)}
: }
} + +function RunDrawer({run,onClose,onCancel}:{run:Run;onClose:()=>void;onCancel:()=>void}) { + useEffect(() => { + const closeOnEscape = (event: KeyboardEvent) => { if (event.key === 'Escape') onClose() } + window.addEventListener('keydown', closeOnEscape) + return () => window.removeEventListener('keydown', closeOnEscape) + }, [onClose]) + return
+} + +function AttemptRow({attempt}:{attempt:TaskAttempt}) { + const failure = [attempt.error_type, attempt.error_message].filter(Boolean).join(': ') + return
Attempt {attempt.attempt_number}{attempt.worker_id}
+} + +function Status({value}:{value:string}) { return {value.replace('_',' ')} } +function Empty({icon:Icon,title,text}:{icon:typeof Activity;title:string;text:string}) { return

{title}

{text}

} +function ago(date:string) { const seconds = Math.floor((Date.now() - Date.parse(date)) / 1000); if (seconds < 5) return 'just now'; if (seconds < 60) return `${seconds}s ago`; if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`; if (seconds < 86400) return `${Math.floor(seconds / 3600)}h ago`; return `${Math.floor(seconds / 86400)}d ago` } +function duration(start:string,end:string) { const milliseconds = Math.max(0, Date.parse(end) - Date.parse(start)); return milliseconds < 1000 ? `${milliseconds}ms` : `${(milliseconds / 1000).toFixed(1)}s` } diff --git a/web/src/api.ts b/web/src/api.ts index 6cf995a..089cef8 100644 --- a/web/src/api.ts +++ b/web/src/api.ts @@ -3,10 +3,16 @@ import { bearerToken } from './auth' import { runtimeConfig } from './runtime' const base = runtimeConfig.apiUrl ?? import.meta.env.VITE_API_URL ?? '' +export class APIError extends Error { + constructor(public readonly status: number, message: string) { + super(message) + this.name = 'APIError' + } +} async function request(path: string, init?: RequestInit): Promise { const token = await bearerToken() const response = await fetch(base + path, { ...init, headers: { 'Content-Type': 'application/json', ...(token ? { Authorization: `Bearer ${token}` } : {}), ...init?.headers } }) - if (!response.ok) throw new Error((await response.json().catch(() => null))?.error ?? `${response.status} ${response.statusText}`) + if (!response.ok) throw new APIError(response.status, (await response.json().catch(() => null))?.error ?? `${response.status} ${response.statusText}`) return response.status === 204 ? (undefined as T) : response.json() } export const api = { diff --git a/web/src/dashboard.css b/web/src/dashboard.css new file mode 100644 index 0000000..bc44721 --- /dev/null +++ b/web/src/dashboard.css @@ -0,0 +1,226 @@ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.auth-state { + min-height: 100vh; + display: grid; + place-content: center; + gap: 8px; + padding: 24px; + text-align: center; +} + +.auth-state p { + color: var(--muted); +} + +.system-dot.reconnecting { + background: var(--amber); + box-shadow: 0 0 10px #e9ad5588; + animation: pulse 1.4s ease-in-out infinite; +} + +.loading-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 12px; +} + +.loading-grid i { + height: 120px; + border: 1px solid var(--line); + border-radius: 9px; + background: linear-gradient(100deg, var(--panel) 20%, var(--panel2) 40%, var(--panel) 60%); + background-size: 300% 100%; + animation: shimmer 1.4s linear infinite; +} + +.loading-grid i:last-child { + grid-column: 1 / -1; + height: 260px; +} + +.error.unauthorized { + background: #302514; + border-color: #796030; + color: #ffd391; +} + +.error .quiet { + color: inherit; + border: 1px solid currentcolor; + border-radius: 6px; + padding: 6px 10px; +} + +.dag-mini span { + position: relative; +} + +.dag-mini span + span::before { + content: ''; + display: block; + width: 25px; + height: 1px; + background: #345243; +} + +.dag-mini small { + position: absolute; + right: -3px; + top: -5px; + display: grid; + place-items: center; + width: 14px; + height: 14px; + border-radius: 50%; + background: #224b36; + color: #b9f4d2; + font: 7px 'DM Mono'; +} + +.task-block { + border-bottom: 1px solid #18271f; +} + +.task-block:last-child { + border-bottom: 0; +} + +.dependencies { + font-size: 8px; + color: #7f9389; +} + +.dependencies.root { + color: #537264; +} + +.attempt-history { + margin: 0 0 12px 28px; + border-left: 1px solid #2a3d33; + padding-left: 12px; +} + +.attempt-row { + display: grid; + grid-template-columns: 62px minmax(70px, 1fr) 80px minmax(0, 1.4fr) 52px; + gap: 8px; + align-items: center; + padding: 7px 0; + color: #73877d; + font-size: 8px; +} + +.attempt-row strong { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: #9bb0a6; +} + +.attempt-detail { + display: flex; + gap: 8px; + min-width: 0; +} + +.attempt-detail a { + color: var(--green); +} + +.attempt-row p { + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: #e89a9b; +} + +.attempt-row time { + text-align: right; + font-family: 'DM Mono'; +} + +.drawer { + overflow-y: auto; +} + +.icon-button:focus-visible, +.primary:focus-visible, +.launch:focus-visible, +.quiet:focus-visible, +.danger:focus-visible, +nav button:focus-visible, +.tr:focus-visible, +input:focus-visible { + outline: 2px solid var(--green); + outline-offset: 2px; +} + +@keyframes shimmer { + 0% { background-position: 100% 0; } + 100% { background-position: -100% 0; } +} + +@keyframes pulse { + 50% { opacity: 0.4; } +} + +@media (prefers-reduced-motion: reduce) { + * { + scroll-behavior: auto !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +} + +@media (max-width: 760px) { + body { min-width: 0; } + .shell { display: block; } + .shell > aside { position: static; width: auto; height: auto; padding: 14px; } + .brand { padding-bottom: 12px; } + .workspace { display: none; } + nav { flex-direction: row; overflow-x: auto; margin: 0 -4px; } + nav button { min-width: max-content; } + .aside-bottom { padding: 12px 4px 0; margin-top: 8px; } + .aside-bottom small { display: inline; margin-left: 6px; } + main { display: block; } + header { height: auto; min-height: 86px; padding: 16px; align-items: flex-start; gap: 14px; } + .header-actions { flex-wrap: wrap; justify-content: flex-end; } + .search { display: none; } + .content { padding: 18px 14px 40px; } + .error { margin: 14px; } + .hero { height: auto; min-height: 170px; padding: 26px 22px; } + .hero h2 { font-size: 25px; } + .mesh { display: none; } + .stats { grid-template-columns: repeat(2, 1fr); } + .cards { grid-template-columns: 1fr; } + .table { overflow-x: auto; } + .tr { min-width: 650px; } + .worker { grid-template-columns: 42px minmax(120px, 1fr) 70px; } + .worker time { display: none; } + .drawer { width: 100%; padding: 20px 16px; } + .attempt-row { grid-template-columns: 58px 1fr 70px; } + .attempt-row p { grid-column: 1 / -1; } + .attempt-row time { display: none; } +} + +@media (max-width: 430px) { + header { display: block; } + .header-actions { margin-top: 14px; justify-content: flex-start; } + .stats { grid-template-columns: 1fr; } + .hero h2 { font-size: 23px; } + .primary { padding: 0 10px; } + .task-row { grid-template-columns: 24px 1fr 78px 28px; } +} diff --git a/web/src/main.tsx b/web/src/main.tsx index e429828..97e064f 100644 --- a/web/src/main.tsx +++ b/web/src/main.tsx @@ -2,15 +2,16 @@ import { StrictMode, useEffect, useState } from 'react' import { createRoot } from 'react-dom/client' import App from './App' import './styles.css' +import './dashboard.css' import { authenticate } from './auth' -function AuthenticatedApp() { +export function AuthenticatedApp() { const [ready, setReady] = useState(false) const [error, setError] = useState('') useEffect(() => { void authenticate().then(() => setReady(true)).catch(value => setError(String(value))) }, []) - if (error) return

Authentication failed

{error}

- if (!ready) return

Signing in…

+ if (error) return

Authentication failed

{error}

+ if (!ready) return

Signing in…

return } diff --git a/web/src/types.ts b/web/src/types.ts index 5b70613..96f3828 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -1,5 +1,6 @@ export type TaskSpec = { handler: string; depends_on?: string[]; maximum_attempts?: number; timeout_seconds?: number } export type Workflow = { id: string; name: string; version: number; dag: { tasks: Record }; created_at: string } -export type TaskRun = { id: string; task_key: string; handler: string; status: string; attempt_count: number; maximum_attempts: number; available_at: string } +export type TaskAttempt = { attempt_number: number; worker_id: string; scheduled_at: string; executing_at?: string; started_at: string; ended_at?: string; exit_status?: string; error_type?: string; error_message?: string; trace_id?: string; artifact_uri?: string; log_artifact_uri?: string; artifact_download_url?: string; log_artifact_download_url?: string } +export type TaskRun = { id: string; task_key: string; handler: string; status: string; attempt_count: number; maximum_attempts: number; available_at: string; lease_owner?: string; lease_expires_at?: string; depends_on?: string[]; attempts?: TaskAttempt[]; output_artifact_download_url?: string; log_artifact_download_url?: string } export type Run = { id: string; workflow_definition_id: string; workflow_version: number; status: string; idempotency_key: string; created_at: string; started_at?: string; completed_at?: string; tasks?: TaskRun[] } export type Worker = { worker_id: string; handlers: string[]; active_tasks: number; metadata: Record; last_seen_at: string } diff --git a/web/vite.config.ts b/web/vite.config.ts index 42f6b1e..6b8f689 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -4,5 +4,16 @@ import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [react()], server: { proxy: { '/v1': 'http://control-plane:8080', '/health': 'http://control-plane:8080' } }, - test: { environment: 'jsdom', globals: true, exclude: [...configDefaults.exclude, 'e2e/**'] }, + test: { + environment: 'jsdom', + globals: true, + exclude: [...configDefaults.exclude, 'e2e/**', 'demo/**'], + coverage: { + provider: 'v8', + include: ['src/**/*.{ts,tsx}'], + exclude: ['src/vite-env.d.ts', 'src/main.tsx'], + reporter: ['text', 'json-summary'], + thresholds: { lines: 50, functions: 50, statements: 50, branches: 45 }, + }, + }, }) From 7eebd569e63768d853f37484ef121ed77de82234 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 19:52:29 -0400 Subject: [PATCH 2/9] fix: wait for benchmark dependencies --- tests/benchmarks/run-local.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/benchmarks/run-local.sh b/tests/benchmarks/run-local.sh index cad5536..40fd3f3 100755 --- a/tests/benchmarks/run-local.sh +++ b/tests/benchmarks/run-local.sh @@ -16,6 +16,16 @@ duplicate_prefix="validation-duplicate-$run_suffix" cp "$0" "$result_dir/commands.sh" docker compose up -d --build +for endpoint in \ + http://localhost:8180/realms/runmesh/.well-known/openid-configuration \ + http://localhost:8080/health/ready; do + ready=0 + for _ in $(seq 1 90); do + if curl -fsS "$endpoint" >/dev/null; then ready=1; break; fi + sleep 2 + done + [[ "$ready" == 1 ]] || { echo "benchmark dependency did not become ready: $endpoint" >&2; exit 1; } +done benchmark_token=$(python3 tests/benchmarks/local.py token) docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-before.json" From 6804edf94f9404f27c897b34ab64c2ae02757277 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 20:05:22 -0400 Subject: [PATCH 3/9] fix: record complete benchmark latency evidence --- tests/benchmarks/local.py | 4 ++-- tests/benchmarks/run-local.sh | 3 +++ tests/load/api-read.js | 4 +++- tests/load/submissions.js | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/benchmarks/local.py b/tests/benchmarks/local.py index 1891ab8..0eff4ac 100755 --- a/tests/benchmarks/local.py +++ b/tests/benchmarks/local.py @@ -103,9 +103,9 @@ def active_workflows(api: str, token: str, count: int, prefix: str) -> dict: def prepare_tasks(api: str, token: str, tasks: int, prefix: str) -> dict: - per_run = 500 + per_run = 100 if tasks % per_run: - raise ValueError("task total must be divisible by 500") + raise ValueError("task total must be divisible by 100") workflow_id = create_workflow(api, token, f"{prefix}-definition", per_run, "examples.slow") runs = [] started = time.perf_counter() diff --git a/tests/benchmarks/run-local.sh b/tests/benchmarks/run-local.sh index 40fd3f3..07b83b7 100755 --- a/tests/benchmarks/run-local.sh +++ b/tests/benchmarks/run-local.sh @@ -29,8 +29,10 @@ done benchmark_token=$(python3 tests/benchmarks/local.py token) docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-before.json" +read_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-read-$run_suffix") docker run --rm --add-host host.docker.internal:host-gateway \ -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_READ_PATH="/v1/workflows/$read_workflow" \ -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_RATE=100 -e RUNMESH_DURATION=30s \ -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ grafana/k6:0.57.0 run --summary-export=/results/api-read.json /scripts/api-read.js @@ -114,6 +116,7 @@ docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ python3 tests/benchmarks/local.py duplicate --prefix "$duplicate_prefix" > "$result_dir/duplicate-submission.json" docker run --rm -v "$PWD":/src -w /src -v /var/run/docker.sock:/var/run/docker.sock \ + -v runmesh-go-mod:/go/pkg/mod -v runmesh-go-build:/root/.cache/go-build \ -e TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal golang:1.25 \ /usr/local/go/bin/go test -tags=integration -count=1 -run TestDuplicateDispatchIsLeasedOnce -json ./tests/integration \ > "$result_dir/duplicate-delivery-go-test.json" diff --git a/tests/load/api-read.js b/tests/load/api-read.js index 801c84d..3bf1891 100644 --- a/tests/load/api-read.js +++ b/tests/load/api-read.js @@ -2,6 +2,7 @@ import http from 'k6/http'; import { check } from 'k6'; export const options = { + summaryTrendStats: ['avg', 'min', 'med', 'p(90)', 'p(95)', 'p(99)', 'max'], scenarios: { api_reads: { executor: 'constant-arrival-rate', @@ -17,9 +18,10 @@ export const options = { }; const api = __ENV.RUNMESH_API || 'http://localhost:8080'; +const path = __ENV.RUNMESH_READ_PATH || '/v1/workflows'; const token = __ENV.RUNMESH_TOKEN; export default function () { - const response = http.get(`${api}/v1/workflows`, { headers: { Authorization: `Bearer ${token}` } }); + const response = http.get(`${api}${path}`, { headers: { Authorization: `Bearer ${token}` } }); check(response, { 'authenticated request succeeded': value => value.status === 200 }); } diff --git a/tests/load/submissions.js b/tests/load/submissions.js index 2fac80b..ec869e0 100644 --- a/tests/load/submissions.js +++ b/tests/load/submissions.js @@ -2,6 +2,7 @@ import http from 'k6/http'; import { check } from 'k6'; export const options = { + summaryTrendStats: ['avg', 'min', 'med', 'p(90)', 'p(95)', 'p(99)', 'max'], scenarios: { submissions: { executor: 'constant-arrival-rate', From 9d14c59918978549001d9cd6ef14d302b0d196e4 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 20:06:05 -0400 Subject: [PATCH 4/9] fix: normalize benchmark worker topology --- tests/benchmarks/run-local.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/benchmarks/run-local.sh b/tests/benchmarks/run-local.sh index 07b83b7..a0917b0 100755 --- a/tests/benchmarks/run-local.sh +++ b/tests/benchmarks/run-local.sh @@ -16,6 +16,7 @@ duplicate_prefix="validation-duplicate-$run_suffix" cp "$0" "$result_dir/commands.sh" docker compose up -d --build +docker compose up -d --scale scheduler=2 --scale worker-go=1 --scale worker-python=1 scheduler worker-go worker-python for endpoint in \ http://localhost:8180/realms/runmesh/.well-known/openid-configuration \ http://localhost:8080/health/ready; do From 0c48987d5259bcdc62cadaecd163d996ad0af0a4 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 20:23:18 -0400 Subject: [PATCH 5/9] fix: patch dashboard runtime image --- web/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/web/Dockerfile b/web/Dockerfile index 2805436..9f7a080 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -11,10 +11,11 @@ RUN VITE_DEV_AUTH="$WEB_DEVELOPMENT_MODE" \ VITE_OIDC_CLIENT_ID="$VITE_OIDC_CLIENT_ID" \ npm run build -FROM nginx:1.27-alpine +FROM nginx:1.28-alpine COPY web/nginx.conf /etc/nginx/conf.d/default.conf COPY --from=build /app/dist /usr/share/nginx/html -RUN chown -R nginx:nginx /var/cache/nginx /usr/share/nginx/html \ +RUN apk upgrade --no-cache libcrypto3 libssl3 \ + && chown -R nginx:nginx /var/cache/nginx /usr/share/nginx/html \ && sed -i 's/user nginx;/user nginx;/' /etc/nginx/nginx.conf \ && sed -i 's|pid .*;|pid /tmp/nginx.pid;|' /etc/nginx/nginx.conf USER 101:101 From 2ab2af72443c712ddb52ff584315fde68f1aea21 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 20:32:41 -0400 Subject: [PATCH 6/9] docs: publish reproducible local evidence --- README.md | 21 ++- docs/benchmarks.md | 26 +++- docs/release-v0.1.0.md | 8 + docs/validation.md | 69 +++++++++ .../results/2026-07-20T235240Z/README.md | 10 ++ .../active-workflows-database.json | 1 + .../2026-07-20T235240Z/active-workflows.json | 22 +++ .../results/2026-07-20T235240Z/api-read.json | 133 ++++++++++++++++ .../results/2026-07-20T235240Z/commands.sh | 133 ++++++++++++++++ .../results/2026-07-20T235240Z/commit-sha.txt | 1 + .../2026-07-20T235240Z/compose-topology.json | 35 +++++ .../duplicate-delivery-go-test.json | 8 + .../duplicate-submission.json | 10 ++ .../end-to-end-completion-database.json | 1 + .../end-to-end-completion.json | 6 + .../results/2026-07-20T235240Z/hardware.txt | 4 + .../2026-07-20T235240Z/image-digests.json | 2 + .../in-flight-before-termination.json | 1 + .../kafka-topology-after.json | 1 + .../kafka-topology-before.json | 1 + .../lease-recovery-distribution.json | 1 + .../scheduler-dispatch.json | 6 + .../2026-07-20T235240Z/verification.json | 21 +++ .../worker-crash-result.json | 1 + .../worker-crash-setup.json | 31 ++++ .../worker-termination.json | 6 + .../workflow-submissions.json | 133 ++++++++++++++++ .../results/2026-07-21T000619Z/README.md | 15 ++ .../active-workflows-database.json | 1 + .../2026-07-21T000619Z/active-workflows.json | 22 +++ .../results/2026-07-21T000619Z/api-read.json | 142 ++++++++++++++++++ .../results/2026-07-21T000619Z/commands.sh | 137 +++++++++++++++++ .../results/2026-07-21T000619Z/commit-sha.txt | 1 + .../2026-07-21T000619Z/compose-topology.json | 35 +++++ .../duplicate-delivery-go-test.json | 8 + .../duplicate-submission.json | 10 ++ .../end-to-end-completion-database.json | 1 + .../end-to-end-completion.json | 6 + .../results/2026-07-21T000619Z/hardware.txt | 4 + .../2026-07-21T000619Z/image-digests.json | 2 + .../in-flight-before-termination.json | 1 + .../kafka-topology-after.json | 1 + .../kafka-topology-before.json | 1 + .../lease-recovery-distribution.json | 1 + .../scheduler-dispatch.json | 6 + .../2026-07-21T000619Z/verification.json | 21 +++ .../worker-crash-result.json | 1 + .../worker-crash-setup.json | 111 ++++++++++++++ .../worker-termination.json | 6 + .../workflow-submissions.json | 142 ++++++++++++++++++ .../results/2026-07-21T002100Z/README.md | 40 +++++ .../active-workflows-database.json | 1 + .../2026-07-21T002100Z/active-workflows.json | 22 +++ .../results/2026-07-21T002100Z/api-read.json | 142 ++++++++++++++++++ .../results/2026-07-21T002100Z/commands.sh | 137 +++++++++++++++++ .../results/2026-07-21T002100Z/commit-sha.txt | 1 + .../2026-07-21T002100Z/compose-topology.json | 35 +++++ .../duplicate-delivery-go-test.json | 8 + .../duplicate-submission.json | 10 ++ .../end-to-end-completion-database.json | 1 + .../end-to-end-completion.json | 6 + .../results/2026-07-21T002100Z/hardware.txt | 4 + .../2026-07-21T002100Z/image-digests.json | 2 + .../in-flight-before-termination.json | 1 + .../kafka-topology-after.json | 1 + .../kafka-topology-before.json | 1 + .../lease-recovery-distribution.json | 1 + .../scheduler-dispatch.json | 6 + .../2026-07-21T002100Z/verification.json | 21 +++ .../worker-crash-result.json | 1 + .../worker-crash-setup.json | 111 ++++++++++++++ .../worker-termination.json | 6 + .../workflow-submissions.json | 142 ++++++++++++++++++ 73 files changed, 2054 insertions(+), 13 deletions(-) create mode 100644 docs/validation.md create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/README.md create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/active-workflows-database.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/active-workflows.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/api-read.json create mode 100755 tests/benchmarks/results/2026-07-20T235240Z/commands.sh create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/commit-sha.txt create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/compose-topology.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/duplicate-delivery-go-test.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/duplicate-submission.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/end-to-end-completion-database.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/end-to-end-completion.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/hardware.txt create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/image-digests.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/in-flight-before-termination.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/kafka-topology-after.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/kafka-topology-before.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/lease-recovery-distribution.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/scheduler-dispatch.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/verification.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/worker-crash-result.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/worker-crash-setup.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/worker-termination.json create mode 100644 tests/benchmarks/results/2026-07-20T235240Z/workflow-submissions.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/README.md create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/active-workflows-database.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/active-workflows.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/api-read.json create mode 100755 tests/benchmarks/results/2026-07-21T000619Z/commands.sh create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/commit-sha.txt create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/compose-topology.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/duplicate-delivery-go-test.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/duplicate-submission.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/end-to-end-completion-database.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/end-to-end-completion.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/hardware.txt create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/image-digests.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/in-flight-before-termination.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/kafka-topology-after.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/kafka-topology-before.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/lease-recovery-distribution.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/scheduler-dispatch.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/verification.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/worker-crash-result.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/worker-crash-setup.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/worker-termination.json create mode 100644 tests/benchmarks/results/2026-07-21T000619Z/workflow-submissions.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/README.md create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/active-workflows-database.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/active-workflows.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/api-read.json create mode 100755 tests/benchmarks/results/2026-07-21T002100Z/commands.sh create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/commit-sha.txt create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/compose-topology.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/duplicate-delivery-go-test.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/duplicate-submission.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/end-to-end-completion-database.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/end-to-end-completion.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/hardware.txt create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/image-digests.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/in-flight-before-termination.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/kafka-topology-after.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/kafka-topology-before.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/lease-recovery-distribution.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/scheduler-dispatch.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/verification.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/worker-crash-result.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/worker-crash-setup.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/worker-termination.json create mode 100644 tests/benchmarks/results/2026-07-21T002100Z/workflow-submissions.json diff --git a/README.md b/README.md index c54f15d..9a55fca 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,12 @@ RunMesh stores versioned DAGs, schedules dependency-aware tasks, and delivers wo It ships as a complete local platform: Go control plane and scheduler, Go and Python workers, a React operations dashboard, OIDC authentication, tenant-scoped API keys, S3-compatible artifacts, live updates, metrics, logs, traces, Helm charts, and validated AWS Terraform. +Latest local evidence on an Apple M4 / 16 GiB machine: **412.482 scheduler +dispatches/second across 10,000 tasks**, **100.023 authenticated reads/second +at 3.228 ms p95**, and **10,000/10,000 tasks completed with zero permanent +loss after all 20 workers were terminated**. These are reproducible local +Docker results, not production-capacity claims. + ## Highlights - **Durable execution** — transactional run creation, dependency-aware scheduling, fenced state transitions, retries, cancellation, and dead-letter replay. @@ -194,13 +200,14 @@ The repository includes unit, race, integration, browser, security, chaos, deplo | Scenario | Recorded result | | --- | ---: | -| Authenticated API load | 100.017 req/s, 4.316 ms p95, 0 failures | -| Simultaneously active workflows | 1,000 | -| Scheduler dispatch | 196.078 tasks/s across 10,000 tasks | -| Worker termination and recovery | 10,000/10,000 succeeded, 0 lost | +| Authenticated API reads | 100.023 req/s; 1.416/3.228/5.745 ms p50/p95/p99; 0 failures | +| Workflow submissions | 50.026 req/s; 1.560/3.236/13.553 ms p50/p95/p99; 0 failures | +| Simultaneously active workflows | 1,000 created; 0 failures; 30.747 tasks/s drain | +| Scheduler dispatch | 412.482 tasks/s across 10,000 tasks | +| Worker termination and recovery | 20 workers terminated; 10,000/10,000 succeeded; 6 recovered attempts; 0 lost | | Duplicate submission and delivery | Passed | -These numbers are transparent local evidence, not a universal capacity claim. Hardware details, commands, image digests, source SHA, and raw machine-readable output are committed in the [2026-07-20 benchmark results](tests/benchmarks/results/2026-07-20/README.md). +These numbers are transparent local evidence, not a universal capacity claim. Hardware details, commands, image digests, source SHA, and raw machine-readable output are committed in the [2026-07-21T002100Z benchmark results](tests/benchmarks/results/2026-07-21T002100Z/README.md). The complete [local validation ledger](docs/validation.md) separates executed checks from remote or cloud work that remains unverified. ## Development @@ -239,6 +246,9 @@ Coverage gates intentionally target risk rather than 100%: the workflow state ma - Useful worker parallelism is bounded by Kafka partition count, and a single workflow run remains intentionally confined to one partition. - Workers in the same Kafka consumer group must expose the same handler set; heterogeneous capability pools require separate group IDs. - The outbox removes broker I/O from database transactions, but PostgreSQL claim and acknowledgement writes still bound dispatch throughput. +- The recorded 10,000-task crash run recovered all interrupted leases, but the + recovered-attempt delay was 125.145 seconds p50 under backlog; prioritizing + expired leases is future work. - At-least-once execution cannot make arbitrary handler side effects exactly-once. Handlers must use the stable task idempotency key. - Redis Pub/Sub notifications are best-effort; the dashboard re-reads durable state and falls back to polling. - The repository prepares `v0.1.0`, but no release or versioned image is published until a maintainer explicitly creates the tag. @@ -274,6 +284,7 @@ Pushing a `v*` tag builds five multi-architecture GHCR images with semantic-vers - [Security model](docs/security.md) - [Artifact handling](docs/artifacts.md) - [Benchmarks](docs/benchmarks.md) +- [Local validation report](docs/validation.md) - [Deployment and releases](docs/deployment.md) - [Architecture decisions](docs/adr/) - [Draft v0.1.0 release notes](docs/release-v0.1.0.md) diff --git a/docs/benchmarks.md b/docs/benchmarks.md index 901780f..ea1fe42 100644 --- a/docs/benchmarks.md +++ b/docs/benchmarks.md @@ -7,20 +7,30 @@ universal capacity claim. ## Latest recorded run -The [2026-07-20 local run](../tests/benchmarks/results/2026-07-20/README.md) +The [2026-07-21T002100Z local run](../tests/benchmarks/results/2026-07-21T002100Z/README.md) used an Apple M4 MacBook Air with 16 GiB RAM and Docker Desktop 4.82.0. | Scenario | Result | | --- | ---: | -| Authenticated API load | 100.017 requests/second, 4.316 ms p95, 0 failures | -| Simultaneously active workflows | 1,000 | -| Scheduler dispatch | 196.078 tasks/second across 10,000 tasks | -| Worker termination and lease recovery | 10,000/10,000 succeeded, 0 lost | +| Authenticated API reads | 100.023 requests/s; 1.416/3.228/5.745 ms p50/p95/p99; 0 failures | +| Workflow submissions | 50.026 requests/s; 1.560/3.236/13.553 ms p50/p95/p99; 0 failures | +| Simultaneously active workflows | 1,000 created in 20.200 seconds; 0 failures | +| Queued end-to-end completion | 1,000 tasks at 30.747 tasks/s | +| Scheduler dispatch | 412.482 tasks/s across 10,000 tasks | +| Worker termination and lease recovery | 20 workers terminated; 10,000/10,000 succeeded; 6 recovered; 0 lost | | Duplicate submission and delivery | Passed | -The local Redpanda topology used one partition, so worker consumption was serial. -The dispatch result met the target; the worker-termination run is reported as -correctness and recovery evidence, not as a throughput claim. +The run used two scheduler replicas, a six-partition local Redpanda topic, and +12 workers for the queued completion phase. The termination scenario killed +all 20 Go-worker containers while six tasks were actively running. Its complete +drain took 202.867 seconds. The six lease-expiration-to-next-attempt samples +were 125.145/167.824/168.519 seconds p50/p95/p99; the backlog makes this a +correctness result and exposes a recovery-latency optimization opportunity. + +All 15 blocking verification checks passed. New records appeared on every +Kafka partition, duplicate submission returned the same run while preserving +the original input, and the duplicate-delivery integration test permitted only +one successful lease. ## Reproduce locally diff --git a/docs/release-v0.1.0.md b/docs/release-v0.1.0.md index 9a24791..fca42cd 100644 --- a/docs/release-v0.1.0.md +++ b/docs/release-v0.1.0.md @@ -21,3 +21,11 @@ This draft prepares the first RunMesh release. It is not evidence that a tag, Gi ## Known limitations See `CHANGELOG.md` and the README limitations section. In particular, AWS has not been applied and benchmark results are local evidence only. + +## Suggested GitHub metadata + +- Description: `Multi-tenant workflow orchestration with durable DAG execution, Kafka delivery, and lease-based failure recovery.` +- Topics: `distributed-systems`, `workflow-engine`, `golang`, `kafka`, + `postgresql`, `kubernetes`, `observability`, `react`, `python` +- Social preview: use the real operations-overview screenshot in `docs/demo` + with a short RunMesh title treatment; do not imply hosted production usage. diff --git a/docs/validation.md b/docs/validation.md new file mode 100644 index 0000000..8893be8 --- /dev/null +++ b/docs/validation.md @@ -0,0 +1,69 @@ +# Local validation report + +This report records the checks run while preparing the `v0.1.0` candidate on +2026-07-20/21. They ran on the Apple M4 / 16 GiB Docker Desktop environment +captured in the latest benchmark directory. GitHub-hosted Actions, CodeQL, a +published release, and real AWS infrastructure were **not** run or created. + +## Test and static-analysis ledger + +| Area | Command | Result | +| --- | --- | --- | +| Go formatting | `test -z "$(gofmt -l cmd internal sdk/go gen tests/integration)"` | Passed | +| Go analysis | `go vet ./...` (Go 1.25 container) | Passed | +| Go race suite | `go test -race -covermode=atomic -coverprofile=coverage.out ./cmd/... ./internal/... ./sdk/go/...` | Passed; 11.8% repository coverage | +| Workflow coverage | `go test -coverprofile=workflow-coverage.out ./internal/workflow` | Passed; 73.6% (70% gate) | +| Authentication coverage | `go test -coverprofile=auth-coverage.out ./internal/auth` | Passed; 40.6% (40% gate) | +| Live-event coverage | `go test -coverprofile=live-coverage.out ./internal/live` | Passed; 73.5% (70% gate) | +| Go integration/chaos | `go test -tags=integration -count=1 -timeout=15m ./tests/integration` with Docker socket and Testcontainers host override | Passed in 93.547 seconds | +| Python lint | `ruff check sdk/python examples` | Passed | +| Python types/tests | `cd sdk/python && mypy runmesh && pytest` | Passed; 6 tests, 40.56% coverage | +| Dashboard lint/build | `npm --prefix web run lint && npm --prefix web run build` | Passed | +| Dashboard tests | `npm --prefix web run test:coverage` | Passed; 5 tests; 67.94% statements, 52.14% branches, 58.24% functions, 81.37% lines | +| Dashboard dependencies | `npm --prefix web audit --audit-level=high` | Passed; 0 vulnerabilities | +| Browser E2E | `npm --prefix web run test:e2e` against the real Compose services | Passed; 4 Playwright tests in 11.4 seconds | +| Compose smoke | `bash tests/e2e/smoke.sh` | Passed | +| Protobuf | `buf lint` | Passed | +| GitHub workflow syntax | `actionlint` | Passed | +| Helm | `helm lint deploy/helm/runmesh ...` | Passed | +| Rendered manifests | `helm template ... \| kubeconform -strict -summary -kubernetes-version 1.31.0` | Passed; 24 resources valid | +| Terraform | `terraform -chdir=infra/terraform fmt -check -recursive`, `init -backend=false`, `validate`, and `test` using Terraform 1.10.5 | Passed; 1 mock-provider test, 0 failed; no apply | +| Rolling upgrade | `tests/deployment/kind-rolling-upgrade.sh` | Passed; workflow `93bf8f7f-af7e-4135-9f0c-85090b1ad949` completed through the local kind rollout | +| Secret scan | `gitleaks git --staged --redact --no-banner` | Passed before the implementation commit; repeated before the evidence commit | +| Container builds | Compose builds for control plane, scheduler, Go worker, Python worker, and web | Passed | +| Container vulnerabilities | `trivy image --scanners vuln --severity CRITICAL --ignore-unfixed --exit-code 1` for all five images | Passed after patching the dashboard runtime; 0 applicable critical findings | +| Local benchmark | `tests/benchmarks/run-local.sh ` | Blocking verifier passed; see [benchmark evidence](benchmarks.md) | + +The initial dashboard vulnerability scan failed on two fixed OpenSSL findings in +the Nginx/Alpine runtime. The runtime was upgraded and its OpenSSL packages were +patched during the image build; the rebuilt image then passed. An initial +benchmark attempt also stopped during dependency readiness, and an earlier +complete run omitted p99 from its k6 summaries. Both issues were corrected +before the headline benchmark was recorded. Superseded raw runs are retained +and labelled instead of being represented as final evidence. + +## What the automated suites prove + +- Scheduler replicas use PostgreSQL `FOR UPDATE SKIP LOCKED` claims without + double-claiming work. +- Kafka publication occurs outside the database claim transaction, recovers + expired publisher claims, and tolerates duplicates around uncertain broker + acknowledgement without losing outbox events. +- Per-run Kafka keys preserve ordering, and the local six-partition topology is + exercised by multiple scheduler and worker replicas. +- Active lease, worker identity, tenant ownership, retry, cancellation, and + stale-worker fencing conditions guard worker mutations. +- OIDC/API-key authentication, scopes, revocation, expiry, rate-limit isolation, + artifact ownership/limits, and cross-tenant denial paths are covered. +- Redis, PostgreSQL, Kafka, duplicate-delivery, slow-artifact, and multi-worker + termination recovery paths have Docker-backed coverage. + +## Deliberately unverified here + +- GitHub-hosted Actions and CodeQL must run after the branch is pushed. Local + equivalents passed, but this report does not call remote CI green. +- AWS Terraform was validated and mock-tested only. It was not applied. +- Multi-architecture images, SBOMs, provenance, GHCR publication, and the + `v0.1.0` release remain tag-triggered release work and were not published. +- Performance evidence is local Docker Desktop evidence, not production + capacity or a service-level objective. diff --git a/tests/benchmarks/results/2026-07-20T235240Z/README.md b/tests/benchmarks/results/2026-07-20T235240Z/README.md new file mode 100644 index 0000000..16713c8 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/README.md @@ -0,0 +1,10 @@ +# Superseded local benchmark — 2026-07-20T235240Z + +Source commit: `7eebd569e63768d853f37484ef121ed77de82234` + +The blocking correctness verifier passed, including 10,000/10,000 successful +tasks, five recovered leases, zero permanent task loss, and records on all six +Kafka partitions. This run is retained as raw historical evidence but is not +used for README performance claims: its k6 summaries did not include p99 and the +worker topology was not normalized enough to produce representative partition +balance. The raw JSON and copied `commands.sh` have not been edited. diff --git a/tests/benchmarks/results/2026-07-20T235240Z/active-workflows-database.json b/tests/benchmarks/results/2026-07-20T235240Z/active-workflows-database.json new file mode 100644 index 0000000..756a691 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/active-workflows-database.json @@ -0,0 +1 @@ +{"active_runs" : 1000, "active_tasks" : 1000} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/active-workflows.json b/tests/benchmarks/results/2026-07-20T235240Z/active-workflows.json new file mode 100644 index 0000000..5ece95b --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/active-workflows.json @@ -0,0 +1,22 @@ +{ + "create_latency": { + "p50_ms": 5.375, + "p95_ms": 7.467, + "p99_ms": 8.129 + }, + "created": 1000, + "elapsed_seconds": 18.276, + "failure_count": 0, + "failure_rate": 0, + "idempotency_prefix": "validation-active-20260720T235240Z", + "requested": 1000, + "sample_run_ids": [ + "44486141-86ef-4dce-910b-bf8f1410ba44", + "b5f126b2-35ea-4ec0-b460-c37035607f29", + "afe4ccf6-2a96-465b-8bea-a4f2e3228833", + "ad2c481d-0e69-4c0d-bfbc-efd986622241", + "eb0e1948-c79f-4b58-8b8a-a1119b7a8513" + ], + "scenario": "simultaneously_active_workflows", + "workflow_id": "580243d4-281d-49be-b7be-d1ac09900941" +} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/api-read.json b/tests/benchmarks/results/2026-07-20T235240Z/api-read.json new file mode 100644 index 0000000..c8b1455 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/api-read.json @@ -0,0 +1,133 @@ +{ + "metrics": { + "vus_max": { + "value": 40, + "min": 40, + "max": 40 + }, + "data_received": { + "count": 443898917, + "rate": 14794010.670660315 + }, + "data_sent": { + "count": 4117372, + "rate": 137221.43256113867 + }, + "http_req_connecting": { + "med": 0, + "max": 1.152667, + "p(90)": 0, + "p(95)": 0, + "avg": 0.00664585338220593, + "min": 0 + }, + "http_req_duration": { + "p(90)": 4.059875, + "p(95)": 4.534834, + "avg": 4.9203696831056405, + "min": 2.535084, + "med": 3.405334, + "max": 284.762084 + }, + "http_reqs": { + "count": 3001, + "rate": 100.01562140024686 + }, + "http_req_receiving": { + "p(90)": 0.611625, + "p(95)": 0.719125, + "avg": 0.6360155671442832, + "min": 0.039208, + "med": 0.435792, + "max": 67.5735 + }, + "vus": { + "value": 0, + "min": 0, + "max": 15 + }, + "checks": { + "passes": 3001, + "fails": 0, + "thresholds": { + "rate==1": false + }, + "value": 1 + }, + "http_req_blocked": { + "avg": 0.012584953682105753, + "min": 0.000958, + "med": 0.001958, + "max": 6.008375, + "p(90)": 0.003917, + "p(95)": 0.006 + }, + "http_req_tls_handshaking": { + "avg": 0, + "min": 0, + "med": 0, + "max": 0, + "p(90)": 0, + "p(95)": 0 + }, + "iteration_duration": { + "min": 2.589125, + "med": 3.482584, + "max": 288.942541, + "p(90)": 4.166958, + "p(95)": 4.705833, + "avg": 5.021869461846045 + }, + "iterations": { + "count": 3001, + "rate": 100.01562140024686 + }, + "http_req_duration{expected_response:true}": { + "p(95)": 4.534834, + "avg": 4.9203696831056405, + "min": 2.535084, + "med": 3.405334, + "max": 284.762084, + "p(90)": 4.059875 + }, + "http_req_waiting": { + "avg": 4.270925927024329, + "min": 2.117959, + "med": 2.950542, + "max": 267.34475, + "p(90)": 3.570791, + "p(95)": 3.979583 + }, + "http_req_failed": { + "fails": 3001, + "passes": 0, + "thresholds": { + "rate==0": false + }, + "value": 0 + }, + "http_req_sending": { + "avg": 0.013428188937021007, + "min": 0.003208, + "med": 0.008958, + "max": 5.422375, + "p(90)": 0.015459, + "p(95)": 0.02025 + } + }, + "root_group": { + "name": "", + "path": "", + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "authenticated request succeeded": { + "name": "authenticated request succeeded", + "path": "::authenticated request succeeded", + "id": "12f4c1307352dc7d8175954f46790cf7", + "passes": 3001, + "fails": 0 + } + } + } +} \ No newline at end of file diff --git a/tests/benchmarks/results/2026-07-20T235240Z/commands.sh b/tests/benchmarks/results/2026-07-20T235240Z/commands.sh new file mode 100755 index 0000000..40fd3f3 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/commands.sh @@ -0,0 +1,133 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Runs only against the local Compose project. It never provisions cloud +# resources. Raw result directories are immutable: choose a new path to rerun. +result_dir=${1:-tests/benchmarks/results/$(date -u +%Y-%m-%dT%H%M%SZ)} +if [[ -e "$result_dir" ]]; then + echo "result directory already exists: $result_dir" >&2 + exit 1 +fi +mkdir -p "$result_dir" +run_suffix=$(date -u +%Y%m%dT%H%M%SZ) +active_prefix="validation-active-$run_suffix" +crash_prefix="validation-crash-$run_suffix" +duplicate_prefix="validation-duplicate-$run_suffix" + +cp "$0" "$result_dir/commands.sh" +docker compose up -d --build +for endpoint in \ + http://localhost:8180/realms/runmesh/.well-known/openid-configuration \ + http://localhost:8080/health/ready; do + ready=0 + for _ in $(seq 1 90); do + if curl -fsS "$endpoint" >/dev/null; then ready=1; break; fi + sleep 2 + done + [[ "$ready" == 1 ]] || { echo "benchmark dependency did not become ready: $endpoint" >&2; exit 1; } +done +benchmark_token=$(python3 tests/benchmarks/local.py token) + +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-before.json" +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_RATE=100 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/api-read.json /scripts/api-read.js + +sleep 3 +submission_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-submission-$run_suffix") +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_WORKFLOW_ID="$submission_workflow" \ + -e RUNMESH_RATE=50 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/workflow-submissions.json /scripts/submissions.js + +docker compose stop scheduler worker-python worker-go +python3 tests/benchmarks/local.py active --count 1000 --prefix "$active_prefix" > "$result_dir/active-workflows.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('active_runs',count(*),'active_tasks',sum(task_count)) FROM (SELECT wr.id,count(tr.id) task_count FROM workflow_runs wr JOIN task_runs tr ON tr.workflow_run_id=wr.id WHERE wr.idempotency_key LIKE '$active_prefix-%' AND wr.status='RUNNING' GROUP BY wr.id) rows" \ + > "$result_dir/active-workflows-database.json" + +# Start two schedulers and twelve workers against six partitions, then measure +# drain throughput for the 1,000 distinct workflow keys created above. +completion_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale scheduler=2 scheduler +docker compose up -d --build --scale worker-go=12 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$active_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 0.2; done +completion_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$completion_start" "$completion_end" > "$result_dir/end-to-end-completion.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"queued_end_to_end_completion","tasks":1000,"elapsed_seconds":round(elapsed,3),"tasks_per_second":round(1000/elapsed,3)}, indent=2)) +PY +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED')) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$active_prefix-%'" \ + > "$result_dir/end-to-end-completion-database.json" + +# Begin at the current topic end so this scenario observes only its own work. +docker compose stop worker-go +docker compose exec -T redpanda rpk group seek runmesh-workers --to end --topics runmesh.tasks >/dev/null +python3 tests/benchmarks/local.py prepare --tasks 10000 --prefix "$crash_prefix" > "$result_dir/worker-crash-setup.json" +dispatch_start=$(python3 -c 'import time; print(time.time_ns())') +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status IN ('READY','BLOCKED')") != 0 ]]; do sleep 0.1; done +dispatch_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$dispatch_start" "$dispatch_end" > "$result_dir/scheduler-dispatch.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"scheduler_dispatch","tasks":10000,"elapsed_seconds":round(elapsed,3),"dispatches_per_second":round(10000/elapsed,3)}, indent=2)) +PY + +# Keep enough tasks running to occupy every available Kafka partition before +# terminating the entire 20-container worker pool. +docker compose exec -T postgres psql -U runmesh -d runmesh -c \ + "WITH selected AS (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' ORDER BY tr.id LIMIT 100) UPDATE task_runs SET input='{\"delay_ms\":5000}'::jsonb WHERE id IN (SELECT id FROM selected);" >/dev/null +docker compose up -d --build --scale worker-go=20 worker-go +deadline=$((SECONDS+60)) +while true; do + running=$(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING'") + [[ "$running" -ge 4 ]] && break + [[ "$SECONDS" -ge "$deadline" ]] && { echo "fewer than four tasks became concurrently RUNNING" >&2; exit 1; } + sleep 0.1 +done +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('running_count',count(*),'task_ids',json_agg(id ORDER BY id)) FROM (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING') active" \ + > "$result_dir/in-flight-before-termination.json" +worker_ids=( $(docker compose ps -q worker-go) ) +docker kill "${worker_ids[@]}" >/dev/null +python3 - "${#worker_ids[@]}" "$crash_prefix" "$running" > "$result_dir/worker-termination.json" <<'PY' +import datetime, json, sys +print(json.dumps({"terminated_workers":int(sys.argv[1]),"idempotency_prefix":sys.argv[2],"in_flight_tasks":int(sys.argv[3]),"terminated_at":datetime.datetime.now(datetime.timezone.utc).isoformat()}, indent=2)) +PY +recovery_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale worker-go=20 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$crash_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 1; done +recovery_end=$(python3 -c 'import time; print(time.time_ns())') +recovery_seconds=$(python3 -c "print(round(($recovery_end-$recovery_start)/1_000_000_000,3))") +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('scenario','worker_termination_and_lease_recovery','tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED'),'attempts',sum(tr.attempt_count),'recovered_tasks',count(*) FILTER (WHERE tr.attempt_count > 1),'duplicate_attempts',sum(tr.attempt_count)-count(*),'recovery_seconds',$recovery_seconds) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%'" \ + > "$result_dir/worker-crash-result.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "WITH gaps AS (SELECT EXTRACT(EPOCH FROM (next_attempt.started_at-expired.ended_at))*1000 milliseconds FROM task_attempts expired JOIN task_attempts next_attempt ON next_attempt.task_run_id=expired.task_run_id AND next_attempt.attempt_number=expired.attempt_number+1 JOIN task_runs tr ON tr.id=expired.task_run_id JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND expired.error_type='LeaseExpired') SELECT json_build_object('samples',count(*),'p50_ms',percentile_cont(0.50) WITHIN GROUP (ORDER BY milliseconds),'p95_ms',percentile_cont(0.95) WITHIN GROUP (ORDER BY milliseconds),'p99_ms',percentile_cont(0.99) WITHIN GROUP (ORDER BY milliseconds)) FROM gaps" \ + > "$result_dir/lease-recovery-distribution.json" + +python3 tests/benchmarks/local.py duplicate --prefix "$duplicate_prefix" > "$result_dir/duplicate-submission.json" +docker run --rm -v "$PWD":/src -w /src -v /var/run/docker.sock:/var/run/docker.sock \ + -e TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal golang:1.25 \ + /usr/local/go/bin/go test -tags=integration -count=1 -run TestDuplicateDispatchIsLeasedOnce -json ./tests/integration \ + > "$result_dir/duplicate-delivery-go-test.json" + +docker compose images --format json > "$result_dir/image-digests.json" +docker compose ps --format json > "$result_dir/compose-topology.json" +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-after.json" +{ + uname -a + sysctl -n machdep.cpu.brand_string 2>/dev/null || true + sysctl -n hw.memsize 2>/dev/null || true + docker version --format '{{json .}}' +} > "$result_dir/hardware.txt" +git rev-parse HEAD > "$result_dir/commit-sha.txt" +python3 tests/benchmarks/verify.py "$result_dir" > "$result_dir/verification.json" + +echo "Benchmark evidence written to $result_dir" diff --git a/tests/benchmarks/results/2026-07-20T235240Z/commit-sha.txt b/tests/benchmarks/results/2026-07-20T235240Z/commit-sha.txt new file mode 100644 index 0000000..84c811a --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/commit-sha.txt @@ -0,0 +1 @@ +7eebd569e63768d853f37484ef121ed77de82234 diff --git a/tests/benchmarks/results/2026-07-20T235240Z/compose-topology.json b/tests/benchmarks/results/2026-07-20T235240Z/compose-topology.json new file mode 100644 index 0000000..fd0cb9b --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/compose-topology.json @@ -0,0 +1,35 @@ +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:20 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"395b47d730a1","Image":"runmesh-control-plane","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=control-plane,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=9fe03b71a2356bebdc17c98f565a44f48023721adb5ec2a83aba50c19bd4f54d,com.docker.compose.container-number=1,com.docker.compose.oneoff=False,com.docker.compose.replace=control-plane-1,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/7001/tcp=:7001,desktop.docker.io/ports/8080/tcp=:8080,com.docker.compose.depends_on=migrate:service_completed_successfully:false,redpanda:service_healthy:false,redis:service_healthy:false,minio:service_healthy:false,keycloak:service_started:false,com.docker.compose.image=sha256:a4e6d9e8b938469d7a63f29c71ebe5cb6e08ba826e7d6c29507bbd2c1ee2bece,com.docker.compose.project=runmesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-control-plane-1","Names":"runmesh-control-plane-1","Networks":"runmesh_default","Ports":"0.0.0.0:7001-\u003e7001/tcp, [::]:7001-\u003e7001/tcp, 0.0.0.0:8080-\u003e8080/tcp, [::]:8080-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":7001,"PublishedPort":7001,"Protocol":"tcp"},{"URL":"::","TargetPort":7001,"PublishedPort":7001,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8080,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8080,"Protocol":"tcp"}],"RunningFor":"7 minutes ago","Service":"control-plane","Size":"0B","State":"running","Status":"Up 7 minutes (healthy)"} +{"Command":"\"/run.sh\"","CreatedAt":"2026-07-20 19:51:28 -0400 EDT","ExitCode":0,"Health":"","ID":"0e46de4c0532","Image":"grafana/grafana:11.4.0","Labels":"desktop.docker.io/binds/1/SourceKind=hostFile,desktop.docker.io/binds/1/Target=/etc/grafana/provisioning,com.docker.compose.depends_on=prometheus:service_started:false,loki:service_started:false,tempo:service_started:false,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/3000/tcp=:3001,com.docker.compose.config-hash=ede6cf07da09ed0d5759a176342e1da8e2d7164eeadeb235d2ead6763b183927,com.docker.compose.container-number=1,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/Target=/var/lib/grafana/dashboards,com.docker.compose.image=sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb,com.docker.compose.service=grafana,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/grafana/dashboards,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/1/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/grafana/provisioning,desktop.docker.io/ports.scheme=v2,maintainer=Grafana Labs \u003chello@grafana.com\u003e,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"/host_mnt/User…,/host_mnt/User…","Name":"runmesh-grafana-1","Names":"runmesh-grafana-1","Networks":"runmesh_default","Ports":"0.0.0.0:3001-\u003e3000/tcp, [::]:3001-\u003e3000/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3000,"PublishedPort":3001,"Protocol":"tcp"},{"URL":"::","TargetPort":3000,"PublishedPort":3001,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"grafana","Size":"0B","State":"running","Status":"Up 11 minutes"} +{"Command":"\"/opt/keycloak/bin/k…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"18044859ec4f","Image":"quay.io/keycloak/keycloak:26.1","Labels":"com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0,io.openshift.expose-services=,io.openshift.tags=keycloak security identity,org.opencontainers.image.description=,org.opencontainers.image.url=https://github.com/keycloak-rel/keycloak-rel,org.opencontainers.image.version=26.1.5,vcs-type=git,architecture=aarch64,build-date=2025-04-08T13:14:37Z,com.docker.compose.oneoff=False,com.docker.compose.service=keycloak,vendor=https://www.keycloak.org/,com.redhat.component=,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/keycloak,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/0/Target=/opt/keycloak/data/import,desktop.docker.io/ports.scheme=v2,maintainer=https://www.keycloak.org/,org.opencontainers.image.created=2025-04-11T07:58:44.198Z,version=26.1.5,com.redhat.license_terms=,org.opencontainers.image.licenses=Apache-2.0,org.opencontainers.image.title=keycloak-rel,release=,com.docker.compose.config-hash=cebace789f94dee1045ba9e8f2f123fa3a9807bdde96bcc4af83324d70c53a7e,com.docker.compose.container-number=1,distribution-scope=public,org.opencontainers.image.documentation=https://www.keycloak.org/documentation,org.opencontainers.image.source=https://github.com/keycloak-rel/keycloak-rel,summary=Keycloak Server Image,url=https://www.keycloak.org/,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,io.buildah.version=1.39.0-dev,name=keycloak,com.docker.compose.depends_on=,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.redhat.build-host=,org.opencontainers.image.revision=e7109eeda3e2630bb65640a6a322f0cb6ff6ddd6,vcs-ref=,com.docker.compose.image=sha256:be6a86215213145bfb4fb3e2b3ab982a806d00262655abdcf3ffa6a38d241c7c,description=Keycloak Server Image,desktop.docker.io/ports/8080/tcp=:8180,io.k8s.description=Keycloak Server Image,io.k8s.display-name=Keycloak Server","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-keycloak-1","Names":"runmesh-keycloak-1","Networks":"runmesh_default","Ports":"0.0.0.0:8180-\u003e8080/tcp, [::]:8180-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8180,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8180,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"keycloak","Size":"0B","State":"running","Status":"Up 11 minutes"} +{"Command":"\"/usr/bin/loki -conf…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"5e38dd422042","Image":"grafana/loki:3.3.2","Labels":"com.docker.compose.container-number=1,com.docker.compose.image=sha256:8af2de1abbdd7aa92b27c9bcc96f0f4140c9096b507c77921ffddf1c6ad6c48f,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=loki,desktop.docker.io/ports/3100/tcp=:3100,com.docker.compose.config-hash=e3121c4e0132494435f1d1cb47ac059e2b1f2f206f8082c2382c39931a5c7960,com.docker.compose.depends_on=,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-loki-1","Names":"runmesh-loki-1","Networks":"runmesh_default","Ports":"0.0.0.0:3100-\u003e3100/tcp, [::]:3100-\u003e3100/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3100,"PublishedPort":3100,"Protocol":"tcp"},{"URL":"::","TargetPort":3100,"PublishedPort":3100,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"loki","Size":"0B","State":"running","Status":"Up 11 minutes"} +{"Command":"\"/usr/bin/docker-ent…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"caa90c23d142","Image":"minio/minio:RELEASE.2025-02-07T23-21-09Z","Labels":"com.docker.compose.version=5.3.0,summary=MinIO is a High Performance Object Storage, API compatible with Amazon S3 cloud storage service.,url=https://www.redhat.com,desktop.docker.io/ports.scheme=v2,io.k8s.description=Very small image which doesn't install the package manager.,vcs-ref=41bec8a95f8231b8982164a882f1b491a864dcce,com.docker.compose.config-hash=c2ef697a7845d5cfeaef7a64bd249c55b2816a78d92a7e6efbaf934addfbfbc9,com.docker.compose.container-number=1,com.docker.compose.image=sha256:640c22768ed5dbc92eacc14502a1b06a1c708fa60431345c78dfc22917062e93,description=MinIO object storage is fundamentally different. Designed for performance and the S3 API, it is 100% open-source. MinIO is ideal for large, private cloud environments with stringent security requirements and delivers mission-critical availability across a diverse range of workloads.,maintainer=MinIO Inc \u003cdev@min.io\u003e,release=RELEASE.2025-02-07T23-21-09Z,vendor=MinIO Inc \u003cdev@min.io\u003e,com.docker.compose.depends_on=,com.docker.compose.project=runmesh,io.k8s.display-name=Red Hat Universal Base Image 9 Micro,io.openshift.expose-services=,name=MinIO,com.docker.compose.service=minio,com.redhat.license_terms=https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI,desktop.docker.io/ports/9000/tcp=:9000,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.redhat.component=ubi9-micro-container,distribution-scope=public,architecture=aarch64,io.buildah.version=1.38.0-dev,version=RELEASE.2025-02-07T23-21-09Z,desktop.docker.io/ports/9001/tcp=:9001,vcs-type=git,build-date=2025-02-06T04:33:00Z","LocalVolumes":"1","Mounts":"runmesh_minio-…","Name":"runmesh-minio-1","Names":"runmesh-minio-1","Networks":"runmesh_default","Ports":"0.0.0.0:9000-9001-\u003e9000-9001/tcp, [::]:9000-9001-\u003e9000-9001/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9000,"PublishedPort":9000,"Protocol":"tcp"},{"URL":"::","TargetPort":9000,"PublishedPort":9000,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":9001,"PublishedPort":9001,"Protocol":"tcp"},{"URL":"::","TargetPort":9001,"PublishedPort":9001,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"minio","Size":"0B","State":"running","Status":"Up 11 minutes (healthy)"} +{"Command":"\"/otelcol-contrib --…\"","CreatedAt":"2026-07-20 19:51:28 -0400 EDT","ExitCode":0,"Health":"","ID":"59bc0d9265b3","Image":"otel/opentelemetry-collector-contrib:0.119.0","Labels":"org.opencontainers.image.version=0.119.0,com.docker.compose.container-number=1,com.docker.compose.depends_on=tempo:service_started:false,loki:service_started:false,com.docker.compose.image=sha256:36c35cc213c0f3b64d6e8a3e844dc90822f00725e0e518eaed5b08bcc2231e72,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=otel-collector,desktop.docker.io/binds/0/Target=/etc/otelcol/config.yaml,org.opencontainers.image.source=https://github.com/open-telemetry/opentelemetry-collector-releases,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/4317/tcp=:4317,desktop.docker.io/ports/8889/tcp=:8889,org.opencontainers.image.licenses=Apache-2.0,org.opencontainers.image.name=opentelemetry-collector-releases,org.opencontainers.image.revision=c06573884854d06efc3ff0d91d76004d49c80a53,com.docker.compose.project=runmesh,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/ports/4318/tcp=:4318,org.opencontainers.image.created=2025-02-04T18:02:02Z,com.docker.compose.config-hash=30112846559126a16e248b6a9473d1a71f5ceee134a40eea9844fcbe6a58f386,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/otel-collector.yaml","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-otel-collector-1","Names":"runmesh-otel-collector-1","Networks":"runmesh_default","Ports":"0.0.0.0:4317-4318-\u003e4317-4318/tcp, [::]:4317-4318-\u003e4317-4318/tcp, 0.0.0.0:8889-\u003e8889/tcp, [::]:8889-\u003e8889/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":4317,"PublishedPort":4317,"Protocol":"tcp"},{"URL":"::","TargetPort":4317,"PublishedPort":4317,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":4318,"PublishedPort":4318,"Protocol":"tcp"},{"URL":"::","TargetPort":4318,"PublishedPort":4318,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":8889,"PublishedPort":8889,"Protocol":"tcp"},{"URL":"::","TargetPort":8889,"PublishedPort":8889,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"otel-collector","Size":"0B","State":"running","Status":"Up 11 minutes"} +{"Command":"\"docker-entrypoint.s…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"c6e6fb97df3f","Image":"postgres:17-alpine","Labels":"com.docker.compose.depends_on=,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/5432/tcp=:5432,com.docker.compose.config-hash=d3a0e466ee146131f19622bff6646dfd87ba3247ac4c064ec21f1013fca34f25,com.docker.compose.container-number=1,com.docker.compose.image=sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193,com.docker.compose.service=postgres,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"1","Mounts":"runmesh_postgr…","Name":"runmesh-postgres-1","Names":"runmesh-postgres-1","Networks":"runmesh_default","Ports":"0.0.0.0:5432-\u003e5432/tcp, [::]:5432-\u003e5432/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":5432,"PublishedPort":5432,"Protocol":"tcp"},{"URL":"::","TargetPort":5432,"PublishedPort":5432,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"postgres","Size":"0B","State":"running","Status":"Up 11 minutes (healthy)"} +{"Command":"\"/bin/prometheus --c…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"fbeb2b4ea323","Image":"prom/prometheus:v3.1.0","Labels":"desktop.docker.io/binds/0/Target=/etc/prometheus/prometheus.yml,com.docker.compose.config-hash=cea444590d60d3b6b6325a4da1ec76a5309ba4a70dcc47d4bc24fdbb081da34d,com.docker.compose.image=sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/prometheus.yaml,desktop.docker.io/binds/0/SourceKind=hostFile,com.docker.compose.depends_on=,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/binds/1/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/prometheus-rules.yaml,desktop.docker.io/ports.scheme=v2,maintainer=The Prometheus Authors \u003cprometheus-developers@googlegroups.com\u003e,org.opencontainers.image.source=https://github.com/prometheus/prometheus,com.docker.compose.container-number=1,desktop.docker.io/binds/1/Target=/etc/prometheus/rules.yaml,desktop.docker.io/ports/9090/tcp=:9090,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=prometheus,desktop.docker.io/binds/1/SourceKind=hostFile","LocalVolumes":"1","Mounts":"/host_mnt/User…,/host_mnt/User…,488ec96d9441ad…","Name":"runmesh-prometheus-1","Names":"runmesh-prometheus-1","Networks":"runmesh_default","Ports":"0.0.0.0:9090-\u003e9090/tcp, [::]:9090-\u003e9090/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9090,"PublishedPort":9090,"Protocol":"tcp"},{"URL":"::","TargetPort":9090,"PublishedPort":9090,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"prometheus","Size":"0B","State":"running","Status":"Up 11 minutes"} +{"Command":"\"docker-entrypoint.s…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"a1445d324e0f","Image":"redis:7.4-alpine","Labels":"com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=redis,desktop.docker.io/ports.scheme=v2,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports/6379/tcp=:6379,com.docker.compose.config-hash=681b4575ba55d081dc10ad086d58179ce9a966b8c7ce8dc3a4259491bddf628e,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.image=sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99","LocalVolumes":"1","Mounts":"runmesh_redis-…","Name":"runmesh-redis-1","Names":"runmesh-redis-1","Networks":"runmesh_default","Ports":"0.0.0.0:6379-\u003e6379/tcp, [::]:6379-\u003e6379/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":6379,"PublishedPort":6379,"Protocol":"tcp"},{"URL":"::","TargetPort":6379,"PublishedPort":6379,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"redis","Size":"0B","State":"running","Status":"Up 11 minutes (healthy)"} +{"Command":"\"/entrypoint.sh redp…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"8afed046466f","Image":"redpandadata/redpanda:v24.3.15","Labels":"com.docker.compose.depends_on=,com.docker.compose.image=sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/19092/tcp=:19092,com.docker.compose.config-hash=f7c33b45bd5515ce890e71f032b2ebf336077806438d6d3da8e8f3532837bae2,com.docker.compose.container-number=1,com.docker.compose.project=runmesh,com.docker.compose.service=redpanda,desktop.docker.io/ports/9644/tcp=:9644,org.opencontainers.image.authors=Redpanda Data \u003chi@redpanda.com\u003e","LocalVolumes":"1","Mounts":"runmesh_redpan…","Name":"runmesh-redpanda-1","Names":"runmesh-redpanda-1","Networks":"runmesh_default","Ports":"0.0.0.0:9644-\u003e9644/tcp, [::]:9644-\u003e9644/tcp, 0.0.0.0:19092-\u003e19092/tcp, [::]:19092-\u003e19092/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9644,"PublishedPort":9644,"Protocol":"tcp"},{"URL":"::","TargetPort":9644,"PublishedPort":9644,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":19092,"PublishedPort":19092,"Protocol":"tcp"},{"URL":"::","TargetPort":19092,"PublishedPort":19092,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"redpanda","Size":"0B","State":"running","Status":"Up 11 minutes (healthy)"} +{"Command":"\"./console\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"7cf18e265933","Image":"redpandadata/console:v2.8.3","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.image=sha256:fc8006f22072293e9fa6a3aa8a0581ac502bc8262767c32c01ee019eca56bb38,com.docker.compose.project=runmesh,com.docker.compose.service=redpanda-console,desktop.docker.io/ports/8080/tcp=:8081,com.docker.compose.config-hash=cb7cc300da1519866e1ef7f83fe7dda15efa317d0575d81fe3db1560604baebb,com.docker.compose.container-number=1,com.docker.compose.depends_on=redpanda:service_healthy:false,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"","Name":"runmesh-redpanda-console-1","Names":"runmesh-redpanda-console-1","Networks":"runmesh_default","Ports":"0.0.0.0:8081-\u003e8080/tcp, [::]:8081-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8081,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8081,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"redpanda-console","Size":"0B","State":"running","Status":"Up 11 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:53:09 -0400 EDT","ExitCode":0,"Health":"","ID":"0ff55f8d4e8f","Image":"runmesh-scheduler","Labels":"com.docker.compose.service=scheduler,com.docker.compose.container-number=1,com.docker.compose.image=sha256:3ebbde7860ff31a104c2888438ca7a329386205c28f50d3e78e95a342316a6b4,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=scheduler-1,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=c2ec170571edb0eb096521acddff62c757fe8eaa763425d2f41f085b450236ac,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,redis:service_healthy:false,migrate:service_completed_successfully:false,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-scheduler-1","Names":"runmesh-scheduler-1","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"9 minutes ago","Service":"scheduler","Size":"0B","State":"running","Status":"Up 8 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:53:09 -0400 EDT","ExitCode":0,"Health":"","ID":"808748b8e673","Image":"runmesh-scheduler","Labels":"com.docker.compose.container-number=2,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=scheduler,com.docker.compose.config-hash=c2ec170571edb0eb096521acddff62c757fe8eaa763425d2f41f085b450236ac,com.docker.compose.depends_on=migrate:service_completed_successfully:false,redpanda-init:service_completed_successfully:false,redis:service_healthy:false,com.docker.compose.image=sha256:3ebbde7860ff31a104c2888438ca7a329386205c28f50d3e78e95a342316a6b4,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=scheduler-2,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-scheduler-2","Names":"runmesh-scheduler-2","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"9 minutes ago","Service":"scheduler","Size":"0B","State":"running","Status":"Up 8 minutes"} +{"Command":"\"/tempo -config.file…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"cf56816bae5e","Image":"grafana/tempo:2.6.1","Labels":"com.docker.compose.depends_on=,com.docker.compose.image=sha256:ef4384fce6e8ad22b95b243d8fc165628cda655376fd50e7850536ad89d71d50,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/ports.scheme=v2,org.opencontainers.image.revision=24c5b553df91cead5e3afc63e79a5f4deb702b62,com.docker.compose.container-number=1,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=tempo,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/SourceKind=hostFile,com.docker.compose.config-hash=4de71b343b413aeaff1ca18f18ac2c9df01f41d4b77c48c3526911fa552ecd98,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/binds/0/Target=/etc/tempo.yaml,org.opencontainers.image.created=2024-10-15T15:13:57Z,org.opencontainers.image.url=https://github.com/grafana/tempo,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/tempo.yaml,desktop.docker.io/ports/3200/tcp=:3200,org.opencontainers.image.source=https://github.com/grafana/tempo.git","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-tempo-1","Names":"runmesh-tempo-1","Networks":"runmesh_default","Ports":"0.0.0.0:3200-\u003e3200/tcp, [::]:3200-\u003e3200/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3200,"PublishedPort":3200,"Protocol":"tcp"},{"URL":"::","TargetPort":3200,"PublishedPort":3200,"Protocol":"tcp"}],"RunningFor":"11 minutes ago","Service":"tempo","Size":"0B","State":"running","Status":"Up 11 minutes"} +{"Command":"\"/docker-entrypoint.…\"","CreatedAt":"2026-07-20 19:53:09 -0400 EDT","ExitCode":0,"Health":"","ID":"ee528c3c9052","Image":"runmesh-web","Labels":"maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e,com.docker.compose.depends_on=control-plane:service_started:false,com.docker.compose.image=sha256:92d9ebb0fc2110acb860a54b71b742f02912c51e17d55e61bd5667736547b41b,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=web,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=e2afc81b870dc82be2a88d0dee013a23d9fa6ddf3304077545e218b9fc0b47da,com.docker.compose.container-number=1,com.docker.compose.oneoff=False,com.docker.compose.replace=web-1,desktop.docker.io/ports/3000/tcp=:3000","LocalVolumes":"0","Mounts":"","Name":"runmesh-web-1","Names":"runmesh-web-1","Networks":"runmesh_default","Ports":"0.0.0.0:3000-\u003e3000/tcp, [::]:3000-\u003e3000/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3000,"PublishedPort":3000,"Protocol":"tcp"},{"URL":"::","TargetPort":3000,"PublishedPort":3000,"Protocol":"tcp"}],"RunningFor":"9 minutes ago","Service":"web","Size":"0B","State":"running","Status":"Up 9 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"e3af80bb1098","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=1,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-1","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-1","Names":"runmesh-worker-go-1","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"3c71dc8a4231","Image":"runmesh-worker-go","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=10,com.docker.compose.oneoff=False,com.docker.compose.replace=worker-go-10,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-10","Names":"runmesh-worker-go-10","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"7886d3df45d6","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.replace=worker-go-11,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=11","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-11","Names":"runmesh-worker-go-11","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"0209251b0424","Image":"runmesh-worker-go","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=12,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-12","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-12","Names":"runmesh-worker-go-12","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"49313b3a028a","Image":"runmesh-worker-go","Labels":"com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=13,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-13","Names":"runmesh-worker-go-13","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"7ccc2472a462","Image":"runmesh-worker-go","Labels":"com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=14,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-14","Names":"runmesh-worker-go-14","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"7f3a1288368d","Image":"runmesh-worker-go","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=15,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.service=worker-go,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-15","Names":"runmesh-worker-go-15","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"105c9cd4fbab","Image":"runmesh-worker-go","Labels":"com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=16","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-16","Names":"runmesh-worker-go-16","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"f5c64bce2a7f","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.container-number=17,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-17","Names":"runmesh-worker-go-17","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"ca9933e0a80c","Image":"runmesh-worker-go","Labels":"com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=18,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-18","Names":"runmesh-worker-go-18","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"9093fc4a4d3e","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.container-number=19,com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-19","Names":"runmesh-worker-go-19","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"f7635153df09","Image":"runmesh-worker-go","Labels":"com.docker.compose.replace=worker-go-2,com.docker.compose.container-number=2,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-2","Names":"runmesh-worker-go-2","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"5cd0200fc757","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=20,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-20","Names":"runmesh-worker-go-20","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"6a42beb17cbc","Image":"runmesh-worker-go","Labels":"com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=3,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-3,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-3","Names":"runmesh-worker-go-3","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"7e46af30971f","Image":"runmesh-worker-go","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=4,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-4,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-4","Names":"runmesh-worker-go-4","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"571798aaa3a5","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=5,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.replace=worker-go-5,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-5","Names":"runmesh-worker-go-5","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"05b2487ca3fe","Image":"runmesh-worker-go","Labels":"com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-6,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=6,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-6","Names":"runmesh-worker-go-6","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"17a883791252","Image":"runmesh-worker-go","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=7,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-7,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-7","Names":"runmesh-worker-go-7","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"3ae9c771914e","Image":"runmesh-worker-go","Labels":"com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-8,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=8,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-8","Names":"runmesh-worker-go-8","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 19:55:21 -0400 EDT","ExitCode":0,"Health":"","ID":"d8fc9106272e","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.image=sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.container-number=9,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-9,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-9","Names":"runmesh-worker-go-9","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"7 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 7 minutes"} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/duplicate-delivery-go-test.json b/tests/benchmarks/results/2026-07-20T235240Z/duplicate-delivery-go-test.json new file mode 100644 index 0000000..4ea8cc8 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/duplicate-delivery-go-test.json @@ -0,0 +1,8 @@ +{"Time":"2026-07-21T00:02:40.643244382Z","Action":"start","Package":"github.com/samarth1412/RunMesh/tests/integration"} +{"Time":"2026-07-21T00:02:40.650890548Z","Action":"run","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce"} +{"Time":"2026-07-21T00:02:40.65095209Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Output":"=== RUN TestDuplicateDispatchIsLeasedOnce\n"} +{"Time":"2026-07-21T00:02:56.68842575Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Output":"--- PASS: TestDuplicateDispatchIsLeasedOnce (16.04s)\n"} +{"Time":"2026-07-21T00:02:56.688526458Z","Action":"pass","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Elapsed":16.04} +{"Time":"2026-07-21T00:02:56.688553792Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Output":"PASS\n"} +{"Time":"2026-07-21T00:02:56.689795125Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Output":"ok \tgithub.com/samarth1412/RunMesh/tests/integration\t16.046s\n"} +{"Time":"2026-07-21T00:02:56.689837417Z","Action":"pass","Package":"github.com/samarth1412/RunMesh/tests/integration","Elapsed":16.047} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/duplicate-submission.json b/tests/benchmarks/results/2026-07-20T235240Z/duplicate-submission.json new file mode 100644 index 0000000..632317b --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/duplicate-submission.json @@ -0,0 +1,10 @@ +{ + "first_run_id": "7828f65d-2229-44d2-a2b6-4e41da06ec9a", + "first_status": 201, + "original_input_preserved": true, + "passed": true, + "same_run": true, + "scenario": "duplicate_submission", + "second_run_id": "7828f65d-2229-44d2-a2b6-4e41da06ec9a", + "second_status": 200 +} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/end-to-end-completion-database.json b/tests/benchmarks/results/2026-07-20T235240Z/end-to-end-completion-database.json new file mode 100644 index 0000000..d03267f --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/end-to-end-completion-database.json @@ -0,0 +1 @@ +{"tasks" : 1000, "succeeded" : 1000, "other" : 0} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/end-to-end-completion.json b/tests/benchmarks/results/2026-07-20T235240Z/end-to-end-completion.json new file mode 100644 index 0000000..9ad191d --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/end-to-end-completion.json @@ -0,0 +1,6 @@ +{ + "scenario": "queued_end_to_end_completion", + "tasks": 1000, + "elapsed_seconds": 16.007, + "tasks_per_second": 62.473 +} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/hardware.txt b/tests/benchmarks/results/2026-07-20T235240Z/hardware.txt new file mode 100644 index 0000000..31d8876 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/hardware.txt @@ -0,0 +1,4 @@ +Darwin samarths-MacBook-Air.local 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:26:22 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T8132 arm64 +Apple M4 +17179869184 +{"Client":{"Version":"29.6.1","ApiVersion":"1.55","DefaultAPIVersion":"1.55","GitCommit":"8900f1d","GoVersion":"go1.26.4","Os":"darwin","Arch":"arm64","BuildTime":"Fri Jun 26 11:39:35 2026","Context":"desktop-linux"},"Server":{"Platform":{"Name":"Docker Desktop 4.82.0 (233772)"},"Version":"29.6.1","ApiVersion":"1.55","MinAPIVersion":"1.40","Os":"linux","Arch":"arm64","Components":[{"Name":"Engine","Version":"29.6.1","Details":{"ApiVersion":"1.55","Arch":"arm64","BuildTime":"Fri Jun 26 11:39:58 2026","Experimental":"false","GitCommit":"8ec5ab3","GoVersion":"go1.26.4","KernelVersion":"6.12.76-linuxkit","MinAPIVersion":"1.40","Module":"github.com/moby/moby/v2","ModuleVersion":"v2.0.0+unknown","Os":"linux"}},{"Name":"containerd","Version":"v2.2.5","Details":{"GitCommit":"e53c7c1516c3b2bff98eb76f1f4117477e6f4e66"}},{"Name":"runc","Version":"1.3.6","Details":{"GitCommit":"v1.3.6-0-g491b69ba"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"GitCommit":"8ec5ab3","GoVersion":"go1.26.4","KernelVersion":"6.12.76-linuxkit","BuildTime":"2026-06-26T11:39:58.000000000+00:00"}} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/image-digests.json b/tests/benchmarks/results/2026-07-20T235240Z/image-digests.json new file mode 100644 index 0000000..91250b1 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/image-digests.json @@ -0,0 +1,2 @@ +[{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-18","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-7","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:83cd9ff6c05903f0b0d9d20e1d33dffc883f25d6296891097b4c99fee1e50b8e","ContainerName":"runmesh-worker-python-1","Repository":"runmesh-worker-python","Tag":"latest","Platform":"linux/arm64","Size":60024247,"Created":"2026-07-20T23:22:00.604549877Z","LastTagTime":"2026-07-20T23:52:41.353282257Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-20","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-14","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99","ContainerName":"runmesh-redis-1","Repository":"redis","Tag":"7.4-alpine","Platform":"linux/arm64/v8","Size":16790804,"Created":"2026-05-07T17:39:54.062865523Z","LastTagTime":"2026-07-20T00:45:12.219804333Z"},{"ID":"sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d","ContainerName":"runmesh-redpanda-1","Repository":"redpandadata/redpanda","Tag":"v24.3.15","Platform":"linux/arm64/v8","Size":183895553,"Created":"2025-06-18T02:52:15.126275953Z","LastTagTime":"2026-07-20T00:48:16.687951877Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-2","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-12","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-19","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-13","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:fc8006f22072293e9fa6a3aa8a0581ac502bc8262767c32c01ee019eca56bb38","ContainerName":"runmesh-redpanda-console-1","Repository":"redpandadata/console","Tag":"v2.8.3","Platform":"linux/arm64","Size":73250938,"Created":"2025-02-27T18:10:27.99190098Z","LastTagTime":"2026-07-20T00:48:14.485197626Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-17","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:3ebbde7860ff31a104c2888438ca7a329386205c28f50d3e78e95a342316a6b4","ContainerName":"runmesh-scheduler-2","Repository":"runmesh-scheduler","Tag":"latest","Platform":"linux/arm64","Size":8457935,"Created":"2026-07-20T23:08:19.62513022Z","LastTagTime":"2026-07-20T23:53:08.445131672Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-3","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-10","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d","ContainerName":"runmesh-redpanda-init-1","Repository":"redpandadata/redpanda","Tag":"v24.3.15","Platform":"linux/arm64/v8","Size":183895553,"Created":"2025-06-18T02:52:15.126275953Z","LastTagTime":"2026-07-20T00:48:16.687951877Z"},{"ID":"sha256:be6a86215213145bfb4fb3e2b3ab982a806d00262655abdcf3ffa6a38d241c7c","ContainerName":"runmesh-keycloak-1","Repository":"quay.io/keycloak/keycloak","Tag":"26.1","Platform":"linux/arm64","Size":241302481,"Created":"2025-04-11T08:01:18.363925612Z","LastTagTime":"2026-07-20T00:48:11.796539791Z"},{"ID":"sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb","ContainerName":"runmesh-grafana-1","Repository":"grafana/grafana","Tag":"11.4.0","Platform":"linux/arm64","Size":125326597,"Created":"2024-12-04T21:33:24.409833365Z","LastTagTime":"2026-07-20T00:48:13.975356709Z"},{"ID":"sha256:640c22768ed5dbc92eacc14502a1b06a1c708fa60431345c78dfc22917062e93","ContainerName":"runmesh-minio-1","Repository":"minio/minio","Tag":"RELEASE.2025-02-07T23-21-09Z","Platform":"linux/arm64","Size":58677008,"Created":"2025-02-08T21:08:53.658721358Z","LastTagTime":"2026-07-20T00:47:58.255328882Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-8","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-1","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:8af2de1abbdd7aa92b27c9bcc96f0f4140c9096b507c77921ffddf1c6ad6c48f","ContainerName":"runmesh-loki-1","Repository":"grafana/loki","Tag":"3.3.2","Platform":"linux/arm64","Size":30732944,"Created":"2024-12-18T17:12:53.000478115Z","LastTagTime":"2026-07-20T00:48:06.06543197Z"},{"ID":"sha256:acded13a336f2b6f35fd9ce14a32834cf1e6b2a7887fe5dfc977b3e563eba39e","ContainerName":"runmesh-migrate-1","Repository":"migrate/migrate","Tag":"v4.18.2","Platform":"linux/arm64","Size":18640157,"Created":"2025-01-27T05:15:01.377819434Z","LastTagTime":"2026-07-20T00:45:00.445620092Z"},{"ID":"sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218","ContainerName":"runmesh-prometheus-1","Repository":"prom/prometheus","Tag":"v3.1.0","Platform":"linux/arm64/v8","Size":110853317,"Created":"2025-01-02T14:15:56.472078076Z","LastTagTime":"2026-07-20T00:48:10.946754847Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-15","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-5","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-11","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-4","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:a4e6d9e8b938469d7a63f29c71ebe5cb6e08ba826e7d6c29507bbd2c1ee2bece","ContainerName":"runmesh-control-plane-1","Repository":"runmesh-control-plane","Tag":"latest","Platform":"linux/arm64","Size":10173680,"Created":"2026-07-20T23:08:20.215292553Z","LastTagTime":"2026-07-20T23:55:20.657417887Z"},{"ID":"sha256:3ebbde7860ff31a104c2888438ca7a329386205c28f50d3e78e95a342316a6b4","ContainerName":"runmesh-scheduler-1","Repository":"runmesh-scheduler","Tag":"latest","Platform":"linux/arm64","Size":8457935,"Created":"2026-07-20T23:08:19.62513022Z","LastTagTime":"2026-07-20T23:53:08.445131672Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-16","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-9","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:f89f8f6c9b770ebab6beae25d7034bd4ae70b6562c1c98540a2b986bba5ccb5b","ContainerName":"runmesh-worker-go-6","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-20T23:55:20.657794803Z"},{"ID":"sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193","ContainerName":"runmesh-postgres-1","Repository":"postgres","Tag":"17-alpine","Platform":"linux/arm64/v8","Size":114981107,"Created":"2026-07-07T17:46:49.401690597Z","LastTagTime":"2026-07-20T00:47:47.860492044Z"},{"ID":"sha256:ef4384fce6e8ad22b95b243d8fc165628cda655376fd50e7850536ad89d71d50","ContainerName":"runmesh-tempo-1","Repository":"grafana/tempo","Tag":"2.6.1","Platform":"linux/arm64/v8","Size":49979919,"Created":"2024-10-15T15:14:02.938965353Z","LastTagTime":"2026-07-20T00:47:57.254291174Z"},{"ID":"sha256:36c35cc213c0f3b64d6e8a3e844dc90822f00725e0e518eaed5b08bcc2231e72","ContainerName":"runmesh-otel-collector-1","Repository":"otel/opentelemetry-collector-contrib","Tag":"0.119.0","Platform":"linux/arm64","Size":72650722,"Created":"2025-02-04T18:02:50.606991596Z","LastTagTime":"2026-07-20T00:47:50.053368504Z"},{"ID":"sha256:92d9ebb0fc2110acb860a54b71b742f02912c51e17d55e61bd5667736547b41b","ContainerName":"runmesh-web-1","Repository":"runmesh-web","Tag":"latest","Platform":"linux/arm64","Size":22001475,"Created":"2026-07-20T23:26:55.776613083Z","LastTagTime":"2026-07-20T23:52:41.914484466Z"}] + diff --git a/tests/benchmarks/results/2026-07-20T235240Z/in-flight-before-termination.json b/tests/benchmarks/results/2026-07-20T235240Z/in-flight-before-termination.json new file mode 100644 index 0000000..2c2c013 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/in-flight-before-termination.json @@ -0,0 +1 @@ +{"running_count" : 5, "task_ids" : ["01a1746a-9557-41d9-98ce-49add4af502a", "1736225c-3492-4306-b0ce-600f65c66664", "a2c15b87-c82d-4cc8-ad08-dbc8722a2a42", "cc8eaaf9-f5fd-4663-a1c7-5dcdfa65326e", "cd6b6515-6233-4cfa-8d7f-a2959af34937"]} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/kafka-topology-after.json b/tests/benchmarks/results/2026-07-20T235240Z/kafka-topology-after.json new file mode 100644 index 0000000..3349d59 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/kafka-topology-after.json @@ -0,0 +1 @@ +[{"summary":{"name":"runmesh.tasks","internal":false,"partitions":6,"replicas":1,"error":""},"configs":[{"key":"cleanup.policy","value":"delete","source":"DEFAULT_CONFIG"},{"key":"compression.type","value":"producer","source":"DEFAULT_CONFIG"},{"key":"delete.retention.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"flush.bytes","value":"262144","source":"DEFAULT_CONFIG"},{"key":"flush.ms","value":"100","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"max.message.bytes","value":"1048576","source":"DEFAULT_CONFIG"},{"key":"message.timestamp.type","value":"CreateTime","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.mode","value":"disabled","source":"DEFAULT_CONFIG"},{"key":"redpanda.leaders.preference","value":"none","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.read","value":"false","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.write","value":"false","source":"DEFAULT_CONFIG"},{"key":"retention.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.ms","value":"86400000","source":"DEFAULT_CONFIG"},{"key":"retention.ms","value":"604800000","source":"DEFAULT_CONFIG"},{"key":"segment.bytes","value":"134217728","source":"DEFAULT_CONFIG"},{"key":"segment.ms","value":"1209600000","source":"DEFAULT_CONFIG"},{"key":"write.caching","value":"true","source":"DEFAULT_CONFIG"}],"partitions":[{"partition":0,"leader":0,"epoch":4,"replicas":[0],"log_start_offset":0,"high_watermark":76946},{"partition":1,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":1702},{"partition":2,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":9287},{"partition":3,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":6073},{"partition":4,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":6088},{"partition":5,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":13835}]}] diff --git a/tests/benchmarks/results/2026-07-20T235240Z/kafka-topology-before.json b/tests/benchmarks/results/2026-07-20T235240Z/kafka-topology-before.json new file mode 100644 index 0000000..18a7567 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/kafka-topology-before.json @@ -0,0 +1 @@ +[{"summary":{"name":"runmesh.tasks","internal":false,"partitions":6,"replicas":1,"error":""},"configs":[{"key":"cleanup.policy","value":"delete","source":"DEFAULT_CONFIG"},{"key":"compression.type","value":"producer","source":"DEFAULT_CONFIG"},{"key":"delete.retention.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"flush.bytes","value":"262144","source":"DEFAULT_CONFIG"},{"key":"flush.ms","value":"100","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"max.message.bytes","value":"1048576","source":"DEFAULT_CONFIG"},{"key":"message.timestamp.type","value":"CreateTime","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.mode","value":"disabled","source":"DEFAULT_CONFIG"},{"key":"redpanda.leaders.preference","value":"none","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.read","value":"false","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.write","value":"false","source":"DEFAULT_CONFIG"},{"key":"retention.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.ms","value":"86400000","source":"DEFAULT_CONFIG"},{"key":"retention.ms","value":"604800000","source":"DEFAULT_CONFIG"},{"key":"segment.bytes","value":"134217728","source":"DEFAULT_CONFIG"},{"key":"segment.ms","value":"1209600000","source":"DEFAULT_CONFIG"},{"key":"write.caching","value":"true","source":"DEFAULT_CONFIG"}],"partitions":[{"partition":0,"leader":0,"epoch":4,"replicas":[0],"log_start_offset":0,"high_watermark":73690},{"partition":1,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":55},{"partition":2,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":31},{"partition":3,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":20},{"partition":4,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":43},{"partition":5,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":32}]}] diff --git a/tests/benchmarks/results/2026-07-20T235240Z/lease-recovery-distribution.json b/tests/benchmarks/results/2026-07-20T235240Z/lease-recovery-distribution.json new file mode 100644 index 0000000..356e022 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/lease-recovery-distribution.json @@ -0,0 +1 @@ +{"samples" : 5, "p50_ms" : 127520.176, "p95_ms" : 294147.0804, "p99_ms" : 315704.29208} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/scheduler-dispatch.json b/tests/benchmarks/results/2026-07-20T235240Z/scheduler-dispatch.json new file mode 100644 index 0000000..effbd92 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/scheduler-dispatch.json @@ -0,0 +1,6 @@ +{ + "scenario": "scheduler_dispatch", + "tasks": 10000, + "elapsed_seconds": 24.417, + "dispatches_per_second": 409.548 +} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/verification.json b/tests/benchmarks/results/2026-07-20T235240Z/verification.json new file mode 100644 index 0000000..07b0ca4 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/verification.json @@ -0,0 +1,21 @@ +{ + "checks": { + "active_workflows": true, + "api_requests": true, + "api_zero_failures": true, + "duplicate_delivery": true, + "duplicate_submission": true, + "end_to_end_zero_task_loss": true, + "lease_recovered": true, + "multi_partition_delivery": true, + "multiple_tasks_in_flight": true, + "six_kafka_partitions": true, + "submission_requests": true, + "submission_zero_failures": true, + "ten_thousand_tasks": true, + "worker_pool_terminated": true, + "zero_task_loss": true + }, + "observed_partitions_with_new_records": 6, + "passed": true +} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/worker-crash-result.json b/tests/benchmarks/results/2026-07-20T235240Z/worker-crash-result.json new file mode 100644 index 0000000..6ac738c --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/worker-crash-result.json @@ -0,0 +1 @@ +{"scenario" : "worker_termination_and_lease_recovery", "tasks" : 10000, "succeeded" : 10000, "other" : 0, "attempts" : 10005, "recovered_tasks" : 5, "duplicate_attempts" : 5, "recovery_seconds" : 369.248} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/worker-crash-setup.json b/tests/benchmarks/results/2026-07-20T235240Z/worker-crash-setup.json new file mode 100644 index 0000000..18e382f --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/worker-crash-setup.json @@ -0,0 +1,31 @@ +{ + "idempotency_prefix": "validation-crash-20260720T235240Z", + "preparation_seconds": 0.516, + "run_count": 20, + "run_ids": [ + "9c8d2b67-3785-4957-97ac-39ff063489fe", + "d067adce-4e7d-48d0-a030-580415994423", + "03fa1712-24eb-4968-9eb3-e7b7ba6f24fc", + "1bad027d-8dd3-4301-8bbb-afdaeeb9f306", + "6246ff6d-078d-4bca-8446-fd6a6f934a96", + "57a5ebff-c669-4613-983f-1ee6b956b4e3", + "2ffd1e41-d8b5-4f24-9050-089f20a404fa", + "1ddadc85-9847-4153-8d18-afb80941beb6", + "2db55126-8322-4668-b425-72a267e29dd3", + "59c57111-5593-4893-9a77-de81c9d3b47a", + "c05cfa53-2198-49f6-9333-95cf5f1ea51c", + "d97783ee-b248-41cb-b5b8-f847892e070c", + "beb4bab8-ee59-4aea-8c96-388048fb3c82", + "b9b669d7-d285-4c28-8cc5-3d5a94d1925c", + "198a41f6-8fd0-447b-b22b-3680137a38ae", + "e25d77f1-e427-4a9f-8f7a-c562910ed459", + "d4c243b4-51d3-4db0-9085-af7162de9e31", + "86bfbb7d-1e9f-49c9-98a3-10b2a5cc7d02", + "84b0b9f9-969a-4238-a6dc-518411eaf238", + "3530fc70-8229-48e3-af8b-80ef884b4287" + ], + "scenario": "worker_termination_and_lease_recovery", + "task_count": 10000, + "tasks_per_run": 500, + "workflow_id": "6b13ce44-55fd-4d1f-a1dd-7803c8cc14df" +} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/worker-termination.json b/tests/benchmarks/results/2026-07-20T235240Z/worker-termination.json new file mode 100644 index 0000000..f722158 --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/worker-termination.json @@ -0,0 +1,6 @@ +{ + "terminated_workers": 20, + "idempotency_prefix": "validation-crash-20260720T235240Z", + "in_flight_tasks": 5, + "terminated_at": "2026-07-20T23:55:35.550786+00:00" +} diff --git a/tests/benchmarks/results/2026-07-20T235240Z/workflow-submissions.json b/tests/benchmarks/results/2026-07-20T235240Z/workflow-submissions.json new file mode 100644 index 0000000..9cf101c --- /dev/null +++ b/tests/benchmarks/results/2026-07-20T235240Z/workflow-submissions.json @@ -0,0 +1,133 @@ +{ + "root_group": { + "name": "", + "path": "", + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "created": { + "passes": 1501, + "fails": 0, + "name": "created", + "path": "::created", + "id": "e26a6144a84abb127f65c1e5808b420c" + } + } + }, + "metrics": { + "http_req_waiting": { + "p(95)": 3.212416, + "avg": 2.339427632245169, + "min": 0.94825, + "med": 1.436791, + "max": 155.3245, + "p(90)": 2.329542 + }, + "vus": { + "value": 0, + "min": 0, + "max": 5 + }, + "http_req_tls_handshaking": { + "med": 0, + "max": 0, + "p(90)": 0, + "p(95)": 0, + "avg": 0, + "min": 0 + }, + "iterations": { + "count": 1501, + "rate": 50.0279739482134 + }, + "http_reqs": { + "count": 1501, + "rate": 50.0279739482134 + }, + "http_req_failed": { + "fails": 1501, + "passes": 0, + "thresholds": { + "rate==0": false + }, + "value": 0 + }, + "http_req_duration": { + "p(95)": 3.363708, + "avg": 2.4018668467688196, + "min": 0.998875, + "med": 1.491375, + "max": 156.007417, + "p(90)": 2.409625 + }, + "http_req_sending": { + "avg": 0.025227827448367792, + "min": 0.008917, + "med": 0.020041, + "max": 1.526, + "p(90)": 0.032833, + "p(95)": 0.044209 + }, + "data_received": { + "count": 812373, + "rate": 27076.199387229826 + }, + "checks": { + "passes": 1501, + "fails": 0, + "thresholds": { + "rate==1": false + }, + "value": 1 + }, + "http_req_connecting": { + "avg": 0.06117449966688873, + "min": 0, + "med": 0, + "max": 21.37625, + "p(90)": 0, + "p(95)": 0.553291 + }, + "iteration_duration": { + "avg": 2.6325887728181203, + "min": 1.0755, + "med": 1.644916, + "max": 157.953041, + "p(90)": 2.801166, + "p(95)": 3.932167 + }, + "vus_max": { + "value": 100, + "min": 100, + "max": 100 + }, + "http_req_blocked": { + "avg": 0.06888515656229165, + "min": 0.001667, + "med": 0.003875, + "max": 21.418708, + "p(90)": 0.012958, + "p(95)": 0.58325 + }, + "data_sent": { + "rate": 77666.54642300366, + "count": 2330246 + }, + "http_req_duration{expected_response:true}": { + "med": 1.491375, + "max": 156.007417, + "p(90)": 2.409625, + "p(95)": 3.363708, + "avg": 2.4018668467688196, + "min": 0.998875 + }, + "http_req_receiving": { + "avg": 0.0372113870752831, + "min": 0.009625, + "med": 0.033333, + "max": 0.386042, + "p(90)": 0.05275, + "p(95)": 0.064375 + } + } +} \ No newline at end of file diff --git a/tests/benchmarks/results/2026-07-21T000619Z/README.md b/tests/benchmarks/results/2026-07-21T000619Z/README.md new file mode 100644 index 0000000..e919b86 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/README.md @@ -0,0 +1,15 @@ +# Superseded local benchmark — 2026-07-21T000619Z + +Source commit: `9d14c59918978549001d9cd6ef14d302b0d196e4` + +This corrected run passed all 15 blocking verification checks. It recorded +3,001 authenticated reads at 100.021 requests/second with 3.386 ms p95 and +4.966 ms p99, scheduler dispatch of 10,000 tasks at 414.042 tasks/second, and +10,000/10,000 successful tasks after terminating 20 workers with seven tasks +actively running. Seven leases were recovered and no task was permanently +lost. + +It is retained as valid historical evidence but was superseded because a later +container-security fix changed the source commit. The latest documented run is +therefore tied to the patched code candidate. Raw JSON and `commands.sh` in +this directory have not been edited. diff --git a/tests/benchmarks/results/2026-07-21T000619Z/active-workflows-database.json b/tests/benchmarks/results/2026-07-21T000619Z/active-workflows-database.json new file mode 100644 index 0000000..756a691 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/active-workflows-database.json @@ -0,0 +1 @@ +{"active_runs" : 1000, "active_tasks" : 1000} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/active-workflows.json b/tests/benchmarks/results/2026-07-21T000619Z/active-workflows.json new file mode 100644 index 0000000..e87b9e6 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/active-workflows.json @@ -0,0 +1,22 @@ +{ + "create_latency": { + "p50_ms": 6.299, + "p95_ms": 8.963, + "p99_ms": 10.89 + }, + "created": 1000, + "elapsed_seconds": 20.59, + "failure_count": 0, + "failure_rate": 0, + "idempotency_prefix": "validation-active-20260721T000619Z", + "requested": 1000, + "sample_run_ids": [ + "4906ac06-fef2-4aaa-bd43-75ed8efee609", + "be7cdb95-dfee-4dd7-ad00-c956b5d3c109", + "b12361c4-e457-441f-9fd1-56f50fbf21bf", + "f9c06143-ff8a-43db-82bd-7af0c5e3f842", + "9eecf321-0e6b-447c-b857-8f1ee3e08bc4" + ], + "scenario": "simultaneously_active_workflows", + "workflow_id": "ebac3506-8a7b-4d59-9a6f-0554bde13c1b" +} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/api-read.json b/tests/benchmarks/results/2026-07-21T000619Z/api-read.json new file mode 100644 index 0000000..cabe093 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/api-read.json @@ -0,0 +1,142 @@ +{ + "metrics": { + "http_req_tls_handshaking": { + "p(90)": 0, + "p(95)": 0, + "p(99)": 0, + "max": 0, + "avg": 0, + "min": 0, + "med": 0 + }, + "vus": { + "value": 0, + "min": 0, + "max": 1 + }, + "vus_max": { + "value": 40, + "min": 40, + "max": 40 + }, + "http_req_duration{expected_response:true}": { + "max": 138.68225, + "avg": 2.2177756167944014, + "min": 0.571541, + "med": 1.491041, + "p(90)": 3.129, + "p(95)": 3.385917, + "p(99)": 4.966167 + }, + "data_sent": { + "count": 4228409, + "rate": 140929.5213535421 + }, + "http_req_waiting": { + "med": 1.435291, + "p(90)": 3.018959, + "p(95)": 3.268, + "p(99)": 4.78425, + "max": 137.60925, + "avg": 2.147670581472844, + "min": 0.552667 + }, + "data_received": { + "count": 1395465, + "rate": 46509.74267522859 + }, + "http_req_sending": { + "p(99)": 0.097709, + "max": 0.927958, + "avg": 0.03000130023325554, + "min": 0.003458, + "med": 0.02, + "p(90)": 0.054375, + "p(95)": 0.062417 + }, + "http_req_receiving": { + "avg": 0.040103735088303887, + "min": 0.00875, + "med": 0.028833, + "p(90)": 0.084333, + "p(95)": 0.117459, + "p(99)": 0.166834, + "max": 1.039042 + }, + "http_reqs": { + "count": 3001, + "rate": 100.0209519897389 + }, + "http_req_duration": { + "med": 1.491041, + "p(90)": 3.129, + "p(95)": 3.385917, + "p(99)": 4.966167, + "max": 138.68225, + "avg": 2.2177756167944014, + "min": 0.571541 + }, + "http_req_connecting": { + "p(90)": 0, + "p(95)": 0, + "p(99)": 0.554792, + "max": 1.356666, + "avg": 0.008911555481506165, + "min": 0, + "med": 0 + }, + "iterations": { + "count": 3001, + "rate": 100.0209519897389 + }, + "iteration_duration": { + "p(90)": 3.417416, + "p(95)": 3.710459, + "p(99)": 5.392542, + "max": 139.251667, + "avg": 2.3907412202599136, + "min": 0.599667, + "med": 1.621542 + }, + "http_req_failed": { + "passes": 0, + "fails": 3001, + "thresholds": { + "rate==0": false + }, + "value": 0 + }, + "checks": { + "passes": 3001, + "fails": 0, + "thresholds": { + "rate==1": false + }, + "value": 1 + }, + "http_req_blocked": { + "med": 0.004334, + "p(90)": 0.015916, + "p(95)": 0.01925, + "p(99)": 0.577083, + "max": 2.298125, + "avg": 0.017480858713762065, + "min": 0.000791 + } + }, + "root_group": { + "name": "", + "path": "", + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "authenticated request succeeded": { + "id": "12f4c1307352dc7d8175954f46790cf7", + "passes": 3001, + "fails": 0, + "name": "authenticated request succeeded", + "path": "::authenticated request succeeded" + } + } + } +} \ No newline at end of file diff --git a/tests/benchmarks/results/2026-07-21T000619Z/commands.sh b/tests/benchmarks/results/2026-07-21T000619Z/commands.sh new file mode 100755 index 0000000..a0917b0 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/commands.sh @@ -0,0 +1,137 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Runs only against the local Compose project. It never provisions cloud +# resources. Raw result directories are immutable: choose a new path to rerun. +result_dir=${1:-tests/benchmarks/results/$(date -u +%Y-%m-%dT%H%M%SZ)} +if [[ -e "$result_dir" ]]; then + echo "result directory already exists: $result_dir" >&2 + exit 1 +fi +mkdir -p "$result_dir" +run_suffix=$(date -u +%Y%m%dT%H%M%SZ) +active_prefix="validation-active-$run_suffix" +crash_prefix="validation-crash-$run_suffix" +duplicate_prefix="validation-duplicate-$run_suffix" + +cp "$0" "$result_dir/commands.sh" +docker compose up -d --build +docker compose up -d --scale scheduler=2 --scale worker-go=1 --scale worker-python=1 scheduler worker-go worker-python +for endpoint in \ + http://localhost:8180/realms/runmesh/.well-known/openid-configuration \ + http://localhost:8080/health/ready; do + ready=0 + for _ in $(seq 1 90); do + if curl -fsS "$endpoint" >/dev/null; then ready=1; break; fi + sleep 2 + done + [[ "$ready" == 1 ]] || { echo "benchmark dependency did not become ready: $endpoint" >&2; exit 1; } +done +benchmark_token=$(python3 tests/benchmarks/local.py token) + +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-before.json" +read_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-read-$run_suffix") +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_READ_PATH="/v1/workflows/$read_workflow" \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_RATE=100 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/api-read.json /scripts/api-read.js + +sleep 3 +submission_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-submission-$run_suffix") +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_WORKFLOW_ID="$submission_workflow" \ + -e RUNMESH_RATE=50 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/workflow-submissions.json /scripts/submissions.js + +docker compose stop scheduler worker-python worker-go +python3 tests/benchmarks/local.py active --count 1000 --prefix "$active_prefix" > "$result_dir/active-workflows.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('active_runs',count(*),'active_tasks',sum(task_count)) FROM (SELECT wr.id,count(tr.id) task_count FROM workflow_runs wr JOIN task_runs tr ON tr.workflow_run_id=wr.id WHERE wr.idempotency_key LIKE '$active_prefix-%' AND wr.status='RUNNING' GROUP BY wr.id) rows" \ + > "$result_dir/active-workflows-database.json" + +# Start two schedulers and twelve workers against six partitions, then measure +# drain throughput for the 1,000 distinct workflow keys created above. +completion_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale scheduler=2 scheduler +docker compose up -d --build --scale worker-go=12 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$active_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 0.2; done +completion_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$completion_start" "$completion_end" > "$result_dir/end-to-end-completion.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"queued_end_to_end_completion","tasks":1000,"elapsed_seconds":round(elapsed,3),"tasks_per_second":round(1000/elapsed,3)}, indent=2)) +PY +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED')) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$active_prefix-%'" \ + > "$result_dir/end-to-end-completion-database.json" + +# Begin at the current topic end so this scenario observes only its own work. +docker compose stop worker-go +docker compose exec -T redpanda rpk group seek runmesh-workers --to end --topics runmesh.tasks >/dev/null +python3 tests/benchmarks/local.py prepare --tasks 10000 --prefix "$crash_prefix" > "$result_dir/worker-crash-setup.json" +dispatch_start=$(python3 -c 'import time; print(time.time_ns())') +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status IN ('READY','BLOCKED')") != 0 ]]; do sleep 0.1; done +dispatch_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$dispatch_start" "$dispatch_end" > "$result_dir/scheduler-dispatch.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"scheduler_dispatch","tasks":10000,"elapsed_seconds":round(elapsed,3),"dispatches_per_second":round(10000/elapsed,3)}, indent=2)) +PY + +# Keep enough tasks running to occupy every available Kafka partition before +# terminating the entire 20-container worker pool. +docker compose exec -T postgres psql -U runmesh -d runmesh -c \ + "WITH selected AS (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' ORDER BY tr.id LIMIT 100) UPDATE task_runs SET input='{\"delay_ms\":5000}'::jsonb WHERE id IN (SELECT id FROM selected);" >/dev/null +docker compose up -d --build --scale worker-go=20 worker-go +deadline=$((SECONDS+60)) +while true; do + running=$(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING'") + [[ "$running" -ge 4 ]] && break + [[ "$SECONDS" -ge "$deadline" ]] && { echo "fewer than four tasks became concurrently RUNNING" >&2; exit 1; } + sleep 0.1 +done +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('running_count',count(*),'task_ids',json_agg(id ORDER BY id)) FROM (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING') active" \ + > "$result_dir/in-flight-before-termination.json" +worker_ids=( $(docker compose ps -q worker-go) ) +docker kill "${worker_ids[@]}" >/dev/null +python3 - "${#worker_ids[@]}" "$crash_prefix" "$running" > "$result_dir/worker-termination.json" <<'PY' +import datetime, json, sys +print(json.dumps({"terminated_workers":int(sys.argv[1]),"idempotency_prefix":sys.argv[2],"in_flight_tasks":int(sys.argv[3]),"terminated_at":datetime.datetime.now(datetime.timezone.utc).isoformat()}, indent=2)) +PY +recovery_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale worker-go=20 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$crash_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 1; done +recovery_end=$(python3 -c 'import time; print(time.time_ns())') +recovery_seconds=$(python3 -c "print(round(($recovery_end-$recovery_start)/1_000_000_000,3))") +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('scenario','worker_termination_and_lease_recovery','tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED'),'attempts',sum(tr.attempt_count),'recovered_tasks',count(*) FILTER (WHERE tr.attempt_count > 1),'duplicate_attempts',sum(tr.attempt_count)-count(*),'recovery_seconds',$recovery_seconds) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%'" \ + > "$result_dir/worker-crash-result.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "WITH gaps AS (SELECT EXTRACT(EPOCH FROM (next_attempt.started_at-expired.ended_at))*1000 milliseconds FROM task_attempts expired JOIN task_attempts next_attempt ON next_attempt.task_run_id=expired.task_run_id AND next_attempt.attempt_number=expired.attempt_number+1 JOIN task_runs tr ON tr.id=expired.task_run_id JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND expired.error_type='LeaseExpired') SELECT json_build_object('samples',count(*),'p50_ms',percentile_cont(0.50) WITHIN GROUP (ORDER BY milliseconds),'p95_ms',percentile_cont(0.95) WITHIN GROUP (ORDER BY milliseconds),'p99_ms',percentile_cont(0.99) WITHIN GROUP (ORDER BY milliseconds)) FROM gaps" \ + > "$result_dir/lease-recovery-distribution.json" + +python3 tests/benchmarks/local.py duplicate --prefix "$duplicate_prefix" > "$result_dir/duplicate-submission.json" +docker run --rm -v "$PWD":/src -w /src -v /var/run/docker.sock:/var/run/docker.sock \ + -v runmesh-go-mod:/go/pkg/mod -v runmesh-go-build:/root/.cache/go-build \ + -e TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal golang:1.25 \ + /usr/local/go/bin/go test -tags=integration -count=1 -run TestDuplicateDispatchIsLeasedOnce -json ./tests/integration \ + > "$result_dir/duplicate-delivery-go-test.json" + +docker compose images --format json > "$result_dir/image-digests.json" +docker compose ps --format json > "$result_dir/compose-topology.json" +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-after.json" +{ + uname -a + sysctl -n machdep.cpu.brand_string 2>/dev/null || true + sysctl -n hw.memsize 2>/dev/null || true + docker version --format '{{json .}}' +} > "$result_dir/hardware.txt" +git rev-parse HEAD > "$result_dir/commit-sha.txt" +python3 tests/benchmarks/verify.py "$result_dir" > "$result_dir/verification.json" + +echo "Benchmark evidence written to $result_dir" diff --git a/tests/benchmarks/results/2026-07-21T000619Z/commit-sha.txt b/tests/benchmarks/results/2026-07-21T000619Z/commit-sha.txt new file mode 100644 index 0000000..b8b7a62 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/commit-sha.txt @@ -0,0 +1 @@ +9d14c59918978549001d9cd6ef14d302b0d196e4 diff --git a/tests/benchmarks/results/2026-07-21T000619Z/compose-topology.json b/tests/benchmarks/results/2026-07-21T000619Z/compose-topology.json new file mode 100644 index 0000000..e9cac05 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/compose-topology.json @@ -0,0 +1,35 @@ +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:10 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"dc2eb12a459c","Image":"runmesh-control-plane","Labels":"com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=control-plane,com.docker.compose.version=5.3.0,desktop.docker.io/ports/7001/tcp=:7001,desktop.docker.io/ports/8080/tcp=:8080,com.docker.compose.config-hash=9fe03b71a2356bebdc17c98f565a44f48023721adb5ec2a83aba50c19bd4f54d,com.docker.compose.container-number=1,com.docker.compose.image=sha256:00f07b01e8035e8d79e6d01731a153b3382779ec2fae253e980220ed741f840d,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=control-plane-1,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=keycloak:service_started:false,migrate:service_completed_successfully:false,redpanda:service_healthy:false,redis:service_healthy:false,minio:service_healthy:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-control-plane-1","Names":"runmesh-control-plane-1","Networks":"runmesh_default","Ports":"0.0.0.0:7001-\u003e7001/tcp, [::]:7001-\u003e7001/tcp, 0.0.0.0:8080-\u003e8080/tcp, [::]:8080-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":7001,"PublishedPort":7001,"Protocol":"tcp"},{"URL":"::","TargetPort":7001,"PublishedPort":7001,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8080,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8080,"Protocol":"tcp"}],"RunningFor":"3 minutes ago","Service":"control-plane","Size":"0B","State":"running","Status":"Up 3 minutes (healthy)"} +{"Command":"\"/run.sh\"","CreatedAt":"2026-07-20 19:51:28 -0400 EDT","ExitCode":0,"Health":"","ID":"0e46de4c0532","Image":"grafana/grafana:11.4.0","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=grafana,desktop.docker.io/binds/1/Target=/etc/grafana/provisioning,com.docker.compose.depends_on=prometheus:service_started:false,loki:service_started:false,tempo:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/3000/tcp=:3001,com.docker.compose.container-number=1,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/grafana/dashboards,desktop.docker.io/binds/0/Target=/var/lib/grafana/dashboards,desktop.docker.io/binds/1/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/grafana/provisioning,com.docker.compose.config-hash=ede6cf07da09ed0d5759a176342e1da8e2d7164eeadeb235d2ead6763b183927,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/1/SourceKind=hostFile,desktop.docker.io/ports.scheme=v2,maintainer=Grafana Labs \u003chello@grafana.com\u003e,com.docker.compose.image=sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb","LocalVolumes":"0","Mounts":"/host_mnt/User…,/host_mnt/User…","Name":"runmesh-grafana-1","Names":"runmesh-grafana-1","Networks":"runmesh_default","Ports":"0.0.0.0:3001-\u003e3000/tcp, [::]:3001-\u003e3000/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3000,"PublishedPort":3001,"Protocol":"tcp"},{"URL":"::","TargetPort":3000,"PublishedPort":3001,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"grafana","Size":"0B","State":"running","Status":"Up 21 minutes"} +{"Command":"\"/opt/keycloak/bin/k…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"18044859ec4f","Image":"quay.io/keycloak/keycloak:26.1","Labels":"vendor=https://www.keycloak.org/,version=26.1.5,maintainer=https://www.keycloak.org/,com.docker.compose.service=keycloak,desktop.docker.io/ports.scheme=v2,org.opencontainers.image.created=2025-04-11T07:58:44.198Z,io.openshift.tags=keycloak security identity,com.docker.compose.oneoff=False,com.redhat.component=,architecture=aarch64,com.docker.compose.image=sha256:be6a86215213145bfb4fb3e2b3ab982a806d00262655abdcf3ffa6a38d241c7c,com.docker.compose.project=runmesh,description=Keycloak Server Image,io.k8s.display-name=Keycloak Server,com.docker.compose.config-hash=cebace789f94dee1045ba9e8f2f123fa3a9807bdde96bcc4af83324d70c53a7e,distribution-scope=public,org.opencontainers.image.url=https://github.com/keycloak-rel/keycloak-rel,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/0/Target=/opt/keycloak/data/import,io.openshift.expose-services=,build-date=2025-04-08T13:14:37Z,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/keycloak,desktop.docker.io/ports/8080/tcp=:8180,io.buildah.version=1.39.0-dev,io.k8s.description=Keycloak Server Image,org.opencontainers.image.description=,summary=Keycloak Server Image,vcs-ref=,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.redhat.build-host=,org.opencontainers.image.documentation=https://www.keycloak.org/documentation,org.opencontainers.image.licenses=Apache-2.0,org.opencontainers.image.source=https://github.com/keycloak-rel/keycloak-rel,org.opencontainers.image.title=keycloak-rel,release=,url=https://www.keycloak.org/,com.redhat.license_terms=,name=keycloak,org.opencontainers.image.revision=e7109eeda3e2630bb65640a6a322f0cb6ff6ddd6,org.opencontainers.image.version=26.1.5,vcs-type=git","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-keycloak-1","Names":"runmesh-keycloak-1","Networks":"runmesh_default","Ports":"0.0.0.0:8180-\u003e8080/tcp, [::]:8180-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8180,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8180,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"keycloak","Size":"0B","State":"running","Status":"Up 21 minutes"} +{"Command":"\"/usr/bin/loki -conf…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"5e38dd422042","Image":"grafana/loki:3.3.2","Labels":"com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.image=sha256:8af2de1abbdd7aa92b27c9bcc96f0f4140c9096b507c77921ffddf1c6ad6c48f,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=loki,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=e3121c4e0132494435f1d1cb47ac059e2b1f2f206f8082c2382c39931a5c7960,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/3100/tcp=:3100","LocalVolumes":"0","Mounts":"","Name":"runmesh-loki-1","Names":"runmesh-loki-1","Networks":"runmesh_default","Ports":"0.0.0.0:3100-\u003e3100/tcp, [::]:3100-\u003e3100/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3100,"PublishedPort":3100,"Protocol":"tcp"},{"URL":"::","TargetPort":3100,"PublishedPort":3100,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"loki","Size":"0B","State":"running","Status":"Up 21 minutes"} +{"Command":"\"/usr/bin/docker-ent…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"caa90c23d142","Image":"minio/minio:RELEASE.2025-02-07T23-21-09Z","Labels":"maintainer=MinIO Inc \u003cdev@min.io\u003e,com.redhat.component=ubi9-micro-container,architecture=aarch64,com.docker.compose.depends_on=,desktop.docker.io/ports.scheme=v2,io.k8s.description=Very small image which doesn't install the package manager.,io.openshift.expose-services=,name=MinIO,vendor=MinIO Inc \u003cdev@min.io\u003e,build-date=2025-02-06T04:33:00Z,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.redhat.license_terms=https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI,summary=MinIO is a High Performance Object Storage, API compatible with Amazon S3 cloud storage service.,url=https://www.redhat.com,com.docker.compose.config-hash=c2ef697a7845d5cfeaef7a64bd249c55b2816a78d92a7e6efbaf934addfbfbc9,com.docker.compose.image=sha256:640c22768ed5dbc92eacc14502a1b06a1c708fa60431345c78dfc22917062e93,com.docker.compose.project=runmesh,io.buildah.version=1.38.0-dev,com.docker.compose.container-number=1,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,description=MinIO object storage is fundamentally different. Designed for performance and the S3 API, it is 100% open-source. MinIO is ideal for large, private cloud environments with stringent security requirements and delivers mission-critical availability across a diverse range of workloads.,desktop.docker.io/ports/9000/tcp=:9000,distribution-scope=public,io.k8s.display-name=Red Hat Universal Base Image 9 Micro,release=RELEASE.2025-02-07T23-21-09Z,com.docker.compose.service=minio,desktop.docker.io/ports/9001/tcp=:9001,vcs-ref=41bec8a95f8231b8982164a882f1b491a864dcce,vcs-type=git,version=RELEASE.2025-02-07T23-21-09Z","LocalVolumes":"1","Mounts":"runmesh_minio-…","Name":"runmesh-minio-1","Names":"runmesh-minio-1","Networks":"runmesh_default","Ports":"0.0.0.0:9000-9001-\u003e9000-9001/tcp, [::]:9000-9001-\u003e9000-9001/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9000,"PublishedPort":9000,"Protocol":"tcp"},{"URL":"::","TargetPort":9000,"PublishedPort":9000,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":9001,"PublishedPort":9001,"Protocol":"tcp"},{"URL":"::","TargetPort":9001,"PublishedPort":9001,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"minio","Size":"0B","State":"running","Status":"Up 21 minutes (healthy)"} +{"Command":"\"/otelcol-contrib --…\"","CreatedAt":"2026-07-20 19:51:28 -0400 EDT","ExitCode":0,"Health":"","ID":"59bc0d9265b3","Image":"otel/opentelemetry-collector-contrib:0.119.0","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=otel-collector,desktop.docker.io/ports/4317/tcp=:4317,desktop.docker.io/ports/8889/tcp=:8889,org.opencontainers.image.licenses=Apache-2.0,org.opencontainers.image.source=https://github.com/open-telemetry/opentelemetry-collector-releases,com.docker.compose.depends_on=tempo:service_started:false,loki:service_started:false,com.docker.compose.image=sha256:36c35cc213c0f3b64d6e8a3e844dc90822f00725e0e518eaed5b08bcc2231e72,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,org.opencontainers.image.created=2025-02-04T18:02:02Z,org.opencontainers.image.name=opentelemetry-collector-releases,org.opencontainers.image.version=0.119.0,com.docker.compose.config-hash=30112846559126a16e248b6a9473d1a71f5ceee134a40eea9844fcbe6a58f386,com.docker.compose.container-number=1,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/otel-collector.yaml,org.opencontainers.image.revision=c06573884854d06efc3ff0d91d76004d49c80a53,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/0/Target=/etc/otelcol/config.yaml,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/4318/tcp=:4318","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-otel-collector-1","Names":"runmesh-otel-collector-1","Networks":"runmesh_default","Ports":"0.0.0.0:4317-4318-\u003e4317-4318/tcp, [::]:4317-4318-\u003e4317-4318/tcp, 0.0.0.0:8889-\u003e8889/tcp, [::]:8889-\u003e8889/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":4317,"PublishedPort":4317,"Protocol":"tcp"},{"URL":"::","TargetPort":4317,"PublishedPort":4317,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":4318,"PublishedPort":4318,"Protocol":"tcp"},{"URL":"::","TargetPort":4318,"PublishedPort":4318,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":8889,"PublishedPort":8889,"Protocol":"tcp"},{"URL":"::","TargetPort":8889,"PublishedPort":8889,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"otel-collector","Size":"0B","State":"running","Status":"Up 21 minutes"} +{"Command":"\"docker-entrypoint.s…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"c6e6fb97df3f","Image":"postgres:17-alpine","Labels":"com.docker.compose.service=postgres,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=1,com.docker.compose.image=sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/5432/tcp=:5432,com.docker.compose.config-hash=d3a0e466ee146131f19622bff6646dfd87ba3247ac4c064ec21f1013fca34f25,com.docker.compose.depends_on=,com.docker.compose.oneoff=False","LocalVolumes":"1","Mounts":"runmesh_postgr…","Name":"runmesh-postgres-1","Names":"runmesh-postgres-1","Networks":"runmesh_default","Ports":"0.0.0.0:5432-\u003e5432/tcp, [::]:5432-\u003e5432/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":5432,"PublishedPort":5432,"Protocol":"tcp"},{"URL":"::","TargetPort":5432,"PublishedPort":5432,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"postgres","Size":"0B","State":"running","Status":"Up 21 minutes (healthy)"} +{"Command":"\"/bin/prometheus --c…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"fbeb2b4ea323","Image":"prom/prometheus:v3.1.0","Labels":"desktop.docker.io/binds/1/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/prometheus-rules.yaml,desktop.docker.io/ports/9090/tcp=:9090,maintainer=The Prometheus Authors \u003cprometheus-developers@googlegroups.com\u003e,com.docker.compose.container-number=1,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/binds/0/Target=/etc/prometheus/prometheus.yml,desktop.docker.io/binds/1/Target=/etc/prometheus/rules.yaml,com.docker.compose.image=sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0,desktop.docker.io/binds/1/SourceKind=hostFile,org.opencontainers.image.source=https://github.com/prometheus/prometheus,com.docker.compose.service=prometheus,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/prometheus.yaml,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=cea444590d60d3b6b6325a4da1ec76a5309ba4a70dcc47d4bc24fdbb081da34d,com.docker.compose.depends_on=,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh","LocalVolumes":"1","Mounts":"/host_mnt/User…,/host_mnt/User…,488ec96d9441ad…","Name":"runmesh-prometheus-1","Names":"runmesh-prometheus-1","Networks":"runmesh_default","Ports":"0.0.0.0:9090-\u003e9090/tcp, [::]:9090-\u003e9090/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9090,"PublishedPort":9090,"Protocol":"tcp"},{"URL":"::","TargetPort":9090,"PublishedPort":9090,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"prometheus","Size":"0B","State":"running","Status":"Up 21 minutes"} +{"Command":"\"docker-entrypoint.s…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"a1445d324e0f","Image":"redis:7.4-alpine","Labels":"com.docker.compose.depends_on=,com.docker.compose.image=sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=681b4575ba55d081dc10ad086d58179ce9a966b8c7ce8dc3a4259491bddf628e,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=redis,desktop.docker.io/ports/6379/tcp=:6379,com.docker.compose.container-number=1","LocalVolumes":"1","Mounts":"runmesh_redis-…","Name":"runmesh-redis-1","Names":"runmesh-redis-1","Networks":"runmesh_default","Ports":"0.0.0.0:6379-\u003e6379/tcp, [::]:6379-\u003e6379/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":6379,"PublishedPort":6379,"Protocol":"tcp"},{"URL":"::","TargetPort":6379,"PublishedPort":6379,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"redis","Size":"0B","State":"running","Status":"Up 21 minutes (healthy)"} +{"Command":"\"/entrypoint.sh redp…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"8afed046466f","Image":"redpandadata/redpanda:v24.3.15","Labels":"desktop.docker.io/ports/19092/tcp=:19092,desktop.docker.io/ports/9644/tcp=:9644,org.opencontainers.image.authors=Redpanda Data \u003chi@redpanda.com\u003e,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.image=sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=redpanda,com.docker.compose.config-hash=f7c33b45bd5515ce890e71f032b2ebf336077806438d6d3da8e8f3532837bae2,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"1","Mounts":"runmesh_redpan…","Name":"runmesh-redpanda-1","Names":"runmesh-redpanda-1","Networks":"runmesh_default","Ports":"0.0.0.0:9644-\u003e9644/tcp, [::]:9644-\u003e9644/tcp, 0.0.0.0:19092-\u003e19092/tcp, [::]:19092-\u003e19092/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9644,"PublishedPort":9644,"Protocol":"tcp"},{"URL":"::","TargetPort":9644,"PublishedPort":9644,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":19092,"PublishedPort":19092,"Protocol":"tcp"},{"URL":"::","TargetPort":19092,"PublishedPort":19092,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"redpanda","Size":"0B","State":"running","Status":"Up 21 minutes (healthy)"} +{"Command":"\"./console\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"7cf18e265933","Image":"redpandadata/console:v2.8.3","Labels":"com.docker.compose.depends_on=redpanda:service_healthy:false,com.docker.compose.image=sha256:fc8006f22072293e9fa6a3aa8a0581ac502bc8262767c32c01ee019eca56bb38,com.docker.compose.service=redpanda-console,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=cb7cc300da1519866e1ef7f83fe7dda15efa317d0575d81fe3db1560604baebb,com.docker.compose.container-number=1,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/8080/tcp=:8081","LocalVolumes":"0","Mounts":"","Name":"runmesh-redpanda-console-1","Names":"runmesh-redpanda-console-1","Networks":"runmesh_default","Ports":"0.0.0.0:8081-\u003e8080/tcp, [::]:8081-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8081,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8081,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"redpanda-console","Size":"0B","State":"running","Status":"Up 21 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:06:48 -0400 EDT","ExitCode":0,"Health":"","ID":"ad50227353c7","Image":"runmesh-scheduler","Labels":"com.docker.compose.project=runmesh,com.docker.compose.replace=scheduler-1,com.docker.compose.service=scheduler,com.docker.compose.image=sha256:5f7106c7d013d91a54ab40165a7df2c2fa731b08dfc17c16420feef05cc2c0f5,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=c2ec170571edb0eb096521acddff62c757fe8eaa763425d2f41f085b450236ac,com.docker.compose.container-number=1,com.docker.compose.depends_on=migrate:service_completed_successfully:false,redpanda-init:service_completed_successfully:false,redis:service_healthy:false,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"","Name":"runmesh-scheduler-1","Names":"runmesh-scheduler-1","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"6 minutes ago","Service":"scheduler","Size":"0B","State":"running","Status":"Up 4 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:06:48 -0400 EDT","ExitCode":0,"Health":"","ID":"99b6cbb6af8c","Image":"runmesh-scheduler","Labels":"com.docker.compose.image=sha256:5f7106c7d013d91a54ab40165a7df2c2fa731b08dfc17c16420feef05cc2c0f5,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=scheduler,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=2,com.docker.compose.depends_on=migrate:service_completed_successfully:false,redpanda-init:service_completed_successfully:false,redis:service_healthy:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=scheduler-2,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=c2ec170571edb0eb096521acddff62c757fe8eaa763425d2f41f085b450236ac","LocalVolumes":"0","Mounts":"","Name":"runmesh-scheduler-2","Names":"runmesh-scheduler-2","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"6 minutes ago","Service":"scheduler","Size":"0B","State":"running","Status":"Up 4 minutes"} +{"Command":"\"/tempo -config.file…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"cf56816bae5e","Image":"grafana/tempo:2.6.1","Labels":"com.docker.compose.config-hash=4de71b343b413aeaff1ca18f18ac2c9df01f41d4b77c48c3526911fa552ecd98,com.docker.compose.container-number=1,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/tempo.yaml,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/ports/3200/tcp=:3200,org.opencontainers.image.source=https://github.com/grafana/tempo.git,org.opencontainers.image.url=https://github.com/grafana/tempo,com.docker.compose.image=sha256:ef4384fce6e8ad22b95b243d8fc165628cda655376fd50e7850536ad89d71d50,com.docker.compose.oneoff=False,org.opencontainers.image.created=2024-10-15T15:13:57Z,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=tempo,desktop.docker.io/ports.scheme=v2,org.opencontainers.image.revision=24c5b553df91cead5e3afc63e79a5f4deb702b62,com.docker.compose.depends_on=,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/binds/0/Target=/etc/tempo.yaml","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-tempo-1","Names":"runmesh-tempo-1","Networks":"runmesh_default","Ports":"0.0.0.0:3200-\u003e3200/tcp, [::]:3200-\u003e3200/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3200,"PublishedPort":3200,"Protocol":"tcp"},{"URL":"::","TargetPort":3200,"PublishedPort":3200,"Protocol":"tcp"}],"RunningFor":"21 minutes ago","Service":"tempo","Size":"0B","State":"running","Status":"Up 21 minutes"} +{"Command":"\"/docker-entrypoint.…\"","CreatedAt":"2026-07-20 20:06:50 -0400 EDT","ExitCode":0,"Health":"","ID":"f057fa755f99","Image":"runmesh-web","Labels":"com.docker.compose.image=sha256:add65ae330e1dfda32e05134de93308613d22c9d6239da1b75f4667591c588ab,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=web,desktop.docker.io/ports/3000/tcp=:3000,com.docker.compose.container-number=1,com.docker.compose.depends_on=control-plane:service_started:false,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=web-1,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e,com.docker.compose.config-hash=e2afc81b870dc82be2a88d0dee013a23d9fa6ddf3304077545e218b9fc0b47da","LocalVolumes":"0","Mounts":"","Name":"runmesh-web-1","Names":"runmesh-web-1","Networks":"runmesh_default","Ports":"0.0.0.0:3000-\u003e3000/tcp, [::]:3000-\u003e3000/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3000,"PublishedPort":3000,"Protocol":"tcp"},{"URL":"::","TargetPort":3000,"PublishedPort":3000,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"web","Size":"0B","State":"running","Status":"Up 6 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"0fadef053387","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.replace=worker-go-1,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=1","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-1","Names":"runmesh-worker-go-1","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"b0f262734c48","Image":"runmesh-worker-go","Labels":"com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=10,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-10","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-10","Names":"runmesh-worker-go-10","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"a782c4d6acc2","Image":"runmesh-worker-go","Labels":"com.docker.compose.replace=worker-go-11,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.container-number=11,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-11","Names":"runmesh-worker-go-11","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"b0577b34222f","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.project=runmesh,com.docker.compose.replace=worker-go-12,com.docker.compose.service=worker-go,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=12,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-12","Names":"runmesh-worker-go-12","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"533df350c631","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=13,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-13","Names":"runmesh-worker-go-13","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"d376770fba49","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=14,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-14","Names":"runmesh-worker-go-14","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"9736ffafb66f","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=15,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-15","Names":"runmesh-worker-go-15","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"c16ebcef228f","Image":"runmesh-worker-go","Labels":"com.docker.compose.container-number=16,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-16","Names":"runmesh-worker-go-16","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"b603b8d3224e","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=17,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=worker-go","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-17","Names":"runmesh-worker-go-17","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"037ff9dfc257","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=18,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-18","Names":"runmesh-worker-go-18","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"ad26aca4b076","Image":"runmesh-worker-go","Labels":"com.docker.compose.container-number=19,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-19","Names":"runmesh-worker-go-19","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"cf9881c30539","Image":"runmesh-worker-go","Labels":"com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,com.docker.compose.container-number=2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-2,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-2","Names":"runmesh-worker-go-2","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"3e1ee3a6f2f7","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=20","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-20","Names":"runmesh-worker-go-20","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"4e2c565245b8","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=3,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-3,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-3","Names":"runmesh-worker-go-3","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"55f6c80f09cc","Image":"runmesh-worker-go","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=4,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-4,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-4","Names":"runmesh-worker-go-4","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"6e433f75edbc","Image":"runmesh-worker-go","Labels":"com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=5,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-5,com.docker.compose.service=worker-go","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-5","Names":"runmesh-worker-go-5","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"5f1b2663299d","Image":"runmesh-worker-go","Labels":"com.docker.compose.container-number=6,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-6,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-6","Names":"runmesh-worker-go-6","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"dc6f143d618a","Image":"runmesh-worker-go","Labels":"com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-7,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=7,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-7","Names":"runmesh-worker-go-7","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"152e88812edc","Image":"runmesh-worker-go","Labels":"com.docker.compose.version=5.3.0,com.docker.compose.container-number=8,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-8,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-8","Names":"runmesh-worker-go-8","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:09:11 -0400 EDT","ExitCode":0,"Health":"","ID":"5d0dfa8e5cd6","Image":"runmesh-worker-go","Labels":"com.docker.compose.project=runmesh,com.docker.compose.replace=worker-go-9,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=9,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-9","Names":"runmesh-worker-go-9","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/duplicate-delivery-go-test.json b/tests/benchmarks/results/2026-07-21T000619Z/duplicate-delivery-go-test.json new file mode 100644 index 0000000..40c8985 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/duplicate-delivery-go-test.json @@ -0,0 +1,8 @@ +{"Time":"2026-07-21T00:12:51.589716554Z","Action":"start","Package":"github.com/samarth1412/RunMesh/tests/integration"} +{"Time":"2026-07-21T00:12:51.600544929Z","Action":"run","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce"} +{"Time":"2026-07-21T00:12:51.600649554Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Output":"=== RUN TestDuplicateDispatchIsLeasedOnce\n"} +{"Time":"2026-07-21T00:13:07.590917505Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Output":"--- PASS: TestDuplicateDispatchIsLeasedOnce (15.99s)\n"} +{"Time":"2026-07-21T00:13:07.591108839Z","Action":"pass","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Elapsed":15.99} +{"Time":"2026-07-21T00:13:07.591152172Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Output":"PASS\n"} +{"Time":"2026-07-21T00:13:07.592567922Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Output":"ok \tgithub.com/samarth1412/RunMesh/tests/integration\t16.003s\n"} +{"Time":"2026-07-21T00:13:07.59260588Z","Action":"pass","Package":"github.com/samarth1412/RunMesh/tests/integration","Elapsed":16.003} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/duplicate-submission.json b/tests/benchmarks/results/2026-07-21T000619Z/duplicate-submission.json new file mode 100644 index 0000000..23d2986 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/duplicate-submission.json @@ -0,0 +1,10 @@ +{ + "first_run_id": "3c2a24a5-c208-4667-858a-3e16cede5fcd", + "first_status": 201, + "original_input_preserved": true, + "passed": true, + "same_run": true, + "scenario": "duplicate_submission", + "second_run_id": "3c2a24a5-c208-4667-858a-3e16cede5fcd", + "second_status": 200 +} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/end-to-end-completion-database.json b/tests/benchmarks/results/2026-07-21T000619Z/end-to-end-completion-database.json new file mode 100644 index 0000000..d03267f --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/end-to-end-completion-database.json @@ -0,0 +1 @@ +{"tasks" : 1000, "succeeded" : 1000, "other" : 0} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/end-to-end-completion.json b/tests/benchmarks/results/2026-07-21T000619Z/end-to-end-completion.json new file mode 100644 index 0000000..4991b61 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/end-to-end-completion.json @@ -0,0 +1,6 @@ +{ + "scenario": "queued_end_to_end_completion", + "tasks": 1000, + "elapsed_seconds": 16.349, + "tasks_per_second": 61.167 +} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/hardware.txt b/tests/benchmarks/results/2026-07-21T000619Z/hardware.txt new file mode 100644 index 0000000..31d8876 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/hardware.txt @@ -0,0 +1,4 @@ +Darwin samarths-MacBook-Air.local 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:26:22 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T8132 arm64 +Apple M4 +17179869184 +{"Client":{"Version":"29.6.1","ApiVersion":"1.55","DefaultAPIVersion":"1.55","GitCommit":"8900f1d","GoVersion":"go1.26.4","Os":"darwin","Arch":"arm64","BuildTime":"Fri Jun 26 11:39:35 2026","Context":"desktop-linux"},"Server":{"Platform":{"Name":"Docker Desktop 4.82.0 (233772)"},"Version":"29.6.1","ApiVersion":"1.55","MinAPIVersion":"1.40","Os":"linux","Arch":"arm64","Components":[{"Name":"Engine","Version":"29.6.1","Details":{"ApiVersion":"1.55","Arch":"arm64","BuildTime":"Fri Jun 26 11:39:58 2026","Experimental":"false","GitCommit":"8ec5ab3","GoVersion":"go1.26.4","KernelVersion":"6.12.76-linuxkit","MinAPIVersion":"1.40","Module":"github.com/moby/moby/v2","ModuleVersion":"v2.0.0+unknown","Os":"linux"}},{"Name":"containerd","Version":"v2.2.5","Details":{"GitCommit":"e53c7c1516c3b2bff98eb76f1f4117477e6f4e66"}},{"Name":"runc","Version":"1.3.6","Details":{"GitCommit":"v1.3.6-0-g491b69ba"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"GitCommit":"8ec5ab3","GoVersion":"go1.26.4","KernelVersion":"6.12.76-linuxkit","BuildTime":"2026-06-26T11:39:58.000000000+00:00"}} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/image-digests.json b/tests/benchmarks/results/2026-07-21T000619Z/image-digests.json new file mode 100644 index 0000000..def94e0 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/image-digests.json @@ -0,0 +1,2 @@ +[{"ID":"sha256:ef4384fce6e8ad22b95b243d8fc165628cda655376fd50e7850536ad89d71d50","ContainerName":"runmesh-tempo-1","Repository":"grafana/tempo","Tag":"2.6.1","Platform":"linux/arm64/v8","Size":49979919,"Created":"2024-10-15T15:14:02.938965353Z","LastTagTime":"2026-07-20T00:47:57.254291174Z"},{"ID":"sha256:36c35cc213c0f3b64d6e8a3e844dc90822f00725e0e518eaed5b08bcc2231e72","ContainerName":"runmesh-otel-collector-1","Repository":"otel/opentelemetry-collector-contrib","Tag":"0.119.0","Platform":"linux/arm64","Size":72650722,"Created":"2025-02-04T18:02:50.606991596Z","LastTagTime":"2026-07-20T00:47:50.053368504Z"},{"ID":"sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb","ContainerName":"runmesh-grafana-1","Repository":"grafana/grafana","Tag":"11.4.0","Platform":"linux/arm64","Size":125326597,"Created":"2024-12-04T21:33:24.409833365Z","LastTagTime":"2026-07-20T00:48:13.975356709Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-14","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-17","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-8","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-13","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:5f7106c7d013d91a54ab40165a7df2c2fa731b08dfc17c16420feef05cc2c0f5","ContainerName":"runmesh-scheduler-2","Repository":"runmesh-scheduler","Tag":"latest","Platform":"linux/arm64","Size":8457935,"Created":"2026-07-20T23:08:19.62513022Z","LastTagTime":"2026-07-21T00:06:48.370268927Z"},{"ID":"sha256:5f7106c7d013d91a54ab40165a7df2c2fa731b08dfc17c16420feef05cc2c0f5","ContainerName":"runmesh-scheduler-1","Repository":"runmesh-scheduler","Tag":"latest","Platform":"linux/arm64","Size":8457935,"Created":"2026-07-20T23:08:19.62513022Z","LastTagTime":"2026-07-21T00:06:48.370268927Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-5","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-16","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-19","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d","ContainerName":"runmesh-redpanda-init-1","Repository":"redpandadata/redpanda","Tag":"v24.3.15","Platform":"linux/arm64/v8","Size":183895553,"Created":"2025-06-18T02:52:15.126275953Z","LastTagTime":"2026-07-20T00:48:16.687951877Z"},{"ID":"sha256:fc8006f22072293e9fa6a3aa8a0581ac502bc8262767c32c01ee019eca56bb38","ContainerName":"runmesh-redpanda-console-1","Repository":"redpandadata/console","Tag":"v2.8.3","Platform":"linux/arm64","Size":73250938,"Created":"2025-02-27T18:10:27.99190098Z","LastTagTime":"2026-07-20T00:48:14.485197626Z"},{"ID":"sha256:2b26767b7ce1923782c5c4d862ed639f1a7d94fc40badd645536906613dc725b","ContainerName":"runmesh-worker-python-1","Repository":"runmesh-worker-python","Tag":"latest","Platform":"linux/arm64","Size":60024247,"Created":"2026-07-20T23:22:00.604549877Z","LastTagTime":"2026-07-21T00:06:20.593807386Z"},{"ID":"sha256:00f07b01e8035e8d79e6d01731a153b3382779ec2fae253e980220ed741f840d","ContainerName":"runmesh-control-plane-1","Repository":"runmesh-control-plane","Tag":"latest","Platform":"linux/arm64","Size":10173680,"Created":"2026-07-20T23:08:20.215292553Z","LastTagTime":"2026-07-21T00:09:10.666524632Z"},{"ID":"sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99","ContainerName":"runmesh-redis-1","Repository":"redis","Tag":"7.4-alpine","Platform":"linux/arm64/v8","Size":16790804,"Created":"2026-05-07T17:39:54.062865523Z","LastTagTime":"2026-07-20T00:45:12.219804333Z"},{"ID":"sha256:acded13a336f2b6f35fd9ce14a32834cf1e6b2a7887fe5dfc977b3e563eba39e","ContainerName":"runmesh-migrate-1","Repository":"migrate/migrate","Tag":"v4.18.2","Platform":"linux/arm64","Size":18640157,"Created":"2025-01-27T05:15:01.377819434Z","LastTagTime":"2026-07-20T00:45:00.445620092Z"},{"ID":"sha256:be6a86215213145bfb4fb3e2b3ab982a806d00262655abdcf3ffa6a38d241c7c","ContainerName":"runmesh-keycloak-1","Repository":"quay.io/keycloak/keycloak","Tag":"26.1","Platform":"linux/arm64","Size":241302481,"Created":"2025-04-11T08:01:18.363925612Z","LastTagTime":"2026-07-20T00:48:11.796539791Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-3","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-9","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193","ContainerName":"runmesh-postgres-1","Repository":"postgres","Tag":"17-alpine","Platform":"linux/arm64/v8","Size":114981107,"Created":"2026-07-07T17:46:49.401690597Z","LastTagTime":"2026-07-20T00:47:47.860492044Z"},{"ID":"sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d","ContainerName":"runmesh-redpanda-1","Repository":"redpandadata/redpanda","Tag":"v24.3.15","Platform":"linux/arm64/v8","Size":183895553,"Created":"2025-06-18T02:52:15.126275953Z","LastTagTime":"2026-07-20T00:48:16.687951877Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-20","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-10","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-15","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-2","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-1","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-11","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:640c22768ed5dbc92eacc14502a1b06a1c708fa60431345c78dfc22917062e93","ContainerName":"runmesh-minio-1","Repository":"minio/minio","Tag":"RELEASE.2025-02-07T23-21-09Z","Platform":"linux/arm64","Size":58677008,"Created":"2025-02-08T21:08:53.658721358Z","LastTagTime":"2026-07-20T00:47:58.255328882Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-7","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-4","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-6","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:add65ae330e1dfda32e05134de93308613d22c9d6239da1b75f4667591c588ab","ContainerName":"runmesh-web-1","Repository":"runmesh-web","Tag":"latest","Platform":"linux/arm64","Size":22001475,"Created":"2026-07-20T23:26:55.776613083Z","LastTagTime":"2026-07-21T00:06:21.293446262Z"},{"ID":"sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218","ContainerName":"runmesh-prometheus-1","Repository":"prom/prometheus","Tag":"v3.1.0","Platform":"linux/arm64/v8","Size":110853317,"Created":"2025-01-02T14:15:56.472078076Z","LastTagTime":"2026-07-20T00:48:10.946754847Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-18","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:2d9808d8c519d4a8fc678f820ff0618209837030dbe9f83cdf225ea00a664657","ContainerName":"runmesh-worker-go-12","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:09:10.666008465Z"},{"ID":"sha256:8af2de1abbdd7aa92b27c9bcc96f0f4140c9096b507c77921ffddf1c6ad6c48f","ContainerName":"runmesh-loki-1","Repository":"grafana/loki","Tag":"3.3.2","Platform":"linux/arm64","Size":30732944,"Created":"2024-12-18T17:12:53.000478115Z","LastTagTime":"2026-07-20T00:48:06.06543197Z"}] + diff --git a/tests/benchmarks/results/2026-07-21T000619Z/in-flight-before-termination.json b/tests/benchmarks/results/2026-07-21T000619Z/in-flight-before-termination.json new file mode 100644 index 0000000..217b7c0 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/in-flight-before-termination.json @@ -0,0 +1 @@ +{"running_count" : 7, "task_ids" : ["00abdf6d-2f9d-4340-9adc-1d042ae8e669", "01af07c5-5146-4616-adf3-cc86dae75414", "30fbc9a2-68bc-4ee4-8914-982d4445d553", "623afe4e-89d9-4db2-831b-460e5c43b52c", "70f110ad-c923-42b0-b738-a7ee8480cf1f", "961146b8-117f-4559-80e8-41b7ec760736", "d63504eb-6522-4fbd-8127-9d0702ccbf9a"]} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/kafka-topology-after.json b/tests/benchmarks/results/2026-07-21T000619Z/kafka-topology-after.json new file mode 100644 index 0000000..5b900b2 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/kafka-topology-after.json @@ -0,0 +1 @@ +[{"summary":{"name":"runmesh.tasks","internal":false,"partitions":6,"replicas":1,"error":""},"configs":[{"key":"cleanup.policy","value":"delete","source":"DEFAULT_CONFIG"},{"key":"compression.type","value":"producer","source":"DEFAULT_CONFIG"},{"key":"delete.retention.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"flush.bytes","value":"262144","source":"DEFAULT_CONFIG"},{"key":"flush.ms","value":"100","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"max.message.bytes","value":"1048576","source":"DEFAULT_CONFIG"},{"key":"message.timestamp.type","value":"CreateTime","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.mode","value":"disabled","source":"DEFAULT_CONFIG"},{"key":"redpanda.leaders.preference","value":"none","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.read","value":"false","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.write","value":"false","source":"DEFAULT_CONFIG"},{"key":"retention.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.ms","value":"86400000","source":"DEFAULT_CONFIG"},{"key":"retention.ms","value":"604800000","source":"DEFAULT_CONFIG"},{"key":"segment.bytes","value":"134217728","source":"DEFAULT_CONFIG"},{"key":"segment.ms","value":"1209600000","source":"DEFAULT_CONFIG"},{"key":"write.caching","value":"true","source":"DEFAULT_CONFIG"}],"partitions":[{"partition":0,"leader":0,"epoch":4,"replicas":[0],"log_start_offset":0,"high_watermark":84829},{"partition":1,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":7385},{"partition":2,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":16744},{"partition":3,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":12897},{"partition":4,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":11387},{"partition":5,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":20835}]}] diff --git a/tests/benchmarks/results/2026-07-21T000619Z/kafka-topology-before.json b/tests/benchmarks/results/2026-07-21T000619Z/kafka-topology-before.json new file mode 100644 index 0000000..3349d59 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/kafka-topology-before.json @@ -0,0 +1 @@ +[{"summary":{"name":"runmesh.tasks","internal":false,"partitions":6,"replicas":1,"error":""},"configs":[{"key":"cleanup.policy","value":"delete","source":"DEFAULT_CONFIG"},{"key":"compression.type","value":"producer","source":"DEFAULT_CONFIG"},{"key":"delete.retention.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"flush.bytes","value":"262144","source":"DEFAULT_CONFIG"},{"key":"flush.ms","value":"100","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"max.message.bytes","value":"1048576","source":"DEFAULT_CONFIG"},{"key":"message.timestamp.type","value":"CreateTime","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.mode","value":"disabled","source":"DEFAULT_CONFIG"},{"key":"redpanda.leaders.preference","value":"none","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.read","value":"false","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.write","value":"false","source":"DEFAULT_CONFIG"},{"key":"retention.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.ms","value":"86400000","source":"DEFAULT_CONFIG"},{"key":"retention.ms","value":"604800000","source":"DEFAULT_CONFIG"},{"key":"segment.bytes","value":"134217728","source":"DEFAULT_CONFIG"},{"key":"segment.ms","value":"1209600000","source":"DEFAULT_CONFIG"},{"key":"write.caching","value":"true","source":"DEFAULT_CONFIG"}],"partitions":[{"partition":0,"leader":0,"epoch":4,"replicas":[0],"log_start_offset":0,"high_watermark":76946},{"partition":1,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":1702},{"partition":2,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":9287},{"partition":3,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":6073},{"partition":4,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":6088},{"partition":5,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":13835}]}] diff --git a/tests/benchmarks/results/2026-07-21T000619Z/lease-recovery-distribution.json b/tests/benchmarks/results/2026-07-21T000619Z/lease-recovery-distribution.json new file mode 100644 index 0000000..8dcc4ac --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/lease-recovery-distribution.json @@ -0,0 +1 @@ +{"samples" : 7, "p50_ms" : 131668.823, "p95_ms" : 160578.6593, "p99_ms" : 167478.96146000002} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/scheduler-dispatch.json b/tests/benchmarks/results/2026-07-21T000619Z/scheduler-dispatch.json new file mode 100644 index 0000000..a50ce0c --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/scheduler-dispatch.json @@ -0,0 +1,6 @@ +{ + "scenario": "scheduler_dispatch", + "tasks": 10000, + "elapsed_seconds": 24.152, + "dispatches_per_second": 414.042 +} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/verification.json b/tests/benchmarks/results/2026-07-21T000619Z/verification.json new file mode 100644 index 0000000..07b0ca4 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/verification.json @@ -0,0 +1,21 @@ +{ + "checks": { + "active_workflows": true, + "api_requests": true, + "api_zero_failures": true, + "duplicate_delivery": true, + "duplicate_submission": true, + "end_to_end_zero_task_loss": true, + "lease_recovered": true, + "multi_partition_delivery": true, + "multiple_tasks_in_flight": true, + "six_kafka_partitions": true, + "submission_requests": true, + "submission_zero_failures": true, + "ten_thousand_tasks": true, + "worker_pool_terminated": true, + "zero_task_loss": true + }, + "observed_partitions_with_new_records": 6, + "passed": true +} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/worker-crash-result.json b/tests/benchmarks/results/2026-07-21T000619Z/worker-crash-result.json new file mode 100644 index 0000000..0eb133e --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/worker-crash-result.json @@ -0,0 +1 @@ +{"scenario" : "worker_termination_and_lease_recovery", "tasks" : 10000, "succeeded" : 10000, "other" : 0, "attempts" : 10007, "recovered_tasks" : 7, "duplicate_attempts" : 7, "recovery_seconds" : 210.388} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/worker-crash-setup.json b/tests/benchmarks/results/2026-07-21T000619Z/worker-crash-setup.json new file mode 100644 index 0000000..fc0bb2d --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/worker-crash-setup.json @@ -0,0 +1,111 @@ +{ + "idempotency_prefix": "validation-crash-20260721T000619Z", + "preparation_seconds": 0.624, + "run_count": 100, + "run_ids": [ + "38a0149b-acbf-4454-8ae3-a1204291d4e4", + "99712f96-4c11-4bc0-8769-27a6cde56ee3", + "9a8b9c52-aa00-4942-8f06-8de0845a383d", + "608561c1-836b-4f42-b563-4de2107fa2b8", + "bd4d95e4-a885-41a9-b10e-9c351038381e", + "b8263a72-325f-47ac-8fc2-bd43bd4b9d7b", + "0f4128ab-361b-4a5e-bdbe-4d6db79f3a28", + "cd811655-936a-4279-89ef-fd2418194456", + "4e66fb79-00c6-44a2-97f0-e9b405ad84ac", + "109c05f8-c5fc-4078-9609-0ffcb30127a2", + "6713426d-06b3-4231-aea5-462664a9ee6f", + "65151d08-5e6b-4e29-98b2-600c05637e7c", + "790934ac-cece-42ba-b495-3739c103d96c", + "9efaa3fb-0998-42af-87f9-717d50a69aa5", + "949163db-0dcb-4f1c-ada7-b948b0895fb8", + "bc42c1b1-3c7b-4b47-952a-b648f5c45559", + "86437d6a-b7dc-4f14-b6f1-68ab95875456", + "362dbc50-5666-4057-bc9e-82246dd1c78f", + "1eb9bec3-06cc-4f5a-9813-b902f3886d03", + "64674113-b390-443e-975b-be14e6ef2a40", + "8d3b7f4d-6d98-4723-8c28-9ed42fcc9461", + "945aada8-5c73-4388-b27e-38be91426755", + "362b76b7-1eb8-45dd-8e67-404ac251daad", + "e449bc58-4dc9-4fe0-b78a-24d09daa0c78", + "ab40fce0-ebf1-4841-b90a-b223bd76dc14", + "34301fc2-0ec1-45e6-b552-aae6f778ee69", + "31f383cf-1c0d-4119-b592-441667f6342b", + "8a50ad49-8759-4d3e-b1d4-48a214157b3d", + "ef02cc86-ba58-4d85-a494-e00033681960", + "aeaeac67-ea4c-4f2a-9893-9e111987ce8e", + "12f216a6-4abf-4cf0-a2f6-1b3957073e49", + "256d3d92-e5fe-43af-926f-afd9f4a1e351", + "6f086826-352d-4eb6-a10a-9fcc0ca925eb", + "fc04cbf6-b3c2-4f28-bc26-62388cb594ca", + "7524e549-7bcd-41ea-9d59-aec4a2234270", + "28a48bc4-8253-46be-bf09-0007061b853a", + "af686e2b-b5d8-45e7-a142-27c96400a932", + "fda783f5-f5f1-48e7-ab7a-ac9036874b7d", + "99cfa7dd-cc99-4774-99dc-c319e34b81d2", + "04e59e51-7222-4b01-a0e6-0539a489a22f", + "065aa7e5-cee8-47b8-ac69-b7b3760c8718", + "010f8fd2-7ef9-4c92-8bea-c1d00ae00f71", + "80bd2f54-61aa-4971-9e0a-75e113e7c495", + "cfbfdaf4-cfbd-46d3-a238-cc90598e243b", + "4ddc1d05-2361-4686-8532-83f59f2c019b", + "eff0e818-64a0-4000-b7ee-7b30512e6df3", + "6281305d-8a9c-424d-ba6f-fe1197f0af13", + "d7d21239-59ee-4e38-a089-32f5bb42c571", + "e5a48448-3758-42f0-b86f-12395fbb5ffc", + "13765eda-eb25-445d-aed1-5eb2f3050926", + "3112dd20-5e32-4aab-a5e2-df9b36224443", + "65b69d72-cf3b-42d2-834d-3339c47adcf4", + "5be90fb6-2fe9-4563-a4c6-b28511614134", + "ca63353c-428c-4641-afdb-45870afc3698", + "80218394-ffd0-43f7-948e-d0e0395a5ce8", + "483006f3-ace8-446b-bdaf-05ec5804cc72", + "5a884778-bc7d-45ce-9724-4c717e18aeb0", + "40f49bad-4e4e-4866-af88-322b12c7e798", + "6d7b1fcd-0a40-482f-a2bc-0ffc99e51442", + "89d8282c-cacd-4c18-95a2-ed970ec01560", + "0faf8675-f032-424d-9818-9a30fbe2f8ad", + "dddfed1d-b591-4537-a975-5db79a2cc1c6", + "ce08ac86-3ccb-4aa2-8c72-b43b77c51d45", + "c8939937-fa08-400d-8cc5-5e18ec6d9569", + "ab062a64-ae42-4d26-bf15-b28977d00331", + "8f996960-ca10-4924-8a31-4a522a661572", + "6c5e8fd1-ab18-4230-9375-8378415ac624", + "4bfd0d9b-9912-4b62-bbce-bb306e583c15", + "00701d78-40d0-430d-b947-c03d9b6a4be5", + "0f5b7d32-8250-46ad-8511-f939296ec4ea", + "8aa385d3-bb74-4926-b603-04f2e529c80f", + "efebbfbf-3a59-40b8-ad0e-0994af69b853", + "bebed3e8-0728-4e1f-be0d-0dec3e54a00d", + "4d30fc15-86bb-4a6a-872e-37a7a1c3a33d", + "4f3ee66f-c000-43eb-9dd6-b8f3e2facbf6", + "5dd2327a-9df9-4876-bdcb-9e5121e186e3", + "360c8592-27a6-429f-a909-cdf5c677cc14", + "c1fe1a0b-73e8-483b-bcd9-3cc29c1a2cc1", + "afc59c98-57dc-4687-a9f4-662d10becd4e", + "e4c2da1d-eb8b-4bd5-b4bb-4bab08af1a7b", + "feb318a1-78dd-4912-b6bf-81766b046d06", + "9ddd08cf-39da-46e6-84a5-0b6c0f0ce44c", + "c4435e3b-2846-44c8-a5bc-250877a29ac4", + "e3fe65ca-0b49-4093-959d-95575432530e", + "112b7c78-37af-4525-bc73-ccfc7336556a", + "34cece5e-1efc-4d3b-abde-a0360a926093", + "fb3be08f-b725-4e72-8471-1d50ccb99c79", + "37c92b1b-0561-4b6e-b0c1-19ee52a9e486", + "2b213912-459e-439a-b002-7141ccc6ff2e", + "27a87d72-f399-492c-ab6c-48d7b9028693", + "0c3945eb-bab4-460d-8b25-3731f6953222", + "617d48c5-c915-40f6-950d-de59a5ebd7e0", + "826ac9e7-625b-449e-a1a1-bbdc1e2661f3", + "b8385e8e-46b1-4668-8fe8-9df425744ac4", + "12ea16a3-881e-4bbf-88e0-1e8cf320d992", + "33bf6cfb-27a6-4031-bf9a-9c6f419ac65f", + "6d4c59d3-d5d7-4821-8743-2ac791aa47d7", + "92644eb1-b71f-4557-9272-81e5c5ada25b", + "cdd640c9-2d00-418f-986b-8e2c8d9510ec", + "3df02a88-0596-4a1e-ad5f-2eacae3c8aee" + ], + "scenario": "worker_termination_and_lease_recovery", + "task_count": 10000, + "tasks_per_run": 100, + "workflow_id": "1fe6d80e-ea9f-447a-9da3-e8d2e32e287f" +} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/worker-termination.json b/tests/benchmarks/results/2026-07-21T000619Z/worker-termination.json new file mode 100644 index 0000000..2e0aa6f --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/worker-termination.json @@ -0,0 +1,6 @@ +{ + "terminated_workers": 20, + "idempotency_prefix": "validation-crash-20260721T000619Z", + "in_flight_tasks": 7, + "terminated_at": "2026-07-21T00:09:18.873746+00:00" +} diff --git a/tests/benchmarks/results/2026-07-21T000619Z/workflow-submissions.json b/tests/benchmarks/results/2026-07-21T000619Z/workflow-submissions.json new file mode 100644 index 0000000..6b3b28e --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T000619Z/workflow-submissions.json @@ -0,0 +1,142 @@ +{ + "root_group": { + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "created": { + "fails": 0, + "name": "created", + "path": "::created", + "id": "e26a6144a84abb127f65c1e5808b420c", + "passes": 1501 + } + }, + "name": "", + "path": "" + }, + "metrics": { + "http_req_duration": { + "avg": 1.761633111259159, + "min": 0.971583, + "med": 1.509875, + "p(90)": 2.300959, + "p(95)": 2.902916, + "p(99)": 6.223375, + "max": 19.94575 + }, + "http_req_blocked": { + "max": 41.942334, + "avg": 0.10604307395069905, + "min": 0.001708, + "med": 0.003958, + "p(90)": 0.01025, + "p(95)": 0.61875, + "p(99)": 0.832 + }, + "http_req_sending": { + "p(99)": 0.089167, + "max": 0.846917, + "avg": 0.02420935576282475, + "min": 0.008083, + "med": 0.020166, + "p(90)": 0.033792, + "p(95)": 0.047 + }, + "data_sent": { + "count": 2330351, + "rate": 77669.43068992859 + }, + "http_req_duration{expected_response:true}": { + "avg": 1.761633111259159, + "min": 0.971583, + "med": 1.509875, + "p(90)": 2.300959, + "p(95)": 2.902916, + "p(99)": 6.223375, + "max": 19.94575 + }, + "http_reqs": { + "rate": 50.02757759049294, + "count": 1501 + }, + "data_received": { + "count": 812514, + "rate": 27080.68432935495 + }, + "checks": { + "passes": 1501, + "fails": 0, + "thresholds": { + "rate==1": false + }, + "value": 1 + }, + "http_req_waiting": { + "max": 19.657708, + "avg": 1.7007772944703519, + "min": 0.937875, + "med": 1.452917, + "p(90)": 2.228459, + "p(95)": 2.814584, + "p(99)": 6.142667 + }, + "http_req_failed": { + "passes": 0, + "fails": 1501, + "thresholds": { + "rate==0": false + }, + "value": 0 + }, + "iteration_duration": { + "p(99)": 7.140125, + "max": 49.259459, + "avg": 2.0182032504996634, + "min": 1.056333, + "med": 1.678, + "p(90)": 2.607792, + "p(95)": 3.272292 + }, + "http_req_receiving": { + "min": 0.01425, + "med": 0.032917, + "p(90)": 0.052708, + "p(95)": 0.06625, + "p(99)": 0.102, + "max": 0.284167, + "avg": 0.03664646102598266 + }, + "iterations": { + "count": 1501, + "rate": 50.02757759049294 + }, + "http_req_connecting": { + "min": 0, + "med": 0, + "p(90)": 0, + "p(95)": 0.573542, + "p(99)": 0.775292, + "max": 41.867542, + "avg": 0.09856079546968684 + }, + "http_req_tls_handshaking": { + "max": 0, + "avg": 0, + "min": 0, + "med": 0, + "p(90)": 0, + "p(95)": 0, + "p(99)": 0 + }, + "vus": { + "value": 0, + "min": 0, + "max": 0 + }, + "vus_max": { + "value": 100, + "min": 100, + "max": 100 + } + } +} \ No newline at end of file diff --git a/tests/benchmarks/results/2026-07-21T002100Z/README.md b/tests/benchmarks/results/2026-07-21T002100Z/README.md new file mode 100644 index 0000000..f4c2f45 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/README.md @@ -0,0 +1,40 @@ +# Local benchmark evidence — 2026-07-21T002100Z + +Source commit: `0c48987d5259bcdc62cadaecd163d996ad0af0a4` + +This run was produced on an Apple M4 MacBook Air with 16 GiB RAM using +Docker Desktop 4.82.0. Performance values are report-only local evidence; +correctness, tenant isolation, and zero-loss checks are blocking. + +| Scenario | Recorded result | +| --- | --- | +| Authenticated reads at 100 requests/s | 3,001 requests, 0 failures; 1.416/3.228/5.745 ms p50/p95/p99 | +| Workflow submissions at 50 requests/s | 1,501 requests, 0 failures; 1.560/3.236/13.553 ms p50/p95/p99 | +| Simultaneously active workflows | 1,000 created in 20.200 seconds, 0 failures; 6.076/8.640/9.736 ms creation p50/p95/p99 | +| Queued end-to-end completion | 1,000 tasks in 32.524 seconds; 30.747 tasks/s | +| Scheduler dispatch | 10,000 tasks in 24.243 seconds; 412.482 dispatches/s | +| Worker termination and recovery | 20 workers terminated with 6 tasks running; 10,000/10,000 succeeded; 6 recovered tasks/duplicate attempts; 0 permanent loss; 202.867-second full drain | +| Recovered-attempt delay | 6 samples; 125.145/167.824/168.519 seconds p50/p95/p99 from expired attempt end to next attempt start | +| Duplicate submission | Same run returned with `201` then `200`; original input preserved | +| Duplicate Kafka delivery | `TestDuplicateDispatchIsLeasedOnce` passed | + +The topology used two scheduler replicas, six Redpanda partitions, 12 workers +for the 1,000-task completion phase, and 20 Go workers for termination/recovery. +The verifier observed new records on all six partitions and passed all 15 +blocking checks. Recovery latency includes queueing behind the 10,000-task +backlog and is reported as a limitation, not a latency target. + +Raw evidence in this directory is not manually edited: + +- `api-read.json` and `workflow-submissions.json` are k6 summaries. +- `active-workflows*.json`, `end-to-end-completion*.json`, and + `scheduler-dispatch.json` record workload creation and database outcomes. +- `in-flight-before-termination.json`, `worker-termination.json`, + `worker-crash-result.json`, and `lease-recovery-distribution.json` record the + worker-loss experiment. +- `duplicate-submission.json` and `duplicate-delivery-go-test.json` capture the + two idempotency checks. +- `kafka-topology-*.json`, `compose-topology.json`, `hardware.txt`, + `image-digests.json`, and `commit-sha.txt` identify the environment. +- `verification.json` is the machine-readable acceptance result. +- `commands.sh` is the exact benchmark driver copied at run start. diff --git a/tests/benchmarks/results/2026-07-21T002100Z/active-workflows-database.json b/tests/benchmarks/results/2026-07-21T002100Z/active-workflows-database.json new file mode 100644 index 0000000..756a691 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/active-workflows-database.json @@ -0,0 +1 @@ +{"active_runs" : 1000, "active_tasks" : 1000} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/active-workflows.json b/tests/benchmarks/results/2026-07-21T002100Z/active-workflows.json new file mode 100644 index 0000000..69848ef --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/active-workflows.json @@ -0,0 +1,22 @@ +{ + "create_latency": { + "p50_ms": 6.076, + "p95_ms": 8.64, + "p99_ms": 9.736 + }, + "created": 1000, + "elapsed_seconds": 20.2, + "failure_count": 0, + "failure_rate": 0, + "idempotency_prefix": "validation-active-20260721T002324Z", + "requested": 1000, + "sample_run_ids": [ + "7245969e-86b2-4806-b492-74fbd525814d", + "43d1b46e-c9a0-4902-bc31-acb2fc460d91", + "1570e8f0-99c9-457e-8637-56a41fca1785", + "dbaa2833-dad9-4361-9b5c-7f1dce19c8e1", + "092e95d4-5c7e-4887-9f35-f0e03ab1b504" + ], + "scenario": "simultaneously_active_workflows", + "workflow_id": "e573b078-0204-4d0f-a471-7a78b591ac3a" +} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/api-read.json b/tests/benchmarks/results/2026-07-21T002100Z/api-read.json new file mode 100644 index 0000000..870e488 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/api-read.json @@ -0,0 +1,142 @@ +{ + "root_group": { + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "authenticated request succeeded": { + "path": "::authenticated request succeeded", + "id": "12f4c1307352dc7d8175954f46790cf7", + "passes": 3001, + "fails": 0, + "name": "authenticated request succeeded" + } + }, + "name": "", + "path": "" + }, + "metrics": { + "http_req_failed": { + "passes": 0, + "fails": 3001, + "thresholds": { + "rate==0": false + }, + "value": 0 + }, + "http_req_receiving": { + "avg": 0.03494350616461184, + "min": 0.010916, + "med": 0.027209, + "p(90)": 0.055292, + "p(95)": 0.083791, + "p(99)": 0.15975, + "max": 0.50725 + }, + "http_req_duration": { + "min": 0.577083, + "med": 1.416416, + "p(90)": 2.970417, + "p(95)": 3.227917, + "p(99)": 5.745042, + "max": 82.70675, + "avg": 1.9609528937021061 + }, + "data_sent": { + "count": 4228409, + "rate": 140933.02055975512 + }, + "http_req_connecting": { + "p(90)": 0, + "p(95)": 0, + "p(99)": 0.500334, + "max": 0.856959, + "avg": 0.0077517094301899365, + "min": 0, + "med": 0 + }, + "http_req_waiting": { + "med": 1.368208, + "p(90)": 2.878375, + "p(95)": 3.123042, + "p(99)": 5.648625, + "max": 82.609167, + "avg": 1.896724442185942, + "min": 0.553791 + }, + "http_req_blocked": { + "med": 0.003834, + "p(90)": 0.016167, + "p(95)": 0.020042, + "p(99)": 0.524459, + "max": 1.076083, + "avg": 0.01573147184271901, + "min": 0.001166 + }, + "vus_max": { + "value": 40, + "min": 40, + "max": 40 + }, + "iteration_duration": { + "avg": 2.1236605238253925, + "min": 0.628292, + "med": 1.5245, + "p(90)": 3.25, + "p(95)": 3.498542, + "p(99)": 6.683667, + "max": 83.715584 + }, + "vus": { + "value": 1, + "min": 0, + "max": 1 + }, + "http_req_duration{expected_response:true}": { + "max": 82.70675, + "avg": 1.9609528937021061, + "min": 0.577083, + "med": 1.416416, + "p(90)": 2.970417, + "p(95)": 3.227917, + "p(99)": 5.745042 + }, + "checks": { + "passes": 3001, + "fails": 0, + "thresholds": { + "rate==1": false + }, + "value": 1 + }, + "http_req_sending": { + "max": 0.482083, + "avg": 0.029284945351549543, + "min": 0.003709, + "med": 0.019125, + "p(90)": 0.054333, + "p(95)": 0.063209, + "p(99)": 0.097375 + }, + "http_req_tls_handshaking": { + "med": 0, + "p(90)": 0, + "p(95)": 0, + "p(99)": 0, + "max": 0, + "avg": 0, + "min": 0 + }, + "data_received": { + "count": 1395465, + "rate": 46510.89748778292 + }, + "http_reqs": { + "count": 3001, + "rate": 100.02343545759767 + }, + "iterations": { + "count": 3001, + "rate": 100.02343545759767 + } + } +} \ No newline at end of file diff --git a/tests/benchmarks/results/2026-07-21T002100Z/commands.sh b/tests/benchmarks/results/2026-07-21T002100Z/commands.sh new file mode 100755 index 0000000..a0917b0 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/commands.sh @@ -0,0 +1,137 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Runs only against the local Compose project. It never provisions cloud +# resources. Raw result directories are immutable: choose a new path to rerun. +result_dir=${1:-tests/benchmarks/results/$(date -u +%Y-%m-%dT%H%M%SZ)} +if [[ -e "$result_dir" ]]; then + echo "result directory already exists: $result_dir" >&2 + exit 1 +fi +mkdir -p "$result_dir" +run_suffix=$(date -u +%Y%m%dT%H%M%SZ) +active_prefix="validation-active-$run_suffix" +crash_prefix="validation-crash-$run_suffix" +duplicate_prefix="validation-duplicate-$run_suffix" + +cp "$0" "$result_dir/commands.sh" +docker compose up -d --build +docker compose up -d --scale scheduler=2 --scale worker-go=1 --scale worker-python=1 scheduler worker-go worker-python +for endpoint in \ + http://localhost:8180/realms/runmesh/.well-known/openid-configuration \ + http://localhost:8080/health/ready; do + ready=0 + for _ in $(seq 1 90); do + if curl -fsS "$endpoint" >/dev/null; then ready=1; break; fi + sleep 2 + done + [[ "$ready" == 1 ]] || { echo "benchmark dependency did not become ready: $endpoint" >&2; exit 1; } +done +benchmark_token=$(python3 tests/benchmarks/local.py token) + +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-before.json" +read_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-read-$run_suffix") +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_READ_PATH="/v1/workflows/$read_workflow" \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_RATE=100 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/api-read.json /scripts/api-read.js + +sleep 3 +submission_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-submission-$run_suffix") +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_WORKFLOW_ID="$submission_workflow" \ + -e RUNMESH_RATE=50 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/workflow-submissions.json /scripts/submissions.js + +docker compose stop scheduler worker-python worker-go +python3 tests/benchmarks/local.py active --count 1000 --prefix "$active_prefix" > "$result_dir/active-workflows.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('active_runs',count(*),'active_tasks',sum(task_count)) FROM (SELECT wr.id,count(tr.id) task_count FROM workflow_runs wr JOIN task_runs tr ON tr.workflow_run_id=wr.id WHERE wr.idempotency_key LIKE '$active_prefix-%' AND wr.status='RUNNING' GROUP BY wr.id) rows" \ + > "$result_dir/active-workflows-database.json" + +# Start two schedulers and twelve workers against six partitions, then measure +# drain throughput for the 1,000 distinct workflow keys created above. +completion_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale scheduler=2 scheduler +docker compose up -d --build --scale worker-go=12 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$active_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 0.2; done +completion_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$completion_start" "$completion_end" > "$result_dir/end-to-end-completion.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"queued_end_to_end_completion","tasks":1000,"elapsed_seconds":round(elapsed,3),"tasks_per_second":round(1000/elapsed,3)}, indent=2)) +PY +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED')) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$active_prefix-%'" \ + > "$result_dir/end-to-end-completion-database.json" + +# Begin at the current topic end so this scenario observes only its own work. +docker compose stop worker-go +docker compose exec -T redpanda rpk group seek runmesh-workers --to end --topics runmesh.tasks >/dev/null +python3 tests/benchmarks/local.py prepare --tasks 10000 --prefix "$crash_prefix" > "$result_dir/worker-crash-setup.json" +dispatch_start=$(python3 -c 'import time; print(time.time_ns())') +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status IN ('READY','BLOCKED')") != 0 ]]; do sleep 0.1; done +dispatch_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$dispatch_start" "$dispatch_end" > "$result_dir/scheduler-dispatch.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"scheduler_dispatch","tasks":10000,"elapsed_seconds":round(elapsed,3),"dispatches_per_second":round(10000/elapsed,3)}, indent=2)) +PY + +# Keep enough tasks running to occupy every available Kafka partition before +# terminating the entire 20-container worker pool. +docker compose exec -T postgres psql -U runmesh -d runmesh -c \ + "WITH selected AS (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' ORDER BY tr.id LIMIT 100) UPDATE task_runs SET input='{\"delay_ms\":5000}'::jsonb WHERE id IN (SELECT id FROM selected);" >/dev/null +docker compose up -d --build --scale worker-go=20 worker-go +deadline=$((SECONDS+60)) +while true; do + running=$(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING'") + [[ "$running" -ge 4 ]] && break + [[ "$SECONDS" -ge "$deadline" ]] && { echo "fewer than four tasks became concurrently RUNNING" >&2; exit 1; } + sleep 0.1 +done +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('running_count',count(*),'task_ids',json_agg(id ORDER BY id)) FROM (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING') active" \ + > "$result_dir/in-flight-before-termination.json" +worker_ids=( $(docker compose ps -q worker-go) ) +docker kill "${worker_ids[@]}" >/dev/null +python3 - "${#worker_ids[@]}" "$crash_prefix" "$running" > "$result_dir/worker-termination.json" <<'PY' +import datetime, json, sys +print(json.dumps({"terminated_workers":int(sys.argv[1]),"idempotency_prefix":sys.argv[2],"in_flight_tasks":int(sys.argv[3]),"terminated_at":datetime.datetime.now(datetime.timezone.utc).isoformat()}, indent=2)) +PY +recovery_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale worker-go=20 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$crash_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 1; done +recovery_end=$(python3 -c 'import time; print(time.time_ns())') +recovery_seconds=$(python3 -c "print(round(($recovery_end-$recovery_start)/1_000_000_000,3))") +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('scenario','worker_termination_and_lease_recovery','tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED'),'attempts',sum(tr.attempt_count),'recovered_tasks',count(*) FILTER (WHERE tr.attempt_count > 1),'duplicate_attempts',sum(tr.attempt_count)-count(*),'recovery_seconds',$recovery_seconds) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%'" \ + > "$result_dir/worker-crash-result.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "WITH gaps AS (SELECT EXTRACT(EPOCH FROM (next_attempt.started_at-expired.ended_at))*1000 milliseconds FROM task_attempts expired JOIN task_attempts next_attempt ON next_attempt.task_run_id=expired.task_run_id AND next_attempt.attempt_number=expired.attempt_number+1 JOIN task_runs tr ON tr.id=expired.task_run_id JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND expired.error_type='LeaseExpired') SELECT json_build_object('samples',count(*),'p50_ms',percentile_cont(0.50) WITHIN GROUP (ORDER BY milliseconds),'p95_ms',percentile_cont(0.95) WITHIN GROUP (ORDER BY milliseconds),'p99_ms',percentile_cont(0.99) WITHIN GROUP (ORDER BY milliseconds)) FROM gaps" \ + > "$result_dir/lease-recovery-distribution.json" + +python3 tests/benchmarks/local.py duplicate --prefix "$duplicate_prefix" > "$result_dir/duplicate-submission.json" +docker run --rm -v "$PWD":/src -w /src -v /var/run/docker.sock:/var/run/docker.sock \ + -v runmesh-go-mod:/go/pkg/mod -v runmesh-go-build:/root/.cache/go-build \ + -e TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal golang:1.25 \ + /usr/local/go/bin/go test -tags=integration -count=1 -run TestDuplicateDispatchIsLeasedOnce -json ./tests/integration \ + > "$result_dir/duplicate-delivery-go-test.json" + +docker compose images --format json > "$result_dir/image-digests.json" +docker compose ps --format json > "$result_dir/compose-topology.json" +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-after.json" +{ + uname -a + sysctl -n machdep.cpu.brand_string 2>/dev/null || true + sysctl -n hw.memsize 2>/dev/null || true + docker version --format '{{json .}}' +} > "$result_dir/hardware.txt" +git rev-parse HEAD > "$result_dir/commit-sha.txt" +python3 tests/benchmarks/verify.py "$result_dir" > "$result_dir/verification.json" + +echo "Benchmark evidence written to $result_dir" diff --git a/tests/benchmarks/results/2026-07-21T002100Z/commit-sha.txt b/tests/benchmarks/results/2026-07-21T002100Z/commit-sha.txt new file mode 100644 index 0000000..d970a6b --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/commit-sha.txt @@ -0,0 +1 @@ +0c48987d5259bcdc62cadaecd163d996ad0af0a4 diff --git a/tests/benchmarks/results/2026-07-21T002100Z/compose-topology.json b/tests/benchmarks/results/2026-07-21T002100Z/compose-topology.json new file mode 100644 index 0000000..d7e2811 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/compose-topology.json @@ -0,0 +1,35 @@ +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:31 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"5b3969a3ceac","Image":"runmesh-control-plane","Labels":"com.docker.compose.config-hash=9fe03b71a2356bebdc17c98f565a44f48023721adb5ec2a83aba50c19bd4f54d,com.docker.compose.image=sha256:86ac766dc0e9bc786d4ded8511486c7887d0fad0e8e9fc952c4f68351fe78dfa,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=control-plane-1,com.docker.compose.service=control-plane,desktop.docker.io/ports/7001/tcp=:7001,com.docker.compose.container-number=1,com.docker.compose.depends_on=migrate:service_completed_successfully:false,redpanda:service_healthy:false,redis:service_healthy:false,minio:service_healthy:false,keycloak:service_started:false,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/8080/tcp=:8080","LocalVolumes":"0","Mounts":"","Name":"runmesh-control-plane-1","Names":"runmesh-control-plane-1","Networks":"runmesh_default","Ports":"0.0.0.0:7001-\u003e7001/tcp, [::]:7001-\u003e7001/tcp, 0.0.0.0:8080-\u003e8080/tcp, [::]:8080-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":7001,"PublishedPort":7001,"Protocol":"tcp"},{"URL":"::","TargetPort":7001,"PublishedPort":7001,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8080,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8080,"Protocol":"tcp"}],"RunningFor":"3 minutes ago","Service":"control-plane","Size":"0B","State":"running","Status":"Up 3 minutes (healthy)"} +{"Command":"\"/run.sh\"","CreatedAt":"2026-07-20 19:51:28 -0400 EDT","ExitCode":0,"Health":"","ID":"0e46de4c0532","Image":"grafana/grafana:11.4.0","Labels":"com.docker.compose.image=sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb,com.docker.compose.service=grafana,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/grafana/dashboards,desktop.docker.io/binds/0/Target=/var/lib/grafana/dashboards,desktop.docker.io/binds/1/Target=/etc/grafana/provisioning,com.docker.compose.config-hash=ede6cf07da09ed0d5759a176342e1da8e2d7164eeadeb235d2ead6763b183927,com.docker.compose.container-number=1,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/3000/tcp=:3001,maintainer=Grafana Labs \u003chello@grafana.com\u003e,com.docker.compose.depends_on=prometheus:service_started:false,loki:service_started:false,tempo:service_started:false,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/1/SourceKind=hostFile,desktop.docker.io/ports.scheme=v2,desktop.docker.io/binds/1/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/grafana/provisioning","LocalVolumes":"0","Mounts":"/host_mnt/User…,/host_mnt/User…","Name":"runmesh-grafana-1","Names":"runmesh-grafana-1","Networks":"runmesh_default","Ports":"0.0.0.0:3001-\u003e3000/tcp, [::]:3001-\u003e3000/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3000,"PublishedPort":3001,"Protocol":"tcp"},{"URL":"::","TargetPort":3000,"PublishedPort":3001,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"grafana","Size":"0B","State":"running","Status":"Up 38 minutes"} +{"Command":"\"/opt/keycloak/bin/k…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"18044859ec4f","Image":"quay.io/keycloak/keycloak:26.1","Labels":"io.k8s.description=Keycloak Server Image,org.opencontainers.image.url=https://github.com/keycloak-rel/keycloak-rel,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,io.openshift.expose-services=,org.opencontainers.image.description=,org.opencontainers.image.source=https://github.com/keycloak-rel/keycloak-rel,vcs-type=git,com.redhat.build-host=,com.redhat.license_terms=,maintainer=https://www.keycloak.org/,org.opencontainers.image.licenses=Apache-2.0,url=https://www.keycloak.org/,com.docker.compose.oneoff=False,description=Keycloak Server Image,desktop.docker.io/ports.scheme=v2,name=keycloak,org.opencontainers.image.title=keycloak-rel,release=,summary=Keycloak Server Image,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/keycloak,desktop.docker.io/binds/0/Target=/opt/keycloak/data/import,org.opencontainers.image.documentation=https://www.keycloak.org/documentation,vcs-ref=,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/binds/0/SourceKind=hostFile,io.buildah.version=1.39.0-dev,org.opencontainers.image.revision=e7109eeda3e2630bb65640a6a322f0cb6ff6ddd6,vendor=https://www.keycloak.org/,architecture=aarch64,com.docker.compose.depends_on=,com.docker.compose.service=keycloak,distribution-scope=public,io.k8s.display-name=Keycloak Server,org.opencontainers.image.created=2025-04-11T07:58:44.198Z,com.docker.compose.config-hash=cebace789f94dee1045ba9e8f2f123fa3a9807bdde96bcc4af83324d70c53a7e,com.docker.compose.image=sha256:be6a86215213145bfb4fb3e2b3ab982a806d00262655abdcf3ffa6a38d241c7c,io.openshift.tags=keycloak security identity,org.opencontainers.image.version=26.1.5,version=26.1.5,build-date=2025-04-08T13:14:37Z,com.docker.compose.container-number=1,com.redhat.component=,desktop.docker.io/ports/8080/tcp=:8180","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-keycloak-1","Names":"runmesh-keycloak-1","Networks":"runmesh_default","Ports":"0.0.0.0:8180-\u003e8080/tcp, [::]:8180-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8180,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8180,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"keycloak","Size":"0B","State":"running","Status":"Up 38 minutes"} +{"Command":"\"/usr/bin/loki -conf…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"5e38dd422042","Image":"grafana/loki:3.3.2","Labels":"desktop.docker.io/ports/3100/tcp=:3100,com.docker.compose.config-hash=e3121c4e0132494435f1d1cb47ac059e2b1f2f206f8082c2382c39931a5c7960,com.docker.compose.depends_on=,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=loki,com.docker.compose.container-number=1,com.docker.compose.image=sha256:8af2de1abbdd7aa92b27c9bcc96f0f4140c9096b507c77921ffddf1c6ad6c48f,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-loki-1","Names":"runmesh-loki-1","Networks":"runmesh_default","Ports":"0.0.0.0:3100-\u003e3100/tcp, [::]:3100-\u003e3100/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3100,"PublishedPort":3100,"Protocol":"tcp"},{"URL":"::","TargetPort":3100,"PublishedPort":3100,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"loki","Size":"0B","State":"running","Status":"Up 38 minutes"} +{"Command":"\"/usr/bin/docker-ent…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"caa90c23d142","Image":"minio/minio:RELEASE.2025-02-07T23-21-09Z","Labels":"desktop.docker.io/ports/9000/tcp=:9000,name=MinIO,vendor=MinIO Inc \u003cdev@min.io\u003e,com.docker.compose.version=5.3.0,io.k8s.description=Very small image which doesn't install the package manager.,url=https://www.redhat.com,com.redhat.component=ubi9-micro-container,com.redhat.license_terms=https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,description=MinIO object storage is fundamentally different. Designed for performance and the S3 API, it is 100% open-source. MinIO is ideal for large, private cloud environments with stringent security requirements and delivers mission-critical availability across a diverse range of workloads.,desktop.docker.io/ports/9001/tcp=:9001,vcs-ref=41bec8a95f8231b8982164a882f1b491a864dcce,com.docker.compose.oneoff=False,desktop.docker.io/ports.scheme=v2,io.buildah.version=1.38.0-dev,io.k8s.display-name=Red Hat Universal Base Image 9 Micro,com.docker.compose.service=minio,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.project=runmesh,distribution-scope=public,summary=MinIO is a High Performance Object Storage, API compatible with Amazon S3 cloud storage service.,release=RELEASE.2025-02-07T23-21-09Z,vcs-type=git,version=RELEASE.2025-02-07T23-21-09Z,build-date=2025-02-06T04:33:00Z,maintainer=MinIO Inc \u003cdev@min.io\u003e,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,io.openshift.expose-services=,architecture=aarch64,com.docker.compose.config-hash=c2ef697a7845d5cfeaef7a64bd249c55b2816a78d92a7e6efbaf934addfbfbc9,com.docker.compose.image=sha256:640c22768ed5dbc92eacc14502a1b06a1c708fa60431345c78dfc22917062e93","LocalVolumes":"1","Mounts":"runmesh_minio-…","Name":"runmesh-minio-1","Names":"runmesh-minio-1","Networks":"runmesh_default","Ports":"0.0.0.0:9000-9001-\u003e9000-9001/tcp, [::]:9000-9001-\u003e9000-9001/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9000,"PublishedPort":9000,"Protocol":"tcp"},{"URL":"::","TargetPort":9000,"PublishedPort":9000,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":9001,"PublishedPort":9001,"Protocol":"tcp"},{"URL":"::","TargetPort":9001,"PublishedPort":9001,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"minio","Size":"0B","State":"running","Status":"Up 38 minutes (healthy)"} +{"Command":"\"/otelcol-contrib --…\"","CreatedAt":"2026-07-20 19:51:28 -0400 EDT","ExitCode":0,"Health":"","ID":"59bc0d9265b3","Image":"otel/opentelemetry-collector-contrib:0.119.0","Labels":"com.docker.compose.config-hash=30112846559126a16e248b6a9473d1a71f5ceee134a40eea9844fcbe6a58f386,com.docker.compose.image=sha256:36c35cc213c0f3b64d6e8a3e844dc90822f00725e0e518eaed5b08bcc2231e72,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=otel-collector,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/otel-collector.yaml,desktop.docker.io/binds/0/Target=/etc/otelcol/config.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/4317/tcp=:4317,desktop.docker.io/ports/8889/tcp=:8889,org.opencontainers.image.revision=c06573884854d06efc3ff0d91d76004d49c80a53,org.opencontainers.image.version=0.119.0,com.docker.compose.container-number=1,com.docker.compose.project=runmesh,org.opencontainers.image.licenses=Apache-2.0,org.opencontainers.image.name=opentelemetry-collector-releases,org.opencontainers.image.source=https://github.com/open-telemetry/opentelemetry-collector-releases,com.docker.compose.depends_on=tempo:service_started:false,loki:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/ports/4318/tcp=:4318,org.opencontainers.image.created=2025-02-04T18:02:02Z","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-otel-collector-1","Names":"runmesh-otel-collector-1","Networks":"runmesh_default","Ports":"0.0.0.0:4317-4318-\u003e4317-4318/tcp, [::]:4317-4318-\u003e4317-4318/tcp, 0.0.0.0:8889-\u003e8889/tcp, [::]:8889-\u003e8889/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":4317,"PublishedPort":4317,"Protocol":"tcp"},{"URL":"::","TargetPort":4317,"PublishedPort":4317,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":4318,"PublishedPort":4318,"Protocol":"tcp"},{"URL":"::","TargetPort":4318,"PublishedPort":4318,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":8889,"PublishedPort":8889,"Protocol":"tcp"},{"URL":"::","TargetPort":8889,"PublishedPort":8889,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"otel-collector","Size":"0B","State":"running","Status":"Up 38 minutes"} +{"Command":"\"docker-entrypoint.s…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"c6e6fb97df3f","Image":"postgres:17-alpine","Labels":"com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/5432/tcp=:5432,com.docker.compose.config-hash=d3a0e466ee146131f19622bff6646dfd87ba3247ac4c064ec21f1013fca34f25,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=postgres,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.image=sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"1","Mounts":"runmesh_postgr…","Name":"runmesh-postgres-1","Names":"runmesh-postgres-1","Networks":"runmesh_default","Ports":"0.0.0.0:5432-\u003e5432/tcp, [::]:5432-\u003e5432/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":5432,"PublishedPort":5432,"Protocol":"tcp"},{"URL":"::","TargetPort":5432,"PublishedPort":5432,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"postgres","Size":"0B","State":"running","Status":"Up 38 minutes (healthy)"} +{"Command":"\"/bin/prometheus --c…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"fbeb2b4ea323","Image":"prom/prometheus:v3.1.0","Labels":"com.docker.compose.container-number=1,com.docker.compose.oneoff=False,desktop.docker.io/binds/1/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/prometheus-rules.yaml,desktop.docker.io/binds/1/Target=/etc/prometheus/rules.yaml,desktop.docker.io/ports/9090/tcp=:9090,maintainer=The Prometheus Authors \u003cprometheus-developers@googlegroups.com\u003e,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/prometheus.yaml,desktop.docker.io/binds/1/SourceKind=hostFile,org.opencontainers.image.source=https://github.com/prometheus/prometheus,com.docker.compose.config-hash=cea444590d60d3b6b6325a4da1ec76a5309ba4a70dcc47d4bc24fdbb081da34d,com.docker.compose.image=sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218,com.docker.compose.service=prometheus,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/0/Target=/etc/prometheus/prometheus.yml","LocalVolumes":"1","Mounts":"/host_mnt/User…,/host_mnt/User…,488ec96d9441ad…","Name":"runmesh-prometheus-1","Names":"runmesh-prometheus-1","Networks":"runmesh_default","Ports":"0.0.0.0:9090-\u003e9090/tcp, [::]:9090-\u003e9090/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9090,"PublishedPort":9090,"Protocol":"tcp"},{"URL":"::","TargetPort":9090,"PublishedPort":9090,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"prometheus","Size":"0B","State":"running","Status":"Up 38 minutes"} +{"Command":"\"docker-entrypoint.s…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"a1445d324e0f","Image":"redis:7.4-alpine","Labels":"com.docker.compose.config-hash=681b4575ba55d081dc10ad086d58179ce9a966b8c7ce8dc3a4259491bddf628e,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.image=sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=redis,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/6379/tcp=:6379","LocalVolumes":"1","Mounts":"runmesh_redis-…","Name":"runmesh-redis-1","Names":"runmesh-redis-1","Networks":"runmesh_default","Ports":"0.0.0.0:6379-\u003e6379/tcp, [::]:6379-\u003e6379/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":6379,"PublishedPort":6379,"Protocol":"tcp"},{"URL":"::","TargetPort":6379,"PublishedPort":6379,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"redis","Size":"0B","State":"running","Status":"Up 38 minutes (healthy)"} +{"Command":"\"/entrypoint.sh redp…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"8afed046466f","Image":"redpandadata/redpanda:v24.3.15","Labels":"com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/19092/tcp=:19092,com.docker.compose.config-hash=f7c33b45bd5515ce890e71f032b2ebf336077806438d6d3da8e8f3532837bae2,com.docker.compose.image=sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/9644/tcp=:9644,org.opencontainers.image.authors=Redpanda Data \u003chi@redpanda.com\u003e,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=redpanda","LocalVolumes":"1","Mounts":"runmesh_redpan…","Name":"runmesh-redpanda-1","Names":"runmesh-redpanda-1","Networks":"runmesh_default","Ports":"0.0.0.0:9644-\u003e9644/tcp, [::]:9644-\u003e9644/tcp, 0.0.0.0:19092-\u003e19092/tcp, [::]:19092-\u003e19092/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9644,"PublishedPort":9644,"Protocol":"tcp"},{"URL":"::","TargetPort":9644,"PublishedPort":9644,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":19092,"PublishedPort":19092,"Protocol":"tcp"},{"URL":"::","TargetPort":19092,"PublishedPort":19092,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"redpanda","Size":"0B","State":"running","Status":"Up 38 minutes (healthy)"} +{"Command":"\"./console\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"7cf18e265933","Image":"redpandadata/console:v2.8.3","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=redpanda-console,com.docker.compose.depends_on=redpanda:service_healthy:false,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/8080/tcp=:8081,com.docker.compose.config-hash=cb7cc300da1519866e1ef7f83fe7dda15efa317d0575d81fe3db1560604baebb,com.docker.compose.container-number=1,com.docker.compose.image=sha256:fc8006f22072293e9fa6a3aa8a0581ac502bc8262767c32c01ee019eca56bb38,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-redpanda-console-1","Names":"runmesh-redpanda-console-1","Networks":"runmesh_default","Ports":"0.0.0.0:8081-\u003e8080/tcp, [::]:8081-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8081,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8081,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"redpanda-console","Size":"0B","State":"running","Status":"Up 38 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:23:52 -0400 EDT","ExitCode":0,"Health":"","ID":"5aedb26305bc","Image":"runmesh-scheduler","Labels":"com.docker.compose.depends_on=migrate:service_completed_successfully:false,redpanda-init:service_completed_successfully:false,redis:service_healthy:false,com.docker.compose.image=sha256:9503ee66dfca19d00e8d09061fcdbac0390ab0b0a06739788d0e036dc9ef3b2e,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=scheduler-1,com.docker.compose.config-hash=c2ec170571edb0eb096521acddff62c757fe8eaa763425d2f41f085b450236ac,com.docker.compose.container-number=1,com.docker.compose.project=runmesh,com.docker.compose.service=scheduler,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-scheduler-1","Names":"runmesh-scheduler-1","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"6 minutes ago","Service":"scheduler","Size":"0B","State":"running","Status":"Up 4 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:23:52 -0400 EDT","ExitCode":0,"Health":"","ID":"05a78198e120","Image":"runmesh-scheduler","Labels":"com.docker.compose.replace=scheduler-2,com.docker.compose.config-hash=c2ec170571edb0eb096521acddff62c757fe8eaa763425d2f41f085b450236ac,com.docker.compose.container-number=2,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=scheduler,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=migrate:service_completed_successfully:false,redpanda-init:service_completed_successfully:false,redis:service_healthy:false,com.docker.compose.image=sha256:9503ee66dfca19d00e8d09061fcdbac0390ab0b0a06739788d0e036dc9ef3b2e,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-scheduler-2","Names":"runmesh-scheduler-2","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"6 minutes ago","Service":"scheduler","Size":"0B","State":"running","Status":"Up 4 minutes"} +{"Command":"\"/tempo -config.file…\"","CreatedAt":"2026-07-20 19:51:27 -0400 EDT","ExitCode":0,"Health":"","ID":"cf56816bae5e","Image":"grafana/tempo:2.6.1","Labels":"com.docker.compose.config-hash=4de71b343b413aeaff1ca18f18ac2c9df01f41d4b77c48c3526911fa552ecd98,com.docker.compose.depends_on=,com.docker.compose.project=runmesh,com.docker.compose.service=tempo,org.opencontainers.image.url=https://github.com/grafana/tempo,com.docker.compose.container-number=1,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/tempo.yaml,desktop.docker.io/ports/3200/tcp=:3200,org.opencontainers.image.created=2024-10-15T15:13:57Z,desktop.docker.io/ports.scheme=v2,com.docker.compose.image=sha256:ef4384fce6e8ad22b95b243d8fc165628cda655376fd50e7850536ad89d71d50,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,org.opencontainers.image.revision=24c5b553df91cead5e3afc63e79a5f4deb702b62,org.opencontainers.image.source=https://github.com/grafana/tempo.git,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/0/Target=/etc/tempo.yaml","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-tempo-1","Names":"runmesh-tempo-1","Networks":"runmesh_default","Ports":"0.0.0.0:3200-\u003e3200/tcp, [::]:3200-\u003e3200/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3200,"PublishedPort":3200,"Protocol":"tcp"},{"URL":"::","TargetPort":3200,"PublishedPort":3200,"Protocol":"tcp"}],"RunningFor":"38 minutes ago","Service":"tempo","Size":"0B","State":"running","Status":"Up 38 minutes"} +{"Command":"\"/docker-entrypoint.…\"","CreatedAt":"2026-07-20 20:23:53 -0400 EDT","ExitCode":0,"Health":"","ID":"dd580ee6241b","Image":"runmesh-web","Labels":"com.docker.compose.config-hash=e2afc81b870dc82be2a88d0dee013a23d9fa6ddf3304077545e218b9fc0b47da,com.docker.compose.container-number=1,com.docker.compose.depends_on=control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=web-1,com.docker.compose.service=web,com.docker.compose.image=sha256:24e927bf7658e2ee5913705fe475e0c5f7a800adc3c5bd30114ee79e29df2cce,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/3000/tcp=:3000,maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e","LocalVolumes":"0","Mounts":"","Name":"runmesh-web-1","Names":"runmesh-web-1","Networks":"runmesh_default","Ports":"0.0.0.0:3000-\u003e3000/tcp, [::]:3000-\u003e3000/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3000,"PublishedPort":3000,"Protocol":"tcp"},{"URL":"::","TargetPort":3000,"PublishedPort":3000,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"web","Size":"0B","State":"running","Status":"Up 6 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"9b79ed07cd5b","Image":"runmesh-worker-go","Labels":"com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-1,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.container-number=1","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-1","Names":"runmesh-worker-go-1","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"db504f63d96b","Image":"runmesh-worker-go","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-10,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0,com.docker.compose.container-number=10,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-10","Names":"runmesh-worker-go-10","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"3398e5717d30","Image":"runmesh-worker-go","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=11,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-11,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-11","Names":"runmesh-worker-go-11","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"07781fe8d133","Image":"runmesh-worker-go","Labels":"com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.project=runmesh,com.docker.compose.replace=worker-go-12,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=12","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-12","Names":"runmesh-worker-go-12","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"e8bd36cb659b","Image":"runmesh-worker-go","Labels":"com.docker.compose.container-number=13,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-13","Names":"runmesh-worker-go-13","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"3bff0767a376","Image":"runmesh-worker-go","Labels":"com.docker.compose.container-number=14,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-14","Names":"runmesh-worker-go-14","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"0ae44a400acb","Image":"runmesh-worker-go","Labels":"com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=15,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-15","Names":"runmesh-worker-go-15","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"9f91b8557331","Image":"runmesh-worker-go","Labels":"com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=16","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-16","Names":"runmesh-worker-go-16","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"4eef5daa6fcd","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=17,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-17","Names":"runmesh-worker-go-17","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"413c48208175","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=18,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-18","Names":"runmesh-worker-go-18","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"fbf1cec0dfea","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=19,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-19","Names":"runmesh-worker-go-19","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"dbd096168366","Image":"runmesh-worker-go","Labels":"com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-2,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=2,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-2","Names":"runmesh-worker-go-2","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"f15bc07dee54","Image":"runmesh-worker-go","Labels":"com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.container-number=20,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-20","Names":"runmesh-worker-go-20","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"4b7bc6e40986","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.container-number=3,com.docker.compose.project=runmesh,com.docker.compose.replace=worker-go-3,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-3","Names":"runmesh-worker-go-3","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"bf07a036990f","Image":"runmesh-worker-go","Labels":"com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-4,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=4,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-4","Names":"runmesh-worker-go-4","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"d5c31e4d9dc5","Image":"runmesh-worker-go","Labels":"com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-5,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=5,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-5","Names":"runmesh-worker-go-5","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"c1a79666a042","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=6,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-6,com.docker.compose.service=worker-go","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-6","Names":"runmesh-worker-go-6","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"5c4f2928c1f1","Image":"runmesh-worker-go","Labels":"com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=7,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-7,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-7","Names":"runmesh-worker-go-7","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"a3503fd96cff","Image":"runmesh-worker-go","Labels":"com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.container-number=8,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-8,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-8","Names":"runmesh-worker-go-8","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:26:32 -0400 EDT","ExitCode":0,"Health":"","ID":"d78147b1136f","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-9,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=9,com.docker.compose.image=sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-9","Names":"runmesh-worker-go-9","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/duplicate-delivery-go-test.json b/tests/benchmarks/results/2026-07-21T002100Z/duplicate-delivery-go-test.json new file mode 100644 index 0000000..7e909ad --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/duplicate-delivery-go-test.json @@ -0,0 +1,8 @@ +{"Time":"2026-07-21T00:30:05.411959421Z","Action":"start","Package":"github.com/samarth1412/RunMesh/tests/integration"} +{"Time":"2026-07-21T00:30:05.420565046Z","Action":"run","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce"} +{"Time":"2026-07-21T00:30:05.420673129Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Output":"=== RUN TestDuplicateDispatchIsLeasedOnce\n"} +{"Time":"2026-07-21T00:30:21.560297345Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Output":"--- PASS: TestDuplicateDispatchIsLeasedOnce (16.14s)\n"} +{"Time":"2026-07-21T00:30:21.560543554Z","Action":"pass","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Elapsed":16.14} +{"Time":"2026-07-21T00:30:21.560579554Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Output":"PASS\n"} +{"Time":"2026-07-21T00:30:21.561012595Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Output":"ok \tgithub.com/samarth1412/RunMesh/tests/integration\t16.148s\n"} +{"Time":"2026-07-21T00:30:21.561092554Z","Action":"pass","Package":"github.com/samarth1412/RunMesh/tests/integration","Elapsed":16.149} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/duplicate-submission.json b/tests/benchmarks/results/2026-07-21T002100Z/duplicate-submission.json new file mode 100644 index 0000000..57ceca0 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/duplicate-submission.json @@ -0,0 +1,10 @@ +{ + "first_run_id": "cbd76d17-636f-4432-b47c-4d8103e7614b", + "first_status": 201, + "original_input_preserved": true, + "passed": true, + "same_run": true, + "scenario": "duplicate_submission", + "second_run_id": "cbd76d17-636f-4432-b47c-4d8103e7614b", + "second_status": 200 +} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/end-to-end-completion-database.json b/tests/benchmarks/results/2026-07-21T002100Z/end-to-end-completion-database.json new file mode 100644 index 0000000..d03267f --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/end-to-end-completion-database.json @@ -0,0 +1 @@ +{"tasks" : 1000, "succeeded" : 1000, "other" : 0} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/end-to-end-completion.json b/tests/benchmarks/results/2026-07-21T002100Z/end-to-end-completion.json new file mode 100644 index 0000000..af135df --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/end-to-end-completion.json @@ -0,0 +1,6 @@ +{ + "scenario": "queued_end_to_end_completion", + "tasks": 1000, + "elapsed_seconds": 32.524, + "tasks_per_second": 30.747 +} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/hardware.txt b/tests/benchmarks/results/2026-07-21T002100Z/hardware.txt new file mode 100644 index 0000000..31d8876 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/hardware.txt @@ -0,0 +1,4 @@ +Darwin samarths-MacBook-Air.local 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:26:22 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T8132 arm64 +Apple M4 +17179869184 +{"Client":{"Version":"29.6.1","ApiVersion":"1.55","DefaultAPIVersion":"1.55","GitCommit":"8900f1d","GoVersion":"go1.26.4","Os":"darwin","Arch":"arm64","BuildTime":"Fri Jun 26 11:39:35 2026","Context":"desktop-linux"},"Server":{"Platform":{"Name":"Docker Desktop 4.82.0 (233772)"},"Version":"29.6.1","ApiVersion":"1.55","MinAPIVersion":"1.40","Os":"linux","Arch":"arm64","Components":[{"Name":"Engine","Version":"29.6.1","Details":{"ApiVersion":"1.55","Arch":"arm64","BuildTime":"Fri Jun 26 11:39:58 2026","Experimental":"false","GitCommit":"8ec5ab3","GoVersion":"go1.26.4","KernelVersion":"6.12.76-linuxkit","MinAPIVersion":"1.40","Module":"github.com/moby/moby/v2","ModuleVersion":"v2.0.0+unknown","Os":"linux"}},{"Name":"containerd","Version":"v2.2.5","Details":{"GitCommit":"e53c7c1516c3b2bff98eb76f1f4117477e6f4e66"}},{"Name":"runc","Version":"1.3.6","Details":{"GitCommit":"v1.3.6-0-g491b69ba"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"GitCommit":"8ec5ab3","GoVersion":"go1.26.4","KernelVersion":"6.12.76-linuxkit","BuildTime":"2026-06-26T11:39:58.000000000+00:00"}} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/image-digests.json b/tests/benchmarks/results/2026-07-21T002100Z/image-digests.json new file mode 100644 index 0000000..4b1be90 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/image-digests.json @@ -0,0 +1,2 @@ +[{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-9","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-11","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-14","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:fc8006f22072293e9fa6a3aa8a0581ac502bc8262767c32c01ee019eca56bb38","ContainerName":"runmesh-redpanda-console-1","Repository":"redpandadata/console","Tag":"v2.8.3","Platform":"linux/arm64","Size":73250938,"Created":"2025-02-27T18:10:27.99190098Z","LastTagTime":"2026-07-20T00:48:14.485197626Z"},{"ID":"sha256:24e927bf7658e2ee5913705fe475e0c5f7a800adc3c5bd30114ee79e29df2cce","ContainerName":"runmesh-web-1","Repository":"runmesh-web","Tag":"latest","Platform":"linux/arm64","Size":28920413,"Created":"2026-07-21T00:21:58.384612918Z","LastTagTime":"2026-07-21T00:23:25.613222666Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-19","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-2","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193","ContainerName":"runmesh-postgres-1","Repository":"postgres","Tag":"17-alpine","Platform":"linux/arm64/v8","Size":114981107,"Created":"2026-07-07T17:46:49.401690597Z","LastTagTime":"2026-07-20T00:47:47.860492044Z"},{"ID":"sha256:ef4384fce6e8ad22b95b243d8fc165628cda655376fd50e7850536ad89d71d50","ContainerName":"runmesh-tempo-1","Repository":"grafana/tempo","Tag":"2.6.1","Platform":"linux/arm64/v8","Size":49979919,"Created":"2024-10-15T15:14:02.938965353Z","LastTagTime":"2026-07-20T00:47:57.254291174Z"},{"ID":"sha256:36c35cc213c0f3b64d6e8a3e844dc90822f00725e0e518eaed5b08bcc2231e72","ContainerName":"runmesh-otel-collector-1","Repository":"otel/opentelemetry-collector-contrib","Tag":"0.119.0","Platform":"linux/arm64","Size":72650722,"Created":"2025-02-04T18:02:50.606991596Z","LastTagTime":"2026-07-20T00:47:50.053368504Z"},{"ID":"sha256:640c22768ed5dbc92eacc14502a1b06a1c708fa60431345c78dfc22917062e93","ContainerName":"runmesh-minio-1","Repository":"minio/minio","Tag":"RELEASE.2025-02-07T23-21-09Z","Platform":"linux/arm64","Size":58677008,"Created":"2025-02-08T21:08:53.658721358Z","LastTagTime":"2026-07-20T00:47:58.255328882Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-20","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-6","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-10","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:8af2de1abbdd7aa92b27c9bcc96f0f4140c9096b507c77921ffddf1c6ad6c48f","ContainerName":"runmesh-loki-1","Repository":"grafana/loki","Tag":"3.3.2","Platform":"linux/arm64","Size":30732944,"Created":"2024-12-18T17:12:53.000478115Z","LastTagTime":"2026-07-20T00:48:06.06543197Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-3","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-18","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-8","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d","ContainerName":"runmesh-redpanda-1","Repository":"redpandadata/redpanda","Tag":"v24.3.15","Platform":"linux/arm64/v8","Size":183895553,"Created":"2025-06-18T02:52:15.126275953Z","LastTagTime":"2026-07-20T00:48:16.687951877Z"},{"ID":"sha256:9503ee66dfca19d00e8d09061fcdbac0390ab0b0a06739788d0e036dc9ef3b2e","ContainerName":"runmesh-scheduler-2","Repository":"runmesh-scheduler","Tag":"latest","Platform":"linux/arm64","Size":8457935,"Created":"2026-07-20T23:08:19.62513022Z","LastTagTime":"2026-07-21T00:23:51.893256429Z"},{"ID":"sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99","ContainerName":"runmesh-redis-1","Repository":"redis","Tag":"7.4-alpine","Platform":"linux/arm64/v8","Size":16790804,"Created":"2026-05-07T17:39:54.062865523Z","LastTagTime":"2026-07-20T00:45:12.219804333Z"},{"ID":"sha256:acded13a336f2b6f35fd9ce14a32834cf1e6b2a7887fe5dfc977b3e563eba39e","ContainerName":"runmesh-migrate-1","Repository":"migrate/migrate","Tag":"v4.18.2","Platform":"linux/arm64","Size":18640157,"Created":"2025-01-27T05:15:01.377819434Z","LastTagTime":"2026-07-20T00:45:00.445620092Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-17","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:86ac766dc0e9bc786d4ded8511486c7887d0fad0e8e9fc952c4f68351fe78dfa","ContainerName":"runmesh-control-plane-1","Repository":"runmesh-control-plane","Tag":"latest","Platform":"linux/arm64","Size":10173680,"Created":"2026-07-20T23:08:20.215292553Z","LastTagTime":"2026-07-21T00:26:31.680462377Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-15","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-16","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:be6a86215213145bfb4fb3e2b3ab982a806d00262655abdcf3ffa6a38d241c7c","ContainerName":"runmesh-keycloak-1","Repository":"quay.io/keycloak/keycloak","Tag":"26.1","Platform":"linux/arm64","Size":241302481,"Created":"2025-04-11T08:01:18.363925612Z","LastTagTime":"2026-07-20T00:48:11.796539791Z"},{"ID":"sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb","ContainerName":"runmesh-grafana-1","Repository":"grafana/grafana","Tag":"11.4.0","Platform":"linux/arm64","Size":125326597,"Created":"2024-12-04T21:33:24.409833365Z","LastTagTime":"2026-07-20T00:48:13.975356709Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-1","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-4","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d","ContainerName":"runmesh-redpanda-init-1","Repository":"redpandadata/redpanda","Tag":"v24.3.15","Platform":"linux/arm64/v8","Size":183895553,"Created":"2025-06-18T02:52:15.126275953Z","LastTagTime":"2026-07-20T00:48:16.687951877Z"},{"ID":"sha256:cf542692f9276aa5577790889355ea049f949989a467aabe988e1c80771db9d2","ContainerName":"runmesh-worker-python-1","Repository":"runmesh-worker-python","Tag":"latest","Platform":"linux/arm64","Size":60024247,"Created":"2026-07-20T23:22:00.604549877Z","LastTagTime":"2026-07-21T00:23:25.20326868Z"},{"ID":"sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218","ContainerName":"runmesh-prometheus-1","Repository":"prom/prometheus","Tag":"v3.1.0","Platform":"linux/arm64/v8","Size":110853317,"Created":"2025-01-02T14:15:56.472078076Z","LastTagTime":"2026-07-20T00:48:10.946754847Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-13","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:9503ee66dfca19d00e8d09061fcdbac0390ab0b0a06739788d0e036dc9ef3b2e","ContainerName":"runmesh-scheduler-1","Repository":"runmesh-scheduler","Tag":"latest","Platform":"linux/arm64","Size":8457935,"Created":"2026-07-20T23:08:19.62513022Z","LastTagTime":"2026-07-21T00:23:51.893256429Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-5","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-12","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"},{"ID":"sha256:2b554067a84a0fb93d54a8af6de929cc1707e2090b9e8495786ecfca2b65b864","ContainerName":"runmesh-worker-go-7","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:26:31.681039252Z"}] + diff --git a/tests/benchmarks/results/2026-07-21T002100Z/in-flight-before-termination.json b/tests/benchmarks/results/2026-07-21T002100Z/in-flight-before-termination.json new file mode 100644 index 0000000..f4d981a --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/in-flight-before-termination.json @@ -0,0 +1 @@ +{"running_count" : 6, "task_ids" : ["0bc56a56-b0b0-4f2f-8f40-1479c6aa07c3", "2822e4a3-4e53-40be-8022-d3dd3e9e14ea", "51717040-5950-4b5c-9f52-d561947d790f", "aaf4814f-e0a8-477a-9be7-ffa76adc2369", "b8cd0586-5146-436a-b4eb-bb6ce43e2900", "b9a321d8-9511-42f3-8da1-baa0663a8804"]} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/kafka-topology-after.json b/tests/benchmarks/results/2026-07-21T002100Z/kafka-topology-after.json new file mode 100644 index 0000000..978cf60 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/kafka-topology-after.json @@ -0,0 +1 @@ +[{"summary":{"name":"runmesh.tasks","internal":false,"partitions":6,"replicas":1,"error":""},"configs":[{"key":"cleanup.policy","value":"delete","source":"DEFAULT_CONFIG"},{"key":"compression.type","value":"producer","source":"DEFAULT_CONFIG"},{"key":"delete.retention.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"flush.bytes","value":"262144","source":"DEFAULT_CONFIG"},{"key":"flush.ms","value":"100","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"max.message.bytes","value":"1048576","source":"DEFAULT_CONFIG"},{"key":"message.timestamp.type","value":"CreateTime","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.mode","value":"disabled","source":"DEFAULT_CONFIG"},{"key":"redpanda.leaders.preference","value":"none","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.read","value":"false","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.write","value":"false","source":"DEFAULT_CONFIG"},{"key":"retention.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.ms","value":"86400000","source":"DEFAULT_CONFIG"},{"key":"retention.ms","value":"604800000","source":"DEFAULT_CONFIG"},{"key":"segment.bytes","value":"134217728","source":"DEFAULT_CONFIG"},{"key":"segment.ms","value":"1209600000","source":"DEFAULT_CONFIG"},{"key":"write.caching","value":"true","source":"DEFAULT_CONFIG"}],"partitions":[{"partition":0,"leader":0,"epoch":4,"replicas":[0],"log_start_offset":0,"high_watermark":92603},{"partition":1,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":15689},{"partition":2,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":22937},{"partition":3,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":17902},{"partition":4,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":18146},{"partition":5,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":26947}]}] diff --git a/tests/benchmarks/results/2026-07-21T002100Z/kafka-topology-before.json b/tests/benchmarks/results/2026-07-21T002100Z/kafka-topology-before.json new file mode 100644 index 0000000..f2b705e --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/kafka-topology-before.json @@ -0,0 +1 @@ +[{"summary":{"name":"runmesh.tasks","internal":false,"partitions":6,"replicas":1,"error":""},"configs":[{"key":"cleanup.policy","value":"delete","source":"DEFAULT_CONFIG"},{"key":"compression.type","value":"producer","source":"DEFAULT_CONFIG"},{"key":"delete.retention.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"flush.bytes","value":"262144","source":"DEFAULT_CONFIG"},{"key":"flush.ms","value":"100","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"max.message.bytes","value":"1048576","source":"DEFAULT_CONFIG"},{"key":"message.timestamp.type","value":"CreateTime","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.mode","value":"disabled","source":"DEFAULT_CONFIG"},{"key":"redpanda.leaders.preference","value":"none","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.read","value":"false","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.write","value":"false","source":"DEFAULT_CONFIG"},{"key":"retention.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.ms","value":"86400000","source":"DEFAULT_CONFIG"},{"key":"retention.ms","value":"604800000","source":"DEFAULT_CONFIG"},{"key":"segment.bytes","value":"134217728","source":"DEFAULT_CONFIG"},{"key":"segment.ms","value":"1209600000","source":"DEFAULT_CONFIG"},{"key":"write.caching","value":"true","source":"DEFAULT_CONFIG"}],"partitions":[{"partition":0,"leader":0,"epoch":4,"replicas":[0],"log_start_offset":0,"high_watermark":84829},{"partition":1,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":7389},{"partition":2,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":16744},{"partition":3,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":12897},{"partition":4,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":11387},{"partition":5,"leader":0,"epoch":2,"replicas":[0],"log_start_offset":0,"high_watermark":20835}]}] diff --git a/tests/benchmarks/results/2026-07-21T002100Z/lease-recovery-distribution.json b/tests/benchmarks/results/2026-07-21T002100Z/lease-recovery-distribution.json new file mode 100644 index 0000000..d8374ed --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/lease-recovery-distribution.json @@ -0,0 +1 @@ +{"samples" : 6, "p50_ms" : 125144.80649999999, "p95_ms" : 167824.18425, "p99_ms" : 168519.15524999998} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/scheduler-dispatch.json b/tests/benchmarks/results/2026-07-21T002100Z/scheduler-dispatch.json new file mode 100644 index 0000000..4932cea --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/scheduler-dispatch.json @@ -0,0 +1,6 @@ +{ + "scenario": "scheduler_dispatch", + "tasks": 10000, + "elapsed_seconds": 24.243, + "dispatches_per_second": 412.482 +} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/verification.json b/tests/benchmarks/results/2026-07-21T002100Z/verification.json new file mode 100644 index 0000000..07b0ca4 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/verification.json @@ -0,0 +1,21 @@ +{ + "checks": { + "active_workflows": true, + "api_requests": true, + "api_zero_failures": true, + "duplicate_delivery": true, + "duplicate_submission": true, + "end_to_end_zero_task_loss": true, + "lease_recovered": true, + "multi_partition_delivery": true, + "multiple_tasks_in_flight": true, + "six_kafka_partitions": true, + "submission_requests": true, + "submission_zero_failures": true, + "ten_thousand_tasks": true, + "worker_pool_terminated": true, + "zero_task_loss": true + }, + "observed_partitions_with_new_records": 6, + "passed": true +} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/worker-crash-result.json b/tests/benchmarks/results/2026-07-21T002100Z/worker-crash-result.json new file mode 100644 index 0000000..21fa5cf --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/worker-crash-result.json @@ -0,0 +1 @@ +{"scenario" : "worker_termination_and_lease_recovery", "tasks" : 10000, "succeeded" : 10000, "other" : 0, "attempts" : 10006, "recovered_tasks" : 6, "duplicate_attempts" : 6, "recovery_seconds" : 202.867} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/worker-crash-setup.json b/tests/benchmarks/results/2026-07-21T002100Z/worker-crash-setup.json new file mode 100644 index 0000000..c7f6441 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/worker-crash-setup.json @@ -0,0 +1,111 @@ +{ + "idempotency_prefix": "validation-crash-20260721T002324Z", + "preparation_seconds": 0.665, + "run_count": 100, + "run_ids": [ + "928dcfb7-4c94-4468-aa41-43ea9c8fc545", + "a7623c30-9ea2-47da-a9fc-cf3af63269b8", + "599f1d58-cdcc-4fb4-bc09-96ef9c14e180", + "cc1dff30-e50e-4eef-9542-75697be61950", + "6e4b7906-d3e8-4529-bdec-95de2c622e75", + "d92f9b2d-c38c-409a-9b30-03353d5be6ab", + "3afb182a-e6a7-4b52-af4f-22ad9493023c", + "05bfb791-f28e-4b4f-912d-6620f5bc0a75", + "7fd5acd1-5c74-4dcf-a144-cb78354e86d3", + "3b4f3e53-2999-4827-8f24-c05f3fdf70bf", + "412554cb-791b-4167-a962-d3ef1ed65171", + "f80a9771-f1f7-413a-b650-10d6b7f7c94c", + "4f4b810b-0490-4921-af3d-deae31346895", + "9e9c6b5b-665d-4943-833e-fc73e8a23190", + "87aff77d-dd2f-4114-9dfb-fb63c42d5459", + "75080e40-87a8-42a9-bfba-e5f6ae7d6386", + "701c1155-0892-4f31-8517-4f2795bef047", + "643a1df3-d68c-47e3-9dae-c6b866af6d30", + "03ce6504-75eb-4688-b24d-8b61c937f2f3", + "65287565-beec-4adb-a9f4-4f470951c9ad", + "10481af9-64ce-4919-9170-7468e28948fb", + "0b5ca6aa-7b6f-4762-baaf-e7bc0574c914", + "36ef13d6-6b47-4eae-9d99-605106cc9aab", + "daa17ad5-69a8-43a5-ada3-91ad62a2dbfd", + "36298566-2ed4-4690-a1f7-68907de6caed", + "755783b1-1f34-47d5-91e2-4bbc4ed1036d", + "7309b43f-b95e-44af-94c6-62dc4a644744", + "730c29bb-ef01-4c09-a6c6-c05931f5b59a", + "c3858cae-91b1-4635-8c40-457fb70b684d", + "61e40ca9-54de-4753-826d-6c6496776135", + "1db72468-3a9f-4c45-a6e4-ea3cc4ee367d", + "99f6d9cd-37cc-4c2f-af2c-70bb40de267e", + "f9a9899b-0d20-42cf-8600-c9869795d44e", + "578f92c7-1ade-4d0b-89ff-d210c4cca5fb", + "8ce2957d-54a7-44df-8a3b-c08f98b4d9fd", + "72c9def6-3bb8-46ab-98fd-b87d2ee8b95e", + "c81672c9-b9d9-4552-8589-0ea8867d0c2e", + "ebec465f-99bd-4378-8352-9313376a0db0", + "042c6f58-80e1-4055-8c9e-a5a0ba58e01a", + "a43af678-7bba-447e-8f2c-3cd4c418ffb8", + "b8f51c09-40cf-4f4c-b723-2bd99131b7d9", + "adfb6445-b1b9-45c9-bc16-74e267c0e9ca", + "25a59e0c-cd0a-4e55-b218-3da4e1605678", + "fbc9cf0a-97cb-4bb9-93f0-d8100c7190a4", + "252518ec-1f29-4aa5-a9f4-08dee94b191d", + "61fdfe26-2556-4a4c-a499-3977fc78604c", + "9a976cf1-f8e3-4c01-a2a4-a91a16559881", + "61ce12cd-86b5-4836-83c5-38726b809bc4", + "71b3e23b-d601-497a-8e0e-ccae26ffe402", + "aae0f6d1-c16e-4685-a189-56ea95670844", + "9891187c-40c6-4552-b941-9973eb251cb4", + "0f0fd8f8-1bfe-4864-a33c-16c6433a4e0b", + "e5e2c551-63e0-4dd7-a6b4-1d90febe5536", + "1e48ae9e-723b-44a2-8f81-a5e57496a967", + "47abcd5b-372c-4212-8041-8516376723a0", + "9607a10a-c237-4547-be79-bb118f42ee81", + "a9473824-3834-4f56-aa24-1e57447f2139", + "f37e0750-677f-4afe-b12c-cc4a83188f16", + "6b88a173-7ed5-49d4-96ae-889535de60e7", + "46aebc13-d76f-4566-8e54-27f421db693d", + "a8d43f9f-272d-4dc8-866c-47d4d690c951", + "6ce09e2a-4403-4b72-874f-79f9c08c10ac", + "afb6d27c-ff6b-413d-ad75-98f27b2d9bd9", + "a1d9d1b0-5877-4c1a-9ad7-4cf7a69cca9e", + "8467a538-0488-4f49-8970-bb94f202043e", + "66a53963-853c-45d3-9b51-ab29cb18993a", + "2ef068d3-4404-4fa3-8517-ed9c19fff0e6", + "dd33f84b-cf8b-4be3-a413-2d49916c33c5", + "9731103a-ef6a-4b25-8c67-a66f2545509b", + "b5c0253d-6a8a-4e97-93ee-170b114c3226", + "89b1e573-4d14-421f-b8fc-b742720a1afc", + "fcbc3ae7-263c-422f-ab81-4d5834343779", + "8d26d343-2bf9-4614-a498-f022ac9aac67", + "82028503-5a49-428a-b9a0-d5853865a6ab", + "072a8e75-3747-4723-9557-3fa007427605", + "d1ef01de-d3cc-4174-93c0-3700c5930c6c", + "b18dd0a0-a008-406e-9984-5413522471c3", + "472bc683-663b-4f23-b3d8-3984df41ddb6", + "049fd81b-9ed2-4853-a8e9-9e80d61c98bc", + "6453d425-6398-4c30-a14c-cccb85d923c5", + "be39a76d-f169-4c0f-81db-659120264c6f", + "a3ead5c9-74a4-4fcd-83c2-41506eebeba7", + "01aa6232-2e39-4964-b5c1-f9ea9fc3ef80", + "5e9a3c47-f94a-4a73-b587-4c6617824785", + "810cf418-1a10-492d-b772-cf4ec461c6e8", + "1d4ffe22-1e92-4734-a7d5-a1c7c2f17805", + "465c80cf-2e5e-42e4-b6d9-2002ee7a2f41", + "7ba4462e-a18c-4345-bfc9-e415158c7395", + "ad50f4f1-4799-4e18-875d-cf8160eb7c72", + "b3ab4705-b0d9-4a3c-ad30-99fa4838baeb", + "bb1c13b5-9b30-45fa-acff-badc0ade7110", + "f40c9758-105e-4853-88cd-ff43d9491aab", + "061f9acb-ab94-4987-851f-05003f5b02c2", + "878128a9-bb60-401d-9f3f-efa46a38fff4", + "d944ea86-f0c5-40a3-8c27-341042a3de7e", + "50082d41-6586-4463-9a20-86640753829c", + "e4dff4d6-ad53-4518-8541-9b904995891e", + "bec039a5-510e-4238-a4d3-311fc08aaed1", + "0ae91cb2-ad20-42e8-a4d5-4fc39a7f43fe", + "43c61724-8be4-48f5-bb6d-6ce5b402e4ba" + ], + "scenario": "worker_termination_and_lease_recovery", + "task_count": 10000, + "tasks_per_run": 100, + "workflow_id": "19e0a872-4a0c-40a0-a9c5-02f389e486ae" +} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/worker-termination.json b/tests/benchmarks/results/2026-07-21T002100Z/worker-termination.json new file mode 100644 index 0000000..ef1e7fd --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/worker-termination.json @@ -0,0 +1,6 @@ +{ + "terminated_workers": 20, + "idempotency_prefix": "validation-crash-20260721T002324Z", + "in_flight_tasks": 6, + "terminated_at": "2026-07-21T00:26:40.264112+00:00" +} diff --git a/tests/benchmarks/results/2026-07-21T002100Z/workflow-submissions.json b/tests/benchmarks/results/2026-07-21T002100Z/workflow-submissions.json new file mode 100644 index 0000000..e5efac8 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T002100Z/workflow-submissions.json @@ -0,0 +1,142 @@ +{ + "metrics": { + "http_req_failed": { + "passes": 0, + "fails": 1501, + "thresholds": { + "rate==0": false + }, + "value": 0 + }, + "http_req_duration{expected_response:true}": { + "med": 1.56, + "p(90)": 2.489417, + "p(95)": 3.235792, + "p(99)": 13.552917, + "max": 83.349625, + "avg": 2.18551663157895, + "min": 1.005667 + }, + "iterations": { + "count": 1501, + "rate": 50.02632332640791 + }, + "http_req_connecting": { + "p(99)": 0.708417, + "max": 28.160459, + "avg": 0.0671759673550966, + "min": 0, + "med": 0, + "p(90)": 0, + "p(95)": 0.557209 + }, + "checks": { + "passes": 1501, + "fails": 0, + "thresholds": { + "rate==1": false + }, + "value": 1 + }, + "http_req_receiving": { + "min": 0.014875, + "med": 0.033833, + "p(90)": 0.053417, + "p(95)": 0.068583, + "p(99)": 0.112, + "max": 3.321167, + "avg": 0.040390157228514335 + }, + "vus": { + "max": 0, + "value": 0, + "min": 0 + }, + "vus_max": { + "value": 100, + "min": 100, + "max": 100 + }, + "data_sent": { + "count": 2330333, + "rate": 77666.8834884731 + }, + "http_reqs": { + "count": 1501, + "rate": 50.02632332640791 + }, + "http_req_duration": { + "med": 1.56, + "p(90)": 2.489417, + "p(95)": 3.235792, + "p(99)": 13.552917, + "max": 83.349625, + "avg": 2.18551663157895, + "min": 1.005667 + }, + "http_req_blocked": { + "p(90)": 0.011083, + "p(95)": 0.593, + "p(99)": 0.756084, + "max": 28.227125, + "avg": 0.07432470886075929, + "min": 0.0015, + "med": 0.003875 + }, + "iteration_duration": { + "avg": 2.408748073284478, + "min": 1.10475, + "med": 1.7205, + "p(90)": 2.777666, + "p(95)": 3.506042, + "p(99)": 15.65925, + "max": 83.643166 + }, + "data_received": { + "count": 812460, + "rate": 27078.205629429296 + }, + "http_req_tls_handshaking": { + "p(95)": 0, + "p(99)": 0, + "max": 0, + "avg": 0, + "min": 0, + "med": 0, + "p(90)": 0 + }, + "http_req_sending": { + "med": 0.019209, + "p(90)": 0.033334, + "p(95)": 0.043125, + "p(99)": 0.082041, + "max": 0.430667, + "avg": 0.023136125249833422, + "min": 0.008 + }, + "http_req_waiting": { + "max": 83.187833, + "avg": 2.1219903491005976, + "min": 0.974917, + "med": 1.5, + "p(90)": 2.397375, + "p(95)": 3.1365, + "p(99)": 13.396834 + } + }, + "root_group": { + "name": "", + "path": "", + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "created": { + "fails": 0, + "name": "created", + "path": "::created", + "id": "e26a6144a84abb127f65c1e5808b420c", + "passes": 1501 + } + } + } +} \ No newline at end of file From c4b248638f2ae36c4a7bbaf48df37ee59ac1bf74 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 20:35:39 -0400 Subject: [PATCH 7/9] fix: make Kafka topic initialization fresh-safe --- compose.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compose.yaml b/compose.yaml index 0d8f551..780bd56 100644 --- a/compose.yaml +++ b/compose.yaml @@ -35,8 +35,8 @@ services: environment: {RUNMESH_KAFKA_PARTITIONS: "6"} command: - | - if summary="$$(rpk topic describe runmesh.tasks --print-summary -X brokers=redpanda:9092 2>/dev/null)"; then - current="$$(printf '%s\n' "$$summary" | awk '$$1 == "PARTITIONS" {print $$2}')" + current="$$(rpk topic list -X brokers=redpanda:9092 | awk '$$1 == "runmesh.tasks" {print $$2}')" + if [ -n "$$current" ]; then if [ "$$current" -lt "$$RUNMESH_KAFKA_PARTITIONS" ]; then rpk topic add-partitions runmesh.tasks --num "$$((RUNMESH_KAFKA_PARTITIONS-current))" -X brokers=redpanda:9092 fi From 618178a10296598cbd2889033a5b0a92ed68cbf4 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 21:56:57 -0400 Subject: [PATCH 8/9] docs: publish canonical final benchmark evidence Commit the 2026-07-21T003600Z benchmark run, the first complete run recorded against the fresh-stack Kafka topic initialization fix, and update README/CHANGELOG/benchmarks docs to report its measured values as the canonical evidence for HEAD. --- CHANGELOG.md | 2 + README.md | 20 +-- docs/benchmarks.md | 33 ++-- .../results/2026-07-21T003600Z/README.md | 62 ++++++++ .../active-workflows-database.json | 1 + .../2026-07-21T003600Z/active-workflows.json | 22 +++ .../results/2026-07-21T003600Z/api-read.json | 142 ++++++++++++++++++ .../results/2026-07-21T003600Z/commands.sh | 137 +++++++++++++++++ .../results/2026-07-21T003600Z/commit-sha.txt | 1 + .../2026-07-21T003600Z/compose-topology.json | 35 +++++ .../duplicate-delivery-go-test.json | 8 + .../duplicate-submission.json | 10 ++ .../end-to-end-completion-database.json | 1 + .../end-to-end-completion.json | 6 + .../results/2026-07-21T003600Z/hardware.txt | 4 + .../2026-07-21T003600Z/image-digests.json | 2 + .../in-flight-before-termination.json | 1 + .../kafka-topology-after.json | 1 + .../kafka-topology-before.json | 1 + .../lease-recovery-distribution.json | 1 + .../scheduler-dispatch.json | 6 + .../2026-07-21T003600Z/verification.json | 21 +++ .../worker-crash-result.json | 1 + .../worker-crash-setup.json | 111 ++++++++++++++ .../worker-termination.json | 6 + .../workflow-submissions.json | 142 ++++++++++++++++++ 26 files changed, 755 insertions(+), 22 deletions(-) create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/README.md create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/active-workflows-database.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/active-workflows.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/api-read.json create mode 100755 tests/benchmarks/results/2026-07-21T003600Z/commands.sh create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/commit-sha.txt create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/compose-topology.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/duplicate-delivery-go-test.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/duplicate-submission.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/end-to-end-completion-database.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/end-to-end-completion.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/hardware.txt create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/image-digests.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/in-flight-before-termination.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/kafka-topology-after.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/kafka-topology-before.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/lease-recovery-distribution.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/scheduler-dispatch.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/verification.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/worker-crash-result.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/worker-crash-setup.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/worker-termination.json create mode 100644 tests/benchmarks/results/2026-07-21T003600Z/workflow-submissions.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b24f19..2f08b8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ All notable changes are documented here. This project follows Semantic Versionin - Transactional outbox publication now claims work in short PostgreSQL transactions and publishes outside row locks. - Workflow-run Kafka keys preserve ordering across multiple partitions and concurrent publishers. - Worker operations verify tenant ownership, worker identity, active state, and unexpired leases. +- Fixed Kafka/Redpanda topic initialization on a completely fresh stack, where `rpk topic describe` could report success before the topic actually existed. +- Fixed heterogeneous Go/Python worker capability routing on a shared consumer group. ### Known limitations diff --git a/README.md b/README.md index 9a55fca..c54e522 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ RunMesh stores versioned DAGs, schedules dependency-aware tasks, and delivers wo It ships as a complete local platform: Go control plane and scheduler, Go and Python workers, a React operations dashboard, OIDC authentication, tenant-scoped API keys, S3-compatible artifacts, live updates, metrics, logs, traces, Helm charts, and validated AWS Terraform. -Latest local evidence on an Apple M4 / 16 GiB machine: **412.482 scheduler -dispatches/second across 10,000 tasks**, **100.023 authenticated reads/second -at 3.228 ms p95**, and **10,000/10,000 tasks completed with zero permanent +Latest local evidence on an Apple M4 / 16 GiB machine: **407.403 scheduler +dispatches/second across 10,000 tasks**, **100.0 authenticated reads/second +at 3.307 ms p95**, and **10,000/10,000 tasks completed with zero permanent loss after all 20 workers were terminated**. These are reproducible local Docker results, not production-capacity claims. @@ -200,14 +200,14 @@ The repository includes unit, race, integration, browser, security, chaos, deplo | Scenario | Recorded result | | --- | ---: | -| Authenticated API reads | 100.023 req/s; 1.416/3.228/5.745 ms p50/p95/p99; 0 failures | -| Workflow submissions | 50.026 req/s; 1.560/3.236/13.553 ms p50/p95/p99; 0 failures | -| Simultaneously active workflows | 1,000 created; 0 failures; 30.747 tasks/s drain | -| Scheduler dispatch | 412.482 tasks/s across 10,000 tasks | -| Worker termination and recovery | 20 workers terminated; 10,000/10,000 succeeded; 6 recovered attempts; 0 lost | +| Authenticated API reads | 100.0 req/s; 1.701/3.307/4.657 ms p50/p95/p99; 0 failures | +| Workflow submissions | 50.028 req/s; 1.587/7.012/220.024 ms p50/p95/p99; 0 failures | +| Simultaneously active workflows | 1,000 created; 0 failures; 57.608 tasks/s drain | +| Scheduler dispatch | 407.403 tasks/s across 10,000 tasks | +| Worker termination and recovery | 20 workers terminated; 10,000/10,000 succeeded; 7 recovered attempts; 0 lost | | Duplicate submission and delivery | Passed | -These numbers are transparent local evidence, not a universal capacity claim. Hardware details, commands, image digests, source SHA, and raw machine-readable output are committed in the [2026-07-21T002100Z benchmark results](tests/benchmarks/results/2026-07-21T002100Z/README.md). The complete [local validation ledger](docs/validation.md) separates executed checks from remote or cloud work that remains unverified. +These numbers are transparent local evidence, not a universal capacity claim. Hardware details, commands, image digests, source SHA, and raw machine-readable output are committed in the [2026-07-21T003600Z benchmark results](tests/benchmarks/results/2026-07-21T003600Z/README.md), the canonical run against the current `HEAD`. The complete [local validation ledger](docs/validation.md) separates executed checks from remote or cloud work that remains unverified. ## Development @@ -247,7 +247,7 @@ Coverage gates intentionally target risk rather than 100%: the workflow state ma - Workers in the same Kafka consumer group must expose the same handler set; heterogeneous capability pools require separate group IDs. - The outbox removes broker I/O from database transactions, but PostgreSQL claim and acknowledgement writes still bound dispatch throughput. - The recorded 10,000-task crash run recovered all interrupted leases, but the - recovered-attempt delay was 125.145 seconds p50 under backlog; prioritizing + recovered-attempt delay was 132.797 seconds p50 under backlog; prioritizing expired leases is future work. - At-least-once execution cannot make arbitrary handler side effects exactly-once. Handlers must use the stable task idempotency key. - Redis Pub/Sub notifications are best-effort; the dashboard re-reads durable state and falls back to polling. diff --git a/docs/benchmarks.md b/docs/benchmarks.md index ea1fe42..0603cbd 100644 --- a/docs/benchmarks.md +++ b/docs/benchmarks.md @@ -5,26 +5,32 @@ reported with their source commit, hardware, image digests, commands, and raw machine-readable output; they are evidence from that environment rather than a universal capacity claim. -## Latest recorded run +## Latest recorded run (canonical) -The [2026-07-21T002100Z local run](../tests/benchmarks/results/2026-07-21T002100Z/README.md) -used an Apple M4 MacBook Air with 16 GiB RAM and Docker Desktop 4.82.0. +The [2026-07-21T003600Z local run](../tests/benchmarks/results/2026-07-21T003600Z/README.md) +used an Apple M4 MacBook Air with 16 GiB RAM and Docker Desktop 4.82.0, against +source commit `c4b248638f2ae36c4a7bbaf48df37ee59ac1bf74`. It is the canonical +run: it postdates a fresh-stack Kafka/Redpanda topic-initialization fix in +`compose.yaml` that earlier runs (including 2026-07-21T002100Z) predate. | Scenario | Result | | --- | ---: | -| Authenticated API reads | 100.023 requests/s; 1.416/3.228/5.745 ms p50/p95/p99; 0 failures | -| Workflow submissions | 50.026 requests/s; 1.560/3.236/13.553 ms p50/p95/p99; 0 failures | -| Simultaneously active workflows | 1,000 created in 20.200 seconds; 0 failures | -| Queued end-to-end completion | 1,000 tasks at 30.747 tasks/s | -| Scheduler dispatch | 412.482 tasks/s across 10,000 tasks | -| Worker termination and lease recovery | 20 workers terminated; 10,000/10,000 succeeded; 6 recovered; 0 lost | +| Authenticated API reads | 100.0 requests/s; 1.701/3.307/4.657 ms p50/p95/p99; 0 failures | +| Workflow submissions | 50.028 requests/s; 1.587/7.012/220.024 ms p50/p95/p99; 0 failures | +| Simultaneously active workflows | 1,000 created in 18.224 seconds; 0 failures | +| Queued end-to-end completion | 1,000 tasks at 57.608 tasks/s | +| Scheduler dispatch | 407.403 tasks/s across 10,000 tasks | +| Worker termination and lease recovery | 20 workers terminated; 10,000/10,000 succeeded; 7 recovered; 0 lost | | Duplicate submission and delivery | Passed | The run used two scheduler replicas, a six-partition local Redpanda topic, and 12 workers for the queued completion phase. The termination scenario killed -all 20 Go-worker containers while six tasks were actively running. Its complete -drain took 202.867 seconds. The six lease-expiration-to-next-attempt samples -were 125.145/167.824/168.519 seconds p50/p95/p99; the backlog makes this a +all 20 Go-worker containers while seven tasks were actively running (see the +[run's README](../tests/benchmarks/results/2026-07-21T003600Z/README.md) for a +note on a benign 6-vs-7 recording-timing discrepancy between two evidence +files). Its complete drain took 185.971 seconds. The seven +lease-expiration-to-next-attempt samples were +132.797/140.148/142.414 seconds p50/p95/p99; the backlog makes this a correctness result and exposes a recovery-latency optimization opportunity. All 15 blocking verification checks passed. New records appeared on every @@ -32,6 +38,9 @@ Kafka partition, duplicate submission returned the same run while preserving the original input, and the duplicate-delivery integration test permitted only one successful lease. +Superseded raw runs remain in [`tests/benchmarks/results`](../tests/benchmarks/results/) +for history, each labelled with why it was superseded. + ## Reproduce locally With the Compose stack running, execute: diff --git a/tests/benchmarks/results/2026-07-21T003600Z/README.md b/tests/benchmarks/results/2026-07-21T003600Z/README.md new file mode 100644 index 0000000..f6e9253 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/README.md @@ -0,0 +1,62 @@ +# Local benchmark evidence — 2026-07-21T003600Z (canonical) + +Source commit: `c4b248638f2ae36c4a7bbaf48df37ee59ac1bf74` + +This is the canonical benchmark run for the current `HEAD`. It supersedes the +[2026-07-20T235240Z](../2026-07-20T235240Z/README.md) and +[2026-07-21T000619Z](../2026-07-21T000619Z/README.md) runs, which predate a +fresh-stack Kafka/Redpanda topic-initialization fix in `compose.yaml` +(`rpk topic describe` could report success before the topic actually existed +on a brand-new stack). It also supersedes +[2026-07-21T002100Z](../2026-07-21T002100Z/README.md), whose source commit +(`0c48987`) came before that fix. The fix itself only changes Compose +initialization ordering on a first-ever `docker compose up`; it does not +change scheduler, worker, or outbox runtime behavior, but this run was +recorded fresh against corrected `HEAD` rather than reused. + +This run was produced on an Apple M4 MacBook Air with 16 GiB RAM using +Docker Desktop 4.82.0. Performance values are report-only local evidence; +correctness, tenant isolation, and zero-loss checks are blocking. + +| Scenario | Recorded result | +| --- | --- | +| Authenticated reads at 100 requests/s | 3,000 requests, 0 failures; 1.701/3.307/4.657 ms p50/p95/p99 | +| Workflow submissions at 50 requests/s | 1,501 requests, 0 failures; 1.587/7.012/220.024 ms p50/p95/p99 | +| Simultaneously active workflows | 1,000 created in 18.224 seconds, 0 failures; 5.340/7.700/8.798 ms creation p50/p95/p99 | +| Queued end-to-end completion | 1,000 tasks in 17.359 seconds; 57.608 tasks/s | +| Scheduler dispatch | 10,000 tasks in 24.546 seconds; 407.403 dispatches/s | +| Worker termination and recovery | 20 workers terminated; 10,000/10,000 succeeded; 7 recovered tasks/duplicate attempts; 0 permanent loss; 185.971-second full drain | +| Recovered-attempt delay | 7 samples; 132.797/140.148/142.414 seconds p50/p95/p99 from expired attempt end to next attempt start | +| Duplicate submission | Same run returned with `201` then `200`; original input preserved | +| Duplicate Kafka delivery | `TestDuplicateDispatchIsLeasedOnce` passed | + +The topology used two scheduler replicas, six Redpanda partitions, 12 workers +for the 1,000-task completion phase, and 20 Go workers for termination/recovery. +The verifier observed new records on all six partitions and passed all 15 +blocking checks. Recovery latency includes queueing behind the 10,000-task +backlog and is reported as a limitation, not a latency target. + +`worker-termination.json` records `in_flight_tasks: 6`, a shell-variable +snapshot captured immediately before the four-tasks-running threshold broke +the readiness loop. The subsequent database query in +`in-flight-before-termination.json` (`running_count: 7`) is more precise and +matches the 7 recovered/duplicate attempts in `worker-crash-result.json`. +Both values satisfy the verifier's `>= 4` threshold; this is a benign +recording-timing artifact in the driver script, not a correctness issue, and +is called out here rather than silently reconciled. + +Raw evidence in this directory is not manually edited: + +- `api-read.json` and `workflow-submissions.json` are k6 summaries. +- `active-workflows*.json`, `end-to-end-completion*.json`, and + `scheduler-dispatch.json` record workload creation and database outcomes. +- `in-flight-before-termination.json`, `worker-termination.json`, + `worker-crash-result.json`, and `lease-recovery-distribution.json` record the + worker-loss experiment. +- `duplicate-submission.json` and `duplicate-delivery-go-test.json` capture the + two idempotency checks. +- `kafka-topology-*.json`, `compose-topology.json`, `hardware.txt`, + `image-digests.json`, and `commit-sha.txt` identify the environment. +- `verification.json` is the machine-readable acceptance result, reproducible + with `python3 tests/benchmarks/verify.py tests/benchmarks/results/2026-07-21T003600Z`. +- `commands.sh` is the exact benchmark driver copied at run start. diff --git a/tests/benchmarks/results/2026-07-21T003600Z/active-workflows-database.json b/tests/benchmarks/results/2026-07-21T003600Z/active-workflows-database.json new file mode 100644 index 0000000..756a691 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/active-workflows-database.json @@ -0,0 +1 @@ +{"active_runs" : 1000, "active_tasks" : 1000} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/active-workflows.json b/tests/benchmarks/results/2026-07-21T003600Z/active-workflows.json new file mode 100644 index 0000000..ccd38f3 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/active-workflows.json @@ -0,0 +1,22 @@ +{ + "create_latency": { + "p50_ms": 5.34, + "p95_ms": 7.7, + "p99_ms": 8.798 + }, + "created": 1000, + "elapsed_seconds": 18.224, + "failure_count": 0, + "failure_rate": 0, + "idempotency_prefix": "validation-active-20260721T003824Z", + "requested": 1000, + "sample_run_ids": [ + "8cdf0332-7862-40d0-893c-05d1fb562193", + "fa82c5bf-3f4c-4b33-a586-1463070351c1", + "281d3cf7-fd60-4d4d-881c-782bb880f374", + "bfa9255d-7752-4226-ac55-eea0745000ea", + "99a22ecf-bb0e-4c21-a63d-d127987a52fc" + ], + "scenario": "simultaneously_active_workflows", + "workflow_id": "8551a8e9-af1b-4d91-9d3f-da7d246e1191" +} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/api-read.json b/tests/benchmarks/results/2026-07-21T003600Z/api-read.json new file mode 100644 index 0000000..1e4dc65 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/api-read.json @@ -0,0 +1,142 @@ +{ + "root_group": { + "path": "", + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "authenticated request succeeded": { + "name": "authenticated request succeeded", + "path": "::authenticated request succeeded", + "id": "12f4c1307352dc7d8175954f46790cf7", + "passes": 3000, + "fails": 0 + } + }, + "name": "" + }, + "metrics": { + "checks": { + "passes": 3000, + "fails": 0, + "thresholds": { + "rate==1": false + }, + "value": 1 + }, + "http_req_blocked": { + "p(99)": 0.4646094899999988, + "max": 6.837791, + "avg": 0.019162996999999977, + "min": 0.000833, + "med": 0.0046455, + "p(90)": 0.013838100000000004, + "p(95)": 0.016210099999999995 + }, + "iterations": { + "count": 3000, + "rate": 99.99776463330309 + }, + "http_req_receiving": { + "p(95)": 0.11826664999999995, + "p(99)": 0.16475042, + "max": 0.733708, + "avg": 0.04419059566666669, + "min": 0.009084, + "med": 0.0286455, + "p(90)": 0.09839590000000002 + }, + "http_reqs": { + "count": 3000, + "rate": 99.99776463330309 + }, + "vus_max": { + "max": 40, + "value": 40, + "min": 40 + }, + "http_req_tls_handshaking": { + "p(90)": 0, + "p(95)": 0, + "p(99)": 0, + "max": 0, + "avg": 0, + "min": 0, + "med": 0 + }, + "iteration_duration": { + "p(99)": 5.204668669999997, + "max": 20.168334, + "avg": 2.086265494000004, + "min": 0.519167, + "med": 1.8857499999999998, + "p(90)": 3.2910875, + "p(95)": 3.62079615 + }, + "data_sent": { + "count": 4227000, + "rate": 140896.85036832406 + }, + "http_req_connecting": { + "med": 0, + "p(90)": 0, + "p(95)": 0, + "p(99)": 0.44677249999999963, + "max": 6.756583, + "avg": 0.011823277000000002, + "min": 0 + }, + "http_req_sending": { + "p(99)": 0.07908425, + "max": 1.852791, + "avg": 0.027027973666666687, + "min": 0.003375, + "med": 0.021042, + "p(90)": 0.0469211, + "p(95)": 0.05442739999999997 + }, + "http_req_waiting": { + "max": 16.269417, + "avg": 1.8376189710000015, + "min": 0.47525, + "med": 1.618625, + "p(90)": 2.8969628000000003, + "p(95)": 3.1830332999999995, + "p(99)": 4.32654976 + }, + "vus": { + "value": 0, + "min": 0, + "max": 1 + }, + "http_req_duration": { + "med": 1.7014585, + "p(90)": 3.0005375, + "p(95)": 3.3065610499999996, + "p(99)": 4.65736783, + "max": 16.399334, + "avg": 1.908837540333333, + "min": 0.491084 + }, + "data_received": { + "count": 1395000, + "rate": 46498.96055448594 + }, + "http_req_duration{expected_response:true}": { + "med": 1.7014585, + "p(90)": 3.0005375, + "p(95)": 3.3065610499999996, + "p(99)": 4.65736783, + "max": 16.399334, + "avg": 1.908837540333333, + "min": 0.491084 + }, + "http_req_failed": { + "passes": 0, + "fails": 3000, + "thresholds": { + "rate==0": false + }, + "value": 0 + } + } +} \ No newline at end of file diff --git a/tests/benchmarks/results/2026-07-21T003600Z/commands.sh b/tests/benchmarks/results/2026-07-21T003600Z/commands.sh new file mode 100755 index 0000000..a0917b0 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/commands.sh @@ -0,0 +1,137 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Runs only against the local Compose project. It never provisions cloud +# resources. Raw result directories are immutable: choose a new path to rerun. +result_dir=${1:-tests/benchmarks/results/$(date -u +%Y-%m-%dT%H%M%SZ)} +if [[ -e "$result_dir" ]]; then + echo "result directory already exists: $result_dir" >&2 + exit 1 +fi +mkdir -p "$result_dir" +run_suffix=$(date -u +%Y%m%dT%H%M%SZ) +active_prefix="validation-active-$run_suffix" +crash_prefix="validation-crash-$run_suffix" +duplicate_prefix="validation-duplicate-$run_suffix" + +cp "$0" "$result_dir/commands.sh" +docker compose up -d --build +docker compose up -d --scale scheduler=2 --scale worker-go=1 --scale worker-python=1 scheduler worker-go worker-python +for endpoint in \ + http://localhost:8180/realms/runmesh/.well-known/openid-configuration \ + http://localhost:8080/health/ready; do + ready=0 + for _ in $(seq 1 90); do + if curl -fsS "$endpoint" >/dev/null; then ready=1; break; fi + sleep 2 + done + [[ "$ready" == 1 ]] || { echo "benchmark dependency did not become ready: $endpoint" >&2; exit 1; } +done +benchmark_token=$(python3 tests/benchmarks/local.py token) + +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-before.json" +read_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-read-$run_suffix") +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_READ_PATH="/v1/workflows/$read_workflow" \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_RATE=100 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/api-read.json /scripts/api-read.js + +sleep 3 +submission_workflow=$(python3 tests/benchmarks/local.py definition --prefix "validation-submission-$run_suffix") +docker run --rm --add-host host.docker.internal:host-gateway \ + -e RUNMESH_API=http://host.docker.internal:8080 \ + -e RUNMESH_TOKEN="$benchmark_token" -e RUNMESH_WORKFLOW_ID="$submission_workflow" \ + -e RUNMESH_RATE=50 -e RUNMESH_DURATION=30s \ + -v "$PWD/tests/load":/scripts:ro -v "$PWD/$result_dir":/results \ + grafana/k6:0.57.0 run --summary-export=/results/workflow-submissions.json /scripts/submissions.js + +docker compose stop scheduler worker-python worker-go +python3 tests/benchmarks/local.py active --count 1000 --prefix "$active_prefix" > "$result_dir/active-workflows.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('active_runs',count(*),'active_tasks',sum(task_count)) FROM (SELECT wr.id,count(tr.id) task_count FROM workflow_runs wr JOIN task_runs tr ON tr.workflow_run_id=wr.id WHERE wr.idempotency_key LIKE '$active_prefix-%' AND wr.status='RUNNING' GROUP BY wr.id) rows" \ + > "$result_dir/active-workflows-database.json" + +# Start two schedulers and twelve workers against six partitions, then measure +# drain throughput for the 1,000 distinct workflow keys created above. +completion_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale scheduler=2 scheduler +docker compose up -d --build --scale worker-go=12 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$active_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 0.2; done +completion_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$completion_start" "$completion_end" > "$result_dir/end-to-end-completion.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"queued_end_to_end_completion","tasks":1000,"elapsed_seconds":round(elapsed,3),"tasks_per_second":round(1000/elapsed,3)}, indent=2)) +PY +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED')) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$active_prefix-%'" \ + > "$result_dir/end-to-end-completion-database.json" + +# Begin at the current topic end so this scenario observes only its own work. +docker compose stop worker-go +docker compose exec -T redpanda rpk group seek runmesh-workers --to end --topics runmesh.tasks >/dev/null +python3 tests/benchmarks/local.py prepare --tasks 10000 --prefix "$crash_prefix" > "$result_dir/worker-crash-setup.json" +dispatch_start=$(python3 -c 'import time; print(time.time_ns())') +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status IN ('READY','BLOCKED')") != 0 ]]; do sleep 0.1; done +dispatch_end=$(python3 -c 'import time; print(time.time_ns())') +python3 - "$dispatch_start" "$dispatch_end" > "$result_dir/scheduler-dispatch.json" <<'PY' +import json, sys +elapsed = (int(sys.argv[2]) - int(sys.argv[1])) / 1_000_000_000 +print(json.dumps({"scenario":"scheduler_dispatch","tasks":10000,"elapsed_seconds":round(elapsed,3),"dispatches_per_second":round(10000/elapsed,3)}, indent=2)) +PY + +# Keep enough tasks running to occupy every available Kafka partition before +# terminating the entire 20-container worker pool. +docker compose exec -T postgres psql -U runmesh -d runmesh -c \ + "WITH selected AS (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' ORDER BY tr.id LIMIT 100) UPDATE task_runs SET input='{\"delay_ms\":5000}'::jsonb WHERE id IN (SELECT id FROM selected);" >/dev/null +docker compose up -d --build --scale worker-go=20 worker-go +deadline=$((SECONDS+60)) +while true; do + running=$(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING'") + [[ "$running" -ge 4 ]] && break + [[ "$SECONDS" -ge "$deadline" ]] && { echo "fewer than four tasks became concurrently RUNNING" >&2; exit 1; } + sleep 0.1 +done +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('running_count',count(*),'task_ids',json_agg(id ORDER BY id)) FROM (SELECT tr.id FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND tr.status='RUNNING') active" \ + > "$result_dir/in-flight-before-termination.json" +worker_ids=( $(docker compose ps -q worker-go) ) +docker kill "${worker_ids[@]}" >/dev/null +python3 - "${#worker_ids[@]}" "$crash_prefix" "$running" > "$result_dir/worker-termination.json" <<'PY' +import datetime, json, sys +print(json.dumps({"terminated_workers":int(sys.argv[1]),"idempotency_prefix":sys.argv[2],"in_flight_tasks":int(sys.argv[3]),"terminated_at":datetime.datetime.now(datetime.timezone.utc).isoformat()}, indent=2)) +PY +recovery_start=$(python3 -c 'import time; print(time.time_ns())') +docker compose up -d --scale worker-go=20 worker-go +while [[ $(docker compose exec -T postgres psql -U runmesh -d runmesh -Atc "SELECT count(*) FROM workflow_runs WHERE idempotency_key LIKE '$crash_prefix-%' AND status NOT IN ('SUCCEEDED','FAILED','CANCELLED')") != 0 ]]; do sleep 1; done +recovery_end=$(python3 -c 'import time; print(time.time_ns())') +recovery_seconds=$(python3 -c "print(round(($recovery_end-$recovery_start)/1_000_000_000,3))") +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "SELECT json_build_object('scenario','worker_termination_and_lease_recovery','tasks',count(*),'succeeded',count(*) FILTER (WHERE tr.status='SUCCEEDED'),'other',count(*) FILTER (WHERE tr.status!='SUCCEEDED'),'attempts',sum(tr.attempt_count),'recovered_tasks',count(*) FILTER (WHERE tr.attempt_count > 1),'duplicate_attempts',sum(tr.attempt_count)-count(*),'recovery_seconds',$recovery_seconds) FROM task_runs tr JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%'" \ + > "$result_dir/worker-crash-result.json" +docker compose exec -T postgres psql -U runmesh -d runmesh -Atc \ + "WITH gaps AS (SELECT EXTRACT(EPOCH FROM (next_attempt.started_at-expired.ended_at))*1000 milliseconds FROM task_attempts expired JOIN task_attempts next_attempt ON next_attempt.task_run_id=expired.task_run_id AND next_attempt.attempt_number=expired.attempt_number+1 JOIN task_runs tr ON tr.id=expired.task_run_id JOIN workflow_runs wr ON wr.id=tr.workflow_run_id WHERE wr.idempotency_key LIKE '$crash_prefix-%' AND expired.error_type='LeaseExpired') SELECT json_build_object('samples',count(*),'p50_ms',percentile_cont(0.50) WITHIN GROUP (ORDER BY milliseconds),'p95_ms',percentile_cont(0.95) WITHIN GROUP (ORDER BY milliseconds),'p99_ms',percentile_cont(0.99) WITHIN GROUP (ORDER BY milliseconds)) FROM gaps" \ + > "$result_dir/lease-recovery-distribution.json" + +python3 tests/benchmarks/local.py duplicate --prefix "$duplicate_prefix" > "$result_dir/duplicate-submission.json" +docker run --rm -v "$PWD":/src -w /src -v /var/run/docker.sock:/var/run/docker.sock \ + -v runmesh-go-mod:/go/pkg/mod -v runmesh-go-build:/root/.cache/go-build \ + -e TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal golang:1.25 \ + /usr/local/go/bin/go test -tags=integration -count=1 -run TestDuplicateDispatchIsLeasedOnce -json ./tests/integration \ + > "$result_dir/duplicate-delivery-go-test.json" + +docker compose images --format json > "$result_dir/image-digests.json" +docker compose ps --format json > "$result_dir/compose-topology.json" +docker compose exec -T redpanda rpk topic describe runmesh.tasks --format json > "$result_dir/kafka-topology-after.json" +{ + uname -a + sysctl -n machdep.cpu.brand_string 2>/dev/null || true + sysctl -n hw.memsize 2>/dev/null || true + docker version --format '{{json .}}' +} > "$result_dir/hardware.txt" +git rev-parse HEAD > "$result_dir/commit-sha.txt" +python3 tests/benchmarks/verify.py "$result_dir" > "$result_dir/verification.json" + +echo "Benchmark evidence written to $result_dir" diff --git a/tests/benchmarks/results/2026-07-21T003600Z/commit-sha.txt b/tests/benchmarks/results/2026-07-21T003600Z/commit-sha.txt new file mode 100644 index 0000000..4fb3771 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/commit-sha.txt @@ -0,0 +1 @@ +c4b248638f2ae36c4a7bbaf48df37ee59ac1bf74 diff --git a/tests/benchmarks/results/2026-07-21T003600Z/compose-topology.json b/tests/benchmarks/results/2026-07-21T003600Z/compose-topology.json new file mode 100644 index 0000000..ce9a62c --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/compose-topology.json @@ -0,0 +1,35 @@ +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"471f522abee3","Image":"runmesh-control-plane","Labels":"com.docker.compose.config-hash=9fe03b71a2356bebdc17c98f565a44f48023721adb5ec2a83aba50c19bd4f54d,com.docker.compose.container-number=1,com.docker.compose.depends_on=redis:service_healthy:false,minio:service_healthy:false,keycloak:service_started:false,migrate:service_completed_successfully:false,redpanda:service_healthy:false,com.docker.compose.image=sha256:40314e50c50a6d0540790c0c785a527aa8b1c3fddc9faabafe7687880039c07f,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.project=runmesh,com.docker.compose.replace=control-plane-1,com.docker.compose.service=control-plane,com.docker.compose.version=5.3.0,desktop.docker.io/ports/7001/tcp=:7001,desktop.docker.io/ports/8080/tcp=:8080","LocalVolumes":"0","Mounts":"","Name":"runmesh-control-plane-1","Names":"runmesh-control-plane-1","Networks":"runmesh_default","Ports":"0.0.0.0:7001-\u003e7001/tcp, [::]:7001-\u003e7001/tcp, 0.0.0.0:8080-\u003e8080/tcp, [::]:8080-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":7001,"PublishedPort":7001,"Protocol":"tcp"},{"URL":"::","TargetPort":7001,"PublishedPort":7001,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8080,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8080,"Protocol":"tcp"}],"RunningFor":"3 minutes ago","Service":"control-plane","Size":"0B","State":"running","Status":"Up 3 minutes (healthy)"} +{"Command":"\"/run.sh\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"5644e06da49b","Image":"grafana/grafana:11.4.0","Labels":"desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/1/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/grafana/dashboards,com.docker.compose.container-number=1,com.docker.compose.image=sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/binds/1/Target=/var/lib/grafana/dashboards,desktop.docker.io/binds/1/SourceKind=hostFile,desktop.docker.io/ports.scheme=v2,com.docker.compose.service=grafana,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/grafana/provisioning,desktop.docker.io/binds/0/Target=/etc/grafana/provisioning,com.docker.compose.config-hash=ede6cf07da09ed0d5759a176342e1da8e2d7164eeadeb235d2ead6763b183927,com.docker.compose.depends_on=loki:service_started:false,tempo:service_started:false,prometheus:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/3000/tcp=:3001,maintainer=Grafana Labs \u003chello@grafana.com\u003e,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"/host_mnt/User…,/host_mnt/User…","Name":"runmesh-grafana-1","Names":"runmesh-grafana-1","Networks":"runmesh_default","Ports":"0.0.0.0:3001-\u003e3000/tcp, [::]:3001-\u003e3000/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3000,"PublishedPort":3001,"Protocol":"tcp"},{"URL":"::","TargetPort":3000,"PublishedPort":3001,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"grafana","Size":"0B","State":"running","Status":"Up 5 minutes"} +{"Command":"\"/opt/keycloak/bin/k…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"f78739f08608","Image":"quay.io/keycloak/keycloak:26.1","Labels":"build-date=2025-04-08T13:14:37Z,architecture=aarch64,desktop.docker.io/binds/0/SourceKind=hostFile,distribution-scope=public,org.opencontainers.image.licenses=Apache-2.0,org.opencontainers.image.revision=e7109eeda3e2630bb65640a6a322f0cb6ff6ddd6,com.docker.compose.config-hash=cebace789f94dee1045ba9e8f2f123fa3a9807bdde96bcc4af83324d70c53a7e,com.docker.compose.depends_on=,com.docker.compose.oneoff=False,com.redhat.license_terms=,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/keycloak,desktop.docker.io/ports/8080/tcp=:8180,io.buildah.version=1.39.0-dev,desktop.docker.io/ports.scheme=v2,io.k8s.description=Keycloak Server Image,name=keycloak,org.opencontainers.image.documentation=https://www.keycloak.org/documentation,org.opencontainers.image.source=https://github.com/keycloak-rel/keycloak-rel,com.docker.compose.container-number=1,com.docker.compose.project=runmesh,com.docker.compose.service=keycloak,io.openshift.expose-services=,org.opencontainers.image.description=,url=https://www.keycloak.org/,vendor=https://www.keycloak.org/,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,io.openshift.tags=keycloak security identity,maintainer=https://www.keycloak.org/,org.opencontainers.image.created=2025-04-11T07:58:44.198Z,org.opencontainers.image.url=https://github.com/keycloak-rel/keycloak-rel,org.opencontainers.image.version=26.1.5,release=,com.docker.compose.image=sha256:be6a86215213145bfb4fb3e2b3ab982a806d00262655abdcf3ffa6a38d241c7c,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.redhat.build-host=,com.redhat.component=,description=Keycloak Server Image,org.opencontainers.image.title=keycloak-rel,vcs-ref=,vcs-type=git,desktop.docker.io/binds/0/Target=/opt/keycloak/data/import,io.k8s.display-name=Keycloak Server,summary=Keycloak Server Image,version=26.1.5","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-keycloak-1","Names":"runmesh-keycloak-1","Networks":"runmesh_default","Ports":"0.0.0.0:8180-\u003e8080/tcp, [::]:8180-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8180,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8180,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"keycloak","Size":"0B","State":"running","Status":"Up 5 minutes"} +{"Command":"\"/usr/bin/loki -conf…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"36c9587c7209","Image":"grafana/loki:3.3.2","Labels":"com.docker.compose.project=runmesh,com.docker.compose.service=loki,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=,com.docker.compose.image=sha256:8af2de1abbdd7aa92b27c9bcc96f0f4140c9096b507c77921ffddf1c6ad6c48f,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports/3100/tcp=:3100,com.docker.compose.config-hash=e3121c4e0132494435f1d1cb47ac059e2b1f2f206f8082c2382c39931a5c7960,com.docker.compose.container-number=1,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"","Name":"runmesh-loki-1","Names":"runmesh-loki-1","Networks":"runmesh_default","Ports":"0.0.0.0:3100-\u003e3100/tcp, [::]:3100-\u003e3100/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3100,"PublishedPort":3100,"Protocol":"tcp"},{"URL":"::","TargetPort":3100,"PublishedPort":3100,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"loki","Size":"0B","State":"running","Status":"Up 5 minutes"} +{"Command":"\"/usr/bin/docker-ent…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"b38c50e9ba66","Image":"minio/minio:RELEASE.2025-02-07T23-21-09Z","Labels":"com.redhat.component=ubi9-micro-container,url=https://www.redhat.com,version=RELEASE.2025-02-07T23-21-09Z,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0,release=RELEASE.2025-02-07T23-21-09Z,summary=MinIO is a High Performance Object Storage, API compatible with Amazon S3 cloud storage service.,desktop.docker.io/ports/9000/tcp=:9000,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=minio,description=MinIO object storage is fundamentally different. Designed for performance and the S3 API, it is 100% open-source. MinIO is ideal for large, private cloud environments with stringent security requirements and delivers mission-critical availability across a diverse range of workloads.,vendor=MinIO Inc \u003cdev@min.io\u003e,com.docker.compose.config-hash=c2ef697a7845d5cfeaef7a64bd249c55b2816a78d92a7e6efbaf934addfbfbc9,com.redhat.license_terms=https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI,desktop.docker.io/ports.scheme=v2,io.buildah.version=1.38.0-dev,vcs-type=git,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,distribution-scope=public,io.k8s.description=Very small image which doesn't install the package manager.,io.openshift.expose-services=,vcs-ref=41bec8a95f8231b8982164a882f1b491a864dcce,build-date=2025-02-06T04:33:00Z,com.docker.compose.image=sha256:640c22768ed5dbc92eacc14502a1b06a1c708fa60431345c78dfc22917062e93,com.docker.compose.project=runmesh,maintainer=MinIO Inc \u003cdev@min.io\u003e,name=MinIO,architecture=aarch64,desktop.docker.io/ports/9001/tcp=:9001,io.k8s.display-name=Red Hat Universal Base Image 9 Micro","LocalVolumes":"1","Mounts":"runmesh_minio-…","Name":"runmesh-minio-1","Names":"runmesh-minio-1","Networks":"runmesh_default","Ports":"0.0.0.0:9000-9001-\u003e9000-9001/tcp, [::]:9000-9001-\u003e9000-9001/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9000,"PublishedPort":9000,"Protocol":"tcp"},{"URL":"::","TargetPort":9000,"PublishedPort":9000,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":9001,"PublishedPort":9001,"Protocol":"tcp"},{"URL":"::","TargetPort":9001,"PublishedPort":9001,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"minio","Size":"0B","State":"running","Status":"Up 5 minutes (healthy)"} +{"Command":"\"/otelcol-contrib --…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"fce3fc5cc2b8","Image":"otel/opentelemetry-collector-contrib:0.119.0","Labels":"desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/otel-collector.yaml,desktop.docker.io/binds/0/Target=/etc/otelcol/config.yaml,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/8889/tcp=:8889,org.opencontainers.image.created=2025-02-04T18:02:02Z,org.opencontainers.image.source=https://github.com/open-telemetry/opentelemetry-collector-releases,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/ports/4317/tcp=:4317,com.docker.compose.config-hash=30112846559126a16e248b6a9473d1a71f5ceee134a40eea9844fcbe6a58f386,com.docker.compose.container-number=1,com.docker.compose.depends_on=tempo:service_started:false,loki:service_started:false,com.docker.compose.image=sha256:36c35cc213c0f3b64d6e8a3e844dc90822f00725e0e518eaed5b08bcc2231e72,com.docker.compose.oneoff=False,desktop.docker.io/ports/4318/tcp=:4318,org.opencontainers.image.version=0.119.0,com.docker.compose.service=otel-collector,org.opencontainers.image.licenses=Apache-2.0,org.opencontainers.image.name=opentelemetry-collector-releases,org.opencontainers.image.revision=c06573884854d06efc3ff0d91d76004d49c80a53","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-otel-collector-1","Names":"runmesh-otel-collector-1","Networks":"runmesh_default","Ports":"0.0.0.0:4317-4318-\u003e4317-4318/tcp, [::]:4317-4318-\u003e4317-4318/tcp, 0.0.0.0:8889-\u003e8889/tcp, [::]:8889-\u003e8889/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":4317,"PublishedPort":4317,"Protocol":"tcp"},{"URL":"::","TargetPort":4317,"PublishedPort":4317,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":4318,"PublishedPort":4318,"Protocol":"tcp"},{"URL":"::","TargetPort":4318,"PublishedPort":4318,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":8889,"PublishedPort":8889,"Protocol":"tcp"},{"URL":"::","TargetPort":8889,"PublishedPort":8889,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"otel-collector","Size":"0B","State":"running","Status":"Up 5 minutes"} +{"Command":"\"docker-entrypoint.s…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"ff6c846b4906","Image":"postgres:17-alpine","Labels":"com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/5432/tcp=:5432,com.docker.compose.config-hash=d3a0e466ee146131f19622bff6646dfd87ba3247ac4c064ec21f1013fca34f25,com.docker.compose.image=sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=postgres,com.docker.compose.version=5.3.0","LocalVolumes":"1","Mounts":"runmesh_postgr…","Name":"runmesh-postgres-1","Names":"runmesh-postgres-1","Networks":"runmesh_default","Ports":"0.0.0.0:5432-\u003e5432/tcp, [::]:5432-\u003e5432/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":5432,"PublishedPort":5432,"Protocol":"tcp"},{"URL":"::","TargetPort":5432,"PublishedPort":5432,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"postgres","Size":"0B","State":"running","Status":"Up 5 minutes (healthy)"} +{"Command":"\"/bin/prometheus --c…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"47ac0154a76f","Image":"prom/prometheus:v3.1.0","Labels":"desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/prometheus.yaml,desktop.docker.io/binds/1/Target=/etc/prometheus/rules.yaml,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/9090/tcp=:9090,com.docker.compose.config-hash=cea444590d60d3b6b6325a4da1ec76a5309ba4a70dcc47d4bc24fdbb081da34d,com.docker.compose.container-number=1,com.docker.compose.service=prometheus,desktop.docker.io/binds/1/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/prometheus-rules.yaml,desktop.docker.io/binds/1/SourceKind=hostFile,maintainer=The Prometheus Authors \u003cprometheus-developers@googlegroups.com\u003e,com.docker.compose.depends_on=,com.docker.compose.image=sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218,com.docker.compose.oneoff=False,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/binds/0/Target=/etc/prometheus/prometheus.yml,org.opencontainers.image.source=https://github.com/prometheus/prometheus,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0","LocalVolumes":"1","Mounts":"/host_mnt/User…,/host_mnt/User…,9268734f6fe2c3…","Name":"runmesh-prometheus-1","Names":"runmesh-prometheus-1","Networks":"runmesh_default","Ports":"0.0.0.0:9090-\u003e9090/tcp, [::]:9090-\u003e9090/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9090,"PublishedPort":9090,"Protocol":"tcp"},{"URL":"::","TargetPort":9090,"PublishedPort":9090,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"prometheus","Size":"0B","State":"running","Status":"Up 5 minutes"} +{"Command":"\"docker-entrypoint.s…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"eee92583b8f9","Image":"redis:7.4-alpine","Labels":"com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=redis,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=681b4575ba55d081dc10ad086d58179ce9a966b8c7ce8dc3a4259491bddf628e,com.docker.compose.depends_on=,com.docker.compose.oneoff=False,desktop.docker.io/ports/6379/tcp=:6379,com.docker.compose.container-number=1,com.docker.compose.image=sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml","LocalVolumes":"1","Mounts":"runmesh_redis-…","Name":"runmesh-redis-1","Names":"runmesh-redis-1","Networks":"runmesh_default","Ports":"0.0.0.0:6379-\u003e6379/tcp, [::]:6379-\u003e6379/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":6379,"PublishedPort":6379,"Protocol":"tcp"},{"URL":"::","TargetPort":6379,"PublishedPort":6379,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"redis","Size":"0B","State":"running","Status":"Up 5 minutes (healthy)"} +{"Command":"\"/entrypoint.sh redp…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"healthy","ID":"0a57396b332e","Image":"redpandadata/redpanda:v24.3.15","Labels":"com.docker.compose.config-hash=f7c33b45bd5515ce890e71f032b2ebf336077806438d6d3da8e8f3532837bae2,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=redpanda,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/9644/tcp=:9644,org.opencontainers.image.authors=Redpanda Data \u003chi@redpanda.com\u003e,com.docker.compose.container-number=1,com.docker.compose.depends_on=,com.docker.compose.image=sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports/19092/tcp=:19092","LocalVolumes":"1","Mounts":"runmesh_redpan…","Name":"runmesh-redpanda-1","Names":"runmesh-redpanda-1","Networks":"runmesh_default","Ports":"0.0.0.0:9644-\u003e9644/tcp, [::]:9644-\u003e9644/tcp, 0.0.0.0:19092-\u003e19092/tcp, [::]:19092-\u003e19092/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":9644,"PublishedPort":9644,"Protocol":"tcp"},{"URL":"::","TargetPort":9644,"PublishedPort":9644,"Protocol":"tcp"},{"URL":"0.0.0.0","TargetPort":19092,"PublishedPort":19092,"Protocol":"tcp"},{"URL":"::","TargetPort":19092,"PublishedPort":19092,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"redpanda","Size":"0B","State":"running","Status":"Up 5 minutes (healthy)"} +{"Command":"\"./console\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"a27fca5e521d","Image":"redpandadata/console:v2.8.3","Labels":"com.docker.compose.config-hash=cb7cc300da1519866e1ef7f83fe7dda15efa317d0575d81fe3db1560604baebb,com.docker.compose.container-number=1,com.docker.compose.image=sha256:fc8006f22072293e9fa6a3aa8a0581ac502bc8262767c32c01ee019eca56bb38,com.docker.compose.oneoff=False,desktop.docker.io/ports/8080/tcp=:8081,com.docker.compose.depends_on=redpanda:service_healthy:false,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=redpanda-console,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-redpanda-console-1","Names":"runmesh-redpanda-console-1","Networks":"runmesh_default","Ports":"0.0.0.0:8081-\u003e8080/tcp, [::]:8081-\u003e8080/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":8080,"PublishedPort":8081,"Protocol":"tcp"},{"URL":"::","TargetPort":8080,"PublishedPort":8081,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"redpanda-console","Size":"0B","State":"running","Status":"Up 5 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"7926e3970ace","Image":"runmesh-scheduler","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=c2ec170571edb0eb096521acddff62c757fe8eaa763425d2f41f085b450236ac,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,redis:service_healthy:false,migrate:service_completed_successfully:false,com.docker.compose.image=sha256:d419e46de7ac28bce1a158522dd8f19ecf80e82b46a91f115a8514c55f6e3e22,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.container-number=1,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=scheduler,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-scheduler-1","Names":"runmesh-scheduler-1","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"6 minutes ago","Service":"scheduler","Size":"0B","State":"running","Status":"Up 4 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"c7182975e74c","Image":"runmesh-scheduler","Labels":"com.docker.compose.config-hash=c2ec170571edb0eb096521acddff62c757fe8eaa763425d2f41f085b450236ac,com.docker.compose.depends_on=migrate:service_completed_successfully:false,redpanda-init:service_completed_successfully:false,redis:service_healthy:false,com.docker.compose.image=sha256:d419e46de7ac28bce1a158522dd8f19ecf80e82b46a91f115a8514c55f6e3e22,com.docker.compose.oneoff=False,com.docker.compose.service=scheduler,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=2,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-scheduler-2","Names":"runmesh-scheduler-2","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"6 minutes ago","Service":"scheduler","Size":"0B","State":"running","Status":"Up 4 minutes"} +{"Command":"\"/tempo -config.file…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"5ded60cdd2bb","Image":"grafana/tempo:2.6.1","Labels":"com.docker.compose.image=sha256:ef4384fce6e8ad22b95b243d8fc165628cda655376fd50e7850536ad89d71d50,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/binds/0/Source=/Users/samarthvinayaka/Desktop/Projects/RunMesh/deploy/docker/tempo.yaml,desktop.docker.io/binds/0/Target=/etc/tempo.yaml,org.opencontainers.image.url=https://github.com/grafana/tempo,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,desktop.docker.io/binds/0/SourceKind=hostFile,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=4de71b343b413aeaff1ca18f18ac2c9df01f41d4b77c48c3526911fa552ecd98,com.docker.compose.depends_on=,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0,desktop.docker.io/ports/3200/tcp=:3200,org.opencontainers.image.created=2024-10-15T15:13:57Z,org.opencontainers.image.source=https://github.com/grafana/tempo.git,com.docker.compose.container-number=1,com.docker.compose.project=runmesh,com.docker.compose.service=tempo,org.opencontainers.image.revision=24c5b553df91cead5e3afc63e79a5f4deb702b62","LocalVolumes":"0","Mounts":"/host_mnt/User…","Name":"runmesh-tempo-1","Names":"runmesh-tempo-1","Networks":"runmesh_default","Ports":"0.0.0.0:3200-\u003e3200/tcp, [::]:3200-\u003e3200/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3200,"PublishedPort":3200,"Protocol":"tcp"},{"URL":"::","TargetPort":3200,"PublishedPort":3200,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"tempo","Size":"0B","State":"running","Status":"Up 5 minutes"} +{"Command":"\"/docker-entrypoint.…\"","CreatedAt":"2026-07-20 20:38:52 -0400 EDT","ExitCode":0,"Health":"","ID":"ab9652e33f76","Image":"runmesh-web","Labels":"desktop.docker.io/ports.scheme=v2,desktop.docker.io/ports/3000/tcp=:3000,maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e,com.docker.compose.container-number=1,com.docker.compose.depends_on=control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.service=web,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=e2afc81b870dc82be2a88d0dee013a23d9fa6ddf3304077545e218b9fc0b47da,com.docker.compose.image=sha256:c8a8f2bb8339104532bfe93c97f97958e5936f3b977d4502dde6fbbd38a2e665,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-web-1","Names":"runmesh-web-1","Networks":"runmesh_default","Ports":"0.0.0.0:3000-\u003e3000/tcp, [::]:3000-\u003e3000/tcp","Project":"runmesh","Publishers":[{"URL":"0.0.0.0","TargetPort":3000,"PublishedPort":3000,"Protocol":"tcp"},{"URL":"::","TargetPort":3000,"PublishedPort":3000,"Protocol":"tcp"}],"RunningFor":"6 minutes ago","Service":"web","Size":"0B","State":"running","Status":"Up 5 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"d7ed1d7f0773","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=1,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.replace=worker-go-1,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-1","Names":"runmesh-worker-go-1","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"6dc6b62cbc11","Image":"runmesh-worker-go","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-10,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.container-number=10,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-10","Names":"runmesh-worker-go-10","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"38811db67c7f","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-11,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=11,com.docker.compose.oneoff=False,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-11","Names":"runmesh-worker-go-11","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"7a06de19445b","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=12,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-12,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-12","Names":"runmesh-worker-go-12","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"c5b4d1ef6560","Image":"runmesh-worker-go","Labels":"com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=13,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-13","Names":"runmesh-worker-go-13","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"e04d4127a4d9","Image":"runmesh-worker-go","Labels":"com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=14,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-14","Names":"runmesh-worker-go-14","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"5b71f5d30d0d","Image":"runmesh-worker-go","Labels":"com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=15,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.project=runmesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-15","Names":"runmesh-worker-go-15","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"5589d8299557","Image":"runmesh-worker-go","Labels":"com.docker.compose.container-number=16,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-16","Names":"runmesh-worker-go-16","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"01fb4c049e70","Image":"runmesh-worker-go","Labels":"com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=17,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-17","Names":"runmesh-worker-go-17","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"89538253b3a5","Image":"runmesh-worker-go","Labels":"com.docker.compose.oneoff=False,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=18,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-18","Names":"runmesh-worker-go-18","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"9590d3244354","Image":"runmesh-worker-go","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=19,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-19","Names":"runmesh-worker-go-19","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"f75c86ab2da2","Image":"runmesh-worker-go","Labels":"desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=2,com.docker.compose.depends_on=control-plane:service_started:false,redpanda-init:service_completed_successfully:false,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-2,com.docker.compose.oneoff=False,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-2","Names":"runmesh-worker-go-2","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"8e33169d95a0","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=20,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.version=5.3.0,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-20","Names":"runmesh-worker-go-20","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"e56e6328d0e9","Image":"runmesh-worker-go","Labels":"com.docker.compose.container-number=3,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-3,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.oneoff=False,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-3","Names":"runmesh-worker-go-3","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"317a2ba9ae4b","Image":"runmesh-worker-go","Labels":"com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-4,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=4,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.project=runmesh","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-4","Names":"runmesh-worker-go-4","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"2973fb107349","Image":"runmesh-worker-go","Labels":"com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.project=runmesh,com.docker.compose.service=worker-go,com.docker.compose.container-number=5,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-5,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-5","Names":"runmesh-worker-go-5","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"8d1dbb26ef5d","Image":"runmesh-worker-go","Labels":"com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-6,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.container-number=6,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-6","Names":"runmesh-worker-go-6","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"b1e57ea6250c","Image":"runmesh-worker-go","Labels":"com.docker.compose.container-number=7,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-7,com.docker.compose.service=worker-go,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project=runmesh,com.docker.compose.version=5.3.0,desktop.docker.io/ports.scheme=v2","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-7","Names":"runmesh-worker-go-7","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"747eeecf5cd4","Image":"runmesh-worker-go","Labels":"com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.project=runmesh,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,com.docker.compose.replace=worker-go-8,com.docker.compose.service=worker-go,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=8,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.oneoff=False,com.docker.compose.version=5.3.0","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-8","Names":"runmesh-worker-go-8","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} +{"Command":"\"/app/service\"","CreatedAt":"2026-07-20 20:41:18 -0400 EDT","ExitCode":0,"Health":"","ID":"cae8c34ffb83","Image":"runmesh-worker-go","Labels":"com.docker.compose.service=worker-go,com.docker.compose.version=5.3.0,com.docker.compose.config-hash=d99795a1c3c17fbbe4b8b9696e947c19c2ac64911044388b62ef1e8d10c5c354,com.docker.compose.image=sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380,com.docker.compose.project=runmesh,com.docker.compose.project.working_dir=/Users/samarthvinayaka/Desktop/Projects/RunMesh,desktop.docker.io/ports.scheme=v2,com.docker.compose.container-number=9,com.docker.compose.depends_on=redpanda-init:service_completed_successfully:false,control-plane:service_started:false,com.docker.compose.oneoff=False,com.docker.compose.project.config_files=/Users/samarthvinayaka/Desktop/Projects/RunMesh/compose.yaml,com.docker.compose.replace=worker-go-9","LocalVolumes":"0","Mounts":"","Name":"runmesh-worker-go-9","Names":"runmesh-worker-go-9","Networks":"runmesh_default","Ports":"","Project":"runmesh","Publishers":[],"RunningFor":"3 minutes ago","Service":"worker-go","Size":"0B","State":"running","Status":"Up 3 minutes"} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/duplicate-delivery-go-test.json b/tests/benchmarks/results/2026-07-21T003600Z/duplicate-delivery-go-test.json new file mode 100644 index 0000000..c4fecfc --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/duplicate-delivery-go-test.json @@ -0,0 +1,8 @@ +{"Time":"2026-07-21T00:44:34.880923254Z","Action":"start","Package":"github.com/samarth1412/RunMesh/tests/integration"} +{"Time":"2026-07-21T00:44:34.892982962Z","Action":"run","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce"} +{"Time":"2026-07-21T00:44:34.893194504Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Output":"=== RUN TestDuplicateDispatchIsLeasedOnce\n"} +{"Time":"2026-07-21T00:44:51.335437928Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Output":"--- PASS: TestDuplicateDispatchIsLeasedOnce (16.44s)\n"} +{"Time":"2026-07-21T00:44:51.338009428Z","Action":"pass","Package":"github.com/samarth1412/RunMesh/tests/integration","Test":"TestDuplicateDispatchIsLeasedOnce","Elapsed":16.44} +{"Time":"2026-07-21T00:44:51.33810372Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Output":"PASS\n"} +{"Time":"2026-07-21T00:44:51.34270897Z","Action":"output","Package":"github.com/samarth1412/RunMesh/tests/integration","Output":"ok \tgithub.com/samarth1412/RunMesh/tests/integration\t16.461s\n"} +{"Time":"2026-07-21T00:44:51.342806303Z","Action":"pass","Package":"github.com/samarth1412/RunMesh/tests/integration","Elapsed":16.462} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/duplicate-submission.json b/tests/benchmarks/results/2026-07-21T003600Z/duplicate-submission.json new file mode 100644 index 0000000..405b017 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/duplicate-submission.json @@ -0,0 +1,10 @@ +{ + "first_run_id": "063ca9ad-33ea-4ef0-99df-f9e4e6ddaebd", + "first_status": 201, + "original_input_preserved": true, + "passed": true, + "same_run": true, + "scenario": "duplicate_submission", + "second_run_id": "063ca9ad-33ea-4ef0-99df-f9e4e6ddaebd", + "second_status": 200 +} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/end-to-end-completion-database.json b/tests/benchmarks/results/2026-07-21T003600Z/end-to-end-completion-database.json new file mode 100644 index 0000000..d03267f --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/end-to-end-completion-database.json @@ -0,0 +1 @@ +{"tasks" : 1000, "succeeded" : 1000, "other" : 0} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/end-to-end-completion.json b/tests/benchmarks/results/2026-07-21T003600Z/end-to-end-completion.json new file mode 100644 index 0000000..018bd66 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/end-to-end-completion.json @@ -0,0 +1,6 @@ +{ + "scenario": "queued_end_to_end_completion", + "tasks": 1000, + "elapsed_seconds": 17.359, + "tasks_per_second": 57.608 +} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/hardware.txt b/tests/benchmarks/results/2026-07-21T003600Z/hardware.txt new file mode 100644 index 0000000..31d8876 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/hardware.txt @@ -0,0 +1,4 @@ +Darwin samarths-MacBook-Air.local 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:26:22 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T8132 arm64 +Apple M4 +17179869184 +{"Client":{"Version":"29.6.1","ApiVersion":"1.55","DefaultAPIVersion":"1.55","GitCommit":"8900f1d","GoVersion":"go1.26.4","Os":"darwin","Arch":"arm64","BuildTime":"Fri Jun 26 11:39:35 2026","Context":"desktop-linux"},"Server":{"Platform":{"Name":"Docker Desktop 4.82.0 (233772)"},"Version":"29.6.1","ApiVersion":"1.55","MinAPIVersion":"1.40","Os":"linux","Arch":"arm64","Components":[{"Name":"Engine","Version":"29.6.1","Details":{"ApiVersion":"1.55","Arch":"arm64","BuildTime":"Fri Jun 26 11:39:58 2026","Experimental":"false","GitCommit":"8ec5ab3","GoVersion":"go1.26.4","KernelVersion":"6.12.76-linuxkit","MinAPIVersion":"1.40","Module":"github.com/moby/moby/v2","ModuleVersion":"v2.0.0+unknown","Os":"linux"}},{"Name":"containerd","Version":"v2.2.5","Details":{"GitCommit":"e53c7c1516c3b2bff98eb76f1f4117477e6f4e66"}},{"Name":"runc","Version":"1.3.6","Details":{"GitCommit":"v1.3.6-0-g491b69ba"}},{"Name":"docker-init","Version":"0.19.0","Details":{"GitCommit":"de40ad0"}}],"GitCommit":"8ec5ab3","GoVersion":"go1.26.4","KernelVersion":"6.12.76-linuxkit","BuildTime":"2026-06-26T11:39:58.000000000+00:00"}} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/image-digests.json b/tests/benchmarks/results/2026-07-21T003600Z/image-digests.json new file mode 100644 index 0000000..826904d --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/image-digests.json @@ -0,0 +1,2 @@ +[{"ID":"sha256:d8ea37798ccc41061a62ab080f2676dda6bf7815558499f901bdb0f533a456fb","ContainerName":"runmesh-grafana-1","Repository":"grafana/grafana","Tag":"11.4.0","Platform":"linux/arm64","Size":125326597,"Created":"2024-12-04T21:33:24.409833365Z","LastTagTime":"2026-07-20T00:48:13.975356709Z"},{"ID":"sha256:6559acbd5d770b15bb3c954629ce190ac3cbbdb2b7f1c30f0385c4e05104e218","ContainerName":"runmesh-prometheus-1","Repository":"prom/prometheus","Tag":"v3.1.0","Platform":"linux/arm64/v8","Size":110853317,"Created":"2025-01-02T14:15:56.472078076Z","LastTagTime":"2026-07-20T00:48:10.946754847Z"},{"ID":"sha256:d419e46de7ac28bce1a158522dd8f19ecf80e82b46a91f115a8514c55f6e3e22","ContainerName":"runmesh-scheduler-1","Repository":"runmesh-scheduler","Tag":"latest","Platform":"linux/arm64","Size":8457935,"Created":"2026-07-20T23:08:19.62513022Z","LastTagTime":"2026-07-21T00:38:51.535675553Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-7","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-14","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193","ContainerName":"runmesh-postgres-1","Repository":"postgres","Tag":"17-alpine","Platform":"linux/arm64/v8","Size":114981107,"Created":"2026-07-07T17:46:49.401690597Z","LastTagTime":"2026-07-20T00:47:47.860492044Z"},{"ID":"sha256:acded13a336f2b6f35fd9ce14a32834cf1e6b2a7887fe5dfc977b3e563eba39e","ContainerName":"runmesh-migrate-1","Repository":"migrate/migrate","Tag":"v4.18.2","Platform":"linux/arm64","Size":18640157,"Created":"2025-01-27T05:15:01.377819434Z","LastTagTime":"2026-07-20T00:45:00.445620092Z"},{"ID":"sha256:fca2d6e170320dd31d48fc83a7b1cfd7507fb720b15015f80068dca8467a7dc2","ContainerName":"runmesh-worker-python-1","Repository":"runmesh-worker-python","Tag":"latest","Platform":"linux/arm64","Size":60024247,"Created":"2026-07-20T23:22:00.604549877Z","LastTagTime":"2026-07-21T00:38:25.255146639Z"},{"ID":"sha256:640c22768ed5dbc92eacc14502a1b06a1c708fa60431345c78dfc22917062e93","ContainerName":"runmesh-minio-1","Repository":"minio/minio","Tag":"RELEASE.2025-02-07T23-21-09Z","Platform":"linux/arm64","Size":58677008,"Created":"2025-02-08T21:08:53.658721358Z","LastTagTime":"2026-07-20T00:47:58.255328882Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-17","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-18","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-20","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:8af2de1abbdd7aa92b27c9bcc96f0f4140c9096b507c77921ffddf1c6ad6c48f","ContainerName":"runmesh-loki-1","Repository":"grafana/loki","Tag":"3.3.2","Platform":"linux/arm64","Size":30732944,"Created":"2024-12-18T17:12:53.000478115Z","LastTagTime":"2026-07-20T00:48:06.06543197Z"},{"ID":"sha256:ef4384fce6e8ad22b95b243d8fc165628cda655376fd50e7850536ad89d71d50","ContainerName":"runmesh-tempo-1","Repository":"grafana/tempo","Tag":"2.6.1","Platform":"linux/arm64/v8","Size":49979919,"Created":"2024-10-15T15:14:02.938965353Z","LastTagTime":"2026-07-20T00:47:57.254291174Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-5","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d","ContainerName":"runmesh-redpanda-init-1","Repository":"redpandadata/redpanda","Tag":"v24.3.15","Platform":"linux/arm64/v8","Size":183895553,"Created":"2025-06-18T02:52:15.126275953Z","LastTagTime":"2026-07-20T00:48:16.687951877Z"},{"ID":"sha256:fc8006f22072293e9fa6a3aa8a0581ac502bc8262767c32c01ee019eca56bb38","ContainerName":"runmesh-redpanda-console-1","Repository":"redpandadata/console","Tag":"v2.8.3","Platform":"linux/arm64","Size":73250938,"Created":"2025-02-27T18:10:27.99190098Z","LastTagTime":"2026-07-20T00:48:14.485197626Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-19","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-16","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-8","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-6","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:c8a8f2bb8339104532bfe93c97f97958e5936f3b977d4502dde6fbbd38a2e665","ContainerName":"runmesh-web-1","Repository":"runmesh-web","Tag":"latest","Platform":"linux/arm64","Size":28920413,"Created":"2026-07-21T00:21:58.384612918Z","LastTagTime":"2026-07-21T00:38:25.724895639Z"},{"ID":"sha256:40314e50c50a6d0540790c0c785a527aa8b1c3fddc9faabafe7687880039c07f","ContainerName":"runmesh-control-plane-1","Repository":"runmesh-control-plane","Tag":"latest","Platform":"linux/arm64","Size":10173680,"Created":"2026-07-20T23:08:20.215292553Z","LastTagTime":"2026-07-21T00:41:17.921079177Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-12","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:6ab0b6e7381779332f97b8ca76193e45b0756f38d4c0dcda72dbb3c32061ab99","ContainerName":"runmesh-redis-1","Repository":"redis","Tag":"7.4-alpine","Platform":"linux/arm64/v8","Size":16790804,"Created":"2026-05-07T17:39:54.062865523Z","LastTagTime":"2026-07-20T00:45:12.219804333Z"},{"ID":"sha256:d419e46de7ac28bce1a158522dd8f19ecf80e82b46a91f115a8514c55f6e3e22","ContainerName":"runmesh-scheduler-2","Repository":"runmesh-scheduler","Tag":"latest","Platform":"linux/arm64","Size":8457935,"Created":"2026-07-20T23:08:19.62513022Z","LastTagTime":"2026-07-21T00:38:51.535675553Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-13","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-3","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-4","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:f7d45bc15c220fdb811f34577958cd6f776a494f5449bd440fce9df70bcdc68d","ContainerName":"runmesh-redpanda-1","Repository":"redpandadata/redpanda","Tag":"v24.3.15","Platform":"linux/arm64/v8","Size":183895553,"Created":"2025-06-18T02:52:15.126275953Z","LastTagTime":"2026-07-20T00:48:16.687951877Z"},{"ID":"sha256:be6a86215213145bfb4fb3e2b3ab982a806d00262655abdcf3ffa6a38d241c7c","ContainerName":"runmesh-keycloak-1","Repository":"quay.io/keycloak/keycloak","Tag":"26.1","Platform":"linux/arm64","Size":241302481,"Created":"2025-04-11T08:01:18.363925612Z","LastTagTime":"2026-07-20T00:48:11.796539791Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-9","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-2","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-11","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-1","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-10","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:a3f64f288b3b718d254105ba468aa0e626f1c83616ad53eb5b43154584bb9380","ContainerName":"runmesh-worker-go-15","Repository":"runmesh-worker-go","Tag":"latest","Platform":"linux/arm64","Size":6607930,"Created":"2026-07-20T23:22:06.150297047Z","LastTagTime":"2026-07-21T00:41:17.92145726Z"},{"ID":"sha256:36c35cc213c0f3b64d6e8a3e844dc90822f00725e0e518eaed5b08bcc2231e72","ContainerName":"runmesh-otel-collector-1","Repository":"otel/opentelemetry-collector-contrib","Tag":"0.119.0","Platform":"linux/arm64","Size":72650722,"Created":"2025-02-04T18:02:50.606991596Z","LastTagTime":"2026-07-20T00:47:50.053368504Z"}] + diff --git a/tests/benchmarks/results/2026-07-21T003600Z/in-flight-before-termination.json b/tests/benchmarks/results/2026-07-21T003600Z/in-flight-before-termination.json new file mode 100644 index 0000000..2fdaa61 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/in-flight-before-termination.json @@ -0,0 +1 @@ +{"running_count" : 7, "task_ids" : ["00420be4-f7de-4d0d-9aa8-2b76ed09b7c5", "0248a1e0-b7de-4d1f-ba0e-5dfad27aaf99", "1dabee46-eda4-427d-a19d-919511c192c3", "c63a23ab-0ee1-43ae-a14d-bc46652e44ae", "ce4ebf1e-9882-4630-9e38-bf69a5c10ca8", "d9c581ea-e4fd-4831-8c8c-93133a1527bc", "daca5b33-e3b3-46a0-9000-431d587ddfd0"]} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/kafka-topology-after.json b/tests/benchmarks/results/2026-07-21T003600Z/kafka-topology-after.json new file mode 100644 index 0000000..91a0fff --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/kafka-topology-after.json @@ -0,0 +1 @@ +[{"summary":{"name":"runmesh.tasks","internal":false,"partitions":6,"replicas":1,"error":""},"configs":[{"key":"cleanup.policy","value":"delete","source":"DEFAULT_CONFIG"},{"key":"compression.type","value":"producer","source":"DEFAULT_CONFIG"},{"key":"delete.retention.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"flush.bytes","value":"262144","source":"DEFAULT_CONFIG"},{"key":"flush.ms","value":"100","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"max.message.bytes","value":"1048576","source":"DEFAULT_CONFIG"},{"key":"message.timestamp.type","value":"CreateTime","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.mode","value":"disabled","source":"DEFAULT_CONFIG"},{"key":"redpanda.leaders.preference","value":"none","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.read","value":"false","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.write","value":"false","source":"DEFAULT_CONFIG"},{"key":"retention.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.ms","value":"86400000","source":"DEFAULT_CONFIG"},{"key":"retention.ms","value":"604800000","source":"DEFAULT_CONFIG"},{"key":"segment.bytes","value":"134217728","source":"DEFAULT_CONFIG"},{"key":"segment.ms","value":"1209600000","source":"DEFAULT_CONFIG"},{"key":"write.caching","value":"true","source":"DEFAULT_CONFIG"}],"partitions":[{"partition":0,"leader":0,"epoch":5,"replicas":[0],"log_start_offset":0,"high_watermark":97613},{"partition":1,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":22058},{"partition":2,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":31522},{"partition":3,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":24777},{"partition":4,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":25034},{"partition":5,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":33366}]}] diff --git a/tests/benchmarks/results/2026-07-21T003600Z/kafka-topology-before.json b/tests/benchmarks/results/2026-07-21T003600Z/kafka-topology-before.json new file mode 100644 index 0000000..739e5f4 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/kafka-topology-before.json @@ -0,0 +1 @@ +[{"summary":{"name":"runmesh.tasks","internal":false,"partitions":6,"replicas":1,"error":""},"configs":[{"key":"cleanup.policy","value":"delete","source":"DEFAULT_CONFIG"},{"key":"compression.type","value":"producer","source":"DEFAULT_CONFIG"},{"key":"delete.retention.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"flush.bytes","value":"262144","source":"DEFAULT_CONFIG"},{"key":"flush.ms","value":"100","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"initial.retention.local.target.ms","value":"-1","source":"DEFAULT_CONFIG"},{"key":"max.message.bytes","value":"1048576","source":"DEFAULT_CONFIG"},{"key":"message.timestamp.type","value":"CreateTime","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.iceberg.mode","value":"disabled","source":"DEFAULT_CONFIG"},{"key":"redpanda.leaders.preference","value":"none","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.delete","value":"true","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.read","value":"false","source":"DEFAULT_CONFIG"},{"key":"redpanda.remote.write","value":"false","source":"DEFAULT_CONFIG"},{"key":"retention.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.bytes","value":"-1","source":"DEFAULT_CONFIG"},{"key":"retention.local.target.ms","value":"86400000","source":"DEFAULT_CONFIG"},{"key":"retention.ms","value":"604800000","source":"DEFAULT_CONFIG"},{"key":"segment.bytes","value":"134217728","source":"DEFAULT_CONFIG"},{"key":"segment.ms","value":"1209600000","source":"DEFAULT_CONFIG"},{"key":"write.caching","value":"true","source":"DEFAULT_CONFIG"}],"partitions":[{"partition":0,"leader":0,"epoch":5,"replicas":[0],"log_start_offset":0,"high_watermark":92603},{"partition":1,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":15689},{"partition":2,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":22937},{"partition":3,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":17902},{"partition":4,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":18146},{"partition":5,"leader":0,"epoch":3,"replicas":[0],"log_start_offset":0,"high_watermark":26947}]}] diff --git a/tests/benchmarks/results/2026-07-21T003600Z/lease-recovery-distribution.json b/tests/benchmarks/results/2026-07-21T003600Z/lease-recovery-distribution.json new file mode 100644 index 0000000..584ec05 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/lease-recovery-distribution.json @@ -0,0 +1 @@ +{"samples" : 7, "p50_ms" : 132797.236, "p95_ms" : 140147.6218, "p99_ms" : 142413.68356} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/scheduler-dispatch.json b/tests/benchmarks/results/2026-07-21T003600Z/scheduler-dispatch.json new file mode 100644 index 0000000..defe630 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/scheduler-dispatch.json @@ -0,0 +1,6 @@ +{ + "scenario": "scheduler_dispatch", + "tasks": 10000, + "elapsed_seconds": 24.546, + "dispatches_per_second": 407.403 +} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/verification.json b/tests/benchmarks/results/2026-07-21T003600Z/verification.json new file mode 100644 index 0000000..07b0ca4 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/verification.json @@ -0,0 +1,21 @@ +{ + "checks": { + "active_workflows": true, + "api_requests": true, + "api_zero_failures": true, + "duplicate_delivery": true, + "duplicate_submission": true, + "end_to_end_zero_task_loss": true, + "lease_recovered": true, + "multi_partition_delivery": true, + "multiple_tasks_in_flight": true, + "six_kafka_partitions": true, + "submission_requests": true, + "submission_zero_failures": true, + "ten_thousand_tasks": true, + "worker_pool_terminated": true, + "zero_task_loss": true + }, + "observed_partitions_with_new_records": 6, + "passed": true +} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/worker-crash-result.json b/tests/benchmarks/results/2026-07-21T003600Z/worker-crash-result.json new file mode 100644 index 0000000..f5fc410 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/worker-crash-result.json @@ -0,0 +1 @@ +{"scenario" : "worker_termination_and_lease_recovery", "tasks" : 10000, "succeeded" : 10000, "other" : 0, "attempts" : 10007, "recovered_tasks" : 7, "duplicate_attempts" : 7, "recovery_seconds" : 185.971} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/worker-crash-setup.json b/tests/benchmarks/results/2026-07-21T003600Z/worker-crash-setup.json new file mode 100644 index 0000000..cad16f1 --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/worker-crash-setup.json @@ -0,0 +1,111 @@ +{ + "idempotency_prefix": "validation-crash-20260721T003824Z", + "preparation_seconds": 0.693, + "run_count": 100, + "run_ids": [ + "75af6c01-793b-434a-98a3-2abe6e9ea1b7", + "0e33d18e-8b5c-4297-b815-668b738a5bb3", + "30c57e35-58ae-43ff-a690-eb84ea326f04", + "2f955aea-261e-46d3-8326-e23d8c084d87", + "daa69059-4236-4156-a585-bcc073d662f8", + "9ae952d5-dc37-41a8-bae3-c766584b53b9", + "0a2e0f86-5b65-48ed-89c6-705e8c071d5b", + "35fd798e-f62c-445c-a4d6-af37c0afbff3", + "b64727a0-ae1e-4d97-bbd9-3e11c9149e41", + "2af9d9fb-0264-4aeb-bbe1-03d7c3282534", + "1a456986-1cf4-4a66-b4fb-3b44b431dcc4", + "a525157f-8b00-4d23-85ae-142ce3a92225", + "d3a3946e-3eef-4f8e-9fb1-b2886fee8e30", + "e28e9901-7f76-4f22-bce8-f4d564b2d916", + "634c6db6-5521-4abc-8dc8-448f28f3a259", + "24f4ba87-bcf6-4093-90d1-3a30c1dd4ee7", + "01db0c12-6fe3-4d9f-a0f7-213d493de812", + "0e57ea50-a6ae-4c82-970a-b0edc8435d73", + "f591af42-a433-463c-ac38-3feb3316853f", + "72b4d4fa-4380-4c40-bacd-21902f294ce7", + "569fc9d8-1fef-4802-aa70-fe1cd2ca547a", + "31bada0f-ba38-4bea-9433-1633f0f23c5e", + "6e4d1087-3947-4055-ae8a-9462f9f04c56", + "8afbeeee-a81a-4970-9eea-93d34821394a", + "8986b290-fdc9-4238-bf88-88571e291a3e", + "ca1a5b97-b477-4fa3-838d-81628a7309f6", + "ff292ce3-c6b8-48d0-8392-1d16d4bd5e05", + "8a281d83-9627-4a1b-a6c4-4d90b721968b", + "5f54a59a-179a-4ed8-893b-9f3ca560a00c", + "d0b616eb-bb91-4d52-914c-f97c3270944e", + "9fcf86dd-7537-4853-96ec-0ce87e4f4b01", + "10570be9-fe63-451b-b4b5-7499b72a4124", + "e08fe21b-a7df-4b51-94cd-5a3f4fd81e9e", + "d494bcf8-0292-4df5-ad52-86023a31a72d", + "47b43b18-f729-45ce-b8ac-4c74223d2c52", + "acba00b2-7e1e-44f5-895e-cddbe3a3c665", + "0b1b2372-571a-42c3-b46c-22e7f5bbf7e8", + "c26983dd-045e-46be-8ef1-dda5694d10d0", + "0068b183-aa92-49a5-b52c-525e66221ef5", + "b628447a-3fe5-4648-832a-e801138a3574", + "a2810ed1-79aa-4dc6-8cb8-b3e6a94b9338", + "1bd0bb25-49ce-4b1e-ba8e-37bbe7e61b55", + "67f37ffe-a628-48de-9185-cc882a2a4a9a", + "de8e5b73-4411-4ef2-ba2e-258de18b2026", + "53e93cc1-4c06-4c36-8bb7-946d4c6282be", + "42625dab-14d2-451d-a41d-29e791213d54", + "0d46f288-6e0e-48fe-b19f-050d01a2618b", + "07487f33-e356-49b9-962c-ec2c81360fff", + "ed02825f-c11f-4932-a807-9884617808d9", + "4f635fcd-6803-4c90-a403-ae731b7b830d", + "c052ef5e-92fa-4111-8500-1dfafe7d348a", + "78c0f618-3b93-417a-962e-46900361a815", + "b66cd32a-a432-4743-804b-a1968f2a232d", + "f61098e3-c07d-4cc4-8e35-b6748a33a0f2", + "57ef1dd1-4df4-4d6e-a1bf-0e12eed78271", + "9e1cd3fe-a1d7-483c-9b76-d31c64ac63b4", + "e21325bd-0cce-4c0a-b835-0fe31918c54d", + "38f0e407-8ccd-4651-b3be-1f9141470e1c", + "22f0abfb-2069-4597-9435-a130b3bf559f", + "210ad388-d213-4178-bc05-000262d7c9a6", + "c73ff05e-df79-42fe-9210-5f63c8e93d79", + "e1fe0dea-4352-4d8c-a62c-7671f424d228", + "0ef465eb-f4f6-4ca5-98b7-a409615bb54b", + "eb134829-84d2-4ae5-95a1-1ad3b2d55934", + "0f554869-f3c8-43cf-819c-3a98daf99ce4", + "d2795605-b230-450d-81ba-6612020420e3", + "5f3b00d2-9c98-45dc-a1af-de81d3829db8", + "57ad7f68-e602-4e4e-a3ee-05d1585bbbe3", + "f701fb3f-10c5-4d1e-b5dd-89dfee26c665", + "eab0ef10-f5ab-4388-97b4-20d501823a0d", + "0910053a-b4b1-42bb-8ec2-38649113b2ab", + "00f46915-5783-40f3-90dc-00b746cef450", + "3d5aaf92-119f-4be7-b5da-3c7c6a93250a", + "1c6fe9ef-c38d-4b03-bf4c-67e5344f69c1", + "c438fd39-7d8c-409d-bf26-b3718b71b907", + "45c35990-0a81-4f72-a074-f52ea5e6afe4", + "d1a60043-6add-48cc-a02e-917e0c6f705f", + "c756bb04-9817-4d35-9285-d12e92e29762", + "c94cdc42-a225-4eb3-94d1-bc6933c05893", + "d0e4539f-933d-4391-812a-ddce7b016ba8", + "504db0d5-c5f5-48f4-bca6-e70845c1541b", + "5d68ecc8-6590-4c32-aeda-8c0d9698ec4f", + "305800e9-ac76-493d-a09b-5b9e29cf40d8", + "75b17ed1-89d6-4fb0-b7bb-367f1cc6ed61", + "b2583205-6501-4928-b01c-0cb3255c47ae", + "0e3c8c83-f889-449d-bdce-1ce0f09c6fd0", + "0040d3e6-8a1a-4987-87b3-e6fcfb0561c2", + "f7b28b8a-5817-41b1-8377-607f69ba6a41", + "cdb34033-0a0f-4d35-a9a1-334a20937e9a", + "05703357-fd11-44e1-b11d-58a8d26ad628", + "408b0d8b-10af-482f-a7a6-438b040145e9", + "59ad2a7a-b02a-4f74-9c42-1297118d59df", + "37f2e9d5-d8d7-42f9-9ad1-a7e267820df4", + "2975c522-f593-4b9c-926b-c8aaee8017d3", + "410cf03b-1adf-43d4-a286-1f833f0d2b21", + "2d87e41e-a4b7-4677-b8f6-458ebaa926e3", + "7698f470-4c0e-4469-ae98-2daef6343370", + "d7556bf7-4a84-4cbc-80ce-aa455a162117", + "7d1ae902-2574-4268-8387-1d64b32f71cc", + "7412b1ae-2491-40e4-8b25-1b44502a2b9a" + ], + "scenario": "worker_termination_and_lease_recovery", + "task_count": 10000, + "tasks_per_run": 100, + "workflow_id": "254e09dc-8074-492e-a3f6-c67939c31d50" +} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/worker-termination.json b/tests/benchmarks/results/2026-07-21T003600Z/worker-termination.json new file mode 100644 index 0000000..7c0999d --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/worker-termination.json @@ -0,0 +1,6 @@ +{ + "terminated_workers": 20, + "idempotency_prefix": "validation-crash-20260721T003824Z", + "in_flight_tasks": 6, + "terminated_at": "2026-07-21T00:41:26.236449+00:00" +} diff --git a/tests/benchmarks/results/2026-07-21T003600Z/workflow-submissions.json b/tests/benchmarks/results/2026-07-21T003600Z/workflow-submissions.json new file mode 100644 index 0000000..e02e9cf --- /dev/null +++ b/tests/benchmarks/results/2026-07-21T003600Z/workflow-submissions.json @@ -0,0 +1,142 @@ +{ + "root_group": { + "path": "", + "id": "d41d8cd98f00b204e9800998ecf8427e", + "groups": {}, + "checks": { + "created": { + "name": "created", + "path": "::created", + "id": "e26a6144a84abb127f65c1e5808b420c", + "passes": 1501, + "fails": 0 + } + }, + "name": "" + }, + "metrics": { + "data_received": { + "count": 812456, + "rate": 27079.08538102827 + }, + "vus": { + "value": 0, + "min": 0, + "max": 13 + }, + "checks": { + "passes": 1501, + "fails": 0, + "thresholds": { + "rate==1": false + }, + "value": 1 + }, + "http_reqs": { + "count": 1501, + "rate": 50.02819495077079 + }, + "http_req_duration": { + "p(99)": 220.024417, + "max": 688.186375, + "avg": 8.304694437041961, + "min": 0.999625, + "med": 1.587208, + "p(90)": 3.284625, + "p(95)": 7.011625 + }, + "iteration_duration": { + "avg": 8.665801076615596, + "min": 1.068708, + "med": 1.723208, + "p(90)": 3.71275, + "p(95)": 7.773292, + "p(99)": 249.570958, + "max": 689.255459 + }, + "http_req_tls_handshaking": { + "avg": 0, + "min": 0, + "med": 0, + "p(90)": 0, + "p(95)": 0, + "p(99)": 0, + "max": 0 + }, + "http_req_receiving": { + "min": 0.006417, + "med": 0.030917, + "p(90)": 0.058666, + "p(95)": 0.08575, + "p(99)": 0.173875, + "max": 15.600667, + "avg": 0.06613877415056635 + }, + "vus_max": { + "value": 100, + "min": 100, + "max": 100 + }, + "http_req_waiting": { + "p(90)": 3.181084, + "p(95)": 6.825375, + "p(99)": 219.939958, + "max": 684.846584, + "avg": 8.212280045303142, + "min": 0.959917, + "med": 1.535708 + }, + "http_req_connecting": { + "avg": 0.059911614257161905, + "min": 0, + "med": 0, + "p(90)": 0, + "p(95)": 0.520917, + "p(99)": 0.716375, + "max": 22.150542 + }, + "http_req_duration{expected_response:true}": { + "max": 688.186375, + "avg": 8.304694437041961, + "min": 0.999625, + "med": 1.587208, + "p(90)": 3.284625, + "p(95)": 7.011625, + "p(99)": 220.024417 + }, + "iterations": { + "count": 1501, + "rate": 50.02819495077079 + }, + "data_sent": { + "count": 2330313, + "rate": 77669.12262512694 + }, + "http_req_failed": { + "passes": 0, + "fails": 1501, + "thresholds": { + "rate==0": false + }, + "value": 0 + }, + "http_req_blocked": { + "avg": 0.06917285809460354, + "min": 0.0015, + "med": 0.003666, + "p(90)": 0.016042, + "p(95)": 0.567292, + "p(99)": 0.791583, + "max": 22.1775 + }, + "http_req_sending": { + "min": 0.007583, + "med": 0.0185, + "p(90)": 0.033459, + "p(95)": 0.047084, + "p(99)": 0.102375, + "max": 3.236916, + "avg": 0.026275617588274455 + } + } +} \ No newline at end of file From 898e8b54f8c360ea78d0e0f19e99499eb0f17818 Mon Sep 17 00:00:00 2001 From: Samarth Vinayaka <107533608+samarth1412@users.noreply.github.com> Date: Mon, 20 Jul 2026 22:04:21 -0400 Subject: [PATCH 9/9] fix: except go_package from buf breaking checks The canonical module-path rename intentionally changes go_package. There is no released version or external consumer yet, so except FILE_SAME_GO_PACKAGE rather than weakening breaking-change protection for the rest of the FILE category. --- buf.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/buf.yaml b/buf.yaml index 614f921..09069f0 100644 --- a/buf.yaml +++ b/buf.yaml @@ -2,4 +2,8 @@ version: v2 modules: - path: proto lint: {use: [STANDARD]} -breaking: {use: [FILE]} +# FILE_SAME_GO_PACKAGE is excepted for the one-time go_package rename to the +# canonical module path; there is no released version or external consumer yet. +breaking: + use: [FILE] + except: [FILE_SAME_GO_PACKAGE]